How to get current date using cy.clock()
Olivia Zamora
How can i get the date in format dd/mm/yyyy using cy.clock() and put the date in a textfield.. I have seen most examples are getting the timestamp but i dont need the time. Just need the current day date.
I do not want to use custom command here. Thank you
13 Answers
The cy.clock() is about controlling the perceived date of the app.
From the examples,
Let the test run as at a certain date
const now = new Date(2017, 3, 14).getTime() // April 14, 2017 timestamp
cy.clock(now)
cy.visit('/index.html')
cy.get('#date').contains('2017-04-14') Typing into a field with a certain format
If you want to .type() a particular date string, convert with .toLocaleDateString()
const d = new Date() // current date
// or
const d = new Date(2017, 3, 14) // specific date
cy.get('input').type(d.toLocaleDateString('en-GB')) // type in as 'dd/mm/yyyy'Combining the two, e.g testing validation
// Set clock to a specific date
const now = new Date(2017, 3, 14).getTime() // April 14, 2017 timestamp
cy.clock(now)
cy.visit('/index.html')
// Type in an earlier date
const d = new Date(2017, 3, 13)
cy.get('input').type(d.toLocaleDateString('en-GB')) .blur() // fire validation .should('contain', 'Error: Date entered must be a future date') You can use day.js to get the current date and format it accordingly.
const dayjs = require('dayjs')
//In test
cy.log(dayjs().format('DD/MM/YYYY')) //Prints todays date 30/09/2021
cy.get('textfield').type(dayjs().format('DD/MM/YYYY')) //input today's date in DD/MM/YYYY format I stumbled of this thread because I was searching for a way to retrieve the "current date" in the test. So, for other people who are searching for this: in another thread I found the answer:
cy.window().then((win) => { const newDate = new Date(win.Date()); // do something usefull with the date
} 1