Skip to content

test: multiple entries now do not affect each other (#485) #99

test: multiple entries now do not affect each other (#485)

test: multiple entries now do not affect each other (#485) #99

Workflow file for this run

name: Test
# Controls when the action will run.
on:
# Triggers the workflow on pull request events but only for the main branch
pull_request:
branches: [main]
push:
branches: [main]
merge_group:
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
# ======== calculate changes ========
changes:
runs-on: ubuntu-latest
outputs:
changed: ${{ steps.changes.outputs.changed }}
strategy:
matrix:
node-version: [18]
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 10
- name: Install Pnpm
run: corepack enable
- uses: dorny/paths-filter@v3
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 represent a sequence of tasks that will be executed as part of the job
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 represent a sequence of tasks that will be executed as part of the job
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 represent a sequence of tasks that will be executed as part of the job
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."