name: "Frontend tests" on: push: paths-ignore: - 'doc/**' pull_request: paths-ignore: - 'doc/**' permissions: contents: read jobs: playwright-chrome: env: PNPM_HOME: ~/.pnpm-store name: Playwright Chrome runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v6 - uses: actions/cache@v5 name: Setup gnpm cache if: always() with: path: | ${{ env.PNPM_HOME }} ~/.cache/ms-playwright ~/.local/share/gnpm /usr/local/bin/gnpm /usr/local/bin/gnpm-0.0.12 key: ${{ runner.os }}-gnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} restore-keys: | ${{ runner.os }}-gnpm-store- - name: Setup gnpm uses: SamTV12345/gnpm-setup@main with: version: 0.0.12 - name: Install all dependencies and symlink for ep_etherpad-lite run: gnpm install --frozen-lockfile - name: Create settings.json run: cp ./src/tests/settings.json settings.json - name: Run the frontend tests shell: bash run: | gnpm run prod & connected=false can_connect() { curl -sSfo /dev/null http://localhost:9001/ || return 1 connected=true } now() { date +%s; } start=$(now) while [ $(($(now) - $start)) -le 15 ] && ! can_connect; do sleep 1 done cd src gnpm exec playwright install chromium --with-deps gnpm run test-ui --project=chromium - uses: actions/upload-artifact@v7 if: always() with: name: playwright-report-chrome path: src/playwright-report/ retention-days: 30 playwright-firefox: env: PNPM_HOME: ~/.pnpm-store name: Playwright Firefox runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v6 - uses: actions/cache@v5 name: Setup gnpm cache if: always() with: path: | ${{ env.PNPM_HOME }} ~/.local/share/gnpm ~/.cache/ms-playwright /usr/local/bin/gnpm /usr/local/bin/gnpm-0.0.12 key: ${{ runner.os }}-gnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} restore-keys: | ${{ runner.os }}-gnpm-store- - name: Setup gnpm uses: SamTV12345/gnpm-setup@main with: version: 0.0.12 - name: Install all dependencies and symlink for ep_etherpad-lite run: gnpm install --frozen-lockfile - name: Create settings.json run: cp ./src/tests/settings.json settings.json - name: Run the frontend tests shell: bash run: | gnpm run prod & connected=false can_connect() { curl -sSfo /dev/null http://localhost:9001/ || return 1 connected=true } now() { date +%s; } start=$(now) while [ $(($(now) - $start)) -le 15 ] && ! can_connect; do sleep 1 done cd src gnpm exec playwright install firefox --with-deps gnpm run test-ui --project=firefox - uses: actions/upload-artifact@v7 if: always() with: name: playwright-report-firefox path: src/playwright-report/ retention-days: 30