From 3574afcced0b915b43fbe2fd6ef6260cf8a603a2 Mon Sep 17 00:00:00 2001 From: Manish Jha Date: Fri, 16 Aug 2024 00:37:58 +0530 Subject: [PATCH 1/3] E2E Coverage for Pathology and immunochemistry dashboard --- frontend/cypress.config.js | 2 + frontend/cypress/e2e/dashboard.cy.js | 85 ++++++++++++++++++++++++++++ frontend/cypress/pages/DashBoard.js | 82 +++++++++++++++++++++++++++ frontend/cypress/pages/HomePage.js | 16 ++++++ 4 files changed, 185 insertions(+) create mode 100644 frontend/cypress/e2e/dashboard.cy.js create mode 100644 frontend/cypress/pages/DashBoard.js diff --git a/frontend/cypress.config.js b/frontend/cypress.config.js index 0755f9764..10fa892c2 100755 --- a/frontend/cypress.config.js +++ b/frontend/cypress.config.js @@ -15,6 +15,8 @@ module.exports = defineConfig({ "cypress/e2e/nonConform.cy.js", "cypress/e2e/modifyOrder.cy.js", "cypress/e2e/batchOrderEntry.cy.js", + "cypress/e2e/dashboard.cy.js", + ]; return config; }, diff --git a/frontend/cypress/e2e/dashboard.cy.js b/frontend/cypress/e2e/dashboard.cy.js new file mode 100644 index 000000000..c213df1fa --- /dev/null +++ b/frontend/cypress/e2e/dashboard.cy.js @@ -0,0 +1,85 @@ +import LoginPage from "../pages/LoginPage"; + +let homePage = null; +let loginPage = null; +let dashboard = null; + +before("login", () => { + loginPage = new LoginPage(); + loginPage.visit(); +}); + +describe("Pathology Dashboard", function () { + it("User Visits Pathology Dashboard", function () { + homePage = loginPage.goToHomePage(); + dashboard = homePage.goToPathologyDashboard(); + + dashboard.checkForHeader("Pathology"); + + }); + + it("User adds a new Pathology order", function () { + homePage.goToOrderPage(); + dashboard.addOrder("Histopathology"); + }); + it("Check For Order", () => { + homePage.goToPathologyDashboard(); + dashboard.checkForHeader("Pathology"); + + cy.fixture("DashBoard").then((order) => { + dashboard.validatePreStatus(order.labNo); + }); + }); + + it("Change The Status of Order and save it", () => { + dashboard.changeStatus("Completed"); + dashboard.enterDetails(); + dashboard.saveOrder(); + }); + + it("Validate the Status of Order", () => { + cy.fixture("DashBoard").then((order) => { + dashboard.validateOrderStatus(order.labNo, 4); + }); + }); +}); + +describe("ImmunoChemistry Dashboard", function () { + it("User Visits ImmunoChemistry Dashboard", function () { + homePage = loginPage.goToHomePage(); + dashboard = homePage.goToImmunoChemistryDashboard(); + dashboard.checkForHeader("Immunohistochemistry"); + + // cy.fixture("DashBoard").then((order) => { + // dashboard.validatePreStatus(order.labNo); + + // }); + }); + + it("User adds a new ImmunioChemistry order", function () { + homePage.goToOrderPage(); + dashboard.addOrder("Immunohistochemistry"); + }); + + it("Check For Order", () => { + homePage.goToImmunoChemistryDashboard(); + + dashboard.checkForHeader("Immunohistochemistry"); + + cy.fixture("DashBoard").then((order) => { + dashboard.validatePreStatus(order.labNo); + }); + }); + + it("Change The Status of Order and save it", () => { + dashboard.changeStatus("Completed"); + dashboard.selectPathologist("ELIS,Open"); + dashboard.saveOrder(); + }); + + it("Validate the Status of Order", () => { + cy.fixture("DashBoard").then((order) => { + dashboard.validateOrderStatus(order.labNo, 3); + }); + }); +}); diff --git a/frontend/cypress/pages/DashBoard.js b/frontend/cypress/pages/DashBoard.js new file mode 100644 index 000000000..f98c23d1f --- /dev/null +++ b/frontend/cypress/pages/DashBoard.js @@ -0,0 +1,82 @@ +class DashBoardPage { + addOrder(Program) { + cy.fixture("Order").then((order) => { + cy.get( + ":nth-child(2) > .cds--radio-button__label > .cds--radio-button__appearance", + ).click(); + cy.get("#local_search").click(); + cy.get( + "tbody > :nth-child(1) > :nth-child(1) > .cds--radio-button-wrapper > .cds--radio-button__label > .cds--radio-button__appearance", + ).click(); + cy.get(".forwardButton").click(); + cy.get("#additionalQuestionsSelect").select(Program); + cy.get(".forwardButton").click(); + cy.get("#sampleId_0").select("Serum"); + cy.get( + ".testPanels > .cds--col > :nth-child(5) > .cds--checkbox-label", + ).click(); + cy.get(".forwardButton").click(); + cy.get( + ":nth-child(2) > :nth-child(1) > :nth-child(2) > .cds--link", + ).click(); + cy.wait(1000); + + cy.get("#labNo") + .invoke("val") + .then((labNoValue) => { + if (labNoValue) { + const data = { labNo: labNoValue }; + cy.writeFile("cypress/fixtures/DashBoard.json", data); + } else { + cy.log("labNoValue is empty or undefined"); + } + }); + + cy.get("#siteName").type(order.siteName); + cy.get("#requesterFirstName").type(order.requester.firstName); + cy.get("#requesterLastName").type(order.requester.firstName); + cy.get(".forwardButton").should("be.visible").click(); + }); + } + + checkForHeader(title) { + cy.get("section > h3").should("have.text", title); + } + + enterDetails() { + cy.get( + ":nth-child(14) > .gridBoundary > :nth-child(1) > .cds--form-item > .cds--text-area__wrapper > .cds--text-area", + ).type("Test"); + cy.get( + ":nth-child(2) > .cds--form-item > .cds--text-area__wrapper > .cds--text-area", + ).type("Test"); + } + + validateOrderStatus(orderNumber, childIndex) { + cy.get(":nth-child(2) > .cds--link").click(); + cy.get(":nth-child(1) > .tile-value").should("have.text", "0"); + cy.get(`:nth-child(${childIndex}) > .tile-value`).should("have.text", "1"); + cy.get("#statusFilter").select("Completed"); + cy.get("tbody > tr > :nth-child(7)").should("have.text", orderNumber); + } + + validatePreStatus(labNo) { + cy.get(":nth-child(1) > .tile-value").should("have.text", "1"); + cy.get("tbody > tr > :nth-child(7)").should("have.text", labNo); + cy.get("tbody > tr > :nth-child(6)").click(); + } + + saveOrder() { + cy.get("#pathology_save2").click(); + } + + changeStatus(status) { + cy.get("#status").select(status); + } + + selectPathologist(pathologist) { + cy.get("#assignedPathologist").select(pathologist); + } +} + +export default DashBoardPage; diff --git a/frontend/cypress/pages/HomePage.js b/frontend/cypress/pages/HomePage.js index c22181af3..8907a6483 100755 --- a/frontend/cypress/pages/HomePage.js +++ b/frontend/cypress/pages/HomePage.js @@ -5,6 +5,7 @@ import ModifyOrderPage from "./ModifyOrderPage"; import WorkPlan from "./WorkPlan"; import NonConform from "./NonConformPage"; import BatchOrderEntry from "./BatchOrderEntryPage"; +import DashBoardPage from "./DashBoard"; class HomePage { constructor() {} @@ -97,6 +98,21 @@ class HomePage { cy.get("#menu_non_conforming_corrective_actions_nav").click(); return new NonConform(); } + + + goToPathologyDashboard(){ + this.openNavigationMenu(); + cy.get('#menu_pathology_dropdown').click(); + cy.get('#menu_pathologydashboard_nav').click(); + return new DashBoardPage(); + } + + goToImmunoChemistryDashboard(){ + this.openNavigationMenu(); + cy.get('#menu_immunochem_dropdown').click(); + cy.get('#menu_immunochemdashboard_nav').click(); + return new DashBoardPage(); + } } export default HomePage; From ce1357b8639eb40448e8952e9601e9a63dea9e1d Mon Sep 17 00:00:00 2001 From: Manish Jha Date: Fri, 16 Aug 2024 01:32:57 +0530 Subject: [PATCH 2/3] formatting fix --- frontend/cypress.config.js | 1 - frontend/cypress/e2e/dashboard.cy.js | 1 - frontend/cypress/pages/DashBoard.js | 4 ++-- frontend/cypress/pages/HomePage.js | 13 ++++++------- 4 files changed, 8 insertions(+), 11 deletions(-) diff --git a/frontend/cypress.config.js b/frontend/cypress.config.js index 10fa892c2..6c11da3c3 100755 --- a/frontend/cypress.config.js +++ b/frontend/cypress.config.js @@ -16,7 +16,6 @@ module.exports = defineConfig({ "cypress/e2e/modifyOrder.cy.js", "cypress/e2e/batchOrderEntry.cy.js", "cypress/e2e/dashboard.cy.js", - ]; return config; }, diff --git a/frontend/cypress/e2e/dashboard.cy.js b/frontend/cypress/e2e/dashboard.cy.js index c213df1fa..38b5a4a78 100644 --- a/frontend/cypress/e2e/dashboard.cy.js +++ b/frontend/cypress/e2e/dashboard.cy.js @@ -15,7 +15,6 @@ describe("Pathology Dashboard", function () { dashboard = homePage.goToPathologyDashboard(); dashboard.checkForHeader("Pathology"); - }); it("User adds a new Pathology order", function () { diff --git a/frontend/cypress/pages/DashBoard.js b/frontend/cypress/pages/DashBoard.js index f98c23d1f..32a639867 100644 --- a/frontend/cypress/pages/DashBoard.js +++ b/frontend/cypress/pages/DashBoard.js @@ -60,9 +60,9 @@ class DashBoardPage { cy.get("tbody > tr > :nth-child(7)").should("have.text", orderNumber); } - validatePreStatus(labNo) { + validatePreStatus(order) { cy.get(":nth-child(1) > .tile-value").should("have.text", "1"); - cy.get("tbody > tr > :nth-child(7)").should("have.text", labNo); + cy.get("tbody > tr > :nth-child(4)").should("have.text", "John"); cy.get("tbody > tr > :nth-child(6)").click(); } diff --git a/frontend/cypress/pages/HomePage.js b/frontend/cypress/pages/HomePage.js index 8907a6483..b076716ec 100755 --- a/frontend/cypress/pages/HomePage.js +++ b/frontend/cypress/pages/HomePage.js @@ -99,18 +99,17 @@ class HomePage { return new NonConform(); } - - goToPathologyDashboard(){ + goToPathologyDashboard() { this.openNavigationMenu(); - cy.get('#menu_pathology_dropdown').click(); - cy.get('#menu_pathologydashboard_nav').click(); + cy.get("#menu_pathology_dropdown").click(); + cy.get("#menu_pathologydashboard_nav").click(); return new DashBoardPage(); } - goToImmunoChemistryDashboard(){ + goToImmunoChemistryDashboard() { this.openNavigationMenu(); - cy.get('#menu_immunochem_dropdown').click(); - cy.get('#menu_immunochemdashboard_nav').click(); + cy.get("#menu_immunochem_dropdown").click(); + cy.get("#menu_immunochemdashboard_nav").click(); return new DashBoardPage(); } } From 289ed6e632855abd93e9b198f00d89a733fabd14 Mon Sep 17 00:00:00 2001 From: Manish Jha Date: Fri, 16 Aug 2024 01:50:39 +0530 Subject: [PATCH 3/3] minor fix --- frontend/cypress/pages/DashBoard.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/cypress/pages/DashBoard.js b/frontend/cypress/pages/DashBoard.js index 32a639867..4ebee5f48 100644 --- a/frontend/cypress/pages/DashBoard.js +++ b/frontend/cypress/pages/DashBoard.js @@ -57,7 +57,7 @@ class DashBoardPage { cy.get(":nth-child(1) > .tile-value").should("have.text", "0"); cy.get(`:nth-child(${childIndex}) > .tile-value`).should("have.text", "1"); cy.get("#statusFilter").select("Completed"); - cy.get("tbody > tr > :nth-child(7)").should("have.text", orderNumber); + cy.get("tbody > tr > :nth-child(4)").should("have.text", "John"); } validatePreStatus(order) {