name: Test on: push: branches: [main, develop] pull_request: branches: [main, develop] jobs: unit-tests: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v6 - name: Setup Node.js uses: actions/setup-node@v6 with: node-version: 20 - name: Install dependencies run: npm install - name: Run unit tests run: npm run test -- --coverage - name: Upload coverage to Codecov uses: codecov/codecov-action@v4 with: files: ./coverage/lcov.info flags: unittests name: codecov-umbrella e2e-tests: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v6 - name: Setup Node.js uses: actions/setup-node@v6 with: node-version: 20 - name: Install dependencies run: npm install - name: Install Playwright Browsers run: npx playwright install --with-deps chromium - name: Run E2E tests run: xvfb-run npm run test:e2e - name: Upload test results if: always() uses: actions/upload-artifact@v6 with: name: playwright-report path: playwright-report/ retention-days: 30 lint: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v6 - name: Setup Node.js uses: actions/setup-node@v6 with: node-version: 20 - name: Install dependencies run: npm install - name: Run ESLint run: npm run lint - name: Check formatting run: npm run format -- --check