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