我正在为我的Angular 8应用程序设置一个简单的e2e测试。我正在尝试学习BDD,所以我尝试用Cucumber替换Jasmine,因为它使用与BDD更一致的语言。
当我使用Jasmine运行Protractor时,测试通过:
这是可行的:
navigateTo () {
return browser.get(browser.baseUrl) as Promise<any>;
}当我运行cucumber版本的测试时,我得到一个错误。
这将失败:
Given ('Evidentia4 is running', (done) => {
browser.get (browser.baseUrl)
.then (done ());
});“等待量角器与页面同步时出错:”未定义angularJS可测试性和角度可测试性。“
量角器配置:
exports.config = {
allScriptsTimeout: 61000,
getPageTimeout: 60000,
specs: [
'./src/features/**/*.feature'
],
capabilities: {
browserName: 'chrome'
},
directConnect: true,
baseUrl: 'http://localhost:4200/',
framework: 'custom',
frameworkPath: require.resolve('protractor-cucumber-framework'),
cucumberOpts: {
require: 'features/step-definitions/app-step-definitions.js',
tags: false,
format: 'node_modules/cucumber-pretty',
profile: false,
'no-source': true
}
};我已经阅读了这个错误,但不知道为什么我会得到它。
发布于 2020-01-03 00:21:27
你能检查一下AngularTestability接口的is_stable标志是否为真吗?如果是真的,请查看需要多长时间才能变为真。有时候Angular网页需要更长的时间才能稳定下来。量角器使用is_stable标志与页面同步。您可以尝试将其关闭(不建议用于角度页面),但可以尝试使用它来定位错误。您可以通过显式设置browser.ignoreSynchronisation = true来完成此操作。现在,您的测试将不会等待Angular承诺的解析。如果这是可行的,那么您应该看到is_stable标志需要多长时间才能变为真。有时可能存在导致网页不稳定的第三方应用程序。请注意,只有当所有承诺都得到解决时,角度网页才是稳定的。如果是这种情况,您可以在执行测试之前等待页面稳定下来。
然而,它在茉莉而不是黄瓜中起作用的原因很奇怪。也许黄瓜比茉莉执行得更快。不过我不太确定。
另外,请在您的浏览器中将SELENIUM_PROMISE_MANAGER设置为false,以便您知道是否缺少任何承诺。
https://stackoverflow.com/questions/59565102
复制相似问题