
Содержание статьи
Адам Келли

Многократное выполнение одних и тех же тестов в Chrome, Safari и Firefox может занять много времени и утомить.
Некоторые тестовые задания можно автоматизировать для более эффективного выполнения этих задач. В этой статье будут описаны, какие типы тестов можно автоматизировать и как их реализовать с помощью Node.js и Nightwatch.
Nightwatch подключается к WebDriver (например, Selenium). Он работает через API REST. Например, инициализация:

Требования
У вас должна быть установлена Java. Вы можете проверить это, запустив
$ java -version
в вашем терминале. Если его не установлено, установите его.
Вы должны иметь достаточно свежую версию Safari, версию 10 или более позднюю. Чтобы использовать Safari, необходимо также включить меню разработчика и активировать Разрешить удаленную автоматизацию вариант.
Наконец вы также должны иметь Node.js.
Настраивая
Примечание: предполагается, что сайт использует node.js. Если нет, вам также придется инициализировать его с помощью a
package.json
файл.
Установка
Nightwatch.js это более простой способ писать тесты, которые выполняются с помощью Selenium.
Чтобы установить его, cd
в ваш проект, а затем установите модуль из npm в ваши зависимости от разработчика:
$ npm install --save-dev nightwatch
Теперь необходимо установить Selenium. Самый простой способ сделать это с помощью другого модуля npm, selenium-server
:
$ npm install --save-dev selenium-server
Мы хотим протестировать Chrome, Safari и Firefox, поэтому нам также нужно установить драйверы. Драйвер – это то, что используется Selenium для управления браузерами. Драйвер Safari встроен в MacOS, а драйверы Chrome и Firefox можно установить с помощью npm:
$ npm install --save-dev chromedriver geckodriver
Настройка
Nightwatch настраивается с помощью конфигурационного файла. Конфигурационный файл – это обычный файл JavaScript, который я буду называть nightwatch.conf.js
. Этот файл можно поместить в папку, например tests
.
Скопируйте и вставьте эту базовую конфигурацию в свой nightwatch.conf.js
файл:
Теперь у вас настроена система автоматизированного тестирования и вы можете начать писать тесты!
Что можно/надо тестировать?
Есть два типа тестирования, которые можно выполнить с помощью этой настройки:
- Функциональное тестирование
- Регрессионное тестирование
Функциональное тестирование – это тип тестирования, который пытается проверить, отвечает ли ваш веб-сайт всем требованиям. Обычно это означает внедрение тестов, проверяющих наличие всех необходимых функций.
Например, если клиенту требуется форма входа, вы можете написать тест, чтобы убедиться, что когда вы вошли в систему, ваше имя отображается на веб-странице.
Другим типом тестирования есть регрессионное тестирование. Это делается для того, чтобы убедиться, что веб-сайт, который вы разработали и проверили ранее, продолжает работать так же после перемен. Это особенно полезно, когда клиенты могут редактировать части своего веб-сайта, которые могут вызвать функциональные ошибки.
Например, вы можете написать тест, чтобы убедиться, что страница содержит правильные мета-теги и информацию.
Ограничение этой системы тестирования состоит в том, что она проверяет веб-сайт, а не код. Например, он не может проверить, сделан ли запрос к БД, но может проверить, есть ли новая строка, созданная по этому запросу.
Однако вы можете использовать другие фреймворки модульного тестирования (например, Jest, Mocha и Ava), чтобы проверить свою основную логику и код.
Написание контрольных работ
Добро пожаловать в веселую часть тестирования. А, просто шучу. Это все весело.
В любом случае тесты в Nightwatch пишутся с помощью обычного модуля JavaScript. В nightwatch.conf.js
файл, который мы указали для поиска tests/features
для тестов.
Nightwatch возьмет эту папку и будет искать в ней все файлы JavaScript, а затем попытается запустить их в качестве тестов.
Давайте создадим очень простой тест: мы проверим, есть ли название www.bing.com Bing
. Почему вы вообще обратились к Bing – это более серьезная проблема, которую нельзя рассмотреть в этой статье.
Создайте новый файл в tests/features
звонил bing.test.js
содержащий такой код:
Теперь тест создан!
здесь, Title is Bing
это название теста. Это отображается при выполнении тестов. .verify
используется для фактического исполнения теста. .waitForElementVisable
ожидает, что селектор CSS или селектор Xpath укажет, какие элементы вы имеете в виду.
Вы можете иметь более одного теста в одном файле и хорошо сохранять связанные тесты в одном файле.
Чтобы узнать больше о создании тестов, документация Nightwatch действительно хороша. Если вы хотите знать, как что-нибудь сделать, сначала проверьте это. Также ознакомьтесь с разделом «Выше и далее» данного руководства.
Выполнение тестов
Чтобы запустить имеющиеся у вас тесты, перейдите к package.json
файл. Добавьте следующее:
“scripts”: { “nightwatch”: “nightwatch -c tests/nightwatch.conf.js -e chrome,firefox,safari”}
Это запустит ваши тесты в Chrome, Firefox и Safari.
Чтобы запустить тест, в терминале выполните команду:
$ npm run nightwatch
Если у вас все еще есть тот же тест, что и выше, ваш результат должен выглядеть следующим образом:

Если вы получаете ошибки, проверьте Common Issues
раздел этой статьи или поищите ошибку в Google.
И Вот так, теперь вы настроили и использовали автоматическое тестирование браузера! ?
Над и за пределами
Лучшие методы и многое другое. Подробные пособия
Есть много хороших ресурсов, но вот некоторые из моих любимых:
Тестирование с помощью Edge Browser
Вы можете проверить Edge с помощью Microsoft WebDriver. Он совместим с Windows 10 и более поздними версиями.
Загрузив двоичный файл, перейдите к своему nightwatch.conf.js
файл и под "webdriver.gecko.driver"
поставить
"webdriver.edge.driver" : "location/of/binary/MicrosoftWebDriver.exe"
Затем перейдите к test_settings
и добавьте другой объект под safari
:
edge: { desiredCapabilities: { browserName: 'MicrosoftEdge', javascriptEnabled: true, acceptSslCerts: true, nativeEvents: true }}
Наконец, перейдите к своему package.json
и изменить nightwatch
сценарий к:
"nightwatch": "nightwatch -c tests/nightwatch.conf.js -e chrome,firefox,safari,edge"
Использование с CI
Это выходит за рамки настоящей статьи, но вы можете проверить:
Общие вопросы
Nightwatch не может найти Selenium
Если nightwatch не может найти селен, попробуйте запустить конфигурационный файл с помощью node. Если ваш конфигурационный файл, nightwatch.conf.js
находится в каталоге tests
запустить:
$ node tests/nightwatch.conf.js
Safari может предупредить вас, что его контролируют. Просто позвольте. Если тест не удался или прошло время ожидания, запустите его еще раз.
Safari не закрывается
Просто закройте его вручную.
Чтобы просматривать этот веб-контент, вам нужно установить Java Runtime Environment
Я сказал, что вам нужно установить Java, поэтому установите его.
Ошибка — порт 4444 занят, выберите свободный порт и укажите его с помощью параметра -port
Это означает, что что-то использует порт 4444. Вы можете остановить этот процесс или изменить порт.
Чтобы увидеть, какой процесс использует порт на Mac, воспользуйтесь командой
$ lsof -n -i4TCP:4444 | grep LISTEN
Затем вы можете убить этот процесс.
Если вы не хотите останавливать этот процесс, перейдите к nightwatch.conf.js
файл и в selenium
изменить port
на неиспользованный порт.