Рубрики
Без рубрики

Приемное тестирование в JavaScript с Cucumber.js & WebDriaio

Когда дело доходит до тестирования вашего кода JS, это имеет первостепенное значение, которое вы включаете приемочные тесты, кроме тестов подразделений. Здесь мы обсудим, как настроить Cucumber.js с WebDriverio для достижения этой важной задачи.

Автор оригинала: Jeremy Rajan.

Когда дело доходит до тестирования вашего кода JS, это имеет первостепенное значение, которое вы включаете приемочные тесты, кроме тестов подразделений. Это где инструменты, такие как Селен или Фантомс вступают в игру. Эти инструменты помогают нам проводить тесты против нашего кода JS в реальном браузере. Если мы поставь В некоторых усилиях мы можем запустить их на нескольких устройствах или платформах, использующих такие услуги, как Соусные лаборатории или Брасирбак Отказ

Введите WebDriaio ! WebDriverio позволяет писать тесты, с действиями, через которые вы можете управлять браузером и утверждать результаты. Вы можете использовать такие услуги, как Mocha, огурец или жасмин.

Здесь мы обсудим, как настроить CuCumber.js с WebDriaio. Если вы новичок в Cucumber.js или не слышали об этом. Я бы предложил прочитать о Cucumber.js здесь. Возможно, вы не найдете много информации о том, что это немного распространяется (может потребоваться использовать ваши навыки Google ).

При использовании CuCumber.js для тестирования вы в основном пишите файлы функций для проверки нескольких сценариев. Например, следующее является файлом функций:

# title.feature
Feature: Title check
  I should be able to go to a website
  and check its title

Scenario: Get the title of webpage
  Given I go to the website "http://www.google.com"
  Then I expect the title of the page "Google"

Если вы заметили, синтаксис в значительной степени явно объясняет и читаемый. Вы должны думать, действительно … Вот и это? Ну да и нет. Код выше будет работать в качестве точки входа в ваш тест, но WebDriaio (Test Runner), не знает, что означают эти строки. Это где Определения шага войти.

// stepdefinitions.js
const expect = require('chai').expect;

module.exports = function () {
  this.Given(/^I go to the website "([^"]*)"$/, (url) => {
    browser.url(url);
  });

  this.Then(/^I expect the title of the page "([^"]*)"$/, (title) => {
    expect(browser.getTitle()).to.be.eql(title);
  });
}

Вы заметите здесь, что для каждого Дано и Тогда Заявления, у нас есть соответствующие определения JS. Эти определения могут быть использованы в других функциях или тестовых файлах.

Чтобы сделать все возможное, все ваши тестовые файлы (или файлы функций .feature) и файлы шагового определения (* .js) разделяются.

Теперь у нас есть наши тестовые файлы и определения шага на месте, пришло время связать их с помощью WebDriaio, что принесет все эти файлы вместе и запускают его для нас.

Структура папки выглядит что-то подобное:

Структура папки

Прежде чем мы начнем, давайте сначала установим WebDriaio и Cucumber DEPS.

[sudo] npm i -g WebdriverIO
[sudo] npm i -g wdio-cucumber-framework

Чтобы запустить браузер для тестирования, нам нужно установить и запустить селен. Селен Это сердце тестирования автоматизации браузера, а WebDriaio обеспечивает привязку для селена в Node.js.

[sudo] npm i selenium-standalone@latest -g

Как только все они установлены, перейдите к каталогу, где присутствуют ваши файлы функций и определения шага – предполагая, что у нас есть их в ~/project_name/test каталог. Давай продолжим.

Вызвать WebDriaio

Для этого нам нужно создать файл конфигурации. Чтобы создать один, введите …

wdio

… внутри Тест папка. Это предложит вам создать файл конфигурации и дать вам четыре варианта. В настоящее время мы сосредоточимся на первом варианте, так как это поможет нам получить WebDriaio UP и запустить на нашей местной машине.

При появлении запроса выберите следующие параметры:

Where do you want to execute your tests? On my local machine

Which framework do you want to use? cucumber

Shall I install the framework adapter for you? No # we already have installed the adapter 

Where are your feature files located? (./features/**/*.feature) # this is a glob pointing to the folder where all your feature (test files) are located.

Where are your step definitions located? (./features/step-definitions)  # Your step definitions folder

Which reporter do you want to use?  dot - https://github.com/webdriverio/wdio-dot-reporter # default reporter

Shall I install the reporter library for you? Yes

Do you want to add a service to your test setup? Selenium Standalone

Level of logging verbosity silent

In which directory should screenshots gets saved if a command fails? ./errorShots/

What is the base url? http://localhost # In case you did not provide a full url in tests

После ответа на все вопросы это будет выглядеть так:

Блок ответа

Как только это сделано, вы можете установить библиотеку утверждения по своему выбору. Я использую Чай здесь. Установите и сохраните Chai, используя

npm i --save-dev chai

Как только вы будете довольны конфигурацией, запустите тесты (в текущем каталоге), используя:

selenium-standalone install # install selenium
selenium-standalone start # start selenium
wdio wdio.conf.js

Если все пошло по плану, вы увидите:

После прогона теста

Pro Tip.

Вместо запуска селена отдельно, есть плагин, который является частью WebDriaio. Это начнет селену и остановить селен в соответствии с тестами. Для этого сначала установите плагин:

npm i wdio-selenium-standalone-service --save-dev

И, в wdio.conf.js Файл, добавьте следующее в качестве родительской клавиши

exports.config = {
  ...
  services: ['selenium-standalone'],
  ...
}

Вот и все, вы можете попробовать работать wdio wdio.conf.js снова без запуска селен-автономной. Пожалуйста, убедитесь, что селен-автономный не работает на заднем плане.

Надеюсь, это поможет кому-то.

В следующем уроке мы обсудим о том, как автоматизировать весь процесс, используя Гульп Отказ

Соответствующие учебные пособия, которые вас могут быть заинтересованы в

  • Компоненты тестирования единиц реакции: шума или фермент?
  • Как (наконец) учиться развитие
  • Обучение поведения, управляемое поведением развития с Ember CLI