From 845cb463de692494376868cb0ecd7e92414f57f8 Mon Sep 17 00:00:00 2001 From: Sean Perkins Date: Wed, 13 Jul 2022 17:12:13 -0400 Subject: [PATCH] test(angular): add timeouts to tabs navigation extras test (#25629) --- .../test/test-app/cypress/support/commands.js | 36 +++++++++---------- .../test/test-app/cypress/support/index.d.ts | 5 +++ angular/test/test-app/e2e/src/tabs.spec.ts | 6 ++-- 3 files changed, 26 insertions(+), 21 deletions(-) diff --git a/angular/test/test-app/cypress/support/commands.js b/angular/test/test-app/cypress/support/commands.js index 9e660c70d7..eed4f1768c 100644 --- a/angular/test/test-app/cypress/support/commands.js +++ b/angular/test/test-app/cypress/support/commands.js @@ -25,7 +25,7 @@ // Cypress.Commands.overwrite('visit', (originalFn, url, options) => { ... }) Cypress.Commands.add('ionSwipeToGoBack', (complete = false, selector = 'ion-router-outlet') => { - const increment = (complete) ? 60 : 25; + const increment = complete ? 60 : 25; cy.get(selector) .first() .trigger('mousedown', 0, 275, { which: 1, force: true }) @@ -37,18 +37,16 @@ Cypress.Commands.add('ionSwipeToGoBack', (complete = false, selector = 'ion-rout .wait(50) .trigger('mousemove', increment * 4, 275, { which: 1, force: true }) .wait(50) - .trigger('mouseup', increment * 4, 275, { which: 1, force: true }) + .trigger('mouseup', increment * 4, 275, { which: 1, force: true }); cy.wait(150); -}) +}); Cypress.Commands.add('testStack', (selector, expected) => { cy.document().then((doc) => { - const children = Array.from( - doc.querySelector(selector).children - ).map(el => el.tagName.toLowerCase()); + const children = Array.from(doc.querySelector(selector).children).map((el) => el.tagName.toLowerCase()); expect(children).to.deep.equal(expected); - }) -}) + }); +}); Cypress.Commands.add('testLifeCycle', (selector, expected) => { cy.get(`${selector} #ngOnInit`).invoke('text').should('equal', '1'); @@ -56,24 +54,26 @@ Cypress.Commands.add('testLifeCycle', (selector, expected) => { cy.get(`${selector} #ionViewDidEnter`).invoke('text').should('equal', expected.ionViewDidEnter.toString()); cy.get(`${selector} #ionViewWillLeave`).invoke('text').should('equal', expected.ionViewWillLeave.toString()); cy.get(`${selector} #ionViewDidLeave`).invoke('text').should('equal', expected.ionViewDidLeave.toString()); -}) +}); Cypress.Commands.add('ionPageVisible', (selector) => { cy.get(selector) .should('have.class', 'ion-page') .should('not.have.class', 'ion-page-hidden') .should('not.have.class', 'ion-page-invisible') - .should('have.length', 1) -}) + .should('have.length', 1); +}); Cypress.Commands.add('ionPageHidden', (selector) => { - cy.get(selector) - .should('have.class', 'ion-page') - .should('have.class', 'ion-page-hidden') - .should('have.length', 1) -}) + cy.get(selector).should('have.class', 'ion-page').should('have.class', 'ion-page-hidden').should('have.length', 1); +}); Cypress.Commands.add('ionPageDoesNotExist', (selector) => { - cy.get(selector) - .should('not.exist') + cy.get(selector).should('not.exist'); +}); + +Cypress.Commands.add('ionTabClick', (tabText) => { + // TODO: Figure out how to get rid of wait. It's a workaround for flakiness in CI. + cy.wait(250); + cy.contains('ion-tab-button', tabText).click({ force: true }); }); diff --git a/angular/test/test-app/cypress/support/index.d.ts b/angular/test/test-app/cypress/support/index.d.ts index e3c14379fd..acf1649fc4 100644 --- a/angular/test/test-app/cypress/support/index.d.ts +++ b/angular/test/test-app/cypress/support/index.d.ts @@ -63,6 +63,11 @@ declare namespace Cypress { * ``` */ ionPageDoesNotExist(selector: string): Chainable + + /** + * Clicks on a tab button with the given text. + */ + ionTabClick(tabText: string): Chainable; } } diff --git a/angular/test/test-app/e2e/src/tabs.spec.ts b/angular/test/test-app/e2e/src/tabs.spec.ts index c2bf709b9d..589e8a1740 100644 --- a/angular/test/test-app/e2e/src/tabs.spec.ts +++ b/angular/test/test-app/e2e/src/tabs.spec.ts @@ -230,13 +230,13 @@ describe('Tabs', () => { tab.find('#goto-next').click(); testTabTitle('Tab 1 - Page 2 (2)'); - cy.get('#tab-button-contact').click(); + cy.ionTabClick('Tab Two'); testTabTitle('Tab 2 - Page 1'); - cy.get('#tab-button-account').click(); + cy.ionTabClick('Tab One'); testTabTitle('Tab 1 - Page 2 (2)'); - cy.get('#tab-button-account').click(); + cy.ionTabClick('Tab One'); testTabTitle('Tab 1 - Page 1'); testUrlContains(rootUrl);