Merge pull request #16622 from netchampfaris/less-flaky-date-test

test: less flaky date control test
This commit is contained in:
Faris Ansari 2022-04-20 14:10:55 +05:30 committed by GitHub
commit 620a944104
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 64 additions and 27 deletions

View file

@ -1,23 +1,27 @@
context('Date Control', () => {
before(() => {
cy.login();
cy.visit('/app/doctype');
return cy.window().its('frappe').then(frappe => {
return frappe.xcall('frappe.tests.ui_test_helpers.create_doctype', {
name: 'Test Date Control',
fields: [
{
"label": "Date",
"fieldname": "date",
"fieldtype": "Date",
"in_list_view": 1
},
]
});
});
cy.visit('/app');
});
function get_dialog(date_field_options) {
return cy.dialog({
title: 'Date',
fields: [{
"label": "Date",
"fieldname": "date",
"fieldtype": "Date",
"in_list_view": 1,
...date_field_options
}]
});
}
it('Selecting a date from the datepicker', () => {
cy.new_form('Test Date Control');
cy.clear_dialogs();
cy.clear_datepickers();
get_dialog().as('dialog');
cy.get_field('date', 'Date').click();
cy.get('.datepicker--nav-title').click();
cy.get('.datepicker--nav-title').click({force: true});
@ -28,12 +32,16 @@ context('Date Control', () => {
cy.get('.datepicker--months > .datepicker--cells > .datepicker--cell[data-month=0]').click();
cy.get('.datepicker--days > .datepicker--cells > .datepicker--cell[data-date=15]').click();
//Verifying if the selected date is displayed in the date field
cy.get_field('date', 'Date').should('have.value', '01-15-2020');
// Verify if the selected date is set the date field
cy.window().its('cur_dialog.fields_dict.date.value').should('be.equal', '2020-01-15');
});
it('Checking next and previous button', () => {
cy.get_field('date', 'Date').click();
cy.clear_dialogs();
cy.clear_datepickers();
get_dialog({ default: '2020-01-15' }).as('dialog');
cy.get_field('date', 'Date').click();
//Clicking on the next button in the datepicker
cy.get('.datepicker--nav-action[data-action=next]').click();
@ -42,7 +50,7 @@ context('Date Control', () => {
cy.get('.datepicker--cell[data-date=15]').click({force: true});
//Verifying if the selected date has been displayed in the date field
cy.get_field('date', 'Date').should('have.value', '02-15-2020');
cy.window().its('cur_dialog.fields_dict.date.value').should('be.equal', '2020-02-15');
cy.wait(500);
cy.get_field('date', 'Date').click();
@ -53,19 +61,22 @@ context('Date Control', () => {
cy.get('.datepicker--cell[data-date=15]').click({force: true});
//Verifying if the selected date has been displayed in the date field
cy.get_field('date', 'Date').should('have.value', '01-15-2020');
cy.window().its('cur_dialog.fields_dict.date.value').should('be.equal', '2020-01-15');
});
it('Clicking on "Today" button gives todays date', () => {
cy.get_field('date', 'Date').click();
cy.clear_dialogs();
cy.clear_datepickers();
get_dialog().as('dialog');
cy.get_field('date', 'Date').click();
//Clicking on "Today" button
cy.get('.datepicker--button').click();
//Picking up the todays date
const todays_date = Cypress.moment().format('MM-DD-YYYY');
//Verifying if clicking on "Today" button matches today's date
cy.get_field('date', 'Date').should('have.value', todays_date);
cy.window().then(win => {
expect(win.cur_dialog.fields_dict.date.value).to.be.equal(win.frappe.datetime.get_today());
});
});
});

View file

@ -241,8 +241,20 @@ Cypress.Commands.add('clear_cache', () => {
});
Cypress.Commands.add('dialog', opts => {
return cy.window().then(win => {
var d = new win.frappe.ui.Dialog(opts);
return cy.window({ log: false }).its('frappe', { log: false }).then(frappe => {
Cypress.log({
name: "dialog",
displayName: "dialog",
message: 'frappe.ui.Dialog',
consoleProps: () => {
return {
options: opts,
dialog: d
}
}
});
var d = new frappe.ui.Dialog(opts);
d.show();
return d;
});
@ -258,6 +270,20 @@ Cypress.Commands.add('hide_dialog', () => {
cy.get('.modal:visible').should('not.exist');
});
Cypress.Commands.add('clear_dialogs', () => {
cy.window().then((win) => {
win.$('.modal, .modal-backdrop').remove();
});
cy.get('.modal').should('not.exist');
});
Cypress.Commands.add('clear_datepickers', () => {
cy.window().then((win) => {
win.$('.datepicker').remove();
});
cy.get('.datepicker').should('not.exist');
});
Cypress.Commands.add('insert_doc', (doctype, args, ignore_duplicate) => {
return cy
.window()