test: add alias replace externals tests in bundleless mode (#581) #401
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: Test | |
| on: | |
| pull_request: | |
| branches: [main] | |
| push: | |
| branches: [main] | |
| workflow_dispatch: | |
| jobs: | |
| # ======== calculate changes ======== | |
| changes: | |
| runs-on: ubuntu-latest | |
| outputs: | |
| changed: ${{ steps.changes.outputs.changed }} | |
| strategy: | |
| matrix: | |
| node-version: [18] | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 10 | |
| - name: Install Pnpm | |
| run: corepack enable | |
| - uses: dorny/[email protected] | |
| id: changes | |
| with: | |
| predicate-quantifier: 'every' | |
| filters: | | |
| changed: | |
| - "!**/*.md" | |
| - "!**/*.mdx" | |
| - "!**/_meta.json" | |
| - "!**/dictionary.txt" | |
| # ======== ut ======== | |
| ut: | |
| runs-on: ${{ matrix.os }} | |
| needs: changes | |
| if: ${{ needs.changes.outputs.changed == 'true' }} | |
| strategy: | |
| matrix: | |
| os: [ubuntu-latest] | |
| node-version: [18, 20, 22] | |
| include: | |
| - node-version: 18 | |
| os: windows-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 10 | |
| - name: Git config | |
| if: ${{ matrix.os == 'windows-latest' }} | |
| shell: bash | |
| run: | | |
| git config --system core.longpaths true | |
| - name: Install Pnpm | |
| run: corepack enable | |
| - name: Setup Node.js ${{ matrix.node-version }} | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: ${{ matrix.node-version }} | |
| cache: 'pnpm' | |
| - name: Install Dependencies | |
| run: pnpm install | |
| - name: Unit Test | |
| run: pnpm run test:unit | |
| # ======== integration && e2e ======== | |
| integration-e2e: | |
| runs-on: ${{ matrix.os }} | |
| needs: changes | |
| if: ${{ needs.changes.outputs.changed == 'true' }} | |
| strategy: | |
| matrix: | |
| os: [ubuntu-latest] | |
| node-version: [18, 20, 22] | |
| include: | |
| - node-version: 18 | |
| os: windows-latest | |
| steps: | |
| - name: Git config | |
| if: ${{ matrix.os == 'windows-latest' }} | |
| shell: bash | |
| run: | | |
| git config --system core.longpaths true | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 10 | |
| - name: Install Pnpm | |
| run: corepack enable | |
| - name: Setup Node.js ${{ matrix.node-version }} | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: ${{ matrix.node-version }} | |
| cache: 'pnpm' | |
| - name: Install Dependencies | |
| run: pnpm install && cd ./tests && pnpm playwright install chromium | |
| - name: Integration Test (Vitest) | |
| run: pnpm run test:integration | |
| - name: E2E Test (Playwright) | |
| run: pnpm run test:e2e | |
| # ======== benchmark ======== | |
| benchmark: | |
| # Only Ubuntu 20.04 and 22.04 are supported at the moment. | |
| # See https://github.com/CodSpeedHQ/action/blob/016456b513677f9d4a1c509c7f8a38d8dd55b2b0/.github/workflows/ci.yml#L19. | |
| runs-on: ubuntu-22.04 | |
| needs: [integration-e2e] | |
| strategy: | |
| matrix: | |
| node-version: [20] | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 10 | |
| - name: Install Pnpm | |
| run: corepack enable | |
| - name: Setup Node.js ${{ matrix.node-version }} | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: ${{ matrix.node-version }} | |
| cache: 'pnpm' | |
| - name: Install Dependencies | |
| run: pnpm install && cd ./tests && pnpm playwright install chromium | |
| # only run benchmark in Ubuntu | |
| - name: Benchmarks (Vitest) | |
| uses: CodSpeedHQ/action@v3 | |
| with: | |
| run: pnpm run test:benchmark | |
| # token retrieved from the CodSpeed app at the previous step | |
| token: ${{ secrets.CODSPEED_TOKEN }} | |
| # ======== exit ======== | |
| pr-check-required: | |
| if: (!cancelled() && !failure()) | |
| needs: [ut, integration-e2e, benchmark] | |
| runs-on: ubuntu-latest | |
| name: Test passed or skipped | |
| steps: | |
| - run: echo "All tests passed or skipped." |