Как настроить транспортир для использования огурца
От 0.20.1 Теперь огурцы полностью поддерживаются в Protractor, но я боюсь найти любую документацию о том, как правильно ее настроить. Любая идея, как вы будете устанавливать world.js?
Я нашел этот пример в https://github.com/whyvez/angular-cucumber-example/blob/master/features/support/world.coffee, но я не уверен, что вам все равно нужно указать все требуемые модули и конфигурацию в качестве файла конфигурации транспортира (referenceConf.js) будет иметь всю эту информацию уже.
assert = require 'assert'
path = require 'path'
protractor = require 'protractor'
webdriver = require 'selenium-webdriver'
driver = new webdriver.Builder().
usingServer('http://localhost:4444/wd/hub').
withCapabilities(webdriver.Capabilities.chrome()).
build()
driver.manage().timeouts().setScriptTimeout(100000)
ptor = protractor.wrapDriver driver
class World
constructor: (callback) ->
@browser = ptor
@By = protractor.By
@assert = assert
callback()
module.exports.World = World
Ответы
Ответ 1
Я создал образец проекта, чтобы показать, как настроить транспортир с огурцом и использовать мир.
Мир - это место, где можно разделить общие черты между различными сценариями, чтобы вы могли поддерживать организованный код.
На самом деле все, что вам нужно, это создать файл world.js в папке с именем /support под/features. Вы также разместите там свои крючки. Каждое свойство или функция будут доступны в ваших определениях шагов.
world.js:
module.exports = function() {
this.World = function World(callback) {
this.prop = "Hello from the World!";
this.greetings = function(name, callback) {
console.log("\n----Hello " + name);
callback();
};
callback();
}
И затем в ваших шагах:
var sampleSteps = function() {
this.Given(/^this is the first sample$/, function (callback) {
console.log("\n----" + this.prop);
callback();
});
this.Given(/^this is the second sample$/, function (callback) {
this.greetings("everybody", callback);
});
};
module.exports = sampleSteps;
Файл конфигурации protractor.js будет выглядеть примерно так:
exports.config = {
specs: [
'e2e/features/*.feature'
],
capabilities: {
'browserName': 'chrome'
},
baseUrl: 'http://localhost:8081/',
framework: 'cucumber',
};
Это хранилище GitHub.
https://github.com/plopcas/st-protractor-cucumber
Надеюсь, что это поможет.
Ответ 2
Взгляните на protractor-cucumbe - он поставляется с selenium-webdriver, поддерживает Promises и хорошо документирован.
Кажется, что требуется минимальная конфигурация, и требуется то, что требуется документально.
Ответ 3
Я получил хорошее облегчение от этой установки
class ChtWorld
chai = require('chai');
chaiAsPromised = require('chai-as-promised');
constructor: ->
@browser = @protractor = require('protractor').getInstance()
@By = @protractor.By
chai.use(chaiAsPromised)
@expect= chai.expect
module.exports= ->
this.World= (callback) ->
w = new ChtWorld()
callback(w)
Поскольку транспортир уже настроен, достаточно получить ссылку на него достаточно
(обратите внимание, что для того, чтобы Cucumber правильно загрузил новый мир, modules.exports должен быть прав).
В качестве побочной заметки это расположено в функциях /support/world.coffee, и явно не добавлено в список "требует" (попытка сделать это заставила меня заблудиться в проблемах с ошибками Лексинга).
Ответ 4
Добавьте его в качестве структуры в файле конфигурации:
exports.config = {
// set to "custom" instead of cucumber.
framework: 'custom',
// path relative to the current config file
frameworkPath: 'protractor-cucumber-framework'
// relevant cucumber command line options
cucumberOpts: {
format: "summary"
}
};
Дополнительная информация здесь: Рамки-манифольды