Cypress项目package.json多环境多浏览器测试脚本优化问询
核心优化思路
将原脚本中写死的环境、浏览器、测试套件标签三个变量抽离为动态参数,公共执行逻辑统一维护,从根源避免重复代码。
方案1:使用npm原生动态参数(无需额外编码,改造成本最低)
步骤1:简化package.json的scripts配置
{ "scripts": { "clean:allure": "rm -R -f cypress/reports && rm -R -f cypress/screenshots && rm -R -f cypress/videos", "generate-allure-report": "allure generate cypress/reports/allure-results --clean -o cypress/reports/allure-report", "scripts:run": "cypress-tags run -e TAGS=$TAGS,configFile=$ENV --browser $BROWSER", "scripts:run:single": "cypress run --env configFile=$ENV --browser $BROWSER --spec cypress/integration/UI/test/test1.feature", "test": "npm run clean:allure && (TAGS=$TAGS ENV=$ENV BROWSER=$BROWSER npm run ${RUN_SCRIPT:-scripts:run} || true) && npm run generate-allure-report" } }
注意:JSON 不支持注释,实际配置时请删除说明类注释内容。如果需要兼容Windows系统,可安装
cross-env依赖(npm i cross-env -D),在变量前增加cross-env前缀即可。
步骤2:执行测试时传入对应参数即可
不同场景的执行命令示例:
- 执行Stage环境、Chrome浏览器、回归测试套:
TAGS='@reg' ENV=stage BROWSER=chrome npm run test - 执行Prod环境、Edge浏览器、冒烟测试套:
TAGS='@smoke' ENV=prod BROWSER=edge npm run test - 执行Stage环境、Firefox浏览器、全量测试套:
TAGS='@reg or @smoke' ENV=stage BROWSER=firefox npm run test - 执行Stage环境、Chrome浏览器、单文件test1.feature:
ENV=stage BROWSER=chrome RUN_SCRIPT=scripts:run:single npm run test
可选:增加常用场景别名
如果不想每次执行都输入长串参数,可以在scripts中增加对应别名,仅需一行配置,无冗余逻辑:
"test:stage:reg:chrome": "TAGS='@reg' ENV=stage BROWSER=chrome npm run test", "test:prod:smoke:edge": "TAGS='@smoke' ENV=prod BROWSER=edge npm run test"
需要执行对应场景时直接运行npm run test:stage:reg:chrome即可。
方案2:封装Node.js执行脚本(适合更复杂的定制场景)
如果后续需要扩展更多自定义逻辑(比如并行执行、结果上报、多环境调度等),可以编写独立的run-test.js脚本,通过yargs/commander解析入参,直接调用Cypress Node API执行测试,完成后调用Allure生成报告,灵活性更高。
内容的提问来源于stack exchange,提问作者bucky barns
相关产品推荐
相关产品推荐

