towerops/e2e/tests/help.spec.ts
Graham McIntire 0832abf33a
feat: comprehensive e2e test coverage for all user-facing features
- Added e2e tests for agents, insights, maintenance windows, maps, help pages
- Added e2e tests for organization settings, config timeline, MikroTik backups
- Added comprehensive search functionality tests
- Added dashboard and sites navigation tests
- Updated existing tests to handle sudo verification redirects
- Fixed navigation tests to be more defensive about missing data
- All 301 tests passing across chromium, firefox, and webkit
2026-03-06 16:58:06 -06:00

76 lines
2.1 KiB
TypeScript

import { test, expect } from '@playwright/test';
test.describe('Help and Documentation', () => {
test('can access help page', async ({ page }) => {
await page.goto('/help');
await expect(page).toHaveURL(/\/help/);
await expect(page.locator('body')).toBeVisible();
});
test('can view changelog', async ({ page }) => {
await page.goto('/changelog');
await expect(page).toHaveURL(/\/changelog/);
await expect(page.locator('body')).toBeVisible();
});
test('changelog shows recent updates', async ({ page }) => {
await page.goto('/changelog');
// Look for changelog entries
const changelogEntry = page.locator(
'[data-changelog], .changelog-entry, :has-text("202")'
).first();
if (await changelogEntry.isVisible({ timeout: 2000 }).catch(() => false)) {
await expect(changelogEntry).toBeVisible();
}
});
test('can access API documentation', async ({ page }) => {
await page.goto('/docs/api');
await expect(page).toHaveURL(/\/docs\/api/);
await expect(page.locator('body')).toBeVisible();
});
test('API docs show endpoints', async ({ page }) => {
await page.goto('/docs/api');
// Look for API endpoint documentation
const endpoint = page.locator(
'code:has-text("/api"), pre:has-text("GET"), pre:has-text("POST")'
).first();
if (await endpoint.isVisible({ timeout: 2000 }).catch(() => false)) {
await expect(endpoint).toBeVisible();
}
});
test('can search help documentation', async ({ page }) => {
await page.goto('/help');
// Look for search input
const searchInput = page.locator('input[type="search"], input[placeholder*="Search"]').first();
if (await searchInput.isVisible()) {
await searchInput.fill('device');
await page.waitForTimeout(500);
}
});
test('can navigate help categories', async ({ page }) => {
await page.goto('/help');
// Look for category links or nav
const categoryLink = page.locator(
'a[href*="/help/"], nav a, [role="navigation"] a'
).first();
if (await categoryLink.isVisible()) {
await categoryLink.click();
await page.waitForTimeout(500);
}
});
});