import { test, expect } from '@playwright/test'; import { getStackConfig, validateStackHealthy } from '../setup/stack'; const STACK_CONFIG = getStackConfig(); const STACK_BASE_URL = process.env.STACK_BASE_URL ?? 'http://localhost:8081'; test.describe('Landing Pages', () => { test.beforeAll(async () => { await validateStackHealthy(STACK_CONFIG); }); test('landing homepage loads without errors', async ({ page }) => { await page.goto(`${STACK_BASE_URL}/`, { waitUntil: 'domcontentloaded' }); // Landing page always has a call-to-action button ("Get $KRK", "Get Your Edge", etc.) // Use the .header-cta container to find the primary CTA button unambiguously. const cta = page.locator('.header-cta button').first(); await expect(cta).toBeVisible({ timeout: 15_000 }); await page.screenshot({ path: 'test-results/landing-homepage.png', fullPage: true }); console.log('[TEST] ✅ Landing homepage renders correctly'); }); test('docs introduction page loads', async ({ page }) => { await page.goto(`${STACK_BASE_URL}/docs/introduction`, { waitUntil: 'domcontentloaded' }); // Docs page should have a heading const heading = page.locator('h1, h2').first(); await expect(heading).toBeVisible({ timeout: 15_000 }); console.log('[TEST] ✅ Docs introduction page renders correctly'); }); test('docs navigation works across pages', async ({ page }) => { await page.goto(`${STACK_BASE_URL}/docs/introduction`, { waitUntil: 'domcontentloaded' }); // Wait for nav links to render before checking const heading = page.locator('h1, h2').first(); await expect(heading).toBeVisible({ timeout: 15_000 }); // Find a docs nav link to another page const navLink = page.locator('a[href*="/docs/"]').filter({ hasNotText: /introduction/i }).first(); if (await navLink.isVisible({ timeout: 5_000 })) { const href = await navLink.getAttribute('href'); console.log(`[TEST] Clicking docs nav link: ${href}`); // Use waitForURL to detect SPA navigation instead of a fixed delay await Promise.all([ page.waitForURL(`**${href}`, { timeout: 10_000 }), navLink.click(), ]); // Should navigate without crashing const body = await page.textContent('body'); expect(body).toBeTruthy(); console.log('[TEST] ✅ Docs navigation works'); } else { console.log('[TEST] ⚠️ No docs nav links found — skipping navigation test'); } }); });