RUN  v4.1.9 /workspace/niko/agent-platform/frontend Coverage enabled with v8 stderr | src/shared/hooks/useFilterState.test.tsx > useFilterState > returns default values when no URL params ⚠️ React Router Future Flag Warning: React Router will begin wrapping state updates in `React.startTransition` in v7. You can use the `v7_startTransition` future flag to opt-in early. For more information, see https://reactrouter.com/v6/upgrading/future#v7_starttransition. ⚠️ React Router Future Flag Warning: Relative route resolution within Splat routes is changing in v7. You can use the `v7_relativeSplatPath` future flag to opt-in early. For more information, see https://reactrouter.com/v6/upgrading/future#v7_relativesplatpath. ✓ src/features/auth/authStore.test.ts > authStore > starts unauthenticated 13ms ✓ src/features/auth/authStore.test.ts > authStore > setAuth sets authenticated state 7ms ✓ src/features/auth/authStore.test.ts > authStore > clearAuth clears all auth state 2ms ✓ src/msw/__tests__/runs-handler.test.ts > runs MSW handler > returns runs without filter 125ms ✓ src/msw/__tests__/runs-handler.test.ts > runs MSW handler > filters by created_after (30 days) 23ms ✓ src/msw/__tests__/runs-handler.test.ts > runs MSW handler > filters by created_after (24 hours) 17ms ✓ src/shared/hooks/useFilterState.test.tsx > useFilterState > returns default values when no URL params 135ms ✓ src/shared/hooks/useFilterState.test.tsx > useFilterState > reads initial values from URL 23ms stderr | src/features/auth/CallbackPage.test.tsx > CallbackPage > navigates to dashboard when valid token is in sessionStorage ⚠️ React Router Future Flag Warning: React Router will begin wrapping state updates in `React.startTransition` in v7. You can use the `v7_startTransition` future flag to opt-in early. For more information, see https://reactrouter.com/v6/upgrading/future#v7_starttransition. ⚠️ React Router Future Flag Warning: Relative route resolution within Splat routes is changing in v7. You can use the `v7_relativeSplatPath` future flag to opt-in early. For more information, see https://reactrouter.com/v6/upgrading/future#v7_relativesplatpath. ✓ src/msw/__tests__/runs-handler.test.ts > runs MSW handler > handles invalid created_after gracefully 78ms ✓ src/msw/__tests__/runs-handler.test.ts > runs MSW handler > handles today shorthand gracefully 39ms ✓ src/layouts/uiStore.test.ts > uiStore > defaults > has sidebar open by default 13ms ✓ src/layouts/uiStore.test.ts > uiStore > defaults > has dark theme by default 2ms ✓ src/layouts/uiStore.test.ts > uiStore > defaults > has null sessionTimeoutAt by default 1ms ✓ src/layouts/uiStore.test.ts > uiStore > toggleSidebar > closes sidebar when open 2ms ✓ src/layouts/uiStore.test.ts > uiStore > toggleSidebar > opens sidebar when closed 1ms ✓ src/layouts/uiStore.test.ts > uiStore > setSidebarOpen > sets sidebar to false 1ms ✓ src/layouts/uiStore.test.ts > uiStore > setSidebarOpen > sets sidebar to true 1ms ✓ src/layouts/uiStore.test.ts > uiStore > setTheme > sets theme to light 1ms ✓ src/layouts/uiStore.test.ts > uiStore > setTheme > sets theme to high-contrast 2ms ✓ src/layouts/uiStore.test.ts > uiStore > setTheme > sets theme to dark 2ms ✓ src/layouts/uiStore.test.ts > uiStore > sessionTimeoutAt > sets sessionTimeoutAt to a timestamp 1ms ✓ src/layouts/uiStore.test.ts > uiStore > sessionTimeoutAt > resets sessionTimeoutAt to null 1ms ✓ src/layouts/uiStore.test.ts > uiStore > resetSession > restores defaults 2ms ✓ src/shared/hooks/useFilterState.test.tsx > useFilterState > sets a single filter value 66ms ✓ src/shared/hooks/useFilterState.test.tsx > useFilterState > clears all filters and resets sort 54ms ✓ src/shared/hooks/useFilterState.test.tsx > useFilterState > sets multi-select filter as pipe-separated string 15ms stderr | src/features/auth/CallbackPage.test.tsx > CallbackPage > navigates to returnUrl when set in sessionStorage No routes matched location "/runs/run-1" ✓ src/features/auth/CallbackPage.test.tsx > CallbackPage > navigates to dashboard when valid token is in sessionStorage 258ms ✓ src/features/auth/CallbackPage.test.tsx > CallbackPage > sets auth store with decoded JWT when token is available 17ms ✓ src/features/auth/CallbackPage.test.tsx > CallbackPage > shows error when no token in sessionStorage 37ms ✓ src/features/auth/CallbackPage.test.tsx > CallbackPage > clears oidc-token from sessionStorage after processing 20ms ✓ src/msw/__tests__/runs-handler.test.ts > runs MSW handler > filters by project_id 67ms ✓ src/msw/__tests__/runs-handler.test.ts > runs MSW handler > filters by multiple project_ids 25ms ✓ src/msw/__tests__/runs-handler.test.ts > runs MSW handler > sorts by tokens desc 25ms ✓ src/shared/components/TokenDisplay.test.tsx > TokenDisplay > renders 0 as "0" 297ms ✓ src/shared/components/TokenDisplay.test.tsx > TokenDisplay > renders 500 as "500" 13ms ✓ src/shared/components/TokenDisplay.test.tsx > TokenDisplay > renders 1500 as "1.5K" 29ms ✓ src/shared/components/TokenDisplay.test.tsx > TokenDisplay > renders 890123 as "890.1K" 18ms ✓ src/shared/components/TokenDisplay.test.tsx > TokenDisplay > renders 1234567 as "1.2M" 20ms ✓ src/msw/__tests__/runs-handler.test.ts > runs MSW handler > sorts by tokens asc 69ms ✓ src/shared/hooks/useFilterState.test.tsx > useFilterState > reads multi-select filter from URL 29ms ✓ src/shared/hooks/useFilterState.test.tsx > useFilterState > sets sort key and toggles order 27ms ✓ src/features/auth/CallbackPage.test.tsx > CallbackPage > navigates to returnUrl when set in sessionStorage 24ms ✓ src/shared/components/TokenDisplay.test.tsx > TokenDisplay > renders 999500 as "999.5K" 11ms ✓ src/shared/components/TokenDisplay.test.tsx > TokenDisplay > renders with label when provided 18ms ✓ src/shared/components/DataTable.test.tsx > DataTable > renders column headers 637ms ✓ src/shared/components/DataTable.test.tsx > DataTable > renders data rows 58ms ✓ src/shared/components/DataTable.test.tsx > DataTable > renders empty state when data is empty 40ms ✓ src/shared/components/FilterBar.test.tsx > FilterBar > renders filter labels 275ms ✓ src/shared/components/FilterBar.test.tsx > FilterBar > renders clear button 738ms stderr | src/features/auth/LoginPage.test.tsx > LoginPage > shows login heading, description and button ⚠️ React Router Future Flag Warning: React Router will begin wrapping state updates in `React.startTransition` in v7. You can use the `v7_startTransition` future flag to opt-in early. For more information, see https://reactrouter.com/v6/upgrading/future#v7_starttransition. ⚠️ React Router Future Flag Warning: Relative route resolution within Splat routes is changing in v7. You can use the `v7_relativeSplatPath` future flag to opt-in early. For more information, see https://reactrouter.com/v6/upgrading/future#v7_relativesplatpath. ✓ src/shared/components/DataTable.test.tsx > DataTable > renders loading skeleton rows 184ms ✓ src/features/auth/LoginPage.test.tsx > LoginPage > shows login heading, description and button 1503ms ✓ src/shared/components/DataTable.test.tsx > DataTable > renders error state with retry button 607ms ✓ src/features/auth/LoginPage.test.tsx > LoginPage > shows session expired message when expired query param is set 55ms ✓ src/shared/components/FilterBar.test.tsx > FilterBar > calls onChange when multi-select option clicked 524ms ✓ src/features/auth/LoginPage.test.tsx > LoginPage > does not show expired message without expired param 142ms ✓ src/shared/components/DataTable.test.tsx > DataTable > calls onRetry when retry clicked 264ms ✓ src/shared/components/DataTable.test.tsx > DataTable > calls onSort when sortable header clicked 153ms ✓ src/features/auth/LoginPage.test.tsx > LoginPage > redirects to dashboard when already authenticated 148ms stderr | src/features/pipelines/PipelineDetailPage.test.tsx > PipelineDetailPage > shows pipeline info for a known pipeline ⚠️ React Router Future Flag Warning: React Router will begin wrapping state updates in `React.startTransition` in v7. You can use the `v7_startTransition` future flag to opt-in early. For more information, see https://reactrouter.com/v6/upgrading/future#v7_starttransition. ⚠️ React Router Future Flag Warning: Relative route resolution within Splat routes is changing in v7. You can use the `v7_relativeSplatPath` future flag to opt-in early. For more information, see https://reactrouter.com/v6/upgrading/future#v7_relativesplatpath. ✓ src/shared/components/ConfirmDialog.test.tsx > ConfirmDialog > renders with title and message 990ms ✓ src/features/auth/LoginPage.test.tsx > LoginPage > performs mock login in dev mode and navigates to dashboard 878ms ✓ src/shared/components/DurationDisplay.test.tsx > DurationDisplay > renders 0ms as "0s" 220ms ✓ src/shared/components/DurationDisplay.test.tsx > DurationDisplay > renders 5000ms as "5s" 18ms ✓ src/shared/components/DurationDisplay.test.tsx > DurationDisplay > renders 65000ms as "1m 5s" 14ms ✓ src/shared/components/DurationDisplay.test.tsx > DurationDisplay > renders 3661000ms as "1h 1m" 34ms ✓ src/shared/components/DurationDisplay.test.tsx > DurationDisplay > renders 3723000ms as "1h 2m" 18ms ✓ src/shared/components/DurationDisplay.test.tsx > DurationDisplay > renders null as "—" 20ms ✓ src/shared/components/ConfirmDialog.test.tsx > ConfirmDialog > calls onConfirm when confirm button is clicked 675ms ✓ src/shared/components/ConfirmDialog.test.tsx > ConfirmDialog > calls onCancel when cancel button is clicked 351ms ✓ src/shared/components/ConfirmDialog.test.tsx > ConfirmDialog > does not render when closed 19ms ✓ src/shared/components/SourceBadge.test.tsx > SourceBadge > renders manual badge 181ms ✓ src/shared/components/SourceBadge.test.tsx > SourceBadge > renders webhook badge 14ms ✓ src/shared/components/SourceBadge.test.tsx > SourceBadge > renders schedule badge 25ms ✓ src/shared/components/SourceBadge.test.tsx > SourceBadge > renders cli badge 17ms ✓ src/shared/components/RunPhaseIcon.test.tsx > RunPhaseIcon > renders pending with correct label 133ms ✓ src/shared/components/RunPhaseIcon.test.tsx > RunPhaseIcon > renders running with correct label 15ms ✓ src/shared/components/RunPhaseIcon.test.tsx > RunPhaseIcon > renders succeeded with correct label 43ms ✓ src/shared/components/RunPhaseIcon.test.tsx > RunPhaseIcon > renders failed with correct label 19ms ✓ src/shared/components/Breadcrumb.test.tsx > Breadcrumb > renders items with separators 168ms ✓ src/features/pipelines/PipelineDetailPage.test.tsx > PipelineDetailPage > shows pipeline info for a known pipeline 2034ms ✓ src/shared/components/Breadcrumb.test.tsx > Breadcrumb > renders links for items with href 329ms ✓ src/shared/components/Breadcrumb.test.tsx > Breadcrumb > renders last item as plain text 24ms stderr | src/shared/components/ErrorBoundary.test.tsx > ErrorBoundary > renders fallback on error Error: kaboom at Bomb (/workspace/niko/agent-platform/frontend/src/shared/components/ErrorBoundary.test.tsx:6:9) at Object.react_stack_bottom_frame (/workspace/node_modules/react-dom/cjs/react-dom-client.development.js:25904:20) at renderWithHooks (/workspace/node_modules/react-dom/cjs/react-dom-client.development.js:7662:22) at updateFunctionComponent (/workspace/node_modules/react-dom/cjs/react-dom-client.development.js:10166:19) at beginWork (/workspace/node_modules/react-dom/cjs/react-dom-client.development.js:11778:18) at runWithFiberInDEV (/workspace/node_modules/react-dom/cjs/react-dom-client.development.js:874:13) at performUnitOfWork (/workspace/node_modules/react-dom/cjs/react-dom-client.development.js:17641:22) at workLoopSync (/workspace/node_modules/react-dom/cjs/react-dom-client.development.js:17469:41) at renderRootSync (/workspace/node_modules/react-dom/cjs/react-dom-client.development.js:17450:11) at performWorkOnRoot (/workspace/node_modules/react-dom/cjs/react-dom-client.development.js:16583:35) { [stack]: [Getter/Setter], [message]: 'kaboom' } The above error occurred in the component. React will try to recreate this component tree from scratch using the error boundary you provided, ErrorBoundary. ErrorBoundary caught: Error: kaboom at Bomb (/workspace/niko/agent-platform/frontend/src/shared/components/ErrorBoundary.test.tsx:6:9) at Object.react_stack_bottom_frame (/workspace/node_modules/react-dom/cjs/react-dom-client.development.js:25904:20) at renderWithHooks (/workspace/node_modules/react-dom/cjs/react-dom-client.development.js:7662:22) at updateFunctionComponent (/workspace/node_modules/react-dom/cjs/react-dom-client.development.js:10166:19) at beginWork (/workspace/node_modules/react-dom/cjs/react-dom-client.development.js:11778:18) at runWithFiberInDEV (/workspace/node_modules/react-dom/cjs/react-dom-client.development.js:874:13) at performUnitOfWork (/workspace/node_modules/react-dom/cjs/react-dom-client.development.js:17641:22) at workLoopSync (/workspace/node_modules/react-dom/cjs/react-dom-client.development.js:17469:41) at renderRootSync (/workspace/node_modules/react-dom/cjs/react-dom-client.development.js:17450:11) at performWorkOnRoot (/workspace/node_modules/react-dom/cjs/react-dom-client.development.js:16583:35) { componentStack: '\n' + ' at Bomb (/workspace/niko/agent-platform/frontend/src/shared/components/ErrorBoundary.test.tsx:11:8)\n' + ' at ErrorBoundary (/workspace/niko/agent-platform/frontend/src/shared/components/ErrorBoundary.tsx:10:1)' } ✓ src/shared/components/ErrorBoundary.test.tsx > ErrorBoundary > renders children when no error 131ms ✓ src/shared/components/StatsCard.test.tsx > StatsCard > renders label and value 192ms ✓ src/shared/components/StatsCard.test.tsx > StatsCard > renders large values with abbreviation 19ms ✓ src/shared/components/StatsCard.test.tsx > StatsCard > renders accent color border 27ms ✓ src/shared/components/ErrorBoundary.test.tsx > ErrorBoundary > renders fallback on error 127ms ✓ src/App.test.tsx > App > shows login page when unauthenticated 914ms  Test Files  18 passed (18)  Tests  87 passed (87)  Start at  12:07:08  Duration  23.85s (transform 13.69s, setup 53.95s, import 29.12s, tests 15.49s, environment 53.82s) JUNIT report written to /workspace/niko/agent-platform/reports/front-unit/junit.xml  % Coverage report from v8 -------------------|---------|----------|---------|---------|------------------- File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s -------------------|---------|----------|---------|---------|------------------- All files | 22.32 | 20.25 | 23.19 | 23.17 | src | 56.25 | 66.66 | 62.5 | 53.33 | App.tsx | 100 | 100 | 100 | 100 | main.tsx | 0 | 0 | 0 | 0 | 7-19 router.tsx | 75 | 100 | 66.66 | 71.42 | 22-23 version.ts | 100 | 100 | 100 | 100 | src/components/ui | 68.96 | 80 | 66.66 | 68.96 | button.tsx | 100 | 66.66 | 100 | 100 | 52 card.tsx | 28.57 | 100 | 28.57 | 28.57 | 24-60,83 dialog.tsx | 80 | 83.33 | 80 | 80 | 17,29 skeleton.tsx | 100 | 100 | 100 | 100 | table.tsx | 75 | 100 | 75 | 75 | 41,96 src/features/auth | 82.08 | 81.48 | 94.73 | 81.66 | AuthGuard.tsx | 85.71 | 50 | 100 | 83.33 | 18 CallbackPage.tsx | 92.59 | 86.66 | 87.5 | 95.83 | 67 LoginPage.tsx | 68.96 | 80 | 100 | 65.38 | 37-52 authStore.ts | 100 | 100 | 100 | 100 | ...ures/dashboard | 1.14 | 0 | 0 | 1.26 | ...boardPage.tsx | 1.42 | 0 | 0 | 1.61 | 17-26,34-210 dashboardApi.ts | 0 | 0 | 0 | 0 | 9-46 ...eatures/errors | 0 | 100 | 0 | 0 | NotFoundPage.tsx | 0 | 100 | 0 | 0 | 5-11 ...ures/pipelines | 24.58 | 20.74 | 18.03 | 26.54 | ...etailPage.tsx | 66.66 | 66.66 | 41.17 | 71.42 | 91-95,123-203 ...eFormPage.tsx | 2.12 | 0 | 0 | 2.43 | 16-303 pipelinesApi.ts | 19.35 | 100 | 20 | 19.35 | ...40,54-74,83-86 ...tures/projects | 2.34 | 0 | 3.94 | 2.57 | ...etailPage.tsx | 0 | 0 | 0 | 0 | 16-263 ...tFormPage.tsx | 1.44 | 0 | 0 | 1.63 | 13-226 ProjectsPage.tsx | 0 | 0 | 0 | 0 | 9-104 projectsApi.ts | 13.79 | 100 | 16.66 | 13.79 | 12-13,22-36,51-83 ...s/repositories | 0 | 0 | 0 | 0 | ...oriesPage.tsx | 0 | 0 | 0 | 0 | 8-133 ...yFormPage.tsx | 0 | 0 | 0 | 0 | 11-181 ...itoriesApi.ts | 0 | 100 | 0 | 0 | 10-91 src/features/runs | 3.01 | 0.67 | 6.06 | 3.48 | ...etailPage.tsx | 0 | 0 | 0 | 0 | 19-328 RunsPage.tsx | 0 | 0 | 0 | 0 | 17-342 runsApi.ts | 37.5 | 33.33 | 36.36 | 37.5 | 30-36,47-52,61-64 ...tures/settings | 12.5 | 100 | 0 | 16.66 | SettingsPage.tsx | 12.5 | 100 | 0 | 16.66 | 10-29 src/layouts | 12.9 | 2 | 20 | 13.46 | AppLayout.tsx | 3.57 | 2.94 | 0 | 4.54 | 19-233 ...eoutModal.tsx | 4 | 0 | 0 | 4.54 | 11-70 healthStore.ts | 25 | 0 | 50 | 14.28 | 25-36 uiStore.ts | 100 | 100 | 100 | 100 | src/lib | 66.66 | 8.33 | 60 | 66.66 | axios.ts | 63.63 | 25 | 66.66 | 63.63 | 14,22-25 env.ts | 50 | 0 | 0 | 50 | 9 query-client.ts | 100 | 100 | 100 | 100 | utils.ts | 100 | 100 | 100 | 100 | ...red/components | 47.55 | 52.12 | 45.31 | 47.76 | Breadcrumb.tsx | 100 | 100 | 100 | 100 | ...andSearch.tsx | 5.55 | 0 | 0 | 5.88 | 18-60 ...irmDialog.tsx | 50 | 33.33 | 50 | 50 | 29 DataTable.tsx | 88.88 | 71.11 | 81.81 | 88.88 | 59,196 ...onDisplay.tsx | 100 | 80 | 100 | 100 | 10-13 ...rBoundary.tsx | 75 | 100 | 75 | 75 | 40-41 FilterBar.tsx | 62.5 | 62.5 | 60 | 62.5 | 32-49,83,113,126 ...ggerModal.tsx | 0 | 0 | 0 | 0 | 48-193 ...ransition.tsx | 0 | 100 | 0 | 0 | 4-5 RunPhaseIcon.tsx | 100 | 100 | 100 | 100 | SourceBadge.tsx | 100 | 100 | 100 | 100 | StatsCard.tsx | 100 | 66.66 | 100 | 100 | 28-29 Toaster.tsx | 100 | 100 | 100 | 100 | TokenDisplay.tsx | 100 | 90 | 100 | 100 | 9 src/shared/hooks | 92.3 | 77.77 | 100 | 94.11 | ...ilterState.ts | 92.3 | 77.77 | 100 | 94.11 | 48,61 src/shared/utils | 88.88 | 50 | 100 | 100 | format.ts | 88.88 | 50 | 100 | 100 | 2 -------------------|---------|----------|---------|---------|-------------------