В этой статье мы рассмотрим, как можно провести сквозное тестирование с 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 г.