我无法使量角器调试器与节点8 async / await和Angular 6一起工作。以旧的方式使用elementExplorer
,browser.pause()
和browser.debugger()
回到节点7是不是一个选择。同样是因为将来,control flow
已从Selenium中删除,并且我不断阅读到,使用节点8 async / await而不是control flow
是一种更好的调试体验。
我正在使用角度6.0.3,角度CLI 6.0.5,节点8.11.2和Chrome 71.0.3578.98。我通过使用CLI生成测试应用程序来重现该问题:
ng new stack-overflow-debugging-protractor --style=scss --routing
使用angular CLI生成此应用程序会自动安装并配置量角器5.3.2。
我有一个简单的测试,成功运行ng e2e
:
describe('workspace-project App', () => {
it('should display welcome message', () => {
browser.get('/');
expect(element(by.css('app-root h1')).getText()).toEqual('Welcome to app!');
});
});
I follow this document to set up my debugging environment
要使其与异步/等待一起使用,我需要禁用control flow
,因此在protractor.conf.js
中添加SELENIUM_PROMISE_MANAGER: false
,在./e2e/tsconfig.e2e.json
中将"target": "es5"
更改为{ {1}}
在e2e测试中,我添加了"target": "es2017"
和async
并添加了命令await
debugger
当我执行describe('workspace-project App', () => {
it('should display welcome message', async () => {
await browser.get('/');
debugger;
await expect(element(by.css('app-root h1')).getText()).toEqual('Welcome to app!');
});
});
时,它仍然可以成功运行:
我在终端会话中运行调试器:
ng e2e
我在浏览器中打开Chrome检查器node --inspect-brk ./node_modules/protractor/bin/protractor ./e2e/protractor.conf.js
,找到当前运行的目标并单击chrome://inspect/#devices
。然后,我单击按钮inspect
(或F8),然后测试应该在第一行使用resume script execution
关键字暂停。
但不是,Chrome会自动打开一个错误为debugger
的新窗口。 Chrome DevTools的控制台为空。终端会话给出:
ERR_CONNECTION_REFUSED
因此,我阅读了建议,并将E/protractor - Could not find Angular on page http://localhost:4200/ : retries looking for angular exceeded
Failed: Angular could not be found on the page http://localhost:4200/. If this is not an Angular application, you may need to turn off waiting for Angular.
Please see https://github.com/angular/protractor/blob/master/docs/timeouts.md#waiting-for-angular-on-page-load
添加到getPageTimeout: 60000
中。然后我得到错误:
protractor.conf.js
似乎是相同的错误,因此我将Failed: Error while running testForAngular: script timeout: result was not received in 11 seconds
行protractor.conf.js
更改为allScriptsTimeout: 11000
。然后我得到错误:
60000
同样,我将Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
at ontimeout (timers.js:498:11)
at tryOnTimeout (timers.js:323:5)
(node:11716) UnhandledPromiseRejectionWarning: Error: 'fail' was used when there was no current spec, this could be because an asynchronous test timed out
(node:11716) UnhandledPromiseRejectionWarning: Unhandled promise rejection.
This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which wasnot handled with .catch(). (rejection id: 1)
的{{1}}行protractor.conf.js
更改为defaultTimeoutInterval: 30000
。同样的错误。
我还尝试了更高的值200000,但是结果是等待时间更长,但错误是相同的。
谁知道该问题的解决方案?
答案 0 :(得分:2)
运行量角器不会直接启动应用程序来运行测试,这是工作ng e2e
命令的一部分。
要解决此问题,您可以使用ng serve
在单独的终端窗口中启动应用程序,或者可以使用ng e2e
命令运行调试器(这将在后台启动应用程序):
node --inspect-brk ./node_modules/.bin/ng e2e