From 77de25fff5cbf8bc533bd9309363425e76b5a388 Mon Sep 17 00:00:00 2001 From: "mathias.chouet" <mathias.chouet@irstea.fr> Date: Thu, 28 Mar 2019 11:46:33 +0100 Subject: [PATCH] =?UTF-8?q?Nouveau=20test=20e2e=20pour=20le=20calcul=20de?= =?UTF-8?q?=20param=C3=A8tres=20li=C3=A9s?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- e2e/calculate-all-params.e2e-spec.ts | 4 - e2e/calculate-linked-params.e2e-spec.ts | 490 ++++++++++++++++++++++++ e2e/calculator.po.ts | 14 +- e2e/load-linked-params.e2e-spec.ts | 2 +- 4 files changed, 504 insertions(+), 6 deletions(-) create mode 100644 e2e/calculate-linked-params.e2e-spec.ts diff --git a/e2e/calculate-all-params.e2e-spec.ts b/e2e/calculate-all-params.e2e-spec.ts index eaff7587d..49d6cc12c 100644 --- a/e2e/calculate-all-params.e2e-spec.ts +++ b/e2e/calculate-all-params.e2e-spec.ts @@ -1,9 +1,5 @@ -import { AppPage } from "./app.po"; import { ListPage } from "./list.po"; import { CalculatorPage } from "./calculator.po"; -import { Navbar } from "./navbar.po"; -import { SideNav } from "./sidenav.po"; -import { browser } from "protractor"; /** * For all calculators, try to calculate every parameter: check that only one parameter diff --git a/e2e/calculate-linked-params.e2e-spec.ts b/e2e/calculate-linked-params.e2e-spec.ts new file mode 100644 index 000000000..179b55f54 --- /dev/null +++ b/e2e/calculate-linked-params.e2e-spec.ts @@ -0,0 +1,490 @@ +import { AppPage } from "./app.po"; +import { ListPage } from "./list.po"; +import { CalculatorPage } from "./calculator.po"; +import { Navbar } from "./navbar.po"; +import { SideNav } from "./sidenav.po"; +import { browser } from "protractor"; + +/** + * Uses an example configuration to calculate : + * - with a parameter linked to a single parameter + * - with a parameter linked to a single parameter, plus local variated parameter + * - with a parameter linked to a variated parameter + * - with a parameter linked to a single result + * - with a parameter linked to a single result, plus local variated parameter + * - with a parameter linked to a variated result + * - with a parameter linked to a single extra result + * - with a parameter linked to a single extra result, plus local variated parameter + * - with a parameter linked to a variated extra result + * + * => plus all those combinations in indeirect link mode (linked parameter target + * is also a linked parameter) + */ +describe("ngHyd − calculate with linked parameters", () => { + let listPage: ListPage; + let calcPage: CalculatorPage; + let navBar: Navbar; + let startPage: AppPage; + + beforeEach(() => { + listPage = new ListPage(); + calcPage = new CalculatorPage(); + navBar = new Navbar(); + startPage = new AppPage(); + + }); + + async function computeAndCheckPresenceOfResults() { + // check that "compute" button is active + const calcButton = calcPage.getCalculateButton(); + const disabledState = await calcButton.getAttribute("disabled"); + expect(disabledState).not.toBe("true"); + // click "compute" button + await calcButton.click(); + // check that result is not empty + const hasResults = await calcPage.hasResults(); + expect(hasResults).toBe(true); + } + + it(" − direct links : parameter linked to a single parameter", async () => { + // create a Régime uniforme + await startPage.navigateTo(); + await listPage.clickMenuEntryForCalcType(3); + + // create a PAB : dimensions + await navBar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(5); + // link Y to Y (R uniforme) + const Y = calcPage.getInputById("Y"); + await calcPage.setParamMode(Y, "link"); + const sel = await calcPage.getLinkedValueSelect(Y); + await calcPage.changeSelectValue(sel, 1); + + await computeAndCheckPresenceOfResults(); + }); + + it(" − direct links : parameter linked to a single parameter, plus local variated parameter", async () => { + // create a Régime uniforme + await startPage.navigateTo(); + await listPage.clickMenuEntryForCalcType(3); + + // create a PAB : dimensions + await navBar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(5); + // link Y to Y (R uniforme) + const Y = calcPage.getInputById("Y"); + await calcPage.setParamMode(Y, "link"); + const sel = await calcPage.getLinkedValueSelect(Y); + await calcPage.changeSelectValue(sel, 1); + // vary W + const W = calcPage.getInputById("W"); + await calcPage.setParamMode(W, "var"); + + await computeAndCheckPresenceOfResults(); + }); + + it(" − direct links : parameter linked to a variated parameter", async () => { + // create a Régime uniforme + await startPage.navigateTo(); + await listPage.clickMenuEntryForCalcType(3); + // vary Y + const Y1 = calcPage.getInputById("Y"); + await calcPage.setParamMode(Y1, "var"); + + // create a PAB : dimensions + await navBar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(5); + // link Y to Y (R uniforme) + const Y2 = calcPage.getInputById("Y"); + await calcPage.setParamMode(Y2, "link"); + const sel = await calcPage.getLinkedValueSelect(Y2); + await calcPage.changeSelectValue(sel, 1); + + await computeAndCheckPresenceOfResults(); + }); + + it(" − direct links : parameter linked to a single result", async () => { + // create a Régime uniforme + await startPage.navigateTo(); + await listPage.clickMenuEntryForCalcType(3); + // calculate Y + const Y1 = calcPage.getInputById("Y"); + await calcPage.setParamMode(Y1, "cal"); + + // create a PAB : dimensions + await navBar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(5); + // link Y to Y (R uniforme) + const Y2 = calcPage.getInputById("Y"); + await calcPage.setParamMode(Y2, "link"); + const sel = await calcPage.getLinkedValueSelect(Y2); + await calcPage.changeSelectValue(sel, 1); + + await computeAndCheckPresenceOfResults(); + }); + + it(" − direct links : parameter linked to a single result, plus local variated parameter", async () => { + // create a Régime uniforme + await startPage.navigateTo(); + await listPage.clickMenuEntryForCalcType(3); + // calculate Y + const Y1 = calcPage.getInputById("Y"); + await calcPage.setParamMode(Y1, "cal"); + + // create a PAB : dimensions + await navBar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(5); + // link Y to Y (R uniforme) + const Y2 = calcPage.getInputById("Y"); + await calcPage.setParamMode(Y2, "link"); + const sel = await calcPage.getLinkedValueSelect(Y2); + await calcPage.changeSelectValue(sel, 1); + // vary W + const W = calcPage.getInputById("W"); + await calcPage.setParamMode(W, "var"); + + await computeAndCheckPresenceOfResults(); + }); + + it(" − direct links : parameter linked to a variated result", async () => { + // create a Régime uniforme + await startPage.navigateTo(); + await listPage.clickMenuEntryForCalcType(3); + // vary Q + const Q = calcPage.getInputById("Q"); + await calcPage.setParamMode(Q, "var"); + // calculate Y + const Y1 = calcPage.getInputById("Y"); + await calcPage.setParamMode(Y1, "cal"); + + // create a PAB : dimensions + await navBar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(5); + // link Y to Y (R uniforme) + const Y2 = calcPage.getInputById("Y"); + await calcPage.setParamMode(Y2, "link"); + const sel = await calcPage.getLinkedValueSelect(Y2); + await calcPage.changeSelectValue(sel, 1); + + await computeAndCheckPresenceOfResults(); + }); + + it(" − direct links : parameter linked to a single extra result", async () => { + // create a Déversoirs dénoyés + await startPage.navigateTo(); + await listPage.clickMenuEntryForCalcType(9); + + // create a Régime uniforme + await navBar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(3); + // link Q to CvQT (Déversoirs dénoyés) + const Q = calcPage.getInputById("Q"); + await calcPage.setParamMode(Q, "link"); + const sel = await calcPage.getLinkedValueSelect(Q); + await calcPage.changeSelectValue(sel, 1); + + await computeAndCheckPresenceOfResults(); + }); + + it(" − direct links : parameter linked to a single extra result, plus local variated parameter", async () => { + // create a Déversoirs dénoyés + await startPage.navigateTo(); + await listPage.clickMenuEntryForCalcType(9); + + // create a Régime uniforme + await navBar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(3); + // link Q to CvQT (Déversoirs dénoyés) + const Q = calcPage.getInputById("Q"); + await calcPage.setParamMode(Q, "link"); + const sel = await calcPage.getLinkedValueSelect(Q); + await calcPage.changeSelectValue(sel, 1); + // vary YB + const YB = calcPage.getInputById("YB"); + await calcPage.setParamMode(YB, "var"); + + await computeAndCheckPresenceOfResults(); + }); + + it(" − direct links : parameter linked to a variated extra result", async () => { + // create a Déversoirs dénoyés + await startPage.navigateTo(); + await listPage.clickMenuEntryForCalcType(9); + // vary BR + const BR = calcPage.getInputById("BR"); + await calcPage.setParamMode(BR, "var"); + + // create a Régime uniforme + await navBar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(3); + // link Q to CvQT (Déversoirs dénoyés) + const Q = calcPage.getInputById("Q"); + await calcPage.setParamMode(Q, "link"); + const sel = await calcPage.getLinkedValueSelect(Q); + await calcPage.changeSelectValue(sel, 1); + + await computeAndCheckPresenceOfResults(); + }); + + it(" − indirect links : parameter linked to a single parameter", async () => { + // create a Régime uniforme + await startPage.navigateTo(); + await listPage.clickMenuEntryForCalcType(3); + + // create a Section paramétrée + await navBar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(2); + // link Y to Y (R uniforme) + const Yproxy = calcPage.getInputById("Y"); + await calcPage.setParamMode(Yproxy, "link"); + const selYproxy = await calcPage.getLinkedValueSelect(Yproxy); + await calcPage.changeSelectValue(selYproxy, 1); + + // create a PAB : dimensions + await navBar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(5); + // link Y to Y (Sec param) + const Y = calcPage.getInputById("Y"); + await calcPage.setParamMode(Yproxy, "link"); + const sel = await calcPage.getLinkedValueSelect(Yproxy); + await calcPage.changeSelectValue(selYproxy, 3); + + await computeAndCheckPresenceOfResults(); + }); + + it(" − indirect links : parameter linked to a single parameter, plus local variated parameter", async () => { + // create a Régime uniforme + await startPage.navigateTo(); + await listPage.clickMenuEntryForCalcType(3); + + // create a Section paramétrée + await navBar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(2); + // link Y to Y (R uniforme) + const Yproxy = calcPage.getInputById("Y"); + await calcPage.setParamMode(Yproxy, "link"); + const selYproxy = await calcPage.getLinkedValueSelect(Yproxy); + await calcPage.changeSelectValue(selYproxy, 1); + + // create a PAB : dimensions + await navBar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(5); + // link Y to Y (Sec param) + const Y = calcPage.getInputById("Y"); + await calcPage.setParamMode(Y, "link"); + const sel = await calcPage.getLinkedValueSelect(Y); + await calcPage.changeSelectValue(sel, 3); + // vary W + const W = calcPage.getInputById("W"); + await calcPage.setParamMode(W, "var"); + + await computeAndCheckPresenceOfResults(); + }); + + it(" − indirect links : parameter linked to a variated parameter", async () => { + // create a Régime uniforme + await startPage.navigateTo(); + await listPage.clickMenuEntryForCalcType(3); + // vary Y + const Y1 = calcPage.getInputById("Y"); + await calcPage.setParamMode(Y1, "var"); + + // create a Section paramétrée + await navBar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(2); + // link Y to Y (R uniforme) + const Yproxy = calcPage.getInputById("Y"); + await calcPage.setParamMode(Yproxy, "link"); + const selYproxy = await calcPage.getLinkedValueSelect(Yproxy); + await calcPage.changeSelectValue(selYproxy, 1); + + // create a PAB : dimensions + await navBar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(5); + // link Y to Y (Sec param) + const Y2 = calcPage.getInputById("Y"); + await calcPage.setParamMode(Y2, "link"); + const sel = await calcPage.getLinkedValueSelect(Y2); + await calcPage.changeSelectValue(sel, 3); + + await computeAndCheckPresenceOfResults(); + }); + + it(" − indirect links : parameter linked to a single result", async () => { + // create a Régime uniforme + await startPage.navigateTo(); + await listPage.clickMenuEntryForCalcType(3); + // calculate Y + const Y1 = calcPage.getInputById("Y"); + await calcPage.setParamMode(Y1, "cal"); + + // create a Section paramétrée + await navBar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(2); + // link Y to Y (R uniforme) + const Yproxy = calcPage.getInputById("Y"); + await calcPage.setParamMode(Yproxy, "link"); + const selYproxy = await calcPage.getLinkedValueSelect(Yproxy); + await calcPage.changeSelectValue(selYproxy, 1); + + // create a PAB : dimensions + await navBar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(5); + // link Y to Y (Sec param) + const Y2 = calcPage.getInputById("Y"); + await calcPage.setParamMode(Y2, "link"); + const sel = await calcPage.getLinkedValueSelect(Y2); + await calcPage.changeSelectValue(sel, 3); + + await computeAndCheckPresenceOfResults(); + }); + + it(" − indirect links : parameter linked to a single result, plus local variated parameter", async () => { + // create a Régime uniforme + await startPage.navigateTo(); + await listPage.clickMenuEntryForCalcType(3); + // calculate Y + const Y1 = calcPage.getInputById("Y"); + await calcPage.setParamMode(Y1, "cal"); + + // create a Section paramétrée + await navBar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(2); + // link Y to Y (R uniforme) + const Yproxy = calcPage.getInputById("Y"); + await calcPage.setParamMode(Yproxy, "link"); + const selYproxy = await calcPage.getLinkedValueSelect(Yproxy); + await calcPage.changeSelectValue(selYproxy, 1); + + // create a PAB : dimensions + await navBar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(5); + // link Y to Y (Sec param) + const Y2 = calcPage.getInputById("Y"); + await calcPage.setParamMode(Y2, "link"); + const sel = await calcPage.getLinkedValueSelect(Y2); + await calcPage.changeSelectValue(sel, 3); + // vary W + const W = calcPage.getInputById("W"); + await calcPage.setParamMode(W, "var"); + + await computeAndCheckPresenceOfResults(); + }); + + it(" − indirect links : parameter linked to a variated result", async () => { + // create a Régime uniforme + await startPage.navigateTo(); + await listPage.clickMenuEntryForCalcType(3); + // vary Q + const Q = calcPage.getInputById("Q"); + await calcPage.setParamMode(Q, "var"); + // calculate Y + const Y1 = calcPage.getInputById("Y"); + await calcPage.setParamMode(Y1, "cal"); + + // create a Section paramétrée + await navBar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(2); + // link Y to Y (R uniforme) + const Yproxy = calcPage.getInputById("Y"); + await calcPage.setParamMode(Yproxy, "link"); + const selYproxy = await calcPage.getLinkedValueSelect(Yproxy); + await calcPage.changeSelectValue(selYproxy, 1); + + // create a PAB : dimensions + await navBar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(5); + // link Y to Y (Sec param) + const Y2 = calcPage.getInputById("Y"); + await calcPage.setParamMode(Y2, "link"); + const sel = await calcPage.getLinkedValueSelect(Y2); + await calcPage.changeSelectValue(sel, 3); + + await computeAndCheckPresenceOfResults(); + }); + + it(" − indirect links : parameter linked to a single extra result", async () => { + // create a Déversoirs dénoyés + await startPage.navigateTo(); + await listPage.clickMenuEntryForCalcType(9); + + // create a Section paramétrée + await navBar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(2); + // link Q to CvQT (Déversoirs dénoyés) + const Qproxy = calcPage.getInputById("Q"); + await calcPage.setParamMode(Qproxy, "link"); + const selYproxy = await calcPage.getLinkedValueSelect(Qproxy); + await calcPage.changeSelectValue(selYproxy, 1); + + // create a Régime uniforme + await navBar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(3); + // link Q to CvQT (Sec param) + const Q = calcPage.getInputById("Q"); + await calcPage.setParamMode(Q, "link"); + const sel = await calcPage.getLinkedValueSelect(Q); + await calcPage.changeSelectValue(sel, 3); + + await computeAndCheckPresenceOfResults(); + }); + + it(" − indirect links : parameter linked to a single extra result, plus local variated parameter", async () => { + // create a Déversoirs dénoyés + await startPage.navigateTo(); + await listPage.clickMenuEntryForCalcType(9); + + // create a Section paramétrée + await navBar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(2); + // link Q to CvQT (Déversoirs dénoyés) + const Qproxy = calcPage.getInputById("Q"); + await calcPage.setParamMode(Qproxy, "link"); + const selYproxy = await calcPage.getLinkedValueSelect(Qproxy); + await calcPage.changeSelectValue(selYproxy, 1); + + // create a Régime uniforme + await navBar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(3); + // link Q to CvQT (Sec param) + const Q = calcPage.getInputById("Q"); + await calcPage.setParamMode(Q, "link"); + const sel = await calcPage.getLinkedValueSelect(Q); + await calcPage.changeSelectValue(sel, 3); + // vary YB + const YB = calcPage.getInputById("YB"); + await calcPage.setParamMode(YB, "var"); + + await computeAndCheckPresenceOfResults(); + }); + + it(" − indirect links : parameter linked to a variated extra result", async () => { + // create a Déversoirs dénoyés + await startPage.navigateTo(); + await listPage.clickMenuEntryForCalcType(9); + // vary BR + const BR = calcPage.getInputById("BR"); + await calcPage.setParamMode(BR, "var"); + + // create a Section paramétrée + await navBar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(2); + // link Q to CvQT (Déversoirs dénoyés) + const Qproxy = calcPage.getInputById("Q"); + await calcPage.setParamMode(Qproxy, "link"); + const selYproxy = await calcPage.getLinkedValueSelect(Qproxy); + await calcPage.changeSelectValue(selYproxy, 1); + + // create a Régime uniforme + await navBar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(3); + // link Q to CvQT (Sec param) + const Q = calcPage.getInputById("Q"); + await calcPage.setParamMode(Q, "link"); + const sel = await calcPage.getLinkedValueSelect(Q); + await calcPage.changeSelectValue(sel, 3); + + await computeAndCheckPresenceOfResults(); + }); + +}); diff --git a/e2e/calculator.po.ts b/e2e/calculator.po.ts index b47d2ef68..69cc7a7b0 100644 --- a/e2e/calculator.po.ts +++ b/e2e/calculator.po.ts @@ -120,11 +120,23 @@ export class CalculatorPage { await button.click(); // for "var" mode, close the modal if (mode === "var") { - await browser.sleep(500); + await browser.sleep(500); // wait for the modal to appear await element(by.css("dialog-edit-param-values .mat-dialog-actions button")).click(); + await browser.sleep(500); // wait for the navbar to reappear after modal dismissal } } + /** + * @param elt an <input> element + */ + async getLinkedValueSelect(elt: ElementFinder): Promise<ElementFinder> { + // get parent (div.container) + const container = await this.findParentContainer(elt) as ElementFinder; + // find <select> + const select = container.element(by.css("param-link mat-select")); + return select; + } + /** * Returns an object containing all the calculator's inputs values, indexed * by parameter ID diff --git a/e2e/load-linked-params.e2e-spec.ts b/e2e/load-linked-params.e2e-spec.ts index 2d6e91a20..bac4ab8ee 100644 --- a/e2e/load-linked-params.e2e-spec.ts +++ b/e2e/load-linked-params.e2e-spec.ts @@ -10,7 +10,7 @@ import { browser } from "protractor"; * from one to another * @TODO les valeurs des Select sont comparées au français, pas très générique :/ */ -describe("ngHyd − load session with multiple linked parameters", () => { +describe("ngHyd − load session with multiple linked parameters − ", () => { let startPage: AppPage; let listPage: ListPage; let calcPage: CalculatorPage; -- GitLab