84 lines
3.6 KiB
TypeScript
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);
|
|
});
|
|
});
|