ghostguild-org/e2e/events.spec.js
Jennie Robinson Faber 1e30ba23cd
Some checks are pending
Test / vitest (push) Waiting to run
Test / playwright (push) Blocked by required conditions
Test / visual (push) Blocked by required conditions
feat: add testing infrastructure — Vitest, Playwright, CI, git hooks
Add comprehensive testing covering 420 unit/handler tests across 24 Vitest
files, 9 Playwright E2E specs, accessibility scans, and visual regression.
Includes GitHub Actions CI, Husky pre-push hook, and TESTING.md docs.
2026-04-04 16:07:21 +01:00

64 lines
2.2 KiB
JavaScript

import { test, expect } from '@playwright/test'
test.describe('Events list page', () => {
test('events list loads', async ({ page }) => {
await page.goto('/events')
await expect(page.locator('h1', { hasText: 'Events' })).toBeVisible()
})
test('filter bar has type filters', async ({ page }) => {
await page.goto('/events')
const filterBar = page.locator('.filter-bar')
await expect(filterBar).toBeVisible()
for (const label of ['All', 'Workshops', 'Community', 'Social', 'Showcase']) {
await expect(filterBar.locator('button', { hasText: label })).toBeVisible()
}
})
test('past events toggle exists and can be checked', async ({ page }) => {
await page.goto('/events')
const checkbox = page.locator('input[type="checkbox"]')
await expect(checkbox).toBeVisible()
await expect(page.locator('text=Show past events')).toBeVisible()
await checkbox.check()
await expect(checkbox).toBeChecked()
// Page should still render without errors after toggling
await expect(page.locator('h1', { hasText: 'Events' })).toBeVisible()
})
test('clicking a filter button activates it', async ({ page }) => {
await page.goto('/events')
const workshopsBtn = page.locator('.filter-bar button', { hasText: 'Workshops' })
await workshopsBtn.click()
await expect(workshopsBtn).toHaveClass(/active/)
})
test('event links navigate to detail page', async ({ page }) => {
await page.goto('/events')
// Check the past events toggle so we see all events
await page.locator('input[type="checkbox"]').check()
const eventLinks = page.locator('.event-row a')
const count = await eventLinks.count()
if (count === 0) {
// No events in the database — just verify the empty state renders
await expect(page.locator('.empty', { hasText: 'No events found' })).toBeVisible()
return
}
// Click the first event link and verify navigation
const firstLink = eventLinks.first()
const href = await firstLink.getAttribute('href')
await firstLink.click()
await page.waitForURL(/\/events\//)
expect(page.url()).toContain('/events/')
// Detail page should have an h1 with the event title
await expect(page.locator('h1')).toBeVisible()
})
})