设置柏树不同的环境,当我有不同的baseUrl和apiUrl在所有他们



所以我一直在本地主机上设置我的测试,但现在我想将它们设置为在几个不同的环境中运行,但在所有这些环境中,我都有一个单独的baseUrl和apiUrl。dev有:http://base.url.com和api:http://base.url.com/apiprod has:https://prod.url.comand api:https://prod-api.url.com/v1

我已经在这里阅读了文档和一些帖子(尽管其中很多都来自cypress v10之前),但我无法决定什么是最好的方法。我倾向于创建不同的配置文件(cypress-dev.config)。ts, cypress-prod.config。

e2e: { 
baseUrl: 'http://base.url.com', 
env: { 
apiURl: '..'  
}}

创建新的npm脚本,其中我设置cypress在特定环境中运行时使用正确的配置文件。

我考虑过使用一个配置文件,但是我不知道如何准确地做到这一点。

e2e: {    env: { 
development: { 
baseUrl:'baseURlDev',
apiURl: 'apiUrlDev'
},
production: {
baseUrl:'baseURlProd',
apiURl: 'apiUrlProd'
},
staging: {
baseUrl:'baseURlStag'
apiURl: 'apiUrlStag'   } 
}}

和如何使用这是我的柏树代码。Cypress.env(">类型的环境.baseUrl")? ?这一点我不清楚。

或者可能有第三种我还没有考虑到的整洁的方法?

当Cypress v10将配置从cypress.json更改为cypress.config.js时,其中一个好处是允许在配置中使用javascript。

这意味着过去需要外部包的繁琐的东西(比如dotenv)不再需要了。

这就是我如何实现你的type-of-environment

cypress.config.js

const { defineConfig } = require("cypress");
module.exports = defineConfig({
e2e: {
setupNodeEvents(on, config) {
const envName = config.env['type-of-environment'] || 'development'
const envType = config.env[envName] 
config.baseUrl = envType.baseUrl;
config.env.apiUrl = envType.apiUrl;
return config
},
env: { 
development: { 
baseUrl:'http://baseURlDev',
apiUrl: 'http://apiUrlDev'
},
production: {
baseUrl:'http://baseURlProd',
apiUrl: 'http://apiUrlProd'
},
staging: {
baseUrl:'http://baseURlStag',
apiUrl: 'http://apiUrlStag'   
},
}
},
})

package.json

{
...
"scripts": {
"cy:open": "cypress open",         // defaults to development
"cy:prod": "cypress open --env type-of-environment=prod"
}
}

您可以使用as-a.as-a.ini中仅为您的本地设置多个环境设置,并运行命令来加载这些变量。

安装
npm install --global as-a

在repo中创建.as-a.ini文件

touch ~/.as-a.ini

.as-a.ini文件
[development]
baseUrl=https://dev.url.com
apiURl=https://dev.api.com
[production]
baseUrl=https://prod.url.com
apiURl=https://prod.api.com

然后你可以使用这样的运行命令as-a [environment] npx cypress open

// open with development variables
as-a development npx cypress open

最新更新