72 lines
2.5 KiB
YAML
72 lines
2.5 KiB
YAML
# This workflow will do a clean installation of node dependencies, cache/restore them, run frontend tests across different versions of node (here 22.x)
|
|
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-nodejs
|
|
|
|
name: Frontend Testing
|
|
|
|
# Workflow runs when:
|
|
# - a frontend js/ts/vue/css file on "dev" changes
|
|
# - a non-draft PR to "dev" with frontend js/ts/vue/css files is opened, is reopened, or changes
|
|
# - a draft PR to "dev" with frontend js/ts/vue/css files is marked as ready for review
|
|
on:
|
|
push:
|
|
branches: [ "dev" ]
|
|
paths:
|
|
- 'frontend/src/**.[jt]s'
|
|
- 'frontend/src/**.vue'
|
|
- 'frontend/src/**.css'
|
|
- 'frontend/tests/**.[jt]s'
|
|
- 'frontend/tests/**.vue'
|
|
- 'frontend/tests/**.css'
|
|
- 'frontend/vitest.config.ts'
|
|
- 'frontend/playwright.config.ts'
|
|
pull_request:
|
|
branches: [ "dev" ]
|
|
types: ["synchronize", "ready_for_review", "opened", "reopened"]
|
|
paths:
|
|
- 'frontend/src/**.[jt]s'
|
|
- 'frontend/src/**.vue'
|
|
- 'frontend/src/**.css'
|
|
- 'frontend/tests/**.[jt]s'
|
|
- 'frontend/tests/**.vue'
|
|
- 'frontend/tests/**.css'
|
|
- 'frontend/vitest.config.ts'
|
|
- 'frontend/playwright.config.ts'
|
|
|
|
jobs:
|
|
test:
|
|
name: Run frontend unit tests
|
|
if: '! github.event.pull_request.draft'
|
|
runs-on: [self-hosted, Linux, X64]
|
|
|
|
permissions:
|
|
# Required to checkout the code
|
|
contents: read
|
|
# Required to put a comment into the pull-request
|
|
pull-requests: write
|
|
|
|
strategy:
|
|
matrix:
|
|
node-version: [22.x]
|
|
# See supported Node.js release schedule at https://nodejs.org/en/about/releases/
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Use Node.js ${{ matrix.node-version }}
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: ${{ matrix.node-version }}
|
|
cache: 'npm'
|
|
- run: npm ci
|
|
- run: npm run build
|
|
- run: npm run test:coverage -w frontend
|
|
- name: 'Report Frontend Coverage'
|
|
# Set if: always() to also generate the report if tests are failing
|
|
# Only works if you set `reportOnFailure: true` in your vite config as specified above
|
|
if: always()
|
|
uses: davelosert/vitest-coverage-report-action@v2
|
|
with:
|
|
name: 'Frontend'
|
|
json-summary-path: './frontend/coverage/coverage-summary.json'
|
|
json-final-path: './frontend/coverage/coverage-final.json'
|
|
vite-config-path: './frontend/vitest.config.ts'
|
|
file-coverage-mode: all
|