Files
botfights/e2e/admin-guard.spec.ts
T
2026-04-11 19:46:37 +01:00

31 lines
1.1 KiB
TypeScript

import { test, expect } from '@playwright/test'
test.describe('admin page access control', () => {
test('admin page redirects or shows forbidden without auth', async ({ page }) => {
const criticalErrors: string[] = []
page.on('pageerror', err => {
if (err.message.includes('ReferenceError') || err.message.includes('SyntaxError')) {
criticalErrors.push(err.message)
}
})
await page.goto('/admin')
await page.waitForTimeout(2000)
// Should not crash
expect(criticalErrors).toHaveLength(0)
// Should either show forbidden/unauthorized message or redirect away
const url = page.url()
const content = await page.textContent('body')
// Valid outcomes: redirected to login/home, or shows forbidden
const isRedirected = !url.includes('/admin')
const showsForbidden = content?.match(/forbidden|unauthorized|not authorized|403|login/i) !== null
const isEmptyAdmin = content?.trim().length === 0 || content?.includes('Loading')
// At least one of these should be true
expect(isRedirected || showsForbidden || isEmptyAdmin).toBe(true)
})
})