当我在 Cypress 中有多个配置文件时,如何调用我的 baseUrl?

mlr*_*uez 3 typescript cypress cypress-configuration

我有一个赛普拉斯框架,我正在其中测试用户页面(他们可以在其中与页面交互,下载文件,更新他们的个人资料等),以及该用户页面的管理页面(单独登录,实际上可以作为管理员,修改用户页面中的内容)。因此,我有三个配置文件:

  1. cypress.config-admin.ts,其中我有管理页面的 baseUrl(如www.mypage.admin.com)。我在文件中传递 --config-file 标记package.json以进行无头测试。
  2. cypress.config-user.ts我有用户页面的 baseUrl ( www.mypage.com)。我在文件中传递 --config-file 标记package.json以进行无头测试。
  3. cypress-config.ts,我用它通过赛普拉斯仪表板手动运行测试。

有时我需要在同一个测试用例中使用两个 URL(以管理员身份执行某些操作,以用户身份进行验证)。

我的问题是,当我使用 时Cypress.config().baseUrl,它只会显示 上的值cypress.config.ts。我已经尝试了多种方法,但还没有找到在adminuser配置文件上调用 baseUrl 的方法。

https://docs.cypress.io/api/cypress-api/config似乎建议我可以传递配置文件的名称,但我无法做到这一点=/

有任何想法吗?

Lol*_*ola 5

您将各种定义baseUrl为 env 条目,然后根据需要在测试中设置它们。

这为您提供了单个配置,但可以访问多个版本的baseUrl(假设这就是您在各个配置版本中更改的所有内容)。

赛普拉斯.config.js

const { defineConfig } = require('cypress')

module.exports = defineConfig({
  e2e: {
    baseUrl: 'http://localhost:1234',   // default
  },
  env: {
    userBaseUrl: 'www.mypage.com',
    adminBaseUrl: 'www.mypage.admin.com',
  },
})
Run Code Online (Sandbox Code Playgroud)

测试:

it('tests with the admin page', 
  {baseUrl: Cypress.env('adminBaseUrl')},   // per-test configuration

  () => {
    const userBaseUrl = Cypress.env('userBaseUrl')    // access urls for test
    const adminBaseUrl = Cypress.env('adminBaseUrl')  

    // or configure on the fly
    Cypress.config('baseUrl', adminBaseUrl)
    cy.visit('/')                           // goes to adminBaseUrl

    // or use the env setting directly
    cy.visit(Cypress.env('adminBaseUrl'))

    ...
Run Code Online (Sandbox Code Playgroud)