60 lines
1.8 KiB
YAML
60 lines
1.8 KiB
YAML
name: Frontend Tests
|
|
|
|
on:
|
|
push:
|
|
branches: [master, main]
|
|
pull_request:
|
|
branches: [master, main]
|
|
|
|
jobs:
|
|
test:
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v4
|
|
with:
|
|
submodules: recursive
|
|
|
|
- name: Setup Node.js 22
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: '22'
|
|
|
|
# Cache wokwi-libs node_modules to speed up repeated runs
|
|
- name: Cache wokwi-libs node_modules
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: |
|
|
wokwi-libs/avr8js/node_modules
|
|
wokwi-libs/rp2040js/node_modules
|
|
wokwi-libs/wokwi-elements/node_modules
|
|
key: wokwi-libs-${{ hashFiles('wokwi-libs/avr8js/package-lock.json', 'wokwi-libs/rp2040js/package-lock.json', 'wokwi-libs/wokwi-elements/package-lock.json') }}
|
|
|
|
# Cache frontend node_modules
|
|
- name: Cache frontend node_modules
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: frontend/node_modules
|
|
key: frontend-${{ hashFiles('frontend/package-lock.json') }}
|
|
|
|
# Build avr8js (referenced as file: dep in frontend/package.json)
|
|
- name: Build avr8js
|
|
run: cd wokwi-libs/avr8js && npm ci && npm run build
|
|
|
|
# Build rp2040js (referenced via vite alias to dist/esm)
|
|
- name: Build rp2040js
|
|
run: cd wokwi-libs/rp2040js && npm ci && npm run build
|
|
|
|
# Build wokwi-elements (referenced as file: dep in frontend/package.json)
|
|
- name: Build wokwi-elements
|
|
run: cd wokwi-libs/wokwi-elements && npm ci && npm run build
|
|
|
|
# Install frontend deps (picks up file: references to avr8js and wokwi-elements)
|
|
- name: Install frontend dependencies
|
|
run: cd frontend && npm ci
|
|
|
|
# Run all vitest tests
|
|
- name: Run tests
|
|
run: cd frontend && npm test
|