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