- 问题**
我正在运行Cypress的集成测试,它在本地运行正常,但在Gitlab中运行时失败。我收到的错误是在使用cy.visit()
命令时,导致以下错误:
CypressError: `cy.visit()` failed trying to load:
http://localhost:3000/ The response we received from your web server
was:
404: Not Found
- 配置**
我使用以下命令启动测试:
tests:
image: cypress/base:10
stage: tests
script:
- npm ci
- npm run test:ci
在我的package.json
中,这些命令如下所示:
"scripts": {
"start:ci": "serve dist --no-clipboard --listen ${PORT:-3000}",
"test": "cross-env NODE_ENV=test && npm run test:jest && npm
run test:cypress",
"test:ci": "start-server-and-test start:ci http://localhost:3000 test",
"test:cypress": "cypress run --headless",
"test:jest": "jest",
},
- 研究**
我已经研究了错误,发现了this线程,这帮助我了解了这个问题一点。然后我尝试添加以下配置到我的cypress.json
文件:
{
"baseUrl": "http://localhost:3000"
}
但我还是得到了同样的错误为什么会这样
5条答案
按热度按时间xdyibdwo1#
也许有人遇到了同样的问题,我们面临的是,
cypress.json
文件不在根目录下,我们有它在cypress文件夹,一旦移动到根目录下,cypress能够找到该文件,因此也baseUrl
。lo8azlld2#
在我的例子中,这是一个缓慢运行的测试,触发了Cypress本身的超时。
我可以通过增加以下值来修复它:
所有可能的超时都有记录。你的可能不同。
您可能还希望only increase it for certain tests,而不是全局地用于所有测试,以便失败的测试不会花费太多时间。
disbfnqx3#
在url的末尾添加一个斜杠,或者如果您可以在发出请求时删除斜杠。
kx1ctssn4#
这可能是两个不同的问题:
1.您确定您的页面在http://localhost:3000中运行正常吗?也许您可以尝试先运行一个步骤,向此地址发出请求,然后查看状态响应是否为200以及此请求的内容
1.我也会建议你在GitLab中以不同的方式运行你的测试,也可以使用wait-on,所以首先用
npm i -D wait-on
安装wait-on dependence,然后在你的package.json中创建一个新脚本,并使用这个新脚本在Gitlab中运行,如下所示:test:gitlab: "wait-on http://localhost:3000 && cypress run --config pageLoadTimeout=60000,retries=3,defaultCommandTimeout=4000 --browser chrome"
8wigbo565#
对于那些可能遇到类似问题的人,在运行测试之前运行
yarn build
可以解决问题。