feat: add --root
cli option and make basic js api work
#45
This file contains 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 | |
# 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 && npx 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." |