Skip to content

Commit

Permalink
Merge branch 'develop' into primary-lucene
Browse files Browse the repository at this point in the history
  • Loading branch information
mozzy11 authored Aug 8, 2024
2 parents 8656f99 + b6751ab commit 17add82
Show file tree
Hide file tree
Showing 7 changed files with 220 additions and 2 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/frontend-qa.yml
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ jobs:
submodules: recursive

- name: Run OpenELS image
run: docker-compose -f build.docker-compose.yml up -d
run: docker compose -f build.docker-compose.yml up -d

- name: Sleep for 2 minutes
run: sleep 2m
Expand Down
1 change: 1 addition & 0 deletions frontend/cypress.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ module.exports = defineConfig({
"cypress/e2e/workplan.cy.js",
"cypress/e2e/nonConform.cy.js",
"cypress/e2e/modifyOrder.cy.js",
"cypress/e2e/batchOrderEntry.cy.js",
];
return config;
},
Expand Down
112 changes: 112 additions & 0 deletions frontend/cypress/e2e/batchOrderEntry.cy.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
import LoginPage from "../pages/LoginPage";

let homePage = null;
let loginPage = null;
let batchOrder = null;

const navigateToBatchOrderEntryPage = () => {
homePage = loginPage.goToHomePage();
batchOrder = homePage.goToBatchOrderEntry();
};

before(() => {
cy.fixture("BatchOrder").as("batchOrderData");
});

before("login", () => {
loginPage = new LoginPage();
loginPage.visit();
});

describe("Batch Order Entry On Demand", function () {
before("navigate to Batch Order Entry Page", function () {
navigateToBatchOrderEntryPage();
});

it("User visits Batch Order Entry Setup Page", function () {
batchOrder.visitSetupPage();
batchOrder.checkNextButtonDisabled();
});

it("Should Select Form And Samples", function () {
cy.fixture("BatchOrder").then((batchOrderData) => {
batchOrder.selectForm(batchOrderData.formTypeRoutine);
batchOrder.selectSampleType(batchOrderData.sampleType);
batchOrder.selectPanel(3);
});
});

it("Should Select Methods, Site Name and Move to Next Page", function () {
cy.fixture("BatchOrder").then((batchOrderData) => {
batchOrder.selectMethod(batchOrderData.methodOnDemand);
batchOrder.checkFacilityCheckbox();
batchOrder.enterSiteName(batchOrderData.siteName);
batchOrder.checkNextButtonEnabled();
});
});

it("Should Visit Batch Order Entry Page", function () {
batchOrder.visitBatchOrderEntryPage();
});

it("Should Validate Fields And Generate BarCode", function () {
cy.fixture("BatchOrder").then((batchOrderData) => {
batchOrder.validateField("#tag-54", batchOrderData.sampleType);
batchOrder.validateField("#tag-56", batchOrderData.panel);
batchOrder.validateField("#tag-58", batchOrderData.facility);
batchOrder.checkNextLabel().should("be.disabled");
batchOrder.clickGenerateAndSaveBarcode();
batchOrder.checkNextLabel().should("be.visible");
});
});
});

describe("Batch Order Entry Pre Printed", function () {
before("navigate to Batch Order Entry Page", function () {
navigateToBatchOrderEntryPage();
});

it("User visits Batch Order Entry Setup Page", function () {
batchOrder.visitSetupPage();
batchOrder.checkNextButtonDisabled();
});

it("Should Select Form And Samples", function () {
cy.fixture("BatchOrder").then((batchOrderData) => {
batchOrder.selectForm(batchOrderData.formTypeRoutine);
batchOrder.selectSampleType(batchOrderData.sampleType);
batchOrder.selectPanel(3);
});
});

it("Should Select Methods, Site Name and Move to Next Page", function () {
cy.fixture("BatchOrder").then((batchOrderData) => {
batchOrder.selectMethod(batchOrderData.methodPrePrinted);
batchOrder.checkFacilityCheckbox();
batchOrder.checkPatientCheckbox();
batchOrder.enterSiteName(batchOrderData.siteName);
batchOrder.checkNextButtonEnabled();
});
});

it("Should Visit Batch Order Entry Page", function () {
batchOrder.visitBatchOrderEntryPage();
});

it("Should Validate Fields", function () {
cy.fixture("BatchOrder").then((batchOrderData) => {
batchOrder.validateField("#tag-58", batchOrderData.sampleType);
batchOrder.validateField("#tag-60", batchOrderData.panel);
batchOrder.validateField("#tag-62", batchOrderData.facility);
});
});

it("Should Search For Patient And Generate Barcode", function () {
batchOrder.selectPatientGender(2);
batchOrder.clickSearchPatient();
batchOrder.selectPatient(1);

batchOrder.clickGenerateButton();
batchOrder.saveOrder();
});
});
9 changes: 9 additions & 0 deletions frontend/cypress/fixtures/BatchOrder.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"formTypeRoutine": "Routine",
"sampleType": "Serum",
"methodOnDemand": "On Demand",
"methodPrePrinted": "Pre-Printed",
"siteName": "CAMES",
"panel": "Western blot HIV",
"facility": "279 - CAMES MAN"
}
86 changes: 86 additions & 0 deletions frontend/cypress/pages/BatchOrderEntryPage.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
class BatchOrderEntry {
visitSetupPage() {
cy.get("h2").should("contain.text", "Batch Order Entry Setup");
}

checkNextButtonDisabled() {
cy.get(":nth-child(12) > .cds--btn").should("be.disabled");
}

selectForm(formType) {
cy.get("#form-dropdown").select(formType);
}

selectSampleType(sampleType) {
cy.get("#selectSampleType").should("be.visible").select(sampleType);
}

selectPanel(panelIndex) {
cy.get(
`:nth-child(${panelIndex}) > :nth-child(5) > .cds--checkbox-label`,
).click();
}

checkNextLabel() {
return cy.get(":nth-child(8) > .cds--btn");
}

clickGenerateButton() {
cy.get(":nth-child(2) > .cds--link").click();
}

selectMethod(method) {
cy.get("#method-dropdown").select(method);
}

checkFacilityCheckbox() {
cy.get(":nth-child(5) > .cds--form-item > .cds--checkbox-label").click();
}

checkPatientCheckbox() {
cy.get(":nth-child(6) > .cds--form-item > .cds--checkbox-label").click();
}

enterSiteName(siteName) {
cy.get("#siteName").type(siteName);
cy.get(".suggestion-active").should("be.visible").click();
}

checkNextButtonEnabled() {
cy.get(":nth-child(12) > .cds--btn").should("not.be.disabled").click();
}

visitBatchOrderEntryPage() {
cy.get("h2").should("contain.text", "Batch Order Entry");
}

validateField(tagId, expectedText) {
cy.get(tagId).should("contain.text", expectedText);
}

clickGenerateAndSaveBarcode() {
cy.get(".cds--link > p").click();
}

saveOrder() {
cy.get(":nth-child(6) > .cds--btn").click();
}

checkNextButtonVisible() {
cy.get(":nth-child(8) > .cds--btn").should("be.visible");
}

selectPatientGender(genderIndex) {
cy.get(`:nth-child(${genderIndex}) > .cds--radio-button__label`).click(); // 2 for male, 3 for female
}

clickSearchPatient() {
cy.get("#local_search").click();
}

selectPatient(rowIndex) {
cy.get(`tbody > :nth-child(${rowIndex}) > :nth-child(1)`).click();
}
}

export default BatchOrderEntry;
8 changes: 8 additions & 0 deletions frontend/cypress/pages/HomePage.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import OrderEntityPage from "./OrderEntityPage";
import ModifyOrderPage from "./ModifyOrderPage";
import WorkPlan from "./WorkPlan";
import NonConform from "./NonConformPage";
import BatchOrderEntry from "./BatchOrderEntryPage";

class HomePage {
constructor() {}
Expand All @@ -29,6 +30,13 @@ class HomePage {
}).click();
}

goToBatchOrderEntry() {
this.openNavigationMenu();
cy.get("#menu_sample").click();
cy.get("#menu_sample_batch_entry").click();
return new BatchOrderEntry();
}

goToPatientEntry() {
this.openNavigationMenu();
cy.get("#menu_patient").click();
Expand Down
4 changes: 3 additions & 1 deletion frontend/src/components/batchOrderEntry/SampleBatchEntry.js
Original file line number Diff line number Diff line change
Expand Up @@ -490,7 +490,9 @@ const SampleBatchEntry = (props) => {
)}
<Grid>
<Button
onClick={() => window.location.href("/SampleBatchEntrySetup")}
onClick={() =>
(window.location.href = "/SampleBatchEntrySetup")
}
>
<FormattedMessage id="label.button.finish" />
</Button>
Expand Down

0 comments on commit 17add82

Please sign in to comment.