diff --git a/e2e/app.po.ts b/e2e/app.po.ts index 494a18afda40ef99f8b55a3e8bb03f22fa5a7367..8e2605b744729eae248a6994e30e7cf572a0e3cd 100644 --- a/e2e/app.po.ts +++ b/e2e/app.po.ts @@ -1,3 +1,5 @@ +import { browser } from '@wdio/globals' + export class AppPage { navigateTo() { return browser.url("/"); diff --git a/e2e/bief-empty-fields.e2e-spec.ts b/e2e/bief-empty-fields.e2e-spec.ts index a828ffc0bfe22393b694ead22e03c28823a5c401..1ad63832e6a89ae56babd8cb9a4110f4ad0f3cbf 100644 --- a/e2e/bief-empty-fields.e2e-spec.ts +++ b/e2e/bief-empty-fields.e2e-spec.ts @@ -3,6 +3,7 @@ import { Navbar } from "./navbar.po"; import { CalculatorPage } from "./calculator.po"; import { PreferencesPage } from "./preferences.po"; import { browser, $, $$, expect } from '@wdio/globals' +import { openCalculator } from "./util.po"; describe("Check fields are empty in 'up/downstream elevations of a reach' calculator when created with 'empty fields' option", () => { let listPage: ListPage; @@ -26,9 +27,7 @@ describe("Check fields are empty in 'up/downstream elevations of a reach' calcul it("", async () => { // open "up/downstream elevations of a reach" calculator - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(21); - await browser.pause(200); + await openCalculator(21, navBar, listPage); await calcPage.checkEmptyOrFilledFields(["LargeurBerge", "Ks", "Long", "YB", "ZF1", "ZF2", "Q", "Z1", "Z2", "Dx"], [true, true, true, true, true, true, true, true, true, true]) diff --git a/e2e/calculate-button-validation.e2e-spec.ts b/e2e/calculate-button-validation.e2e-spec.ts index 537b49f304d07949ccfba93a4d6173007805dac9..4ba0b00b2a95d9544607e2ea93b99dbc983550a0 100644 --- a/e2e/calculate-button-validation.e2e-spec.ts +++ b/e2e/calculate-button-validation.e2e-spec.ts @@ -3,6 +3,7 @@ import { CalculatorPage } from "./calculator.po"; import { Navbar } from "./navbar.po"; import { PreferencesPage } from "./preferences.po"; import { browser, $, $$, expect } from '@wdio/globals' +import { openCalculator } from "./util.po"; describe("Calculate button - ", () => { let listPage: ListPage; @@ -25,21 +26,11 @@ describe("Calculate button - ", () => { }); it("check button status only depends on calculator (no link between calculators)", async () => { - // start page - await navBar.clickNewCalculatorButton(); - await browser.pause(200); - // open PAB: chute calculator - await listPage.clickMenuEntryForCalcType(12); - await browser.pause(200); - - // start page - await navBar.clickNewCalculatorButton(); - await browser.pause(200); + await openCalculator(12, navBar, listPage); // open PAB: dimensions - await listPage.clickMenuEntryForCalcType(5); - await browser.pause(200); + await openCalculator(5, navBar, listPage); // fill width field with invalid data const inputW = await calcPage.getInputById("W"); @@ -68,13 +59,8 @@ describe("Calculate button - ", () => { describe("check button status in prébarrages - ", () => { it("invalid data in Q input", async () => { - // start page - await navBar.clickNewCalculatorButton(); - await browser.pause(200); - // open prébarrages calculator - await listPage.clickMenuEntryForCalcType(30); - await browser.pause(200); + await openCalculator(30, navBar, listPage); // Q input const inputQ = await $("#Q"); @@ -94,13 +80,8 @@ describe("Calculate button - ", () => { }); it("add basin, invalid data in Q input", async () => { - // start page - await navBar.clickNewCalculatorButton(); - await browser.pause(200); - // open prébarrages calculator - await listPage.clickMenuEntryForCalcType(30); - await browser.pause(200); + await openCalculator(30, navBar, listPage); // "add basin" button const addBasinBtn = await $("#add-basin"); @@ -141,9 +122,7 @@ describe("Calculate button - ", () => { async function checkCalculateButtonValidity(calcType: number) { // open calculator - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(calcType); - await browser.pause(200); + await openCalculator(calcType, navBar, listPage); // for each input, set empty and check calculate button is not active diff --git a/e2e/calculate-linked-params.e2e-spec.ts b/e2e/calculate-linked-params.e2e-spec.ts index 2f998ebd45153f719b7eeee0743bdebb1817640f..38f708386ec04ddbf24786ea8478766a63841fa5 100644 --- a/e2e/calculate-linked-params.e2e-spec.ts +++ b/e2e/calculate-linked-params.e2e-spec.ts @@ -3,7 +3,7 @@ import { CalculatorPage } from "./calculator.po"; import { Navbar } from "./navbar.po"; import { SideNav } from "./sidenav.po"; import { PreferencesPage } from "./preferences.po"; -import { changeSelectValue, loadSession, newSession } from "./util.po"; +import { changeSelectValue, loadSession, newSession, openCalculator } from "./util.po"; import { browser, $, $$, expect } from '@wdio/globals' /** @@ -59,12 +59,11 @@ describe("ngHyd − calculate with linked parameters", () => { it(" − direct links : parameter linked to a single parameter", async () => { // create a Régime uniforme - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(3); + await openCalculator(3, navBar, listPage); // create a PAB : dimensions - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(5); + await openCalculator(5, navBar, listPage); + // link Y to Y (R uniforme) const Y = await calcPage.getInputById("Y"); await calcPage.setParamMode(Y, "link"); @@ -76,12 +75,11 @@ describe("ngHyd − calculate with linked parameters", () => { it(" − direct links : parameter linked to a single parameter, plus local variated parameter", async () => { // create a Régime uniforme - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(3); + await openCalculator(3, navBar, listPage); // create a PAB : dimensions - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(5); + await openCalculator(5, navBar, listPage); + // link Y to Y (R uniforme) const Y = await calcPage.getInputById("Y"); await calcPage.setParamMode(Y, "link"); @@ -96,15 +94,15 @@ describe("ngHyd − calculate with linked parameters", () => { it(" − direct links : parameter linked to a variated parameter", async () => { // create a Régime uniforme - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(3); + await openCalculator(3, navBar, listPage); + // vary Y const Y1 = await calcPage.getInputById("Y"); await calcPage.setParamMode(Y1, "var"); // create a PAB : dimensions - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(5); + await openCalculator(5, navBar, listPage); + // link Y to Y (R uniforme) const Y2 = await calcPage.getInputById("Y"); await calcPage.setParamMode(Y2, "link"); @@ -116,15 +114,15 @@ describe("ngHyd − calculate with linked parameters", () => { it(" − direct links : parameter linked to a single result", async () => { // create a Régime uniforme - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(3); + await openCalculator(3, navBar, listPage); + // calculate Y const Y1 = await calcPage.getInputById("Y"); await calcPage.setParamMode(Y1, "cal"); // create a PAB : dimensions - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(5); + await openCalculator(5, navBar, listPage); + // link Y to Y (R uniforme) const Y2 = await calcPage.getInputById("Y"); await calcPage.setParamMode(Y2, "link"); @@ -136,15 +134,15 @@ describe("ngHyd − calculate with linked parameters", () => { it(" − direct links : parameter linked to a single result, plus local variated parameter", async () => { // create a Régime uniforme - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(3); + await openCalculator(3, navBar, listPage); + // calculate Y const Y1 = await calcPage.getInputById("Y"); await calcPage.setParamMode(Y1, "cal"); // create a PAB : dimensions - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(5); + await openCalculator(5, navBar, listPage); + // link Y to Y (R uniforme) const Y2 = await calcPage.getInputById("Y"); await calcPage.setParamMode(Y2, "link"); @@ -159,8 +157,8 @@ describe("ngHyd − calculate with linked parameters", () => { it(" − direct links : parameter linked to a variated result", async () => { // create a Régime uniforme - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(3); + await openCalculator(3, navBar, listPage); + // vary Q const Q = await calcPage.getInputById("Q"); await calcPage.setParamMode(Q, "var"); @@ -169,8 +167,8 @@ describe("ngHyd − calculate with linked parameters", () => { await calcPage.setParamMode(Y1, "cal"); // create a PAB : dimensions - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(5); + await openCalculator(5, navBar, listPage); + // link Y to Y (R uniforme) const Y2 = await calcPage.getInputById("Y"); await calcPage.setParamMode(Y2, "link"); @@ -182,12 +180,11 @@ describe("ngHyd − calculate with linked parameters", () => { it(" − direct links : parameter linked to a single extra result", async () => { // create a Régime uniforme - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(3); + await openCalculator(3, navBar, listPage); // create a Jet - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(18); + await openCalculator(18, navBar, listPage); + // link V0 to V (Régime uniforme) const V0 = await calcPage.getInputById("V0"); await calcPage.setParamMode(V0, "link"); @@ -197,12 +194,11 @@ describe("ngHyd − calculate with linked parameters", () => { it(" − direct links : parameter linked to a single extra result, plus local variated parameter", async () => { // create a Régime uniforme - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(3); + await openCalculator(3, navBar, listPage); // create a Jet - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(18); + await openCalculator(18, navBar, listPage); + // link V0 to V (Régime uniforme) const V0 = await calcPage.getInputById("V0"); await calcPage.setParamMode(V0, "link"); @@ -215,15 +211,15 @@ describe("ngHyd − calculate with linked parameters", () => { it(" − direct links : parameter linked to a variated extra result", async () => { // create a Régime uniforme - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(3); + await openCalculator(3, navBar, listPage); + // vary LargeurBerge const LargeurBerge = await calcPage.getInputById("LargeurBerge"); await calcPage.setParamMode(LargeurBerge, "var"); // create a Jet - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(18); + await openCalculator(18, navBar, listPage); + // link V0 to V (Régime uniforme) const V0 = await calcPage.getInputById("V0"); await calcPage.setParamMode(V0, "link"); @@ -309,26 +305,21 @@ describe("ngHyd − calculate with linked parameters", () => { it(" − a link target parameter should not be able to link to another parameter", async () => { // create 1st PAB-Chute - await navBar.clickNewCalculatorButton(); - await browser.pause(200); - await listPage.clickMenuEntryForCalcType(12); - await browser.pause(200); + 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 - await navBar.clickNewCalculatorButton(); - await browser.pause(200); - await listPage.clickMenuEntryForCalcType(12); - await browser.pause(200); + await openCalculator(12, navBar, listPage); // back to 1st calculator await navBar.clickCalculatorTab(0); 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 @@ -344,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 ee185aaa7edf94f01e03acb3fcbfe63d09108acc..bf82481cbe80b61d60a73cce4869fbd023f35216 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/check-translations.e2e-spec.ts b/e2e/check-translations.e2e-spec.ts index 97f01714a72cd2ba261eac52a2190d5a05925c27..7921b6116c8ebe3cb81a83b24765c7454ab4266d 100644 --- a/e2e/check-translations.e2e-spec.ts +++ b/e2e/check-translations.e2e-spec.ts @@ -5,6 +5,7 @@ import { PreferencesPage } from "./preferences.po"; import { SideNav } from "./sidenav.po"; import { testedCalcTypes } from "./tested_calctypes"; import { browser, $, $$, expect } from '@wdio/globals' +import { openCalculator } from "./util.po"; /** * For all calculators, try to calculate every parameter: check that only one parameter @@ -63,7 +64,7 @@ describe("ngHyd − check translation of all calculators", () => { for (const ct of calcTypes) { it(" − check translations of calculator type [" + ct + "]", async () => { // click calculator button (instanciate) - await listPage.clickMenuEntryForCalcType(ct); + await openCalculator(ct, navBar, listPage); // just click the "compute" button with default values // check that "compute" button is active diff --git a/e2e/cloisons.e2e-spec.ts b/e2e/cloisons.e2e-spec.ts index b134960bfd240b05afadedcf7d3c30652146adbc..948a8103f88e3e5206bb9cdf2ae0c1206ba2d094 100644 --- a/e2e/cloisons.e2e-spec.ts +++ b/e2e/cloisons.e2e-spec.ts @@ -2,7 +2,7 @@ import { ListPage } from "./list.po"; import { CalculatorPage } from "./calculator.po"; import { Navbar } from "./navbar.po"; import { PreferencesPage } from "./preferences.po"; -import { changeSelectValue } from "./util.po"; +import { changeSelectValue, openCalculator } from "./util.po"; import { browser, $, $$, expect } from '@wdio/globals' /** @@ -29,11 +29,9 @@ describe("ngHyd − cloisons", () => { }); it("when all parent Nub parameters are linked, Structure parameter modes should be alterable without problem", async () => { - await navBar.clickNewCalculatorButton(); - // 1. create target module for linked parameters - await listPage.clickMenuEntryForCalcType(10); // Cloisons - await browser.pause(300); + await openCalculator(10, navBar, listPage); + // 2. create module to test await calcPage.clickCloneCalcButton(); await browser.pause(300); @@ -50,10 +48,10 @@ describe("ngHyd − cloisons", () => { // 4. change LoiDebit await changeSelectValue(await calcPage.getSelectById("select_loidebit"), 1); await browser.pause(300); - + // 5. check number of inputs in CALC mode expect(await calcPage.getCheckedCalcModeButtons().length).toBe(1); - + // 6. try calculating the module const btn = await calcPage.getCalculateButton() await btn.click(); diff --git a/e2e/clone-all-calc.e2e-spec.ts b/e2e/clone-all-calc.e2e-spec.ts index 290067e9a4001376fc817edac5627f395dad3232..91e0763fa0f37267a266c18e4512039def8eeae3 100644 --- a/e2e/clone-all-calc.e2e-spec.ts +++ b/e2e/clone-all-calc.e2e-spec.ts @@ -3,7 +3,7 @@ import { CalculatorPage } from "./calculator.po"; import { Navbar } from "./navbar.po"; import { PreferencesPage } from "./preferences.po"; import { testedCalcTypes } from "./tested_calctypes"; -import { newSession, scrollPageToTop } from "./util.po"; +import { newSession, openCalculator, scrollPageToTop } from "./util.po"; import { browser, $, $$, expect } from '@wdio/globals' import { SideNav } from "./sidenav.po"; @@ -49,8 +49,7 @@ describe("ngHyd − clone all calculators with all possible <select> values", () await newSession(navBar, sideNav); // click calculator button (instanciate) - await listPage.clickMenuEntryForCalcType(ct); - await browser.pause(200); + await openCalculator(ct, navBar, listPage); // get all select IDs outside Structures // get select IDs inside Structures diff --git a/e2e/clone-calc.e2e-spec.ts b/e2e/clone-calc.e2e-spec.ts index e6eff73a3478581468e3d6a5b9146b62a0ce829a..a6d425c3a1df5c12f3a9c0e273366c2c3fd05765 100644 --- a/e2e/clone-calc.e2e-spec.ts +++ b/e2e/clone-calc.e2e-spec.ts @@ -2,7 +2,7 @@ import { ListPage } from "./list.po"; import { CalculatorPage } from "./calculator.po"; import { Navbar } from "./navbar.po"; import { PreferencesPage } from "./preferences.po"; -import { changeSelectValue, scrollPageToTop } from "./util.po"; +import { changeSelectValue, openCalculator, scrollPageToTop } from "./util.po"; import { browser, $, $$, expect } from '@wdio/globals' /** @@ -11,14 +11,14 @@ import { browser, $, $$, expect } from '@wdio/globals' describe("ngHyd − clone a calculator", () => { let listPage: ListPage; let calcPage: CalculatorPage; - let navbar: Navbar; + let navBar: Navbar; let prefPage: PreferencesPage; beforeAll(async () => { listPage = new ListPage(); calcPage = new CalculatorPage(); prefPage = new PreferencesPage(); - navbar = new Navbar(); + navBar = new Navbar(); }); beforeEach(async () => { @@ -29,22 +29,17 @@ describe("ngHyd − clone a calculator", () => { }); it("when cloning a calculator, the clone should have the same values for all parameters", async () => { - await navbar.clickNewCalculatorButton(); // 1. create target modules for linked parameter - await listPage.clickMenuEntryForCalcType(3); // Régime uniforme - await browser.pause(500); + await openCalculator(3, navBar, listPage); + const debitRU = await calcPage.getInputById("calc_Q"); // "Débit" is calculated by default await calcPage.setParamMode(debitRU, "fix"); await browser.pause(500); - await navbar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(4); // Courbe de remous - await browser.pause(500); + await openCalculator(4, navBar, listPage); // 2. create source module to clone - await navbar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(2); // Section paramétrée - await browser.pause(500); + await openCalculator(2, navBar, listPage); // 3. change and store source parameter values const sourceValues = { @@ -71,8 +66,8 @@ describe("ngHyd − clone a calculator", () => { await browser.pause(500); // 4. check existence of the cloned module - expect(await navbar.getAllCalculatorTabs().length).toBe(4); - await navbar.clickCalculatorTab(3); // n°3 should be the latest + expect(await navBar.getAllCalculatorTabs().length).toBe(4); + await navBar.clickCalculatorTab(3); // n°3 should be the latest await browser.pause(500); // 5. compare values 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 4e2521c53a33ccd0cfd54ccd0ff1ee10ac58603a..e001fbcb0fa050f9d88d98e16a9e1c00a698132d 100644 --- a/e2e/cote-amont-aval-bief.e2e-spec.ts +++ b/e2e/cote-amont-aval-bief.e2e-spec.ts @@ -3,7 +3,7 @@ import { Navbar } from "./navbar.po"; import { ListPage } from "./list.po"; import { CalculatorPage } from "./calculator.po"; import { browser, $, $$, expect } from '@wdio/globals' -import { newSession } from "./util.po"; +import { newSession, openCalculator } from "./util.po"; import { SideNav } from "./sidenav.po"; describe("ngHyd − up/downstream elevations of a reach", () => { @@ -31,10 +31,7 @@ describe("ngHyd − up/downstream elevations of a reach", () => { it("check hydraulic details availability - flow calculation", async () => { // open "up/downstream elevations of a reach" calculator - await navBar.clickNewCalculatorButton(); - await browser.pause(200); - await listPage.clickMenuEntryForCalcType(21); - await browser.pause(200); + await openCalculator(21, navBar, listPage); // set upstream flow in calculate mode const flowCalcBtn = await $( @@ -43,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); @@ -72,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,12 +82,10 @@ describe("ngHyd − up/downstream elevations of a reach", () => { await newSession(navBar, sideNav); // open "up/downstream elevations of a reach" calculator - // await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(21); - await browser.pause(200); + 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); @@ -113,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/courbe-remous-empty-fields.e2e-spec.ts b/e2e/courbe-remous-empty-fields.e2e-spec.ts index 39a08fd4c5ac6fb89200a4df93ba2280eb1abc88..e393d7e8499ee73ba84678c9edb493ccd8cb5f41 100644 --- a/e2e/courbe-remous-empty-fields.e2e-spec.ts +++ b/e2e/courbe-remous-empty-fields.e2e-spec.ts @@ -3,6 +3,7 @@ import { Navbar } from "./navbar.po"; import { CalculatorPage } from "./calculator.po"; import { PreferencesPage } from "./preferences.po"; import { browser, $, $$, expect } from '@wdio/globals' +import { openCalculator } from "./util.po"; describe("Check fields are empty in 'backwater curves' calculator when created with 'empty fields' option", () => { let listPage: ListPage; @@ -26,9 +27,7 @@ describe("Check fields are empty in 'backwater curves' calculator when created w it("", async () => { // open "backwater curves" calculator - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(4); - await browser.pause(200); + await openCalculator(4, navBar, listPage); await calcPage.checkEmptyOrFilledFields(["LargeurBerge", "Ks", "Long", "YB", "ZF1", "ZF2", "Q", "Z1", "Z2", "Dx"], [true, true, true, true, true, true, true, true, true, true]); diff --git a/e2e/diagramme-modules.e2e-spec.ts b/e2e/diagramme-modules.e2e-spec.ts index 5d2adae7f74da96e95e05d4beb90afbdfb21453c..ab65b0149556a8207dcfed36c30c643b7e6c4bdd 100644 --- a/e2e/diagramme-modules.e2e-spec.ts +++ b/e2e/diagramme-modules.e2e-spec.ts @@ -3,6 +3,7 @@ import { ListPage } from "./list.po"; import { SideNav } from "./sidenav.po"; import { PreferencesPage } from "./preferences.po"; import { browser, $, $$, expect } from '@wdio/globals' +import { openCalculator } from "./util.po"; /** * convert Mermaid formatted id ("flowchat-id-xx") to id @@ -38,9 +39,7 @@ describe("modules diagram", () => { //browser.manage().window().setPosition(2000, 30); // open predam calculator - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(30); - await browser.pause(200); + await openCalculator(30, navBar, listPage); // open modules diagram await navBar.clickMenuButton(); diff --git a/e2e/documentation.e2e-spec.ts b/e2e/documentation.e2e-spec.ts index 39ae0c60f025163f8c826bd5b5d6aab464b97ef4..9f1ba6935d85127c6052815ecd74810d17256bad 100644 --- a/e2e/documentation.e2e-spec.ts +++ b/e2e/documentation.e2e-spec.ts @@ -3,6 +3,7 @@ import { CalculatorPage } from "./calculator.po"; import { Navbar } from "./navbar.po"; import { PreferencesPage } from "./preferences.po"; import { browser, $, $$, expect } from '@wdio/globals' +import { openCalculator } from "./util.po"; describe("documentation − ", () => { let listPage: ListPage; @@ -26,13 +27,8 @@ describe("documentation − ", () => { await prefPage.changeLanguage(lang); await browser.pause(200); - // start page - await navBar.clickNewCalculatorButton(); - await browser.pause(200); - // open "fish ladder: fall" calculator - await listPage.clickMenuEntryForCalcType(12); - await browser.pause(200); + await openCalculator(12, navBar, listPage); // click help await calcPage.getCalculatorHelpButton().click(); diff --git a/e2e/duplicate-results.e2e-spec.ts b/e2e/duplicate-results.e2e-spec.ts index ae36dcc5414fd8d58c3d37d83aa878ba75e56fcc..b567a214421f1ff0ff86081c7b2cc4988efc15ab 100644 --- a/e2e/duplicate-results.e2e-spec.ts +++ b/e2e/duplicate-results.e2e-spec.ts @@ -3,6 +3,7 @@ import { Navbar } from "./navbar.po"; import { ListPage } from "./list.po"; import { CalculatorPage } from "./calculator.po"; import { browser, $, $$, expect } from '@wdio/globals' +import { openCalculator } from "./util.po"; describe("ngHyd − check that results are not duplicated", () => { let prefPage: PreferencesPage; @@ -27,9 +28,7 @@ describe("ngHyd − check that results are not duplicated", () => { it("in 'baffle fishway: setup' calculator", async () => { // open baffle fishway setup calculator - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(28); - await browser.pause(200); + await openCalculator(28, navBar, listPage); // run calculation const calcButton = await calcPage.getCalculateButton(); @@ -39,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/lechapt-calmon.e2e-spec.ts b/e2e/lechapt-calmon.e2e-spec.ts index 3d4eaf9b90f5e739f9336df426d5f31cccc6fd3e..1be7ef7ba17a2ed3af25a26c67770b08970b0cfd 100644 --- a/e2e/lechapt-calmon.e2e-spec.ts +++ b/e2e/lechapt-calmon.e2e-spec.ts @@ -2,7 +2,7 @@ import { ListPage } from "./list.po"; import { CalculatorPage } from "./calculator.po"; import { PreferencesPage } from "./preferences.po"; import { Navbar } from "./navbar.po"; -import { changeSelectValue } from "./util.po"; +import { changeSelectValue, openCalculator } from "./util.po"; import { browser, $, $$, expect } from '@wdio/globals' /** @@ -31,13 +31,8 @@ describe("Lechapt&Calmon - ", () => { }); async function setup() { - // start page - await navBar.clickNewCalculatorButton(); - await browser.pause(200); - // open Lechapt-Calmon (pressure loss) calculator - await listPage.clickMenuEntryForCalcType(35); - await browser.pause(200); + await openCalculator(35, navBar, listPage); } it("when material is modified, results should change", async () => { diff --git a/e2e/link-parallel-devices.e2e-spec.ts b/e2e/link-parallel-devices.e2e-spec.ts index 5bae9aa32ad4168954a5f71e71516edd8edffedd..97a1b8c9d349d45ec1cd4c33e702b6b191a223ef 100644 --- a/e2e/link-parallel-devices.e2e-spec.ts +++ b/e2e/link-parallel-devices.e2e-spec.ts @@ -3,7 +3,7 @@ import { CalculatorPage } from "./calculator.po"; import { PreferencesPage } from "./preferences.po"; import { Navbar } from "./navbar.po"; import { browser, $, $$, expect } from '@wdio/globals' -import { newSession } from "./util.po"; +import { newSession, openCalculator } from "./util.po"; import { SideNav } from "./sidenav.po"; describe("ngHyd − parallel structures with multiple linked parameters − ", () => { @@ -29,31 +29,30 @@ describe("ngHyd − parallel structures with multiple linked parameters − ", ( }); it("when creating Parallel Structures, devices should be linkable to one another", async () => { - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(8); - await browser.pause(200); + await openCalculator(8, navBar, listPage); + const addBtn = await calcPage.getAddStructureButton(); await addBtn.click(); await browser.pause(200); const nb1 = await calcPage.getAllLinkButtons().length; expect(nb1).toBe(8); // link buttons on children but not on parent }); - + it("when creating Cloisons, devices should be linkable to one another", async () => { await newSession(navBar, sideNav); - await listPage.clickMenuEntryForCalcType(10); - await browser.pause(200); + await openCalculator(10, navBar, listPage); + const addBtn = await calcPage.getAddStructureButton(); await addBtn.click(); await browser.pause(200); const nb2 = await calcPage.getAllLinkButtons().length; expect(nb2).toBe(6); // link buttons on children but not on parent }); - + it("when creating Dever, devices should be linkable to one another", async () => { await newSession(navBar, sideNav); - await listPage.clickMenuEntryForCalcType(9); - await browser.pause(200); + await openCalculator(9, navBar, listPage); + const addBtn = await calcPage.getAddStructureButton(); await addBtn.click(); await browser.pause(200); diff --git a/e2e/link-to-deleted-module.e2e-spec.ts b/e2e/link-to-deleted-module.e2e-spec.ts index fe62a73bcf039b92bf1828087f6b85f5a38c62ba..85aeea4eeb6041c6370c89cbcda8833787bbab28 100644 --- a/e2e/link-to-deleted-module.e2e-spec.ts +++ b/e2e/link-to-deleted-module.e2e-spec.ts @@ -3,7 +3,7 @@ import { ListPage } from "./list.po"; import { Navbar } from "./navbar.po"; import { PreferencesPage } from "./preferences.po"; import { browser, $, $$, expect } from '@wdio/globals' -import { newSession } from "./util.po"; +import { newSession, openCalculator } from "./util.po"; import { SideNav } from "./sidenav.po"; describe("linked parameter - ", () => { @@ -64,8 +64,7 @@ describe("linked parameter - ", () => { await newSession(navBar, sideNav); // open "fish ladder: fall" calculator - await listPage.clickMenuEntryForCalcType(12); - await browser.pause(200); + await openCalculator(12, navBar, listPage); // clone calculator await calcPage.clickCloneCalcButton(); diff --git a/e2e/linked-parameter-section-type.e2e-spec.ts b/e2e/linked-parameter-section-type.e2e-spec.ts index d663d2d9e281a030700de7322a4887e77b1a9e6c..c6a63f70f91a7b5fa0520aa99b4349a94e86b19f 100644 --- a/e2e/linked-parameter-section-type.e2e-spec.ts +++ b/e2e/linked-parameter-section-type.e2e-spec.ts @@ -2,7 +2,7 @@ import { ListPage } from "./list.po"; import { Navbar } from "./navbar.po"; import { PreferencesPage } from "./preferences.po"; import { CalculatorPage } from "./calculator.po"; -import { changeSelectValue } from "./util.po"; +import { changeSelectValue, openCalculator } from "./util.po"; import { browser } from "@wdio/globals"; describe("linked parameter in calculator with section - ", () => { @@ -29,23 +29,20 @@ describe("linked parameter in calculator with section - ", () => { // browser.manage().window().setPosition(2000, 30); // open first "parametric section" calculator - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(2); - await browser.pause(200); + await openCalculator(2, navBar, listPage); // open second "parametric section" calculator - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(2); - await browser.pause(200); + 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 b8fb8a83e9fdd610613eb6826e0fcf1f34e6660e..29c1cc67a55630e5e206bdc31245a59f78cd8630 100644 --- a/e2e/load-save-session.e2e-spec.ts +++ b/e2e/load-save-session.e2e-spec.ts @@ -4,7 +4,7 @@ import { CalculatorPage } from "./calculator.po"; import { Navbar } from "./navbar.po"; import { SideNav } from "./sidenav.po"; import { PreferencesPage } from "./preferences.po"; -import { changeSelectValue, expectNumber, loadSession } from "./util.po"; +import { changeSelectValue, expectNumber, loadSession, openCalculator } from "./util.po"; import { browser, $, $$, expect } from '@wdio/globals' const fs = require("fs"); @@ -14,7 +14,7 @@ const os = require("os"); let startPage: AppPage; let listPage: ListPage; let calcPage: CalculatorPage; -let navbar: Navbar; +let navBar: Navbar; let sidenav: SideNav; let prefPage: PreferencesPage; @@ -62,7 +62,7 @@ describe("ngHyd − save and load sessions", () => { startPage = new AppPage(); listPage = new ListPage(); calcPage = new CalculatorPage(); - navbar = new Navbar(); + navBar = new Navbar(); sidenav = new SideNav(); prefPage = new PreferencesPage(); }); @@ -74,19 +74,19 @@ describe("ngHyd − save and load sessions", () => { it("when loading session-6-calc.test.json file from home page, 6 calculators should be loaded", async () => { await startPage.navigateTo(); - await loadSession(navbar, sidenav, "./session/session-6-calc.test.json"); + await loadSession(navBar, sidenav, "./session/session-6-calc.test.json"); await browser.pause(1000); - expect(await navbar.getAllCalculatorTabs().length).toBe(6); + expect(await navBar.getAllCalculatorTabs().length).toBe(6); }); it("when loading session-optional-params.test.json file from home page, the calculator should be loaded", async () => { await startPage.navigateTo(); - await loadSession(navbar, sidenav, "./session/session-optional-params.test.json"); + await loadSession(navBar, sidenav, "./session/session-optional-params.test.json"); await browser.pause(200); - expect(await navbar.getAllCalculatorTabs().length).toBe(1); + expect(await navBar.getAllCalculatorTabs().length).toBe(1); }); it("when saving a calculator, the current parameter values should be found in the file", async () => { @@ -94,10 +94,8 @@ describe("ngHyd − save and load sessions", () => { await prefPage.navigateTo(); await prefPage.disableEvilEmptyFields(); await browser.pause(200); - await navbar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(2); // Section paramétrée - await browser.pause(200); + await openCalculator(2, navBar, listPage); // Section paramétrée await changeSelectValue(await calcPage.getSelectById("select_section"), 2); // mode "trapezoidal" @@ -136,27 +134,25 @@ describe("ngHyd − save and load sessions", () => { await prefPage.disableEvilEmptyFields(); await browser.pause(200); - // start page - await navbar.clickNewCalculatorButton(); - await browser.pause(200); + // // start page + // await navBar.clickNewCalculatorButton(); + // await browser.pause(200); } else { // empty session - await navbar.clickMenuButton(); + await navBar.clickMenuButton(); await browser.pause(500); await sidenav.clickNewSessionButton(); await browser.pause(200); } // open calculator - await listPage.clickMenuEntryForCalcType(ct); - await browser.pause(200); + 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); @@ -177,12 +173,12 @@ describe("ngHyd − save and load sessions", () => { await browser.pause(500); // load session - await loadSession(navbar, sidenav, filename); + await loadSession(navBar, sidenav, filename); await browser.pause(500); // the displayed calculator is now the loaded one // check the calculator has been loaded - expectNumber(`calc ${ct} select ${selId} : num calcs`, await navbar.getCalculatorEntriesCount(), 2); + expectNumber(`calc ${ct} select ${selId} : num calcs`, await navBar.getCalculatorEntriesCount(), 2); // check the select in the loaded session points to the same option const sel2 = await calcPage.getSelectById(selId); @@ -193,16 +189,16 @@ describe("ngHyd − save and load sessions", () => { expectNumber(`calc ${ct} select ${selId} : opt '${optTxt2}' index`, ind2, nextInd); // close last calculator (the loaded one) - await navbar.middleClickCalculatorTab(1); + await navBar.middleClickCalculatorTab(1); await browser.pause(200); // check last calculator has been closed - expectNumber(`calc ${ct} select ${selId} : num calcs(2)`, await navbar.getCalculatorEntriesCount(), 1); + expectNumber(`calc ${ct} select ${selId} : num calcs(2)`, await navBar.getCalculatorEntriesCount(), 1); 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/macrorugo-remous.e2e-spec.ts b/e2e/macrorugo-remous.e2e-spec.ts index d2c17b03b7dd07aa6c120460c625d955ffe8c1f7..14815aa4f559c507d99dea34621d1cedc90cd10f 100644 --- a/e2e/macrorugo-remous.e2e-spec.ts +++ b/e2e/macrorugo-remous.e2e-spec.ts @@ -2,10 +2,10 @@ import { ListPage } from "./list.po"; import { PreferencesPage } from "./preferences.po"; import { Navbar } from "./navbar.po"; import { browser, $, $$, expect } from '@wdio/globals' -import { isElementDisplayed } from "./util.po"; +import { isElementDisplayed, openCalculator } from "./util.po"; import { CalculatorPage } from "./calculator.po"; -//TODO à réactiver après fusion de #618 dans devel +//TODO à réactiver après fusion de nghyd#609 jalhyd#325 dans devel xdescribe("MacroRugoRemous - ", () => { let prefPage: PreferencesPage; let listPage: ListPage; @@ -28,13 +28,8 @@ xdescribe("MacroRugoRemous - ", () => { }); it("check select empty message is present when no PAM is in the session", async () => { - // start page - await navBar.clickNewCalculatorButton(); - await browser.pause(200); - // MacroRugoRemous calculator - await listPage.clickMenuEntryForCalcType(37); - browser.pause(200); + await openCalculator(37, navBar, listPage); // const emptyMsg = element(by.css("div .message-when-empty")); const emptyMsg = await $("div .message-when-empty"); @@ -42,40 +37,25 @@ xdescribe("MacroRugoRemous - ", () => { }); it("check select empty message is not present when a PAM exists in the session", async () => { - // start page - await navBar.clickNewCalculatorButton(); - await browser.pause(200); - // PAM calculator - await listPage.clickMenuEntryForCalcType(11); - browser.pause(200); + await openCalculator(11, navBar, listPage); await navBar.clickNewCalculatorButton(); await browser.pause(200); // MacroRugoRemous calculator - await listPage.clickMenuEntryForCalcType(37); - browser.pause(200); + await openCalculator(37, navBar, listPage); const emptyMsg = $("div .message-when-empty"); expect(await isElementDisplayed(emptyMsg)).toBe(false); }); it("check select error message when target PAM has no variated parameter", async () => { - // start page - await navBar.clickNewCalculatorButton(); - await browser.pause(200); - // PAM calculator - await listPage.clickMenuEntryForCalcType(11); - browser.pause(200); + await openCalculator(11, navBar, listPage); // MacroRugoRemous calculator - await navBar.clickNewCalculatorButton(); - await browser.pause(200); - - await listPage.clickMenuEntryForCalcType(37); - browser.pause(200); + await openCalculator(37, navBar, listPage); const errorMsg = await $("div .select-error-message"); expect(await isElementDisplayed(errorMsg)).toBe(false); @@ -96,11 +76,7 @@ xdescribe("MacroRugoRemous - ", () => { await browser.pause(200); // MacroRugoRemous calculator - await navBar.clickNewCalculatorButton(); - await browser.pause(200); - - await listPage.clickMenuEntryForCalcType(37); - browser.pause(200); + await openCalculator(37, navBar, listPage); const errorMsg = await $("div .select-error-message"); expect(await isElementDisplayed(errorMsg)).toBe(true); diff --git a/e2e/notes.e2e-spec.ts b/e2e/notes.e2e-spec.ts index de60a26f285925b53db452aab19383731933465b..6a3139ea5cec8d68ef7e5b41a13489343110e822 100644 --- a/e2e/notes.e2e-spec.ts +++ b/e2e/notes.e2e-spec.ts @@ -3,32 +3,32 @@ import { Navbar } from "./navbar.po"; import { ListPage } from "./list.po"; import { SideNav } from "./sidenav.po"; import { browser, $, $$, expect } from '@wdio/globals' +import { newSession, openApplication, openCalculator } from "./util.po"; describe("check calculator notes", () => { let startPage: AppPage; let navBar: Navbar; let listPage: ListPage; - let sidenav: SideNav; + let sideNav: SideNav; beforeAll(() => { startPage = new AppPage(); navBar = new Navbar(); listPage = new ListPage(); - sidenav = new SideNav(); + sideNav = new SideNav(); }); it(" - notes should display properly when opened from a calculator", async () => { - await startPage.navigateTo(); - await browser.pause(500); + await openApplication(startPage); + await newSession(navBar, sideNav); // open PAB: chute calculator - await listPage.clickMenuEntryForCalcType(12); - await browser.pause(200); + await openCalculator(12, navBar, listPage); // open notes await navBar.clickMenuButton(); await browser.pause(500); - await sidenav.clickNotesButton(); + await sideNav.clickNotesButton(); await browser.pause(200); // input some text @@ -44,7 +44,7 @@ describe("check calculator notes", () => { // reopen notes await navBar.clickMenuButton(); await browser.pause(200); - await sidenav.clickNotesButton(); + await sideNav.clickNotesButton(); await browser.pause(200); // check text @@ -54,17 +54,16 @@ describe("check calculator notes", () => { }); it(" - notes should display properly when opened from modules diagram", async () => { - await startPage.navigateTo(); - await browser.pause(500); + await openApplication(startPage); + await newSession(navBar, sideNav); // open PAB: chute calculator - await listPage.clickMenuEntryForCalcType(12); - await browser.pause(200); + await openCalculator(12, navBar, listPage); // open notes await navBar.clickMenuButton(); await browser.pause(500); - await sidenav.clickNotesButton(); + await sideNav.clickNotesButton(); await browser.pause(200); // input some text @@ -76,7 +75,7 @@ describe("check calculator notes", () => { // open modules diagram await navBar.clickMenuButton(); await browser.pause(500); - await sidenav.clickDiagramButton(); + await sideNav.clickDiagramButton(); await browser.pause(200); // open notes diff --git a/e2e/pab-cloisons-empty-fields.e2e-spec.ts b/e2e/pab-cloisons-empty-fields.e2e-spec.ts index 81e107f2b7b8e7676cd1168c5242c24bef9ccca2..d1443fb781cda8a0d46b70bab98c06930dafdc30 100644 --- a/e2e/pab-cloisons-empty-fields.e2e-spec.ts +++ b/e2e/pab-cloisons-empty-fields.e2e-spec.ts @@ -3,6 +3,7 @@ import { PreferencesPage } from "./preferences.po"; import { CalculatorPage } from "./calculator.po"; import { Navbar } from "./navbar.po"; import { browser, $, $$, expect } from '@wdio/globals' +import { openCalculator } from "./util.po"; /** * enable evil option "empty fields on module creation" @@ -44,9 +45,7 @@ describe("ngHyd - check the cross walls calculator has empty fields - ", () => { it("in the 'generate fish ladder' dialog", async () => { // open cross walls calculator - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(10); - await browser.pause(200); + await openCalculator(10, navBar, listPage); // fill inputs await fillInput(calcPage, "Z1"); @@ -66,7 +65,7 @@ describe("ngHyd - check the cross walls calculator has empty fields - ", () => { // click "generate PAB" button const genButton = await calcPage.getGeneratePabButton(); await genButton.click(); - await browser.pause(1000); + await browser.pause(2000); await calcPage.checkEmptyOrFilledFields(["generatePabNbBassins"], [true]); }); @@ -95,9 +94,7 @@ describe("ngHyd - check the cross walls calculator has no empty field - ", () => it("after calculation", async () => { // open cross walls calculator - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(10); - await browser.pause(200); + await openCalculator(10, navBar, listPage); // fill inputs await fillInput(calcPage, "Z1"); diff --git a/e2e/pab.e2e-spec.ts b/e2e/pab.e2e-spec.ts index a46cf7912e2861152fe2ef2ea30aecff55c44afb..4871aebe43f464b7e38e5f40f91a8c1aefad222b 100644 --- a/e2e/pab.e2e-spec.ts +++ b/e2e/pab.e2e-spec.ts @@ -4,7 +4,7 @@ import { Navbar } from "./navbar.po"; import { AppPage } from "./app.po"; import { SideNav } from "./sidenav.po"; import { PreferencesPage } from "./preferences.po"; -import { changeSelectValue, loadSession, newSession, scrollPageToTop } from "./util.po"; +import { changeSelectValue, loadSession, newSession, openCalculator, scrollPageToTop } from "./util.po"; import { browser, $, $$, expect } from '@wdio/globals' /** @@ -37,8 +37,8 @@ describe("ngHyd − Passe à Bassins", () => { it("when PAB is created from scratch", async () => { // create PAB - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(15); + await openCalculator(15, navBar, listPage); + // check that pab-table is present const innerFieldsets = await $$(".pab-data-table"); expect(await innerFieldsets.length).toBe(1); @@ -58,16 +58,16 @@ describe("ngHyd − Passe à Bassins", () => { it("complete example of all PAB modules", async () => { // PAB - chute - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(12); + await openCalculator(12, navBar, listPage); + const c_Z1 = await calcPage.getInputById("Z1"); await c_Z1.setValue("78.27"); const c_Z2 = await calcPage.getInputById("Z2"); await c_Z2.setValue("74.86"); // PAB - nombre - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(13); + await openCalculator(13, navBar, listPage); + const n_DHT = await calcPage.getInputById("DHT"); await calcPage.setParamMode(n_DHT, "link"); const n_DH = await calcPage.getInputById("DH"); @@ -77,8 +77,8 @@ describe("ngHyd − Passe à Bassins", () => { await n_N.setValue("15"); // PAB - dimensions - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(5); + await openCalculator(5, navBar, listPage); + const d_V = await calcPage.getInputById("V"); await calcPage.setParamMode(d_V, "cal"); const d_Y = await calcPage.getInputById("Y"); @@ -89,8 +89,8 @@ describe("ngHyd − Passe à Bassins", () => { await d_W.setValue("2.5"); // PAB - puissance dissipée (volume) - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(6); + await openCalculator(6, navBar, listPage); + const p_DH = await calcPage.getInputById("DH"); await calcPage.setParamMode(p_DH, "link"); const p_Q = await calcPage.getInputById("Q"); @@ -102,8 +102,8 @@ describe("ngHyd − Passe à Bassins", () => { await p_PV.setValue("150"); // PAB - cloisons - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(10); + await openCalculator(10, navBar, listPage); + const cl_LB = await calcPage.getInputById("LB"); await calcPage.setParamMode(cl_LB, "link"); const cl_BB = await calcPage.getInputById("BB"); @@ -162,11 +162,10 @@ describe("ngHyd − Passe à Bassins", () => { await newSession(navBar, sideNav); // create many Cloisons - await listPage.clickMenuEntryForCalcType(10); - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(10); - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(10); + await openCalculator(10, navBar, listPage); + await openCalculator(10, navBar, listPage); + await openCalculator(10, navBar, listPage); + // choose one of them and change its parameters await navBar.clickCalculatorTab(1); const Z1 = await calcPage.getInputById("Z1"); diff --git a/e2e/parallel-structures.e2e-spec.ts b/e2e/parallel-structures.e2e-spec.ts index f5f12df4bf09e7a6295d865effd4f949a11a0613..5c4fafa5572f3f90a35b94cbbdbcd45eed4317ed 100644 --- a/e2e/parallel-structures.e2e-spec.ts +++ b/e2e/parallel-structures.e2e-spec.ts @@ -3,7 +3,7 @@ import { Navbar } from "./navbar.po"; import { CalculatorPage } from "./calculator.po"; import { PreferencesPage } from "./preferences.po"; import { AppPage } from "./app.po"; -import { loadSession } from "./util.po"; +import { loadSession, openCalculator } from "./util.po"; import { SideNav } from "./sidenav.po"; import { browser, $, $$, expect } from '@wdio/globals' @@ -33,10 +33,7 @@ describe("Parallel structures - ", () => { it("check calculated parameter remains the same when copying a structure", async () => { // open "fish ladder: cross walls" calculator - await navBar.clickNewCalculatorButton(); - await browser.pause(200); - await listPage.clickMenuEntryForCalcType(10); - await browser.pause(200); + await openCalculator(10, navBar, listPage); // check L in first structure calc toggle is not checked const L1 = await calcPage.getInputById("0_L"); diff --git a/e2e/prebarrages-results.e2e-spec.ts b/e2e/prebarrages-results.e2e-spec.ts index b7e83b5126a6df649dd4ff40a3d9163c2b0a7a30..82ea0875b5501926371368077d298c1145bc7985 100644 --- a/e2e/prebarrages-results.e2e-spec.ts +++ b/e2e/prebarrages-results.e2e-spec.ts @@ -3,7 +3,7 @@ import { CalculatorPage } from "./calculator.po"; import { Navbar } from "./navbar.po"; import { PreferencesPage } from "./preferences.po"; import { browser, $, $$, expect } from '@wdio/globals' -import { loadSession, scrollToElement } from "./util.po"; +import { loadSession, openCalculator, scrollToElement } from "./util.po"; import { SideNav } from "./sidenav.po"; /** @@ -35,10 +35,7 @@ describe("Prébarrages results - ", () => { it("every module shoud have results", async () => { // create prébarrage calculator - await navBar.clickNewCalculatorButton(); - await browser.pause(200); - await listPage.clickMenuEntryForCalcType(30); - await browser.pause(200); + await openCalculator(30, navBar, listPage); // run calculation const calcButton = await calcPage.getCalculateButton(); diff --git a/e2e/predam-empty-fields.e2e-spec.ts b/e2e/predam-empty-fields.e2e-spec.ts index 66ad0806c7097a60474f2e873dbdc02dc17ea55c..096898b2234c61c7af0179ab297b2f6272ea6471 100644 --- a/e2e/predam-empty-fields.e2e-spec.ts +++ b/e2e/predam-empty-fields.e2e-spec.ts @@ -3,6 +3,7 @@ import { ListPage } from "./list.po"; import { Navbar } from "./navbar.po"; import { PreferencesPage } from "./preferences.po" import { browser, $, $$, expect } from '@wdio/globals' +import { openCalculator } from "./util.po"; /** * check that fields are empty on creation @@ -29,11 +30,8 @@ describe("ngHyd − check that predam fields are empty", () => { }); it("on creation", async () => { - //browser.manage().window().setPosition(2000, 30); // open predam calculator - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(30); - await browser.pause(200); + await openCalculator(30, navBar, listPage); // check upstream inputs await calcPage.checkEmptyInput("Q"); @@ -68,9 +66,7 @@ describe("ngHyd − check that predam fields are empty", () => { it("when a basin is added", async () => { // open predam calculator - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(30); - await browser.pause(200); + await openCalculator(30, navBar, listPage); // add basin const addBasinBtn = await $("#add-basin"); @@ -90,9 +86,7 @@ describe("ngHyd − check that predam fields are empty", () => { it("when a wall is added", async () => { // open predam calculator - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(30); - await browser.pause(200); + await openCalculator(30, navBar, listPage); // add wall const addWallBtn = await $("#add-wall"); diff --git a/e2e/predam-log.e2e-spec.ts b/e2e/predam-log.e2e-spec.ts index 07c936d1e62a863c69faf2e90a69623da2c44d80..b2119b4895a22f131afd23dfb677b293991d6e92 100644 --- a/e2e/predam-log.e2e-spec.ts +++ b/e2e/predam-log.e2e-spec.ts @@ -3,7 +3,7 @@ import { ListPage } from "./list.po"; import { Navbar } from "./navbar.po"; import { PreferencesPage } from "./preferences.po" import { browser, $, $$, expect } from '@wdio/globals' -import { changeSelectValue, loadSession, scrollToElement } from "./util.po"; +import { changeSelectValue, loadSession, openCalculator, scrollToElement } from "./util.po"; import { AppPage } from "./app.po"; import { SideNav } from "./sidenav.po"; @@ -37,9 +37,7 @@ describe("predams - ", () => { await prefPage.setIterationCount(5); // open predam calculator - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(30); - await browser.pause(200); + await openCalculator(30, navBar, listPage); // run calculation const calcButton = await calcPage.getCalculateButton(); diff --git a/e2e/predam.e2e-spec.ts b/e2e/predam.e2e-spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..335d1c0302a662c476484a6c650a04b66df68fdf --- /dev/null +++ b/e2e/predam.e2e-spec.ts @@ -0,0 +1,60 @@ +import { browser, $, $$, expect } from '@wdio/globals' +import { PreferencesPage } from './preferences.po'; +import { Navbar } from './navbar.po'; +import { CalculatorPage } from './calculator.po'; +import { changeSelectValue, scrollToElement } from './util.po'; + +describe("predams - ", () => { + let prefPage: PreferencesPage; + let navBar: Navbar; + let calcPage: CalculatorPage; + + beforeAll(() => { + prefPage = new PreferencesPage(); + navBar = new Navbar(); + calcPage = new CalculatorPage(); + }); + + beforeEach(async () => { + // disable evil option "empty fields on module creation" + await prefPage.setEmptyFields(false); + await navBar.clickNewCalculatorButton(); + await browser.pause(200); + }); + + it("bug nghyd#620", async () => { + // open predams example + const examples = await $$("#examples-list .load-example"); + await examples[6].click(); + await browser.pause(200); + + // select "Amont-B1" basin + const nodes = await $$("g.nodes > g"); + await nodes[8].click(); + await browser.pause(200); + + // modify 1st structure discharge law + const sel = await calcPage.getSelectById("select_loidebit"); + await changeSelectValue(sel, 3); // Larinier + await browser.pause(200); + + // check 2nd structure ZDV + const inpZDV2 = await calcPage.getInputById("1_ZDV"); + expect(await inpZDV2.getValue()).toEqual("96.25") + + // run computation + const calcBtn = await calcPage.getCalculateButton(); + await calcBtn.click(); + await browser.pause(300); + + // back to inputs tab + const resSelectors = await $$("#pb-data-results-selector div div"); + scrollToElement(resSelectors[0]); + await browser.pause(200); + await resSelectors[0].click(); + await browser.pause(200); + + // check 2nd structure ZDV didn't change + expect(await inpZDV2.getValue()).toEqual("96.25") + }); +}); diff --git a/e2e/preferences.po.ts b/e2e/preferences.po.ts index 57f921dd1a82ccab94ffe320daf0f57a9161d67f..91d98abcc5984d2a1a4de208e5f7b81cae46ef51 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/pressure-loss-empty-fields.e2e-spec.ts b/e2e/pressure-loss-empty-fields.e2e-spec.ts index 53b14e380df59c89b104452c73f91959f2f5d36b..8278f2474890b22875753d16e5b3d127638c527a 100644 --- a/e2e/pressure-loss-empty-fields.e2e-spec.ts +++ b/e2e/pressure-loss-empty-fields.e2e-spec.ts @@ -2,7 +2,7 @@ import { ListPage } from "./list.po"; import { Navbar } from "./navbar.po"; import { CalculatorPage } from "./calculator.po"; import { PreferencesPage } from "./preferences.po"; -import { changeSelectValue } from "./util.po"; +import { changeSelectValue, openCalculator } from "./util.po"; import { browser, $, $$, expect } from '@wdio/globals' describe("Check fields are empty in 'pressure loss' calculator when created with 'empty fields' option -", () => { @@ -11,7 +11,7 @@ describe("Check fields are empty in 'pressure loss' calculator when created with let calcPage: CalculatorPage; let prefPage: PreferencesPage; - beforeAll( () => { + beforeAll(() => { listPage = new ListPage(); navBar = new Navbar(); calcPage = new CalculatorPage(); @@ -27,9 +27,7 @@ describe("Check fields are empty in 'pressure loss' calculator when created with it("with Lechapt-Calmon pressure loss law", async () => { // open "pressure loss" calculator - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(35); - await browser.pause(200); + await openCalculator(35, navBar, listPage); // select Lechapt-Calmon pressure loss law const materialSelect = await calcPage.getSelectById("select_pressurelosstype"); diff --git a/e2e/pressure-loss.e2e-spec.ts b/e2e/pressure-loss.e2e-spec.ts index 1e8d1e21f81ddf411485abbb0a51dc1842f7115e..66537c8e85134ad145cfa87ce99cea7031787809 100644 --- a/e2e/pressure-loss.e2e-spec.ts +++ b/e2e/pressure-loss.e2e-spec.ts @@ -2,7 +2,7 @@ import { ListPage } from "./list.po"; import { Navbar } from "./navbar.po"; import { CalculatorPage } from "./calculator.po"; import { PreferencesPage } from "./preferences.po"; -import { changeSelectValue } from "./util.po"; +import { changeSelectValue, openCalculator } from "./util.po"; import { browser, $, $$, expect } from '@wdio/globals' describe("Pressure loss - ", () => { @@ -28,9 +28,7 @@ describe("Pressure loss - ", () => { describe("modify pressure loss law displays the appropriate fields - ", () => { it("Lechapt&Calmon", async () => { // open "pressure loss" calculator - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(35); - await browser.pause(200); + await openCalculator(35, navBar, listPage); // select Lechapt-Calmon pressure loss law const materialSelect = await calcPage.getSelectById("select_pressurelosstype"); @@ -50,9 +48,7 @@ describe("Pressure loss - ", () => { it("Strickler", async () => { // open "pressure loss" calculator - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(35); - await browser.pause(200); + await openCalculator(35, navBar, listPage); // select Strickler pressure loss law const materialSelect = await calcPage.getSelectById("select_pressurelosstype"); diff --git a/e2e/regime-uniforme-empty-fields.e2e-spec.ts b/e2e/regime-uniforme-empty-fields.e2e-spec.ts index f9178310462e7c65f697d186e21a2ba7c37d08a1..4725067b5c2146c32a0ec8ad2ec1fcfded425f21 100644 --- a/e2e/regime-uniforme-empty-fields.e2e-spec.ts +++ b/e2e/regime-uniforme-empty-fields.e2e-spec.ts @@ -3,6 +3,7 @@ import { Navbar } from "./navbar.po"; import { CalculatorPage } from "./calculator.po"; import { PreferencesPage } from "./preferences.po"; import { browser, $, $$, expect } from '@wdio/globals' +import { openCalculator } from "./util.po"; describe("Check fields are empty in 'uniform flow' calculator when created with 'empty fields' option", () => { let listPage: ListPage; @@ -26,9 +27,7 @@ describe("Check fields are empty in 'uniform flow' calculator when created with it("", async () => { // open "uniform flow" calculator - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(3); - await browser.pause(200); + await openCalculator(3, navBar, listPage); expect(await calcPage.checkEmptyOrFilledFields(["LargeurBerge", "Ks", "If", "YB", "Q", "Y"], [true, true, true, true, true, true])) }); diff --git a/e2e/remous.e2e-spec.ts b/e2e/remous.e2e-spec.ts index 48cdcf57f154fe10f148783afd61e1683bdc499e..2fd14288e7bd9089a98b758b35e12112227d1fb1 100644 --- a/e2e/remous.e2e-spec.ts +++ b/e2e/remous.e2e-spec.ts @@ -3,7 +3,7 @@ import { CalculatorPage } from "./calculator.po"; import { Navbar } from "./navbar.po"; import { PreferencesPage } from "./preferences.po"; import { SideNav } from "./sidenav.po"; -import { changeSelectValue, loadSession } from "./util.po"; +import { changeSelectValue, loadSession, openCalculator } from "./util.po"; import { browser, $, $$, expect } from '@wdio/globals' /** @@ -32,11 +32,9 @@ describe("ngHyd − remous", () => { }); it("when leaving calculated remous page then coming back to it, logs should not be duplicated", async () => { - await navBar.clickNewCalculatorButton(); // 1. create new Remous - await listPage.clickMenuEntryForCalcType(4); - await browser.pause(300); + await openCalculator(4, navBar, listPage); // 2. calculate it, there should be 6 messages in the log const calcBtn = await calcPage.getCalculateButton() @@ -59,11 +57,8 @@ describe("ngHyd − remous", () => { }); it("Calculation with large bed width should run successfully", async () => { - await navBar.clickNewCalculatorButton(); - // 1. create new Remous - await listPage.clickMenuEntryForCalcType(4); - await browser.pause(300); + await openCalculator(4, navBar, listPage); // 2. Set to trapezoidal section with bank slope of 2m/m and 20 meter width bed await changeSelectValue(await calcPage.getSelectById("select_section"), 2); diff --git a/e2e/reset-param-mode.e2e-spec.ts b/e2e/reset-param-mode.e2e-spec.ts index 1a1c7ac6ff11db6050bdc8e921057f6a6a87220c..b686e0c33eb8d48c1e7c60f77c7434a84fa0a3d0 100644 --- a/e2e/reset-param-mode.e2e-spec.ts +++ b/e2e/reset-param-mode.e2e-spec.ts @@ -1,33 +1,36 @@ import { ListPage } from "./list.po"; import { browser, $, $$, expect } from '@wdio/globals' -import { newSession } from "./util.po"; +import { newSession, openApplication, openCalculator } from "./util.po"; import { Navbar } from "./navbar.po"; import { SideNav } from "./sidenav.po"; import { CalculatorPage } from "./calculator.po"; +import { AppPage } from "./app.po"; /** * Parameter mode should be set to its previous mode (fixed/var/...) when cancel is pressed * in variable mode edition dialog */ describe("ngHyd - check parameter mode is set to its previous value - ", () => { + let startPage: AppPage; let listPage: ListPage; let navBar: Navbar; let sideNav: SideNav; let calcPage: CalculatorPage; beforeAll(() => { + startPage = new AppPage(); listPage = new ListPage(); + navBar = new Navbar(); + sideNav = new SideNav(); calcPage = new CalculatorPage(); }); it("when min/max/list values dialog is cancelled on 'fish ladder: fall' calculator", async () => { - // start page - await listPage.navigateTo(); - await browser.pause(300); + await openApplication(startPage); + await newSession(navBar, sideNav); // open 'PAB fall' calculator - await listPage.clickMenuEntryForCalcType(12); - await browser.pause(200); + await openCalculator(12, navBar, listPage); // click "calc" radio on Z1 parameter const z1calcbtn = await calcPage.getInputRadioButtonFromId("Z1", "cal"); @@ -52,13 +55,11 @@ describe("ngHyd - check parameter mode is set to its previous value - ", () => { }); it("when min/max/list values dialog is cancelled on 'fish ladder' calculator", async () => { - // start page - await listPage.navigateTo(); - await browser.pause(300); + await openApplication(startPage); + await newSession(navBar, sideNav); // open PAB calculator - await listPage.clickMenuEntryForCalcType(15); - await browser.pause(500); + await openCalculator(15, navBar, listPage); // "fixed" radio on Q parameter const qfixbtn = await calcPage.getInputRadioButtonFromId("Q", "fix"); diff --git a/e2e/reset-results.e2e-spec.ts b/e2e/reset-results.e2e-spec.ts index 175af9a9bda3bf65c89edfd6b3c1fb1d9b97480b..b99ce82ac5f36ac5d6b369aa1efc338b25a5c2cd 100644 --- a/e2e/reset-results.e2e-spec.ts +++ b/e2e/reset-results.e2e-spec.ts @@ -4,6 +4,7 @@ import { CalculatorPage } from "./calculator.po"; import { PreferencesPage } from "./preferences.po"; import { SideNav } from "./sidenav.po"; import { browser, $, $$, expect } from '@wdio/globals' +import { openCalculator } from "./util.po"; describe("Check results are reset after application settings modification - ", () => { let listPage: ListPage; @@ -31,15 +32,12 @@ describe("Check results are reset after application settings modification - ", ( async function runTestWithParameter(param: string, val1: number, val2: number) { // set starting compute precision - const input = await prefPage.getInputFromName(param); + let input = await prefPage.getInputFromName(param); await input.clearValue(); await input.setValue(val1.toString()); // open "fish ladder: fall" calculator - await navBar.clickNewCalculatorButton(); - await browser.pause(200); - await listPage.clickMenuEntryForCalcType(12); - await browser.pause(200); + await openCalculator(12, navBar, listPage); // click "compute" button const calcButton = await calcPage.getCalculateButton(); @@ -59,6 +57,7 @@ describe("Check results are reset after application settings modification - ", ( await browser.pause(200); // modify compute precision + input = await prefPage.getInputFromName(param); await input.setValue(val2.toString()); await browser.pause(500); diff --git a/e2e/section-empty-fields.e2e-spec.ts b/e2e/section-empty-fields.e2e-spec.ts index 5d867024c690a0aa19da2f2552c95cf0d2b63735..73496834c2901472c70314df451fa9cf015c4d62 100644 --- a/e2e/section-empty-fields.e2e-spec.ts +++ b/e2e/section-empty-fields.e2e-spec.ts @@ -3,6 +3,7 @@ import { Navbar } from "./navbar.po"; import { CalculatorPage } from "./calculator.po"; import { PreferencesPage } from "./preferences.po"; import { browser, $, $$, expect } from '@wdio/globals' +import { openCalculator } from "./util.po"; describe("Check fields are empty in 'parametric section' calculator when created with 'empty fields' option", () => { let listPage: ListPage; @@ -26,9 +27,7 @@ describe("Check fields are empty in 'parametric section' calculator when created it("", async () => { // open "parametric section" calculator - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(2); - await browser.pause(200); + await openCalculator(2, navBar, listPage); expect(await calcPage.checkEmptyOrFilledFields(["LargeurBerge", "Ks", "If", "YB", "Q", "Y"], [true, true, true, true, true, true])); }); diff --git a/e2e/select-default-value.e2e-spec.ts b/e2e/select-default-value.e2e-spec.ts index 058408310ab9cfd9a9a115c23a6d24eb75e1d10e..5658675d1d72bd571a68881711133d4b778b62eb 100644 --- a/e2e/select-default-value.e2e-spec.ts +++ b/e2e/select-default-value.e2e-spec.ts @@ -3,6 +3,7 @@ import { ListPage } from "./list.po"; import { Navbar } from "./navbar.po"; import { PreferencesPage } from "./preferences.po"; import { browser, $, $$, expect } from '@wdio/globals' +import { openCalculator } from "./util.po"; describe("check the select default value - ", () => { let prefPage: PreferencesPage; @@ -29,9 +30,7 @@ describe("check the select default value - ", () => { it("in the 'backwater curve' calculator", async () => { // open backwater curve calculator - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(4); - await browser.pause(200); + await openCalculator(4, navBar, listPage); // in the calculator configuration file, the default resolution method is 'Trapezes'. // let's check this... @@ -42,9 +41,7 @@ describe("check the select default value - ", () => { it("in the 'up/downstream elevations of a reach' calculator", async () => { // open "up/downstream elevations of a reach" calculator - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(21); - await browser.pause(200); + await openCalculator(21, navBar, listPage); // in the calculator configuration file, the default section method is 'Rectangulaire'. // let's check this... diff --git a/e2e/solveur.e2e-spec.ts b/e2e/solveur.e2e-spec.ts index 88fe956ea6404352486c138ba7e6de213de1e619..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)"); }); @@ -77,16 +78,12 @@ describe("Solveur - ", () => { await newSession(navBar, sideNav); // 1. create empty Solveur - openCalculator(22, navBar, listPage); + await openCalculator(22, navBar, listPage); // 2. create PAB:Chute, PAB:Nombre and PAB:Puissance linked to one another - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(12); // PAB:Chute - await browser.pause(500); - await navBar.clickNewCalculatorButton(); + await openCalculator(12, navBar, listPage); // PAB:Chute + await openCalculator(13, navBar, listPage); // PAB:Nombre - await listPage.clickMenuEntryForCalcType(13); // PAB:Nombre - await browser.pause(500); // link DHT to PAB:Chute.DH const dht = await calcPage.getInputById("DHT"); await calcPage.setParamMode(dht, "link"); @@ -94,9 +91,8 @@ describe("Solveur - ", () => { const dh_nombre = await calcPage.getInputById("DH"); await calcPage.setParamMode(dh_nombre, "cal"); - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(6); // PAB:Puissance - await browser.pause(500); + await openCalculator(6, navBar, listPage); // PAB:Puissance + // link DH to PAB:Nombre.DH const dh_puiss = await calcPage.getInputById("DH"); await calcPage.setParamMode(dh_puiss, "link"); diff --git a/e2e/translation.e2e-spec.ts b/e2e/translation.e2e-spec.ts index d87a45a7bb449bbf130778b3656b64b56236842f..16c41d2d4f10b93bd6842e0adde31c9b896637c4 100644 --- a/e2e/translation.e2e-spec.ts +++ b/e2e/translation.e2e-spec.ts @@ -4,20 +4,19 @@ import { CalculatorPage } from "./calculator.po"; import { PreferencesPage } from "./preferences.po"; import { SideNav } from "./sidenav.po"; import { browser, $, $$, expect } from '@wdio/globals' +import { openCalculator } from "./util.po"; describe("Check translation", () => { let listPage: ListPage; 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 () => { @@ -31,9 +30,7 @@ describe("Check translation", () => { await prefPage.changeLanguage(1); // fr // open "fish ladder: fall" calculator - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(12); - await browser.pause(200); + await openCalculator(12, navBar, listPage); // set Z2 to variated mode const inpZ2 = await calcPage.getInputById("Z2"); @@ -44,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(); @@ -76,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 ec4a1c033b66cb66ab8daf209b96b23c1c6db958..d0c59aa917a73f7ecfd97bd45a610aa1f3d70712 100644 --- a/e2e/util.po.ts +++ b/e2e/util.po.ts @@ -3,6 +3,7 @@ import { Navbar } from './navbar.po'; import { SideNav } from './sidenav.po'; import { ListPage } from './list.po'; import { AppPage } from './app.po'; + /** * scroll page to make element visible */ @@ -84,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 2e88357fc5878b2b66d55996f98d8ddaafc1cf7d..46281237e21e21f5f797871feece1c30e3697821 100644 --- a/e2e/valeurs-erronees.e2e-spec.ts +++ b/e2e/valeurs-erronees.e2e-spec.ts @@ -3,6 +3,7 @@ import { ListPage } from "./list.po"; import { Navbar } from "./navbar.po"; import { PreferencesPage } from "./preferences.po"; import { browser, $, $$, expect } from '@wdio/globals' +import { openCalculator } from "./util.po"; describe("ngHyd - check invalid values are removed - ", () => { let listPage: ListPage; @@ -27,24 +28,21 @@ describe("ngHyd - check invalid values are removed - ", () => { it("when switching to another calculator", async () => { // open PAB dimensions calculator - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(5); - await browser.pause(200); + 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 - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(12); - await browser.pause(200); + await openCalculator(12, navBar, listPage); // back to first calculator await navBar.openNthCalculator(0); 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(""); diff --git a/e2e/variable-param-cancel.e2e-spec.ts b/e2e/variable-param-cancel.e2e-spec.ts index fedb54603dc2310d6837c5584cb09b9cd99754f4..d141b2d2eb845558c0570ac7ef75132336c47f05 100644 --- a/e2e/variable-param-cancel.e2e-spec.ts +++ b/e2e/variable-param-cancel.e2e-spec.ts @@ -1,29 +1,36 @@ -import { brotliCompress } from "zlib"; import { CalculatorPage } from "./calculator.po"; import { ListPage } from "./list.po"; import { browser, $, $$, expect } from '@wdio/globals' +import { newSession, openApplication, openCalculator } from "./util.po"; +import { Navbar } from "./navbar.po"; +import { AppPage } from "./app.po"; +import { SideNav } from "./sidenav.po"; /** * Check that a cancel button is present in min/max/list edition dialog * for variable parameters */ describe("ngHyd - check cancel button for variable parameters - ", () => { + let startPage: AppPage; let listPage: ListPage; let calcPage: CalculatorPage; + let navBar: Navbar; + let sideNav: SideNav; beforeAll(() => { + startPage = new AppPage(); listPage = new ListPage(); calcPage = new CalculatorPage(); + navBar = new Navbar(); + sideNav = new SideNav(); }); it("when min/max/list values dialog opens, a cancel button should be present", async () => { - // start page - await listPage.navigateTo(); - await browser.pause(200); + await openApplication(startPage); + await newSession(navBar, sideNav); // open PAB chute - await listPage.clickMenuEntryForCalcType(12); - await browser.pause(200); + await openCalculator(12, navBar, listPage); // click "var" radio on Z1 parameter const z1btn = await calcPage.getInputRadioButtonFromId("Z1", "var"); diff --git a/src/app/formulaire/elements/fieldset.ts b/src/app/formulaire/elements/fieldset.ts index 73e6b8535049442f73d2a8ac0dd748d32a53feeb..179920686e21ec6afe1b3af5234d5d7a1f25fd9f 100644 --- a/src/app/formulaire/elements/fieldset.ts +++ b/src/app/formulaire/elements/fieldset.ts @@ -218,29 +218,6 @@ export class FieldSet extends FormulaireElement implements IProperties { this.clearFields(); this.parseFields(); } - else { - const nub = this.parentForm.currentNub; - for (const e of this.parentForm.allFormElements) { - if (e instanceof NgParameter) { - const p: ParamDefinition = nub.getParameter(e.symbol); - switch (e.paramDefinition.valueMode) { - case ParamValueMode.SINGLE: - e.setValue(this, p.singleValue); - break; - - case ParamValueMode.MINMAX: - e.setMinValue(this, p.min); - e.setMaxValue(this, p.max); - e.setStepValue(this, p.step); - break; - - case ParamValueMode.LISTE: - e.setValueList(this, p.valueList); - break; - } - } - } - } this.updateLocalisation();