Phase 0a: A1 Angular HTTPS-Cert-Race fixen (einer der 4 pre-existing failures) #38

Closed
opened 2026-06-18 06:17:57 +00:00 by Artur · 1 comment
Owner

Problembeschreibung

Test A1 ("Bootstrap — Angular lädt und bootstrapt erfolgreich") in angular-comprehensive.test.ts schlägt fehl, wenn die gesamte Test-Suite parallel läuft. Fehler:

[ScriptLoader] Failed to load script: https://localhost/angular/a1-bootstrap.js — unable to verify the first certificate
Empty chunk: https://localhost/angular/a1-bootstrap.js

Der Angular-Test-Server (Bun.serve ohne TLS) served korrekt via HTTP auf localhost. Im parallelen Testlauf generiert der RequestManager jedoch eine HTTPS-URL für den Script-Fetch, was zu einem Zertifikatsfehler führt. In Isolation läuft der Test fehlerfrei — es ist ein Race-Condition-Problem in der parallelen Test-Infrastruktur.

Lösungsansätze

Option A: TLS in Bun.serve (empfohlen)

Den Mock-Server mit einem selbstsignierten Zertifikat starten, sodass HTTPS-Requests akzeptiert werden.

Vorteil: Löst die Ursache — HTTPS funktioniert dann tatsächlich.
Nachteil: Braucht Zertifikats-Dateien im Repo.

Option B: URL-Force auf HTTP (Workaround)

In DynamicScripts/ScriptLoader prüfen ob die Ziel-URL localhost ist und explizit http:// erzwingen statt https://.

Option C: Fetch-Interceptor für Test-Seiten

page.goto() returned echte HTTP-Response, aber dynamische Script-Nachladeversuche gehen via HTTPS. Im RequestManager einen Interceptor für localhost-URLs einbauen, der HTTP erzwingt.

Akzeptanzkriterien

  • bun test läuft ohne A1-Fehler (alle 29 Angular-Tests pass)
  • A1 besteht sowohl in Isolation als auch im parallelen Suite-Lauf
  • Keine Regression in anderen Tests (1422+ bestehende Tests bleiben grün)

Betroffene Dateien

  • tests/interaction/angular-comprehensive.test.ts — Mock-Server + Test-Seite
  • src/js/script-loader.ts — fetchContent/executeRaw
  • src/js/dynamic-scripts.ts — _processQueue fetch
  • Optional: scripts/gen-cert.sh — TLS-Zertifikat-Generierung

Cross-Referenzen

  • #37 (buildVarDecls fix, der React-UMD enabled hat)
  • Test-Suite: angular-comprehensive.test.ts (29 Tests, 28 pass, 1 flaky)
## Problembeschreibung Test A1 ("Bootstrap — Angular lädt und bootstrapt erfolgreich") in `angular-comprehensive.test.ts` schlägt fehl, wenn die gesamte Test-Suite parallel läuft. Fehler: ``` [ScriptLoader] Failed to load script: https://localhost/angular/a1-bootstrap.js — unable to verify the first certificate Empty chunk: https://localhost/angular/a1-bootstrap.js ``` Der Angular-Test-Server (`Bun.serve` ohne TLS) served korrekt via HTTP auf localhost. Im parallelen Testlauf generiert der RequestManager jedoch eine HTTPS-URL für den Script-Fetch, was zu einem Zertifikatsfehler führt. In Isolation läuft der Test fehlerfrei — es ist ein Race-Condition-Problem in der parallelen Test-Infrastruktur. ## Lösungsansätze ### Option A: TLS in Bun.serve (empfohlen) Den Mock-Server mit einem selbstsignierten Zertifikat starten, sodass HTTPS-Requests akzeptiert werden. **Vorteil:** Löst die Ursache — HTTPS funktioniert dann tatsächlich. **Nachteil:** Braucht Zertifikats-Dateien im Repo. ### Option B: URL-Force auf HTTP (Workaround) In `DynamicScripts`/`ScriptLoader` prüfen ob die Ziel-URL `localhost` ist und explizit `http://` erzwingen statt `https://`. ### Option C: Fetch-Interceptor für Test-Seiten `page.goto()` returned echte HTTP-Response, aber dynamische Script-Nachladeversuche gehen via HTTPS. Im RequestManager einen Interceptor für localhost-URLs einbauen, der HTTP erzwingt. ## Akzeptanzkriterien - [ ] `bun test` läuft ohne A1-Fehler (alle 29 Angular-Tests pass) - [ ] A1 besteht sowohl in Isolation als auch im parallelen Suite-Lauf - [ ] Keine Regression in anderen Tests (1422+ bestehende Tests bleiben grün) ## Betroffene Dateien - `tests/interaction/angular-comprehensive.test.ts` — Mock-Server + Test-Seite - `src/js/script-loader.ts` — fetchContent/executeRaw - `src/js/dynamic-scripts.ts` — _processQueue fetch - Optional: `scripts/gen-cert.sh` — TLS-Zertifikat-Generierung ## Cross-Referenzen - #37 (buildVarDecls fix, der React-UMD enabled hat) - Test-Suite: angular-comprehensive.test.ts (29 Tests, 28 pass, 1 flaky)
Author
Owner

Implementiert. Commit 3517c7c.
Root cause: test HTML used relative script URLs → DynamicScriptHandler resolved against wrong base URL during parallel execution.
Fix: server generates absolute URLs (http://localhost:PORT/...) in fixture HTML.
Also: changed Page default baseUrl + fallback URLs from https://localhost to http://localhost.
Test: 1423 pass, A1 now in parallel suite.

✅ Implementiert. Commit 3517c7c. Root cause: test HTML used relative script URLs → DynamicScriptHandler resolved against wrong base URL during parallel execution. Fix: server generates absolute URLs (http://localhost:PORT/...) in fixture HTML. Also: changed Page default baseUrl + fallback URLs from https://localhost to http://localhost. Test: 1423 pass, A1 now ✅ in parallel suite.
Artur closed this issue 2026-06-18 06:28:50 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
glow-all/true-headless-browser#38
No description provided.