Javascript 不带perform()的browser.actions()
最近,我注意到我们的一项测试有以下内容:Javascript 不带perform()的browser.actions(),javascript,selenium,selenium-webdriver,protractor,Javascript,Selenium,Selenium Webdriver,Protractor,最近,我注意到我们的一项测试有以下内容: browser.actions().sendKeys(protractor.Key.RETURN); 这个意图是可以理解的,但实际上它什么也做不了,因为没有调用perform()。出于某种原因,测试本身通过了,这表明测试逻辑和以下期望存在问题 我如何才能尽早发现此类问题,并在理想情况下防止这种量角器/WebDriverJS使用冲突被提交到存储库中?一种选择是使用静态代码分析-有一个ESLintlinting实用程序,它有一组不同的插件。如今,除了其他特
browser.actions().sendKeys(protractor.Key.RETURN);
这个意图是可以理解的,但实际上它什么也做不了,因为没有调用perform()
。出于某种原因,测试本身通过了,这表明测试逻辑和以下期望存在问题
我如何才能尽早发现此类问题,并在理想情况下防止这种量角器/WebDriverJS使用冲突被提交到存储库中?一种选择是使用静态代码分析-有一个
ESLint
linting实用程序,它有一组不同的插件。如今,除了其他特定的量角器违规行为外,还有一种情况会被抓住
以下是在这种情况下运行的ESLint
的输出:
/Users/user/job/app/specs/test.spec.js
36:13 error No perform() called on browser.actions() protractor/missing-perform
我希望这可以通过(可编写脚本的)编辑器插件或linter规则实现 这就是说,评估测试脚本的最佳方法当然是真实地运行它,但也要确保所有测试操作都有相应的断言/验证 您的
键.RETURN
可能会对DOM产生一些影响,或者启动一些操作,这些操作的结果可以检测到(页面更改、数据更改等),并且可能比静态分析规则更有意义,更易于阅读