From adaddc5eacc7d4fb81f3347cb998b6d31617a4a9 Mon Sep 17 00:00:00 2001 From: Jean-Pascal <jean-pascal.aubry@inrae.fr> Date: Thu, 28 Mar 2024 09:25:46 +0000 Subject: [PATCH 1/2] test: fix failing tests (change test order and shared link-to-deleted-module e2e spec) Refs #666 --- e2e/calculate-linked-params.e2e-spec.ts | 154 ++++++++++---------- e2e/compute-reset-chained-links.e2e-spec.ts | 72 ++++----- e2e/link-to-deleted-module.e2e-spec.ts | 41 ------ e2e/link-to-deleted-module2.e2e-spec.ts | 73 ++++++++++ 4 files changed, 186 insertions(+), 154 deletions(-) create mode 100644 e2e/link-to-deleted-module2.e2e-spec.ts diff --git a/e2e/calculate-linked-params.e2e-spec.ts b/e2e/calculate-linked-params.e2e-spec.ts index 38f708386..f53597c86 100644 --- a/e2e/calculate-linked-params.e2e-spec.ts +++ b/e2e/calculate-linked-params.e2e-spec.ts @@ -57,6 +57,83 @@ describe("ngHyd − calculate with linked parameters", () => { expect(hasResults).toBe(true); } + it(" − bug nghyd#329 : unexpected ERR in results table", async () => { + await navBar.clickNewCalculatorButton(); + await browser.pause(200); + + // load session + await loadSession(navBar, sideNav, "./session/session-pab-chain-nghyd-329.json"); + expect(await navBar.getAllCalculatorTabs().length).toBe(3); + + // calculate PAB-Dimensions + await navBar.clickCalculatorTab(2); + await browser.pause(200); + // click "compute" button + const calcButton = await calcPage.getCalculateButton(); + await calcButton.click(); + await browser.pause(300); + // check that result is not empty + expect(await calcPage.hasResults()).toBe(true); + + // check that ERR is not present in Volume line of results table + let frt = await calcPage.getFixedResultsTable(); + let volumeRow = await calcPage.getNthRow(frt, 3); + let volumeCol = await calcPage.getNthColumn(volumeRow, 2); + let volume = await volumeCol.getText(); + expect(Number(volume)).toBeCloseTo(44.565, 3); + + // click PAB-Nombre tab + await navBar.clickCalculatorTab(0); + await browser.pause(200); + + // go back to PAB-Dimensions + await navBar.clickCalculatorTab(2); + await browser.pause(200); + + // check that ERR is not present in Volume line of results table + frt = await calcPage.getFixedResultsTable(); + volumeRow = await calcPage.getNthRow(frt, 3); + volumeCol = await calcPage.getNthColumn(volumeRow, 2); + volume = await volumeCol.getText(); + expect(Number(volume)).toBeCloseTo(44.565, 3); + }); + + it(" − a link target parameter should not be able to link to another parameter", async () => { + // create 1st PAB-Chute + await openCalculator(12, navBar, listPage); + + // upstream water level should not have link mode (only one calculator) + let Z1_1 = await calcPage.getInputById("Z1"); + expect(await calcPage.inputHasLinkModeButton(Z1_1)).toBe(false); + + // create 2nd PAB-Chute + 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 + await navBar.clickCalculatorTab(1); + await browser.pause(200); + + // link upstream water level in 2nd calculator to upstream water level in 1st one + const Z1_2 = await calcPage.getInputById("Z1"); + await calcPage.setParamMode(Z1_2, "link"); + + // back to 1st calculator + await navBar.clickCalculatorTab(0); + 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); + }); + it(" − direct links : parameter linked to a single parameter", async () => { // create a Régime uniforme await openCalculator(3, navBar, listPage); @@ -261,81 +338,4 @@ describe("ngHyd − calculate with linked parameters", () => { expect(td.getText()).not.toBe(""); }); }); - - it(" − bug nghyd#329 : unexpected ERR in results table", async () => { - await navBar.clickNewCalculatorButton(); - await browser.pause(200); - - // load session - await loadSession(navBar, sideNav, "./session/session-pab-chain-nghyd-329.json"); - expect(await navBar.getAllCalculatorTabs().length).toBe(3); - - // calculate PAB-Dimensions - await navBar.clickCalculatorTab(2); - await browser.pause(200); - // click "compute" button - const calcButton = await calcPage.getCalculateButton(); - await calcButton.click(); - await browser.pause(300); - // check that result is not empty - expect(await calcPage.hasResults()).toBe(true); - - // check that ERR is not present in Volume line of results table - let frt = await calcPage.getFixedResultsTable(); - let volumeRow = await calcPage.getNthRow(frt, 3); - let volumeCol = await calcPage.getNthColumn(volumeRow, 2); - let volume = await volumeCol.getText(); - expect(Number(volume)).toBeCloseTo(44.565, 3); - - // click PAB-Nombre tab - await navBar.clickCalculatorTab(0); - await browser.pause(200); - - // go back to PAB-Dimensions - await navBar.clickCalculatorTab(2); - await browser.pause(200); - - // check that ERR is not present in Volume line of results table - frt = await calcPage.getFixedResultsTable(); - volumeRow = await calcPage.getNthRow(frt, 3); - volumeCol = await calcPage.getNthColumn(volumeRow, 2); - volume = await volumeCol.getText(); - expect(Number(volume)).toBeCloseTo(44.565, 3); - }); - - it(" − a link target parameter should not be able to link to another parameter", async () => { - // create 1st PAB-Chute - await openCalculator(12, navBar, listPage); - - // upstream water level should not have link mode (only one calculator) - let Z1_1 = await calcPage.getInputById("Z1"); - expect(await calcPage.inputHasLinkModeButton(Z1_1)).toBe(false); - - // create 2nd PAB-Chute - 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 - await navBar.clickCalculatorTab(1); - await browser.pause(200); - - // link upstream water level in 2nd calculator to upstream water level in 1st one - const Z1_2 = await calcPage.getInputById("Z1"); - await calcPage.setParamMode(Z1_2, "link"); - - // back to 1st calculator - await navBar.clickCalculatorTab(0); - 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/compute-reset-chained-links.e2e-spec.ts b/e2e/compute-reset-chained-links.e2e-spec.ts index 89ef7a886..363f1038b 100644 --- a/e2e/compute-reset-chained-links.e2e-spec.ts +++ b/e2e/compute-reset-chained-links.e2e-spec.ts @@ -83,42 +83,6 @@ describe("ngHyd − compute then reset chained results − ", () => { } }); - it("when loading session-cascade-results.json, computation and results reset should be chained", async () => { - // load session file - await startPage.navigateTo(); - await loadSession(navBar, sidenav, "./session/session-cascade-results.json"); - expect(await navBar.getAllCalculatorTabs().length).toBe(3); - - // 1. get down-most module (PAB Dimensions) - await navBar.clickCalculatorTabForUid("eHh5YX"); - - // click "compute" button - const calcButton = await calcPage.getCalculateButton(); - await calcButton.click(); - await browser.pause(200); - - // check all 3 modules for results - for (let i = 0; i < 3; i++) { - await navBar.clickCalculatorTab(i); - const hasResults = await calcPage.hasResults(); - expect(hasResults).toBe(true); - } - - // 2. get up-most module (Macro-rugo) - await navBar.clickCalculatorTabForUid("MGg5OH"); - - // modify any input (for ex. "Ks") - await calcPage.getInputById("Ks").clearValue(); - await calcPage.getInputById("Ks").setValue("42"); - - // check all 3 modules for absence of results - for (let i = 0; i < 3; i++) { - await navBar.clickCalculatorTab(i); - const hasResults = await calcPage.hasResults(); - expect(hasResults).toBe(false); - } - }); - it("when loading session-results-invalidation.json, results reset should not be triggered on calculation", async () => { await newSession(navBar, sidenav); @@ -177,4 +141,40 @@ describe("ngHyd − compute then reset chained results − ", () => { const hasResults4 = await calcPage.hasResults(); expect(hasResults4).toBe(false); }); + + it("when loading session-cascade-results.json, computation and results reset should be chained", async () => { + // load session file + await startPage.navigateTo(); + await loadSession(navBar, sidenav, "./session/session-cascade-results.json"); + expect(await navBar.getAllCalculatorTabs().length).toBe(3); + + // 1. get down-most module (PAB Dimensions) + await navBar.clickCalculatorTabForUid("eHh5YX"); + + // click "compute" button + const calcButton = await calcPage.getCalculateButton(); + await calcButton.click(); + await browser.pause(200); + + // check all 3 modules for results + for (let i = 0; i < 3; i++) { + await navBar.clickCalculatorTab(i); + const hasResults = await calcPage.hasResults(); + expect(hasResults).toBe(true); + } + + // 2. get up-most module (Macro-rugo) + await navBar.clickCalculatorTabForUid("MGg5OH"); + + // modify any input (for ex. "Ks") + await calcPage.getInputById("Ks").clearValue(); + await calcPage.getInputById("Ks").setValue("42"); + + // check all 3 modules for absence of results + for (let i = 0; i < 3; i++) { + await navBar.clickCalculatorTab(i); + const hasResults = await calcPage.hasResults(); + expect(hasResults).toBe(false); + } + }); }); diff --git a/e2e/link-to-deleted-module.e2e-spec.ts b/e2e/link-to-deleted-module.e2e-spec.ts index 85aeea4ee..cb85c69d9 100644 --- a/e2e/link-to-deleted-module.e2e-spec.ts +++ b/e2e/link-to-deleted-module.e2e-spec.ts @@ -28,7 +28,6 @@ describe("linked parameter - ", () => { await prefPage.navigateTo(); await prefPage.disableEvilEmptyFields(); await browser.pause(200); - await navBar.clickNewCalculatorButton(); }); @@ -59,44 +58,4 @@ describe("linked parameter - ", () => { const inpZ2 = await calcPage.getInputById("Z2"); expect(await calcPage.inputIsInFixedMode(inpZ2)).toBe(true); }); - - it("delete linked module and duplicate remaining one", async () => { - await newSession(navBar, sideNav); - - // open "fish ladder: fall" calculator - await openCalculator(12, navBar, listPage); - - // clone calculator - await calcPage.clickCloneCalcButton(); - await browser.pause(200); - - // set DH in link mode - let inpDH = await calcPage.getInputById("DH"); - await calcPage.setParamMode(inpDH, "link"); - await browser.pause(200); - - // close 1st calculator - await navBar.middleClickCalculatorTab(0); - await browser.pause(200); - - // check DH input is in "fixed" state in remaining calculator (not the aim of this test) - inpDH = await calcPage.getInputById("DH"); - expect(await calcPage.inputIsInFixedMode(inpDH)).toBe(true); - - // set DH to calculated mode - await calcPage.setParamMode(inpDH, "cal"); - await browser.pause(100); - - // clone calculator - await calcPage.clickCloneCalcButton(); - await browser.pause(200); - - // select 1st tab - await navBar.clickCalculatorTab(0); - await browser.pause(500); - - // check DH input is in "calc" mode - inpDH = await calcPage.getInputById("DH"); - expect(await calcPage.inputIsInCalculatedMode(inpDH)).toBe(true); - }); }); diff --git a/e2e/link-to-deleted-module2.e2e-spec.ts b/e2e/link-to-deleted-module2.e2e-spec.ts new file mode 100644 index 000000000..faeaee6b7 --- /dev/null +++ b/e2e/link-to-deleted-module2.e2e-spec.ts @@ -0,0 +1,73 @@ +import { CalculatorPage } from "./calculator.po"; +import { ListPage } from "./list.po"; +import { Navbar } from "./navbar.po"; +import { PreferencesPage } from "./preferences.po"; +import { browser, $, $$, expect } from '@wdio/globals' +import { newSession, openCalculator } from "./util.po"; +import { SideNav } from "./sidenav.po"; + +describe("linked parameter - ", () => { + let calcPage: CalculatorPage; + let prefPage: PreferencesPage; + let navBar: Navbar; + let listPage: ListPage; + let sideNav: SideNav; + + beforeAll(() => { + calcPage = new CalculatorPage(); + prefPage = new PreferencesPage(); + navBar = new Navbar(); + listPage = new ListPage(); + sideNav = new SideNav(); + }); + + beforeEach(async () => { + // browser.manage().window().setPosition(2000, 30); + + // disable evil option "empty fields on module creation" + await prefPage.navigateTo(); + await prefPage.disableEvilEmptyFields(); + await browser.pause(200); + await navBar.clickNewCalculatorButton(); + }); + it("delete linked module and duplicate remaining one", async () => { + await newSession(navBar, sideNav); + + // open "fish ladder: fall" calculator + await openCalculator(12, navBar, listPage); + + await browser.pause(1000); + // clone calculator + await calcPage.clickCloneCalcButton(); + await browser.pause(200); + + // set DH in link mode + let inpDH = await calcPage.getInputById("DH"); + await calcPage.setParamMode(inpDH, "link"); + await browser.pause(200); + + // close 1st calculator + await navBar.middleClickCalculatorTab(0); + await browser.pause(200); + + // check DH input is in "fixed" state in remaining calculator (not the aim of this test) + inpDH = await calcPage.getInputById("DH"); + expect(await calcPage.inputIsInFixedMode(inpDH)).toBe(true); + + // set DH to calculated mode + await calcPage.setParamMode(inpDH, "cal"); + await browser.pause(100); + + // clone calculator + await calcPage.clickCloneCalcButton(); + await browser.pause(200); + + // select 1st tab + await navBar.clickCalculatorTab(0); + await browser.pause(500); + + // check DH input is in "calc" mode + inpDH = await calcPage.getInputById("DH"); + expect(await calcPage.inputIsInCalculatedMode(inpDH)).toBe(true); + }); +}); -- GitLab From e911ef9558831644a3354b8c67f883856f17e81a Mon Sep 17 00:00:00 2001 From: Jean-Pascal <jean-pascal.aubry@inrae.fr> Date: Thu, 28 Mar 2024 09:27:16 +0000 Subject: [PATCH 2/2] ci: add exit code status to test job Refs #666 --- scripts/run-e2e-tests.sh | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/scripts/run-e2e-tests.sh b/scripts/run-e2e-tests.sh index e30e40a55..dba4fe7b6 100644 --- a/scripts/run-e2e-tests.sh +++ b/scripts/run-e2e-tests.sh @@ -21,5 +21,15 @@ echo "************************************************************************** # Run wdio npm run e2equick +# Récupération du code d'erreur dans une variable +error_code=$? +if [ $error_code -eq 0 ]; then + echo "Cool man...Cadence man... Trace la glace c'est bob man !!!" +else + echo "Caramba! Encore raté! Hay un error! Error Code : $error_code" +fi + # Cleanup daemon processes pkill ng + +exit $error_code -- GitLab