test: point the live milestone assertion at P5 after the backlog reconcile
Closed the 15 genuinely-shipped issues on the dogfood repo (scheduler, Monte Carlo, calibration, lifecycle, model router, query_project, capture_work, record_directive, etc.) so the board reflects reality: 10 open / 24 done. P2 dropped off Runway once all its work shipped (a milestone with no open scope isn't runway — correct), so the live spec now drills into P5 (which still has open scope) instead of P2. No code change — this only updates the live assertion to match the reconciled backlog. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -42,16 +42,17 @@ test.describe('live backlog', () => {
|
|||||||
win.getByText(/cold-start priors · \d+\/20 closed issues estimated|calibrated on \d+ closed/),
|
win.getByText(/cold-start priors · \d+\/20 closed issues estimated|calibrated on \d+ closed/),
|
||||||
).toBeVisible()
|
).toBeVisible()
|
||||||
// Real per-milestone forecasts — these milestone names come from gitea, not the
|
// Real per-milestone forecasts — these milestone names come from gitea, not the
|
||||||
// fixture (which lists Beta / Pilot-ready / v1.0).
|
// fixture (which lists Beta / Pilot-ready / v1.0). Only milestones with open
|
||||||
await expect(win.getByText(/P2 — Scheduler/)).toBeVisible()
|
// scope appear (P2 dropped off once all its work shipped — correct).
|
||||||
|
await expect(win.getByText(/P5 — Dogfood/)).toBeVisible()
|
||||||
// Real capacity config from pm-state (christian/stephen), not the fixture (Stephen/Ana K.)
|
// Real capacity config from pm-state (christian/stephen), not the fixture (Stephen/Ana K.)
|
||||||
await expect(win.getByText('christian', { exact: true })).toBeVisible()
|
await expect(win.getByText('christian', { exact: true })).toBeVisible()
|
||||||
await expect(win.getByText(/pd\/day/).first()).toBeVisible()
|
await expect(win.getByText(/pd\/day/).first()).toBeVisible()
|
||||||
await win.screenshot({ path: join(here, '.artifacts', 'screens', 'live-runway.png'), fullPage: true, animations: 'disabled' })
|
await win.screenshot({ path: join(here, '.artifacts', 'screens', 'live-runway.png'), fullPage: true, animations: 'disabled' })
|
||||||
|
|
||||||
// Milestone drill-in — clicking a real milestone opens its real detail
|
// Milestone drill-in — clicking a real milestone opens its real detail
|
||||||
await win.getByText(/P2 — Scheduler/).click()
|
await win.getByText(/P5 — Dogfood/).click()
|
||||||
await expect(win.getByRole('heading', { name: 'P2 — Scheduler + Monte Carlo' })).toBeVisible()
|
await expect(win.getByRole('heading', { name: 'P5 — Dogfood + polish' })).toBeVisible()
|
||||||
await expect(win.getByText(/\d+ issues · est \d+d/)).toBeVisible()
|
await expect(win.getByText(/\d+ issues · est \d+d/)).toBeVisible()
|
||||||
await win.screenshot({ path: join(here, '.artifacts', 'screens', 'live-milestone.png'), fullPage: true, animations: 'disabled' })
|
await win.screenshot({ path: join(here, '.artifacts', 'screens', 'live-milestone.png'), fullPage: true, animations: 'disabled' })
|
||||||
await rail.getByRole('button', { name: 'Runway' }).click()
|
await rail.getByRole('button', { name: 'Runway' }).click()
|
||||||
|
|||||||
Reference in New Issue
Block a user