mirror of
https://github.com/vitest-dev/vitest.git
synced 2025-12-08 18:26:03 +00:00
159 lines
3.8 KiB
YAML
159 lines
3.8 KiB
YAML
name: CI
|
|
|
|
# Remove default permissions of GITHUB_TOKEN for security
|
|
# https://docs.github.com/en/actions/using-jobs/assigning-permissions-to-jobs
|
|
permissions: {}
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
|
|
pull_request:
|
|
|
|
workflow_dispatch:
|
|
|
|
concurrency:
|
|
group: ci-${{ github.event.pull_request.number || github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
env:
|
|
PLAYWRIGHT_BROWSERS_PATH: ${{ github.workspace }}/.cache/ms-playwright
|
|
|
|
jobs:
|
|
lint:
|
|
timeout-minutes: 10
|
|
runs-on: ubuntu-latest
|
|
name: 'Lint: node-latest, ubuntu-latest'
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- uses: ./.github/actions/setup-and-cache
|
|
|
|
- name: Install
|
|
run: pnpm i
|
|
|
|
- name: Build
|
|
run: pnpm run build
|
|
|
|
# check uncommited LICENSE.md, auto-imports.d.ts, etc...
|
|
- name: Check stale build artifacts
|
|
run: git diff --exit-code
|
|
|
|
- name: Lint
|
|
run: pnpm run lint
|
|
|
|
- name: Typecheck
|
|
run: pnpm run typecheck
|
|
|
|
# From https://github.com/rhysd/actionlint/blob/main/docs/usage.md#use-actionlint-on-github-actions
|
|
- name: Check workflow files
|
|
run: |
|
|
bash <(curl https://raw.githubusercontent.com/rhysd/actionlint/main/scripts/download-actionlint.bash)
|
|
./actionlint -color -shellcheck=""
|
|
|
|
changed:
|
|
runs-on: ubuntu-latest
|
|
name: 'Diff: node-latest, ubuntu-latest'
|
|
outputs:
|
|
should_skip: ${{ steps.changed-files.outputs.only_changed == 'true' }}
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Get changed files
|
|
id: changed-files
|
|
uses: tj-actions/changed-files@dcc7a0cba800f454d79fff4b993e8c3555bcc0a8 # v45.0.7
|
|
with:
|
|
files: |
|
|
docs/**
|
|
.github/**
|
|
!.github/workflows/ci.yml
|
|
**.md
|
|
|
|
test:
|
|
needs: changed
|
|
name: 'Build&Test: node-${{ matrix.node_version }}, ${{ matrix.os }}'
|
|
if: needs.changed.outputs.should_skip != 'true'
|
|
runs-on: ${{ matrix.os }}
|
|
|
|
timeout-minutes: 30
|
|
|
|
strategy:
|
|
matrix:
|
|
os: [ubuntu-latest]
|
|
node_version: [18, 20, 22]
|
|
include:
|
|
- os: macos-latest
|
|
node_version: 20
|
|
- os: windows-latest
|
|
node_version: 20
|
|
fail-fast: false
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- uses: ./.github/actions/setup-and-cache
|
|
with:
|
|
node-version: ${{ matrix.node_version }}
|
|
|
|
- uses: browser-actions/setup-chrome@c785b87e244131f27c9f19c1a33e2ead956ab7ce # v1.7.3
|
|
|
|
- name: Install
|
|
run: pnpm i
|
|
|
|
- name: Install Playwright Dependencies
|
|
run: pnpm exec playwright install chromium --with-deps --only-shell
|
|
|
|
- name: Build
|
|
run: pnpm run build
|
|
|
|
- name: Test
|
|
run: pnpm run test:ci
|
|
|
|
- name: Test Examples
|
|
run: pnpm run test:examples
|
|
|
|
- name: Unit Test UI
|
|
run: pnpm run -C packages/ui test:ui
|
|
|
|
test-browser:
|
|
needs: changed
|
|
name: 'Browsers: node-20, ${{ matrix.os }}'
|
|
if: needs.changed.outputs.should_skip != 'true'
|
|
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
matrix:
|
|
os:
|
|
- macos-latest
|
|
- windows-latest
|
|
fail-fast: false
|
|
|
|
timeout-minutes: 30
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- uses: ./.github/actions/setup-and-cache
|
|
with:
|
|
node-version: 20
|
|
|
|
- uses: browser-actions/setup-chrome@c785b87e244131f27c9f19c1a33e2ead956ab7ce # v1.7.3
|
|
- uses: browser-actions/setup-firefox@634a60ccd6599686158cf5a570481b4cd30455a2 # v1.5.4
|
|
|
|
- name: Install
|
|
run: pnpm i
|
|
|
|
- name: Install Playwright Dependencies
|
|
run: pnpm exec playwright install --with-deps --only-shell
|
|
|
|
- name: Build
|
|
run: pnpm run build
|
|
|
|
- name: Test Browser (playwright)
|
|
run: pnpm run test:browser:playwright
|
|
|
|
- name: Test Browser (webdriverio)
|
|
run: pnpm run test:browser:webdriverio
|