Автор оригинала: John Kennedy.
Вступление
Добро пожаловать на тестирование E2E с Nightwatch, частью. В этой части учебника я буду сосредоточиться на основах Nightwatch и создавая тестовую среду.
Вы можете найти исходный код в этот учебник здесь Отказ
Что такое Nightwatch?
Nightwatch.js Это автоматизированная структура тестирования для веб-приложений и веб-сайтов, написанных в Node.js и использование W3C Webdriver API (ранее Webdriver селена ).
Это полное решение для тестирования в браузере (с конца до конца), которое направлено на упрощение процесса настройки непрерывной интеграции и записи автоматизированных тестов. NightWatch также можно использовать для написания узлов Node.js.
Почему ночью?
- Чистый синтаксис: Простой, но мощный синтаксис позволяет очень быстро написать тесты, используя только JavaScript (Node.js) и CSS или селекторы XPath.
- Встроенный тестовый бегун: Встроенный тестовый бегун командной строки может выполнять тесты либо последовательно, либо параллельно, вместе, с помощью группы, тегов или одиночных. Гружинная поддержка встроена.
- Selenium Server: Автоматически управляет автономным сервером Selenium автоматически в отдельном дочернем процессе – может быть отключен, если селен работает на другом хосте.
- Поддержка облачных услуг: Работает с поставщиками облачных испытаний, таких как Saucelabs и Browserstack.
- Поддержка CSS & XPath: Либо CSS, либо селекторы XPath могут использоваться для определения местоположения и проверки элементов на странице или выполнять команды.
- Поддержка непрерывной интеграции: Отчетность JUNIT XML встроена, поэтому вы можете интегрировать свои тесты в своем процессе сборки с такими системами, как TeamCity, Jenkins, Hudson и т. Д.
- Легко расширить: Гибкая структура команд и утверждений позволяет легко расширить выполнение ваших команд и утверждений вашего приложения.
Монтаж
Первые вещи сначала установите Node.js Если у вас его еще нет. Вы можете найти инструкции по установке на странице проекта Node.js. После того, как у вас установлен узел, вы можете воспользоваться преимуществами управляющего узла пакета, NPM, который бывает крупнейшей экосистемой пакета.
Вам также нужно было бы нуждаться в Java SDK, если у вас его еще не установлено на вашем компьютере. Вы можете скачать его с сайта Oracle в Java SE загрузки Отказ После установки вы хотели бы убедиться, что Java доступен в вашем пути окружающей среды. Вы можете проверить это, просто набрав Java -version
В вашем терминале – это распечатает версию установленной Java на вашем компьютере.
Перейдите в свой терминал, создайте пустой каталог и перейдите к нему. Далее введите NPM init -y
или пряжа init -y
Отказ -Я
Флаг позволяет пропустить вопросы инициализации. А Package.json
Файл будет создан в корне текущего каталога.
Как только у вас есть Package.json
Файл, в том же каталоге, введите NPM Установить --g Nightwatch
или Пряжа Global Добавить Nightwatch
Если вы предпочитаете пряжа
Отказ -G
Рассказывает NPM установить Nightwatch
Глобально, что позволит вам запустить его в любом каталоге.
Далее, чтобы иметь возможность запустить тесты, нам нужно скачать автономный сервер Selenium. Это можно сделать вручную с их сайта. Для этого учебника мы будем использовать NPM, чтобы установить его.
На вашем терминале введите NPM Установите SELENIUM-STANDALONE - SSAVE-DEV
или пряжа Добавить селен-автономный --D
Отказ Эта команда установит SELENIUM-STANDALONE, а также сохранить его к вашему Package.json
Файл создан ранее.
Изменить свой Package.json
Файл, добавив это «E2E-Setup»: «Установка Selenium-Standalone»
к Сценарии
имущество. Package.json
должен выглядеть более или менее так:
{ "name": "nightwatch", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "nightwatch", "e2e-setup": "selenium-standalone install" }, "keywords": [], "author": "", "license": "ISC", "devDependencies": { "babel-cli": "^6.26.0", "babel-plugin-add-module-exports": "^0.2.1", "babel-preset-es2015": "^6.24.1", "selenium-standalone": "^6.7.0" } }
Бег NPM запустить E2E-Setup
или пряжа запустить E2E-Setup
На терминале загрузится последняя версия SELENIUM SERVER, CHROMEDRIVER и GECKODRIVER (это будет использоваться для беговых испытаний в браузере Chrome или Firefox).
Конфигурация
Тестовый бегун ожидает, что файл конфигурации для передачи, используя Nightwatch.json
Файл из текущего каталога по умолчанию, если присутствует. А Nightwatch.conf.js
Файл также будет загружен по умолчанию, если найдено. Nightwatch полагается на Nightwatch.json
в качестве файла конфигурации для тестовых прогонов. Он должен быть размещен в корневом каталоге проекта, поскольку он указывает различные настройки конфигурации, такие как тестовые среды, пункт тестовых файлов и настройки SELENIUM. Это то, как выглядит файл конфигурации:
{ "src_folders" : ["tests"], "output_folder" : "reports", "custom_commands_path" : "", "custom_assertions_path" : "", "page_objects_path" : "", "globals_path" : "", "selenium" : { "start_process" : true, "server_path" : "node_modules/selenium-standalone/.selenium/selenium-server/", "log_path" : "./reports", "host": "127.0.0.1", "port" : 4444, "cli_args" : { "webdriver.chrome.driver" : "", "webdriver.gecko.driver" : "", "webdriver.edge.driver" : "" } }, "test_settings" : { "default" : { "launch_url" : "http://localhost", "selenium_port" : 4444, "selenium_host" : "localhost", "silent": true, "screenshots" : { "enabled" : false, "path" : "" }, "desiredCapabilities": { "browserName": "firefox", "marionette": true, "javascriptEnabled": true, "acceptSslCerts": true } }, "chrome" : { "desiredCapabilities": { "browserName": "chrome" } }, "edge" : { "desiredCapabilities": { "browserName": "MicrosoftEdge" } } } }
Использование обоих файлов конфигурации также возможно, с помощью Nightwatch.conf.js
Всегда принимайте приоритет, если оба найдены.
Давайте пройдемся по важных частях Nightwatch.json
конфигурационный файл.
src_folders
: Массив папок (исключая подпапки), где расположены тесты.yource_folder
: Расположение, где файлы отчетов JUnit XML (отчеты XML, журнал селена и скриншоты) будут сохранены.Page_Objects_Path
: Местоположение (ы), в которых будут загружены файлы объектов страницы.Globals_Path
: Расположение модуля внешних глобалей, которые будут загружены и доступны для теста в качестве свойстваглобал
на основной экземпляре клиента. Глобалы также могут быть определены/перезаписаны внутриtest_settings
среда.Селен
: Объект, содержащий параметры конфигурации, связанные с сервером селена. В нашем случае важно иметьstart_process
Установите значение true, чтобы сервер Selenium запускается автоматически. ТакжеServer_Path
иWebDriver.Chrome.driver
Пути должны иметь соответствующую папку.test_settings
: Этот объект содержит все тестовые варианты. Важный бит впо умолчанию
Окружающая средажелаемыеCapabilities
объект, где мы указываемFirefox
КакBookerTame
Так что на ночной кошкет пробежат тесты против него.
Добавление ES6 на Nookwatch
Для того, чтобы иметь возможность написать ES6 в Nightwatch, вам нужно установить Babel-Preset-ES2015
Предустановленные, Babel-Cli
и Add-Module-Exports
плагин и добавьте их в .babelrc
Конфигурация файла. На терминале типа NPM I Babel-Plugin-Add-Module-Exports Babel-Preset-ES2015 -D
или Пряжа Добавить Babel-Plugin-Add-Module-Exports Babel-Preset-ES2015 -D
Отказ .babelrc
Файл выглядит так:
{ "presets": ["es2015"], "plugins": [ "add-module-exports" ] }
После этого вам нужно добавить Nightwatch.conf.js
Файл в корню вашего проекта. Файл должен содержать эти строки:
require('babel-core/register'); const fs = require("fs"); module.exports = ((settings) => { const seleniumServerFileName = fs.readdirSync("node_modules/selenium-standalone/.selenium/selenium-server/"); settings.selenium.server_path += seleniumServerFileName; return settings; })(require("./nightwatch.json"));
Nightwatch использует дополнительный код для динамически выполнения сервера Selenium Server. Это переопреслоло бы Server_Path
указано в Nightwatch.json
Конфигурация файла. Если вы предпочитаете использовать Nightwatch.json
Config файл Чтобы получить сервер SELENIUM, не забудьте изменить эту строку: «Server_Path»: «Node_Modules/Selenium-bandalone/.selenium/selenium-server/"
В вашем Nightwatch.json
К этому: «Server_Path»: «Node_Modules/Selenium-bandalone/.selenium/selenium-server/x.x.x-server.jar"
где X.x.x
Установлена ли версия сервера селена. Ваш Nightwatch.conf.js
Затем файл должен выглядеть так:
module.exports = ((settings) => { return settings; })(require("./nightwatch.json"));
Резюме
В этом руководстве вы узнали, как:
Установите NightWatch.js и его зависимости и настроить тестовую среду.
Во второй части учебника мы погрузимся в писать фактические тесты. Часть вторая
Пожалуйста, нажмите кнопку «Нравится», если вы найдете эту статью полезную. Вы можете найти меня в Twitter @Codejockie