Skip to content

Add high-priority E2E coverage for pipeline + IIS composition + activity log

Placeholder ppxd requested to merge add-high-priority-e2e-coverage into main

Summary

  • 7 new test files, +1947 LOC, closing the next layer of audit gaps after #341. Where the prior PR addressed production-safety risks (HTTPS, SCM restart, breaker, output-var, sticky failure), these seven tests close corner cases that production hits but unit/integration tiers don't catch on their own.
  • Pure additions — no production code touched, no shared test infrastructure modified, no existing test renamed / deleted / changed. Zero regression risk.
  • All Rule 12-compliant: skip-on-non-OS guards, GUID-suffixed resource names, IDisposable contexts with best-effort cleanup, real production classes (no mocks), [Trait(\"Category\", ...)] on every E2E, loopback ports via TcpListener(0), descriptive failure messages with diagnose instructions.

Tests added

File LOC Tier Closes
StepBatcherParallelE2ETests.cs 290 🟢 High Wall-clock proof of Task.WhenAll parallel batching for StartWithPrevious
HalibutScriptObserverTransientFailureTests.cs 100 unit Pins HalibutClientException propagates uncaught (caller-feeds-breaker contract)
ActionFilteringCompositeE2ETests.cs 270 🟢 High 4 actions × 4 exclusion reasons → exactly 1 dispatches
IISDeployRealWorldWebApplicationCompositionE2ETests.cs 330 🟢 High Parent + 2 child WebApps, distinct runtimes, no config bleed
IISDeployRealWorldMultiHostE2ETests.cs 370 🟢 High Concurrent deploys, per-site journal isolation, no variable bleed
IISDeployRealHostSpecificUserSensitiveE2ETests.cs 290 🟢 High SpecificUser AppPool with #{Sensitive.Password} round-trip; masker doesn't leak
ActivityLogTreeShapeE2ETests.cs 300 🟢 High Full pipeline → DB → assert tree (1 Task → 2 Step → 4 Action)

Test plan

  • dotnet build all three affected projects (Squid.E2ETests, Squid.UnitTests, Squid.WindowsTentacleE2ETests) — 0 errors
  • xUnit discovery confirms all 7 test classes + theory cases registered
  • Runtime execution: HalibutScriptObserverTransientFailureTests — 2/2 passed locally on macOS in 50ms
  • CI: Squid.UnitTests full suite stays green (unit tier, runs on every push)
  • CI (Postgres + Kind): StepBatcherParallelE2ETests, ActionFilteringCompositeE2ETests, ActivityLogTreeShapeE2ETests
  • CI (Windows + IIS feature): IISDeployRealWorldWebApplicationCompositionE2ETests, IISDeployRealWorldMultiHostE2ETests, IISDeployRealHostSpecificUserSensitiveE2ETests

Merge request reports

Loading