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

如何在cypress.config.js中使用Jenkins环境变量执行Cypress测试

直接在Cypress配置文件中使用Jenkins环境变量的方案

完全可以直接在cypress.config.js中读取Jenkins的环境变量来替代硬编码的账号密码,下面是具体实现步骤:

1. 在Jenkins中注入账号密码为环境变量

不管是用全局环境变量还是withCredentials插件,只要把账号密码暴露为Jenkins的环境变量即可。比如用withCredentials的示例Jenkinsfile片段:

pipeline {
  agent any
  stages {
    stage('Run Cypress Tests') {
      steps {
        withCredentials([usernamePassword(
          credentialsId: 'test-account',
          usernameVariable: 'TEST_USERNAME',
          passwordVariable: 'TEST_PASSWORD'
        )]) {
          // 这里运行Cypress测试的命令或容器
        }
      }
    }
  }
}

上面的代码会把凭据中的账号密码分别注入为TEST_USERNAME和TEST_PASSWORD两个环境变量。

2. 在cypress.config.js中读取环境变量

在Cypress配置文件里,直接通过Node.js的process.env对象读取Jenkins传递过来的环境变量,有两种方式:

方式一:直接在env配置项中定义

const { defineConfig } = require('cypress')

module.exports = defineConfig({
  e2e: {
    baseUrl: '你的测试域名',
    env: {
      username: process.env.TEST_USERNAME,
      password: process.env.TEST_PASSWORD
    }
  }
})

方式二:在setupNodeEvents中动态注入

如果需要更灵活的配置逻辑,可以在事件钩子中添加环境变量:

const { defineConfig } = require('cypress')

module.exports = defineConfig({
  e2e: {
    setupNodeEvents(on, config) {
      // 从Jenkins环境变量中读取并添加到Cypress配置
      config.env.username = process.env.TEST_USERNAME
      config.env.password = process.env.TEST_PASSWORD
      return config
    }
  }
})

3. 确保环境变量传递到Cypress容器

因为你使用的是自定义的cypress/included:12.0.0镜像,在Jenkins启动容器时,必须把Jenkins的环境变量传递到容器内部。比如用Docker Pipeline插件的示例:

agent {
  docker {
    image '你的自定义cypress/included:12.0.0镜像地址'
    args '-v /e2e:/e2e' // 挂载本地npm模块目录
    environment {
      TEST_USERNAME = "$TEST_USERNAME"
      TEST_PASSWORD = "$TEST_PASSWORD"
    }
  }
}

这样容器内的Cypress就能读取到这两个环境变量了。

4. 在测试用例中使用变量

登录测试用例里直接通过Cypress.env()获取变量,配合session复用:

it('完成登录并复用session', () => {
  cy.session('user-login-session', () => {
    cy.visit('/login')
    cy.get('#username-input').type(Cypress.env('username'))
    // 密码输入时隐藏日志,避免敏感信息泄露
    cy.get('#password-input').type(Cypress.env('password'), { log: false })
    cy.get('#login-btn').click()
    // 验证登录成功的断言
    cy.contains('欢迎登录').should('be.visible')
  })
})

// 后续测试用例自动复用session
it('访问用户中心', () => {
  cy.visit('/user-center')
  cy.contains('用户信息').should('be.visible')
})

注意事项

  • 环境变量名称大小写敏感,确保Jenkins和Cypress配置中的变量名完全一致
  • 用withCredentials时,插件默认会屏蔽密码的日志输出,避免敏感信息泄露
  • 容器启动时必须显式传递环境变量,否则Cypress无法读取到Jenkins的环境变量

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 11:37:33