feat(superdoc): ship IIFE CDN bundle with working vanilla example #2549
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI SuperDoc | |
| permissions: | |
| contents: read | |
| on: | |
| pull_request: | |
| branches: [main, 'release/**'] | |
| paths-ignore: | |
| - 'apps/docs/**' | |
| - 'apps/mcp/**' | |
| - 'apps/vscode-ext/**' | |
| - 'demos/**' | |
| - 'examples/**' | |
| - 'packages/react/**' | |
| - 'packages/sdk/**' | |
| - 'packages/template-builder/**' | |
| - 'packages/esign/**' | |
| - 'evals/**' | |
| - '**/*.md' | |
| merge_group: | |
| workflow_dispatch: | |
| concurrency: | |
| group: ci-superdoc-${{ github.event.pull_request.number || github.run_id }} | |
| cancel-in-progress: true | |
| jobs: | |
| build: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: pnpm/action-setup@v4 | |
| - uses: actions/setup-node@v6 | |
| with: | |
| node-version-file: .nvmrc | |
| cache: pnpm | |
| - uses: oven-sh/setup-bun@v2 | |
| with: | |
| bun-version: 1.3.12 | |
| - name: Install canvas system dependencies | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y \ | |
| build-essential \ | |
| libcairo2-dev \ | |
| libpango1.0-dev \ | |
| libjpeg-dev \ | |
| libgif-dev \ | |
| librsvg2-dev \ | |
| libpixman-1-dev | |
| - name: Install dependencies | |
| run: pnpm install | |
| - name: Lint | |
| run: pnpm run lint | |
| - name: Format check | |
| run: pnpm run format --check | |
| - name: Build | |
| run: pnpm run build | |
| - name: Validate command types | |
| run: node scripts/validate-command-types.mjs | |
| - name: Typecheck | |
| run: pnpm run type-check | |
| - name: Consumer typecheck | |
| run: | | |
| cd packages/superdoc && pnpm pack --pack-destination . | |
| cd ../../tests/consumer-typecheck | |
| npm install ../../packages/superdoc/superdoc-*.tgz --no-save | |
| npx tsc --noEmit | |
| unit-tests: | |
| needs: build | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - name: super-editor-1 | |
| shard: '1/4' | |
| - name: super-editor-2 | |
| shard: '2/4' | |
| - name: super-editor-3 | |
| shard: '3/4' | |
| - name: super-editor-4 | |
| shard: '4/4' | |
| - name: other-packages | |
| shard: '' | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: pnpm/action-setup@v4 | |
| - uses: actions/setup-node@v6 | |
| with: | |
| node-version-file: .nvmrc | |
| cache: pnpm | |
| - uses: oven-sh/setup-bun@v2 | |
| with: | |
| bun-version: 1.3.12 | |
| - name: Install canvas system dependencies | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y \ | |
| build-essential \ | |
| libcairo2-dev \ | |
| libpango1.0-dev \ | |
| libjpeg-dev \ | |
| libgif-dev \ | |
| librsvg2-dev \ | |
| libpixman-1-dev | |
| - name: Install dependencies | |
| run: pnpm install | |
| - name: Build | |
| run: pnpm run build | |
| - name: Run super-editor tests (shard ${{ matrix.shard }}) | |
| if: matrix.name != 'other-packages' | |
| working-directory: packages/super-editor | |
| env: | |
| NODE_OPTIONS: '--max-old-space-size=4096' | |
| run: >- | |
| pnpm exec vitest run --pool forks --minWorkers 1 --maxWorkers 1 | |
| --shard=${{ matrix.shard }} | |
| --exclude='**/decrypt-docx.integration*' | |
| --exclude='**/contract-conformance*' | |
| - name: Run other package vitest tests | |
| if: matrix.name == 'other-packages' | |
| env: | |
| NODE_OPTIONS: '--max-old-space-size=4096' | |
| VITEST_MAX_WORKERS: '1' | |
| VITEST_MIN_WORKERS: '1' | |
| run: pnpm exec vitest run '--project=!*super-editor*' | |
| - name: Run bun tests | |
| if: matrix.name == 'other-packages' | |
| run: | | |
| pnpm -r --parallel \ | |
| --filter @superdoc/document-api \ | |
| --filter @superdoc/layout-engine --filter @superdoc/style-engine \ | |
| --filter @superdoc/geometry-utils --filter @superdoc/word-layout \ | |
| --filter @superdoc/common --filter @font-utils \ | |
| --filter @locale-utils --filter @url-validation \ | |
| test | |
| - name: Run SDK scripts tests | |
| if: matrix.name == 'other-packages' | |
| run: pnpm --prefix packages/sdk run test:scripts | |
| - name: Run memory profiling tests (non-blocking) | |
| if: matrix.name == 'other-packages' | |
| continue-on-error: true | |
| run: pnpm --filter @superdoc/layout-tests run test:memory | |
| - name: Run slow tests | |
| if: matrix.name == 'other-packages' | |
| run: pnpm test:slow | |
| - name: Install Playwright for CDN smoke test | |
| if: matrix.name == 'other-packages' | |
| run: pnpm --filter @superdoc/cdn-smoke-test exec playwright install --with-deps chromium | |
| - name: Run CDN smoke test | |
| if: matrix.name == 'other-packages' | |
| working-directory: packages/superdoc/tests/cdn-smoke | |
| run: pnpm test | |
| cli-tests: | |
| needs: build | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: pnpm/action-setup@v4 | |
| - uses: actions/setup-node@v6 | |
| with: | |
| node-version-file: .nvmrc | |
| cache: pnpm | |
| - uses: oven-sh/setup-bun@v2 | |
| with: | |
| bun-version: 1.3.12 | |
| - name: Install dependencies | |
| run: pnpm install | |
| - name: Build superdoc (CLI runtime dependency) | |
| run: pnpm run build:superdoc | |
| - name: Run CLI tests | |
| run: pnpm run test:cli | |
| validate: | |
| if: always() | |
| needs: [build, unit-tests, cli-tests] | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Check results | |
| run: | | |
| if [[ "${{ contains(needs.*.result, 'failure') }}" == "true" ]]; then | |
| exit 1 | |
| fi |