Files
OmniRoute/config/quality/e2e-timings.json
Diego Rodrigues de Sa e Souza 4505e67c04 feat(ci): duration-balanced E2E shards via LPT bin-packing (WS4.1) (#7090)
Playwright --shard distributes by count (per file with fullyParallel:false),
blind to duration — measured skew on the 9-shard matrix: 24m47s worst vs 1m47s
best (14x), putting E2E on the CI critical path (~25min of the 33min gate).

- scripts/quality/balance-e2e-shards.mjs: LPT greedy (heaviest first into the
  lightest shard) over config/quality/e2e-timings.json; deterministic
  (weight desc, filename tiebreak); new specs get the median weight; the CLI
  self-verifies the shard union equals the discovered spec list and exits
  non-zero on ANY inconsistency (missing timings, lost spec) so the CI step
  falls back to plain --shard — never fewer specs than before.
- config/quality/e2e-timings.json: relative weights seeded from spec LOC
  (proxy); replace with real per-file durations from a full run when convenient
  (documented in _meta). LOC-seeded packing already lands at 742-761 per shard
  (1.03x skew) vs the alphabetical round-robin that produced 14x.
- ci.yml test-e2e: balanced list per shard with logged assignment + fallback.
TDD: 5 unit tests (LPT invariants, determinism, completeness, median fallback,
seed-vs-specs drift guard).
2026-07-14 07:07:27 -03:00

39 lines
1.6 KiB
JSON

{
"_meta": "Relative weights for scripts/quality/balance-e2e-shards.mjs (LPT shard packing). Unitless \u2014 only ratios matter. Seeded from spec LOC (proxy) on 2026-07-13; replace values with real per-file durations (seconds) from a full CI run's reports whenever convenient. New specs without an entry get the median weight.",
"a11y-resilience.spec.ts": 59,
"a11y.spec.ts": 281,
"agent-bridge-traffic-cross.spec.ts": 155,
"agent-bridge.spec.ts": 160,
"agent-skills-page.spec.ts": 205,
"analytics-tabs.spec.ts": 334,
"api-keys-flow.spec.ts": 643,
"api.spec.ts": 30,
"combo-live-studio.spec.ts": 35,
"combo-unification.spec.ts": 192,
"combos-flow.spec.ts": 629,
"compression-studio.spec.ts": 55,
"error-pages.spec.ts": 101,
"group-b-activity-feed.spec.ts": 96,
"group-b-quota-plans-config.spec.ts": 154,
"group-b-quota-share-pools.spec.ts": 98,
"group-b-redirect-logs-activity.spec.ts": 56,
"memory-engine.spec.ts": 607,
"memory-qdrant-routes.spec.ts": 360,
"memory-settings.spec.ts": 193,
"navigation.spec.ts": 28,
"playground-compare.spec.ts": 138,
"playground-studio.spec.ts": 101,
"protocol-visibility.spec.ts": 25,
"providers-bailian-coding-plan.spec.ts": 240,
"providers-management.spec.ts": 324,
"proxy-registry.smoke.spec.ts": 218,
"resilience-plan-alignment.spec.ts": 382,
"responsive.spec.ts": 21,
"search-tools-studio.spec.ts": 133,
"settings-toggles.spec.ts": 127,
"skills-marketplace.spec.ts": 209,
"smoke.spec.ts": 33,
"traffic-inspector.spec.ts": 212,
"translator-friendly.spec.ts": 115,
"visual-resilience-smoke.spec.ts": 20
}