diff --git a/e2e/session/session-solveur-chutes.json b/e2e/session/session-solveur-chutes.json new file mode 100644 index 0000000000000000000000000000000000000000..3142108ec2b5a85559d8ba422d3ad0c7a618705b --- /dev/null +++ b/e2e/session/session-solveur-chutes.json @@ -0,0 +1,124 @@ +{ + "header": { + "source": "jalhyd", + "format_version": "1.3", + "created": "2019-10-22T08:08:13.816Z" + }, + "settings": { + "precision": 0.0001, + "maxIterations": 100, + "displayPrecision": 3 + }, + "documentation": "", + "session": [ + { + "uid": "NjRvcG", + "props": { + "calcType": "PabChute" + }, + "meta": { + "title": "PAB : chute" + }, + "children": [], + "parameters": [ + { + "symbol": "Z1", + "mode": "SINGLE", + "value": 2.1513761467889907 + }, + { + "symbol": "Z2", + "mode": "SINGLE", + "value": 0.8669724770642202 + }, + { + "symbol": "DH", + "mode": "CALCUL" + } + ] + }, + { + "uid": "dnV4bD", + "props": { + "calcType": "PabNombre" + }, + "meta": { + "title": "PAB : nombre" + }, + "children": [], + "parameters": [ + { + "symbol": "DHT", + "mode": "LINK", + "targetNub": "NjRvcG", + "targetParam": "DH" + }, + { + "symbol": "N", + "mode": "SINGLE", + "value": 10 + }, + { + "symbol": "DH", + "mode": "CALCUL" + } + ] + }, + { + "uid": "OHBpcz", + "props": { + "calcType": "PabPuissance" + }, + "meta": { + "title": "PAB : puissance" + }, + "children": [], + "parameters": [ + { + "symbol": "DH", + "mode": "LINK", + "targetNub": "dnV4bD", + "targetParam": "DH" + }, + { + "symbol": "Q", + "mode": "SINGLE", + "value": 0.1 + }, + { + "symbol": "V", + "mode": "SINGLE", + "value": 0.5 + }, + { + "symbol": "PV", + "mode": "CALCUL" + } + ] + }, + { + "uid": "ODM0Z2", + "props": { + "calcType": "Solveur", + "nubToCalculate": "OHBpcz", + "searchedParameter": "NjRvcG/Z2" + }, + "meta": { + "title": "Solveur" + }, + "children": [], + "parameters": [ + { + "symbol": "Xinit", + "mode": "SINGLE", + "value": 0.5 + }, + { + "symbol": "Ytarget", + "mode": "SINGLE", + "value": 252 + } + ] + } + ] +} \ No newline at end of file diff --git a/e2e/solveur.e2e-spec.ts b/e2e/solveur.e2e-spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..84b3df0e9d0b143a9ee460b07be960195e762a82 --- /dev/null +++ b/e2e/solveur.e2e-spec.ts @@ -0,0 +1,135 @@ +import { AppPage } from "./app.po"; +import { ListPage } from "./list.po"; +import { CalculatorPage } from "./calculator.po"; +import { Navbar } from "./navbar.po"; +import { browser } from "protractor"; +import { SideNav } from "./sidenav.po"; + +/** + * Clone calculators + */ +describe("Solveur - ", () => { + let startPage: AppPage; + let listPage: ListPage; + let calcPage: CalculatorPage; + let navbar: Navbar; + let sidenav: SideNav; + + beforeEach(() => { + startPage = new AppPage(); + listPage = new ListPage(); + calcPage = new CalculatorPage(); + navbar = new Navbar(); + sidenav = new SideNav(); + }); + + it("load > calculate", async () => { + await startPage.navigateTo(); + + await navbar.clickMenuButton(); + await browser.sleep(200); + + await sidenav.clickLoadSessionButton(); + await browser.sleep(200); + + await sidenav.loadSessionFile("./session/session-solveur-chutes.json"); + await browser.sleep(200); + + expect(await navbar.getAllCalculatorTabs().count()).toBe(4); + await navbar.clickCalculatorTab(3); // n°3 should be the latest + + // check input values + expect(await calcPage.getInputById("Xinit").getAttribute("value")).toBe("0.5"); + expect(await calcPage.getInputById("Ytarget").getAttribute("value")).toBe("252"); + // check Nub to calculate + const ntc = calcPage.getSelectById("select_target_nub"); + const ntcV = await calcPage.getSelectValueText(ntc); + expect(ntcV).toContain("PAB : puissance / Puissance dissipée (PV)"); + // check searched Parameter + const sp = calcPage.getSelectById("select_searched_param"); + const spV = await calcPage.getSelectValueText(sp); + expect(spV).toContain("Z2 - Cote aval (PAB : chute)"); + + // 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("create > feed > calculate > clone > calculate clone", async () => { + await startPage.navigateTo(); + + // 1. create empty Solveur + await listPage.clickMenuEntryForCalcType(22); // Solveur + await browser.sleep(500); + + // 2. create PAB:Chute, PAB:Nombre and PAB:Puissance linked to one another + await navbar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(12); // PAB:Chute + await browser.sleep(500); + await navbar.clickNewCalculatorButton(); + + await listPage.clickMenuEntryForCalcType(13); // PAB:Nombre + await browser.sleep(500); + // link DHT to PAB:Chute.DH + const dht = calcPage.getInputById("DHT"); + await calcPage.setParamMode(dht, "link"); + // Calculate DH + const dh_nombre = calcPage.getInputById("DH"); + await calcPage.setParamMode(dh_nombre, "cal"); + + await navbar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(6); // PAB:Puissance + await browser.sleep(500); + // link DH to PAB:Nombre.DH + const dh_puiss = calcPage.getInputById("DH"); + await calcPage.setParamMode(dh_puiss, "link"); + + // Go back to Solveur + await navbar.clickCalculatorTab(0); + + await calcPage.changeSelectValue(calcPage.getSelectById("select_target_nub"), 1); // "Puissance / PV" + await browser.sleep(500); + await calcPage.changeSelectValue(calcPage.getSelectById("select_searched_param"), 2); // "Chute / Z2" + await browser.sleep(500); + await calcPage.getInputById("Ytarget").sendKeys("318"); + + // 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); + + // otherwise clickCloneCalcButton() fails with "Element is not clickable at point" + await browser.executeScript("window.scrollTo(0, 0);"); + await calcPage.clickCloneCalcButton(); + await browser.sleep(500); + + // 4. check existence of the cloned module + expect(await navbar.getAllCalculatorTabs().count()).toBe(5); + await navbar.clickCalculatorTab(4); // n°4 should be the latest + + // check that result is empty + const hasResultsClone1 = await calcPage.hasResults(); + expect(hasResultsClone1).toBe(false); + + // check that "compute" button is active + const calcButtonClone = calcPage.getCalculateButton(); + const disabledStateClone = await calcButtonClone.getAttribute("disabled"); + expect(disabledStateClone).not.toBe("true"); + // click "compute" button + await calcButtonClone.click(); + // check that result is not empty + const hasResultsClone2 = await calcPage.hasResults(); + expect(hasResultsClone2).toBe(true); + }); +});