mirror of
https://github.com/graphql-hive/console
synced 2026-05-24 09:38:26 +00:00
80 lines
2.9 KiB
TypeScript
80 lines
2.9 KiB
TypeScript
import { expect, test } from '@playwright/test';
|
|
|
|
// Note: /docs requires Nextra to be properly built. These tests may fail in dev mode.
|
|
// Run against built static site for reliable results.
|
|
|
|
test.describe('Documentation User Journeys', () => {
|
|
test.beforeEach(async ({ page }) => {
|
|
// Check if docs page loads without error
|
|
const response = await page.goto('/docs');
|
|
if (!response?.ok()) {
|
|
test.skip(true, 'Docs page not available (needs build)');
|
|
}
|
|
});
|
|
|
|
test('docs landing page shows content', async ({ page, isMobile }) => {
|
|
await expect(page.getByRole('heading', { level: 1 })).toBeVisible();
|
|
|
|
if (isMobile) {
|
|
const sidebar = page.getByRole('complementary');
|
|
await expect(sidebar.first()).toBeVisible();
|
|
} else {
|
|
const nav = page.getByRole('navigation');
|
|
await expect(nav.first()).toBeVisible();
|
|
}
|
|
});
|
|
|
|
test('developer navigates to schema registry via sidebar', async ({ page }) => {
|
|
// Schema Registry is under "Hive Console" section
|
|
const sidebar = page.getByRole('complementary');
|
|
|
|
// HeadlessUI overlays intercept pointer events, use JS click to bypass
|
|
const schemaRegistryLink = sidebar.locator('a[href="/docs/schema-registry"]');
|
|
await expect(schemaRegistryLink).toBeVisible();
|
|
await schemaRegistryLink.evaluate((el: HTMLElement) => el.click());
|
|
|
|
await expect(page).toHaveURL(/schema-registry/);
|
|
await expect(page.getByRole('heading', { level: 1 })).toBeVisible();
|
|
});
|
|
|
|
test('developer navigates to gateway via sidebar', async ({ page }) => {
|
|
const sidebar = page.getByRole('complementary');
|
|
|
|
const gatewayLink = sidebar.locator('a[href="/docs/gateway"]');
|
|
await expect(gatewayLink).toBeVisible();
|
|
await gatewayLink.evaluate((el: HTMLElement) => el.click());
|
|
await page.waitForURL(/gateway/);
|
|
|
|
await expect(page).toHaveURL(/gateway/);
|
|
await expect(page.getByRole('heading', { level: 1 })).toBeVisible();
|
|
});
|
|
|
|
test('documentation shows code examples', async ({ page }) => {
|
|
// Navigate to CLI reference which has code examples
|
|
await page.goto('/docs/api-reference/cli');
|
|
|
|
// Check for code blocks
|
|
const codeBlock = page.locator('pre').first();
|
|
await expect(codeBlock).toBeVisible();
|
|
});
|
|
|
|
test('sidebar shows active section', async ({ page }) => {
|
|
await page.goto('/docs/schema-registry');
|
|
|
|
const sidebar = page.getByRole('complementary');
|
|
const hiveConsoleButton = sidebar.getByRole('button', { name: 'Hive Console' });
|
|
await expect(hiveConsoleButton).toBeVisible();
|
|
await expect(hiveConsoleButton).toHaveAttribute('data-href', '/docs/schema-registry');
|
|
});
|
|
});
|
|
|
|
test.describe('Documentation API Reference', () => {
|
|
test('CLI reference page loads', async ({ page }) => {
|
|
const response = await page.goto('/docs/api-reference/cli');
|
|
if (!response?.ok()) {
|
|
test.skip(true, 'Page not available');
|
|
}
|
|
|
|
await expect(page.getByRole('heading', { level: 1 })).toBeVisible();
|
|
});
|
|
});
|