HH/e2e/tests/workflows/communication-request.spec.ts
ismail c5f76b3855
Some checks are pending
Build and Push Docker Image / build (push) Waiting to run
updates
2026-05-11 14:45:30 +03:00

84 lines
3.6 KiB
TypeScript

import { test, expect } from '@playwright/test';
import { RoleAuthHelper, submitContentForm } from '../../helpers/helpers';
test.describe('Communication Request Tests', () => {
test.setTimeout(120000);
test.describe.configure({ mode: 'serial' });
test('source user raises communication request', async ({ page }) => {
const auth = new RoleAuthHelper(page);
await auth.login('source_user');
await page.waitForTimeout(800);
await page.goto('/px-sources/communication-requests/new/');
await page.waitForLoadState('domcontentloaded');
await page.waitForTimeout(2500);
const nameField = page.locator('input[name="patient_name"], #id_patient_name');
if (await nameField.count() > 0) { await nameField.fill(`E2E Test Patient ${Date.now()}`); await page.waitForTimeout(300); }
const phoneField = page.locator('input[name="patient_phone"], #id_patient_phone');
if (await phoneField.count() > 0) { await phoneField.fill('0509998877'); await page.waitForTimeout(300); }
const msgField = page.locator('textarea[name="message"], #id_message');
if (await msgField.count() > 0) { await msgField.fill(`E2E communication request test ${Date.now()}. Please contact patient family.`); await page.waitForTimeout(300); }
const reasonField = page.locator('select[name="reason"], #id_reason');
if (await reasonField.count() > 0) { await reasonField.selectOption({ index: 1 }); await page.waitForTimeout(300); }
await submitContentForm(page);
expect(page.url()).not.toContain('/new/');
await page.waitForTimeout(800);
});
test('admin can see communication request list', async ({ page }) => {
const auth = new RoleAuthHelper(page);
await auth.login('hospital_admin');
await page.waitForTimeout(800);
await page.goto('/px-sources/communication-requests/manage/');
await page.waitForLoadState('domcontentloaded');
await page.waitForTimeout(2500);
const pageText = (await page.textContent('body')) || '';
expect(pageText.length).toBeGreaterThan(0);
await page.waitForTimeout(800);
});
test('admin handles communication request', async ({ page }) => {
const auth = new RoleAuthHelper(page);
await auth.login('hospital_admin');
await page.waitForTimeout(800);
await page.goto('/px-sources/communication-requests/manage/');
await page.waitForLoadState('domcontentloaded');
await page.waitForTimeout(2500);
const pageText = (await page.textContent('body')) || '';
if (pageText.includes('404') || pageText.includes('403') || pageText.includes("don't have permission")) {
test.skip();
return;
}
const links = page.locator('a[href*="communication-requests"]');
const count = await links.count();
if (count > 0) {
const firstHref = await links.first().getAttribute('href') || '';
if (firstHref) {
await page.goto(firstHref);
await page.waitForLoadState('domcontentloaded');
await page.waitForTimeout(2500);
const statusField = page.locator('select[name="status"], #id_status');
if (await statusField.count() > 0) {
const opts = await statusField.locator('option').count();
if (opts > 1) { await statusField.selectOption({ index: 1 }); await page.waitForTimeout(400); }
}
const notesField = page.locator('textarea[name="resolution_notes"], #id_resolution_notes, textarea[name="notes"], #id_notes');
if (await notesField.count() > 0) { await notesField.fill('E2E test - admin has contacted patient.'); await page.waitForTimeout(400); }
await submitContentForm(page);
}
}
expect(page.url()).toBeTruthy();
await page.waitForTimeout(800);
});
});