Cypress无法从cypress.env.json文件中找到环境变量

4

我有以下文件夹结构:

tests
  cypress.env.json
  cypress
    fixtures
    integration
      test
        test.spec.ts
    plugins
    support

我错过了关于不必要文件的问题。
所以我的cypress.env.json看起来像这样:

{
  "loginTestStage": {
    "admin": {
      "username": "value1",
      "password": "value2"
    },
    "user": {
      "username": "value3",
      "password": "value4"
    }
  },
  "vatid" : {
    "x1": "value5",
    "x2": "value6",
    "x3": "value7",
    "x4": "value8"
  }
}

现在我尝试在test.spec.ts文件中访问环境变量:

describe('Login', () => {
    const usernameInput = '[formcontrolname="username"]';
    const passwordInput = '[formcontrolname="password"]';
    beforeEach(() => {
        cy.visit(url)
    })

    it('Allow users with valid credentials to login', () => {
        const { username, password } = Cypress.env('loginTestStage').admin;
        cy.get(usernameInput).type(username);
        cy.get(passwordInput).type(password);
        ...

    })
})

当我尝试运行测试时,总是会出现这个错误:

Cannot read properties of undefined (reading 'admin')

因此,无法找到Env变量的值。 如何解决这个问题?
提前致谢

2个回答

4

如果将 cypress.env.json 移动到项目根目录,它将能正常工作。

cypress.config.js (v10) 或 cypress.json (v9) 一样,此 env 文件没有配置路径,假定它位于项目根目录。


项目根目录就在 cypress.json 文件所在的同一级别。请问项目根目录具体在哪里? - LennartPfeiler
你展示的代码在tests文件夹中。当我将其移动到上一级时,Cypress.env('loginTestStage').admin被正确加载。 - Fody

0

为了使Cypress 12.17.2上的Cypress.env()正常工作,我必须将我的环境变量放入cypress.config.ts文件中(该文件位于项目根目录下,而不是Cypress目录的根目录下)。

参见文档:https://docs.cypress.io/api/cypress-api/env#No-Arguments

import { defineConfig } from 'cypress'

export default defineConfig({
  env: {
    foo: 'bar',
    baz: 'quux',
  },
})

1
关于 cypress.env.json 的更多信息可以在这里找到 选项 #2: cypress.env.json - Feldeisen
谢谢@Feldeisen,我实际上已经尝试过了,但在我的情况下没有起作用。也许文件不在正确的层次结构中,但我移动了它,却无法使其工作。 - MikhailRatner
放心,它确实有效 - 现在也适用于Cypress 13。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接