typescript - Hur anropar jag min baseUrl när jag har flera konfigurationsfiler i Cypress?


Jag har ett Cypress-ramverk där jag testar en användarsida (där de kan interagera med sidan, ladda ner filer, uppdatera sin profil, etc.), och en administratörssida för den användarsidan (separat inloggning, och kan faktiskt, som administratör, ändra vad som finns på användarsidan). Av den anledningen har jag tre konfigurationsfiler:

  1. cypress.config-admin.ts, där jag har baseUrl för administrationssidan (som i www.mypage.admin.com). Jag skickar --config-file-flaggan i package.json-filen för headless-tester.
  2. cypress.config-user.ts där jag har baseUrl för användarsidan (www.mypage.com). Jag skickar --config-file-flaggan i package.json-filen för headless-tester.
  3. cypress-config.ts, som jag använder för att köra testerna manuellt via Cypress-instrumentpanelen.

Det finns tillfällen då jag behöver använda båda URL:erna i samma testfall (göra något som administratör, verifiera som användare).

Mitt problem är att när jag använder Cypress.config().baseUrl så hämtar den bara värdena från cypress.config.ts. Jag har försökt flera saker, men jag har inte hittat ett sätt att anropa baseUrl i admin eller user konfigurationsfilerna.

https://docs.cypress.io/api/cypress-api/config verkar föreslå att jag kan ange namnet på konfigurationsfilen, men jag har inte lyckats få det att fungera =/

Några idéer?

Svar #1

Du definierar de olika baseUrl som miljöposter och ställer sedan in dem i testet efter behov.

Detta ger dig en enskild konfiguration men tillgång till flera versioner av baseUrl (förutsatt att det är allt du ändrar i de olika konfigurationsversionerna).

cypress.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',
  },
})

Test:

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'))

    ...

Relaterade artiklar