如何基于标签分组Cypress测试并在CircleCI上按组并行执行?
配置CircleCI实现Cypress分组并行+组内串行
已配置的Cypress测试用例标签
测试用例已通过tags分组,同组用例存在数据依赖需串行执行:
it("Test1", { tags: ["Parallel", "Group1"] }, () => { cy.log("Test1"); }); it("Test2", { tags: ["Parallel", "Group2"] }, () => { cy.log("Test2"); }); it("Test3", { tags: ["Parallel", "Group1"] }, () => { cy.log("Test3"); }); it("Test4", { tags: ["Parallel", "Group2"] }, () => { cy.log("Test4"); });
预期执行逻辑
Parallel: 2 Machine 1: 串行执行Group1下所有测试用例 Machine 2: 串行执行Group2下所有测试用例
原CircleCI配置文件(circle.yml)
version: 2 workflows: version: 2 jobs: cypress-ci: parallelism: 1 docker: - image: "cypress/included:10.0.0" working_directory: ~/app steps: - checkout - restore_cache: keys: - node-deps-v1-{{ .Branch }}-{{ checksum "cypress-tests/yarn.lock" }} - run: name: Install Packages command: | cd cypress-tests npm install --legacy-peer-deps - save_cache: key: node-deps-v1-{{ .Branch }}-{{ checksum "cypress-tests/yarn.lock" }} paths: - ~/cypress-tests/.npm - run: name: Execute cypress command: | cd cypress-tests npm run --env grepTags="Parallel" --RECORD_KEY=${RECORD_KEY}
修改后的CircleCI配置
version: 2 workflows: version: 2 cypress-workflow: jobs: - cypress-ci jobs: cypress-ci: parallelism: 2 docker: - image: "cypress/included:10.0.0" working_directory: ~/app steps: - checkout - restore_cache: keys: - node-deps-v1-{{ .Branch }}-{{ checksum "cypress-tests/yarn.lock" }} - run: name: Install Packages command: | cd cypress-tests npm install --legacy-peer-deps - save_cache: key: node-deps-v1-{{ .Branch }}-{{ checksum "cypress-tests/yarn.lock" }} paths: - ~/cypress-tests/.npm - run: name: Execute cypress command: | cd cypress-tests # 根据CircleCI节点索引分配对应测试分组 if [ "$CIRCLE_NODE_INDEX" == 0 ]; then npm run --env grepTags="Parallel+Group1" --RECORD_KEY=${RECORD_KEY} else npm run --env grepTags="Parallel+Group2" --RECORD_KEY=${RECORD_KEY} fi
关键修改说明
- 将
parallelism设为2,启动两台并行执行的机器 - 利用CircleCI内置环境变量
CIRCLE_NODE_INDEX(取值0和1)区分不同机器 - 针对不同节点传递不同的
grepTags参数,让每台机器只执行对应分组的测试 - Cypress在单台机器上默认串行执行测试,自然满足同组用例串行的需求
内容的提问来源于stack exchange,提问作者Ajil Paul
相关产品推荐
相关产品推荐

