NodeJS Cypress - cy.visit()尝试加载失败

ryevplcw  于 2023-01-25  发布在  Node.js
关注(0)|答案(5)|浏览(224)
    • 问题**

我正在运行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"
}

但我还是得到了同样的错误为什么会这样

xdyibdwo

xdyibdwo1#

也许有人遇到了同样的问题,我们面临的是,cypress.json文件不在根目录下,我们有它在cypress文件夹,一旦移动到根目录下,cypress能够找到该文件,因此也baseUrl

lo8azlld

lo8azlld2#

在我的例子中,这是一个缓慢运行的测试,触发了Cypress本身的超时。
我可以通过增加以下值来修复它:

{
  "responseTimeout": 120e3
}

所有可能的超时都有记录。你的可能不同。
您可能还希望only increase it for certain tests,而不是全局地用于所有测试,以便失败的测试不会花费太多时间。

disbfnqx

disbfnqx3#

在url的末尾添加一个斜杠,或者如果您可以在发出请求时删除斜杠。

kx1ctssn

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"

8wigbo56

8wigbo565#

对于那些可能遇到类似问题的人,在运行测试之前运行yarn build可以解决问题。

相关问题