67 lines
2.3 KiB
YAML
67 lines
2.3 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
|
|
# Do NOT use submodules: recursive — the submodule pointers in this repo
|
|
# are stale and predate package.json. We clone the libs fresh below.
|
|
|
|
- name: Setup Node.js 22
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: '22'
|
|
|
|
# Clone wokwi-libs fresh (stale submodule pointers can't be used)
|
|
- name: Clone wokwi-libs
|
|
run: |
|
|
git clone --depth=1 https://github.com/wokwi/avr8js.git wokwi-libs/avr8js
|
|
git clone --depth=1 https://github.com/wokwi/rp2040js.git wokwi-libs/rp2040js
|
|
git clone --depth=1 https://github.com/wokwi/wokwi-elements.git wokwi-libs/wokwi-elements
|
|
|
|
# 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 install && npm run build
|
|
|
|
# Build rp2040js (referenced via vite alias to dist/esm)
|
|
- name: Build rp2040js
|
|
run: cd wokwi-libs/rp2040js && npm install && 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 install && 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
|