name: tests on: push: branches: [master, v*] pull_request: branches: [master, v*] jobs: node: name: Node.js runs-on: ubuntu-latest strategy: fail-fast: false matrix: node-version: [18.x, 20.x, 22.x] steps: - uses: actions/checkout@v4 - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} cache: 'npm' - name: Install dependencies run: npm ci - name: Run docker compose run: docker compose up -d - name: Run node tests run: npm test - name: Run esbuild test run: npm run test:esbuild node-with-transformer: name: Node.js /w transformer runs-on: ubuntu-latest strategy: fail-fast: false matrix: node-version: [18.x, 20.x, 22.x] steps: - uses: actions/checkout@v4 - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} cache: 'npm' - name: Install dependencies run: npm ci - name: Run docker compose run: docker compose up -d - name: Run node tests with transformer run: TEST_TRANSFORMER=1 npm test deno: name: Deno runs-on: ubuntu-latest strategy: fail-fast: false matrix: deno-version: [1.x.x, 2.0.x] steps: - uses: actions/checkout@v4 - name: Use Node.js uses: actions/setup-node@v4 with: node-version: 22.x cache: 'npm' - name: Use Deno ${{ matrix.deno-version }} uses: denoland/setup-deno@v2 with: deno-version: ${{ matrix.deno-version }} - name: Install dependencies run: npm ci - name: Run docker compose run: docker compose up -d - name: Build run: npm run build - name: Run deno tests run: npm run test:deno bun: name: Bun runs-on: ubuntu-latest strategy: fail-fast: false matrix: bun-version: [1.1.26] steps: - uses: actions/checkout@v4 - name: Use Node.js uses: actions/setup-node@v4 with: node-version: 22.x cache: 'npm' - name: Install dependencies run: npm ci - name: Use Bun ${{ matrix.bun-version }} uses: oven-sh/setup-bun@v2 with: bun-version: ${{ matrix.bun-version }} - name: Run docker compose run: docker compose up -d - name: Run bun tests run: npm run test:bun browser: name: Browser runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Use Node.js uses: actions/setup-node@v4 with: node-version: 22.x cache: 'npm' - name: Install dependencies run: npm ci - name: Install playwright run: npx playwright install chromium - name: Run browser tests run: npm run test:browser cloudflare-workers: name: Cloudflare Workers runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Use Node.js uses: actions/setup-node@v4 with: node-version: 22.x cache: 'npm' - name: Install dependencies run: npm ci - name: Run docker compose run: docker compose up -d - name: Run cloudflare workers test run: npm run test:cloudflare-workers older-typescript-version: name: Older TypeScript version runs-on: ubuntu-latest strategy: fail-fast: false matrix: typescript-version: [ ^4.6, # 28.2.2022 https://devblogs.microsoft.com/typescript/announcing-typescript-4-6/ ^4.7, # 24.5.2022 https://devblogs.microsoft.com/typescript/announcing-typescript-4-7/ ^4.8, # 25.8.2022 https://devblogs.microsoft.com/typescript/announcing-typescript-4-8/ ^4.9, # 15.11.2022 https://devblogs.microsoft.com/typescript/announcing-typescript-4-9/ ^5.0, # 16.3.2023 https://devblogs.microsoft.com/typescript/announcing-typescript-5-0/ ^5.2, # 24.8.2023 https://devblogs.microsoft.com/typescript/announcing-typescript-5-1/ https://devblogs.microsoft.com/typescript/announcing-typescript-5-2/ ^5.3, # 20.11.2023 https://devblogs.microsoft.com/typescript/announcing-typescript-5-3/ ^5.4, # 6.3.2024 https://devblogs.microsoft.com/typescript/announcing-typescript-5-4/ ] steps: - uses: actions/checkout@v4 - name: Use Node.js uses: actions/setup-node@v4 with: node-version: 18.x cache: 'npm' - name: Install dependencies run: npm ci - name: Run build with newer TypeScript run: npm run build - name: Install older TypeScript run: npm i -D typescript@${{ matrix.typescript-version }} tsd@${{ fromJson('{ "^4.6":"0.20.0", "^4.7":"0.22.0", "^4.8":"0.24.1", "^4.9":"0.27.0", "^5.0":"0.28.1", "^5.2":"0.29.0", "^5.3":"0.30.7", "^5.4":"0.31.2" }')[matrix.typescript-version] }} - name: Run tests with older TypeScript run: npm run test:typings && npm run test:node:build jsdocs: name: JSDocs runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Use Node.js uses: actions/setup-node@v4 with: node-version: 22.x cache: 'npm' - name: Use Deno uses: denoland/setup-deno@v2 with: deno-version: 2.0.x - name: Install dependencies run: npm ci - name: Build run: npm run build - name: Type-check JSDocs code blocks run: npm run test:jsdocs