32 lines
1.2 KiB
TypeScript
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);
|
|
});
|
|
});
|