diff --git a/frontend/cypress.config.js b/frontend/cypress.config.js index 0755f9764e..6c11da3c32 100755 --- a/frontend/cypress.config.js +++ b/frontend/cypress.config.js @@ -15,6 +15,7 @@ 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 0000000000..38b5a4a781 --- /dev/null +++ b/frontend/cypress/e2e/dashboard.cy.js @@ -0,0 +1,84 @@ +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 0000000000..4ebee5f489 --- /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(4)").should("have.text", "John"); + } + + validatePreStatus(order) { + cy.get(":nth-child(1) > .tile-value").should("have.text", "1"); + cy.get("tbody > tr > :nth-child(4)").should("have.text", "John"); + 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 c22181af3f..b076716ecc 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,20 @@ 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;