Skip to content

Commit

Permalink
C2C-355: E2E test observations for TB monitoring form
Browse files Browse the repository at this point in the history
  • Loading branch information
kdaud committed Oct 30, 2024
1 parent 4414349 commit 0b6179e
Show file tree
Hide file tree
Showing 5 changed files with 46 additions and 33 deletions.
7 changes: 4 additions & 3 deletions e2e/tests/bahmni-odoo-flows.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,7 @@ test('Editing the details of a Bahmni patient with a synced drug order edits the
// setup
await bahmni.navigateToMedications();
await bahmni.createMedication();

await odoo.open();
await odoo.searchCustomer();
await expect(page.locator('tr.o_data_row:nth-child(1) td:nth-child(4)')).toHaveText(`${patientName.givenName + ' ' + patientName.familyName}`);
Expand All @@ -151,7 +152,7 @@ test('Revising a synced OpenMRS drug order edits the corresponding Odoo quotatio
await expect(page.locator('tr.o_data_row:nth-child(1) td:nth-child(4)')).toHaveText(`${patientName.givenName + ' ' + patientName.familyName}`);
await page.getByRole('cell', { name: `${patientName.givenName + ' ' + patientName.familyName }` }).click();
await expect(page.locator('td.o_data_cell.o_field_cell.o_list_many2one.o_product_configurator_cell.o_required_modifier>span')).toContainText('Aspirine Co 81mg');
await expect(page.locator('td.o_data_cell.o_field_cell.o_list_text.o_section_and_note_text_cell.o_required_modifier span')).toContainText('Aspirine Co 81mg | 560.0 Ampoule(s) | 2.0 Application(s) - Q3H - 5 Semaine(s)');
await expect(page.locator('td.o_data_cell.o_field_cell.o_list_text.o_section_and_note_text_cell.o_required_modifier span')).toContainText('Aspirine Co 81mg | 40.0 Comprime(s) | 1.0 Comprime(s) - Q3H - 5 Jour(s)');

// replay
await bahmni.navigateToPatientDashboard();
Expand All @@ -163,7 +164,7 @@ test('Revising a synced OpenMRS drug order edits the corresponding Odoo quotatio
await odoo.searchCustomer();
await page.getByRole('cell', { name: `${patientName.givenName + ' ' + patientName.familyName }` }).click();
await expect(page.locator('td.o_data_cell.o_field_cell.o_list_many2one.o_product_configurator_cell.o_required_modifier>span')).toContainText('Aspirine Co 81mg');
await expect(page.locator('td.o_data_cell.o_field_cell.o_list_text.o_section_and_note_text_cell.o_required_modifier span')).toContainText('Aspirine Co 81mg | 120.0 Comprime(s) | 4.0 Comprime(s) - Q4H - 5 Jour(s)');
await expect(page.locator('td.o_data_cell.o_field_cell.o_list_text.o_section_and_note_text_cell.o_required_modifier span')).toContainText('Aspirine Co 81mg | 60.0 Comprime(s) | 2.0 Comprime(s) - Q4H - 5 Jour(s)');
});

test('Discontinuing a synced Bahmni drug order for an Odoo customer with a single quotation line removes the corresponding quotation.', async ({ page }) => {
Expand All @@ -176,7 +177,7 @@ test('Discontinuing a synced Bahmni drug order for an Odoo customer with a singl
await expect(page.locator('tr.o_data_row:nth-child(1) td:nth-child(8) span')).toHaveText('Quotation');
await page.getByRole('cell', { name: `${patientName.givenName + ' ' + patientName.familyName }` }).click();
await expect(page.locator('td.o_data_cell.o_field_cell.o_list_many2one.o_product_configurator_cell.o_required_modifier>span')).toContainText('Aspirine Co 81mg');
await expect(page.locator('td.o_data_cell.o_field_cell.o_list_text.o_section_and_note_text_cell.o_required_modifier span')).toContainText('Aspirine Co 81mg | 560.0 Ampoule(s) | 2.0 Application(s) - Q3H - 5 Semaine(s)');
await expect(page.locator('td.o_data_cell.o_field_cell.o_list_text.o_section_and_note_text_cell.o_required_modifier span')).toContainText('Aspirine Co 81mg | 40.0 Comprime(s) | 1.0 Comprime(s) - Q3H - 5 Jour(s)');

// replay
await bahmni.navigateToPatientDashboard();
Expand Down
19 changes: 4 additions & 15 deletions e2e/tests/medications.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,8 @@ test('Create, revise and discontinue a drug order.', async ({ page }) => {
const drugNameSelector = await page.locator('#ordered-drug-orders strong.drug-name').first();
const medicationDetailsSelector = await page.locator('#ordered-drug-orders div.drug-details').first();
await expect(drugNameSelector).toHaveText('Aspirine Co 81mg (Comprime)');
await expect(medicationDetailsSelector).toContainText('2 Application(s)');
await expect(medicationDetailsSelector).toContainText('Q3H');
await expect(medicationDetailsSelector).toContainText('Estomac vide');
await expect(medicationDetailsSelector).toContainText('Topique');
await expect(medicationDetailsSelector).toContainText('1 Comprime(s)');
await page.locator('#dashboard-link span.patient-name').click();
const medicationSelector = await page.locator('treatment-table td.drug.active-drug span');
await expect(medicationSelector).toHaveText('Aspirine Co 81mg (Comprime)');
Expand All @@ -38,19 +36,10 @@ test('Create, revise and discontinue a drug order.', async ({ page }) => {
await page.locator('#view-content :nth-child(1).btn--success').click();
await page.getByText('Medications', { exact: true }).click();
await page.locator('#ordered-drug-orders button:nth-child(1) i').first().click();
await page.locator('#uniform-dose').clear();
await page.locator('#uniform-dose').fill('4');
await page.locator('#frequency').selectOption('string:Q4H');
await page.locator('#uniform-dose-unit').selectOption('string:Comprime(s)');
await page.locator('#route').selectOption('string:Inhalation');
await page.getByRole('button', { name: 'Add' }).click();
await bahmni.save();
await expect(medicationDetailsSelector).not.toContainText('2 Application(s)');
await expect(medicationDetailsSelector).toContainText('4 Comprime(s)');
await bahmni.editMedicationDetails();
await expect(medicationDetailsSelector).toContainText('2 Comprime(s)');
await expect(medicationDetailsSelector).not.toContainText('Q3H');
await expect(medicationDetailsSelector).toContainText('Q4H,');
await expect(medicationDetailsSelector).not.toContainText('Ampoule(s)');
await expect(medicationDetailsSelector).toContainText('Inhalation');
await expect(medicationDetailsSelector).toContainText('Q4H');

// verify cancellation
await expect(drugNameSelector).toContainText('Aspirine Co 81mg (Comprime)');
Expand Down
26 changes: 26 additions & 0 deletions e2e/tests/observation-forms.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -674,6 +674,32 @@ test('Systems review form should save observations.', async ({ page }) => {
await expect(page.locator('#observationSection').getByText('Motor Skills Disorder')).toBeVisible();
});

test('TB monitoring form should save observations.', async ({ page }) => {
// setup
await bahmni.navigateToForms();
await expect(page.getByText('Suivi TB')).toBeVisible();
await page.getByRole('button', { name: 'Suivi TB' }).click();
await expect(page.getByText('Suivi TB added successfully')).toBeVisible();

// replay
await bahmni.fillTBMonitoringForm();

// verify
await page.locator('#dashboard-link span.patient-name').click();
await delay(5000);
await expect(page.locator('a.visit')).toBeVisible();
await page.locator('a.visit').click();
await expect(page.locator('#observationSection').getByText('TB Signs and symptoms')).toBeVisible();
await expect(page.locator('#observationSection').getByText('Cough')).toBeVisible();
await expect(page.locator('#observationSection').getByText('Evening fever')).toBeVisible();
await expect(page.locator('#observationSection').getByText('Loss of appetite')).toBeVisible();
await expect(page.locator('#observationSection').getByText('Weight Loss')).toBeVisible();
await expect(page.locator('#observationSection').getByText('Response to treatment')).toBeVisible();
await expect(page.locator('#observationSection').getByText('Regular follow-up tests to check for bacterial load')).toBeVisible();
await expect(page.locator('#observationSection').getByText('Adjustments based on response and resistance patterns')).toBeVisible();
await expect(page.locator('#observationSection').getByText('Schedule regular check-ups for progress evaluation')).toBeVisible();
});

test('Health history form should save observations.', async ({ page }) => {
// setup
await bahmni.navigateToForms();
Expand Down
25 changes: 11 additions & 14 deletions e2e/utils/functions/bahmni.ts
Original file line number Diff line number Diff line change
Expand Up @@ -127,27 +127,22 @@ export class Bahmni {
async createMedication() {
await this.page.locator('#drug-name').type('Aspirine Co 81mg');
await this.page.getByText('Aspirine Co 81mg (Comprime)').click();
await this.page.locator('#uniform-dose').fill('2');
await this.page.locator('#uniform-dose-unit').selectOption('string:Application(s)');
await this.page.locator('#frequency').selectOption('string:Q3H');
await this.page.locator('#route').selectOption('string:Topique');
await this.page.locator('#uniform-dose').fill('1');
await this.page.locator('#frequency').selectOption('Q3H');
await this.page.locator('#duration').fill('5');
await this.page.locator('#duration-unit').selectOption('string:Semaine(s)');
await this.page.locator('#total-quantity-unit').selectOption('string:Ampoule(s)');
await this.page.locator('#instructions').selectOption('string:Estomac vide');
await this.page.locator('#additional-instructions').fill('Take after a meal');
await expect(this.page.locator('#quantity')).toHaveValue('560');
await expect(this.page.locator('#quantity')).toHaveValue('40');
await this.page.locator('#instructions').selectOption('Après le repas');
await this.page.locator('#additional-instructions').fill('Take medication as directed');
await this.page.getByRole('button', { name: /add/i }).click();
await this.save();
}

async editMedicationDetails() {
await this.page.locator('i.fa.fa-edit').first().click();
await this.page.locator('#uniform-dose').clear();
await this.page.locator('#uniform-dose').fill('4');
await this.page.locator('#frequency').selectOption('string:Q4H');
await this.page.locator('#uniform-dose-unit').selectOption('string:Comprime(s)');
await this.page.locator('#route').selectOption('string:Inhalation');
await this.page.locator('#uniform-dose').fill('2');
await this.page.locator('#frequency').selectOption('Q4H');
await expect(this.page.locator('#quantity')).toHaveValue('60');
await this.page.getByRole('button', { name: /add/i }).click();
await this.save();
}
Expand Down Expand Up @@ -324,7 +319,9 @@ export class Bahmni {
await this.page.getByRole('button', { name: 'Evening fever' }).click();
await this.page.getByRole('button', { name: 'Loss of appetite' }).click();
await this.page.getByRole('button', { name: 'Weight Loss' }).click();
await this.page.locator('div textarea').nth(0).fill('Conduct bacteriologic examination of patient\'s sputum or other specimens.');
await this.page.locator('div textarea').nth(0).fill('Regular follow-up tests to check for bacterial load');
await this.page.locator('div textarea').nth(1).fill('Adjustments based on response and resistance patterns');
await this.page.locator('div textarea').nth(2).fill('Schedule regular check-ups for progress evaluation');
await this.save();
}

Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"license": "MPL-2.0",
"description": "These are end-to-end automated tests covering Bahmni distro C2C workflows",
"scripts": {
"e2e-tests-c2c": "npx playwright test"
"e2e-tests-c2c": "npx playwright test medications"
},
"keywords": [],
"devDependencies": {
Expand Down

0 comments on commit 0b6179e

Please sign in to comment.