使用 Nightwatch 进行演示 - 通过配置减慢断言

Posted

技术标签:

【中文标题】使用 Nightwatch 进行演示 - 通过配置减慢断言【英文标题】:Using Nightwatch for demo - slow down assertions by config 【发布时间】:2016-10-12 09:27:45 【问题描述】:

我和我的团队正在使用 Nightwatch 为一个共有五个系统的面向微服务的架构编写端到端验收测试。 在进行了一些设置并将我们的服务与 docker-compose 连接在一起之后,它现在运行良好,并且所有测试都在浏览器的 UI 上单击完成(不是无头)。

我们也想将它用于演示(初始 sprint 演示等),并想知道是否有某种设置(我们直到现在才发现)或其他可能性来简单地在点击/测试/断言和一切。

有人有想法吗?

【问题讨论】:

【参考方案1】:

您可以使用以下命令在套件中的任意位置添加暂停:

.pause(5000) // a pause for 5 seconds
//or alternately
.pause(this.timeout)

this.timeout 可以在你的 base-test-case.js 中设置

var timeout = 5000; // in your variable declarations

然后在同一个文件中,在你想要的基类原型上:

  before: function (client) 
    this.timeout = timeout;

【讨论】:

所以如果我有多个断言,我必须在 每个 断言之前放置一个.pause()?这有点难看。从 Selenium IDE 我知道有一个滑块会在执行下一个命令之前自动等待特定的时间。那么守夜人就没有等价物吗? (比如开头的全局.setSpeed()命令) 不,您不需要在每个断言之前都暂停。在大多数情况下,您根本不需要,但假设您正在等待将某些项目添加到 DOM 或页面加载,您可以使用 .waitForElementPresent(selector, timeout) 没有 setSpeed()等效,因为不需要。它不打算用作演示工具,尽管我已经看到它以这种方式使用。但是,如果您想将其用作演示,您可能希望将 .pause(timeout) 用于您想要放慢速度的应用程序的任何部分。 将测试运行器置于“慢速模式”以用于演示或复杂页面(例如使用转换的控件)是一项旧功能并且必须具备。用暂停或等待乱扔代码是使 e2e 测试变得脆弱、缓慢且难以维护的原因。 Capybara 继续设定 e2e 测试的标准。【参考方案2】:

browser.pause 在点击或 setValue 之间有很好的延迟,100-300 毫秒之间的任何时间都很好

http://nightwatchjs.org/api#pause

【讨论】:

以上是关于使用 Nightwatch 进行演示 - 通过配置减慢断言的主要内容,如果未能解决你的问题,请参考以下文章

Nightwatch:等待没有通过/失败结果的元素

使用Nightwatch进行测试时未获得预期的像素高度

使用Nightwatch.js做基于浏览器的web应用自动测试

nightwatch 基于Webdriver的端到端自动化测试框架

使用 nightwatch 检查 http 状态码

Nightwatch.js如何访问安全网站?