From dcb2b2f726a39c0a3383ac4fac624920905f5872 Mon Sep 17 00:00:00 2001 From: Marcel Date: Thu, 14 May 2026 14:04:53 +0200 Subject: [PATCH 1/4] devops(ci): silence Spring Boot INFO noise in test log Set logging.level.root=WARN + logging.level.org.raddatz=INFO in backend/src/test/resources/application.properties to keep the full test run under Gitea's 1.4 MB log cap. Co-Authored-By: Claude Sonnet 4.6 --- backend/src/test/resources/application.properties | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 backend/src/test/resources/application.properties diff --git a/backend/src/test/resources/application.properties b/backend/src/test/resources/application.properties new file mode 100644 index 00000000..a6b847d2 --- /dev/null +++ b/backend/src/test/resources/application.properties @@ -0,0 +1,2 @@ +logging.level.root=WARN +logging.level.org.raddatz=INFO -- 2.49.1 From 811b80c9d3cee9b1d94d8bee9d1c03c6402f1890 Mon Sep 17 00:00:00 2001 From: Marcel Date: Thu, 14 May 2026 14:05:55 +0200 Subject: [PATCH 2/4] devops(ci): add Surefire per-test timeout and JVM ceiling MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit forkedProcessTimeoutInSeconds=120 caps the JVM on catastrophic hangs. junit.jupiter.execution.timeout.default=90s times out each hanging JUnit 5 test individually, letting healthy tests continue — replaces the deprecated alias that conflicted with the JVM ceiling. Co-Authored-By: Claude Sonnet 4.6 --- backend/pom.xml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/backend/pom.xml b/backend/pom.xml index daa14df3..aa6df656 100644 --- a/backend/pom.xml +++ b/backend/pom.xml @@ -273,6 +273,16 @@ + + org.apache.maven.plugins + maven-surefire-plugin + + 120 + + 90 s + + + -- 2.49.1 From fd4d14f1fe593aaeba3c3d297197207638697a50 Mon Sep 17 00:00:00 2001 From: Marcel Date: Thu, 14 May 2026 14:06:45 +0200 Subject: [PATCH 3/4] devops(ci): upload surefire XML reports as CI artifact MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Captures all 102 test results independent of log verbosity. if: always() ensures reports are available on failure — exactly when they're needed most. Co-Authored-By: Claude Sonnet 4.6 --- .gitea/workflows/ci.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index 3f82758d..1cdb92e9 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -197,6 +197,14 @@ jobs: ./mvnw clean test working-directory: backend + - name: Upload surefire reports + if: always() + # Gitea Actions (act_runner) does not implement upload-artifact v4 protocol — pinned per ADR-014. Do NOT upgrade. See #557. + uses: actions/upload-artifact@v3 + with: + name: surefire-reports + path: backend/target/surefire-reports/ + # ─── fail2ban Regex Regression ──────────────────────────────────────────────── # The filter parses Caddy's JSON access log; a Caddy upgrade that reorders # the JSON keys would silently break it (fail2ban-regex would return -- 2.49.1 From 46e2e937c4e5d3d9537f3bd7c5a3b852e0d61fae Mon Sep 17 00:00:00 2001 From: Marcel Date: Thu, 14 May 2026 14:08:05 +0200 Subject: [PATCH 4/4] devops(ci): add testTimeout + hookTimeout to browser vitest config testTimeout: 30_000 causes Vitest to fail a hanging browser test within 30 s when Chromium crashes mid-load instead of silently occupying the CI slot for 14+ min. Co-Authored-By: Claude Sonnet 4.6 --- frontend/vitest.client-coverage.config.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/frontend/vitest.client-coverage.config.ts b/frontend/vitest.client-coverage.config.ts index 6aa1614a..dc822281 100644 --- a/frontend/vitest.client-coverage.config.ts +++ b/frontend/vitest.client-coverage.config.ts @@ -24,6 +24,8 @@ export default defineConfig({ }) ], test: { + testTimeout: 30_000, + hookTimeout: 15_000, expect: { requireAssertions: true }, browser: { enabled: true, -- 2.49.1