Merge branch 'main' into feat/apply-changes-assign-milestone
This commit is contained in:
@@ -38,6 +38,11 @@ test.describe('live onboarding', () => {
|
||||
const win = await app.firstWindow()
|
||||
await win.waitForLoadState('domcontentloaded')
|
||||
|
||||
// Any uncaught render error in a real-data view builder must fail the test —
|
||||
// this is the "it actually works on real data" guarantee.
|
||||
const pageErrors: string[] = []
|
||||
win.on('pageerror', (e) => pageErrors.push(e.message))
|
||||
|
||||
// the connection gate, not the app
|
||||
await expect(win.getByText(/Connect your Gitea/)).toBeVisible({ timeout: 15000 })
|
||||
await win.getByPlaceholder('your-org').fill('christian')
|
||||
@@ -45,11 +50,35 @@ test.describe('live onboarding', () => {
|
||||
await win.getByPlaceholder(/gitea PAT/).fill(token!)
|
||||
await win.getByRole('button', { name: 'Connect' }).click()
|
||||
|
||||
// it validated + saved + reconciled into the real board — real issue titles prove it
|
||||
const rail = win.getByRole('navigation', { name: 'Primary' })
|
||||
const realTitle = /Model router|SQLite cache bootstrap|Purity\/rebuild/
|
||||
|
||||
// Board (real reconciled columns) — real issue titles prove the sync landed.
|
||||
await rail.getByRole('button', { name: 'The pot' }).click()
|
||||
await expect(win.getByText(/Model router|SQLite cache bootstrap|Purity\/rebuild/).first()).toBeVisible({ timeout: 30000 })
|
||||
await expect(win.getByText(realTitle).first()).toBeVisible({ timeout: 30000 })
|
||||
|
||||
// Gantt tab — scheduler-derived bars over the real open backlog.
|
||||
await win.getByRole('tab', { name: 'Gantt' }).click()
|
||||
await expect(win.getByText(realTitle).first()).toBeVisible()
|
||||
|
||||
// Dependencies tab — real dep graph. Just needs to render without throwing.
|
||||
await win.getByRole('tab', { name: 'Dependencies' }).click()
|
||||
await win.waitForTimeout(300)
|
||||
|
||||
// Issue drill-in — the machine-derived sidecar (lifecycle/forecast/deps) on a real issue.
|
||||
await win.getByRole('tab', { name: 'Board' }).click()
|
||||
await win.getByText(realTitle).first().click()
|
||||
await expect(win.getByText('Machine-derived')).toBeVisible()
|
||||
await win.getByRole('button', { name: 'Back' }).click()
|
||||
|
||||
// Standup + Inbox — scheduler plan / nag / inbox feed over real data.
|
||||
await rail.getByRole('button', { name: 'Standup' }).click()
|
||||
await expect(win.getByRole('heading', { name: 'Morning standup' })).toBeVisible()
|
||||
await rail.getByRole('button', { name: 'Inbox' }).click()
|
||||
await expect(win.getByRole('heading', { name: 'Inbox' })).toBeVisible()
|
||||
|
||||
await win.screenshot({ path: join(here, '.artifacts', 'screens', 'live-onboarding.png'), fullPage: true, animations: 'disabled' })
|
||||
expect(pageErrors, `uncaught render errors: ${pageErrors.join(' · ')}`).toEqual([])
|
||||
|
||||
await app.close()
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user