问题描述
我有一个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有一个-第二个浏览器在过滤器中可见,但它们的结果为空-请参阅屏幕截图。
我尝试了https://docs.cypress.io/guides/guides/parallelization.html中的一些标志和配置
不幸的是,无论我尝试什么,总是会出现类似以下的错误:
您通过了--parallel标志,但我们并未跨测试并行化 不同的环境。本机发送不同的环境 参数,而不是启动此并行运行的第一台计算机。的 现有的运行是:https://dashboard.cypress.io/projects/qwerty/runs/44 为了以并行模式运行,每台计算机必须发送相同的 环境参数,例如:
这些是我在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'"