cypress/e2e/patient_spec/patient_encounter.cy.ts
import { PatientEncounter } from "@/pageObject/Patients/PatientEncounter";import { PatientPrescription } from "@/pageObject/Patients/PatientPrescription";import { FacilityCreation } from "@/pageObject/facility/FacilityCreation";import { generateRandomCharacter } from "@/utils/commonUtils";import { viewPort } from "@/utils/viewPort"; const facilityCreation = new FacilityCreation();const patientEncounter = new PatientEncounter();const patientPrescription = new PatientPrescription(); describe("Patient Encounter Questionnaire", () => {Similar blocks of code found in 7 locations. Consider refactoring. beforeEach(() => { cy.viewport(viewPort.desktop1080p.width, viewPort.desktop1080p.height); cy.loginByApi("devnurse"); cy.visit("/"); }); it("verify the 500 character limit in input field", () => { const characterMaxLimit = generateRandomCharacter({ charLimit: 510, }); facilityCreation.selectFacility("GHC Payyanur"); patientEncounter .navigateToEncounters() .clickInProgressEncounterFilter() .openFirstEncounterDetails() .clickUpdateEncounter() .addQuestionnaire("Question Type") .fillQuestionnaire({ text: characterMaxLimit, }); patientPrescription.clickSubmitQuestionnaire(); cy.verifyNotification("Failed to submit questionnaire"); cy.verifyErrorMessages([ { label: "Text", message: "Text too long. Max allowed size is 500" }, ]); }); it("Create a new ABG questionnaire and verify the values", () => { const abgValues = { pco2: "120", po2: "80", }; facilityCreation.selectFacility("GHC Payyanur"); // Chain the methods instead of multiple separate calls patientEncounter .navigateToEncounters() .clickInProgressEncounterFilter() .openFirstEncounterDetails() .clickUpdateEncounter() .addQuestionnaire("Arterial Blood Gas") .fillQuestionnaire(abgValues); patientPrescription.submitQuestionnaire(); patientEncounter.verifyOverviewValues(Object.values(abgValues)); });});