Search code examples
javascripttypescriptcypressdayjs

Struggling to have DayJs available for all tests in cypress


I'm currently starting a new Cypress project, the application to test is quite "calendar centered" and I'll have to play a lot with dates.

My issue is I can't get DayJs available for the whole project without having to import it in every spec files.

For instance, in a test.spec.ts, this is working

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

But when I do this in support/index.ts

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

and then this in my spec

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

it says

Cypress.dayjs is not a function

Any idea on how I could get this work? Thanks for the help


Solution

  • In /cypress/support/index.ts, add dayjs to the global Cypress (just like momentjs used to be included).

    /cypress/support/index.ts

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

    Now const myDate = Cypress.dayjs('11-11-2022', 'dd-MM-YYYY') should work.