问题标签 [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.

0 投票
1 回答
2064 浏览

javascript - Cucumber.js TypeError:无法读取未定义的属性“待定”

我正在使用 Node.js、cucumber.js(全局安装)和 Web Storm IDE 以及一个简单的加号场景,我收到以下错误。除了 callback.pending 之外,步骤定义没有其他任何内容。请问有什么想法吗?

TypeError:无法在 World 读取未定义的属性“待定”。(/Users/wfn936/Repos/customer-svc/features/step_definitions/customer.js:6:17) 在 Object.invoke (/usr/local/lib/node_modules/cucumber/lib/cucumber/support_code/step_definition.js: 88:14) 在 Object.execute (/usr/local/lib/node_modules/cucumber/lib/cucumber/ast/step.js:161:22) 在 Object.acceptVisitor (/usr/local/lib/node_modules/cucumber/ lib/cucumber/ast/step.js:147:12) 在 Object.executeStep (/usr/local/lib/node_modules/cucumber/lib/cucumber/runtime/ast_tree_walker.js:296:12) 在 Object.processStep (/ usr/local/lib/node_modules/cucumber/lib/cucumber/runtime/ast_tree_walker.js:291:14)在/usr/local/lib/node_modules/cucumber/lib/cucumber/runtime/ast_tree_walker.js:129:

0 投票
1 回答
819 浏览

javascript - Reloading cucumber.js steps with gulp-watch and gulp-develop-server

I'm trying to use the following gulpfile.js in order to watch for changes, restart my server, and re-run my tests (cucumber.js). Changing a cucumber spec, or a file in my application both successfully trigger the process. However, the updated content of the specs is ignored! It's like the spec is cached. How can I ensure the latest specs are executed?

File content:

0 投票
1 回答
1287 浏览

protractor - Protractor-Cucumber:如何在钩子中等待(之后)

我不确定这会解决我的问题,但似乎最有可能。

现在的代码,在 after 钩子中,通过 browser.get 从 Angular 页面重定向到非 Angular 页面。

重定向确实发生了,不幸的是,在继续下一个场景之前,它会尝试在页面上找到角度,并会在打印错误并按预期继续之前阻止它。

我的想法是使用 browser.driver.get 并简单地等待 url 更改,但我不确定如何在 hooks 中使用 browser.wait。

谢谢

0 投票
1 回答
1556 浏览

selenium - 对黄瓜中的场景进行分组

我们如何对场景进行分组并使用测试运行器运行?我正在使用黄瓜硒,需要对场景进行分组。

0 投票
1 回答
604 浏览

chai - 如何检查 chai-as-promised 中的计数值?

我使用 cucumber 和 chai-as-promised 作为断言库。检查计数值的正确方法是什么。我使用相等,但它仅在将字符串转换为整数后才有效。有没有办法直接断言整数值?

0 投票
1 回答
541 浏览

angularjs - 将 Protractor 2.1.0 与 CucumberJS 一起使用时出错

我在从 Protractor 2.0 升级到 Protractor 2.1 时遇到问题,并且怀疑这是使用 Protractor 2.1 和 CucumberJS 的问题。当我编辑 package.json 以降级到 Protractor 2.0.0 并重新安装节点包时,问题得到解决。是什么导致 Protractor 2.1.0 中的错误?如何重写我的项目以使用 Protractor 2.1.0 和 Cucumber JS?

我的项目文件及其内容如下所列:

/path/to/myproject/conf.js _

/path/to/myproject/ features/demo.feature

/path/to/myproject/ features/stepDefinitions.js

/path/to/myproject/ package.json

安装节点包并运行 Protractor 时:

将以下错误打印到终端:

但是,如果我编辑 package.json 以降级到 Protractor 2.0.0,然后再次安装节点包:

然后当我运行量角器时它可以工作:

如何重写这个项目以兼容 Protractor 2.1.0 和 Cucumber JS?谢谢!

0 投票
2 回答
1979 浏览

debugging - IntelliJ 中的 Cucumber.js 调试

IntelliJ 有一个 Cucumber.js 插件。这假设在 IDE 中启用运行和调试。cucumber.js 的运行配置有效,但调试模式已停用(无法单击调试按钮)。有没有其他人有同样的问题并设法解决它?调试对我来说非常重要。谢谢!

0 投票
2 回答
6726 浏览

javascript - cucumber-js 和 Chai 如何期待具有给定选择器的元素是否存在于 DOM 中

我有 cucumberjs 的问题。我找不到一种方法来确保具有给定选择器的元素呈现到 DOM 中。我将 cucumberjs 与 Chai 一起使用。 https://github.com/cucumber/cucumber-js isPresent 返回对象 - 无论元素是否存在。所以问题是如何检查元素是否存在于 DOM 中。

我将编辑问题以分享一个经验教训。我阅读了文档还要感谢 Nathan Thompson。isPresent() 返回一个承诺,该承诺将解决该元素是否存在于页面上。

http://angular.github.io/protractor/#/api?view=Protractor.prototype.isElementPresent

代码示例有点误导。因此,如果您想知道 DOM 中是否存在具有给定选择器的元素,您必须使用如下内容:

或者将 chai 与 promise 一起使用。

然而,“最终”这个词听起来令人不快。我们希望确定最终不确定。:)

这里可以在我的个人博客中查看关于这个问题的文章。

0 投票
1 回答
231 浏览

ruby-on-rails - 为单页 Web 应用程序及其后端的全栈测试设置测试数据

我的问题的简短版本

在为 Angular 单页 Web 应用程序编写的 Cucumber 测试中,我如何完成通常在场景的“给定”部分执行的任务(例如设置测试数据、定义数据库记录关联以及确保测试之间的干净数据库状态) 在测试全栈时,前端应用程序及其后端?应用程序源代码存储在两个独立的 Git 存储库中,一个用于前端应用程序,一个用于后端。后端是使用 Rails API gem 用 Ruby 编写的。全栈测试这个应用程序的挑战来自于它实际上是两个应用程序这一事实,而更传统的 Ruby on Rails 应用程序不是作为单页应用程序实现的。

我的问题的完整版

我正在寻找为 Web 应用程序编写一系列 Cucumber 测试。该应用程序由一个用 Angular 编写的前端单页应用程序和一个使用 Rails API 编写的后端 API 组成。前端的源代码和后端的源代码都位于各自的 Git 存储库中,从而在两个代码库之间提供了清晰的分离。此外,该应用程序使用 MySQL 和 Elasticsearch。

我过去在以前的 Ruby on Rails 项目中使用过 Cucumber。这些项目不是作为单页应用程序开发的。在这些项目中,很容易在 Cucumber 步骤定义中创建 Ruby 对象作为测试数据。例如,考虑以下不是单页应用程序的 Rails 项目中的功能文件:

此功能文件中的步骤可以通过以下步骤定义来实现:

在不是作为单页应用程序开发的 Ruby on Rails 项目中,测试工具可以作为 Ruby gems 包含在项目中。对我来说,这些工具包括:

如您所见,这包括 Factory Girl,用于将 Ruby 对象设置为测试数据并定义数据库记录关联,以及 Database Cleaner,用于确保测试之间的干净数据库状态。使用 JavaScript 的 Cucumber 场景需要包含 Selenium WebDriver。

在我的单页应用程序中情况有所不同。如上所述,应用程序分为两个独立的代码库,一个用于 Angular 前端单页应用程序,另一个用于 Rails API 后端接口。

但是,像我的项目这样的单页应用程序仍然具有与更传统的 Rails 应用程序相同的测试要求,这些应用程序不是作为单页应用程序构建的。有必要对应用程序进行全栈测试,以确保前端和后端的每个组件都能按预期协同工作。需要定义 Cucumber 步骤,在测试之前创建“给定”先决条件,并且有必要确保测试之间的数据库干净。

如何使用 Cucumber 测试这样的应用程序,一个有两个代码库,实现为单页应用程序?有一个可用于 JavaScript 的 Cucumber 版本,称为 CucumberJS。但是,我不知道如何使用 CucumberJS 创建固定装置、记录关联以及确保测试之间的数据库干净。还有一个用于测试用 Angular 编写的 JavaScript 的工具,称为 Protractor。我想这个工具会取代 Selenium WebDriver。

0 投票
1 回答
200 浏览

selenium - 浏览器切换句柄 Phantomjs 问题

我将量角器与黄瓜一起使用,每当需要使用 phantomjs 在浏览器选项卡之间切换时,它就会挂起而没有任何错误消息。然而,同样的步骤适用于 Chrome 浏览器。这是为什么?我的步骤如下