diff --git a/.github/workflows/ci-superdoc.yml b/.github/workflows/ci-superdoc.yml index 3ba9d0bea..1fd91d203 100644 --- a/.github/workflows/ci-superdoc.yml +++ b/.github/workflows/ci-superdoc.yml @@ -72,3 +72,10 @@ jobs: - name: Run slow tests run: pnpm test:slow + + - name: Install Playwright for UMD smoke test + run: pnpm --filter @superdoc/umd-smoke-test exec playwright install --with-deps chromium + + - name: Run UMD smoke test + working-directory: packages/superdoc/tests/umd-smoke + run: pnpm test diff --git a/packages/superdoc/tests/umd-smoke/index.html b/packages/superdoc/tests/umd-smoke/index.html new file mode 100644 index 000000000..67601429b --- /dev/null +++ b/packages/superdoc/tests/umd-smoke/index.html @@ -0,0 +1,16 @@ + + + + + UMD Smoke Test + + + + +
+ + + diff --git a/packages/superdoc/tests/umd-smoke/package.json b/packages/superdoc/tests/umd-smoke/package.json new file mode 100644 index 000000000..3f3308a0b --- /dev/null +++ b/packages/superdoc/tests/umd-smoke/package.json @@ -0,0 +1,11 @@ +{ + "name": "@superdoc/umd-smoke-test", + "private": true, + "scripts": { + "test": "playwright test" + }, + "devDependencies": { + "@playwright/test": "catalog:", + "serve": "^14.2.0" + } +} diff --git a/packages/superdoc/tests/umd-smoke/playwright.config.ts b/packages/superdoc/tests/umd-smoke/playwright.config.ts new file mode 100644 index 000000000..5d3126916 --- /dev/null +++ b/packages/superdoc/tests/umd-smoke/playwright.config.ts @@ -0,0 +1,15 @@ +import { defineConfig } from '@playwright/test'; + +export default defineConfig({ + testDir: '.', + timeout: 15_000, + webServer: { + command: 'npx serve ../.. -l 3333 --no-clipboard', + url: 'http://localhost:3333', + timeout: 10_000, + }, + use: { + baseURL: 'http://localhost:3333', + }, + projects: [{ name: 'chromium', use: { channel: 'chrome' } }], +}); diff --git a/packages/superdoc/tests/umd-smoke/smoke.test.ts b/packages/superdoc/tests/umd-smoke/smoke.test.ts new file mode 100644 index 000000000..ba5443ff5 --- /dev/null +++ b/packages/superdoc/tests/umd-smoke/smoke.test.ts @@ -0,0 +1,16 @@ +import { test, expect } from '@playwright/test'; + +test('UMD bundle loads and initializes SuperDoc', async ({ page }) => { + const errors: string[] = []; + page.on('pageerror', (err) => errors.push(err.message)); + + await page.goto('/tests/umd-smoke/index.html'); + + const hasLibrary = await page.evaluate(() => typeof (window as any).SuperDocLibrary !== 'undefined'); + expect(hasLibrary).toBe(true); + + const ready = await page.evaluate(() => (window as any).__SUPERDOC_READY__ === true); + expect(ready).toBe(true); + + expect(errors).toEqual([]); +}); diff --git a/packages/superdoc/vite.config.js b/packages/superdoc/vite.config.js index 2cc7662af..180be0925 100644 --- a/packages/superdoc/vite.config.js +++ b/packages/superdoc/vite.config.js @@ -113,6 +113,7 @@ export default defineConfig(({ mode, command }) => { exclude: [ ...configDefaults.exclude, '**/*.spec.js', + 'tests/umd-smoke/**', ], }, build: { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 293c9f475..3423983ad 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1233,6 +1233,15 @@ importers: specifier: 'catalog:' version: 1.6.11 + packages/superdoc/tests/umd-smoke: + devDependencies: + '@playwright/test': + specifier: 'catalog:' + version: 1.58.1 + serve: + specifier: ^14.2.0 + version: 14.2.5 + packages/template-builder: devDependencies: '@testing-library/jest-dom': @@ -14610,7 +14619,7 @@ snapshots: '@stoplight/json-ref-readers@1.2.2': dependencies: - node-fetch: 2.6.7 + node-fetch: 2.7.0 tslib: 1.14.1 transitivePeerDependencies: - encoding