diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index b886ec5ada..309b647b54 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -17,15 +17,11 @@ env: NODE_OPTIONS: --max-old-space-size=6144 jobs: - # ======== ut ======== - ut: - runs-on: ${{ matrix.os }} - timeout-minutes: 15 - strategy: - matrix: - # run ut on macOS, as SWC cases will fail on Ubuntu CI - os: [macos-14, windows-latest] - + # ======== check change ======== + changes: + runs-on: ubuntu-latest + outputs: + changed: ${{ steps.changes.outputs.changed }} steps: - name: Checkout uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 @@ -48,25 +44,46 @@ jobs: - "!**/_meta.json" - "!**/dictionary.txt" + # ======== ut ======== + ut: + runs-on: ${{ matrix.os }} + timeout-minutes: 15 + needs: changes + if: needs.changes.outputs.changed == 'true' + strategy: + matrix: + # run ut on macOS, as SWC cases will fail on Ubuntu CI + os: [macos-14, windows-latest] + + steps: + - name: Checkout + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + with: + fetch-depth: 1 + + - name: Install Pnpm + run: | + npm install -g corepack@latest --force + corepack enable + - name: Setup Node.js - if: steps.changes.outputs.changed == 'true' uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v4.3.0 with: node-version: 22 cache: 'pnpm' - name: Install Dependencies - if: steps.changes.outputs.changed == 'true' run: pnpm install - name: Unit Test - if: steps.changes.outputs.changed == 'true' run: pnpm run ut # ======== e2e ======== e2e: runs-on: ${{ matrix.os }} timeout-minutes: 15 + needs: changes + if: needs.changes.outputs.changed == 'true' strategy: matrix: os: [ubuntu-latest, windows-latest] @@ -82,39 +99,26 @@ jobs: npm install -g corepack@latest --force corepack enable - - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2 - id: changes - with: - predicate-quantifier: 'every' - filters: | - changed: - - "!**/*.md" - - "!**/*.mdx" - - "!**/_meta.json" - - "!**/dictionary.txt" - - name: Setup Node.js - if: steps.changes.outputs.changed == 'true' uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v4.3.0 with: node-version: 22 cache: 'pnpm' - name: Install Dependencies - if: steps.changes.outputs.changed == 'true' run: pnpm install && cd ./e2e && npx playwright install chromium - name: E2E Test - 1 - if: steps.changes.outputs.changed == 'true' run: pnpm run e2e:rspack --shard=1/2 - name: E2E Test - 2 - if: steps.changes.outputs.changed == 'true' run: pnpm run e2e:rspack --shard=2/2 # ======== e2e-webpack ======== e2e-webpack: runs-on: ${{ matrix.os }} + needs: changes + if: needs.changes.outputs.changed == 'true' timeout-minutes: 15 strategy: matrix: @@ -131,32 +135,17 @@ jobs: npm install -g corepack@latest --force corepack enable - - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2 - id: changes - with: - predicate-quantifier: 'every' - filters: | - changed: - - "!**/*.md" - - "!**/*.mdx" - - "!**/_meta.json" - - "!**/dictionary.txt" - - name: Setup Node.js - if: steps.changes.outputs.changed == 'true' uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v4.3.0 with: node-version: 22 cache: 'pnpm' - name: Install Dependencies - if: steps.changes.outputs.changed == 'true' run: pnpm install && cd ./e2e && npx playwright install chromium - name: E2E Test - 1 - if: steps.changes.outputs.changed == 'true' run: pnpm run e2e:webpack --shard=1/2 - name: E2E Test - 2 - if: steps.changes.outputs.changed == 'true' run: pnpm run e2e:webpack --shard=2/2