使用 TypeScript 在 Cypress 中获取环境变量
Picking up Environment Variables in Cypress with TypeScript
我正在努力将测试添加到主要使用 TypeScript 的预先存在的 monorepo。所有其他测试都在 TypeScript 中进行,对于我来说,我希望使用 Cypress。
我需要在两个不同的环境中 运行 它们并且需要了解为什么我的环境变量没有被获取。
这可能是很明显的事情,但我是 TS 和 JS 的新手,所以希望得到一些温和的指导。
直接在 /config
下,我有两个环境的 dev.json
和 prod.json
:
{
"env": {
"ENV": "dev",
"BASE_URL": "http://example.com",
}
}
我的plugins/index.ts
如下:
const fs = require('fs-extra');
const path = require('path');
export default (on: Cypress.PluginEvents, _config: Cypress.PluginConfigOptions): void => {
on('task', {
log(message) {
console.log(message)
return null
}
});
on('task', {
table(message) {
console.table(message);
return null;
},
});
/**
* @type {Cypress.PluginConfig}
*/
function getConfigurationByFile(file) {
const pathToConfigFile = path.resolve('config', `${file}.json`
);
return fs.readJson(pathToConfigFile);
}
/**
* @type {Cypress.PluginConfig}
*/
module.exports = (on, config) => {
const file = config.env.configFile || 'dev';
return getConfigurationByFile(file);
};
}
测试规范中的使用示例:
beforeEach(()=> {
cy.login(Cypress.env('BASE_URL'),
})
package.json
中的示例脚本
"test:headless": "npm cypress run --env 'configFile=%ENV%",
运行 从 CLI 为:ENV=dev npm run test:headless
这无法从 dev.json
中提取 url
同样,我确定它有些愚蠢,但不胜感激。
试试 CYPRESS_
前缀 Option #3: CYPRESS_*
Any OS-level environment variable on your machine that starts with either CYPRESS_ or cypress_ will automatically be added to Cypress' environment variables and made available to you.
CYPRESS_configFile=dev npm run test:headless
...
const file = config.env.configFile || 'dev';
我正在努力将测试添加到主要使用 TypeScript 的预先存在的 monorepo。所有其他测试都在 TypeScript 中进行,对于我来说,我希望使用 Cypress。
我需要在两个不同的环境中 运行 它们并且需要了解为什么我的环境变量没有被获取。
这可能是很明显的事情,但我是 TS 和 JS 的新手,所以希望得到一些温和的指导。
直接在 /config
下,我有两个环境的 dev.json
和 prod.json
:
{
"env": {
"ENV": "dev",
"BASE_URL": "http://example.com",
}
}
我的plugins/index.ts
如下:
const fs = require('fs-extra');
const path = require('path');
export default (on: Cypress.PluginEvents, _config: Cypress.PluginConfigOptions): void => {
on('task', {
log(message) {
console.log(message)
return null
}
});
on('task', {
table(message) {
console.table(message);
return null;
},
});
/**
* @type {Cypress.PluginConfig}
*/
function getConfigurationByFile(file) {
const pathToConfigFile = path.resolve('config', `${file}.json`
);
return fs.readJson(pathToConfigFile);
}
/**
* @type {Cypress.PluginConfig}
*/
module.exports = (on, config) => {
const file = config.env.configFile || 'dev';
return getConfigurationByFile(file);
};
}
测试规范中的使用示例:
beforeEach(()=> {
cy.login(Cypress.env('BASE_URL'),
})
package.json
"test:headless": "npm cypress run --env 'configFile=%ENV%",
运行 从 CLI 为:ENV=dev npm run test:headless
这无法从 dev.json
同样,我确定它有些愚蠢,但不胜感激。
试试 CYPRESS_
前缀 Option #3: CYPRESS_*
Any OS-level environment variable on your machine that starts with either CYPRESS_ or cypress_ will automatically be added to Cypress' environment variables and made available to you.
CYPRESS_configFile=dev npm run test:headless
...
const file = config.env.configFile || 'dev';