name: Frontend Workflow on: push: branches: - main pull_request: branches: - "*" jobs: install-dependencies: uses: ./.github/workflows/dependencies.yml with: node_version: '20.x' with-front-dependencies-installation: true test-front: needs: install-dependencies runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: "20.x" - name: Restore the frontend cache uses: actions/cache@v4 with: path: "src/frontend/**/node_modules" key: front-node_modules-${{ hashFiles('src/frontend/**/yarn.lock') }} fail-on-cache-miss: true - name: Test App run: cd src/frontend/ && yarn test lint-front: runs-on: ubuntu-latest needs: install-dependencies steps: - name: Checkout repository uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: "20.x" - name: Restore the frontend cache uses: actions/cache@v4 with: path: "src/frontend/**/node_modules" key: front-node_modules-${{ hashFiles('src/frontend/**/yarn.lock') }} fail-on-cache-miss: true - name: Check linting run: cd src/frontend/ && yarn lint test-e2e-chromium: runs-on: ubuntu-latest needs: install-dependencies timeout-minutes: 20 steps: - name: Checkout repository uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: "20.x" - name: Restore the frontend cache uses: actions/cache@v4 with: path: "src/frontend/**/node_modules" key: front-node_modules-${{ hashFiles('src/frontend/**/yarn.lock') }} fail-on-cache-miss: true - name: Set e2e env variables run: cat env.d/development/common.e2e.dist >> env.d/development/common.dist - name: Install Playwright Browsers run: cd src/frontend/apps/e2e && yarn install --frozen-lockfile && yarn install-playwright chromium - name: Start Docker services run: make bootstrap FLUSH_ARGS='--no-input' cache= - name: Run e2e tests run: cd src/frontend/ && yarn e2e:test --project='chromium' - uses: actions/upload-artifact@v4 if: always() with: name: playwright-chromium-report path: src/frontend/apps/e2e/report/ retention-days: 7 test-e2e-other-browser: runs-on: ubuntu-latest needs: test-e2e-chromium timeout-minutes: 20 steps: - name: Checkout repository uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: "20.x" - name: Restore the frontend cache uses: actions/cache@v4 with: path: "src/frontend/**/node_modules" key: front-node_modules-${{ hashFiles('src/frontend/**/yarn.lock') }} fail-on-cache-miss: true - name: Set e2e env variables run: cat env.d/development/common.e2e.dist >> env.d/development/common.dist - name: Install Playwright Browsers run: cd src/frontend/apps/e2e && yarn install --frozen-lockfile && yarn install-playwright firefox webkit chromium - name: Start Docker services run: make bootstrap FLUSH_ARGS='--no-input' cache= - name: Run e2e tests run: cd src/frontend/ && yarn e2e:test --project=firefox --project=webkit - uses: actions/upload-artifact@v4 if: always() with: name: playwright-other-report path: src/frontend/apps/e2e/report/ retention-days: 7