Ранее писал тесты на java, но возникла потребность в том, чтобы писать их на js.
Чтобы задать "кастомный" путь до фич или до step_definitions-файлов - в java не возникало никаких проблем. В cucumber-js же, проблема актуальна, точнее в документации о возможности конфигурирования путей нет ни слова.
Предлагаемая структура разработчиками:
features/
test.feature
support/
world.js
hooks.js
step_definitions/
test.js
Желаемая структура:
src/
features/
test/
test.feature # Сценарий
test.steps.js # "Шаги" для сценари
test.js # Объект страницы со всеми методами для "шагов"
helpers/
hooks.js
Соответственно, нужна возможность переопределить пути для steps_definitions-файлов, без использования сторонних инструментов (wdio, protractor и тд) для запуска тестов.
Запуск произвожу так:
Хелпер для инициализации драйвера:
'use strict';
const webdriver = require('selenium-webdriver'),
chrome = require('chromedriver'),
{ setWorldConstructor } = require('cucumber');
const driver = new webdriver.Builder().forBrowser('chrome').build();
module.exports = { driver };
Тестовая фича:
#local-run
Feature: Работоспособность поиска google
Scenario: Поиск работает
Given Открыли страницу google
When Ввели поисковой зарос
| Tomato |
| Cucumber |
| Cabage |
Then Поиск выдал результаты
"Шаги" для тестовой фичи:
'use strict';
const { defineSupportCode } = require('cucumber');
defineSupportCode(({ Given, When, Then, setDefinitionFunctionWrapper }) => {
setDefinitionFunctionWrapper(() => {
this.Given('Открыли страницу google', function (callback) {
callback.pending();
});
this.When('Ввели поисковой зарос', function (callback) {
callback.pending();
});
this.Then('Поиск выдал результаты', function (callback) {
callback.pending();
});
})
});
Объект страницы пустой, поэтому его не привожу, по той причине, что тесты не запускаются в принципе, т.е., фичу видно, но шагов нет.
Запускаю через cucumber.js в проекте.
Пробовал делать "стандарную" структуру приведенную в доках - все равно не работает, даже с кодом, приведенным там.
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости