name: CI on: push: branches: - next pull_request: permissions: contents: read # to fetch code (actions/checkout) jobs: unit-test: runs-on: ${{ matrix.os }} strategy: matrix: os: [ubuntu-latest, macos-latest, windows-latest] node_version: [18, 20, 22] fail-fast: false timeout-minutes: 10 name: 'Build & Unit Test: node-${{ matrix.node_version }}, ${{ matrix.os }}' steps: - name: Checkout uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 with: # Required for docs/versions tests fetch-depth: 0 - name: Install pnpm uses: pnpm/action-setup@fe02b34f77f8bc703788d5817da081398fad5dd2 # v4.0.0 - name: Set node version to ${{ matrix.node_version }} uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3 with: node-version: ${{ matrix.node_version }} cache: 'pnpm' - name: Install deps run: pnpm install env: CYPRESS_INSTALL_BINARY: 0 - name: Build run: pnpm run build - name: Test run: pnpm run test timezone-test: runs-on: ${{ matrix.os }} strategy: matrix: os: [ubuntu-latest] node_version: [20] fail-fast: false env: LANG: zh_SG.UTF-8 TZ: Asia/Singapore timeout-minutes: 10 name: 'Timezone Test: node-${{ matrix.node_version }}, ${{ matrix.os }}' steps: - name: Set system LANG=zh_SG.UTF-8 run: | sudo locale-gen zh_SG.UTF-8 sudo update-locale LANG=zh_SG.UTF-8 - name: Check date run: date - name: Checkout uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 with: # Required for docs/versions tests fetch-depth: 0 - name: Install pnpm uses: pnpm/action-setup@fe02b34f77f8bc703788d5817da081398fad5dd2 # v4.0.0 - name: Set node version to ${{ matrix.node_version }} uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3 with: node-version: ${{ matrix.node_version }} cache: 'pnpm' - name: Install deps run: pnpm install env: CYPRESS_INSTALL_BINARY: 0 - name: Build run: pnpm run build - name: Test run: pnpm run test e2e-test: runs-on: ubuntu-latest container: image: cypress/browsers:node-22.0.0-chrome-124.0.6367.60-1-ff-125.0.2-edge-124.0.2478.51-1@sha256:02eaae11b7d3dc9f408a5f64c3990faea75943d612ea86b8b218d95b48f22ce8 options: --user 1001 timeout-minutes: 10 name: 'E2E Doc Test: node-22, ubuntu-latest' steps: - name: Checkout uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - name: Install pnpm uses: pnpm/action-setup@fe02b34f77f8bc703788d5817da081398fad5dd2 # v4.0.0 - name: Install deps run: pnpm install - name: Build docs run: pnpm run docs:build:ci - id: e2e name: Run e2e run: pnpm run docs:test:e2e:run lint: runs-on: ubuntu-latest timeout-minutes: 10 name: 'Lint: node-22, ubuntu-latest' steps: - name: Checkout uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 with: fetch-depth: 0 - name: Install pnpm uses: pnpm/action-setup@fe02b34f77f8bc703788d5817da081398fad5dd2 # v4.0.0 - name: Set node version to 22 uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3 with: node-version: 22 cache: 'pnpm' - name: Install deps run: pnpm install env: CYPRESS_INSTALL_BINARY: 0 - name: Lint run: pnpm run lint - name: Check formatting run: pnpm prettier --check . ts-check: runs-on: ubuntu-latest timeout-minutes: 10 name: 'TS-Check: node-22, ubuntu-latest' steps: - name: Checkout uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 with: fetch-depth: 0 - name: Install pnpm uses: pnpm/action-setup@fe02b34f77f8bc703788d5817da081398fad5dd2 # v4.0.0 - name: Set node version to 22 uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3 with: node-version: 22 cache: 'pnpm' - name: Install deps run: pnpm install env: CYPRESS_INSTALL_BINARY: 0 - name: Build types run: pnpm run build:types - name: Check scripts run: pnpm run ts-check codecov: runs-on: ubuntu-latest timeout-minutes: 10 name: 'Codecov: node-22, ubuntu-latest' steps: - name: Checkout uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 with: fetch-depth: 0 - name: Install pnpm uses: pnpm/action-setup@fe02b34f77f8bc703788d5817da081398fad5dd2 # v4.0.0 - name: Set node version to 22 uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3 with: node-version: 22 cache: 'pnpm' - name: Install deps run: pnpm install env: CYPRESS_INSTALL_BINARY: 0 - name: Build run: pnpm run build - name: Generate coverage report run: pnpm vitest run --coverage - name: Upload coverage to Codecov uses: codecov/codecov-action@e28ff129e5465c2c0dcc6f003fc735cb6ae0c673 # v4.5.0 with: token: ${{ secrets.CODECOV_TOKEN }} fail_ci_if_error: true