From a1fa77c2f90898dee253626d1c655ee8db298efa Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fran=C3=A7ois=20Grand?= <francois.grand@inrae.fr>
Date: Wed, 6 Apr 2022 11:56:01 +0200
Subject: [PATCH] fix: some e2e tests fail due to "empty fields on calculator
 creation" option

---
 e2e/calc-all-examples.e2e-spec.ts             | 30 +++++++++++++++----
 e2e/compute-reset-chained-links.e2e-spec.ts   | 13 +++++++-
 e2e/load-linked-params.e2e-spec.ts            |  4 +++
 protractor.conf.js                            |  2 +-
 .../app-setup/app-setup.component.html        |  2 +-
 5 files changed, 43 insertions(+), 8 deletions(-)

diff --git a/e2e/calc-all-examples.e2e-spec.ts b/e2e/calc-all-examples.e2e-spec.ts
index 957364fc6..4dae4b1dd 100644
--- a/e2e/calc-all-examples.e2e-spec.ts
+++ b/e2e/calc-all-examples.e2e-spec.ts
@@ -2,6 +2,8 @@ import { ListPage } from "./list.po";
 import { CalculatorPage } from "./calculator.po";
 import { Navbar } from "./navbar.po";
 import { browser, by, element } from "protractor";
+import { PreferencesPage } from "./preferences.po";
+import { SideNav } from "./sidenav.po";
 
 /**
  * Calculate all modules of all examples
@@ -11,22 +13,40 @@ describe("ngHyd − example sessions −", async () => {
     let listPage: ListPage;
     let calcPage: CalculatorPage;
     let navbar: Navbar;
+    let prefPage: PreferencesPage;
+    let sideNav: SideNav;
 
     beforeAll(() => {
         jasmine.DEFAULT_TIMEOUT_INTERVAL = 100 * 1000;
-    });
-
-    it("calcul de tous les modules de tous les exemples −", async () => {
         listPage = new ListPage();
         calcPage = new CalculatorPage();
         navbar = new Navbar();
-        listPage = new ListPage();
+        prefPage = new PreferencesPage();
+        sideNav = new SideNav();
+    });
+
+    it("calcul de tous les modules de tous les exemples −", async () => {
+        // disable evil option "empty fields on module creation"
+        await prefPage.navigateTo();
+        await prefPage.disableEvilEmptyFields();
+        await browser.sleep(200);
 
         // for each calculator
         let lastExampleFound = true;
         let i = 0;
         while (lastExampleFound) {
-            await listPage.navigateTo();
+            if (i == 0) {
+                // start page
+                await navbar.clickNewCalculatorButton();
+                await browser.sleep(200);
+            }
+            else {
+                // empty session
+                await navbar.clickMenuButton();
+                await browser.sleep(200);
+                await sideNav.clickNewSessionButton();
+                await browser.sleep(200);
+            }
 
             const examples = await element.all(by.css("#examples-list .load-example"));
             if (examples.length > i) {
diff --git a/e2e/compute-reset-chained-links.e2e-spec.ts b/e2e/compute-reset-chained-links.e2e-spec.ts
index 2767c9d96..65e2e4e95 100644
--- a/e2e/compute-reset-chained-links.e2e-spec.ts
+++ b/e2e/compute-reset-chained-links.e2e-spec.ts
@@ -3,6 +3,7 @@ import { CalculatorPage } from "./calculator.po";
 import { Navbar } from "./navbar.po";
 import { SideNav } from "./sidenav.po";
 import { browser } from "protractor";
+import { PreferencesPage } from "./preferences.po";
 
 /**
  * Load a session containing 3 calculators, having linked parameters
@@ -16,12 +17,14 @@ describe("ngHyd − compute then reset chained results − ", () => {
     let calcPage: CalculatorPage;
     let navbar: Navbar;
     let sidenav: SideNav;
+    let prefPage: PreferencesPage;
 
     function init() {
         startPage = new AppPage();
         calcPage = new CalculatorPage();
         navbar = new Navbar();
         sidenav = new SideNav();
+        prefPage = new PreferencesPage();
     }
     beforeEach(init);
 
@@ -128,8 +131,16 @@ describe("ngHyd − compute then reset chained results − ", () => {
     });
 
     it("when loading session-results-invalidation.json, results reset should not be triggered on calculation", async () => {
+        // disable evil option "empty fields on module creation"
+        await prefPage.navigateTo();
+        await prefPage.disableEvilEmptyFields();
+        await browser.sleep(200);
+
+        // start page
+        await navbar.clickNewCalculatorButton();
+        await browser.sleep(200);
+
         // load session file
-        await startPage.navigateTo();
         await navbar.clickMenuButton();
         await browser.sleep(200);
         await sidenav.clickLoadSessionButton();
diff --git a/e2e/load-linked-params.e2e-spec.ts b/e2e/load-linked-params.e2e-spec.ts
index 8e87b5f94..00b262f24 100644
--- a/e2e/load-linked-params.e2e-spec.ts
+++ b/e2e/load-linked-params.e2e-spec.ts
@@ -34,6 +34,10 @@ describe("ngHyd − load session with multiple linked parameters − ", () => {
         await prefPage.navigateTo();
         await prefPage.changeLanguage(1); // fr
         await browser.sleep(200);
+        // disable evil option "empty fields on module creation"
+        await prefPage.disableEvilEmptyFields();
+        await browser.sleep(200);
+        // start page
         await navbar.clickNewCalculatorButton();
     });
 
diff --git a/protractor.conf.js b/protractor.conf.js
index 3077d88c4..d474c230b 100644
--- a/protractor.conf.js
+++ b/protractor.conf.js
@@ -61,7 +61,7 @@ exports.config = {
     require('ts-node').register({
       project: 'e2e/tsconfig.e2e.json'
     });
-    jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: "pretty" } }));
+    jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } }));
     browser.manage().window().setSize(1600, 1000);
     browser.driver.sendChromiumCommand('Page.setDownloadBehavior', {
       behavior: 'allow',
diff --git a/src/app/components/app-setup/app-setup.component.html b/src/app/components/app-setup/app-setup.component.html
index 87f52357a..bcd394688 100644
--- a/src/app/components/app-setup/app-setup.component.html
+++ b/src/app/components/app-setup/app-setup.component.html
@@ -102,4 +102,4 @@
         </mat-card-content>
 
     </mat-card>
-</div>
\ No newline at end of file
+</div>
-- 
GitLab