docker Cypress在Gitlab管道中完成测试后不退出

k4emjkb1  于 2023-04-05  发布在  Docker
关注(0)|答案(1)|浏览(166)

我希望在Gitlab管道中运行Cypress测试。我使用的是Cypress/included:12.8.1 docker镜像,因为它与我使用的Cypress版本相匹配。我知道这个Cypress镜像的入口点是cypress run。管道作业运行,看起来它试图用--config运行cypress run命令,然后抛出错误。我想我需要向命令传递一个配置文件,但我不知道如何传递。我在Gitlab仓库中有一个cypress.config.js文件,但Gitlab不提供管道作业访问脚本部分中的仓库文件的方法。
更新1:我已经部分解决了这个问题。我能够让Cypress在管道作业中运行。Cypress文档不是很有帮助。我不得不通过添加entrypoint: [""]来覆盖默认入口点。当Cypress映像启动时,这会阻止cypress run自动运行,这会导致错误。cypress run自动运行并查找未运行的配置文件。现在我遇到的问题是,当Cypress测试完成时,管道作业没有退出。我相当肯定这是由于下一个服务器在后台运行。我试图按照Cypress文档中的描述添加Xvfb命令,但我得到一个错误。
更新2:我已经缩小了问题的范围。我在管道中运行cypress时打开了调试模式,如下所示:DEBUG=cypress:server* npx cypress run --headless --config-file cypress.config.js -c video=false。使用Xvfb没有任何区别,所以我删除了这些命令。
这是测试完成后Cypress管道作业的最新输出:

cypress:server:cypress about to exit with code 0 +8s
cypress:server:browsers browsers.kill called with no active instance +2s
cypress:server:util:socket_allowed allowed socket closed, removing { localPort: 57714 } +3s
cypress:server:util:socket_allowed allowed socket closed, removing { localPort: 57704 } +1ms
cypress:server:socket-base socket-disconnecting transport close +241ms
cypress:server:socket-base socket-disconnect transport close +0ms
ERROR: Job failed: execution took longer than 1h0m0s seconds

这是我的Gitlab YAML for the Cypress job:

---
cypress tests:
  image: 
    name: cypress/included:12.8.1
    entrypoint: [""]
  stage: e2e-tests
  interruptible: true
  dependencies: []
  cache:
    key: ${CI_COMMIT_REF_SLUG}
    paths:
      - .npm
      - cache/Cypress
  rules:
    - exists:
      - cypress.config.js
  artifacts:
    # Store cypress screenshots as artifacts on job failure only
    when: on_failure
    expire_in: 1 day
    paths:
      - ${CI_PROJECT_DIR}/cypress/screenshots
      - ${CI_PROJECT_DIR}/cypress/videos
  script:
    - npm ci
    - npm run build --omit=dev
    - npm run start &
    - DEBUG=cypress:server* npx cypress run --headless --config-file cypress.config.js -c video=false
gwbalxhn

gwbalxhn1#

在做了一些测试和研究之后,我找到了解决这个问题的方法。看起来这个问题是关于Electron的,和之前在GitHub上报告的这个问题类似。我没有在无头模式下运行cypress,而是用chrome运行它,管道作业成功退出。这是有效的命令:npx cypress run --browser chrome --config-file cypress.config.js
当我将Cypress 12.8.1升级到12.9.0并使用无头模式时,Gitlab管道中没有发生错误。看起来Electron问题最终在12.9.0版本中得到了解决。Chrome或Electron将使用Cypress包含的图像和12.9.0版本在Gitlab管道中工作。

相关问题