Files
playbook/ui-ux-pro-max/cli/tests/e2e/preview.spec.ts
2026-07-18 00:02:59 +00:00

32 lines
1.2 KiB
TypeScript

import { test, expect } from '@playwright/test';
import path from 'node:path';
import { fileURLToPath, pathToFileURL } from 'node:url';
const __dirname = path.dirname(fileURLToPath(import.meta.url));
/**
* Smoke test for the generated design-system preview pages under /preview.
* These files are shipped as proof that the design system generator produces
* working, self-contained HTML (see README "How Design System Generation Works").
* This guards against a preview shipping with broken markup or JS errors.
*/
const PREVIEW_DIR = path.resolve(__dirname, '../../../preview');
const PREVIEW_FILE = 'xiaomaomi-app.html';
test.describe('generated preview pages', () => {
test(`${PREVIEW_FILE} renders without console errors`, async ({ page }) => {
const consoleErrors: string[] = [];
page.on('console', (msg) => {
if (msg.type() === 'error') consoleErrors.push(msg.text());
});
page.on('pageerror', (err) => consoleErrors.push(err.message));
const fileUrl = pathToFileURL(path.join(PREVIEW_DIR, PREVIEW_FILE)).href;
await page.goto(fileUrl);
await expect(page.locator('body')).toBeVisible();
expect(consoleErrors, `console errors: ${consoleErrors.join('\n')}`).toHaveLength(0);
});
});