{"numFailedTestSuites":1,"numFailedTests":2,"numPassedTestSuites":0,"numPassedTests":2,"numPendingTestSuites":0,"numPendingTests":6,"numRuntimeErrorTestSuites":0,"numTodoTests":0,"numTotalTestSuites":1,"numTotalTests":10,"openHandles":[],"snapshot":{"added":0,"didUpdate":false,"failure":false,"filesAdded":0,"filesRemoved":0,"filesRemovedList":[],"filesUnmatched":0,"filesUpdated":0,"matched":0,"total":0,"unchecked":0,"uncheckedKeysByFile":[],"unmatched":0,"updated":0},"startTime":1793733960456,"success":false,"testResults":[{"assertionResults":[{"ancestorTitles":[],"duration":4226,"failing":false,"failureDetails":[{"matcherResult":{"message":"expect(jest.fn()).toHaveBeenCalledTimes(expected)\n\nExpected number of calls: 1\nReceived number of calls: 0","pass":false}}],"failureMessages":["Error: expect(jest.fn()).toHaveBeenCalledTimes(expected)\n\nExpected number of calls: 1\nReceived number of calls: 0\n\nIgnored nodes: comments, script, style\n\u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m
\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mAI privacy\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mControl AI processing for your account. External processing is off unless both you and an administrator explicitly allow it.\u001b[0m\n \u001b[36m

\u001b[39m\n \u001b[36m
\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mEnable AI features for my account\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mAllow approved external AI processing\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mApproved external processing may be used only for Pro tasks when server policy permits it.\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mSave AI privacy settings\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n\u001b[36m\u001b[39m\n at toHaveBeenCalledTimes (C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\src\\ai-privacy-settings.test.tsx:24:39)\n at runWithExpensiveErrorDiagnosticsDisabled (C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\node_modules\\@testing-library\\dom\\dist\\config.js:47:12)\n at checkCallback (C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\node_modules\\@testing-library\\dom\\dist\\wait-for.js:124:77)\n at checkRealTimersCallback (C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\node_modules\\@testing-library\\dom\\dist\\wait-for.js:118:16)\n at Timeout.task [as _onTimeout] (C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\node_modules\\jsdom\\lib\\jsdom\\browser\\Window.js:579:19)\n at listOnTimeout (node:internal/timers:635:17)\n at processTimers (node:internal/timers:571:7)"],"fullName":"a persisted AI preference refreshes server availability after the save acknowledgement","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793733965469,"status":"failed","title":"a persisted AI preference refreshes server availability after the save acknowledgement"},{"ancestorTitles":[],"duration":4093,"failing":false,"failureDetails":[{"matcherResult":{"message":"expect(jest.fn()).toHaveBeenCalledWith(...expected)\n\nExpected: undefined, \"warning\"\nReceived: \"AI privacy settings saved.\", \"success\"\n\nNumber of calls: 1","pass":false}}],"failureMessages":["Error: expect(jest.fn()).toHaveBeenCalledWith(...expected)\n\nExpected: undefined, \"warning\"\nReceived: \"AI privacy settings saved.\", \"success\"\n\nNumber of calls: 1\n\nIgnored nodes: comments, script, style\n\u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m
\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mAI privacy\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mControl AI processing for your account. External processing is off unless both you and an administrator explicitly allow it.\u001b[0m\n \u001b[36m

\u001b[39m\n \u001b[36m
\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mEnable AI features for my account\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mAllow approved external AI processing\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mApproved external processing may be used only for Pro tasks when server policy permits it.\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mSave AI privacy settings\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n\u001b[36m\u001b[39m\n at toHaveBeenCalledWith (C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\src\\ai-privacy-settings.test.tsx:32:41)\n at runWithExpensiveErrorDiagnosticsDisabled (C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\node_modules\\@testing-library\\dom\\dist\\config.js:47:12)\n at checkCallback (C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\node_modules\\@testing-library\\dom\\dist\\wait-for.js:124:77)\n at checkRealTimersCallback (C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\node_modules\\@testing-library\\dom\\dist\\wait-for.js:118:16)\n at Timeout.task [as _onTimeout] (C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\node_modules\\jsdom\\lib\\jsdom\\browser\\Window.js:579:19)\n at listOnTimeout (node:internal/timers:635:17)\n at processTimers (node:internal/timers:571:7)"],"fullName":"availability refresh failure does not misreport an acknowledged save or repeat its write","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793733969711,"status":"failed","title":"availability refresh failure does not misreport an acknowledged save or repeat its write"},{"ancestorTitles":[],"duration":189,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"failed AI preference writes do not refresh availability","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"startAt":1793733973805,"status":"passed","title":"failed AI preference writes do not refresh availability"},{"ancestorTitles":[],"duration":70,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"an unmounted preference save cannot refresh a later account view","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"startAt":1793733973994,"status":"passed","title":"an unmounted preference save cannot refresh a later account view"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P7-09 privacy] failed initial read has a read-only Retry and no perpetual loading","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793733974064,"status":"pending","title":"[P7-09 privacy] failed initial read has a read-only Retry and no perpetual loading"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P7-09 privacy] submitted acknowledgement preserves a newer edit and serializes Save","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793733974064,"status":"pending","title":"[P7-09 privacy] submitted acknowledgement preserves a newer edit and serializes Save"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P7-09 privacy] a failed save retains the draft and never replays through read recovery","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793733974064,"status":"pending","title":"[P7-09 privacy] a failed save retains the draft and never replays through read recovery"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P7-09 privacy] unmount ignores an old save acknowledgement and success notification","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793733974064,"status":"pending","title":"[P7-09 privacy] unmount ignores an old save acknowledgement and success notification"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P7-09 privacy] pending save uses the current language without refetching the draft","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793733974064,"status":"pending","title":"[P7-09 privacy] pending save uses the current language without refetching the draft"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P7-09 privacy] local-only capability permits revoking a historical external consent","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793733974064,"status":"pending","title":"[P7-09 privacy] local-only capability permits revoking a historical external consent"}],"endTime":1793733974082,"message":" ● a persisted AI preference refreshes server availability after the save acknowledgement\n\n expect(jest.fn()).toHaveBeenCalledTimes(expected)\n\n Expected number of calls: 1\n Received number of calls: 0\n\n Ignored nodes: comments, script, style\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m
\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mAI privacy\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mControl AI processing for your account. External processing is off unless both you and an administrator explicitly allow it.\u001b[0m\n \u001b[36m

\u001b[39m\n \u001b[36m
\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mEnable AI features for my account\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mAllow approved external AI processing\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mApproved external processing may be used only for Pro tasks when server policy permits it.\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mSave AI privacy settings\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n\n 22 | mount({ onSaved }); await screen.findByRole('switch', { name: translations.en.settingsAiEnabled });\n 23 | fireEvent.click(screen.getByRole('button', { name: translations.en.settingsAiSave }));\n > 24 | await waitFor(() => expect(onSaved).toHaveBeenCalledTimes(1)); expect(order).toEqual(['save', 'refresh']);\n | ^\n 25 | });\n 26 |\n 27 | test('availability refresh failure does not misreport an acknowledged save or repeat its write', async () => {\n\n at toHaveBeenCalledTimes (src/ai-privacy-settings.test.tsx:24:39)\n at runWithExpensiveErrorDiagnosticsDisabled (node_modules/@testing-library/dom/dist/config.js:47:12)\n at checkCallback (node_modules/@testing-library/dom/dist/wait-for.js:124:77)\n at checkRealTimersCallback (node_modules/@testing-library/dom/dist/wait-for.js:118:16)\n at Timeout.task [as _onTimeout] (node_modules/jsdom/lib/jsdom/browser/Window.js:579:19)\n\n ● availability refresh failure does not misreport an acknowledged save or repeat its write\n\n expect(jest.fn()).toHaveBeenCalledWith(...expected)\n\n Expected: undefined, \"warning\"\n Received: \"AI privacy settings saved.\", \"success\"\n\n Number of calls: 1\n\n Ignored nodes: comments, script, style\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m
\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mAI privacy\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mControl AI processing for your account. External processing is off unless both you and an administrator explicitly allow it.\u001b[0m\n \u001b[36m

\u001b[39m\n \u001b[36m
\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mEnable AI features for my account\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mAllow approved external AI processing\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mApproved external processing may be used only for Pro tasks when server policy permits it.\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mSave AI privacy settings\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n\n 30 | mount({ onSaved }); await screen.findByRole('switch', { name: translations.en.settingsAiEnabled });\n 31 | fireEvent.click(screen.getByRole('button', { name: translations.en.settingsAiSave }));\n > 32 | await waitFor(() => expect(mockToast).toHaveBeenCalledWith(translations.en.settingsAiRefreshFailed, 'warning'));\n | ^\n 33 | expect(api.put).toHaveBeenCalledTimes(1); expect(screen.queryByText(translations.en.settingsAiSaveFailed)).not.toBeInTheDocument();\n 34 | });\n 35 |\n\n at toHaveBeenCalledWith (src/ai-privacy-settings.test.tsx:32:41)\n at runWithExpensiveErrorDiagnosticsDisabled (node_modules/@testing-library/dom/dist/config.js:47:12)\n at checkCallback (node_modules/@testing-library/dom/dist/wait-for.js:124:77)\n at checkRealTimersCallback (node_modules/@testing-library/dom/dist/wait-for.js:118:16)\n at Timeout.task [as _onTimeout] (node_modules/jsdom/lib/jsdom/browser/Window.js:579:19)\n","name":"C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\src\\ai-privacy-settings.test.tsx","startTime":1793733961850,"status":"failed","summary":""}],"wasInterrupted":false}