【发布时间】:2021-05-10 20:46:54
【问题描述】:
我正在构建一个 Next.js 应用程序并使用 Cypress 编写我的测试。我在本地使用.env.local file 配置环境变量。在 CI 管道中,它们是正常定义的。
我正在尝试在 Cypress 中编写一个自定义命令,用于加密 cypress/support/command.ts 中的会话。
import { encryptSession } from 'utils/sessions';
Cypress.Commands.add(
'loginWithCookie',
({
issuer = 'some-issuer',
publicAddress = 'some-address',
email = 'some-mail',
} = {}) => {
const session = { issuer, publicAddress, email };
return encryptSession(session).then(token => {
cy.setCookie('my-session-token', token);
return session;
});
},
);
当此命令运行时,它会失败,因为 encryptSession 使用了 TOKEN_SECRET 环境变量,赛普拉斯不会加载。
import Iron from '@hapi/iron';
const TOKEN_SECRET = process.env.TOKEN_SECRET || '';
export function encryptSession(session: Record<string, unknown>) {
return Iron.seal(session, TOKEN_SECRET, Iron.defaults);
}
如何让赛普拉斯从该文件加载环境变量,如果它存在(= 仅在本地,因为变量是在 CI 中定义的 - 它应该正常检测管道中的其他变量,因此相当于检测export MY_VAR=foo) 设置的变量?
【问题讨论】:
标签: javascript environment-variables cypress dotenv add-custom-command