问题标签 [cucumberjs]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 无法在 Cucumber-JS 步骤中删除猫鼬集合
我正在使用 Cucumber-JS 编写一些 BDD 功能并使用 Mongoose 为每个场景重置数据库。
我正在设置一个后台任务,为其生成步骤并将 callback.pending() 更改为通过的 callback()。
和我的步骤代码:
我在我的 mongoose 模式中添加了一个 require 语句,然后将回调包装在这个中:
这是 product.js 文件
当我运行 cucumber-js 时,它就会终止。当我返回并删除删除功能时,它再次运行良好。
我什至试过这样运行它:
任何想法是什么导致了这种行为?
javascript - 简单的 cucumber.js + 僵尸测试失败
我正在为我的项目设置 cucumber.js 测试。我按照此处提供的教程进行操作:http: //cloudspace.com/blog/2014/11/25/cucumber/#.VYe4w87sNRE我也尝试了其他教程,但它们都非常相似并导致了同样的问题。
我有一个功能文件:
和步骤定义:
以及以下 word.js 文件:
当我运行它时,场景的第一步失败,我可以看到以下错误:
但是,当我更改 world.js 文件,以便将另一个函数(在该函数中调用回调方法)传递给僵尸访问方法时,该步骤通过(但我仍然得到错误)。这是更改后的文件:
知道错误与什么有关吗?为什么对代码进行如此简单的更改会使测试通过?
cucumber - restartBrowserBetweenTests 不会重启浏览器,只会关闭它
我正在尝试在功能文件中运行多个测试(多个场景)。在每种情况之间,我需要重新启动浏览器(或至少使用一个新窗口)。我尝试设置restartBrowserBetweenTests: true
,但由于某种原因,它只会导致浏览器在第一个场景之后关闭,并且永远不会打开新的。我正在使用量角器黄瓜。
这是我的 conf 文件:
这是我的包文件:
出于保密原因,我无法发布步骤或功能文件,但是没有任何内容可以阻止打开新浏览器。
javascript - 使用 Protractor 和 Gulp 在 CucumberJS 中加载钩子
我用 Protractor 和 Gulp 设置了 CucumberJS。我遵循了此处提供的文档: https ://github.com/cucumber/cucumber-js
我有我的功能文件和步骤定义文件。我还在支持文件夹中创建了 world.js 文件,并将其加载到我的步骤定义文件中:
因此,与文档中介绍的方式相同。直到这一刻一切正常。
我试着在我的箱子里加一些黄瓜钩。我按照文档中的建议在支持文件夹中创建了 hooks.js 文件,因此:
文档没有说明应该如何在我的步骤定义中加载这个 hook.js 文件,所以我假设它以某种方式加载了“约定优于配置”的方法。不幸的是,该文件未加载,并且未执行 Before 方法。
有任何想法吗?
meteor - Xolvio/meteor-cucumber:返回 this.server.call 的结果
我正在使用包Xolvio/meteor-cucumber并且我正在尝试调用一个夹具方法并在步骤定义中使用它的返回值:
步:
我填写短信代码“#smsCodeVerification”
步骤定义:
上面的代码打印:
步骤代码:[对象承诺]
服务器方法如下所示:
步骤定义中的控制台日志将在服务器方法完成之前运行,并且使用流星正常的方式从服务器方法获取回调将不起作用,它只会返回未定义。
selenium-webdriver - webdriverio 将 getText 字符串设置为变量
我目前正在尝试使用 webdriverio 使用 getText 方法的内容来实例化一个变量。
当我尝试打印变量时,这是输出:
[对象对象]
谢谢您的帮助!
meteor - Xolvio/meteor-cucumber:登录时获取 this.userId
使用 xxx 时,我的夹具方法是否应该知道this.userId
我是否已登录?
null
当从步骤定义中调用时,它总是会打印出来。
javascript - 使用 Chai as Promised 解决 Protractor 和 Cucumber 中的承诺
最近,我和一位同事对使用 Protractor 和 Chai 作为 Promised 实现 Cucumber 步骤定义的“正确”方式存在一些分歧。我们的争论来自于相互缺乏对 Cucumber 上下文中承诺解决的确切内容的理解。
我们正在针对 AngularJS 应用程序进行测试,因此解决 Promise 和异步行为是必要的。我们遇到的最大问题是强制同步测试行为并让 Cucumber 等待步骤定义之间的承诺。在某些情况下,我们观察到这样的情况,Cucumber 似乎在 Webdriver 执行步骤定义之前就直接完成了步骤定义。我们对这个问题的解决方案各不相同......
考虑假设场景:
大多数混淆源于 Then 步骤。在这个例子中,定义应该断言搜索表单的所有字段都存在于页面上,这意味着多个 isPresent() 检查。
从我能找到的文档和示例中,我觉得断言应该是这样的:
但是,我的同事认为,为了满足承诺解决方案,您需要将您的期望与 then() 链接起来,如下所示:
后者对我来说真的很不对劲,但我也不知道前者是否正确。我理解 finally() 的方式是它与 then() 的工作方式类似,因为它在继续之前等待 promise 解决。我希望前一个示例按顺序等待每个 expect() 调用,然后在最终的 expect() 中通过 notify() 调用 next() 以向 cucumber 发出信号以继续下一步。
更令人困惑的是,我观察到其他同事这样写他们的期望:
所以我认为我所暗示的问题是:
- 以上任何一项都对吗?
- finally() 到底做了什么?它会强制像 then() 这样的同步行为吗?
- and.notify(next) 到底是做什么的?它与在 then() 中调用 next() 有什么不同?
- 是否有我们尚未找到的最佳实践指南可以更清楚地说明其中的任何内容?
提前谢谢了。
javascript - 嵌套承诺返回未定义
我正在尝试使用量角器和 chai-as-promised 用 cucumber.js 编写测试。
在我的 Page 对象中,我有这些代码片段:
在我的步骤定义代码中,我这样做:
当我运行这个测试时,我得到
预期未定义为真
这意味着 isMenuListed 方法返回 undefined 而不是 true。但是,我对其进行了调试,我可以看到“返回真”;语句被执行。
在这种情况下,我是否遗漏了有关承诺如何运作的信息?
javascript - With Protractor, how can I select a DOM Object within a list based on text?
I'm trying to select a product from my product list based on its title.
What I want to do is say "If an item from the list has a title that matches "Chicken Breast (200g)" then click the button.
Does anyone know how to write this in protractor?
I'm struggling to work out what is returned at which point, what are promises and what aren't and how to wait until I have a result before doing anything.
The dom structure looks like
I've tried this so far: