50 lines
1.7 KiB
TypeScript
50 lines
1.7 KiB
TypeScript
import { test, expect } from '@playwright/test';
|
|
import { RoleAuthHelper } from '../../helpers/helpers';
|
|
import { ApiHelper } from '../../helpers/api-helper';
|
|
|
|
test.describe('SLA & Notification Smoke Tests', () => {
|
|
|
|
test('Celery worker and Redis are reachable', async ({ page }) => {
|
|
const resp = await page.request.get('http://localhost:8000/health/');
|
|
expect(resp.status()).toBe(200);
|
|
|
|
const body = await resp.json();
|
|
expect(body.status).toBe('ok');
|
|
});
|
|
|
|
test('complaint list page loads for SLA-eligible user', async ({ page }) => {
|
|
const auth = new RoleAuthHelper(page);
|
|
await auth.login('hospital_admin');
|
|
|
|
await page.goto('/complaints/');
|
|
await page.waitForLoadState('domcontentloaded');
|
|
|
|
const bodyText = await page.textContent('body');
|
|
expect(bodyText).toBeTruthy();
|
|
expect(bodyText).not.toContain('Server Error');
|
|
});
|
|
|
|
test('notification settings page loads', async ({ page }) => {
|
|
const auth = new RoleAuthHelper(page);
|
|
await auth.login('hospital_admin');
|
|
|
|
const resp = await page.goto('/notifications/settings/');
|
|
await page.waitForLoadState('domcontentloaded');
|
|
|
|
const bodyText = await page.textContent('body');
|
|
expect(bodyText).toBeTruthy();
|
|
expect(bodyText).not.toContain('Server Error');
|
|
|
|
const hasNotificationForm = bodyText.includes('notification') || bodyText.includes('Notification');
|
|
expect(hasNotificationForm || await page.url().includes('/notifications/')).toBeTruthy();
|
|
});
|
|
|
|
test('API can create complaint that triggers notifications', async ({ page }) => {
|
|
const api = new ApiHelper(page);
|
|
await api.authenticate('hospital_admin');
|
|
|
|
const resp = await api.get('/complaints/');
|
|
expect([200, 403]).toContain(resp.status());
|
|
});
|
|
});
|