Add high-priority E2E coverage for pipeline + IIS composition + activity log
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 viaTcpListener(0), descriptive failure messages with diagnose instructions.
Tests added
| File | LOC | Tier | Closes |
|---|---|---|---|
StepBatcherParallelE2ETests.cs |
290 |
|
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 |
|
4 actions × 4 exclusion reasons → exactly 1 dispatches |
IISDeployRealWorldWebApplicationCompositionE2ETests.cs |
330 |
|
Parent + 2 child WebApps, distinct runtimes, no config bleed |
IISDeployRealWorldMultiHostE2ETests.cs |
370 |
|
Concurrent deploys, per-site journal isolation, no variable bleed |
IISDeployRealHostSpecificUserSensitiveE2ETests.cs |
290 |
|
SpecificUser AppPool with #{Sensitive.Password} round-trip; masker doesn't leak |
ActivityLogTreeShapeE2ETests.cs |
300 |
|
Full pipeline → DB → assert tree (1 Task → 2 Step → 4 Action) |
Test plan
-
dotnet buildall 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.UnitTestsfull suite stays green (unit tier, runs on every push) -
CI (Postgres + Kind): StepBatcherParallelE2ETests,ActionFilteringCompositeE2ETests,ActivityLogTreeShapeE2ETests -
CI (Windows + IIS feature): IISDeployRealWorldWebApplicationCompositionE2ETests,IISDeployRealWorldMultiHostE2ETests,IISDeployRealHostSpecificUserSensitiveE2ETests