You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过GitHub Actions环境变量配置Cypress测试多环境BaseUrl

解决Cypress环境变量覆盖与分支环境适配问题

问题背景

我有一套Cypress测试用例,仅一个遗留测试未使用统一BaseUrl,它的before hook硬编码访问dev环境地址:

cy.visit('http://e2etest.dev.my-company.com:8081/company/sign-in')

导致staging分支跑测试时仍访问dev环境。我尝试通过CYPRESS_ENV变量切换地址:

if (Cypress.env('CYPRESS_ENV') === 'test') {
  cy.visit('http://e2etest.dev.my-company.com:8081/company/sign-in');
} else {
  cy.visit('http://e2etest.staging.my-company.com:8081/company/sign-in');
}

CI中已根据分支设置CF_WORKER_ENV和CYPRESS_ENV,变量打印显示配置正确,但staging分支测试仍读取到CYPRESS_ENV=test,排查发现cypress.config.ts里硬编码了CYPRESS_ENV: 'test'。若删除该配置,本地运行时CYPRESS_ENV为undefined,测试会走staging逻辑。

需求目标:

  • 本地运行时CYPRESS_ENV默认设为test
  • CI中非staging分支使用test环境
  • CI中staging分支使用staging环境

解决方案

1. 修改Cypress配置,设置环境变量默认值

修改cypress.config.ts中的env配置,让CYPRESS_ENV优先读取系统环境变量,无值时默认设为test。这样本地运行自动用test,CI传递的环境变量能直接覆盖默认值:

import { defineConfig } from 'cypress';

export default defineConfig({
  // ... 其他原有配置
  env: {
    COMPANY_API_BASE_URL: 'api.staging.my-company.com',
    CYPRESS_ENV: process.env.CYPRESS_ENV || 'test', // 替换原硬编码值
  },
  // ... 其他原有配置
});

2. 确认CI环境变量传递有效性

当前CI的cypress-test任务已在两个位置设置CYPRESS_ENV:

  • 任务级env中:CYPRESS_ENV: ${{ needs.workflow-info.outputs.cf-worker-env }}
  • Cypress action的env中:CYPRESS_ENV: ${{ needs.workflow-info.outputs.cf-worker-env }}

只需确保workflow-info步骤的分支判断逻辑正确:

  • staging分支输出cf-worker-env: staging
  • 其他分支输出cf-worker-env: test

当前CI的分支判断代码已满足该逻辑,无需修改。

3. 优化遗留测试的地址逻辑(可选)

为减少硬编码URL,可通过环境变量动态拼接地址,提升可维护性:

const signInDomain = Cypress.env('CYPRESS_ENV') === 'test' 
  ? 'e2etest.dev.my-company.com:8081' 
  : 'e2etest.staging.my-company.com:8081';
cy.visit(`http://${signInDomain}/company/sign-in`);

更优方案是将域名存入Cypress环境变量(比如在cypress.config.ts或CI中设置SIGN_IN_BASE_URL),直接调用:

cy.visit(`${Cypress.env('SIGN_IN_BASE_URL')}/company/sign-in`);

内容的提问来源于stack exchange,提问作者Pix81

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 05:25:55