Как я могу указать, какой файл .env использовать для моего сервера разработки при запуске тестов кипариса? Это переменные окружения системного уровня, а не переменные среды тестирования кипариса.
У меня есть файл env, который я хочу использовать для своего сервера при запуске тестов кипариса: .env.local.cypress
В моем файле package.json у меня есть:
"dev-server": "nodemon --delay 5ms -e ts,tsx --watch ./src -x ts-node --transpile-only ./src/server",
"cy:run": "cypress run",
"test:e2e:local": "dotenv -e .env.local.cypress -- start-server-and-test dev-server http://localhost:3000 cy:run"
Когда я запускаю test:e2e:local
, сервер запускается с правильными переменными env, но тесты — нет. Есть идеи, почему?
Вы можете выбрать любые глобальные переменные env в cypress.config.js
несколькими способами.
Через dotenv CLI (согласно вашему примеру)
const { defineConfig } = require("cypress");
module.exports = defineConfig({
e2e: {
setupNodeEvents(on, config) {
config.env = {
...process.env, // add all process env var here
...config.env // plus any command line overrides
}
return config
},
},
})
Это дает вам все, что в настоящее время определено на системном уровне, включая те, которые добавляются через интерфейс командной строки dotenv.
Вы можете просто добавить определенные вары:
config.env = {
abc: process.env.abc,
...config.env
}
Через локальную установку dotenv
Или вы можете использовать пакет dotenv
локально, чтобы загрузить только определенный файл env внутри cypress.config.js
npm install dotenv --save
const { defineConfig } = require("cypress");
const local = require('dotenv').config({ path: '.env.local.cypress' })
module.exports = defineConfig({
e2e: {
setupNodeEvents(on, config) {
config.env = {
...local.parsed,
...config.env
}
return config
},
},
})