Fix Playwright BASE_URL handling and failed UAT report tests
This commit is contained in:
+10
-9
@@ -28,6 +28,7 @@
|
||||
|
||||
const { test, expect } = require('@playwright/test');
|
||||
require('dotenv').config();
|
||||
const { BASE_URL, absoluteUrl } = require('../fixtures/url');
|
||||
const { login } = require('../fixtures/auth');
|
||||
const { expectNoBackendError, readBody, blockedOrNotFound } = require('../fixtures/v204-helpers');
|
||||
const { expectBlockedOrSafe } = require('../fixtures/assertions');
|
||||
@@ -132,7 +133,7 @@ test.describe('EMP-HR: Attendance management', () => {
|
||||
});
|
||||
|
||||
test('[V25-EMP-ATT-003] EMP-ATT-003 Manual attendance CSRF-less POST is rejected', async ({ request }) => {
|
||||
const resp = await request.post(`${process.env.BASE_URL}/employees/attendance/manual`, {
|
||||
const resp = await request.post(`${BASE_URL}/employees/attendance/manual`, {
|
||||
form: { employee_id: idOr('EMPLOYEE_A_ID'), attendance_date: '2025-01-01', status: 'present', csrf_token: '' },
|
||||
}).catch(() => null);
|
||||
if (!resp || [404, 405].includes(resp.status())) test.skip(true, 'Route not available');
|
||||
@@ -142,7 +143,7 @@ test.describe('EMP-HR: Attendance management', () => {
|
||||
test('[V25-EMP-ATT-004] EMP-ATT-004 Attendance review CSRF-less POST is rejected', async ({ request }) => {
|
||||
skipIfMissing('ATTENDANCE_ID');
|
||||
const resp = await request.post(
|
||||
`${process.env.BASE_URL}/employees/attendance/${idOr('ATTENDANCE_ID')}/review`,
|
||||
`${BASE_URL}/employees/attendance/${idOr('ATTENDANCE_ID')}/review`,
|
||||
{ form: { approval_status: 'approved', csrf_token: '' } }
|
||||
).catch(() => null);
|
||||
if (!resp || [404, 405].includes(resp.status())) test.skip(true, 'Route not available');
|
||||
@@ -184,7 +185,7 @@ test.describe('EMP-HR: Leave management', () => {
|
||||
test('[V25-EMP-LEAVE-005] EMP-LEAVE-005 Leave review CSRF-less POST is rejected', async ({ request }) => {
|
||||
skipIfMissing('LEAVE_REQUEST_ID');
|
||||
const resp = await request.post(
|
||||
`${process.env.BASE_URL}/employees/leave/${idOr('LEAVE_REQUEST_ID')}/review`,
|
||||
`${BASE_URL}/employees/leave/${idOr('LEAVE_REQUEST_ID')}/review`,
|
||||
{ form: { status: 'approved', csrf_token: '' } }
|
||||
).catch(() => null);
|
||||
if (!resp || [404, 405].includes(resp.status())) test.skip(true, 'Route not available');
|
||||
@@ -270,7 +271,7 @@ test.describe('EMP-HR: Employee documents', () => {
|
||||
test('[V25-EMP-DOC-004] EMP-DOC-004 Document review CSRF-less POST is rejected', async ({ request }) => {
|
||||
skipIfMissing('EMP_DOCUMENT_ID');
|
||||
const resp = await request.post(
|
||||
`${process.env.BASE_URL}/employees/documents/${idOr('EMP_DOCUMENT_ID')}/review`,
|
||||
`${BASE_URL}/employees/documents/${idOr('EMP_DOCUMENT_ID')}/review`,
|
||||
{ form: { status: 'verified', csrf_token: '' } }
|
||||
).catch(() => null);
|
||||
if (!resp || [404, 405].includes(resp.status())) test.skip(true, 'Route not available');
|
||||
@@ -313,7 +314,7 @@ test.describe('EMP-HR: Payroll', () => {
|
||||
test('[V25-EMP-PAY-005] EMP-PAY-005 Payroll run generate CSRF-less POST is rejected', async ({ request }) => {
|
||||
skipIfMissing('PAYROLL_RUN_ID');
|
||||
const resp = await request.post(
|
||||
`${process.env.BASE_URL}/employees/payroll/runs/${idOr('PAYROLL_RUN_ID')}/generate`,
|
||||
`${BASE_URL}/employees/payroll/runs/${idOr('PAYROLL_RUN_ID')}/generate`,
|
||||
{ form: { csrf_token: '' } }
|
||||
).catch(() => null);
|
||||
if (!resp || [404, 405].includes(resp.status())) test.skip(true, 'Route not available');
|
||||
@@ -323,7 +324,7 @@ test.describe('EMP-HR: Payroll', () => {
|
||||
test('[V25-EMP-PAY-006] EMP-PAY-006 Payroll run approve CSRF-less POST is rejected', async ({ request }) => {
|
||||
skipIfMissing('PAYROLL_RUN_ID');
|
||||
const resp = await request.post(
|
||||
`${process.env.BASE_URL}/employees/payroll/runs/${idOr('PAYROLL_RUN_ID')}/approve`,
|
||||
`${BASE_URL}/employees/payroll/runs/${idOr('PAYROLL_RUN_ID')}/approve`,
|
||||
{ form: { csrf_token: '' } }
|
||||
).catch(() => null);
|
||||
if (!resp || [404, 405].includes(resp.status())) test.skip(true, 'Route not available');
|
||||
@@ -421,7 +422,7 @@ test.describe('EMP-ESS: Employee self-service portal', () => {
|
||||
});
|
||||
|
||||
test('[V25-EMP-ESS-010] EMP-ESS-010 Leave application CSRF-less POST is rejected', async ({ request }) => {
|
||||
const resp = await request.post(`${process.env.BASE_URL}/employee/leave/apply`, {
|
||||
const resp = await request.post(`${BASE_URL}/employee/leave/apply`, {
|
||||
form: { leave_type_id: '1', from_date: '2025-06-01', to_date: '2025-06-01', csrf_token: '' },
|
||||
}).catch(() => null);
|
||||
if (!resp || [404, 405].includes(resp.status())) test.skip(true, 'Route not available');
|
||||
@@ -498,7 +499,7 @@ test.describe('EMP-SEC: Security probes', () => {
|
||||
await login(page, 'Firm Admin');
|
||||
await safeGoto(page, '/employees/imports');
|
||||
// Attempt to POST commit without having a session preview
|
||||
const resp = await page.request.post(`${process.env.BASE_URL}/employees/imports/commit`, {
|
||||
const resp = await page.request.post(`${BASE_URL}/employees/imports/commit`, {
|
||||
form: { csrf_token: 'invalid' },
|
||||
}).catch(() => null);
|
||||
if (!resp) test.skip(true, 'Request failed at network level');
|
||||
@@ -509,7 +510,7 @@ test.describe('EMP-SEC: Security probes', () => {
|
||||
skipIfMissing('PAYROLL_RUN_ID');
|
||||
// Staff should not be able to trigger payroll — attempt raw API call
|
||||
const resp = await request.post(
|
||||
`${process.env.BASE_URL}/employees/payroll/runs/${idOr('PAYROLL_RUN_ID')}/generate`,
|
||||
`${BASE_URL}/employees/payroll/runs/${idOr('PAYROLL_RUN_ID')}/generate`,
|
||||
{ form: { csrf_token: 'invalid' } }
|
||||
).catch(() => null);
|
||||
if (!resp || [404, 405].includes(resp.status())) test.skip(true, 'Route not available');
|
||||
|
||||
Reference in New Issue
Block a user