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