devops: fix upload-artifact@v4 incompatibility and stabilise E2E CI #14

Closed
opened 2026-03-19 17:11:29 +01:00 by marcel · 0 comments
Owner

Status

E2E networking is fixed — 27 E2E tests pass. However the job still shows as "failed" due to a separate problem with artifact uploading.

Root cause chain

1. upload-artifact@v4 not supported on Gitea (GHES)

Both the unit test and E2E jobs use actions/upload-artifact@v4 to upload screenshots/results. Gitea does not support the v2+ artifacts API:

@actions/artifact v2.0.0+, upload-artifact@v4+ and download-artifact@v4+ are not currently supported on GHES.
❌  Failure - Main Upload E2E results

This causes the entire job to be marked as failed even though all tests passed.

2. Playwright cache is never saved

Because the upload step fails, success() evaluates to false for all subsequent steps — including the Playwright browser cache save. This means the cache is never written, and every run re-downloads ~280 MiB of Chromium binaries.

Fix

Option A — Downgrade to upload-artifact@v3 (compatible with Gitea):

uses: actions/upload-artifact@v3

Option B — Add continue-on-error: true to the upload steps:

- name: Upload E2E results
  if: always()
  continue-on-error: true
  uses: actions/upload-artifact@v4

Option A is cleaner. Option B keeps v4 but silences the failure.

Note: if artifact upload is not needed at all (screenshots are mainly for local debugging), the upload steps could simply be removed.

Changes required

  • Fix or remove Upload screenshots step in unit-tests job
  • Fix or remove Upload E2E results step in e2e-tests job
  • Verify Playwright cache is saved correctly after the fix

Acceptance criteria

  • E2E job shows green when all 27 tests pass
  • Unit test job shows green
  • Playwright browser cache is saved and restored on subsequent runs (no 280 MiB download every run)
## Status E2E networking is fixed — **27 E2E tests pass**. However the job still shows as "failed" due to a separate problem with artifact uploading. ## Root cause chain ### 1. `upload-artifact@v4` not supported on Gitea (GHES) Both the unit test and E2E jobs use `actions/upload-artifact@v4` to upload screenshots/results. Gitea does not support the v2+ artifacts API: ``` @actions/artifact v2.0.0+, upload-artifact@v4+ and download-artifact@v4+ are not currently supported on GHES. ❌ Failure - Main Upload E2E results ``` This causes the entire job to be marked as failed even though all tests passed. ### 2. Playwright cache is never saved Because the upload step fails, `success()` evaluates to `false` for all subsequent steps — including the Playwright browser cache save. This means the cache is never written, and every run re-downloads ~280 MiB of Chromium binaries. ## Fix **Option A — Downgrade to `upload-artifact@v3`** (compatible with Gitea): ```yaml uses: actions/upload-artifact@v3 ``` **Option B — Add `continue-on-error: true`** to the upload steps: ```yaml - name: Upload E2E results if: always() continue-on-error: true uses: actions/upload-artifact@v4 ``` Option A is cleaner. Option B keeps v4 but silences the failure. Note: if artifact upload is not needed at all (screenshots are mainly for local debugging), the upload steps could simply be removed. ## Changes required - Fix or remove `Upload screenshots` step in `unit-tests` job - Fix or remove `Upload E2E results` step in `e2e-tests` job - Verify Playwright cache is saved correctly after the fix ## Acceptance criteria - [ ] E2E job shows green when all 27 tests pass - [ ] Unit test job shows green - [ ] Playwright browser cache is saved and restored on subsequent runs (no 280 MiB download every run)
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: marcel/familienarchiv#14