В этой статье мы рассмотрим, как можно провести сквозное тестирование с Node.js, используя Nightwatch.js, сквозное тестирование на базе Node.js. Фреймворк для окончательного тестирования.
В предыдущей главе Node.js в масштабе мы обсуждали Тестирование Node.js и правильное использование TDD. Если вы не читали эту статью или если вы не знакомы с модульным тестированием и TDD (разработка через тестирование), я рекомендую проверить это, прежде чем продолжить эту статью.
Что такое сквозное тестирование Node.js?
Прежде чем переходить к примерам кода и изучать реализацию сквозного тестирования для проекта Node.js, стоит изучить, что такое сквозное тестирование на самом деле.
Прежде всего, сквозное тестирование - это часть набора инструментов для тестирования черного ящика. Это означает, что как составитель тестов вы изучаете функциональность, не зная о внутренней реализации. Так что не видя исходного кода.
Во-вторых, сквозное тестирование также может использоваться как приемочное тестирование пользователя, или UAT. UAT - это процесс проверки того, что решение действительно работает для пользователя. Этот процесс сосредоточен не на поиске мелких опечаток, а на проблемах, которые могут привести к сбою системы или нарушению ее функциональности для пользователя.
Войдите в Nightwatch.js.
Nightwatch.js позволяет вам «быстро и легко писать сквозные тесты в Node.js, которые работают с сервером Selenium / WebDriver».
Nightwatch поставляется со следующими функциями:
- встроенный тестовый раннер,
- может управлять селеновым сервером,
- поддержка размещенных поставщиков селена, таких как BrowserStack или SauceLabs,
- Селекторы CSS и Xpath.
Установка Nightwatch
Чтобы запустить Nightwatch локально, нам нужно проделать небольшую дополнительную работу - нам понадобится локальный автономный сервер Selenium, а также веб-драйвер, чтобы мы могли использовать Chrome / Firefox для локального тестирования наших приложений. .
С помощью этих трех инструментов мы собираемся реализовать последовательность операций, показанную на диаграмме ниже.
Фото: nightwatchjs.org
ШАГ 1: Добавьте Nightwatch
Вы можете добавить Nightwatch в свой проект, просто запустив npm install nightwatch --save-dev
.
При этом исполняемый файл Nightwatch помещается в вашу ./node_modules/.bin
папку, поэтому вам не нужно устанавливать его глобально.
ШАГ 2: Загрузите Selenium
Selenium - это набор инструментов для автоматизации веб-браузеров на многих платформах.
Предварительное условие: убедитесь, что у вас установлен JDK как минимум версии 7. Если у вас его нет, вы можете скачать его здесь.
Сервер Selenium - это приложение Java, которое используется Nightwatch для подключения к различным браузерам. Вы можете скачать двоичный файл здесь.
После того, как вы загрузили файл JAR, создайте папку bin
внутри вашего проекта и поместите ее туда. Мы настроим Nightwatch для его использования, поэтому вам не придется вручную запускать сервер Selenium.
ШАГ 3: Загрузите Chromedriver
ChromeDriver - это автономный сервер, который реализует проводной протокол W3C WebDriver для Chromium.
Чтобы скачать исполняемый файл, перейдите в раздел загрузок и поместите его в ту же папку bin
.
ШАГ 4: Настройка Nightwatch.js
Базовая конфигурация Nightwatch выполняется с помощью файла конфигурации json
.
Давайте создадим nightwatch.json
файл и заполним его:
{ "src_folders" : ["tests"], "output_folder" : "reports",
"selenium" : { "start_process" : true, "server_path" : "./bin/selenium-server-standalone-3.3.1.jar", "log_path" : "", "port" : 4444, "cli_args" : { "webdriver.chrome.driver" : "./bin/chromedriver" } },
"test_settings" : { "default" : { "launch_url" : "http://localhost", "selenium_port" : 4444, "selenium_host" : "localhost", "desiredCapabilities": { "browserName": "chrome", "javascriptEnabled": true, "acceptSslCerts": true } } } }
С помощью этого файла конфигурации мы сообщили Nightwatch, где он может найти двоичный файл сервера Selenium и Chromedriver, а также местоположение тестов, которые мы хотим запустить.
Краткое резюме
Пока что мы установили Nightwatch, загрузили автономный сервер Selenium, а также Chromedriver. Выполнив эти шаги, вы получите все необходимые инструменты для создания сквозных тестов с использованием Node.js и Selenium.
Написание вашего первого теста Nightwatch
Давайте добавим в папку tests
новый файл с именем homepage.js
.
Мы возьмем пример из Руководства по началу работы с Nightwatch. Наш тестовый скрипт перейдет в Google, выполнит поиск Рембрандта и проверит страницу в Википедии:
module.exports = {
'Demo test Google' : function (client) {
client
.url('http://www.google.com')
.waitForElementVisible('body', 1000)
.assert.title('Google')
.assert.visible('input[type=text]')
.setValue('input[type=text]', 'rembrandt van rijn')
.waitForElementVisible('button[name=btnG]', 1000)
.click('button[name=btnG]')
.pause(1000)
.assert.containsText('ol#rso li:first-child',
'Rembrandt - Wikipedia')
.end()
}
}
Осталось только запустить сам Nightwatch! Для этого я рекомендую добавить новый скрипт в наш раздел скриптов package.json
:
"scripts": {
"test-e2e": "nightwatch"
}
Последнее, что вам нужно сделать, это запустить тесты с помощью этой команды:
npm run test-e2e
Если все пойдет хорошо, ваш тест откроет Chrome, затем Google и Википедию.
Nightwatch.js в вашем проекте
Теперь, когда вы поняли, что такое сквозное тестирование и как настроить Nightwatch, пора начать добавлять его в свой проект.
Для этого нужно учесть некоторые аспекты, но учтите, что здесь нет серебряных пуль. В зависимости от потребностей вашего бизнеса вы можете по-разному ответить на следующие вопросы:
- Куда мне бежать? О постановке? На производстве? Когда я могу строить контейнеры?
- Какие тестовые сценарии я хочу протестировать?
- Когда и кто должен писать сквозные тесты?
В этой главе Node.js в масштабе мы узнали:
- как настроить Nightwatch,
- как настроить его для использования автономного сервера Selenium,
- и как писать базовые сквозные тесты.
В следующей главе мы рассмотрим, как можно отслеживать производственные инфраструктуры Node.js.
Первоначально опубликовано на blog.risingstack.com 21 марта 2017 г.