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

如何通过环境变量让Cypress指定测试仅在CI环境运行?

Cypress实现测试仅在CI环境运行的方法

问题背景

Cypress官方文档中关于测试启用/禁用的章节提到以下特性:

  • 在测试名称后追加.skip以排除该测试
  • 在测试名称后追加.only以排除测试套件中的其他所有测试

希望实现某个测试仅在CI流水线中运行,本地运行时自动排除,计划通过识别CI环境变量动态控制测试启用/禁用,询问Cypress是否支持该功能。

解决方案

Cypress完全支持这种动态控制需求,以下是几种实用实现方式:

1. 利用Cypress内置的CI检测

Cypress会自动识别运行环境,在CI流水线中Cypress.config('isCI')返回true,本地运行时返回false,可直接基于此判断:

it('仅在CI环境执行的测试', () => {
  if (!Cypress.config('isCI')) {
    this.skip(); // 本地环境跳过该测试
  }
  // CI环境执行的测试逻辑
  cy.visit('/dashboard');
  cy.get('.stats-card').should('be.visible');
});

2. 自定义环境变量控制

如果需要更灵活的触发条件,可自定义环境变量:

  • CI流水线中启动Cypress的命令示例:CYPRESS_RUN_CI_ONLY=true npx cypress run
  • 测试代码中判断并控制:
it('仅CI环境执行的测试', () => {
  if (Cypress.env('RUN_CI_ONLY') !== 'true') {
    cy.log('本地环境跳过该测试');
    this.skip();
  }
  // 编写CI专属测试步骤
});

3. 批量管理CI专属测试文件

若有大量仅CI运行的测试,可将它们放在单独目录(如cypress/e2e/ci-only),通过配置文件动态过滤:

// cypress.config.js
const { defineConfig } = require('cypress');

module.exports = defineConfig({
  e2e: {
    specPattern: Cypress.config('isCI')
      ? ['cypress/e2e/**/*.cy.js', 'cypress/e2e/ci-only/**/*.cy.js']
      : ['cypress/e2e/**/*.cy.js', '!cypress/e2e/ci-only/**/*.cy.js']
  }
});

内容的提问来源于stack exchange,提问作者Dónal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 15:04:58