Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New Cypress Test | Create Partial Investigation Log Update #9034

Merged
merged 5 commits into from
Nov 11, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion cypress/e2e/patient_spec/PatientHomepage.cy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,6 @@ describe("Patient Homepage present functionalities", () => {
patientHome.typePatientAdmitedBeforeDate(patientFromDate);
patientHome.typePatientAdmitedAfterDate(patientToDate);
patientHome.clickPatientFilterApply();
patientHome.verifyTotalPatientCount("1");
// verify the badge and clear the count
patientHome.verifyPatientCreatedBeforeDate(patientToDateBadge);
patientHome.verifyPatientCreatedAfterDate(patientFromDateBadge);
Expand Down
40 changes: 40 additions & 0 deletions cypress/e2e/patient_spec/PatientInvestigation.cy.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
import { PatientPage } from "pageobject/Patient/PatientCreation";
import PatientInvestigation from "pageobject/Patient/PatientInvestigation";

import LoginPage from "../../pageobject/Login/LoginPage";

describe("Patient Investigation Creation from Patient consultation page", () => {
const loginPage = new LoginPage();
const patientPage = new PatientPage();
const patientInvestigation = new PatientInvestigation();
const patientName = "Dummy Patient 12";

Comment on lines +6 to +11
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Improve test data management and suite description.

The hardcoded patient name ("Dummy Patient 12") should be moved to a test data fixture for better maintainability. Also, consider making the test suite description more specific to the functionality being tested.

+import testData from '../../fixtures/patient.json';
+
-describe("Patient Investigation Creation from Patient consultation page", () => {
+describe("Patient Investigation Workflow - Consultation Page", () => {
   const loginPage = new LoginPage();
   const patientPage = new PatientPage();
   const patientInvestigation = new PatientInvestigation();
-  const patientName = "Dummy Patient 12";
+  const { patientName } = testData;

Committable suggestion skipped: line range outside the PR's diff.

before(() => {
loginPage.loginAsDistrictAdmin();
cy.saveLocalStorage();
});

beforeEach(() => {
cy.restoreLocalStorage();
cy.clearLocalStorage(/filters--.+/);
cy.awaitUrl("/patients");
});

it("Create a investigation for a patient and verify its reflection", () => {
patientPage.visitPatient(patientName);
patientInvestigation.clickInvestigationTab();
patientInvestigation.clickLogLabResults();
patientInvestigation.selectInvestigationOption([
"Haematology",
"Urine Test",
]);
cy.submitButton("Save Investigation");
cy.verifyNotification("Please Enter at least one value");
cy.closeNotification();
// Temporary workflow for investigation since we dont have dummy data and moving away from existing module
});

afterEach(() => {
cy.saveLocalStorage();
});
Comment on lines +37 to +39
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Add proper test data cleanup.

The afterEach hook only handles localStorage. Consider adding cleanup steps to ensure complete test isolation:

  1. Delete created investigations
  2. Reset any modified patient data
 afterEach(() => {
   cy.saveLocalStorage();
+  // Clean up created investigations
+  cy.task('dbCleanup', { 
+    collection: 'investigations',
+    filter: { patientName }
+  });
 });

Committable suggestion skipped: line range outside the PR's diff.

});
10 changes: 8 additions & 2 deletions cypress/pageobject/Patient/PatientInvestigation.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,9 @@
class PatientInvestigation {
clickAddInvestigation() {
cy.get("#investigation").scrollIntoView();
cy.verifyAndClickElement("#investigation", "Add Investigation");
}

clickInvestigationTab() {
cy.get("#consultation_tab_nav").scrollIntoView();
cy.verifyAndClickElement("#consultation_tab_nav", "Investigations");
}

Expand All @@ -19,6 +17,14 @@ class PatientInvestigation {
cy.get("#investigation-checkbox").click();
}

selectInvestigationOption(options: string[]) {
cy.clickAndMultiSelectOption("#investigations", options);
}

clickLogLabResults() {
cy.verifyAndClickElement("#log-lab-results", "Log Lab Results");
}

selectInvestigationFrequency(frequency: string) {
cy.get("#investigation-frequency").click();
cy.contains("button", frequency).should("be.visible").click();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ export const ConsultationInvestigationsTab = (props: ConsultationTabProps) => {
<PageTitle title="Investigations" hideBack={true} breadcrumbs={false} />
<div className="pt-6">
<ButtonV2
id="log-lab-results"
authorizeFor={NonReadOnlyUsers}
disabled={!props.patientData.is_active}
onClick={() =>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ export default function ViewInvestigations(props: {
</div>
<div className="flex items-center space-x-2">
<ButtonV2
id="view-investigation"
onClick={() =>
navigate(
`/facility/${facilityId}/patient/${patientId}/consultation/${consultationId}/investigation/${investigationSession.session_external_id}`,
Expand All @@ -73,6 +74,7 @@ export default function ViewInvestigations(props: {
{t("view")}
</ButtonV2>
<ButtonV2
id="print-investigation"
onClick={() =>
navigate(
`/facility/${facilityId}/patient/${patientId}/consultation/${consultationId}/investigation/${investigationSession.session_external_id}/print`,
Expand Down
Loading