test(e2e): reconcile route census with approved migrations
This commit is contained in:
@@ -43,12 +43,13 @@ function routes(jobId: number, cvId: number): RouteCase[] {
|
||||
{ pattern: '/companies', path: '/companies', heading: t.companies, endpoint: '/companies' },
|
||||
{ pattern: '/offers', path: '/offers', heading: t.offerComparisonTitle, endpoint: '/jobapplications' },
|
||||
{ pattern: '/correspondence', path: '/correspondence', heading: t.correspondenceInboxTitle, endpoint: '/correspondence/page' },
|
||||
{ pattern: '/correspondence/review', path: '/correspondence/review?route=all#review', final: '/correspondence?view=review', heading: t.correspondenceInboxTitle, endpoint: '/gmail/review-candidates', status: 409 },
|
||||
{ pattern: '/correspondence/review', path: '/correspondence/review?route=all#review', final: '/correspondence?route=all&view=review#review', heading: t.correspondenceInboxTitle, endpoint: '/gmail/review-candidates', status: 409 },
|
||||
{ pattern: '/profile', path: '/profile', heading: t.profile, endpoint: '/auth/me' },
|
||||
{ pattern: '/applications/:id', path: `/applications/${jobId}?section=documents&followMode=waiting-update#workspace`, final: `/jobs/${jobId}?section=documents&followMode=waiting-update`, heading: t.jobDetails, endpoint: `/jobapplications/${jobId}/workspace` },
|
||||
{ pattern: '/career', path: '/career?section=profile', heading: t.careerWorkspace, endpoint: '/career/profile' },
|
||||
{ pattern: '/career/builder', path: '/career/builder', heading: t.cvBuilder, endpoint: '/cv/variants' },
|
||||
{ pattern: '/career/builder/:id', path: `/career/builder/${cvId}`, heading: t.cvBuilder, endpoint: `/cv/variants/${cvId}` },
|
||||
{ pattern: '/documents', path: '/documents', heading: t.documentsTitle, endpoint: '/documents' },
|
||||
{ pattern: '/admin/audit', path: '/admin/audit', heading: t.auditLog, endpoint: '/admin/audit' },
|
||||
{ pattern: '/admin/users', path: '/admin/users', heading: t.users, endpoint: '/users' },
|
||||
{ pattern: '/admin/system', path: '/admin/system', heading: t.systemStatus, endpoint: '/admin/system' },
|
||||
@@ -86,7 +87,7 @@ test.beforeEach(async ({ context }) => {
|
||||
});
|
||||
|
||||
for (const identity of ['anonymous', 'normal', 'admin'] as const) {
|
||||
test(`[P5-15-01 E02 E07 A01] all 32 routes retain native entry, refresh and ${identity} permissions`, async ({ page, playwright }, info) => {
|
||||
test(`[P5-15-01 E02 E07 A01] all 33 routes retain native entry, refresh and ${identity} permissions`, async ({ page, playwright }, info) => {
|
||||
test.setTimeout(300_000);
|
||||
const admin = await playwright.request.newContext();
|
||||
const evidence: { pattern: string; mode: string; destination: string; status?: number }[] = [];
|
||||
@@ -105,7 +106,7 @@ for (const identity of ['anonymous', 'normal', 'admin'] as const) {
|
||||
expect(cv.status()).toBe(200); cvId = (await cv.json()).id;
|
||||
}
|
||||
const census = routes(jobId, cvId);
|
||||
expect(new Set(census.map(row => row.pattern)).size).toBe(32);
|
||||
expect(new Set(census.map(row => row.pattern)).size).toBe(33);
|
||||
for (const row of census) {
|
||||
await test.step(row.pattern, async () => {
|
||||
for (const mode of ['entry', 'refresh']) {
|
||||
@@ -123,7 +124,7 @@ for (const identity of ['anonymous', 'normal', 'admin'] as const) {
|
||||
expect.soft(native.status()).toBe(denied ? 403 : row.status ?? 200);
|
||||
if (row.pattern === '/correspondence/review') {
|
||||
expect(await native.json()).toMatchObject({ code: 'gmail_not_connected' });
|
||||
await expect(page.getByRole('alert').filter({ hasText: 'Connect Gmail before using the Gmail review queue.' })).toBeVisible();
|
||||
await expect(page.getByRole('alert').filter({ hasText: t.gmailReviewNotConnected })).toBeVisible();
|
||||
}
|
||||
if (denied) {
|
||||
await expect(page.getByRole('alert').first()).toBeVisible();
|
||||
|
||||
Reference in New Issue
Block a user