javascript - Har svårt att ha DayJs tillgängligt för alla tester i cypress


Jag startar för närvarande ett nytt Cypress-projekt, applikationen att testa är ganska "kalendercentrerad" och jag kommer att behöva leka mycket med datum.

Mitt problem är att jag inte kan få DayJs tillgängligt för hela projektet utan att behöva importera det i varje testfil.

Till exempel, i en test.spec.ts fungerar detta

import dayjs = require('dayjs');
    
describe('Some suite', () => {       
   it('Some Test', () => {
      // some stuff
      const myDate = dayjs('11-11-2022', 'dd-MM-YYYY' );
      // other stuff
   })
})

Men när jag gör detta i support/index.ts

import dayjs = require('dayjs')
    
declare namespace Cypress {        
    interface Cypress {
        dayjs: dayjs.Dayjs;
    }
}

och sedan detta i min specifikation

describe('Some suite', () => {       
    it('Some Test', () => {
       // some stuff
       const myDate = Cypress.dayjs('11-11-2022', 'dd-MM-YYYY' );
       // other stuff
    })
})

det står

Cypress.dayjs är inte en funktion

Några idéer på hur jag skulle kunna få detta att fungera? Tack för hjälpen

Svar #1

I /cypress/support/index.ts, lägg till dayjs till den globala Cypress (precis som momentjs brukade inkluderas).

/cypress/support/index.ts

const dayjs = require('dayjs')

declare namespace Cypress {        
  interface Cypress {
    dayjs: dayjs.Dayjs;
  }
}

Cypress.dayjs = dayjs

Nu const myDate=Cypress.dayjs('11-11-2022', 'dd-MM-YYYY') borde fungera.

Relaterade artiklar