使用Gitlab CI

问题描述

我有一个Nx项目,其中配置了Gitlab CI。我的项目包括2种E2E测试-主项目和Storybook。测试本身可以正常工作,但是我使用cypress.io仪表板来收集E2E结果。

我将项目配置为记录它们并可以运行,但是我希望将它们保存为一次运行,但要使用2组x 2个浏览器(Main / Storybook x Chrome / Firefox)。记录也可以正常工作,cypress.io仪表板可以正确识别2个浏览器和组,但是我只得到一种浏览器的结果(Chrome for Main有一个结果,Firefox for Storybook有一个-第二个浏览器在过滤器中可见,但它们的结果为空-请参阅屏幕截图。

One test run with correct groups and browsers

No results for Firefox for Main

我尝试了https://docs.cypress.io/guides/guides/parallelization.html中的一些标志和配置

不幸的是,无论我尝试什么,总是会出现类似以下的错误

您通过了--parallel标志,但我们并未跨测试并行化 不同的环境。本机发送不同的环境 参数,而不是启动此并行运行的第一台计算机。的 现有的运行是:https://dashboard.cypress.io/projects/qwerty/runs/44 为了以并行模式运行,每台计算机必须发送相同的 环境参数,例如:

每个组只能通过一个浏览器,而第二个浏览器则会出现以下错误

Pipeline result

这些是我在package.json中的脚本:

# 1st --parallel flag for nx and 2nd after -- for Cypress directly
# $CYPRESS_RECORD_KEY - key provided by cypress.io
# $CI_ID - <branch-name>-<commit-hash> - e.g. my-new-branch-qweqtwerwtreyzsxfc4123dxfv

"e2e:ci": "nx e2e main-e2e --prod --headless --parallel --record --key $CYPRESS_RECORD_KEY --ci-build-id $CI_ID --group MainWeb -- --parallel","e2e:ci:chrome": "yarn e2e:ci --browser=chrome","e2e:ci:firefox": "yarn e2e:ci --browser=firefox","e2e:storybook:ci": "nx e2e storybook-e2e --prod --headless --parallel --record --key $CYPRESS_RECORD_KEY --ci-build-id $CI_ID --group Storybook -- --parallel","e2e:storybook:ci:chrome": "yarn e2e:storybook:ci --browser=chrome","e2e:storybook:ci:firefox": "yarn e2e:storybook:ci --browser=firefox"

这是我的.gitlab-ci.yml(仅限e2e舞台部分):

E2E Main-Web - Chrome:
  stage: e2e
  script:
    - yarn e2e:ci:chrome

E2E Main-Web - Firefox:
  stage: e2e
  script:
    - yarn e2e:ci:firefox

E2E Storybook - Chrome:
  stage: e2e
  script:
    - yarn e2e:storybook:ci:chrome

E2E Storybook - Firefox:
  stage: e2e
  script:
    - yarn e2e:storybook:ci:firefox

我不确定这是怎么回事。我尝试了很多配置,标志,解决方案(甚至在Gitlab上并行化),但总是有问题...

我当然将cypress.io > Project Settings > Parallelization > Run Completion Delay设置为60s

解决方法

我认为答案在于您共享的赛普拉斯错误:

您通过了--parallel标志,但我们并未跨测试并行化 不同的环境。

您将触发两个并行运行,每个并行运行会设置两个浏览器。如错误所言,这是不期望的-每次并行运行都应该只有一个 浏览器。

在这种情况下,解决方案很简单:只需配置四个组,每个测试和浏览器类型一个即可。

这是这样的样子:

"e2e:ci": "nx e2e main-e2e --prod --headless --parallel --record --key $CYPRESS_RECORD_KEY --ci-build-id $CI_ID -- --parallel","e2e:ci:chrome": "yarn e2e:ci --browser=chrome --group 'MainWeb Chrome' ","e2e:ci:firefox": "yarn e2e:ci --browser=firefox --group 'MainWeb Firefox' ","e2e:storybook:ci": "nx e2e storybook-e2e --prod --headless --parallel --record --key $CYPRESS_RECORD_KEY --ci-build-id $CI_ID -- --parallel","e2e:storybook:ci:chrome": "yarn e2e:storybook:ci --browser=chrome --group 'Storybook Chrome'","e2e:storybook:ci:firefox": "yarn e2e:storybook:ci --browser=firefox --group 'Storybook Firefox'"