e455d5dba5
Reviewed-on: #41 Co-authored-by: David Gwilliam <dhgwilliam@gmail.com> Co-committed-by: David Gwilliam <dhgwilliam@gmail.com>
93 lines
3.4 KiB
TypeScript
93 lines
3.4 KiB
TypeScript
import { test, expect } from '@playwright/test'
|
|
|
|
test.describe.skip('Admin Smoke Test', () => {
|
|
test.describe('Admin Panel Navigation', () => {
|
|
test('should navigate to admin dashboard', async ({ page }) => {
|
|
await page.goto('/admin')
|
|
await expect(page.locator('text=Admin')).toBeVisible()
|
|
})
|
|
|
|
test('should navigate to matches admin page', async ({ page }) => {
|
|
await page.goto('/admin/matches')
|
|
await expect(page.locator('text=Match Management')).toBeVisible()
|
|
})
|
|
|
|
test('should navigate to players admin page', async ({ page }) => {
|
|
await page.goto('/admin/players')
|
|
await expect(page.locator('text=Player Management')).toBeVisible()
|
|
})
|
|
|
|
test('should navigate to users admin page', async ({ page }) => {
|
|
await page.goto('/admin/users')
|
|
await expect(page.locator('text=User Management')).toBeVisible()
|
|
})
|
|
})
|
|
|
|
test.describe('Match Management', () => {
|
|
test('should display matches page', async ({ page }) => {
|
|
await page.goto('/admin/matches')
|
|
await expect(page.locator('text=Match Management')).toBeVisible()
|
|
|
|
const hasTable = await page.locator('table').count().then(c => c > 0)
|
|
const hasEmptyState = await page.locator('text=/no matches|No matches/').count().then(c => c > 0)
|
|
|
|
expect(hasTable || hasEmptyState).toBeTruthy()
|
|
})
|
|
|
|
test('should have delete button for matches when matches exist', async ({ page }) => {
|
|
await page.goto('/admin/matches')
|
|
const deleteButtons = page.locator('button:has-text("Delete")')
|
|
const count = await deleteButtons.count()
|
|
if (count > 0) {
|
|
await expect(page.locator('text=Actions')).toBeVisible()
|
|
}
|
|
})
|
|
})
|
|
|
|
test.describe('Player Management', () => {
|
|
test('should display players table', async ({ page }) => {
|
|
await page.goto('/admin/players')
|
|
await expect(page.locator('table')).toBeVisible()
|
|
await expect(page.locator('text=Player Name')).toBeVisible()
|
|
await expect(page.locator('text=Current Elo')).toBeVisible()
|
|
await expect(page.locator('text=Actions')).toBeVisible()
|
|
})
|
|
|
|
test('should have edit and delete buttons for players', async ({ page }) => {
|
|
await page.goto('/admin/players')
|
|
await expect(page.locator('text=Actions')).toBeVisible()
|
|
})
|
|
|
|
test('should allow editing player name', async ({ page }) => {
|
|
await page.goto('/admin/players')
|
|
const editButton = page.locator('button:has-text("Edit")').first()
|
|
if (await editButton.isVisible()) {
|
|
await editButton.click()
|
|
|
|
await expect(page.locator('text=Edit Player Name')).toBeVisible()
|
|
|
|
await page.click('text=Cancel')
|
|
await expect(page.locator('text=Edit Player Name')).not.toBeVisible()
|
|
}
|
|
})
|
|
})
|
|
|
|
test.describe('User Management', () => {
|
|
test('should display users page', async ({ page }) => {
|
|
await page.goto('/admin/users')
|
|
const hasTable = await page.locator('table').isVisible().catch(() => false)
|
|
const hasNoUsers = await page.locator('text=No users found').isVisible().catch(() => false)
|
|
|
|
expect(hasTable || hasNoUsers).toBeTruthy()
|
|
|
|
await expect(page.locator('text=User Management')).toBeVisible()
|
|
})
|
|
|
|
test('should have create user link', async ({ page }) => {
|
|
await page.goto('/admin/users')
|
|
const createLink = page.locator('a.bg-green-600:has-text("Create User")')
|
|
await expect(createLink).toBeVisible()
|
|
})
|
|
})
|
|
})
|