最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - How to get current date using cy.clock() - Stack Overflow

programmeradmin0浏览0评论

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

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

Share Improve this question asked Sep 30, 2021 at 16:41 ZombiePieZombiePie 3792 gold badges6 silver badges18 bronze badges 1
  • 1 Cypress recommends using day.js to get the current date. More information and an example can be found in their recipe. – agoff Commented Sep 30, 2021 at 16:57
Add a comment  | 

3 Answers 3

Reset to default 7

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

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

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
}
发布评论

评论列表(0)

  1. 暂无评论