skillhub/web/e2e/admin-labels.spec.ts
huishi3 d49bc726b7 test(e2e): add 15 specs covering review/governance/namespace/admin/settings
Migrated from local desktop work (rescued from un-pushed commit 3b970865).
64 test cases with stable semantic selectors, covering pages that were
previously untested.
2026-05-08 07:13:05 -07:00

43 lines
1.4 KiB
TypeScript

import { expect, test } from '@playwright/test'
import { setEnglishLocale } from './helpers/auth-fixtures'
test.describe('Admin Labels Management (Real API)', () => {
test.beforeEach(async ({ page }) => {
await setEnglishLocale(page)
await page.context().setExtraHTTPHeaders({
'X-Mock-User-Id': 'local-admin',
})
})
test('TC_LABEL_001: displays label management page with title', async ({ page }) => {
await page.goto('/admin/labels')
await expect(page.getByRole('heading', { name: 'Label Management' })).toBeVisible()
})
test('TC_LABEL_002: shows create label button', async ({ page }) => {
await page.goto('/admin/labels')
await expect(page.getByRole('button', { name: /Create Label/i })).toBeVisible()
})
test('TC_LABEL_003: shows labels table or empty state', async ({ page }) => {
await page.goto('/admin/labels')
const hasTable = await page.getByRole('table').isVisible().catch(() => false)
if (hasTable) {
await expect(page.getByRole('columnheader', { name: /Label/i })).toBeVisible()
} else {
await expect(page.getByText(/No labels/i)).toBeVisible()
}
})
test('TC_LABEL_004: create label button opens dialog with slug field', async ({ page }) => {
await page.goto('/admin/labels')
await page.getByRole('button', { name: /Create Label/i }).click()
await expect(page.getByLabel(/Slug/i)).toBeVisible()
})
})