Skip to content

feat(superdoc): ship IIFE CDN bundle with working vanilla example #2549

feat(superdoc): ship IIFE CDN bundle with working vanilla example

feat(superdoc): ship IIFE CDN bundle with working vanilla example #2549

Workflow file for this run

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