HH/e2e/tests/security/sla-notifications.spec.ts
2026-04-08 17:13:35 +03:00

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());
});
});