从0.20.1开始,Cucumber现在在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
答案 0 :(得分:13)
我创建了一个示例项目来展示如何使用Cucumber配置Protractor并使用World。
世界是一个分享不同场景之间共性的地方,这样您就可以让代码保持井井有条。
实际上,您只需要在/ features下名为/ support的文件夹中创建world.js文件。你也可以把你的钩子放在那里。您的步骤定义中将提供每个属性或功能。
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
希望这有帮助。
答案 1 :(得分:1)
看看protractor-cucumbe - 它附带了selenium-webdriver,支持Promises,并且有详细记录。
似乎需要最少的配置,并且所需要的内容清楚地记录在案。
答案 2 :(得分:0)
我从这个设置中获得了很好的成功
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必须恰到好处。)
作为旁注,它位于features / support / world.coffee中,未明确添加到'requires'列表中(尝试这样做会让我陷入Gherkin Lexing错误问题)。
答案 3 :(得分:0)
在配置文件中将其添加为框架:
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"
}
};
此处提供更多信息:Protractor Frameworks