From e9147c67f405e96480bc9769904ed3c4f6d76499 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grand?= <francois.grand@inrae.fr> Date: Mon, 22 May 2023 15:05:30 +0200 Subject: [PATCH] fix(e2e): warnings during tests execution (stale element, element click intercepted) refs #620 --- e2e/calculate-linked-params.e2e-spec.ts | 4 +++- e2e/calculator.po.ts | 9 +++++++++ e2e/compute-reset-chained-links.e2e-spec.ts | 4 +--- e2e/cote-amont-aval-bief.e2e-spec.ts | 6 ++++-- e2e/duplicate-results.e2e-spec.ts | 1 - e2e/linked-parameter-section-type.e2e-spec.ts | 3 ++- e2e/load-save-session.e2e-spec.ts | 7 +++---- e2e/preferences.po.ts | 2 +- e2e/solveur.e2e-spec.ts | 3 ++- e2e/translation.e2e-spec.ts | 14 ++++++++------ e2e/util.po.ts | 1 + e2e/valeurs-erronees.e2e-spec.ts | 3 ++- 12 files changed, 36 insertions(+), 21 deletions(-) diff --git a/e2e/calculate-linked-params.e2e-spec.ts b/e2e/calculate-linked-params.e2e-spec.ts index 5a5306f41..38f708386 100644 --- a/e2e/calculate-linked-params.e2e-spec.ts +++ b/e2e/calculate-linked-params.e2e-spec.ts @@ -308,7 +308,7 @@ describe("ngHyd − calculate with linked parameters", () => { await openCalculator(12, navBar, listPage); // upstream water level should not have link mode (only one calculator) - const Z1_1 = await calcPage.getInputById("Z1"); + let Z1_1 = await calcPage.getInputById("Z1"); expect(await calcPage.inputHasLinkModeButton(Z1_1)).toBe(false); // create 2nd PAB-Chute @@ -319,6 +319,7 @@ describe("ngHyd − calculate with linked parameters", () => { await browser.pause(200); // upstream water level should have link mode (now there are 2 calculators) + Z1_1 = await calcPage.getInputById("Z1"); // re-request input to avoid "Request encountered a stale element - terminating request" warning (due to tab change) expect(await calcPage.inputHasLinkModeButton(Z1_1)).toBe(true); // back to 2nd calculator @@ -334,6 +335,7 @@ describe("ngHyd − calculate with linked parameters", () => { await browser.pause(200); // upstream water level should not have link mode (already a link target) + Z1_1 = await calcPage.getInputById("Z1"); // re-request input to avoid "Request encountered a stale element - terminating request" warning (due to tab change) expect(await calcPage.inputHasLinkModeButton(Z1_1)).toBe(false); }); }); diff --git a/e2e/calculator.po.ts b/e2e/calculator.po.ts index ee185aaa7..bf82481cb 100644 --- a/e2e/calculator.po.ts +++ b/e2e/calculator.po.ts @@ -35,6 +35,14 @@ export class CalculatorPage { return $$("mat-select[id^=select_]"); // all mat-select with id starting with "select_" } + /** + * return select count which id is in the form "select_*" + */ + async getCalculatorSelectCount() { + const sels = await $$("mat-select[id^=select_]"); // all mat-select with id starting with "select_" + return sels.length; + } + /** * get the option count of a select */ @@ -201,6 +209,7 @@ export class CalculatorPage { */ async getInputRadioButton(input, mode: string) { const tag = await input.getTagName(); + await browser.pause(100); const root = tag === "input" ? await this.findParentContainer(input) : input; return await root.$(`mat-button-toggle.radio_${mode}`); } diff --git a/e2e/compute-reset-chained-links.e2e-spec.ts b/e2e/compute-reset-chained-links.e2e-spec.ts index e0577d246..89ef7a886 100644 --- a/e2e/compute-reset-chained-links.e2e-spec.ts +++ b/e2e/compute-reset-chained-links.e2e-spec.ts @@ -123,9 +123,7 @@ describe("ngHyd − compute then reset chained results − ", () => { await newSession(navBar, sidenav); // disable evil option "empty fields on module creation" - await prefPage.navigateTo(); - await prefPage.disableEvilEmptyFields(); - await browser.pause(200); + await prefPage.setEmptyFields(false); // start page await navBar.clickNewCalculatorButton(); diff --git a/e2e/cote-amont-aval-bief.e2e-spec.ts b/e2e/cote-amont-aval-bief.e2e-spec.ts index a4788ee9b..e001fbcb0 100644 --- a/e2e/cote-amont-aval-bief.e2e-spec.ts +++ b/e2e/cote-amont-aval-bief.e2e-spec.ts @@ -40,7 +40,7 @@ describe("ngHyd − up/downstream elevations of a reach", () => { await flowCalcBtn.click(); // check details buttons are disabled - const upDetailsBtn = await $("#generate-sp-aval"); + let upDetailsBtn = await $("#generate-sp-aval"); expect(await upDetailsBtn.isEnabled()).toBe(false); const downDetailsBtn = await $("#generate-sp-amont"); expect(await downDetailsBtn.isEnabled()).toBe(false); @@ -69,6 +69,7 @@ describe("ngHyd − up/downstream elevations of a reach", () => { // click downstream hydraulic details button await navBar.openNthCalculator(0); + upDetailsBtn = await $("#generate-sp-aval"); // re-request element to avoid "Request encountered a stale element - terminating request" warning (due to tab change) await upDetailsBtn.click(); await browser.pause(500); @@ -84,7 +85,7 @@ describe("ngHyd − up/downstream elevations of a reach", () => { await openCalculator(21, navBar, listPage); // check details buttons status - const upDetailsBtn = await $("#generate-sp-aval"); + let upDetailsBtn = await $("#generate-sp-aval"); expect(await upDetailsBtn.isEnabled()).toBe(true); const downDetailsBtn = await $("#generate-sp-amont"); expect(await downDetailsBtn.isEnabled()).toBe(false); @@ -108,6 +109,7 @@ describe("ngHyd − up/downstream elevations of a reach", () => { // click downstream hydraulic details button await navBar.openNthCalculator(0); + upDetailsBtn = await $("#generate-sp-aval"); // re-request element to avoid "Request encountered a stale element - terminating request" warning (due to tab change) await upDetailsBtn.click(); await browser.pause(500); diff --git a/e2e/duplicate-results.e2e-spec.ts b/e2e/duplicate-results.e2e-spec.ts index f9f58b730..b567a2144 100644 --- a/e2e/duplicate-results.e2e-spec.ts +++ b/e2e/duplicate-results.e2e-spec.ts @@ -38,7 +38,6 @@ describe("ngHyd − check that results are not duplicated", () => { // check result count const fixRows = await calcPage.getAllFixedResultsRows(); const nbRows = fixRows.length; - console.log(nbRows); expect(nbRows).toBe(24); // boundaries are included }); }); diff --git a/e2e/linked-parameter-section-type.e2e-spec.ts b/e2e/linked-parameter-section-type.e2e-spec.ts index 538aea3b4..c6a63f70f 100644 --- a/e2e/linked-parameter-section-type.e2e-spec.ts +++ b/e2e/linked-parameter-section-type.e2e-spec.ts @@ -35,13 +35,14 @@ describe("linked parameter in calculator with section - ", () => { await openCalculator(2, navBar, listPage); // set Q parameter to linked mode - const inputQ = await calcPage.getInputById("Q"); + let inputQ = await calcPage.getInputById("Q"); await calcPage.setParamMode(inputQ, "link"); // change section type await changeSelectValue(await calcPage.getSelectById("select_section"), 3); // mode "parabolique" // check Q is still in linked mode + inputQ = await calcPage.getInputById("Q"); // re-request input to avoid "Request encountered a stale element - terminating request" warning expect(await calcPage.inputIsInLinkedMode(inputQ)).toBe(true); }); }); diff --git a/e2e/load-save-session.e2e-spec.ts b/e2e/load-save-session.e2e-spec.ts index 23765fbec..29c1cc67a 100644 --- a/e2e/load-save-session.e2e-spec.ts +++ b/e2e/load-save-session.e2e-spec.ts @@ -150,10 +150,9 @@ describe("ngHyd − save and load sessions", () => { await openCalculator(ct, navBar, listPage); // detect selects - let selects = await calcPage.getAllCalculatorSelects(); - const nsel = selects.length; + const nsel = await calcPage.getCalculatorSelectCount(); for (let s = 0; s < nsel; s++) { - const sel = selects[s]; + const sel = await calcPage.getAllCalculatorSelects()[s]; const selId = await sel.getAttribute("id"); const options = await calcPage.getMatselectOptionsText(sel); @@ -199,7 +198,7 @@ describe("ngHyd − save and load sessions", () => { deleteDownloadedFile(filename); // get selects once again since page has been replaced (session load) - selects = await calcPage.getAllCalculatorSelects(); + const selects = await calcPage.getAllCalculatorSelects(); // restore select previous option, other selects presence may depend on it (eg. pressure loss calculator) await changeSelectValue(selects[s], ind); diff --git a/e2e/preferences.po.ts b/e2e/preferences.po.ts index 57f921dd1..91d98abcc 100644 --- a/e2e/preferences.po.ts +++ b/e2e/preferences.po.ts @@ -69,7 +69,7 @@ export class PreferencesPage { */ async setEmptyFields(b: boolean) { await this.navigateTo(); - await browser.pause(200); + await browser.pause(1000); // 1000 is necessary to avoid "element click intercepted" warning if (b) { await this.enableEvilEmptyFields(); diff --git a/e2e/solveur.e2e-spec.ts b/e2e/solveur.e2e-spec.ts index 6bacf6639..b4e37f820 100644 --- a/e2e/solveur.e2e-spec.ts +++ b/e2e/solveur.e2e-spec.ts @@ -49,7 +49,7 @@ describe("Solveur - ", () => { const ntcV = await calcPage.getSelectValueText(ntc); expect(ntcV).toContain("PAB : puissance / Puissance dissipée (PV)"); // check targetted result - const ntt = await calcPage.getSelectById("select_target_result"); + let ntt = await calcPage.getSelectById("select_target_result"); const nttV = await calcPage.getSelectValueText(ntt); expect(nttV).toContain("Puissance dissipée (PV)"); // check searched Parameter @@ -69,6 +69,7 @@ describe("Solveur - ", () => { // change targetted Nub, check that targetted result changes too await changeSelectValue(ntc, 0); + ntt = await calcPage.getSelectById("select_target_result"); // re-request element to avoid "Request encountered a stale element - terminating request" warning (probably due to select change) const nttV2 = await calcPage.getSelectValueText(ntt); expect(nttV2).not.toContain("Puissance dissipée (PV)"); }); diff --git a/e2e/translation.e2e-spec.ts b/e2e/translation.e2e-spec.ts index dffdf4997..16c41d2d4 100644 --- a/e2e/translation.e2e-spec.ts +++ b/e2e/translation.e2e-spec.ts @@ -11,14 +11,12 @@ describe("Check translation", () => { let navBar: Navbar; let calcPage: CalculatorPage; let prefPage: PreferencesPage; - let sideNav: SideNav; beforeAll(() => { listPage = new ListPage(); navBar = new Navbar(); calcPage = new CalculatorPage(); prefPage = new PreferencesPage(); - sideNav = new SideNav(); }); beforeEach(async () => { @@ -43,21 +41,21 @@ describe("Check translation", () => { await browser.pause(500); // "variable for X axis" select label - const selXaxis = await calcPage.getSelectById("selectX"); + let selXaxis = await calcPage.getSelectById("selectX"); expect(await calcPage.getMatselectCurrentOptionText(selXaxis)).toEqual("Cote aval"); // "variable for Y axis" select label - const selYaxis = await calcPage.getSelectById("selectY"); + let selYaxis = await calcPage.getSelectById("selectY"); expect(await calcPage.getMatselectCurrentOptionText(selYaxis)).toEqual("DH : Chute (m)"); // fixed results variables - const frr = await calcPage.getAllFixedResultsRows(); + let frr = await calcPage.getAllFixedResultsRows(); let row0 = frr[0]; let lbl1 = await row0.$("td").getText(); expect(lbl1).toEqual("Cote amont (m)"); // variated results headers - const vrh = await calcPage.getAllVariatedResultsTableHeaders(); + let vrh = await calcPage.getAllVariatedResultsTableHeaders(); let lbl2 = await vrh[0].getText(); expect(lbl2).toEqual("Cote aval"); let lbl3 = await vrh[1].getText(); @@ -75,17 +73,21 @@ describe("Check translation", () => { await browser.pause(200); // "variable for X axis" select label + selXaxis = await calcPage.getSelectById("selectX"); // re-request element to avoid "Request encountered a stale element - terminating request" warning (due tab change) expect(await calcPage.getMatselectCurrentOptionText(selXaxis)).toEqual("Downstream elevation"); // "variable for Y axis" select label + selYaxis = await calcPage.getSelectById("selectY"); // avoid "Request encountered a stale element - terminating request" warning (due tab change) expect(await calcPage.getMatselectCurrentOptionText(selYaxis)).toEqual("DH : Fall (m)"); // fixed results variables + frr = await calcPage.getAllFixedResultsRows(); // re-request element to avoid "Request encountered a stale element - terminating request" warning (due to pref modifcation -> page update) row0 = frr[0]; lbl1 = await row0.$("td").getText(); expect(lbl1).toEqual("Upstream elevation (m)"); // variated results headers + vrh = await calcPage.getAllVariatedResultsTableHeaders(); // re-request element to avoid "Request encountered a stale element - terminating request" warning (due to pref modifcation -> page update) lbl2 = await vrh[0].getText(); expect(lbl2).toEqual("Downstream elevation"); lbl3 = await vrh[1].getText(); diff --git a/e2e/util.po.ts b/e2e/util.po.ts index f9db46269..d0c59aa91 100644 --- a/e2e/util.po.ts +++ b/e2e/util.po.ts @@ -85,6 +85,7 @@ export async function openApplication(startPage: AppPage) { export async function openCalculator(id: number, navBar: Navbar, listPage: ListPage) { const ncButton = await navBar.getNewCalculatorButton(); + await browser.pause(100); // avoid "webdriver: Request encountered a stale element - terminating request" warning if (await ncButton.isExisting()) { await scrollToElement(ncButton); if (await ncButton.isDisplayed()) { diff --git a/e2e/valeurs-erronees.e2e-spec.ts b/e2e/valeurs-erronees.e2e-spec.ts index a332dced9..46281237e 100644 --- a/e2e/valeurs-erronees.e2e-spec.ts +++ b/e2e/valeurs-erronees.e2e-spec.ts @@ -31,7 +31,7 @@ describe("ngHyd - check invalid values are removed - ", () => { await openCalculator(5, navBar, listPage); // modify W input with invalid value - const inputW = await calcPage.getInputById("W"); + let inputW = await calcPage.getInputById("W"); await inputW.setValue("-1"); // open another calculator @@ -42,6 +42,7 @@ describe("ngHyd - check invalid values are removed - ", () => { await browser.pause(200); // check invalid value is removed + inputW = await calcPage.getInputById("W"); // re-request element to avoid "Request encountered a stale element - terminating request" warning (due tab change) const w = await inputW.getValue(); expect(w).toEqual(""); -- GitLab