diff --git a/e2e/calculate-linked-params.e2e-spec.ts b/e2e/calculate-linked-params.e2e-spec.ts index 5a5306f41d3e805e528bfcb5c144b37f9a25aae1..38f708386ec04ddbf24786ea8478766a63841fa5 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 64c8ae5bcb93b331b0ebb41ac8377bfc3374fa63..326dbfc6ef9854531456ea7b19349c919aa91d76 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 e0577d24622ae9ca1377df71733759f5cf4b6a10..89ef7a886f27dc66506025fcb12b133fe443f857 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 a4788ee9b1fb1f4de5f38bb456eb7c55a4d4343d..e001fbcb0fa050f9d88d98e16a9e1c00a698132d 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 f9f58b730fe3ef870fbc278e4e7f22b5ff73c047..b567a214421f1ff0ff86081c7b2cc4988efc15ab 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 538aea3b49af2c05097fe045cb343339fe5f11c2..c6a63f70f91a7b5fa0520aa99b4349a94e86b19f 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 23765fbecfc7f21777d812d974a766e8488758ab..29c1cc67a55630e5e206bdc31245a59f78cd8630 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 4a3a5755cc3ebf7aec84f2e198608662da8ff6fc..ec3688c2e8d05b5da70991b8a0df4478db50dcc8 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 6bacf6639fb7a516f4d728e04d592eb3bf55f78d..b4e37f8202b76d040aea9ead11e0bf2aa4eef2f8 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 dffdf4997574859ff23c57f1d8d593020ba74eed..16c41d2d4f10b93bd6842e0adde31c9b896637c4 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 079bbce3db1df52f162a34c9084de0554f8ad86e..cdfab77a6d63ada14aeec03cfca4dd8704fdeacd 100644 --- a/e2e/util.po.ts +++ b/e2e/util.po.ts @@ -72,6 +72,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 a332dced979579aa5eab52fcb5847e138e554ace..46281237e21e21f5f797871feece1c30e3697821 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("");