Reputation: 379
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
Upvotes: 7
Views: 33533
Reputation: 480
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
}
Upvotes: 1
Reputation: 31904
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')
Upvotes: 7
Reputation: 18650
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
Upvotes: 7