我们想使用codeceptJS Nightmare在我们的 Angular 7 应用程序中实现一些基本的 E2E 测试。测试应该是 CI 管道的一部分。我按照文档设置了一个basicTest.e2e.js:
Feature('Basic');
Scenario('test if Users header appears', (I) => {
I.amOnPage('http://localhost:4200/users');
I.see('Users', 'h1');
});
以及codecept.json:
{
"tests": "./e2e/*.e2e.js",
"timeout": 10000,
"output": "./_tmptest",
"helpers": {
"Nightmare": {
"url": "http://localhost",
"show": false,
"restart": false
}
}
}
并用codeceptjs run --steps
. 但是,这会导致错误:
CodeceptJS v1.3.2
Basic --
test if Users header appears
I am on page "http://localhost:4200/users"
✖ FAILED in 465ms
-- FAILURES:
1) Basic
test if Users header appears:
navigation error
Scenario Steps:
- I.amOnPage("http://localhost:4200/users") at Object.obj.(anonymous function).obj.(anonymous function) [as amOnPage] (node_modules/codeceptjs-nightmare/node_modules/codeceptjs/lib/actor.js:28:26)
Run with --verbose flag to see NodeJS stacktrace
FAIL | 0 passed, 1 failed // 1s
ng serve
在另一个控制台中运行执行命令有效:
CodeceptJS v1.3.2
Basic --
test if Users header appears
I am on page "http://localhost:4200/users"
I see "Users", "h1"
✓ OK in 2173ms
所以很明显本地服务器在运行测试之前没有启动。我找不到在 codecept.json 中配置codecept启动命令的方法,例如 npm 的http-server(因为项目已经在管道中的这一点编译)。
有没有办法启动本地服务器,然后运行 Codecept-Nightmare E2E-Tests 并随后终止服务器?
我也会接受一个hacky(脚本)解决方案(例如在package.json中),因为ng serve && codeceptjs run --steps
显然不起作用。