==> Synchronizing chroot copy [/home/alhp/workspace/chroot/root] -> [build_885ab328-e198-4449-afa3-11a09241186a]...done ==> Making package: gemini-cli 1:0.24.5-1.1 (Wed Jan 21 05:13:18 2026) ==> Retrieving sources... -> Cloning gemini-cli git repo... Cloning into bare repository '/home/alhp/workspace/build/x86-64-v2/gemini-cli-1:0.24.5-1/gemini-cli'... ==> Validating source files with b2sums... gemini-cli ... Passed ==> Making package: gemini-cli 1:0.24.5-1.1 (Wed Jan 21 04:14:11 2026) ==> Checking runtime dependencies... ==> Installing missing dependencies... resolving dependencies... looking for conflicting packages... Package (4) New Version Net Change extra/c-ares 1.34.6-1 0.51 MiB extra/libuv 1.51.0-1 0.62 MiB extra/simdjson 1:4.2.4-1 6.29 MiB extra/nodejs 25.3.0-1 61.27 MiB Total Installed Size: 68.68 MiB :: Proceed with installation? [Y/n] checking keyring... checking package integrity... loading package files... checking for file conflicts... :: Processing package changes... installing c-ares... installing libuv... installing simdjson... installing nodejs... Optional dependencies for nodejs npm: nodejs package manager :: Running post-transaction hooks... (1/1) Arming ConditionNeedsUpdate... ==> Checking buildtime dependencies... ==> Installing missing dependencies... resolving dependencies... looking for conflicting packages... Package (11) New Version Net Change extra/node-gyp 12.1.0-1 8.73 MiB extra/nodejs-nopt 7.2.1-1 0.03 MiB extra/oniguruma 6.9.10-1 0.88 MiB extra/perl-error 0.17030-3 0.04 MiB extra/perl-mailtools 2.22-3 0.10 MiB extra/perl-timedate 2.33-9 0.08 MiB extra/semver 7.7.3-1 0.09 MiB extra/zlib-ng 2.3.2-1 0.28 MiB extra/git 2.52.0-2 29.63 MiB extra/jq 1.8.1-1 0.45 MiB extra/npm 11.7.0-1 7.17 MiB Total Installed Size: 47.48 MiB :: Proceed with installation? [Y/n] checking keyring... checking package integrity... loading package files... checking for file conflicts... :: Processing package changes... installing perl-error... installing perl-timedate... installing perl-mailtools... installing zlib-ng... installing git... Optional dependencies for git git-zsh-completion: upstream zsh completion tk: gitk and git gui openssh: ssh transport and crypto man: show help with `git command --help` perl-libwww: git svn perl-term-readkey: git svn and interactive.singlekey setting perl-io-socket-ssl: git send-email TLS support perl-authen-sasl: git send-email TLS support perl-cgi: gitweb (web interface) support python: git svn & git p4 subversion: git svn org.freedesktop.secrets: keyring credential helper libsecret: libsecret credential helper [installed] less: the default pager for git installing oniguruma... installing jq... installing nodejs-nopt... installing semver... installing node-gyp... Optional dependencies for node-gyp gcc: to build C++ modules [installed] make: to build C++ modules [installed] python: to build C++ modules installing npm... Optional dependencies for npm git: for dependencies using Git URL's [installed] :: Running post-transaction hooks... (1/3) Creating system user accounts... Creating group 'git' with GID 969. Creating user 'git' (git daemon user) with UID 969 and GID 969. (2/3) Reloading system manager configuration... Skipped: Current root is not booted. (3/3) Arming ConditionNeedsUpdate... ==> Retrieving sources... ==> WARNING: Skipping all source file integrity checks. ==> Extracting sources... -> Creating working copy of gemini-cli git repo... Cloning into 'gemini-cli'... done. Switched to a new branch 'makepkg' ==> Starting prepare()... npm warn deprecated node-domexception@1.0.0: Use your platform's native DOMException instead added 1375 packages, and audited 1381 packages in 1m 355 packages are looking for funding run `npm fund` for details 8 vulnerabilities (2 low, 6 high) To address issues that do not require attention, run: npm audit fix To address all issues (including breaking changes), run: npm audit fix --force Run `npm audit` for details. ==> Starting build()... > @google/gemini-cli@0.24.5 bundle > npm run generate && node esbuild.config.js && node scripts/copy_bundle_assets.js > @google/gemini-cli@0.24.5 generate > node scripts/generate-git-commit-info.js Copied 5 policy files to bundle/policies/ Copied docs to bundle/docs/ Assets copied to bundle/ > @google/gemini-cli@0.24.5 prepare > husky && npm run bundle > @google/gemini-cli@0.24.5 bundle > npm run generate && node esbuild.config.js && node scripts/copy_bundle_assets.js > @google/gemini-cli@0.24.5 generate > node scripts/generate-git-commit-info.js Copied 5 policy files to bundle/policies/ Copied docs to bundle/docs/ Assets copied to bundle/ npm notice npm notice πŸ“¦ @google/gemini-cli@0.24.5 npm notice Tarball Contents npm notice 11.4kB LICENSE npm notice 11.7kB README.md npm notice 3.8kB bundle/docs/architecture.md npm notice 121.7kB bundle/docs/assets/connected_devtools.png npm notice 61.2kB bundle/docs/assets/gemini-screenshot.png npm notice 389.7kB bundle/docs/assets/release_patch.png npm notice 129.0kB bundle/docs/assets/theme-ansi-light.png npm notice 129.8kB bundle/docs/assets/theme-ansi.png npm notice 131.5kB bundle/docs/assets/theme-atom-one.png npm notice 129.1kB bundle/docs/assets/theme-ayu-light.png npm notice 131.3kB bundle/docs/assets/theme-ayu.png npm notice 265.5kB bundle/docs/assets/theme-custom.png npm notice 128.3kB bundle/docs/assets/theme-default-light.png npm notice 130.4kB bundle/docs/assets/theme-default.png npm notice 131.3kB bundle/docs/assets/theme-dracula.png npm notice 129.4kB bundle/docs/assets/theme-github-light.png npm notice 131.5kB bundle/docs/assets/theme-github.png npm notice 129.3kB bundle/docs/assets/theme-google-light.png npm notice 128.0kB bundle/docs/assets/theme-xcode-light.png npm notice 34.9kB bundle/docs/changelogs/index.md npm notice 13.8kB bundle/docs/changelogs/latest.md npm notice 7.5kB bundle/docs/changelogs/preview.md npm notice 54.6kB bundle/docs/changelogs/releases.md npm notice 105B bundle/docs/cli/authentication.md npm notice 3.1kB bundle/docs/cli/checkpointing.md npm notice 16.5kB bundle/docs/cli/commands.md npm notice 34.7kB bundle/docs/cli/configuration.md npm notice 11.7kB bundle/docs/cli/custom-commands.md npm notice 17.8kB bundle/docs/cli/enterprise.md npm notice 2.1kB bundle/docs/cli/gemini-ignore.md npm notice 3.7kB bundle/docs/cli/gemini-md.md npm notice 6.4kB bundle/docs/cli/generation-settings.md npm notice 12.2kB bundle/docs/cli/headless.md npm notice 2.6kB bundle/docs/cli/index.md npm notice 7.5kB bundle/docs/cli/keyboard-shortcuts.md npm notice 1.6kB bundle/docs/cli/model-routing.md npm notice 3.2kB bundle/docs/cli/model.md npm notice 4.5kB bundle/docs/cli/sandbox.md npm notice 4.4kB bundle/docs/cli/session-management.md npm notice 12.4kB bundle/docs/cli/settings.md npm notice 6.2kB bundle/docs/cli/skills.md npm notice 3.7kB bundle/docs/cli/system-prompt.md npm notice 26.1kB bundle/docs/cli/telemetry.md npm notice 6.2kB bundle/docs/cli/themes.md npm notice 754B bundle/docs/cli/token-caching.md npm notice 3.7kB bundle/docs/cli/trusted-folders.md npm notice 2.7kB bundle/docs/cli/tutorials.md npm notice 3.6kB bundle/docs/cli/tutorials/skills-getting-started.md npm notice 1.3kB bundle/docs/cli/uninstall.md npm notice 4.5kB bundle/docs/core/index.md npm notice 6.4kB bundle/docs/core/memport.md npm notice 9.1kB bundle/docs/core/policy-engine.md npm notice 6.9kB bundle/docs/core/tools-api.md npm notice 2.8kB bundle/docs/examples/proxy-script.md npm notice 7.4kB bundle/docs/extensions/extension-releasing.md npm notice 7.1kB bundle/docs/extensions/getting-started-extensions.md npm notice 10.7kB bundle/docs/extensions/index.md npm notice 6.7kB bundle/docs/faq.md npm notice 12.0kB bundle/docs/get-started/authentication.md npm notice 39.6kB bundle/docs/get-started/configuration-v1.md npm notice 56.9kB bundle/docs/get-started/configuration.md npm notice 4.8kB bundle/docs/get-started/deployment.md npm notice 6.4kB bundle/docs/get-started/examples.md npm notice 4.6kB bundle/docs/get-started/gemini-3.md npm notice 2.1kB bundle/docs/get-started/index.md npm notice 4.7kB bundle/docs/get-started/installation.md npm notice 19.3kB bundle/docs/hooks/best-practices.md npm notice 16.0kB bundle/docs/hooks/index.md npm notice 7.2kB bundle/docs/hooks/reference.md npm notice 24.7kB bundle/docs/hooks/writing-hooks.md npm notice 10.7kB bundle/docs/ide-integration/ide-companion-spec.md npm notice 8.1kB bundle/docs/ide-integration/index.md npm notice 6.4kB bundle/docs/index.md npm notice 5.9kB bundle/docs/integration-tests.md npm notice 6.4kB bundle/docs/issue-and-pr-automation.md npm notice 3.7kB bundle/docs/local-development.md npm notice 3.1kB bundle/docs/mermaid/context.mmd npm notice 1.6kB bundle/docs/mermaid/render-path.mmd npm notice 2.5kB bundle/docs/npm.md npm notice 6.2kB bundle/docs/quota-and-pricing.md npm notice 5.6kB bundle/docs/release-confidence.md npm notice 23.0kB bundle/docs/releases.md npm notice 6.1kB bundle/docs/sidebar.json npm notice 10.1kB bundle/docs/tools/file-system.md npm notice 4.6kB bundle/docs/tools/index.md npm notice 32.8kB bundle/docs/tools/mcp-server.md npm notice 1.6kB bundle/docs/tools/memory.md npm notice 7.9kB bundle/docs/tools/shell.md npm notice 2.1kB bundle/docs/tools/todos.md npm notice 2.0kB bundle/docs/tools/web-fetch.md npm notice 1.1kB bundle/docs/tools/web-search.md npm notice 6.3kB bundle/docs/tos-privacy.md npm notice 8.4kB bundle/docs/troubleshooting.md npm notice 22.2MB bundle/gemini.js npm notice 1.5kB bundle/policies/agent.toml npm notice 254B bundle/policies/discovered.toml npm notice 1.9kB bundle/policies/read-only.toml npm notice 2.2kB bundle/policies/write.toml npm notice 1.5kB bundle/policies/yolo.toml npm notice 1.0kB bundle/sandbox-macos-permissive-closed.sb npm notice 890B bundle/sandbox-macos-permissive-open.sb npm notice 1.3kB bundle/sandbox-macos-permissive-proxied.sb npm notice 3.3kB bundle/sandbox-macos-restrictive-closed.sb npm notice 3.4kB bundle/sandbox-macos-restrictive-open.sb npm notice 3.6kB bundle/sandbox-macos-restrictive-proxied.sb npm notice 6.2kB package.json npm notice Bundled Dependencies npm notice node-pty npm notice minimist npm notice config-chain npm notice @alcalzone/ansi-tokenize npm notice @kwsites/file-exists npm notice @kwsites/promise-deferred npm notice @lydell/node-pty npm notice @pnpm/network.ca-file npm notice @pnpm/npm-conf npm notice ansi-escapes npm notice ansi-regex npm notice auto-bind npm notice cli-boxes npm notice cli-cursor npm notice cli-truncate npm notice code-excerpt npm notice convert-to-spaces npm notice debug npm notice deep-extend npm notice environment npm notice es-toolkit npm notice get-east-asian-width npm notice indent-string npm notice ini npm notice ink npm notice ky npm notice latest-version npm notice mimic-fn npm notice onetime npm notice package-json npm notice patch-console npm notice proto-list npm notice rc npm notice react-reconciler npm notice registry-auth-token npm notice registry-url npm notice restore-cursor npm notice scheduler npm notice semver npm notice slice-ansi npm notice stack-utils npm notice strip-ansi npm notice wrap-ansi npm notice ws npm notice yoga-layout npm notice nan npm notice mnemonist npm notice obliterator npm notice @pnpm/config.env-replace npm notice ms npm notice simple-git npm notice @lydell/node-pty-linux-x64 npm notice Tarball Details npm notice name: @google/gemini-cli npm notice version: 0.24.5 npm notice filename: google-gemini-cli-0.24.5.tgz npm notice package size: 8.2 MB npm notice unpacked size: 34.9 MB npm notice shasum: 2962a667a066ee41f80a4e4600cc194de20da884 npm notice integrity: sha512-SUc5MTmj8lTUU[...]tC7c2Ra1rbOmQ== npm notice bundled deps: 52 npm notice bundled files: 0 npm notice own files: 4246 npm notice total files: 4246 npm notice google-gemini-cli-0.24.5.tgz ==> Starting check()... > @google/gemini-cli@0.24.5 build > node scripts/build.js > @google/gemini-cli@0.24.5 generate > node scripts/generate-git-commit-info.js > @google/gemini-cli-a2a-server@0.24.5 build > node ../../scripts/build_package.js Successfully copied files. > @google/gemini-cli@0.24.5 build > node ../../scripts/build_package.js Successfully copied files. > @google/gemini-cli-core@0.24.5 build > node ../../scripts/build_package.js Successfully copied files. Copied documentation to dist/docs > @google/gemini-cli-test-utils@0.24.5 build > node ../../scripts/build_package.js Successfully copied files. > gemini-cli-vscode-ide-companion@0.24.5 build > npm run build:dev > gemini-cli-vscode-ide-companion@0.24.5 build:dev > npm run check-types && npm run lint && node esbuild.js > gemini-cli-vscode-ide-companion@0.24.5 check-types > tsc --noEmit > gemini-cli-vscode-ide-companion@0.24.5 lint > eslint src [watch] build started [watch] build finished > @google/gemini-cli@0.24.5 test > npm run test --workspaces --if-present --exclude=**/BuiltinCommandLoader.test.ts --exclude=**/config.integration.test.ts --exclude=**/mcp-client.test.ts npm warn Unknown cli config "--exclude". This will stop working in the next major version of npm. > @google/gemini-cli-a2a-server@0.24.5 test > vitest run RUN v3.2.4 /startdir/src/gemini-cli/packages/a2a-server Coverage enabled with v8 βœ“ src/config/settings.test.ts (6 tests) 13ms βœ“ src/persistence/gcs.test.ts (12 tests) 174ms βœ“ src/commands/extensions.test.ts (8 tests) 20ms βœ“ src/http/endpoints.test.ts (5 tests) 98ms βœ“ src/commands/init.test.ts (5 tests) 38ms βœ“ src/commands/restore.test.ts (6 tests) 19ms βœ“ src/agent/task.test.ts (15 tests) 105ms βœ“ src/http/app.test.ts (19 tests) 247ms ❯ src/commands/command-registry.test.ts (6 tests | 1 failed) 10407ms Γ— CommandRegistry > should register ExtensionsCommand on initialization 5144ms β†’ Test timed out in 5000ms. If this is a long-running test, pass a timeout value as the last argument or configure it globally with "testTimeout". βœ“ CommandRegistry > should register sub commands on initialization 3476ms βœ“ CommandRegistry > get() should return undefined for a non-existent command 1220ms βœ“ CommandRegistry > register() should register a new command 258ms βœ“ CommandRegistry > register() should register a nested command 160ms βœ“ CommandRegistry > register() should not enter an infinite loop with a cyclic command 147ms ⎯⎯⎯⎯⎯⎯⎯ Failed Tests 1 ⎯⎯⎯⎯⎯⎯⎯ FAIL src/commands/command-registry.test.ts > CommandRegistry > should register ExtensionsCommand on initialization Error: Test timed out in 5000ms. If this is a long-running test, pass a timeout value as the last argument or configure it globally with "testTimeout". ❯ src/commands/command-registry.test.ts:36:3 34| }); 35| 36| it('should register ExtensionsCommand on initialization', async () =… | ^ 37| const { commandRegistry } = await import('./command-registry.js'); 38| expect(mockExtensionsCommand).toHaveBeenCalled(); ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/1]⎯ Test Files 1 failed | 8 passed (9) Tests 1 failed | 81 passed (82) Start at 04:16:58 Duration 12.39s (transform 5.51s, setup 0ms, collect 55.64s, tests 11.12s, environment 2ms, prepare 4.03s) JUNIT report written to /startdir/src/gemini-cli/packages/a2a-server/junit.xml npm error Lifecycle script `test` failed with error: npm error code 1 npm error path /startdir/src/gemini-cli/packages/a2a-server npm error workspace @google/gemini-cli-a2a-server@0.24.5 npm error location /startdir/src/gemini-cli/packages/a2a-server npm error command failed npm error command sh -c vitest run > @google/gemini-cli@0.24.5 test > vitest run RUN v3.2.4 /startdir/src/gemini-cli/packages/cli Coverage enabled with v8 stdout | src/ui/hooks/atCommandProcessor.test.ts > handleAtCommand > git-aware filtering > should skip git-ignored files in @ commands Ignored 1 files: Git-ignored: /tmp/folder-structure-test-e9Z3N1/node_modules/package.json stdout | src/ui/hooks/atCommandProcessor.test.ts > handleAtCommand > git-aware filtering > should handle mixed git-ignored and valid files Ignored 1 files: Git-ignored: /tmp/folder-structure-test-mRe5oa/.env stdout | src/ui/hooks/atCommandProcessor.test.ts > handleAtCommand > git-aware filtering > should always ignore .git directory files Ignored 1 files: Git-ignored: /tmp/folder-structure-test-wZcMPV/.git/config stdout | src/ui/hooks/atCommandProcessor.test.ts > handleAtCommand > gemini-ignore filtering > should skip gemini-ignored files in @ commands Ignored 1 files: Gemini-ignored: /tmp/folder-structure-test-S9wCJ0/build/output.js stdout | src/ui/hooks/atCommandProcessor.test.ts > handleAtCommand > should handle mixed gemini-ignored and valid files Ignored 1 files: Gemini-ignored: /tmp/folder-structure-test-rEY30y/dist/bundle.js βœ“ src/utils/settingsUtils.test.ts (73 tests) 140ms βœ“ src/ui/components/shared/vim-buffer-actions.test.ts (74 tests) 175ms βœ“ src/utils/sessionCleanup.test.ts (70 tests) 503ms βœ“ src/config/settings.test.ts (49 tests) 211ms βœ“ src/ui/commands/extensionsCommand.test.ts (45 tests) 195ms βœ“ src/services/FileCommandLoader.test.ts (40 tests) 716ms βœ“ src/services/prompt-processors/shellProcessor.test.ts (33 tests) 232ms βœ“ src/ui/hooks/useSelectionList.test.tsx (45 tests) 205ms βœ“ src/nonInteractiveCli.test.ts (37 tests) 734ms βœ“ runNonInteractive > should handle cancellation (Ctrl+C) 418ms stderr | src/ui/hooks/atCommandProcessor.test.ts > handleAtCommand > MCP resource attachments > returns an error if MCP client is unavailable [ "Error reading resource resource://server-1/logs: MCP client for server 'server-1' is not available or not connected." ] stderr | src/ui/hooks/useGeminiStream.test.tsx > useGeminiStream > should submit tool responses when all tool calls are completed and ready Error recording completed tool call information: TypeError: config.getGeminiClient(...).getCurrentSequenceModel is not a function stderr | src/ui/hooks/useGeminiStream.test.tsx > useGeminiStream > should handle all tool calls being cancelled Error recording completed tool call information: TypeError: config.getGeminiClient(...).getCurrentSequenceModel is not a function stderr | src/ui/hooks/useGeminiStream.test.tsx > useGeminiStream > should stop agent execution immediately when a tool call returns STOP_EXECUTION error Error recording completed tool call information: TypeError: config.getGeminiClient(...).getCurrentSequenceModel is not a function stderr | src/ui/hooks/useGeminiStream.test.tsx > useGeminiStream > should group multiple cancelled tool call responses into a single history entry Error recording completed tool call information: TypeError: config.getGeminiClient(...).getCurrentSequenceModel is not a function stderr | src/ui/hooks/useGeminiStream.test.tsx > useGeminiStream > should not flicker streaming state to Idle between tool completion and submission Error recording completed tool call information: TypeError: config.getGeminiClient(...).getCurrentSequenceModel is not a function stderr | src/config/extension.test.ts > extension tests > installExtension > should not prompt for settings if promptForSettings is false Extension "my-local-extension" has missing settings: API Key. Please run "gemini extensions settings my-local-extension " to configure them. stderr | src/ui/hooks/useGeminiStream.test.tsx > useGeminiStream > Memory Refresh on save_memory > should call performMemoryRefresh when a save_memory tool call completes successfully Error recording completed tool call information: TypeError: config.getGeminiClient(...).getCurrentSequenceModel is not a function βœ“ src/ui/hooks/atCommandProcessor.test.ts (45 tests) 2337ms βœ“ src/ui/hooks/useSlashCompletion.test.ts (25 tests) 897ms stderr | src/ui/hooks/useGeminiStream.test.tsx > useGeminiStream > should flush pending text rationale before scheduling tool calls to ensure correct history order Error recording completed tool call information: TypeError: config.getGeminiClient(...).getCurrentSequenceModel is not a function βœ“ src/ui/contexts/KeypressContext.test.tsx (92 tests) 646ms βœ“ src/ui/hooks/slashCommandProcessor.test.tsx (37 tests) 992ms βœ“ src/ui/hooks/useGeminiStream.test.tsx (58 tests) 1024ms βœ“ src/ui/hooks/useToolScheduler.test.ts (23 tests) 467ms βœ“ src/ui/hooks/vim.test.tsx (87 tests) 1688ms βœ“ src/config/extension.test.ts (73 tests) 3708ms βœ“ extension tests > installExtension > should ignore consent flow if not required 464ms βœ“ extension tests > installExtension > should only prompt for new settings on update, and preserve old settings 439ms βœ“ extension tests > installExtension > should auto-update if settings have changed 417ms stdout | src/ui/components/SettingsDialog.test.tsx > SettingsDialog > Settings Toggling > should toggle setting with Enter key [DEBUG SettingsDialog] Saving general.vimMode immediately with value: true stdout | src/ui/components/SettingsDialog.test.tsx > SettingsDialog > Settings Toggling > enum values > 'toggles to next value' [DEBUG SettingsDialog] Saving ui.theme immediately with value: baz stdout | src/ui/components/SettingsDialog.test.tsx > SettingsDialog > Settings Toggling > enum values > 'loops back to first value when at end' [DEBUG SettingsDialog] Saving ui.theme immediately with value: foo stdout | src/ui/components/SettingsDialog.test.tsx > SettingsDialog > Settings Toggling > should handle vim mode setting specially [DEBUG SettingsDialog] Saving general.previewFeatures immediately with value: true stdout | src/ui/components/SettingsDialog.test.tsx > SettingsDialog > Error Handling > should handle vim mode toggle errors gracefully [DEBUG SettingsDialog] Saving general.previewFeatures immediately with value: true stdout | src/ui/components/SettingsDialog.test.tsx > SettingsDialog > Complex State Management > should track modified settings correctly [DEBUG SettingsDialog] Saving general.previewFeatures immediately with value: true [DEBUG SettingsDialog] Saving general.previewFeatures immediately with value: true stdout | src/ui/components/SettingsDialog.test.tsx > SettingsDialog > VimMode Integration > should sync with VimModeContext when vim mode is toggled [DEBUG SettingsDialog] Saving general.previewFeatures immediately with value: true stdout | src/ui/components/SettingsDialog.test.tsx > SettingsDialog > Specific Settings Behavior > should handle immediate settings save for non-restart-required settings [DEBUG SettingsDialog] Saving general.previewFeatures immediately with value: true stdout | src/ui/components/SettingsDialog.test.tsx > SettingsDialog > Race Condition Regression Tests > should 'not reset sibling settings when toggl…' [DEBUG SettingsDialog] Saving tools.shell.showColor immediately with value: true [DEBUG SettingsDialog] Saving tools.shell.showColor immediately with value: false [DEBUG SettingsDialog] Saving tools.shell.showColor immediately with value: true [DEBUG SettingsDialog] Saving tools.shell.showColor immediately with value: false [DEBUG SettingsDialog] Saving tools.shell.showColor immediately with value: true stdout | src/ui/components/SettingsDialog.test.tsx > SettingsDialog > Race Condition Regression Tests > should 'preserve multiple sibling settings in…' [DEBUG SettingsDialog] Saving tools.shell.showColor immediately with value: true [DEBUG SettingsDialog] Saving tools.shell.showColor immediately with value: false [DEBUG SettingsDialog] Saving tools.shell.showColor immediately with value: true stdout | src/ui/components/SettingsDialog.test.tsx > SettingsDialog > Complex User Interactions > should allow changing multiple settings without losing pending changes [DEBUG SettingsDialog] Saving general.previewFeatures immediately with value: true [DEBUG SettingsDialog] Saving general.previewFeatures immediately with value: true [DEBUG SettingsDialog] Saving general.previewFeatures immediately with value: true stdout | src/ui/components/SettingsDialog.test.tsx > SettingsDialog > String Settings Editing > should allow editing and committing a string setting [DEBUG SettingsDialog] Saving general.vimMode immediately with value: true [DEBUG SettingsDialog] Saving general.vimMode immediately with value: true ❯ src/ui/components/shared/text-buffer.test.ts (187 tests | 1 failed) 8988ms βœ“ textBufferReducer > should return the initial state if state is undefined 16ms βœ“ textBufferReducer > set_text action > should set new text and move cursor to the end 16ms βœ“ textBufferReducer > set_text action > should not create an undo snapshot if pushToUndo is false 0ms βœ“ textBufferReducer > insert action > should insert a character 1ms βœ“ textBufferReducer > insert action > should insert a newline 0ms βœ“ textBufferReducer > insert action with options > should filter input using inputFilter option 2ms βœ“ textBufferReducer > insert action with options > should strip newlines when singleLine option is true 0ms βœ“ textBufferReducer > insert action with options > should apply both inputFilter and singleLine options 0ms βœ“ textBufferReducer > backspace action > should remove a character 0ms βœ“ textBufferReducer > backspace action > should join lines if at the beginning of a line 0ms βœ“ textBufferReducer > undo/redo actions > should undo and redo a change 9ms βœ“ textBufferReducer > create_undo_snapshot action > should create a snapshot without changing state 0ms βœ“ textBufferReducer > delete_word_left action > should delete 'simple word' 5ms βœ“ textBufferReducer > delete_word_left action > should delete 'path segment' 0ms βœ“ textBufferReducer > delete_word_left action > should delete 'variable_name parts' 0ms βœ“ textBufferReducer > delete_word_left action > should act like backspace at the beginning of a line 0ms βœ“ textBufferReducer > delete_word_right action > should delete 'simple word' 0ms βœ“ textBufferReducer > delete_word_right action > should delete 'variable_name parts' 0ms βœ“ textBufferReducer > delete_word_right action > should delete path segments progressively 0ms βœ“ textBufferReducer > delete_word_right action > should act like delete at the end of a line 4ms βœ“ useTextBuffer > Initialization > should initialize with empty text and cursor at (0,0) by default 38ms βœ“ useTextBuffer > Initialization > should initialize with provided initialText 12ms βœ“ useTextBuffer > Initialization > should initialize with initialText and initialCursorOffset 2ms βœ“ useTextBuffer > Initialization > should wrap visual lines 2ms βœ“ useTextBuffer > Initialization > should wrap visual lines with multiple spaces 1ms βœ“ useTextBuffer > Initialization > should wrap visual lines even without spaces 2ms βœ“ useTextBuffer > Initialization > should initialize with multi-byte unicode characters and correct cursor offset 35ms βœ“ useTextBuffer > Basic Editing > insert: should insert a character and update cursor 2ms βœ“ useTextBuffer > Basic Editing > insert: should insert text in the middle of a line 2ms βœ“ useTextBuffer > Basic Editing > newline: should create a new line and move cursor 11ms βœ“ useTextBuffer > Basic Editing > backspace: should delete char to the left or merge lines 2ms βœ“ useTextBuffer > Basic Editing > del: should delete char to the right or merge lines 2ms βœ“ useTextBuffer > Drag and Drop File Paths > should prepend @ to a valid file path on insert 2ms βœ“ useTextBuffer > Drag and Drop File Paths > should not prepend @ to an invalid file path on insert 1ms βœ“ useTextBuffer > Drag and Drop File Paths > should handle quoted paths 1ms βœ“ useTextBuffer > Drag and Drop File Paths > should not prepend @ to short text that is not a path 9ms βœ“ useTextBuffer > Drag and Drop File Paths > should prepend @ to multiple valid file paths on insert 2ms βœ“ useTextBuffer > Drag and Drop File Paths > should handle multiple paths with escaped spaces 3ms βœ“ useTextBuffer > Drag and Drop File Paths > should only prepend @ to valid paths in multi-path paste 2ms βœ“ useTextBuffer > Shell Mode Behavior > should not prepend @ to valid file paths when shellModeActive is true 1ms βœ“ useTextBuffer > Shell Mode Behavior > should not prepend @ to quoted paths when shellModeActive is true 9ms βœ“ useTextBuffer > Shell Mode Behavior > should behave normally with invalid paths when shellModeActive is true 1ms βœ“ useTextBuffer > Shell Mode Behavior > should behave normally with short text when shellModeActive is true 14ms βœ“ useTextBuffer > Cursor Movement > move: left/right should work within and across visual lines (due to wrapping) 5ms βœ“ useTextBuffer > Cursor Movement > move: up/down should preserve preferred visual column 12ms βœ“ useTextBuffer > Cursor Movement > move: home/end should go to visual line start/end 3ms βœ“ useTextBuffer > Visual Layout & Viewport > should wrap long lines correctly into visualLines 1ms βœ“ useTextBuffer > Visual Layout & Viewport > should update visualScrollRow when visualCursor moves out of viewport 7ms βœ“ useTextBuffer > Undo/Redo > should undo and redo an insert operation 5ms βœ“ useTextBuffer > Undo/Redo > should undo and redo a newline operation 2ms βœ“ useTextBuffer > Unicode Handling > insert: should correctly handle multi-byte unicode characters 2ms βœ“ useTextBuffer > Unicode Handling > backspace: should correctly delete multi-byte unicode characters 2ms βœ“ useTextBuffer > Unicode Handling > move: left/right should treat multi-byte chars as single units for visual cursor 2ms βœ“ useTextBuffer > Unicode Handling > moveToVisualPosition: should correctly handle wide characters (Chinese) 2ms βœ“ useTextBuffer > handleInput > should insert printable characters 3ms βœ“ useTextBuffer > handleInput > should handle "Enter" key as newline 1ms βœ“ useTextBuffer > handleInput > should do nothing for a tab key press 1ms βœ“ useTextBuffer > handleInput > should do nothing for a shift tab key press 1ms βœ“ useTextBuffer > handleInput > should handle "Backspace" key 1ms βœ“ useTextBuffer > handleInput > should handle multiple delete characters in one input 1ms βœ“ useTextBuffer > handleInput > should handle inserts that contain delete characters 3ms βœ“ useTextBuffer > handleInput > should handle inserts with a mix of regular and delete characters 2ms βœ“ useTextBuffer > handleInput > should handle arrow keys for movement 6ms βœ“ useTextBuffer > handleInput > should strip ANSI escape codes when pasting text 1ms βœ“ useTextBuffer > handleInput > should handle VSCode terminal Shift+Enter as newline 1ms βœ“ useTextBuffer > handleInput > should correctly handle repeated pasting of long text 272ms βœ“ useTextBuffer > replaceRange > should replace a single-line range with single-line text 6ms βœ“ useTextBuffer > replaceRange > should replace a multi-line range with single-line text 1ms βœ“ useTextBuffer > replaceRange > should delete a range when replacing with an empty string 19ms βœ“ useTextBuffer > replaceRange > should handle replacing at the beginning of the text 1ms βœ“ useTextBuffer > replaceRange > should handle replacing at the end of the text 1ms βœ“ useTextBuffer > replaceRange > should handle replacing the entire buffer content 1ms βœ“ useTextBuffer > replaceRange > should correctly replace with unicode characters 21ms βœ“ useTextBuffer > replaceRange > should handle invalid range by returning false and not changing text 12ms βœ“ useTextBuffer > replaceRange > replaceRange: multiple lines with a single character 1ms βœ“ useTextBuffer > replaceRange > should replace a single-line range with multi-line text 5ms βœ“ useTextBuffer > Input Sanitization > should strip 'ANSI escape codes' from input 1ms βœ“ useTextBuffer > Input Sanitization > should strip 'control characters' from input 1ms βœ“ useTextBuffer > Input Sanitization > should strip 'mixed ANSI and control characters' from input 18ms βœ“ useTextBuffer > Input Sanitization > should strip 'pasted text with ANSI' from input 1ms βœ“ useTextBuffer > Input Sanitization > should not strip standard characters or newlines 16ms βœ“ useTextBuffer > Input Sanitization > should sanitize large text (>5000 chars) and strip unsafe characters 2647ms Γ— useTextBuffer > Input Sanitization > should sanitize large ANSI text (>5000 chars) and strip escape codes 5547ms β†’ Test timed out in 5000ms. If this is a long-running test, pass a timeout value as the last argument or configure it globally with "testTimeout". βœ“ useTextBuffer > Input Sanitization > should not strip popular emojis 7ms βœ“ useTextBuffer > inputFilter > should filter input based on the provided filter function 9ms βœ“ useTextBuffer > inputFilter > should handle empty result from filter 1ms βœ“ useTextBuffer > inputFilter > should filter pasted text 1ms βœ“ useTextBuffer > inputFilter > should not filter newlines if they are allowed by the filter 12ms βœ“ useTextBuffer > inputFilter > should filter before newline check in insert 2ms βœ“ useTextBuffer > stripAnsi > should correctly strip ANSI escape codes 0ms βœ“ useTextBuffer > stripAnsi > should handle multiple ANSI codes 0ms βœ“ useTextBuffer > stripAnsi > should not modify text without ANSI codes 0ms βœ“ useTextBuffer > stripAnsi > should handle empty string 0ms βœ“ useTextBuffer > Memoization > should keep action references stable across re-renders 2ms βœ“ useTextBuffer > Memoization > should have memoized actions that operate on the latest state 9ms βœ“ useTextBuffer > singleLine mode > should not insert a newline character when singleLine is true 1ms βœ“ useTextBuffer > singleLine mode > should not create a new line when newline() is called and singleLine is true 5ms βœ“ useTextBuffer > singleLine mode > should not handle "Enter" key as newline when singleLine is true 1ms βœ“ useTextBuffer > singleLine mode > should not print anything for function keys when singleLine is true 14ms βœ“ useTextBuffer > singleLine mode > should strip newlines from pasted text when singleLine is true 2ms βœ“ offsetToLogicalPos > should handle 'offset 0' 0ms βœ“ offsetToLogicalPos > should handle 'single line start' 0ms βœ“ offsetToLogicalPos > should handle 'single line middle' 0ms βœ“ offsetToLogicalPos > should handle 'single line end' 0ms βœ“ offsetToLogicalPos > should handle 'beyond end clamps' 0ms βœ“ offsetToLogicalPos > should handle 'empty lines - first char' 0ms βœ“ offsetToLogicalPos > should handle 'empty lines - end of first' 0ms βœ“ offsetToLogicalPos > should handle 'empty lines - empty line' 0ms βœ“ offsetToLogicalPos > should handle 'empty lines - last line start' 1ms βœ“ offsetToLogicalPos > should handle 'empty lines - last line end' 0ms βœ“ offsetToLogicalPos > should handle 'newline end - before newline' 0ms βœ“ offsetToLogicalPos > should handle 'newline end - after newline' 0ms βœ“ offsetToLogicalPos > should handle 'newline end - beyond' 0ms βœ“ offsetToLogicalPos > should handle 'newline start - first line' 0ms βœ“ offsetToLogicalPos > should handle 'newline start - second line' 0ms βœ“ offsetToLogicalPos > should handle 'newline start - middle of second' 0ms βœ“ offsetToLogicalPos > should handle 'empty string at 0' 0ms βœ“ offsetToLogicalPos > should handle 'empty string beyond' 0ms βœ“ offsetToLogicalPos > should handle 'unicode - start' 0ms βœ“ offsetToLogicalPos > should handle 'unicode - after first char' 0ms βœ“ offsetToLogicalPos > should handle 'unicode - end first line' 0ms βœ“ offsetToLogicalPos > should handle 'unicode - second line start' 0ms βœ“ offsetToLogicalPos > should handle 'unicode - second line middle' 0ms βœ“ offsetToLogicalPos > should handle 'unicode - second line end' 0ms βœ“ offsetToLogicalPos > should handle 'unicode - beyond' 0ms βœ“ offsetToLogicalPos > should handle 'at newline - end of line' 0ms βœ“ offsetToLogicalPos > should handle 'at newline - after newline' 0ms βœ“ offsetToLogicalPos > should handle 'emoji - start' 0ms βœ“ offsetToLogicalPos > should handle 'emoji - middle' 0ms βœ“ offsetToLogicalPos > should handle 'emoji - end' 0ms βœ“ offsetToLogicalPos > multi-line text > should return [ +0, +0 ] for 'start of first line' (offset +0) 0ms βœ“ offsetToLogicalPos > multi-line text > should return [ +0, 3 ] for 'middle of first line' (offset 3) 0ms βœ“ offsetToLogicalPos > multi-line text > should return [ +0, 5 ] for 'end of first line' (offset 5) 0ms βœ“ offsetToLogicalPos > multi-line text > should return [ 1, +0 ] for 'start of second line' (offset 6) 0ms βœ“ offsetToLogicalPos > multi-line text > should return [ 1, 2 ] for 'middle of second line' (offset 8) 0ms βœ“ offsetToLogicalPos > multi-line text > should return [ 1, 5 ] for 'end of second line' (offset 11) 0ms βœ“ offsetToLogicalPos > multi-line text > should return [ 2, +0 ] for 'start of third line' (offset 12) 0ms βœ“ offsetToLogicalPos > multi-line text > should return [ 2, 1 ] for 'middle of third line' (offset 13) 14ms βœ“ offsetToLogicalPos > multi-line text > should return [ 2, 3 ] for 'end of third line' (offset 15) 0ms βœ“ offsetToLogicalPos > multi-line text > should return [ 2, 3 ] for 'beyond end' (offset 20) 0ms βœ“ logicalPosToOffset > should convert row/col position to offset correctly 0ms βœ“ logicalPosToOffset > should handle empty lines 0ms βœ“ logicalPosToOffset > should handle single empty line 0ms βœ“ logicalPosToOffset > should be inverse of offsetToLogicalPos 0ms βœ“ logicalPosToOffset > should handle out-of-bounds positions 0ms βœ“ textBufferReducer vim operations > vim_delete_line > should delete a single line including newline in multi-line text 1ms βœ“ textBufferReducer vim operations > vim_delete_line > should delete multiple lines when count > 1 0ms βœ“ textBufferReducer vim operations > vim_delete_line > should clear single line content when only one line exists 1ms βœ“ textBufferReducer vim operations > vim_delete_line > should handle deleting the last line properly 1ms βœ“ textBufferReducer vim operations > vim_delete_line > should handle deleting all lines and maintain valid state for subsequent paste 0ms βœ“ Unicode helper functions > findWordEndInLine with Unicode > should handle combining characters 1ms βœ“ Unicode helper functions > findWordEndInLine with Unicode > should handle precomposed characters with diacritics 0ms βœ“ Unicode helper functions > findWordEndInLine with Unicode > should return null when no word end found 0ms βœ“ Unicode helper functions > findNextWordStartInLine with Unicode > should handle right-to-left text 0ms βœ“ Unicode helper functions > findNextWordStartInLine with Unicode > should handle Chinese characters 0ms βœ“ Unicode helper functions > findNextWordStartInLine with Unicode > should return null at end of line 0ms βœ“ Unicode helper functions > findNextWordStartInLine with Unicode > should handle combining characters 0ms βœ“ Unicode helper functions > findNextWordStartInLine with Unicode > should handle precomposed characters with diacritics 0ms βœ“ Unicode helper functions > isWordCharStrict with Unicode > should return true for ASCII word characters 0ms βœ“ Unicode helper functions > isWordCharStrict with Unicode > should return false for punctuation 0ms βœ“ Unicode helper functions > isWordCharStrict with Unicode > should return true for non-Latin scripts 0ms βœ“ Unicode helper functions > isWordCharStrict with Unicode > should return false for whitespace 0ms βœ“ Unicode helper functions > cpLen with Unicode > should handle combining characters 4ms βœ“ Unicode helper functions > cpLen with Unicode > should handle Chinese and Arabic text 0ms βœ“ Unicode helper functions > useTextBuffer CJK Navigation > should navigate by word in Chinese 9ms βœ“ Unicode helper functions > useTextBuffer CJK Navigation > should navigate mixed English and Chinese 9ms βœ“ Transformation Utilities > getTransformedImagePath > should transform a simple image path 0ms βœ“ Transformation Utilities > getTransformedImagePath > should handle paths with directories 0ms βœ“ Transformation Utilities > getTransformedImagePath > should truncate long filenames 7ms βœ“ Transformation Utilities > getTransformedImagePath > should handle different image extensions 1ms βœ“ Transformation Utilities > getTransformedImagePath > should handle POSIX-style forward-slash paths on any platform 0ms βœ“ Transformation Utilities > getTransformedImagePath > should handle Windows-style backslash paths on any platform 0ms βœ“ Transformation Utilities > getTransformedImagePath > should handle escaped spaces in paths 0ms βœ“ Transformation Utilities > getTransformationsForLine > should find transformations in a line 2ms βœ“ Transformation Utilities > getTransformationsForLine > should handle no transformations 4ms βœ“ Transformation Utilities > getTransformationsForLine > should handle empty line 0ms βœ“ Transformation Utilities > getTransformationsForLine > should keep adjacent image paths as separate transformations 0ms βœ“ Transformation Utilities > getTransformationsForLine > should handle multiple transformations in a row 0ms βœ“ Transformation Utilities > getTransformUnderCursor > should find transformation when cursor is inside it 0ms βœ“ Transformation Utilities > getTransformUnderCursor > should find transformation when cursor is at start 0ms βœ“ Transformation Utilities > getTransformUnderCursor > should find transformation when cursor is at end 0ms βœ“ Transformation Utilities > getTransformUnderCursor > should return null when cursor is not on a transformation 0ms βœ“ Transformation Utilities > getTransformUnderCursor > should handle empty transformations array 0ms βœ“ Transformation Utilities > calculateTransformedLine > should transform a line with one transformation 0ms βœ“ Transformation Utilities > calculateTransformedLine > should handle cursor inside transformation 0ms βœ“ Transformation Utilities > calculateTransformedLine > should handle line with no transformations 0ms βœ“ Transformation Utilities > calculateTransformedLine > should handle empty line 0ms βœ“ src/ui/components/InputPrompt.test.tsx (118 tests) 7168ms βœ“ InputPrompt > should call shellHistory.getPreviousCommand on up arrow in shell mode 352ms βœ“ src/config/extensions/extensionSettings.test.ts (23 tests) 78ms βœ“ src/ui/components/SettingsDialog.test.tsx (55 tests) 10620ms βœ“ SettingsDialog > Initial Rendering > should render the settings dialog with default state 406ms βœ“ SettingsDialog > Settings Navigation > should navigate with 'vim keys (j/k)' 430ms βœ“ SettingsDialog > Restart Prompt > should handle restart request when r is pressed 424ms βœ“ SettingsDialog > Error Handling > should handle vim mode toggle errors gracefully 318ms βœ“ SettingsDialog > Search Functionality > should show search query and filter settings as user types 339ms βœ“ SettingsDialog > Search Functionality > should exit search settings when Escape is pressed 333ms βœ“ SettingsDialog > Search Functionality > should handle backspace to modify search query 329ms stdout | src/ui/AppContainer.test.tsx > AppContainer State Management > Basic Rendering > renders without crashing with minimal props [SessionSummary] No chats directory found stdout | src/zed-integration/zedIntegration.test.ts > GeminiAgent > should create a new session [STARTUP] StartupProfiler.flush() called with 0 phases stdout | src/zed-integration/zedIntegration.test.ts > GeminiAgent > should create a new session with mcp servers [STARTUP] StartupProfiler.flush() called with 0 phases stdout | src/zed-integration/zedIntegration.test.ts > GeminiAgent > should handle authentication failure gracefully [STARTUP] StartupProfiler.flush() called with 0 phases stdout | src/zed-integration/zedIntegration.test.ts > GeminiAgent > should initialize file system service if client supports it [STARTUP] StartupProfiler.flush() called with 0 phases stdout | src/zed-integration/zedIntegration.test.ts > GeminiAgent > should cancel a session [STARTUP] StartupProfiler.flush() called with 0 phases stdout | src/zed-integration/zedIntegration.test.ts > GeminiAgent > should delegate prompt to session [STARTUP] StartupProfiler.flush() called with 0 phases stdout | src/ui/AppContainer.test.tsx > AppContainer State Management > Basic Rendering > renders with startup warnings [SessionSummary] No chats directory found TEST: calling prompt TEST: waiting for streamStarted TEST: asyncStream started TEST: waiting for read TEST: streamStarted TEST: cancelled TEST: stream closed TEST: read returned done=true TEST: releasing lock TEST: result received {"stopReason":"cancelled"} stderr | src/zed-integration/zedIntegration.test.ts > Session > should ignore files based on configuration Path ignored.txt is ignored and will be skipped. No valid file paths found in @ commands to read. βœ“ src/utils/sessions.test.ts (17 tests) 192ms stdout | src/ui/AppContainer.test.tsx > AppContainer State Management > State Initialization > initializes with theme error from initialization result [SessionSummary] No chats directory found βœ“ src/utils/errors.test.ts (29 tests) 180ms βœ“ src/zed-integration/zedIntegration.test.ts (20 tests) 127ms stdout | src/ui/AppContainer.test.tsx > AppContainer State Management > Context Providers > provides AppContext with correct values [SessionSummary] No chats directory found βœ“ src/ui/commands/chatCommand.test.ts (30 tests) 233ms stdout | src/ui/AppContainer.test.tsx > AppContainer State Management > Context Providers > provides UIActionsContext with action handlers [SessionSummary] No chats directory found stdout | src/ui/AppContainer.test.tsx > AppContainer State Management > Context Providers > provides ConfigContext with config object [SessionSummary] No chats directory found (node:2818) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added to [EventEmitter]. MaxListeners is 10. Use emitter.setMaxListeners() to increase limit (Use `node --trace-warnings ...` to show where the warning was created) stdout | src/ui/AppContainer.test.tsx > AppContainer State Management > Settings Integration > handles settings with all display options disabled [SessionSummary] No chats directory found stdout | src/ui/AppContainer.test.tsx > AppContainer State Management > Settings Integration > handles settings with all display options disabled [SessionSummary] No chats directory found βœ“ src/ui/hooks/shellCommandProcessor.test.tsx (20 tests) 333ms stdout | src/ui/AppContainer.test.tsx > AppContainer State Management > Settings Integration > handles settings with memory usage enabled [SessionSummary] No chats directory found stdout | src/ui/AppContainer.test.tsx > AppContainer State Management > Version Handling > handles version format: 1.0.0 [SessionSummary] No chats directory found stdout | src/ui/AppContainer.test.tsx > AppContainer State Management > Version Handling > handles version format: 2.1.3-beta [SessionSummary] No chats directory found stdout | src/ui/AppContainer.test.tsx > AppContainer State Management > Error Handling > handles undefined settings gracefully [SessionSummary] No chats directory found stdout | src/ui/AppContainer.test.tsx > AppContainer State Management > Error Handling > handles undefined settings gracefully [SessionSummary] No chats directory found stdout | src/ui/AppContainer.test.tsx > AppContainer State Management > Session Resumption > handles resumed session data correctly [SessionSummary] No chats directory found stdout | src/ui/AppContainer.test.tsx > AppContainer State Management > Session Resumption > handles resumed session data correctly [SessionSummary] No chats directory found stdout | src/ui/AppContainer.test.tsx > AppContainer State Management > Session Resumption > renders without resumed session data [SessionSummary] No chats directory found βœ“ src/services/McpPromptLoader.test.ts (31 tests) 51ms βœ“ src/config/extensions/github.test.ts (33 tests) 500ms βœ“ src/utils/sessionUtils.test.ts (20 tests) 71ms βœ“ src/ui/keyMatchers.test.ts (44 tests) 59ms stdout | src/ui/AppContainer.test.tsx > AppContainer State Management > Quota and Fallback Integration > passes a null proQuotaRequest to UIStateContext by default [SessionSummary] No chats directory found stdout | src/ui/AppContainer.test.tsx > AppContainer State Management > Quota and Fallback Integration > passes a valid proQuotaRequest to UIStateContext when provided by the hook [SessionSummary] No chats directory found stdout | src/ui/AppContainer.test.tsx > AppContainer State Management > Quota and Fallback Integration > passes the handleProQuotaChoice function to UIActionsContext [SessionSummary] No chats directory found βœ“ src/config/extensions/extensionEnablement.test.ts (48 tests) 105ms stdout | src/ui/AppContainer.test.tsx > AppContainer State Management > Queue Error Message > should set and clear the queue error message after a timeout [SessionSummary] No chats directory found stdout | src/ui/AppContainer.test.tsx > AppContainer State Management > Queue Error Message > should set and clear the queue error message after a timeout [SessionSummary] No chats directory found stdout | src/ui/AppContainer.test.tsx > AppContainer State Management > Queue Error Message > should set and clear the queue error message after a timeout [SessionSummary] No chats directory found stdout | src/ui/AppContainer.test.tsx > AppContainer State Management > Queue Error Message > should set and clear the queue error message after a timeout [SessionSummary] No chats directory found stdout | src/ui/AppContainer.test.tsx > AppContainer State Management > Queue Error Message > should set and clear the queue error message after a timeout [SessionSummary] No chats directory found stdout | src/ui/AppContainer.test.tsx > AppContainer State Management > Queue Error Message > should set and clear the queue error message after a timeout [SessionSummary] No chats directory found stdout | src/ui/AppContainer.test.tsx > AppContainer State Management > Queue Error Message > should set and clear the queue error message after a timeout [SessionSummary] No chats directory found stdout | src/ui/AppContainer.test.tsx > AppContainer State Management > Queue Error Message > should set and clear the queue error message after a timeout [SessionSummary] No chats directory found stdout | src/ui/AppContainer.test.tsx > AppContainer State Management > Queue Error Message > should reset the timer if a new error message is set [SessionSummary] No chats directory found stdout | src/ui/AppContainer.test.tsx > AppContainer State Management > Terminal Height Calculation > should prevent terminal height from being less than 1 [SessionSummary] No chats directory found stdout | src/ui/AppContainer.test.tsx > AppContainer State Management > Keyboard Input Handling (CTRL+C / CTRL+D) > CTRL+C > should cancel ongoing request on first press [SessionSummary] No chats directory found stdout | src/ui/AppContainer.test.tsx > AppContainer State Management > Keyboard Input Handling (CTRL+C / CTRL+D) > CTRL+C > should quit on second press [SessionSummary] No chats directory found stdout | src/ui/AppContainer.test.tsx > AppContainer State Management > Keyboard Input Handling (CTRL+C / CTRL+D) > CTRL+C > should reset press count after a timeout [SessionSummary] No chats directory found stdout | src/ui/AppContainer.test.tsx > AppContainer State Management > Keyboard Input Handling (CTRL+C / CTRL+D) > CTRL+C > should reset press count after a timeout [SessionSummary] No chats directory found stdout | src/ui/AppContainer.test.tsx > AppContainer State Management > Keyboard Input Handling (CTRL+C / CTRL+D) > CTRL+D > should quit on second press if buffer is empty [SessionSummary] No chats directory found stdout | src/ui/AppContainer.test.tsx > AppContainer State Management > Keyboard Input Handling (CTRL+C / CTRL+D) > CTRL+D > should quit on second press if buffer is empty [SessionSummary] No chats directory found stdout | src/ui/AppContainer.test.tsx > AppContainer State Management > Copy Mode (CTRL+S) > 'Normal Mode' > should NOT toggle mouse off when Ctrl+S is pressed [SessionSummary] No chats directory found stdout | src/ui/AppContainer.test.tsx > AppContainer State Management > Copy Mode (CTRL+S) > 'Alternate Buffer Mode' > should toggle mouse off when Ctrl+S is pressed [SessionSummary] No chats directory found stdout | src/ui/AppContainer.test.tsx > AppContainer State Management > Copy Mode (CTRL+S) > 'Alternate Buffer Mode' > should toggle mouse back on when Ctrl+S is pressed again [SessionSummary] No chats directory found stdout | src/ui/AppContainer.test.tsx > AppContainer State Management > Copy Mode (CTRL+S) > 'Alternate Buffer Mode' > should toggle mouse back on when Ctrl+S is pressed again [SessionSummary] No chats directory found stdout | src/ui/AppContainer.test.tsx > AppContainer State Management > Model Dialog Integration > should provide isModelDialogOpen in the UIStateContext [SessionSummary] No chats directory found stdout | src/ui/AppContainer.test.tsx > AppContainer State Management > Model Dialog Integration > should provide model dialog actions in the UIActionsContext [SessionSummary] No chats directory found stdout | src/ui/AppContainer.test.tsx > AppContainer State Management > CoreEvents Integration > subscribes to UserFeedback and drains backlog on mount [SessionSummary] No chats directory found stdout | src/ui/AppContainer.test.tsx > AppContainer State Management > CoreEvents Integration > subscribes to UserFeedback and drains backlog on mount [SessionSummary] No chats directory found stdout | src/ui/AppContainer.test.tsx > AppContainer State Management > CoreEvents Integration > unsubscribes from UserFeedback on unmount [SessionSummary] No chats directory found stdout | src/ui/AppContainer.test.tsx > AppContainer State Management > CoreEvents Integration > adds history item when UserFeedback event is received [SessionSummary] No chats directory found stdout | src/ui/AppContainer.test.tsx > AppContainer State Management > CoreEvents Integration > updates currentModel when ModelChanged event is received [SessionSummary] No chats directory found stdout | src/ui/AppContainer.test.tsx > AppContainer State Management > CoreEvents Integration > provides activeHooks from useHookDisplayState [SessionSummary] No chats directory found βœ“ src/ui/hooks/useAutoAcceptIndicator.test.ts (17 tests) 267ms stdout | src/ui/AppContainer.test.tsx > AppContainer State Management > Shell Interaction > should not crash if resizing the pty fails [SessionSummary] No chats directory found stdout | src/ui/AppContainer.test.tsx > AppContainer State Management > Banner Text > should render placeholder banner text for USE_GEMINI auth type [SessionSummary] No chats directory found stdout | src/ui/AppContainer.test.tsx > AppContainer State Management > onCancelSubmit Behavior > clears the prompt when onCancelSubmit is called with shouldRestorePrompt=false [SessionSummary] No chats directory found stdout | src/ui/AppContainer.test.tsx > AppContainer State Management > onCancelSubmit Behavior > restores the prompt when onCancelSubmit is called with shouldRestorePrompt=true (or undefined) [SessionSummary] No chats directory found stdout | src/ui/AppContainer.test.tsx > AppContainer State Management > onCancelSubmit Behavior > input history is independent from conversation history (survives /clear) [SessionSummary] No chats directory found stdout | src/ui/AppContainer.test.tsx > AppContainer State Management > Regression Tests > does not refresh static on startup if banner text is empty [SessionSummary] No chats directory found βœ“ src/ui/AppContainer.test.tsx (62 tests) 2501ms βœ“ AppContainer State Management > State Initialization > handles debug mode state 333ms βœ“ src/ui/commands/hooksCommand.test.ts (24 tests) 239ms stdout | src/config/policy-engine.integration.test.ts > Policy Engine Integration Tests > Policy configuration produces valid PolicyEngine config > should create a working PolicyEngine from basic settings [PolicyEngine.check] toolCall.name: run_shell_command, stringifiedArgs: undefined [PolicyEngine.check] MATCHED rule: toolName=run_shell_command, decision=allow, priority=2.3, argsPattern=none stdout | src/config/policy-engine.integration.test.ts > Policy Engine Integration Tests > Policy configuration produces valid PolicyEngine config > should create a working PolicyEngine from basic settings [PolicyEngine.check] toolCall.name: write_file, stringifiedArgs: undefined [PolicyEngine.check] MATCHED rule: toolName=write_file, decision=deny, priority=2.4, argsPattern=none stdout | src/config/policy-engine.integration.test.ts > Policy Engine Integration Tests > Policy configuration produces valid PolicyEngine config > should create a working PolicyEngine from basic settings [PolicyEngine.check] toolCall.name: replace, stringifiedArgs: undefined [PolicyEngine.check] MATCHED rule: toolName=replace, decision=ask_user, priority=1.01, argsPattern=none stdout | src/config/policy-engine.integration.test.ts > Policy Engine Integration Tests > Policy configuration produces valid PolicyEngine config > should create a working PolicyEngine from basic settings [PolicyEngine.check] toolCall.name: unknown_tool, stringifiedArgs: undefined [PolicyEngine.check] NO MATCH - using default decision: ask_user stdout | src/config/policy-engine.integration.test.ts > Policy Engine Integration Tests > Policy configuration produces valid PolicyEngine config > should handle MCP server wildcard patterns correctly [PolicyEngine.check] toolCall.name: allowed-server__tool1, stringifiedArgs: undefined [PolicyEngine.check] MATCHED rule: toolName=allowed-server__*, decision=allow, priority=2.1, argsPattern=none stdout | src/config/policy-engine.integration.test.ts > Policy Engine Integration Tests > Policy configuration produces valid PolicyEngine config > should handle MCP server wildcard patterns correctly [PolicyEngine.check] toolCall.name: allowed-server__another_tool, stringifiedArgs: undefined [PolicyEngine.check] MATCHED rule: toolName=allowed-server__*, decision=allow, priority=2.1, argsPattern=none stdout | src/config/policy-engine.integration.test.ts > Policy Engine Integration Tests > Policy configuration produces valid PolicyEngine config > should handle MCP server wildcard patterns correctly [PolicyEngine.check] toolCall.name: trusted-server__tool1, stringifiedArgs: undefined [PolicyEngine.check] MATCHED rule: toolName=trusted-server__*, decision=allow, priority=2.2, argsPattern=none stdout | src/config/policy-engine.integration.test.ts > Policy Engine Integration Tests > Policy configuration produces valid PolicyEngine config > should handle MCP server wildcard patterns correctly [PolicyEngine.check] toolCall.name: trusted-server__special_tool, stringifiedArgs: undefined [PolicyEngine.check] MATCHED rule: toolName=trusted-server__*, decision=allow, priority=2.2, argsPattern=none stdout | src/config/policy-engine.integration.test.ts > Policy Engine Integration Tests > Policy configuration produces valid PolicyEngine config > should handle MCP server wildcard patterns correctly [PolicyEngine.check] toolCall.name: blocked-server__tool1, stringifiedArgs: undefined [PolicyEngine.check] MATCHED rule: toolName=blocked-server__*, decision=deny, priority=2.9, argsPattern=none stdout | src/config/policy-engine.integration.test.ts > Policy Engine Integration Tests > Policy configuration produces valid PolicyEngine config > should handle MCP server wildcard patterns correctly [PolicyEngine.check] toolCall.name: blocked-server__any_tool, stringifiedArgs: undefined [PolicyEngine.check] MATCHED rule: toolName=blocked-server__*, decision=deny, priority=2.9, argsPattern=none stdout | src/config/policy-engine.integration.test.ts > Policy Engine Integration Tests > Policy configuration produces valid PolicyEngine config > should handle MCP server wildcard patterns correctly [PolicyEngine.check] toolCall.name: unknown-server__tool, stringifiedArgs: undefined [PolicyEngine.check] NO MATCH - using default decision: ask_user stdout | src/config/policy-engine.integration.test.ts > Policy Engine Integration Tests > Policy configuration produces valid PolicyEngine config > should correctly prioritize specific tool excludes over MCP server wildcards [PolicyEngine.check] toolCall.name: my-server__safe-tool, stringifiedArgs: undefined [PolicyEngine.check] MATCHED rule: toolName=my-server__*, decision=allow, priority=2.1, argsPattern=none stdout | src/config/policy-engine.integration.test.ts > Policy Engine Integration Tests > Policy configuration produces valid PolicyEngine config > should correctly prioritize specific tool excludes over MCP server wildcards [PolicyEngine.check] toolCall.name: my-server__dangerous-tool, stringifiedArgs: undefined [PolicyEngine.check] MATCHED rule: toolName=my-server__dangerous-tool, decision=deny, priority=2.4, argsPattern=none stdout | src/config/policy-engine.integration.test.ts > Policy Engine Integration Tests > Policy configuration produces valid PolicyEngine config > should handle complex mixed configurations [PolicyEngine.check] toolCall.name: read_file, stringifiedArgs: undefined [PolicyEngine.check] MATCHED rule: toolName=read_file, decision=allow, priority=1.05, argsPattern=none stdout | src/config/policy-engine.integration.test.ts > Policy Engine Integration Tests > Policy configuration produces valid PolicyEngine config > should handle complex mixed configurations [PolicyEngine.check] toolCall.name: list_directory, stringifiedArgs: undefined [PolicyEngine.check] MATCHED rule: toolName=list_directory, decision=allow, priority=1.05, argsPattern=none stdout | src/config/policy-engine.integration.test.ts > Policy Engine Integration Tests > Policy configuration produces valid PolicyEngine config > should handle complex mixed configurations [PolicyEngine.check] toolCall.name: glob, stringifiedArgs: undefined [PolicyEngine.check] MATCHED rule: toolName=glob, decision=deny, priority=2.4, argsPattern=none stdout | src/config/policy-engine.integration.test.ts > Policy Engine Integration Tests > Policy configuration produces valid PolicyEngine config > should handle complex mixed configurations [PolicyEngine.check] toolCall.name: replace, stringifiedArgs: undefined [PolicyEngine.check] MATCHED rule: toolName=replace, decision=ask_user, priority=1.01, argsPattern=none stdout | src/config/policy-engine.integration.test.ts > Policy Engine Integration Tests > Policy configuration produces valid PolicyEngine config > should handle complex mixed configurations [PolicyEngine.check] toolCall.name: custom-tool, stringifiedArgs: undefined [PolicyEngine.check] MATCHED rule: toolName=custom-tool, decision=allow, priority=2.3, argsPattern=none stdout | src/config/policy-engine.integration.test.ts > Policy Engine Integration Tests > Policy configuration produces valid PolicyEngine config > should handle complex mixed configurations [PolicyEngine.check] toolCall.name: my-server__special-tool, stringifiedArgs: undefined [PolicyEngine.check] MATCHED rule: toolName=my-server__special-tool, decision=allow, priority=2.3, argsPattern=none stdout | src/config/policy-engine.integration.test.ts > Policy Engine Integration Tests > Policy configuration produces valid PolicyEngine config > should handle complex mixed configurations [PolicyEngine.check] toolCall.name: allowed-server__tool, stringifiedArgs: undefined [PolicyEngine.check] MATCHED rule: toolName=allowed-server__*, decision=allow, priority=2.1, argsPattern=none stdout | src/config/policy-engine.integration.test.ts > Policy Engine Integration Tests > Policy configuration produces valid PolicyEngine config > should handle complex mixed configurations [PolicyEngine.check] toolCall.name: trusted-server__tool, stringifiedArgs: undefined [PolicyEngine.check] MATCHED rule: toolName=trusted-server__*, decision=allow, priority=2.2, argsPattern=none stdout | src/config/policy-engine.integration.test.ts > Policy Engine Integration Tests > Policy configuration produces valid PolicyEngine config > should handle complex mixed configurations [PolicyEngine.check] toolCall.name: blocked-server__tool, stringifiedArgs: undefined [PolicyEngine.check] MATCHED rule: toolName=blocked-server__*, decision=deny, priority=2.9, argsPattern=none stdout | src/config/policy-engine.integration.test.ts > Policy Engine Integration Tests > Policy configuration produces valid PolicyEngine config > should handle complex mixed configurations [PolicyEngine.check] toolCall.name: write_file, stringifiedArgs: undefined [PolicyEngine.check] MATCHED rule: toolName=write_file, decision=ask_user, priority=1.01, argsPattern=none stdout | src/config/policy-engine.integration.test.ts > Policy Engine Integration Tests > Policy configuration produces valid PolicyEngine config > should handle YOLO mode correctly [PolicyEngine.check] toolCall.name: run_shell_command, stringifiedArgs: undefined [PolicyEngine.check] MATCHED rule: toolName=undefined, decision=allow, priority=1.999, argsPattern=none stdout | src/config/policy-engine.integration.test.ts > Policy Engine Integration Tests > Policy configuration produces valid PolicyEngine config > should handle YOLO mode correctly [PolicyEngine.check] toolCall.name: write_file, stringifiedArgs: undefined [PolicyEngine.check] MATCHED rule: toolName=undefined, decision=allow, priority=1.999, argsPattern=none stdout | src/config/policy-engine.integration.test.ts > Policy Engine Integration Tests > Policy configuration produces valid PolicyEngine config > should handle YOLO mode correctly [PolicyEngine.check] toolCall.name: unknown_tool, stringifiedArgs: undefined [PolicyEngine.check] MATCHED rule: toolName=undefined, decision=allow, priority=1.999, argsPattern=none stdout | src/config/policy-engine.integration.test.ts > Policy Engine Integration Tests > Policy configuration produces valid PolicyEngine config > should handle YOLO mode correctly [PolicyEngine.check] toolCall.name: dangerous-tool, stringifiedArgs: undefined [PolicyEngine.check] MATCHED rule: toolName=dangerous-tool, decision=deny, priority=2.4, argsPattern=none stdout | src/config/policy-engine.integration.test.ts > Policy Engine Integration Tests > Policy configuration produces valid PolicyEngine config > should handle AUTO_EDIT mode correctly [PolicyEngine.check] toolCall.name: replace, stringifiedArgs: undefined [PolicyEngine.check] MATCHED rule: toolName=replace, decision=allow, priority=1.015, argsPattern=none stdout | src/config/policy-engine.integration.test.ts > Policy Engine Integration Tests > Policy configuration produces valid PolicyEngine config > should handle AUTO_EDIT mode correctly [PolicyEngine.check] toolCall.name: write_file, stringifiedArgs: undefined [PolicyEngine.check] MATCHED rule: toolName=write_file, decision=allow, priority=1.015, argsPattern=none stdout | src/config/policy-engine.integration.test.ts > Policy Engine Integration Tests > Policy configuration produces valid PolicyEngine config > should handle AUTO_EDIT mode correctly [PolicyEngine.check] toolCall.name: run_shell_command, stringifiedArgs: undefined [PolicyEngine.check] MATCHED rule: toolName=run_shell_command, decision=ask_user, priority=1.01, argsPattern=none stdout | src/config/policy-engine.integration.test.ts > Policy Engine Integration Tests > Policy configuration produces valid PolicyEngine config > should verify priority ordering works correctly in practice [PolicyEngine.check] toolCall.name: blocked-tool, stringifiedArgs: undefined [PolicyEngine.check] MATCHED rule: toolName=blocked-tool, decision=deny, priority=2.4, argsPattern=none stdout | src/config/policy-engine.integration.test.ts > Policy Engine Integration Tests > Policy configuration produces valid PolicyEngine config > should verify priority ordering works correctly in practice [PolicyEngine.check] toolCall.name: blocked-server__any, stringifiedArgs: undefined [PolicyEngine.check] MATCHED rule: toolName=blocked-server__*, decision=deny, priority=2.9, argsPattern=none stdout | src/config/policy-engine.integration.test.ts > Policy Engine Integration Tests > Policy configuration produces valid PolicyEngine config > should verify priority ordering works correctly in practice [PolicyEngine.check] toolCall.name: specific-tool, stringifiedArgs: undefined [PolicyEngine.check] MATCHED rule: toolName=specific-tool, decision=allow, priority=2.3, argsPattern=none stdout | src/config/policy-engine.integration.test.ts > Policy Engine Integration Tests > Policy configuration produces valid PolicyEngine config > should verify priority ordering works correctly in practice [PolicyEngine.check] toolCall.name: trusted-server__any, stringifiedArgs: undefined [PolicyEngine.check] MATCHED rule: toolName=trusted-server__*, decision=allow, priority=2.2, argsPattern=none stdout | src/config/policy-engine.integration.test.ts > Policy Engine Integration Tests > Policy configuration produces valid PolicyEngine config > should verify priority ordering works correctly in practice [PolicyEngine.check] toolCall.name: mcp-server__any, stringifiedArgs: undefined [PolicyEngine.check] MATCHED rule: toolName=mcp-server__*, decision=allow, priority=2.1, argsPattern=none stdout | src/config/policy-engine.integration.test.ts > Policy Engine Integration Tests > Policy configuration produces valid PolicyEngine config > should verify priority ordering works correctly in practice [PolicyEngine.check] toolCall.name: glob, stringifiedArgs: undefined [PolicyEngine.check] MATCHED rule: toolName=glob, decision=allow, priority=1.05, argsPattern=none βœ“ src/ui/components/shared/BaseSelectionList.test.tsx (26 tests) 1439ms βœ“ BaseSelectionList > Rendering and Structure > should render all items using the renderItem prop 351ms stdout | src/config/policy-engine.integration.test.ts > Policy Engine Integration Tests > Policy configuration produces valid PolicyEngine config > should handle edge case: MCP server with both trust and exclusion [PolicyEngine.check] toolCall.name: conflicted-server__tool, stringifiedArgs: undefined [PolicyEngine.check] MATCHED rule: toolName=conflicted-server__*, decision=deny, priority=2.9, argsPattern=none stdout | src/config/policy-engine.integration.test.ts > Policy Engine Integration Tests > Policy configuration produces valid PolicyEngine config > should handle edge case: specific tool allowed but server excluded [PolicyEngine.check] toolCall.name: my-server__special-tool, stringifiedArgs: undefined [PolicyEngine.check] MATCHED rule: toolName=my-server__*, decision=deny, priority=2.9, argsPattern=none stdout | src/config/policy-engine.integration.test.ts > Policy Engine Integration Tests > Policy configuration produces valid PolicyEngine config > should handle edge case: specific tool allowed but server excluded [PolicyEngine.check] toolCall.name: my-server__other-tool, stringifiedArgs: undefined [PolicyEngine.check] MATCHED rule: toolName=my-server__*, decision=deny, priority=2.9, argsPattern=none stdout | src/config/policy-engine.integration.test.ts > Policy Engine Integration Tests > Policy configuration produces valid PolicyEngine config > should verify non-interactive mode transformation [PolicyEngine.check] toolCall.name: unknown_tool, stringifiedArgs: undefined [PolicyEngine.check] NO MATCH - using default decision: ask_user stdout | src/config/policy-engine.integration.test.ts > Policy Engine Integration Tests > Policy configuration produces valid PolicyEngine config > should verify non-interactive mode transformation [PolicyEngine.check] toolCall.name: run_shell_command, stringifiedArgs: undefined [PolicyEngine.check] MATCHED rule: toolName=run_shell_command, decision=ask_user, priority=1.01, argsPattern=none stdout | src/config/policy-engine.integration.test.ts > Policy Engine Integration Tests > Policy configuration produces valid PolicyEngine config > should handle empty settings gracefully [PolicyEngine.check] toolCall.name: write_file, stringifiedArgs: undefined [PolicyEngine.check] MATCHED rule: toolName=write_file, decision=ask_user, priority=1.01, argsPattern=none stdout | src/config/policy-engine.integration.test.ts > Policy Engine Integration Tests > Policy configuration produces valid PolicyEngine config > should handle empty settings gracefully [PolicyEngine.check] toolCall.name: replace, stringifiedArgs: undefined [PolicyEngine.check] MATCHED rule: toolName=replace, decision=ask_user, priority=1.01, argsPattern=none stdout | src/config/policy-engine.integration.test.ts > Policy Engine Integration Tests > Policy configuration produces valid PolicyEngine config > should handle empty settings gracefully [PolicyEngine.check] toolCall.name: unknown, stringifiedArgs: undefined [PolicyEngine.check] NO MATCH - using default decision: ask_user βœ“ src/ui/hooks/useCommandCompletion.test.tsx (21 tests) 319ms βœ“ src/ui/hooks/useQuotaAndFallback.test.ts (12 tests) 276ms βœ“ src/config/policy-engine.integration.test.ts (12 tests) 569ms ]2;Gemini - clistderr | src/gemini.test.tsx > gemini.tsx main function kitty protocol > should handle --'listSessions' flag [STARTUP] Cannot start phase 'cli_startup': phase is already active. Call end() before starting again. stderr | src/gemini.test.tsx > gemini.tsx main function kitty protocol > should handle --'deleteSession' flag [STARTUP] Cannot start phase 'cli_startup': phase is already active. Call end() before starting again. stderr | src/gemini.test.tsx > gemini.tsx main function kitty protocol > should handle sandbox activation [STARTUP] Cannot start phase 'cli_startup': phase is already active. Call end() before starting again. Error resuming session: Session not foundError resuming session: Session not foundstderr | src/gemini.test.tsx > gemini.tsx main function kitty protocol > should read from stdin in non-interactive mode [STARTUP] Cannot start phase 'cli_startup': phase is already active. Call end() before starting again. Error: The --prompt-interactive flag cannot be used when input is piped from stdin. Error resuming session: sessionSelector.resolveSession is not a functionError resuming session: sessionSelector.resolveSession is not a functionstderr | src/gemini.test.tsx > gemini.tsx main function exit codes > should exit with 41 for auth failure during sandbox setup [STARTUP] Cannot start phase 'cli_startup': phase is already active. Call end() before starting again. stderr | src/gemini.test.tsx > gemini.tsx main function exit codes > should exit with 42 for session resume failure [STARTUP] Cannot start phase 'cli_startup': phase is already active. Call end() before starting again. stderr | src/gemini.test.tsx > gemini.tsx main function exit codes > should exit with 42 for no input provided [STARTUP] Cannot start phase 'cli_startup': phase is already active. Call end() before starting again. stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to TestComponent inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act An update to TestComponent inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act An update to TestComponent inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to TestComponent inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act An update to TestComponent inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act An update to TestComponent inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to TestComponent inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act An update to TestComponent inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act An update to TestComponent inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to TestComponent inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act An update to TestComponent inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act An update to TestComponent inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to TestComponent inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act An update to TestComponent inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to TestComponent inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act An update to TestComponent inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act An update to TestComponent inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to TestComponent inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act An update to TestComponent inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act An update to TestComponent inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | updateHookTypesDev (/startdir/src/gemini-cli/node_modules/react-reconciler/cjs/react-reconciler.development.js:3128:19) React has detected a change in the order of Hooks called by TestComponent. This will lead to bugs and errors if not fixed. For more information, read the Rules of Hooks: https://react.dev/link/rules-of-hooks Previous render Next render ------------------------------------------------------ 1. useMemo useMemo 2. useReducer useReducer 3. useMemo useMemo 4. useMemo useMemo 5. useState useState 6. useEffect useEffect 7. useEffect useEffect 8. useEffect useEffect 9. useCallback useCallback 10. useCallback useCallback 11. useCallback useCallback 12. useCallback useCallback 13. useCallback useCallback 14. useCallback useCallback 15. useCallback useCallback 16. useCallback useCallback 17. useCallback useCallback 18. useCallback useCallback 19. useCallback useCallback 20. useCallback useCallback 21. useCallback useCallback 22. useCallback useCallback 23. useCallback useCallback 24. useCallback useCallback 25. useCallback useCallback 26. useCallback useCallback 27. useCallback useCallback 28. useCallback useCallback 29. useCallback useCallback 30. useCallback useCallback 31. useCallback useCallback 32. useCallback useCallback 33. useCallback useCallback 34. useCallback useCallback 35. useCallback useCallback 36. useCallback useCallback 37. useCallback useCallback 38. useCallback useCallback 39. useCallback useCallback 40. useCallback useCallback 41. useCallback useCallback 42. useCallback useCallback 43. useCallback useCallback 44. useCallback useCallback 45. useCallback useCallback 46. useCallback useCallback 47. useCallback useCallback 48. useCallback useCallback 49. useCallback useCallback 50. useCallback useCallback 51. useCallback useCallback 52. useCallback useCallback 53. useCallback useCallback 54. useCallback useCallback 55. useMemo useMemo 56. useCallback useCallback 57. useCallback useCallback 58. useCallback useCallback 59. useCallback useCallback 60. useCallback useCallback 61. useMemo useMemo 62. useState useState 63. useState useState 64. useState useState 65. useState useState 66. useState useState 67. useState useState 68. useCallback useCallback 69. useCallback useCallback 70. useCallback useCallback 71. useMemo useMemo 72. useEffect useState ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Root inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Root inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Root inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Root inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Root inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Root inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Root inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act ]2;Gemini - root[?7l]2;Gemini - root[?7l]2;Gemini - root[?7l]2;Gemini - root[?7l]2;Gemini - root[?7l]2;Gemini - root[?7l βœ“ src/gemini.test.tsx (33 tests | 1 skipped) 243ms βœ“ src/ui/hooks/useAtCompletion.test.ts (15 tests) 2180ms βœ“ src/validateNonInterActiveAuth.test.ts (17 tests) 84ms βœ“ src/config/trustedFolders.test.ts (23 tests) 99ms stderr | src/config/config.test.ts > Approval mode tool exclusion logic > should exclude no interactive tools in non-interactive mode with yolo approval mode YOLO mode is enabled. All tool calls will be automatically approved. stderr | src/config/config.test.ts > Approval mode tool exclusion logic > should exclude no interactive tools in non-interactive mode with legacy yolo flag YOLO mode is enabled. All tool calls will be automatically approved. stderr | src/config/config.test.ts > Approval mode tool exclusion logic > should not exclude interactive tools in interactive mode regardless of approval mode YOLO mode is enabled. All tool calls will be automatically approved. stderr | src/config/config.test.ts > Approval mode tool exclusion logic > should not exclude interactive tools in interactive mode regardless of approval mode YOLO mode is enabled. All tool calls will be automatically approved. βœ“ src/config/settingsSchema.test.ts (19 tests) 52ms stderr | src/config/config.test.ts > loadCliConfig tool exclusions > should not exclude interactive tools in interactive mode with YOLO YOLO mode is enabled. All tool calls will be automatically approved. stderr | src/config/config.test.ts > loadCliConfig tool exclusions > should not exclude interactive tools in non-interactive mode with YOLO YOLO mode is enabled. All tool calls will be automatically approved. stderr | src/config/config.test.ts > loadCliConfig interactive > should not be interactive if positional prompt words are provided with multiple flags YOLO mode is enabled. All tool calls will be automatically approved. stderr | src/ui/utils/commandUtils.test.ts > commandUtils > getUrlOpenCommand > on unmatched OS > should return xdg-open Unknown platform: unmatched. Attempting to open URLs with: xdg-open. stderr | src/config/config.test.ts > loadCliConfig approval mode > should set YOLO approval mode when --yolo flag is used YOLO mode is enabled. All tool calls will be automatically approved. stderr | src/config/config.test.ts > loadCliConfig approval mode > should set YOLO approval mode when -y flag is used YOLO mode is enabled. All tool calls will be automatically approved. βœ“ src/ui/utils/commandUtils.test.ts (24 tests) 73ms stderr | src/config/config.test.ts > loadCliConfig approval mode > should set YOLO approval mode when --approval-mode=yolo YOLO mode is enabled. All tool calls will be automatically approved. βœ“ src/utils/sandbox.test.ts (7 tests) 214ms stderr | src/config/config.test.ts > loadCliConfig approval mode > should fall back to --yolo behavior when --approval-mode is not set YOLO mode is enabled. All tool calls will be automatically approved. stderr | src/config/config.test.ts > loadCliConfig approval mode > when folder is NOT trusted > should override --approval-mode=yolo to DEFAULT YOLO mode is enabled. All tool calls will be automatically approved. Approval mode overridden to "default" because the current folder is not trusted. stderr | src/config/config.test.ts > loadCliConfig approval mode > when folder is NOT trusted > should override --approval-mode=auto_edit to DEFAULT Approval mode overridden to "default" because the current folder is not trusted. stderr | src/config/config.test.ts > loadCliConfig approval mode > when folder is NOT trusted > should override --yolo flag to DEFAULT YOLO mode is enabled. All tool calls will be automatically approved. Approval mode overridden to "default" because the current folder is not trusted. βœ“ src/commands/hooks/migrate.test.ts (17 tests) 192ms βœ“ src/ui/commands/skillsCommand.test.ts (14 tests) 228ms βœ“ src/utils/commentJson.test.ts (12 tests) 80ms stderr | src/ui/components/Composer.test.tsx An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | src/ui/components/Composer.test.tsx An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | src/ui/components/Composer.test.tsx An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | src/ui/components/Composer.test.tsx An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | src/ui/components/Composer.test.tsx An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | src/ui/components/Composer.test.tsx An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | src/ui/components/Composer.test.tsx An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | src/ui/components/Composer.test.tsx An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | src/ui/components/Composer.test.tsx An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | src/ui/components/Composer.test.tsx An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | src/ui/components/Composer.test.tsx An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | src/ui/components/Composer.test.tsx An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | src/ui/components/Composer.test.tsx An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | src/ui/components/Composer.test.tsx An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | src/ui/components/Composer.test.tsx An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act (node:3164) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 mcp-client-update listeners added to [EventEmitter]. MaxListeners is 10. Use emitter.setMaxListeners() to increase limit (Use `node --trace-warnings ...` to show where the warning was created) stderr | src/ui/components/Composer.test.tsx An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | src/ui/components/Composer.test.tsx An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | src/ui/components/Composer.test.tsx An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act βœ“ src/ui/components/Composer.test.tsx (21 tests) 517ms stderr | src/ui/components/Composer.test.tsx An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | src/config/config.test.ts > loadCliConfig secureModeEnabled > should throw an error if YOLO mode is attempted when secureModeEnabled is true YOLO mode is disabled by "secureModeEnabled" setting. βœ“ src/config/settings-validation.test.ts (25 tests) 120ms stderr | src/config/config.test.ts > loadCliConfig secureModeEnabled > should throw an error if approval-mode=yolo is attempted when secureModeEnabled is true YOLO mode is disabled by "secureModeEnabled" setting. βœ“ src/ui/commands/directoryCommand.test.tsx (18 tests) 63ms βœ“ src/config/config.test.ts (155 tests) 6186ms βœ“ src/config/extensions/consent.test.ts (19 tests) 241ms stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to Spinner inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act βœ“ src/ui/hooks/usePhraseCycler.test.tsx (13 tests) 361ms stderr | DebugLogger.error (/startdir/src/gemini-cli/packages/core/src/utils/debugLogger.ts:60:13) {"stack":"Error: PeriodicExportingMetricReader: metrics export failed (error Error: 14 UNAVAILABLE: No connection established. Last error: Error: connect ECONNREFUSED 127.0.0.1:4317)\n at PeriodicExportingMetricReader._doRun (/startdir/src/gemini-cli/node_modules/@opentelemetry/sdk-metrics/src/export/PeriodicExportingMetricReader.ts:144:13)\n at processTicksAndRejections (node:internal/process/task_queues:103:5)\n at PeriodicExportingMetricReader._runOnce (/startdir/src/gemini-cli/node_modules/@opentelemetry/sdk-metrics/src/export/PeriodicExportingMetricReader.ts:103:7)\n at PeriodicExportingMetricReader.onForceFlush (/startdir/src/gemini-cli/node_modules/@opentelemetry/sdk-metrics/src/export/PeriodicExportingMetricReader.ts:160:5)\n at PeriodicExportingMetricReader.onShutdown (/startdir/src/gemini-cli/node_modules/@opentelemetry/sdk-metrics/src/export/PeriodicExportingMetricReader.ts:168:5)\n at PeriodicExportingMetricReader.shutdown (/startdir/src/gemini-cli/node_modules/@opentelemetry/sdk-metrics/src/export/MetricReader.ts:261:7)\n at MetricCollector.shutdown (/startdir/src/gemini-cli/node_modules/@opentelemetry/sdk-metrics/src/state/MetricCollector.ts:86:5)\n at async Promise.all (index 0)\n at MeterProvider.shutdown (/startdir/src/gemini-cli/node_modules/@opentelemetry/sdk-metrics/src/MeterProvider.ts:98:5)\n at async Promise.all (index 2)","message":"PeriodicExportingMetricReader: metrics export failed (error Error: 14 UNAVAILABLE: No connection established. Last error: Error: connect ECONNREFUSED 127.0.0.1:4317)","name":"Error"} βœ“ src/ui/components/StatsDisplay.test.tsx (14 tests) 842ms βœ“ > renders only the Performance section in its zero state 305ms βœ“ src/ui/hooks/useSessionResume.test.ts (12 tests) 156ms βœ“ src/utils/handleAutoUpdate.test.ts (19 tests) 85ms βœ“ src/ui/components/messages/ToolGroupMessage.test.tsx (19 tests) 1479ms βœ“ src/ui/commands/memoryCommand.test.ts (11 tests) 58ms βœ“ src/ui/utils/directoryUtils.test.ts (17 tests | 1 skipped) 27ms stdout | src/commands/mcp/add.test.ts > mcp add command > should add a stdio server to project settings MCP server "my-server" added to project settings. (stdio) stdout | src/commands/mcp/add.test.ts > mcp add command > should handle multiple env vars before positional args MCP server "my-server" added to project settings. (stdio) stdout | src/commands/mcp/add.test.ts > mcp add command > should add an sse server to user settings MCP server "sse-server" added to user settings. (sse) stdout | src/commands/mcp/add.test.ts > mcp add command > should add an http server to project settings MCP server "http-server" added to project settings. (http) stdout | src/commands/mcp/add.test.ts > mcp add command > should add an sse server using --type alias MCP server "sse-server" added to user settings. (sse) stdout | src/commands/mcp/add.test.ts > mcp add command > should add an http server using --type alias MCP server "http-server" added to project settings. (http) stdout | src/commands/mcp/add.test.ts > mcp add command > should handle MCP server args with -- separator MCP server "my-server" added to project settings. (stdio) stdout | src/commands/mcp/add.test.ts > mcp add command > should handle unknown options as MCP server args MCP server "test-server" added to project settings. (stdio) stdout | src/commands/mcp/add.test.ts > mcp add command > when handling scope and directory > when in a project directory > should use project scope by default MCP server "test-server" added to project settings. (stdio) stdout | src/commands/mcp/add.test.ts > mcp add command > when handling scope and directory > when in a project directory > should use project scope when --scope=project is used MCP server "test-server" added to project settings. (stdio) stdout | src/commands/mcp/add.test.ts > mcp add command > when handling scope and directory > when in a project directory > should use user scope when --scope=user is used MCP server "test-server" added to user settings. (stdio) stdout | src/commands/mcp/add.test.ts > mcp add command > when handling scope and directory > when in a subdirectory of a project > should use project scope by default MCP server "test-server" added to project settings. (stdio) stdout | src/commands/mcp/add.test.ts > mcp add command > when handling scope and directory > when in the home directory > should use user scope when --scope=user is used MCP server "test-server" added to user settings. (stdio) stdout | src/commands/mcp/add.test.ts > mcp add command > when handling scope and directory > when in a subdirectory of home (not a project) > should use project scope by default MCP server "test-server" added to project settings. (stdio) stdout | src/commands/mcp/add.test.ts > mcp add command > when handling scope and directory > when in a subdirectory of home (not a project) > should write to the WORKSPACE scope, not the USER scope MCP server "my-new-server" added to project settings. (stdio) stdout | src/commands/mcp/add.test.ts > mcp add command > when handling scope and directory > when outside of home (not a project) > should use project scope by default MCP server "test-server" added to project settings. (stdio) stdout | src/commands/mcp/add.test.ts > mcp add command > when updating an existing server > should update the existing server in the project scope MCP server "existing-server" is already configured within project settings. MCP server "existing-server" updated in project settings. stdout | src/commands/mcp/add.test.ts > mcp add command > when updating an existing server > should update the existing server in the user scope MCP server "existing-server" is already configured within user settings. MCP server "existing-server" updated in user settings. βœ“ src/commands/mcp/add.test.ts (20 tests) 423ms βœ“ src/ui/contexts/ScrollProvider.test.tsx (9 tests) 248ms βœ“ src/services/CommandService.test.ts (11 tests) 116ms stderr | src/ui/auth/AuthDialog.test.tsx > AuthDialog > handleAuthSelect > exits process for Login with Google when browser is suppressed An update to AuthDialog inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act βœ“ src/ui/auth/AuthDialog.test.tsx (22 tests) 1333ms βœ“ src/ui/hooks/usePermissionsModifyTrust.test.ts (13 tests) 192ms βœ“ src/utils/installationInfo.test.ts (16 tests) 26ms βœ“ src/ui/utils/terminalCapabilityManager.test.ts (13 tests) 98ms (node:4019) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 exit listeners added to [process]. MaxListeners is 10. Use emitter.setMaxListeners() to increase limit (Use `node --trace-warnings ...` to show where the warning was created) (node:4019) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 SIGTERM listeners added to [process]. MaxListeners is 10. Use emitter.setMaxListeners() to increase limit (node:4019) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 SIGINT listeners added to [process]. MaxListeners is 10. Use emitter.setMaxListeners() to increase limit βœ“ src/ui/components/shared/MaxSizedBox.test.tsx (21 tests) 565ms stdout | src/ui/commands/setupGithubCommand.test.ts > setupGithubCommand > throws an error when download fails Failed to download required setup files: Error: Invalid response code downloading https://raw.githubusercontent.com/google-github-actions/run-gemini-cli/refs/tags/v1.2.3/examples/workflows/gemini-dispatch/gemini-dispatch.yml: 404 - Not Found at /startdir/src/gemini-cli/packages/cli/src/ui/commands/setupGithubCommand.ts:131:17 at async Promise.all (index 0) at downloadFiles (/startdir/src/gemini-cli/packages/cli/src/ui/commands/setupGithubCommand.ts:158:3) at async Promise.all (index 0) at downloadSetupFiles (/startdir/src/gemini-cli/packages/cli/src/ui/commands/setupGithubCommand.ts:184:5) at Object.action (/startdir/src/gemini-cli/packages/cli/src/ui/commands/setupGithubCommand.ts:240:5) at /startdir/src/gemini-cli/packages/cli/src/ui/commands/setupGithubCommand.test.ts:216:5 at file:///startdir/src/gemini-cli/node_modules/@vitest/runner/dist/chunk-hooks.js:752:20 stdout | src/ui/commands/setupGithubCommand.test.ts > updateGitignore > handles file system errors gracefully Failed to update .gitignore: Error: ENOENT: no such file or directory, open '/tmp/update-gitignore-dh1sU7/non-existent/.gitignore' at open (node:internal/fs/promises:636:25) at Object.writeFile (node:internal/fs/promises:1239:14) at Module.updateGitignore (/startdir/src/gemini-cli/packages/cli/src/ui/commands/setupGithubCommand.ts:82:7) at /startdir/src/gemini-cli/packages/cli/src/ui/commands/setupGithubCommand.test.ts:319:5 at file:///startdir/src/gemini-cli/node_modules/@vitest/runner/dist/chunk-hooks.js:752:20 { errno: -2, code: 'ENOENT', syscall: 'open', path: '/tmp/update-gitignore-dh1sU7/non-existent/.gitignore' } βœ“ src/ui/commands/setupGithubCommand.test.ts (10 tests) 113ms stderr | src/ui/components/shared/ScrollableList.test.tsx An update to ForwardRef(ScrollableList) inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | src/ui/themes/color-utils.test.ts > Color Utils > resolveColor > should return undefined for invalid colors [ColorUtils] Could not resolve color "invalidcolor" to an Ink-compatible format. [ColorUtils] Could not resolve color "notacolor" to an Ink-compatible format. [ColorUtils] Could not resolve color "" to an Ink-compatible format. stderr | src/ui/themes/color-utils.test.ts > Color Utils > Consistency between validation and resolution > should have consistent behavior between isValidColor and resolveColor [ColorUtils] Could not resolve color "invalidcolor" to an Ink-compatible format. [ColorUtils] Could not resolve color "notacolor" to an Ink-compatible format. [ColorUtils] Could not resolve color "" to an Ink-compatible format. βœ“ src/ui/themes/color-utils.test.ts (27 tests) 63ms stderr | ../../node_modules/react-reconciler/cjs/react-reconciler.development.js:13614:19 An update to ForwardRef(ScrollableList) inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act βœ“ src/ui/components/shared/ScrollableList.test.tsx (3 tests) 2086ms βœ“ ScrollableList Demo Behavior > should scroll to bottom when new items are added and stop when scrolled up 864ms βœ“ ScrollableList Demo Behavior > Keyboard Navigation > should handle scroll keys correctly 1068ms βœ“ src/config/extensions/update.test.ts (10 tests) 47ms βœ“ src/ui/contexts/ScrollProvider.drag.test.tsx (6 tests) 123ms βœ“ src/ui/components/Footer.test.tsx (21 tests) 375ms βœ“ src/ui/hooks/useMessageQueue.test.tsx (14 tests) 164ms βœ“ src/config/extensions/extensionUpdates.test.ts (5 tests) 672ms βœ“ extensionUpdates > ExtensionManager integration > should warn about missing settings after update 624ms βœ“ src/utils/relaunch.test.ts (8 tests) 51ms βœ“ src/commands/extensions/uninstall.test.ts (9 tests) 52ms βœ“ src/ui/components/SessionBrowser.test.tsx (6 tests) 712ms βœ“ SessionBrowser component > shows empty state when no sessions exist 306ms βœ“ src/ui/components/LoadingIndicator.test.tsx (16 tests) 283ms βœ“ src/ui/commands/restoreCommand.test.ts (13 tests) 145ms stderr | src/ui/components/ModelDialog.test.tsx > > renders the initial "main" view correctly An update to Root inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act βœ“ src/ui/components/ModelStatsDisplay.test.tsx (7 tests) 976ms βœ“ > should render "no API calls" message when there are no active models 430ms stderr | src/ui/components/ModelDialog.test.tsx > > renders "main" view with preview options when preview features are enabled An update to Root inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | src/ui/components/ModelDialog.test.tsx > > switches to "manual" view when "Manual" is selected An update to Root inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act An update to BaseSelectionList inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act βœ“ src/ui/hooks/useFolderTrust.test.ts (12 tests) 284ms βœ“ src/ui/components/shared/VirtualizedList.test.tsx (9 tests) 821ms stderr | src/ui/components/ModelDialog.test.tsx > > switches to "manual" view when "Manual" is selected An update to BaseSelectionList inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | src/ui/components/ModelDialog.test.tsx > > switches to "manual" view when "Manual" is selected An update to BaseSelectionList inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act βœ“ src/utils/envVarResolver.test.ts (16 tests) 112ms stderr | src/ui/components/ModelDialog.test.tsx > > switches to "manual" view when "Manual" is selected An update to ModelDialog inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act An update to BaseSelectionList inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | src/ui/components/ModelDialog.test.tsx > > switches to "manual" view when "Manual" is selected An update to BaseSelectionList inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | src/ui/components/ModelDialog.test.tsx > > renders "manual" view with preview options when preview features are enabled An update to Root inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act An update to BaseSelectionList inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | src/ui/components/ModelDialog.test.tsx > > renders "manual" view with preview options when preview features are enabled An update to BaseSelectionList inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | src/ui/components/ModelDialog.test.tsx > > renders "manual" view with preview options when preview features are enabled An update to BaseSelectionList inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | src/ui/components/ModelDialog.test.tsx > > renders "manual" view with preview options when preview features are enabled An update to BaseSelectionList inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | src/ui/components/ModelDialog.test.tsx > > renders "manual" view with preview options when preview features are enabled An update to BaseSelectionList inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | src/ui/components/ModelDialog.test.tsx > > renders "manual" view with preview options when preview features are enabled An update to ModelDialog inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act An update to BaseSelectionList inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | src/ui/components/ModelDialog.test.tsx > > renders "manual" view with preview options when preview features are enabled An update to BaseSelectionList inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | src/ui/components/ModelDialog.test.tsx > > sets model and closes when a model is selected in "main" view An update to Root inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act An update to BaseSelectionList inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | src/ui/components/ModelDialog.test.tsx > > sets model and closes when a model is selected in "main" view An update to BaseSelectionList inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | src/ui/components/ModelDialog.test.tsx > > sets model and closes when a model is selected in "manual" view An update to Root inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act An update to BaseSelectionList inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | src/ui/components/ModelDialog.test.tsx > > sets model and closes when a model is selected in "manual" view An update to BaseSelectionList inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | src/ui/components/ModelDialog.test.tsx > > sets model and closes when a model is selected in "manual" view An update to BaseSelectionList inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | src/ui/components/ModelDialog.test.tsx > > sets model and closes when a model is selected in "manual" view An update to ModelDialog inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act An update to BaseSelectionList inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | src/ui/components/ModelDialog.test.tsx > > sets model and closes when a model is selected in "manual" view An update to BaseSelectionList inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | src/ui/components/ModelDialog.test.tsx > > sets model and closes when a model is selected in "manual" view An update to BaseSelectionList inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act βœ“ src/services/prompt-processors/injectionParser.test.ts (21 tests) 50ms stderr | src/ui/components/ModelDialog.test.tsx > > sets model and closes when a model is selected in "manual" view An update to BaseSelectionList inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | src/ui/components/ModelDialog.test.tsx > > toggles persist mode with Tab key An update to Root inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act An update to ModelDialog inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act βœ“ src/ui/components/messages/DiffRenderer.test.tsx (26 tests) 2273ms stderr | src/ui/components/ModelDialog.test.tsx > > toggles persist mode with Tab key An update to BaseSelectionList inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | src/ui/components/ModelDialog.test.tsx > > toggles persist mode with Tab key An update to BaseSelectionList inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | src/ui/components/ModelDialog.test.tsx > > closes dialog on escape in "main" view An update to Root inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | src/ui/components/ModelDialog.test.tsx > > goes back to "main" view on escape in "manual" view An update to Root inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act An update to BaseSelectionList inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | src/ui/components/ModelDialog.test.tsx > > goes back to "main" view on escape in "manual" view An update to BaseSelectionList inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act βœ“ src/ui/hooks/useExtensionUpdates.test.tsx (4 tests) 389ms stderr | src/ui/components/ModelDialog.test.tsx > > goes back to "main" view on escape in "manual" view An update to BaseSelectionList inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | src/ui/components/ModelDialog.test.tsx > > goes back to "main" view on escape in "manual" view An update to ModelDialog inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act An update to BaseSelectionList inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | src/ui/components/ModelDialog.test.tsx > > goes back to "main" view on escape in "manual" view An update to BaseSelectionList inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | src/ui/components/ModelDialog.test.tsx > > goes back to "main" view on escape in "manual" view An update to ModelDialog inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | src/ui/components/ModelDialog.test.tsx > > goes back to "main" view on escape in "manual" view An update to BaseSelectionList inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | src/ui/components/ModelDialog.test.tsx > > Preview Logic > should NOT show preview options if user has no access An update to Root inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | src/ui/components/ModelDialog.test.tsx > > Preview Logic > should NOT show preview options if user has access but preview features are disabled An update to Root inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | src/ui/components/ModelDialog.test.tsx > > Preview Logic > should show preview options if user has access AND preview features are enabled An update to Root inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | src/ui/components/ModelDialog.test.tsx > > Preview Logic > should show "Gemini 3 is now available" header if user has access but preview features disabled An update to Root inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | src/ui/components/ModelDialog.test.tsx > > Preview Logic > should show "Gemini 3 is coming soon" header if user has no access An update to Root inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stderr | src/ui/components/ModelDialog.test.tsx > > Preview Logic > should NOT show header/subheader if preview options are shown An update to Root inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act βœ“ src/ui/components/ModelDialog.test.tsx (15 tests) 3419ms βœ“ > renders the initial "main" view correctly 382ms βœ“ > switches to "manual" view when "Manual" is selected 323ms βœ“ > renders "manual" view with preview options when preview features are enabled 503ms βœ“ > sets model and closes when a model is selected in "manual" view 595ms βœ“ > toggles persist mode with Tab key 336ms βœ“ > goes back to "main" view on escape in "manual" view 516ms stdout | src/ui/auth/useAuth.test.tsx > useAuth > useAuthCommand > should initialize with Unauthenticated state Authenticated via "oauth-personal". stderr | src/ui/auth/useAuth.test.tsx > useAuth > useAuthCommand > should initialize with Unauthenticated state An update to TestComponent inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */ This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act stdout | src/ui/auth/useAuth.test.tsx > useAuth > useAuthCommand > should authenticate if USE_GEMINI and key is found Authenticated via "gemini-api-key". stdout | src/ui/auth/useAuth.test.tsx > useAuth > useAuthCommand > should authenticate if USE_GEMINI and env key is found Authenticated via "gemini-api-key". Authenticated via "gemini-api-key". stdout | src/ui/auth/useAuth.test.tsx > useAuth > useAuthCommand > should prioritize env key over stored key when both are present Authenticated via "gemini-api-key". Authenticated via "gemini-api-key". stdout | src/ui/auth/useAuth.test.tsx > useAuth > useAuthCommand > should authenticate successfully for valid auth type Authenticated via "oauth-personal". βœ“ src/ui/auth/useAuth.test.tsx (15 tests) 567ms βœ“ src/ui/hooks/useShellHistory.test.ts (7 tests) 793ms βœ“ src/ui/hooks/useInputHistoryStore.test.ts (14 tests) 239ms βœ“ src/ui/utils/computeStats.test.ts (12 tests) 53ms βœ“ src/ui/state/extensions.test.ts (15 tests) 26ms stderr | src/services/BuiltinCommandLoader.test.ts > BuiltinCommandLoader profile > should not include profile command when isDevelopment is false Current logger will be overwritten from Error: at DiagAPI.setLogger (/startdir/src/gemini-cli/node_modules/@opentelemetry/api/src/api/diag.ts:97:23) at /startdir/src/gemini-cli/packages/core/src/telemetry/sdk.ts:80:6 at processTicksAndRejections (node:internal/process/task_queues:103:5) at VitestExecutor.runModule (file:///startdir/src/gemini-cli/node_modules/vite-node/dist/client.mjs:397:4) at VitestExecutor.directRequest (file:///startdir/src/gemini-cli/node_modules/vite-node/dist/client.mjs:375:3) at VitestExecutor.cachedRequest (file:///startdir/src/gemini-cli/node_modules/vite-node/dist/client.mjs:189:11) at VitestExecutor.dependencyRequest (file:///startdir/src/gemini-cli/node_modules/vite-node/dist/client.mjs:239:10) at /startdir/src/gemini-cli/packages/core/src/telemetry/loggers.ts:73:1 at VitestExecutor.runModule (file:///startdir/src/gemini-cli/node_modules/vite-node/dist/client.mjs:397:4) at VitestExecutor.directRequest (file:///startdir/src/gemini-cli/node_modules/vite-node/dist/client.mjs:375:3) Current logger will overwrite one already registered from Error: at DiagAPI.setLogger (/startdir/src/gemini-cli/node_modules/@opentelemetry/api/src/api/diag.ts:97:23) at /startdir/src/gemini-cli/packages/core/src/telemetry/sdk.ts:80:6 at processTicksAndRejections (node:internal/process/task_queues:103:5) at VitestExecutor.runModule (file:///startdir/src/gemini-cli/node_modules/vite-node/dist/client.mjs:397:4) at VitestExecutor.directRequest (file:///startdir/src/gemini-cli/node_modules/vite-node/dist/client.mjs:375:3) at VitestExecutor.cachedRequest (file:///startdir/src/gemini-cli/node_modules/vite-node/dist/client.mjs:189:11) at VitestExecutor.dependencyRequest (file:///startdir/src/gemini-cli/node_modules/vite-node/dist/client.mjs:239:10) at /startdir/src/gemini-cli/packages/core/src/telemetry/loggers.ts:73:1 at VitestExecutor.runModule (file:///startdir/src/gemini-cli/node_modules/vite-node/dist/client.mjs:397:4) at VitestExecutor.directRequest (file:///startdir/src/gemini-cli/node_modules/vite-node/dist/client.mjs:375:3) βœ“ src/ui/components/shared/TextInput.test.tsx (11 tests) 228ms βœ“ src/ui/utils/highlight.test.ts (21 tests) 18ms stdout | src/ui/commands/copyCommand.test.ts > copyCommand > should handle clipboard copy error Clipboard access denied stdout | src/ui/commands/copyCommand.test.ts > copyCommand > should handle non-Error clipboard errors String error βœ“ src/ui/commands/copyCommand.test.ts (11 tests) 139ms βœ“ src/ui/commands/mcpCommand.test.ts (5 tests) 104ms βœ“ src/config/sandboxConfig.test.ts (27 tests) 56ms βœ“ src/ui/components/ProQuotaDialog.test.tsx (8 tests) 244ms βœ“ src/ui/commands/ideCommand.test.ts (8 tests) 70ms βœ“ src/commands/extensions/settings.test.ts (6 tests) 280ms βœ“ src/utils/sessionCleanup.integration.test.ts (5 tests) 112ms βœ“ src/ui/hooks/useReverseSearchCompletion.test.tsx (10 tests) 391ms βœ“ src/ui/components/HistoryItemDisplay.test.tsx (19 tests) 1721ms βœ“ > gemini items (alternateBuffer=true) > should render a truncated gemini item 315ms stdout | src/ui/utils/clipboardUtils.test.ts > clipboardUtils > cleanupOldClipboardImages > should not throw errors Failed to clean up old clipboard images: Error: ENOENT: no such file or directory, scandir '/path/that/does/not/exist/.gemini-clipboard' at Proxy.readdir (node:internal/fs/promises:953:18) at cleanupOldClipboardImages (/startdir/src/gemini-cli/packages/cli/src/ui/utils/clipboardUtils.ts:195:19) at /startdir/src/gemini-cli/packages/cli/src/ui/utils/clipboardUtils.test.ts:69:7 at file:///startdir/src/gemini-cli/node_modules/@vitest/runner/dist/chunk-hooks.js:752:20 { errno: -2, code: 'ENOENT', syscall: 'scandir', path: '/path/that/does/not/exist/.gemini-clipboard' } stdout | src/ui/utils/clipboardUtils.test.ts > clipboardUtils > cleanupOldClipboardImages > should complete without errors on valid directory Failed to clean up old clipboard images: Error: ENOENT: no such file or directory, scandir '.gemini-clipboard' at Proxy.readdir (node:internal/fs/promises:953:18) at cleanupOldClipboardImages (/startdir/src/gemini-cli/packages/cli/src/ui/utils/clipboardUtils.ts:195:19) at /startdir/src/gemini-cli/packages/cli/src/ui/utils/clipboardUtils.test.ts:75:7 at file:///startdir/src/gemini-cli/node_modules/@vitest/runner/dist/chunk-hooks.js:752:20 { errno: -2, code: 'ENOENT', syscall: 'scandir', path: '.gemini-clipboard' } βœ“ src/ui/utils/clipboardUtils.test.ts (29 tests) 96ms stderr | src/services/BuiltinCommandLoader.test.ts > BuiltinCommandLoader profile > should include profile command when isDevelopment is true Current logger will be overwritten from Error: at DiagAPI.setLogger (/startdir/src/gemini-cli/node_modules/@opentelemetry/api/src/api/diag.ts:97:23) at /startdir/src/gemini-cli/packages/core/src/telemetry/sdk.ts:80:6 at processTicksAndRejections (node:internal/process/task_queues:103:5) at VitestExecutor.runModule (file:///startdir/src/gemini-cli/node_modules/vite-node/dist/client.mjs:397:4) at VitestExecutor.directRequest (file:///startdir/src/gemini-cli/node_modules/vite-node/dist/client.mjs:375:3) at VitestExecutor.cachedRequest (file:///startdir/src/gemini-cli/node_modules/vite-node/dist/client.mjs:189:11) at VitestExecutor.dependencyRequest (file:///startdir/src/gemini-cli/node_modules/vite-node/dist/client.mjs:239:10) at /startdir/src/gemini-cli/packages/core/src/telemetry/loggers.ts:73:1 at VitestExecutor.runModule (file:///startdir/src/gemini-cli/node_modules/vite-node/dist/client.mjs:397:4) at VitestExecutor.directRequest (file:///startdir/src/gemini-cli/node_modules/vite-node/dist/client.mjs:375:3) Current logger will overwrite one already registered from Error: at DiagAPI.setLogger (/startdir/src/gemini-cli/node_modules/@opentelemetry/api/src/api/diag.ts:97:23) at /startdir/src/gemini-cli/packages/core/src/telemetry/sdk.ts:80:6 at processTicksAndRejections (node:internal/process/task_queues:103:5) at VitestExecutor.runModule (file:///startdir/src/gemini-cli/node_modules/vite-node/dist/client.mjs:397:4) at VitestExecutor.directRequest (file:///startdir/src/gemini-cli/node_modules/vite-node/dist/client.mjs:375:3) at VitestExecutor.cachedRequest (file:///startdir/src/gemini-cli/node_modules/vite-node/dist/client.mjs:189:11) at VitestExecutor.dependencyRequest (file:///startdir/src/gemini-cli/node_modules/vite-node/dist/client.mjs:239:10) at /startdir/src/gemini-cli/packages/core/src/telemetry/loggers.ts:73:1 at VitestExecutor.runModule (file:///startdir/src/gemini-cli/node_modules/vite-node/dist/client.mjs:397:4) at VitestExecutor.directRequest (file:///startdir/src/gemini-cli/node_modules/vite-node/dist/client.mjs:375:3) βœ“ src/utils/deepMerge.test.ts (17 tests) 47ms βœ“ src/ui/hooks/useIdeTrustListener.test.tsx (5 tests) 245ms βœ“ src/services/prompt-processors/atFileProcessor.test.ts (11 tests) 149ms βœ“ src/ui/components/MultiFolderTrustDialog.test.tsx (8 tests) 573ms βœ“ src/ui/utils/textUtils.test.ts (10 tests) 16ms βœ“ src/ui/hooks/useSessionBrowser.test.ts (7 tests) 72ms ❯ src/services/BuiltinCommandLoader.test.ts (9 tests | 2 failed) 10109ms βœ“ BuiltinCommandLoader > should correctly pass the config object to restore command factory 40ms βœ“ BuiltinCommandLoader > should filter out null command definitions returned by factories 15ms βœ“ BuiltinCommandLoader > should handle a null config gracefully when calling factories 1ms βœ“ BuiltinCommandLoader > should return a list of all loaded commands 1ms βœ“ BuiltinCommandLoader > should include permissions command when folder trust is enabled 0ms βœ“ BuiltinCommandLoader > should exclude permissions command when folder trust is disabled 0ms βœ“ BuiltinCommandLoader > should include policies command when message bus integration is enabled 21ms Γ— BuiltinCommandLoader profile > should not include profile command when isDevelopment is false 5018ms β†’ Test timed out in 5000ms. If this is a long-running test, pass a timeout value as the last argument or configure it globally with "testTimeout". Γ— BuiltinCommandLoader profile > should include profile command when isDevelopment is true 5012ms β†’ Test timed out in 5000ms. If this is a long-running test, pass a timeout value as the last argument or configure it globally with "testTimeout". βœ“ src/commands/extensions/disable.test.ts (12 tests) 130ms βœ“ src/config/extensions/github_fetch.test.ts (8 tests) 26ms βœ“ src/ui/hooks/useKeypress.test.tsx (22 tests) 240ms βœ“ src/ui/components/DebugProfiler.test.tsx (13 tests) 283ms βœ“ src/commands/extensions/update.test.ts (8 tests) 162ms βœ“ src/ui/hooks/useInputHistory.test.ts (11 tests) 168ms βœ“ src/ui/hooks/useEditorSettings.test.tsx (10 tests) 223ms βœ“ src/ui/hooks/useGitBranchName.test.tsx (7 tests) 147ms stderr | src/config/config.integration.test.ts > Configuration Integration Tests > Approval Mode Integration Tests > 'should parse --approval-mode=auto_edi…' [MSW] Warning: intercepted a request without a matching request handler: β€’ GET data:application/octet-stream;base64,AGFzbQEAAAABugM3YAF/AGACf38AYAF/AX9gA39/fwBgAn98AGACf38Bf2ADf39/AX9gBH9/f30BfWADf398AGAAAGAEf39/fwBgAX8BfGACf38BfGAFf39/f38Bf2AAAX9gA39/fwF9YAZ/f31/fX8AYAV/f39/fwBgAn9/AX1gBX9/f319AX1gAX8BfWADf35/AX5gB39/f39/f38AYAZ/f39/f38AYAR/f39/AX9gBn9/f319fQF9YAR/f31/AGADf399AX1gBn98f39/fwF/YAR/fHx/AGACf30AYAh/f39/f39/fwBgDX9/f39/f39/f39/f38AYAp/f39/f39/f39/AGAFf39/f38BfGAEfHx/fwF9YA1/fX1/f399fX9/f39/AX9gB39/f319f38AYAJ+fwF/YAN/fX0BfWABfAF8YAN/fHwAYAR/f319AGAHf39/fX19fQF9YA1/fX99f31/fX19fX1/AX9gC39/f39/f399fX19AX9gCH9/f39/f319AGAEf39+fgBgB39/f39/f38Bf2ACfH8BfGAFf398fH8AYAN/f38BfGAEf39/fABgA39/fQBgBn9/fX99fwF/ArUBHgFhAWEAHwFhAWIAAwFhAWMACQFhAWQAFgFhAWUAEQFhAWYAIAFhAWcAAAFhAWgAIQFhAWkAAwFhAWoAAAFhAWsAFwFhAWwACgFhAW0ABQFhAW4AAwFhAW8AAQFhAXAAFwFhAXEABgFhAXIAAAFhAXMAIgFhAXQACgFhAXUADQFhAXYAFgFhAXcAAgFhAXgAAwFhAXkAGAFhAXoAAgFhAUEAAQFhAUIAEQFhAUMAAQFhAUQAAAOiAqACAgMSBwcACRkDAAoRBgYKEwAPDxMBBiMTCgcHGgMUASQFJRQHAwMKCgMmAQYYDxobFAAKBw8KBwMDAgkCAAAFGwACBwIHBgIDAQMIDAABKAkHBQURACkZASoAAAIrLAIALQcHBy4HLwkFCgMCMA0xAgMJAgACAQYKAQIBBQEACQIFAQEABQAODQ0GFQIBHBUGAgkCEAAAAAUyDzMMBQYINAUCAwUODg41AgMCAgIDBgICNgIBDAwMAQsLCwsLCx0CAAIAAAABABABBQICAQMCEgMMCwEBAQEBAQsLAQICAwICAgICAgIDAgIICAEICAgEBAQEBAQEBAQABAQABAQEBAAE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GiABQQA2AvADIAFCADcC6AMgAigC7AMiAyACKALoAyIERwRAIAMgBGsiBEEASA0FIAEgBBAeIgM2AuwDIAEgAzYC6AMgASADIARqNgLwAyACKALoAyIEIAIoAuwDIghHBEADQCADIAQoAgA2AgAgA0EEaiEDIARBBGoiBCAIRw0ACwsgASADNgLsAwsgASACKQL0AzcC9AMgASACKAKEBDYChAQgASACKQL8AzcC/AMgAUEANgLkAwsgBSABNgIAIAEgADYC5AMLIAZBAWohBiAFQQRqIgUgB0cNAAsLDwsQAgALUAACQAJAAkACQAJAIAIOBAQAAQIDCyAAIAEgAUEwahBDDwsgACABIAFBMGogAxBEDwsgACABIAFBMGoQQg8LECQACyAAIAEgAUEwaiADEEULcAIBfwF9IwBBEGsiBCQAIARBCGogACABQQJ0QdwlaigCACACEDZDAADAfyEFAkACQAJAIAQtAAxBAWsOAgABAgsgBCoCCCEFDAELIAQqAgggA5RDCtcjPJQhBQsgBEEQaiQAIAVDAAAAACAFIAVbGwt5AgF/AX0jAEEQayIDJAAgA0EIaiAAIAFBAnRB7CVqKAIAIAIQU0MAAMB/IQQCQAJAAkAgAy0ADEEBaw4CAAECCyADKgIIIQQMAQsgAyoCCEMAAAAAlEMK1yM8lCEECyADQRBqJAAgBEMAAAAAl0MAAAAAIAQgBFsbC1QAAkACQAJAAkACQCACDgQEAAECAwsgACABIAFBwgBqEEMPCyAAIAEgAUHCAGogAxBEDwsgACABIAFBwgBqEEIPCxAkAAsgACABIAFBwgBqIAMQRQsvACAAIAJFQQF0IgIgASADEGAgACACIAEQS5IgACACIAEgAxB/IAAgAiABEFKSkgvOAQIDfwJ9IwBBEGsiAyQAQQEhBCADQQhqIABB/ABqIgUgACABQQF0akH2AGoiAS8BABAfAkACQCADKgIIIgcgAioCACIGXARAIAcgB1sEQCACLQAEIQIMAgsgBiAGXCEECyACLQAEIQIgBEUNACADLQAMIAJB/wFxRg0BCyAFIAEgBiACEDkDQCAALQAAIgFBBHENASAAIAFBBHI6AAAgACgCECIBBEAgACABEQAACyAAQYCAgP4HNgKcASAAKALkAyIADQALCyADQRBqJAALzgECA38CfSMAQRBrIgMk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AWsOAgABAgsgBCoCCCEFDAELIAQqAgggA5RDCtcjPJQhBQsgBEEQaiQAIAVDAAAAACAFIAVbGwscACAAIAFBCCACpyACQiCIpyADpyADQiCIpxAVCwUAEFgACzkAIABFBEBBAA8LAn8gAUGAf3FBgL8DRiABQf8ATXJFBEBB/DtBGTYCAEF/DAELIAAgAToAAEEBCwvEAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABQQlrDhIACgsMCgsCAwQFDAsMDAoLBwgJCyACIAIoAgAiAUEEajYCACAAIAEoAgA2AgAPCwALIAIgAigCACIBQQRqNgIAIAAgATIBADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATMBADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATAAADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATEAADcDAA8LAAsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKwMAOQMADwsgACACIAMRAQALDwsgAiACKAIAIgFBBGo2AgAgACABNAIANwMADwsgAiACKAIAIgFBBGo2AgAgACABNQIANwMADwsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKQMANwMAC84BAgN/An0jAEEQayIDJABBASEEIANBCGogAEH8AGoiBSAAIAFBAXRqQegAaiIBLwEAEB8CQAJAIAMqAggiByACKgIAIgZcBEAgByAHWwRAIAItAAQhAgwCCyAGIAZcIQQLIAItAAQhAiAERQ0AIAMtAAwgAkH/AXFGDQELIAUgASAGIAIQOQNAIAAtAAAiAUEEcQ0BIAAgAUEEcjoAACAAKAIQIgEEQCAAIAERAAALIABBgICA/gc2ApwBIAAoAuQDIgANAAsLIANBEGokAAtdAQR/IAAoAgAhAgNAIAIsAAAiAxBXBEBBfyEEIAAgAkEBaiICNgIAIAFBzJmz5gBNBH9BfyADQTBrIgMgAUEKbCIEaiADIARB/////wdzShsFIAQLIQEMAQsLIAELrhQCEn8BfiMAQdAAayIIJAAgCCABNgJMIAhBN2ohFyAIQThqIRQCQAJAAkACQANAIAEhDSAHIA5B/////wdzSg0BIAcgDmohDgJAAkACQCANIgctAAAiCQRAA0ACQAJAIAlB/wFxIgFFBEAgByEBDAELIAFBJUcNASAH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IQEgAEIANwIEIAAgATYCACABIAA2AgQgAkEQaiQAIAALGwEBfyAABEAgACgCACIBBEAgARAjCyAAECMLC0kBAn9BBBAeIQFBIBAeIgBBADYCHCAAQoCAgICAgIDAPzcCFCAAQgA3AgwgAEEAOgAIIABBAzYCBCAAQQA2AgAgASAANgIAIAELIAAgAkEFR0EAIAIbRQRAQbgwIAMgBBBJDwsgAyAEEHALIgEBfiABIAKtIAOtQiCGhCAEIAARFQAiBUIgiKckASAFpwuoAQEFfyAAKAJUIgMoAgAhBSADKAIEIgQgACgCFCAAKAIcIgdrIgYgBCAGSRsiBgRAIAUgByAGECsaIAMgAygCACAGaiIFNgIAIAMgAygCBCAGayIENgIECyAEIAIgAiAESxsiBARAIAUgASAEECsaIAMgAygCACAEaiIFNgIAIAMgAygCBCAEazYCBAsgBUEAOgAAIAAgACgCLCIBNgIcIAAgATYCFCACCwQAQgALBABBAAuKBQIGfgJ/IAEgASgCAEEHakF4cSIBQRBqNgIAIAAhCSABKQMAIQMgASkDCCEGIwBBIGsiCCQAAkAgBkL///////////8AgyIEQoCAgICAgMCAPH0gBEKAgICAgIDA/8MAfVQEQCAGQgSGIANCPIiEIQQgA0L//////////w+DIgNCgYCAgICAgIAIWgRAIARCgYCAgICAgIDAAHwhAgwCCyAEQoCAgICAgICAQH0hAiADQoCAgICAgICACFINASACIARCAYN8IQIMAQsgA1AgBEKAgICAgIDA//8AVCAEQoCAgICAgMD//wBRG0UEQCAGQgSGIANCPIiEQv////////8Dg0KAgICAgICA/P8AhCECDAELQoCAgICAgID4/wAhAiAEQv///////7//wwBWDQBCACECIARCMIinIgBBkfcASQ0AIAMhAiAGQv///////z+DQoCAgICAgMAAhCIFIQcCQCAAQYH3AGsiAUHAAHEEQCACIAFBQGqthiEHQgAhAgwBCyABRQ0AIAcgAa0iBIYgAkHAACABa62IhCEHIAIgBIYhAgsgCCACNwMQIAggBzcDGAJAQYH4ACAAayIAQcAAcQRAIAUgAEFAaq2IIQNCACEFDAELIABFDQAgBUHAACAAa62GIAMgAK0iAoiEIQMgBSACiCEFCyAIIAM3AwAgCCAF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ASAAKAIAIQAgASACQQFxBH8gASgCACAAaigCAAUgAAsRCwALYQECfyMAQRBrIgIkACABIAAoAgQiA0EBdWohASAAKAIAIQAgAiABIANBAXEEfyABKAIAIABqKAIABSAACxEBAEEQEB4iACACKQMINwMIIAAgAikDADcDACACQRBqJAAgAAtjAQJ/IwBBEGsiAyQAIAEgACgCBCIEQQF1aiEBIAAoAgAhACADIAEgAiAEQQFxBH8gASgCACAAaigCAAUgAAsRAwBBEBAeIgAgAykDCDcDCCAAIAMpAwA3AwAgA0EQaiQAIAALNwEBfyABIAAoAgQiA0EBdWohASAAKAIAIQAgASACIANBAXEEfyABKAIAIABqKAIABSAACxEEAAs5AQF/IAEgACgCBCIEQQF1aiEBIAAoAgAhACABIAIgAyAEQQFxBH8gASgCACAAaigCAAUgAAsRCAALCQAgASAAEQIACwUAQcM7Cw8AIAEgACgCAGogAjYCAAsNACABIAAoAgBqKAIACxgBAX9BEBAeIgBCADcDCCAAQQA2AgAgAAsYAQF/QRAQHiIAQgA3AwAgAEIANwMIIAALDABBMBAeQQBBMBAqCzcBAX8gASAAKAIEIgNBAXVqIQEgACgCACEAIAEgAiADQQFxBH8gASgCACAAaigCAAUgAAsRHgALBQBBvjsLIQAgACABKAIAIAEgASwAC0EASBtBuzsgAigCABAQNgIACyoBAX9BDBAeIgFBADoABCABIAAoAgA2AgggAEEANgIAIAFB2Cc2AgAgAQsFAEG7OwsFAEG4OwshACAAIAEoAgAgASABLAALQQBIG0GkOyACKAIAEBA2AgAL2AEBBH8jAEEgayIDJAAgASgCACIEQfD///8HSQRAAkACQCAEQQtPBEAgBEEPckEBaiIFEB4hBiADIAVBgICAgHhyNgIQIAMgBjYCCCADIAQ2AgwgBCAGaiEFDAELIAMgBDoAEyADQQhqIgYgBGohBSAERQ0BCyAGIAFBBGogBBArGgsgBUEAOgAAIAMgAjYCACADQRhqIANBCGogAyAAEQMAIAMoAhgQHSADKAIYIgAQBiADKAIAEAYgAywAE0EASARAIAMoAggQIwsgA0EgaiQAIAAPCxACAAsqAQF/QQwQHiIBQQA6AAQgASAAKAIANgIIIABBADYCACABQeAmNgIA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AkEIaiAIIAYQHyACIAcgAC8AABAfQQEhAyACKgIIIgogAioCACILXAR/IAogClsNAyALIAtcBSADC0UNAiACLQAMIAItAARHDQILIABBAmohAEEBIQMgBCEGQQEhBCAGRQ0ACyABLwB6IgBBB3FFBEAgBS0AekEHcUUNAgsgCCAAECAiCiAHIAUvAHoQICILWw0BIAogClsNACALIAtcDQELIAFBFGogBUEUakHoABArGiABQfwAaiAFQfwAahCgAQNAIAEtAAAiAEEEcQ0BIAEgAEEEcjoAACABKAIQIgAEQCABIAARAAALIAFBgICA/gc2ApwBIAEoAuQDIgENAAsLIAJBEGokAAvGAwEEfyMAQaAEayICJAAgACgCBCEBIABBADYCBCABBEAgASABKAIAKAIEEQAACyAAKAIIIQEgAEEANgIIIAEEQCABIAEoAgAoAgQRAAALAkAgACgCACIAKALoAyAAKALsA0YEQCAAKALkAw0BIAAgAkEYaiAAKAL0AxBcIgEpAgA3AgAgACABKAIQNgIQIAAgASkCCDcCCCAAQRRqIAFBFGpB6AAQKxogACABKQKMATcCjAEgACABKQKEATcChAEgACABKQJ8NwJ8IAEoApQBIQQgAUEANgKUASAAKAKUASEDIAAgBDYClAEgAwRAIAMQWwsgAEGYAWogAUGYAWpB0AIQKxogACgC6AMiAwRAIAAgAzYC7AMgAxAjCyAAIAEoAugDNgLoAyAAIAEoAuwDNgLsAyAAIAEoAvADNgLwAyABQQA2AvADIAFCADcC6AMgACABKQL8AzcC/AMgACABKQL0AzcC9AMgACABKAKEBDYChAQgASgClAEhACABQQA2ApQBIAAEQCAAEFsLIAJBoARqJAAPCyACQfAcNgIQIABBBUHYJSACQRBqECwQJAALIAJB5hE2AgAgAEEFQdglIAIQLBAkAAsLAEEMEB4gABCiAQsLAEEMEB5BABCiAQsNACAAKAIALQAIQQFxCwoAIAAoAgAoAhQLGQAgAUH/AXEEQBACAAsgACgCACgCEEEBcQsYACAAKAIAIgAgAC0ACEH+AXEgAXI6AAgLJgAgASAAKAIAIgAoAhRHBEAgACABNgIUIAAgACgCDEEBajYCDAsLkgEBAn8jAEEQayICJAAgACgCACEAIAFDAAAAAGAEQCABIAAqAhhcBEAgACABOAIYIAAgACgCDEEBajYCDAsgAkEQaiQADwsgAkGIFDYCACMAQRBrIgMkACADIAI2AgwCQCAARQRAQbgwQdglIAIQSRoMAQsgAEEAQQVB2CUgAiAAKAIEEQ0AGgsgA0EQaiQAECQACz8AIAFB/wFxRQRAIAIgACgCACIAKAIQIgFBAXFHBEAgACABQX5xIAJyNgIQIAAgACgCDEEBajYCDAsPCxACAAsL4CYjAEGACAuBHk9ubHkgbGVhZiBub2RlcyB3aXRoIGN1c3RvbSBtZWFzdXJlIGZ1bmN0aW9ucyBzaG91bGQgbWFudWFsbHkgbWFyayB0aGVtc2VsdmVzIGFzIGRpcnR5AGlzRGlydHkAbWFya0RpcnR5AGRlc3Ryb3kAc2V0RGlzcGxheQBnZXREaXNwbGF5AHNldEZsZXgALSsgICAwWDB4AC0wWCswWCAwWC0weCsweCAweABzZXRGbGV4R3JvdwBnZXRGbGV4R3JvdwBzZXRPdmVyZmxvdwBnZXRPdmVyZmxvdwBoYXNOZXdMYXlvdXQAY2FsY3VsYXRlTGF5b3V0AGdldENvbXB1dGVkTGF5b3V0AHVuc2lnbmVkIHNob3J0AGdldENoaWxkQ291bnQAdW5zaWduZWQgaW50AHNldEp1c3RpZnlDb250ZW50AGdldEp1c3RpZnlDb250ZW50AGF2YWlsYWJsZUhlaWdodCBpcyBpbmRlZmluaXRlIHNvIGhlaWdodFNpemluZ01vZGUgbXVzdCBiZSBTaXppbmdNb2RlOjpNYXhDb250ZW50AGF2YWlsYWJsZVdpZHRoIGlzIGluZGVmaW5pdGUgc28gd2lkdGhTaXppbmdNb2RlIG11c3QgYmUgU2l6aW5nTW9kZTo6TWF4Q29udGVudABzZXRBbGlnbkNvbnRlbnQAZ2V0QWxpZ25Db250ZW50AGdldFBhcmVudABpbXBsZW1lbnQAc2V0TWF4SGVpZ2h0UGVyY2VudABzZXRIZWlnaHRQZXJjZW50AHNldE1pbkhlaWdodFBlcmNlbnQAc2V0RmxleEJhc2lzUGVyY2VudABzZXRHYXBQZXJjZW50AHNldFBvc2l0aW9uUGVyY2VudABzZXRNYXJnaW5QZXJjZW50AHNldE1heFdpZHRoUGVyY2VudABzZXRXaWR0aFBlcmNlbnQAc2V0TWluV2lkdGhQZXJjZW50AHNldFBhZGRpbmdQZXJjZW50AGhhbmRsZS50eXBlKCkgPT0gU3R5bGVWYWx1ZUhhbmRsZTo6VHlwZTo6UG9pbnQgfHwgaGFuZGxlLnR5cGUoKSA9PSBTdHlsZVZhbHVlSGFuZGxlOjpUeXBlOjpQZXJjZW50AGNyZWF0ZURlZmF1bHQAdW5pdAByaWdodABoZWlnaHQAc2V0TWF4SGVpZ2h0AGdldE1heEhlaWdodABzZXRIZWlnaHQAZ2V0SGVpZ2h0AHNldE1pbkhlaWdodABnZXRNaW5IZWlnaHQAZ2V0Q29tcHV0ZWRIZWlnaHQAZ2V0Q29tcHV0ZWRSaWdodABsZWZ0AGdldENvbXB1dGVkTGVmdAByZXNldABfX2Rlc3RydWN0AGZsb2F0AHVpbnQ2NF90AHVzZVdlYkRlZmF1bHRzAHNldFVzZVdlYkRlZmF1bHRzAHNldEFsaWduSXRlbXMAZ2V0QWxpZ25JdGVtcwBzZXRGbGV4QmFzaXMAZ2V0RmxleEJhc2lzAENhbm5vdCBnZXQgbGF5b3V0IHByb3BlcnRpZXMgb2YgbXVsdGktZWRnZSBzaG9ydGhhbmRzAHNldFBvaW50U2NhbGVGYWN0b3IATWVhc3VyZUNhbGxiYWNrV3JhcHBlcgBEaXJ0aWVkQ2FsbGJhY2tXcmFwcGVyAENhbm5vdCByZXNldCBhIG5vZGUgc3RpbGwgYXR0YWNoZWQgdG8gYSBvd25lcgBzZXRCb3JkZXIAZ2V0Qm9yZGVyAGdldENvbXB1dGVkQm9yZGVyAGdldE51bWJlcgBoYW5kbGUudHlwZSgpID09IFN0eWxlVmFsdWVIYW5kbGU6OlR5cGU6Ok51bWJlcgB1bnNpZ25lZCBjaGFyAHRvcABnZXRDb21wdXRlZFRvcABzZXRGbGV4V3JhcABnZXRGbGV4V3JhcABzZXRHYXAAZ2V0R2FwACVwAHNldEhlaWdodEF1dG8Ac2V0RmxleEJhc2lzQXV0bwBzZXRQb3NpdGlvbkF1dG8Ac2V0TWFyZ2luQXV0bwBzZXRXaWR0aEF1dG8AU2NhbGUgZmFjdG9yIHNob3VsZCBub3QgYmUgbGVzcyB0aGFuIHplcm8Ac2V0QXNwZWN0UmF0aW8AZ2V0QXNwZWN0UmF0aW8Ac2V0UG9zaXRpb24AZ2V0UG9zaXRpb24Abm90aWZ5T25EZXN0cnVjdGlvbgBzZXRGbGV4RGlyZWN0aW9uAGdldEZsZXhEaXJlY3Rpb24Ac2V0RGlyZWN0aW9uAGdldERpcmVjdGlvbgBzZXRNYXJnaW4AZ2V0TWFyZ2luAGdldENvbXB1dGVkTWFyZ2luAG1hcmtMYXlvdXRTZWVuAG5hbgBib3R0b20AZ2V0Q29tcHV0ZWRCb3R0b20AYm9vbABlbXNjcmlwdGVuOjp2YWwAc2V0RmxleFNocmluawBnZXRGbGV4U2hyaW5rAHNldEFsd2F5c0Zvcm1zQ29udGFpbmluZ0Jsb2NrAE1lYXN1cmVDYWxsYmFjawBEaXJ0aWVkQ2FsbGJhY2sAZ2V0TGVuZ3RoAHdpZHRoAHNldE1heFdpZHRoAGdldE1heFdpZHRoAHNldFdpZHRoAGdldFdpZHRoAHNldE1pbldpZHRoAGdldE1pbldpZHRoAGdldENvbXB1dGVkV2lkdGgAcHVzaAAvaG9tZS9ydW5uZXIvd29yay95b2dhL3lvZ2EvamF2YXNjcmlwdC8uLi95b2dhL3N0eWxlL1NtYWxsVmFsdWVCdWZmZXIuaAAvaG9tZS9ydW5uZXIvd29yay95b2dhL3lvZ2EvamF2YXNjcmlwdC8uLi95b2dhL3N0eWxlL1N0eWxlVmFsdWVQb29sLmgAdW5zaWduZWQgbG9uZwBzZXRCb3hTaXppbmcAZ2V0Qm94U2l6aW5nAHN0ZDo6d3N0cmluZwBzdGQ6OnN0cmluZwBzdGQ6OnUxNnN0cmluZwBzdGQ6OnUzMnN0cmluZwBzZXRQYWRkaW5nAGdldFBhZGRpbmcAZ2V0Q29tcHV0ZWRQYWRkaW5nAFRyaWVkIHRvIGNvbnN0cnVjdCBZR05vZGUgd2l0aCBudWxsIGNvbmZpZwBBdHRlbXB0aW5nIHRvIGNvbnN0cnVjdCBOb2RlIHdpdGggbnVsbCBjb25maWcAY3JlYXRlV2l0aENvbmZpZwBpbmYAc2V0QWxpZ25TZWxmAGdldEFsaWduU2VsZgBTaXplAHZhbHVlAFZhbHVlAGNyZWF0ZQBtZWFzdXJlAHNldFBvc2l0aW9uVHlwZQBnZXRQb3NpdGlvblR5cGUAaXNSZWZlcmVuY2VCYXNlbGluZQBzZXRJc1JlZmVyZW5jZUJhc2VsaW5lAGNvcHlTdHlsZQBkb3VibGUATm9kZQBleHRlbmQAaW5zZXJ0Q2hpbGQAZ2V0Q2hpbGQAcmVtb3ZlQ2hpbGQAdm9pZABzZXRFeHBlcmltZW50YWxGZWF0dXJlRW5hYmxlZABpc0V4cGVyaW1lbnRhbEZlYXR1cmVFbmFibGVkAGRpcnRpZWQAQ2Fubm90IHJlc2V0IGEgbm9kZSB3aGljaCBzdGlsbCBoYXMgY2hpbGRyZW4gYXR0YWNoZWQAdW5zZXRNZWFzdXJlRnVuYwB1bnNldERpcnRpZWRGdW5jAHNldEVycmF0YQBnZXRFcnJhdGEATWVhc3VyZSBmdW5jdGlvbiByZXR1cm5lZCBhbiBpbnZhbGlkIGRpbWVuc2lvbiB0byBZb2dhOiBbd2lkdGg9JWYsIGhlaWdodD0lZl0ARXhwZWN0IGN1c3RvbSBiYXNlbGluZSBmdW5jdGlvbiB0byBub3QgcmV0dXJuIE5hTgBOQU4ASU5GAGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHNob3J0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBzaG9ydD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBpbnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGZsb2F0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50OF90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQ4X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50MzJfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50MzJfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8Y2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgY2hhcj4Ac3RkOjpiYXNpY19zdHJpbmc8dW5zaWduZWQgY2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8c2lnbmVk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 If you still wish to intercept this unhandled request, please create a request handler for it. Read more: https://mswjs.io/docs/http/intercepting-requests stdout | src/commands/mcp/remove.test.ts > mcp remove command > unit tests with mocks > should remove a server from project settings Server "test-server" removed from project settings. βœ“ src/commands/mcp/remove.test.ts (6 tests) 190ms βœ“ src/ui/components/messages/ToolMessage.test.tsx (12 tests) 1044ms βœ“ > renders basic tool information 406ms βœ“ src/ui/components/messages/CompressionMessage.test.tsx (8 tests) 533ms βœ“ > pending state > renders pending message when compression is in progress 320ms stdout | src/ui/hooks/useIncludeDirsTrust.test.tsx > useIncludeDirsTrust > when folder trust is enabled and workspace is trusted > should add trusted dirs, collect untrusted errors, and open dialog for undefined Creating custom dialog with undecidedDirs: [ '/undefined' ] βœ“ src/ui/hooks/useIncludeDirsTrust.test.tsx (6 tests) 268ms βœ“ src/ui/themes/theme.test.ts (14 tests) 16ms βœ“ src/ui/components/PermissionsModifyTrustDialog.test.tsx (7 tests) 736ms βœ“ src/ui/App.test.tsx (11 tests) 527ms βœ“ src/commands/extensions/enable.test.ts (7 tests) 88ms βœ“ src/ui/hooks/useLoadingIndicator.test.tsx (6 tests) 137ms βœ“ src/ui/contexts/SessionContext.test.tsx (4 tests) 155ms βœ“ src/ui/hooks/useHistoryManager.test.ts (8 tests) 164ms βœ“ src/ui/components/messages/ToolConfirmationMessage.test.tsx (12 tests) 380ms βœ“ src/ui/components/ThemeDialog.test.tsx (9 tests) 2502ms βœ“ ThemeDialog Snapshots > should render correctly in theme selection mode 1057ms βœ“ ThemeDialog Snapshots > should render correctly in scope selector mode 310ms stdout | src/commands/extensions/install.test.ts > handleInstall > should install an extension from a http source Extension "http-extension" installed successfully and enabled. stdout | src/commands/extensions/install.test.ts > handleInstall > should install an extension from a https source Extension "https-extension" installed successfully and enabled. stdout | src/commands/extensions/install.test.ts > handleInstall > should install an extension from a git source Extension "git-extension" installed successfully and enabled. stdout | src/commands/extensions/install.test.ts > handleInstall > should install an extension from a sso source Extension "sso-extension" installed successfully and enabled. stdout | src/commands/extensions/install.test.ts > handleInstall > should install an extension from a local path Extension "local-extension" installed successfully and enabled. stderr | src/ui/themes/theme-manager.test.ts > ThemeManager > when loading a theme from a file > should not load a theme if the file does not exist Theme file at "./my-theme.json" is outside your home directory. Only load themes from trusted sources. stderr | src/ui/themes/theme-manager.test.ts > ThemeManager > when loading a theme from a file > should not load a theme from a file with invalid JSON Theme file at "./my-theme.json" is outside your home directory. Only load themes from trusted sources. βœ“ src/commands/extensions/install.test.ts (8 tests) 37ms βœ“ src/ui/themes/theme-manager.test.ts (12 tests) 21ms βœ“ src/ui/components/ToolStatsDisplay.test.tsx (5 tests) 282ms βœ“ src/ui/components/Notifications.test.tsx (8 tests) 226ms βœ“ src/utils/sandboxUtils.test.ts (17 tests) 34ms βœ“ src/ui/components/StatusDisplay.test.tsx (12 tests) 190ms βœ“ src/gemini_cleanup.test.tsx (1 test) 662ms βœ“ gemini.tsx main function cleanup > should log error when cleanupExpiredSessions fails 660ms βœ“ src/commands/extensions/link.test.ts (5 tests) 47ms ❯ src/config/config.integration.test.ts (14 tests | 1 failed) 10554ms βœ“ Configuration Integration Tests > File Filtering and Configuration > 'should load default file filtering se…' 13ms βœ“ Configuration Integration Tests > File Filtering and Configuration > 'should load custom file filtering set…' 1ms βœ“ Configuration Integration Tests > File Filtering and Configuration > 'should respect file filtering setting…' 1ms βœ“ Configuration Integration Tests > File Filtering and Configuration > 'should handle empty fileFiltering obj…' 1ms βœ“ Configuration Integration Tests > Real-world Configuration Scenarios > 'should handle a security-focused conf…' 1ms βœ“ Configuration Integration Tests > Real-world Configuration Scenarios > 'should handle a CI/CD environment con…' 0ms βœ“ Configuration Integration Tests > Checkpointing Configuration > should enable checkpointing when the setting is true 1ms Γ— Configuration Integration Tests > Approval Mode Integration Tests > 'should parse --approval-mode=auto_edi…' 10005ms β†’ Hook timed out in 10000ms. If this is a long-running hook, pass a timeout value as the last argument or configure it globally with "hookTimeout". βœ“ Configuration Integration Tests > Approval Mode Integration Tests > 'should parse --approval-mode=yolo cor…' 337ms βœ“ Configuration Integration Tests > Approval Mode Integration Tests > 'should parse --approval-mode=default …' 27ms βœ“ Configuration Integration Tests > Approval Mode Integration Tests > 'should parse legacy --yolo flag corre…' 19ms βœ“ Configuration Integration Tests > Approval Mode Integration Tests > 'should handle no approval mode argume…' 19ms βœ“ Configuration Integration Tests > Approval Mode Integration Tests > 'should reject invalid approval mode v…' 60ms βœ“ Configuration Integration Tests > Approval Mode Integration Tests > 'should reject conflicting --yolo and …' 65ms βœ“ src/ui/utils/MarkdownDisplay.test.tsx (30 tests) 1568ms βœ“ > with 'Windows' line endings > renders a fenced code block without a language 574ms βœ“ src/ui/utils/updateCheck.test.ts (10 tests) 59ms βœ“ src/utils/commands.test.ts (12 tests) 40ms βœ“ src/ui/hooks/useHookDisplayState.test.ts (6 tests) 181ms βœ“ src/commands/mcp/list.test.ts (4 tests) 21ms βœ“ src/ui/components/shared/RadioButtonSelect.test.tsx (5 tests) 199ms βœ“ src/ui/components/DialogManager.test.tsx (18 tests) 491ms βœ“ src/ui/contexts/MouseContext.test.tsx (15 tests) 172ms βœ“ src/ui/components/Header.test.tsx (9 tests) 328ms βœ“ src/config/keyBindings.test.ts (6 tests) 56ms βœ“ src/config/settings_repro.test.ts (1 test) 51ms βœ“ src/utils/cleanup.test.ts (8 tests) 299ms βœ“ src/ui/components/views/McpStatus.test.tsx (13 tests) 529ms βœ“ src/ui/utils/terminalSetup.test.ts (9 tests) 28ms βœ“ src/ui/utils/mouse.test.ts (17 tests) 12ms βœ“ src/ui/components/AppHeader.test.tsx (8 tests) 984ms βœ“ > should render the banner with default text 407ms βœ“ src/ui/IdeIntegrationNudge.test.tsx (6 tests) 2392ms βœ“ IdeIntegrationNudge > renders correctly with default options 463ms βœ“ IdeIntegrationNudge > handles "Yes" selection 377ms βœ“ IdeIntegrationNudge > handles "No" selection 370ms βœ“ IdeIntegrationNudge > handles "Dismiss" selection 657ms βœ“ src/ui/components/messages/ShellToolMessage.test.tsx (3 tests) 366ms stdout | src/ui/commands/aboutCommand.test.ts > aboutCommand > should call addItem with all version info AboutCommand: Retrieved cached Google account { cachedAccount: 'test-email@example.com' } stdout | src/ui/commands/aboutCommand.test.ts > aboutCommand > should show the correct sandbox environment variable AboutCommand: Retrieved cached Google account { cachedAccount: 'test-email@example.com' } stdout | src/ui/commands/aboutCommand.test.ts > aboutCommand > should show sandbox-exec profile when applicable AboutCommand: Retrieved cached Google account { cachedAccount: 'test-email@example.com' } stdout | src/ui/commands/aboutCommand.test.ts > aboutCommand > should not show ide client when it is not detected AboutCommand: Retrieved cached Google account { cachedAccount: 'test-email@example.com' } βœ“ src/ui/hooks/useConsoleMessages.test.tsx (7 tests) 191ms βœ“ src/ui/commands/aboutCommand.test.ts (5 tests) 119ms βœ“ src/utils/readStdin.test.ts (6 tests) 96ms βœ“ src/ui/components/messages/Todo.test.tsx (14 tests) 337ms βœ“ src/ui/components/messages/ToolResultDisplay.test.tsx (8 tests) 803ms βœ“ ToolResultDisplay > truncates very long string results 574ms βœ“ src/ui/components/EditorSettingsDialog.test.tsx (5 tests) 340ms βœ“ src/config/extension-manager-skills.test.ts (3 tests) 687ms βœ“ ExtensionManager skills validation > should emit a warning during install if skills directory is not empty but no skills are loaded 494ms (node:5501) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 resize listeners added to [Socket]. MaxListeners is 10. Use emitter.setMaxListeners() to increase limit (Use `node --trace-warnings ...` to show where the warning was created) βœ“ src/ui/components/FolderTrustDialog.test.tsx (9 tests) 639ms βœ“ src/ui/hooks/useFlickerDetector.test.ts (6 tests) 99ms βœ“ src/commands/extensions/examples/mcp-server/example.test.ts (7 tests) 704ms βœ“ src/ui/components/AlternateBufferQuittingDisplay.test.tsx (5 tests) 837ms βœ“ AlternateBufferQuittingDisplay > renders with active and pending tool messages 477ms βœ“ src/ui/commands/permissionsCommand.test.ts (7 tests) 101ms βœ“ src/commands/extensions/list.test.ts (5 tests) 44ms βœ“ src/config/settings_validation_warning.test.ts (3 tests) 13ms βœ“ src/ui/hooks/useFocus.test.tsx (6 tests) 159ms βœ“ src/ui/components/views/ExtensionsList.test.tsx (11 tests) 368ms βœ“ src/ui/commands/toolsCommand.test.ts (4 tests) 74ms βœ“ src/ui/commands/compressCommand.test.ts (5 tests) 100ms βœ“ src/ui/commands/authCommand.test.ts (9 tests) 185ms βœ“ src/ui/hooks/useBanner.test.ts (6 tests) 97ms stdout | src/utils/gitUtils.test.ts > isGitHubRepository > returns false if the git command fails Failed to get git remote: Error: oops at /startdir/src/gemini-cli/packages/cli/src/utils/gitUtils.test.ts:29:13 at mockCall (file:///startdir/src/gemini-cli/node_modules/@vitest/spy/dist/index.js:96:15) at execSync (file:///startdir/src/gemini-cli/node_modules/tinyspy/dist/index.js:47:80) at Module.isGitHubRepository (/startdir/src/gemini-cli/packages/cli/src/utils/gitUtils.ts:18:7) at /startdir/src/gemini-cli/packages/cli/src/utils/gitUtils.test.ts:31:12 at file:///startdir/src/gemini-cli/node_modules/@vitest/runner/dist/chunk-hooks.js:155:11 at file:///startdir/src/gemini-cli/node_modules/@vitest/runner/dist/chunk-hooks.js:752:26 at file:///startdir/src/gemini-cli/node_modules/@vitest/runner/dist/chunk-hooks.js:1897:20 at new Promise () at runWithTimeout (file:///startdir/src/gemini-cli/node_modules/@vitest/runner/dist/chunk-hooks.js:1863:10) stdout | src/utils/gitUtils.test.ts > getLatestRelease > throws an error if the fetch fails Failed to determine latest run-gemini-cli release: nope stdout | src/utils/gitUtils.test.ts > getLatestRelease > throws an error if the fetch does not return a json body Failed to determine latest run-gemini-cli release: Error: Response did not include tag_name field at Module.getLatestGitHubRelease (/startdir/src/gemini-cli/packages/cli/src/utils/gitUtils.ts:83:13) at processTicksAndRejections (node:internal/process/task_queues:103:5) at /startdir/src/gemini-cli/packages/cli/src/utils/gitUtils.test.ts:135:5 at file:///startdir/src/gemini-cli/node_modules/@vitest/runner/dist/chunk-hooks.js:752:20 βœ“ src/utils/gitUtils.test.ts (12 tests) 34ms βœ“ src/utils/dialogScopeUtils.test.ts (4 tests) 32ms βœ“ src/ui/components/shared/EnumSelector.test.tsx (9 tests) 490ms βœ“ > renders with string options and matches snapshot 361ms βœ“ src/zed-integration/fileSystemService.test.ts (4 tests) 7ms βœ“ src/ui/commands/bugCommand.test.ts (2 tests) 31ms βœ“ src/core/initializer.test.ts (5 tests) 32ms βœ“ src/ui/commands/statsCommand.test.ts (4 tests) 25ms βœ“ src/ui/hooks/useTimer.test.tsx (8 tests) 143ms βœ“ src/ui/utils/textOutput.test.ts (10 tests) 13ms βœ“ src/ui/privacy/CloudFreePrivacyNotice.test.tsx (9 tests) 437ms stdout | src/commands/extensions/validate.test.ts > handleValidate > should validate an extension from a local dir Extension local-ext-name has been successfully validated. stderr | src/commands/extensions/validate.test.ts > handleValidate > should warn if version is not formatted with semver Validation warnings: - Warning: Version '1' does not appear to be standard semver (e.g., 1.0.0). stdout | src/commands/extensions/validate.test.ts > handleValidate > should warn if version is not formatted with semver Extension valid-name has been successfully validated. βœ“ src/ui/components/ConfigInitDisplay.test.tsx (4 tests) 243ms βœ“ src/commands/extensions/validate.test.ts (5 tests) 265ms βœ“ src/ui/auth/ApiAuthDialog.test.tsx (6 tests) 433ms βœ“ src/utils/userStartupWarnings.test.ts (5 tests) 70ms βœ“ src/ui/hooks/usePrivacySettings.test.tsx (4 tests) 165ms βœ“ src/ui/commands/clearCommand.test.ts (2 tests) 107ms βœ“ src/ui/commands/docsCommand.test.ts (3 tests) 166ms βœ“ src/ui/components/PrepareLabel.test.tsx (6 tests) 128ms βœ“ src/ui/components/AnsiOutput.test.tsx (12 tests) 310ms βœ“ src/ui/hooks/useAnimatedScrollbar.test.tsx (7 tests) 113ms βœ“ src/ui/commands/policiesCommand.test.ts (4 tests) 108ms βœ“ src/ui/components/GradientRegression.test.tsx (5 tests) 832ms βœ“ Gradient Crash Regression Tests >
should not crash when theme.ui.gradient is empty 533ms βœ“ src/config/extensions/variables.test.ts (10 tests) 11ms βœ“ src/utils/persistentState.test.ts (5 tests) 28ms βœ“ src/ui/components/shared/Scrollable.test.tsx (4 tests) 342ms βœ“ src/ui/commands/initCommand.test.ts (3 tests) 141ms βœ“ src/ui/hooks/useSnowfall.test.tsx (5 tests) 64ms βœ“ src/ui/components/ContextSummaryDisplay.test.tsx (4 tests) 186ms βœ“ src/config/auth.test.ts (8 tests) 16ms βœ“ src/utils/readStdin_safety.test.ts (2 tests) 29ms stdout | src/commands/extensions/new.test.ts > extensions new command > should create directory when no template is provided Successfully created new extension at /some/path. You can install this using "gemini extensions link /some/path" to test it out. stdout | src/commands/extensions/new.test.ts > extensions new command > should create directory and copy files when path does not exist Successfully created new extension from template "context" at /some/path. You can install this using "gemini extensions link /some/path" to test it out. βœ“ src/ui/components/SuggestionsDisplay.test.tsx (6 tests) 193ms βœ“ src/ui/components/ConsentPrompt.test.tsx (5 tests) 375ms βœ“ src/commands/extensions/new.test.ts (4 tests) 139ms βœ“ src/commands/skills/list.test.ts (4 tests) 39ms βœ“ src/ui/components/views/SkillsList.test.tsx (5 tests) 397ms βœ“ src/commands/skills/enable.test.ts (3 tests) 17ms βœ“ src/commands/skills/disable.test.ts (3 tests) 34ms βœ“ src/config/extensions/storage.test.ts (5 tests) 172ms βœ“ src/commands/extensions.test.tsx (3 tests) 21ms βœ“ src/ui/components/IdeTrustChangeDialog.test.tsx (6 tests) 305ms βœ“ src/test-utils/render.test.tsx (6 tests) 159ms βœ“ src/ui/utils/markdownUtilities.test.ts (7 tests) 6ms βœ“ src/ui/utils/displayUtils.test.ts (8 tests) 6ms βœ“ src/ui/utils/formatters.test.ts (14 tests) 20ms βœ“ src/ui/auth/AuthInProgress.test.tsx (5 tests) 216ms βœ“ src/ui/components/ShellInputPrompt.test.tsx (7 tests) 212ms βœ“ src/test-utils/mockCommandContext.test.ts (3 tests) 152ms βœ“ src/ui/components/MainContent.test.tsx (2 tests) 309ms βœ“ src/ui/components/GeminiRespondingSpinner.test.tsx (5 tests) 155ms βœ“ src/utils/windowTitle.test.ts (7 tests) 47ms βœ“ src/ui/commands/terminalSetupCommand.test.ts (5 tests) 5ms βœ“ src/ui/hooks/useBatchedScroll.test.ts (7 tests) 110ms βœ“ src/commands/skills.test.tsx (3 tests) 35ms βœ“ src/ui/utils/input.test.ts (6 tests) 33ms βœ“ src/ui/components/LogoutConfirmationDialog.test.tsx (5 tests) 466ms βœ“ LogoutConfirmationDialog > should render the dialog with title, description, and hint 303ms βœ“ src/ui/components/QueuedMessageDisplay.test.tsx (5 tests) 331ms βœ“ src/utils/startupWarnings.test.ts (4 tests) 9ms βœ“ src/ui/utils/ui-sizing.test.ts (10 tests) 41ms βœ“ src/core/auth.test.ts (3 tests) 21ms βœ“ src/ui/components/shared/DescriptiveRadioButtonSelect.test.tsx (2 tests) 173ms βœ“ src/ui/components/messages/ToolMessageRawMarkdown.test.tsx (6 tests) 378ms βœ“ src/ui/components/SessionSummaryDisplay.test.tsx (1 test) 292ms βœ“ src/ui/hooks/useMemoryMonitor.test.tsx (3 tests) 192ms βœ“ src/ui/commands/modelCommand.test.ts (3 tests) 22ms βœ“ src/ui/hooks/useMouseClick.test.ts (2 tests) 23ms βœ“ src/ui/commands/helpCommand.test.ts (2 tests) 32ms βœ“ src/ui/commands/quitCommand.test.ts (1 test) 134ms βœ“ src/ui/components/DetailedMessagesDisplay.test.tsx (3 tests) 85ms βœ“ src/ui/hooks/useMouse.test.ts (4 tests) 28ms βœ“ src/ui/components/ContextUsageDisplay.test.tsx (3 tests) 220ms βœ“ src/ui/commands/privacyCommand.test.ts (2 tests) 121ms βœ“ src/ui/utils/clipboardUtils.windows.test.ts (1 test) 19ms βœ“ src/commands/mcp.test.ts (3 tests) 95ms βœ“ src/ui/privacy/PrivacyNotice.test.tsx (4 tests) 181ms βœ“ src/ui/components/Help.test.tsx (3 tests) 276ms βœ“ src/ui/hooks/useReactToolScheduler.test.ts (1 test) 118ms βœ“ src/ui/components/ShowMoreLines.test.tsx (5 tests) 194ms βœ“ src/ui/components/ExitWarning.test.tsx (4 tests) 71ms βœ“ src/ui/commands/themeCommand.test.ts (2 tests) 145ms βœ“ src/ui/components/AboutBox.test.tsx (5 tests) 204ms βœ“ src/commands/utils.test.ts (2 tests) 9ms βœ“ src/ui/commands/corgiCommand.test.ts (2 tests) 122ms βœ“ src/ui/commands/settingsCommand.test.ts (2 tests) 150ms βœ“ src/ui/components/Table.test.tsx (3 tests) 293ms βœ“ src/utils/resolvePath.test.ts (7 tests) 15ms βœ“ src/ui/commands/editorCommand.test.ts (2 tests) 30ms βœ“ src/ui/utils/CodeColorizer.test.tsx (1 test) 342ms βœ“ colorizeCode > renders empty lines correctly when useAlternateBuffer is true 319ms βœ“ src/ui/components/QuittingDisplay.test.tsx (2 tests) 274ms βœ“ src/ui/components/ShellConfirmationDialog.test.tsx (4 tests) 288ms βœ“ src/utils/checks.test.ts (3 tests) 9ms βœ“ src/utils/events.test.ts (2 tests) 32ms βœ“ src/core/theme.test.ts (3 tests) 27ms βœ“ src/ui/components/views/ToolsList.test.tsx (3 tests) 314ms βœ“ src/config/settingPaths.test.ts (2 tests) 36ms βœ“ src/ui/components/HookStatusDisplay.test.tsx (4 tests) 163ms βœ“ src/services/prompt-processors/argumentProcessor.test.ts (2 tests) 104ms βœ“ src/utils/updateEventEmitter.test.ts (1 test) 20ms βœ“ src/ui/components/views/ChatList.test.tsx (3 tests) 89ms βœ“ src/utils/math.test.ts (7 tests) 42ms βœ“ src/ui/components/MemoryUsageDisplay.test.tsx (2 tests) 184ms βœ“ src/ui/components/LoopDetectionConfirmation.test.tsx (2 tests) 212ms βœ“ src/ui/hooks/useModelCommand.test.tsx (3 tests) 184ms βœ“ src/ui/components/AutoAcceptIndicator.test.tsx (3 tests) 136ms βœ“ src/ui/components/messages/GeminiMessage.test.tsx (4 tests) 403ms βœ“ src/ui/components/messages/UserMessage.test.tsx (3 tests) 73ms βœ“ src/ui/privacy/CloudPaidPrivacyNotice.test.tsx (2 tests) 79ms βœ“ src/ui/privacy/GeminiPrivacyNotice.test.tsx (2 tests) 242ms βœ“ src/ui/components/RawMarkdownIndicator.test.tsx (2 tests) 144ms βœ“ src/ui/components/CopyModeWarning.test.tsx (2 tests) 170ms βœ“ src/ui/components/messages/InfoMessage.test.tsx (3 tests) 66ms βœ“ src/ui/components/ConsoleSummaryDisplay.test.tsx (3 tests) 156ms βœ“ src/ui/components/ThemedGradient.test.tsx (1 test) 101ms βœ“ src/utils/processUtils.test.ts (1 test) 11ms βœ“ src/ui/components/CliSpinner.test.tsx (1 test) 68ms βœ“ src/ui/components/messages/ErrorMessage.test.tsx (2 tests) 61ms βœ“ src/ui/components/messages/WarningMessage.test.tsx (2 tests) 141ms βœ“ src/ui/components/Banner.test.tsx (3 tests) 129ms βœ“ src/ui/components/StickyHeader.test.tsx (2 tests) 89ms βœ“ src/ui/components/Tips.test.tsx (2 tests) 60ms βœ“ src/ui/utils/InlineMarkdownRenderer.test.ts (7 tests) 17ms βœ“ src/ui/components/ShellModeIndicator.test.tsx (1 test) 41ms βœ“ src/ui/components/UpdateNotification.test.tsx (1 test) 41ms ⎯⎯⎯⎯⎯⎯⎯ Failed Tests 4 ⎯⎯⎯⎯⎯⎯⎯ FAIL src/config/config.integration.test.ts > Configuration Integration Tests > Approval Mode Integration Tests > 'should parse --approval-mode=auto_edi…' Error: Hook timed out in 10000ms. If this is a long-running hook, pass a timeout value as the last argument or configure it globally with "hookTimeout". ❯ src/config/config.integration.test.ts:172:5 170| let parseArguments: typeof import('./config.js').parseArguments; 171| 172| beforeEach(async () => { | ^ 173| // Import the argument parsing function for integration testing 174| const { parseArguments: parseArgs } = await import('./config.js'… ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/4]⎯ FAIL src/services/BuiltinCommandLoader.test.ts > BuiltinCommandLoader profile > should not include profile command when isDevelopment is false Error: Test timed out in 5000ms. If this is a long-running test, pass a timeout value as the last argument or configure it globally with "testTimeout". ❯ src/services/BuiltinCommandLoader.test.ts:210:3 208| }); 209| 210| it('should not include profile command when isDevelopment is false',… | ^ 211| process.env['NODE_ENV'] = 'production'; 212| const { BuiltinCommandLoader } = await import('./BuiltinCommandLoa… ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[2/4]⎯ FAIL src/services/BuiltinCommandLoader.test.ts > BuiltinCommandLoader profile > should include profile command when isDevelopment is true Error: Test timed out in 5000ms. If this is a long-running test, pass a timeout value as the last argument or configure it globally with "testTimeout". ❯ src/services/BuiltinCommandLoader.test.ts:219:3 217| }); 218| 219| it('should include profile command when isDevelopment is true', asyn… | ^ 220| process.env['NODE_ENV'] = 'development'; 221| const { BuiltinCommandLoader } = await import('./BuiltinCommandLoa… ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[3/4]⎯ FAIL src/ui/components/shared/text-buffer.test.ts > useTextBuffer > Input Sanitization > should sanitize large ANSI text (>5000 chars) and strip escape codes Error: Test timed out in 5000ms. If this is a long-running test, pass a timeout value as the last argument or configure it globally with "testTimeout". ❯ src/ui/components/shared/text-buffer.test.ts:1574:5 1572| }); 1573| 1574| it('should sanitize large ANSI text (>5000 chars) and strip escape… | ^ 1575| const { result } = renderHook(() => 1576| useTextBuffer({ viewport, isValidPath: () => false }), ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[4/4]⎯ Test Files 3 failed | 300 passed (303) Tests 4 failed | 4036 passed | 2 skipped (4042) Start at 04:17:11 Duration 179.99s (transform 69.46s, setup 31.30s, collect 3211.65s, tests 146.45s, environment 236ms, prepare 108.68s) JUNIT report written to /startdir/src/gemini-cli/packages/cli/junit.xml npm error Lifecycle script `test` failed with error: npm error code 1 npm error path /startdir/src/gemini-cli/packages/cli npm error workspace @google/gemini-cli@0.24.5 npm error location /startdir/src/gemini-cli/packages/cli npm error command failed npm error command sh -c vitest run > @google/gemini-cli-core@0.24.5 test > vitest run RUN v3.2.4 /startdir/src/gemini-cli/packages/core Coverage enabled with v8 βœ“ src/utils/memoryImportProcessor.test.ts (25 tests) 83ms βœ“ src/tools/mcp-tool.test.ts (43 tests) 189ms βœ“ src/utils/fileUtils.test.ts (79 tests) 177ms βœ“ src/policy/policy-engine.test.ts (73 tests) 205ms βœ“ src/ide/ide-client.test.ts (36 tests) 166ms βœ“ src/mcp/oauth-provider.test.ts (34 tests) 1455ms βœ“ MCPOAuthProvider > authenticate > should handle invalid callback request 1018ms βœ“ src/hooks/hookRunner.test.ts (24 tests) 205ms βœ“ src/services/shellExecutionService.test.ts (50 tests | 1 skipped) 1903ms βœ“ ShellExecutionService > Successful Execution > should capture large output (10000 lines) 467ms βœ“ ShellExecutionService environment variables > should use a sanitized environment when in a GitHub run 391ms βœ“ ShellExecutionService environment variables > should include the full process.env when not in a GitHub run 300ms βœ“ src/services/sessionSummaryService.test.ts (33 tests) 36ms βœ“ src/utils/editCorrector.test.ts (40 tests) 126ms βœ“ src/services/modelConfigService.test.ts (26 tests) 11ms βœ“ src/tools/ripGrep.test.ts (53 tests | 1 skipped) 4050ms βœ“ src/hooks/hookRegistry.test.ts (23 tests) 120ms βœ“ src/policy/config.test.ts (20 tests) 4630ms βœ“ createPolicyEngineConfig > should return ASK_USER for write tools and ALLOW for read-only tools by default 1601ms βœ“ createPolicyEngineConfig > should handle complex priority scenarios correctly 558ms βœ“ createPolicyEngineConfig > should support argsPattern in policy rules 313ms βœ“ createPolicyEngineConfig > should load safety_checker configuration from TOML 380ms βœ“ createPolicyEngineConfig > should reject invalid in-process checker names 554ms βœ“ createPolicyEngineConfig > should have default ASK_USER rule for discovered tools 438ms βœ“ createPolicyEngineConfig > should normalize legacy "ShellTool" alias to "run_shell_command" 410ms βœ“ src/utils/filesearch/fileSearch.test.ts (27 tests) 445ms βœ“ src/telemetry/memory-monitor.test.ts (31 tests) 235ms βœ“ src/utils/generateContentResponseUtilities.test.ts (48 tests) 119ms βœ“ src/config/config.test.ts (124 tests) 397ms βœ“ src/core/logger.test.ts (39 tests) 188ms βœ“ src/tools/web-fetch.test.ts (31 tests) 573ms βœ“ src/code_assist/oauth2.test.ts (30 tests) 287ms βœ“ src/telemetry/loggers.test.ts (36 tests) 435ms βœ“ src/tools/edit.test.ts (39 tests) 286ms βœ“ src/tools/mcp-client.test.ts (55 tests) 720ms βœ“ connectToMcpServer with OAuth > should discover oauth config if not in www-authenticate header 402ms βœ“ src/utils/retry.test.ts (30 tests) 66ms βœ“ src/core/baseLlmClient.test.ts (29 tests) 242ms βœ“ src/core/coreToolScheduler.test.ts (16 tests) 720ms βœ“ src/tools/read-many-files.test.ts (31 tests) 927ms βœ“ src/telemetry/clearcut-logger/clearcut-logger.test.ts (46 tests) 998ms βœ“ src/tools/write-file.test.ts (31 tests) 387ms βœ“ src/utils/memoryDiscovery.test.ts (29 tests) 2225ms βœ“ memoryDiscovery > loadEnvironmentMemory > should NOT traverse upward beyond trusted root (even with .git) 322ms βœ“ memoryDiscovery > refreshServerHierarchicalMemory should refresh memory and update config 443ms βœ“ src/utils/editor.test.ts (110 tests) 85ms βœ“ src/utils/paths.test.ts (88 tests | 17 skipped) 41ms βœ“ src/utils/googleQuotaErrors.test.ts (20 tests) 88ms βœ“ src/core/turn.test.ts (21 tests) 58ms βœ“ src/agents/local-executor.test.ts (32 tests) 322ms βœ“ src/telemetry/uiTelemetry.test.ts (19 tests) 134ms βœ“ src/services/loopDetectionService.test.ts (47 tests) 724ms βœ“ src/utils/systemEncoding.test.ts (38 tests) 82ms βœ“ src/core/prompts.test.ts (43 tests) 76ms βœ“ src/tools/memoryTool.test.ts (19 tests) 239ms βœ“ src/utils/workspaceContext.test.ts (34 tests) 69ms βœ“ src/output/stream-json-formatter.test.ts (20 tests) 29ms βœ“ src/tools/grep.test.ts (24 tests) 613ms βœ“ src/utils/googleErrors.test.ts (13 tests) 20ms βœ“ src/policy/toml-loader.test.ts (27 tests) 259ms βœ“ src/utils/pathReader.test.ts (18 tests) 172ms βœ“ src/mcp/oauth-token-storage.test.ts (28 tests) 128ms βœ“ src/mcp/oauth-utils.test.ts (31 tests) 72ms βœ“ src/utils/filesearch/crawler.test.ts (18 tests) 157ms βœ“ src/code_assist/converter.test.ts (24 tests) 10ms βœ“ src/mcp/token-storage/keychain-token-storage.test.ts (29 tests) 1347ms βœ“ src/core/client.test.ts (64 tests | 1 skipped) 3564ms βœ“ src/hooks/types.test.ts (34 tests) 82ms βœ“ src/ide/ideContext.test.ts (23 tests) 88ms βœ“ src/hooks/hookAggregator.test.ts (10 tests) 32ms βœ“ src/tools/modifiable-tool.test.ts (12 tests) 254ms βœ“ src/hooks/hookPlanner.test.ts (10 tests) 51ms βœ“ src/utils/shell-utils.test.ts (47 tests | 1 skipped) 482ms βœ“ src/telemetry/gcp-exporters.test.ts (18 tests) 105ms βœ“ src/tools/ls.test.ts (21 tests) 369ms βœ“ src/services/gitService.test.ts (18 tests) 93ms βœ“ src/utils/userAccountManager.test.ts (23 tests) 50ms βœ“ src/agents/toml-loader.test.ts (20 tests) 140ms βœ“ src/core/geminiChat.test.ts (43 tests) 7391ms βœ“ GeminiChat > sendMessageStream > should fail if the stream ends with an empty part and has no finishReason 509ms βœ“ GeminiChat > sendMessageStream > should throw an error when a tool call is followed by an empty stream response 513ms βœ“ GeminiChat > sendMessageStream > should throw InvalidStreamError when no tool call and no finish reason 506ms βœ“ GeminiChat > sendMessageStream > should throw InvalidStreamError when no tool call and empty response text 505ms βœ“ GeminiChat > sendMessageStream > should throw InvalidStreamError when finishReason is MALFORMED_FUNCTION_CALL 506ms βœ“ GeminiChat > sendMessageStream > should retry when finishReason is MALFORMED_FUNCTION_CALL 506ms βœ“ GeminiChat > sendMessageStream with retries > should yield a RETRY event when an invalid stream is encountered 529ms βœ“ GeminiChat > sendMessageStream with retries > should retry on invalid content, succeed, and report metrics 517ms βœ“ GeminiChat > sendMessageStream with retries > should set temperature to 1 on retry 517ms βœ“ GeminiChat > sendMessageStream with retries > should fail after all retries on persistent invalid content and report metrics 509ms βœ“ GeminiChat > should correctly retry and append to an existing history mid-conversation 512ms βœ“ GeminiChat > should retry if the model returns a completely empty stream (no chunks) 567ms βœ“ GeminiChat > should discard valid partial content from a failed attempt upon retry 531ms βœ“ src/utils/getFolderStructure.test.ts (15 tests) 285ms βœ“ src/utils/gitIgnoreParser.test.ts (25 tests) 268ms βœ“ src/utils/partUtils.test.ts (37 tests) 38ms βœ“ src/services/fileDiscoveryService.test.ts (20 tests) 187ms βœ“ src/hooks/hookEventHandler.test.ts (10 tests) 90ms βœ“ src/tools/glob.test.ts (37 tests) 3924ms βœ“ GlobTool > execute > should find files with special characters in the name 340ms βœ“ GlobTool > execute > should return a GLOB_EXECUTION_ERROR on glob failure 336ms βœ“ src/utils/shell-permissions.test.ts (44 tests | 2 skipped) 253ms βœ“ src/utils/ignorePatterns.test.ts (28 tests) 72ms βœ“ src/utils/checkpointUtils.test.ts (15 tests) 34ms βœ“ src/utils/bfsFileSearch.test.ts (16 tests) 289ms βœ“ src/tools/read-file.test.ts (29 tests) 517ms βœ“ src/code_assist/server.test.ts (20 tests) 159ms βœ“ src/tools/tool-registry.test.ts (14 tests) 146ms βœ“ src/tools/shell.test.ts (20 tests | 1 skipped) 567ms βœ“ src/agents/a2a-client-manager.test.ts (19 tests) 119ms βœ“ src/agents/registry.test.ts (25 tests) 132ms βœ“ src/safety/checker-runner.test.ts (9 tests) 94ms βœ“ src/services/environmentSanitization.test.ts (18 tests) 59ms βœ“ src/output/json-formatter.test.ts (17 tests) 26ms βœ“ src/code_assist/oauth-credential-storage.test.ts (16 tests) 73ms βœ“ src/telemetry/activity-monitor.test.ts (22 tests) 25ms βœ“ src/telemetry/semantic.test.ts (21 tests) 21ms βœ“ src/utils/events.test.ts (17 tests) 220ms βœ“ src/telemetry/sanitize.test.ts (18 tests) 68ms βœ“ src/services/modelConfig.integration.test.ts (10 tests) 94ms βœ“ src/safety/built-in.test.ts (14 tests) 140ms βœ“ src/agents/remote-invocation.test.ts (9 tests) 52ms βœ“ src/routing/strategies/classifierStrategy.test.ts (8 tests) 32ms βœ“ src/mcp/token-storage/file-token-storage.test.ts (16 tests) 1330ms βœ“ src/telemetry/rate-limiter.test.ts (24 tests) 63ms βœ“ src/telemetry/sdk.test.ts (16 tests) 218ms (node:10052) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 SIGTERM listeners added to [process]. MaxListeners is 10. Use emitter.setMaxListeners() to increase limit (Use `node --trace-warnings ...` to show where the warning was created) (node:10052) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 SIGINT listeners added to [process]. MaxListeners is 10. Use emitter.setMaxListeners() to increase limit βœ“ src/mcp/token-storage/hybrid-token-storage.test.ts (11 tests) 67ms βœ“ src/core/contentGenerator.test.ts (16 tests) 64ms βœ“ src/code_assist/telemetry.test.ts (16 tests) 55ms βœ“ src/ide/ide-installer.test.ts (15 tests) 52ms βœ“ src/fallback/handler.test.ts (14 tests) 64ms βœ“ src/utils/llm-edit-fixer.test.ts (8 tests) 31ms βœ“ src/config/models.test.ts (28 tests) 43ms βœ“ src/availability/policyHelpers.test.ts (12 tests) 73ms βœ“ src/hooks/hookSystem.test.ts (8 tests) 133ms βœ“ src/services/chatRecordingService.test.ts (10 tests) 170ms βœ“ src/tools/message-bus-integration.test.ts (6 tests) 312ms βœ“ src/utils/secure-browser-launcher.test.ts (14 tests) 61ms βœ“ src/telemetry/startupProfiler.test.ts (23 tests) 244ms βœ“ src/utils/terminalSerializer.test.ts (17 tests) 225ms βœ“ src/confirmation-bus/message-bus.test.ts (10 tests) 17ms βœ“ src/utils/errorReporting.test.ts (6 tests) 88ms βœ“ src/utils/channel.test.ts (22 tests) 46ms βœ“ src/mcp/google-auth-provider.test.ts (15 tests) 48ms βœ“ src/core/nonInteractiveToolExecutor.test.ts (8 tests) 98ms βœ“ src/telemetry/high-water-mark-tracker.test.ts (18 tests) 156ms βœ“ src/services/chatCompressionService.test.ts (17 tests) 92ms βœ“ src/hooks/hookTranslator.test.ts (10 tests) 56ms βœ“ src/policy/persistence.test.ts (5 tests) 26ms βœ“ src/routing/strategies/compositeStrategy.test.ts (6 tests) 49ms βœ“ src/tools/tools.test.ts (11 tests) 34ms βœ“ src/ide/process-utils.test.ts (8 tests) 9ms βœ“ src/commands/restore.test.ts (6 tests) 69ms βœ“ src/agents/delegate-to-agent-tool.test.ts (9 tests) 407ms βœ“ src/ide/detect-ide.test.ts (15 tests) 14ms βœ“ src/core/fakeContentGenerator.test.ts (7 tests) 24ms βœ“ src/agents/local-invocation.test.ts (11 tests) 25ms βœ“ src/utils/environmentContext.test.ts (6 tests) 229ms βœ“ src/mcp/sa-impersonation-provider.test.ts (8 tests) 107ms βœ“ src/tools/diffOptions.test.ts (9 tests) 77ms βœ“ src/hooks/trustedHooks.test.ts (7 tests) 87ms βœ“ src/agents/a2aUtils.test.ts (9 tests) 35ms βœ“ src/utils/filesearch/ignore.test.ts (12 tests) 44ms βœ“ src/services/contextManager.test.ts (4 tests) 13ms βœ“ src/mcp/token-storage/base-token-storage.test.ts (12 tests) 9ms βœ“ src/utils/errors.test.ts (15 tests) 5ms βœ“ src/tools/mcp-client-manager.test.ts (13 tests) 55ms βœ“ src/utils/nextSpeakerChecker.test.ts (10 tests) 83ms βœ“ src/agents/schema-utils.test.ts (6 tests) 26ms βœ“ src/telemetry/activity-detector.test.ts (13 tests) 40ms βœ“ src/tools/web-search.test.ts (9 tests) 151ms βœ“ src/scheduler/tool-executor.test.ts (5 tests) 269ms βœ“ src/tools/activate-skill.test.ts (6 tests) 77ms βœ“ src/core/recordingContentGenerator.test.ts (4 tests) 41ms βœ“ src/utils/summarizer.test.ts (8 tests) 170ms βœ“ src/utils/geminiIgnoreParser.test.ts (11 tests) 76ms βœ“ src/availability/modelAvailabilityService.test.ts (9 tests) 11ms βœ“ src/agents/utils.test.ts (12 tests) 26ms βœ“ src/code_assist/experiments/client_metadata.test.ts (12 tests) 566ms βœ“ src/utils/tokenCalculation.test.ts (8 tests) 34ms βœ“ src/core/coreToolHookTriggers.test.ts (6 tests) 49ms βœ“ src/routing/strategies/fallbackStrategy.test.ts (4 tests) 18ms βœ“ src/code_assist/setup.test.ts (9 tests) 67ms βœ“ src/core/geminiChat_network_retry.test.ts (3 tests) 1088ms βœ“ GeminiChat Network Retries > should retry when a 503 ApiError occurs during stream iteration 581ms βœ“ GeminiChat Network Retries > should retry on generic network error if retryFetchErrors is true 503ms βœ“ src/utils/extensionLoader.test.ts (9 tests | 1 skipped) 31ms βœ“ src/code_assist/experiments/experiments.test.ts (4 tests) 34ms βœ“ src/core/loggingContentGenerator.test.ts (7 tests) 62ms βœ“ src/utils/filesearch/crawlCache.test.ts (9 tests) 52ms βœ“ src/tools/write-todos.test.ts (9 tests) 53ms βœ“ src/tools/base-tool-invocation.test.ts (2 tests) 29ms βœ“ src/skills/skillLoader.test.ts (6 tests) 88ms βœ“ src/utils/pathCorrector.test.ts (4 tests) 30ms βœ“ src/services/modelConfig.golden.test.ts (2 tests) 34ms βœ“ src/prompts/prompt-registry.test.ts (7 tests) 27ms βœ“ src/availability/policyCatalog.test.ts (10 tests) 13ms βœ“ src/utils/delay.test.ts (7 tests) 73ms βœ“ src/utils/installationManager.test.ts (4 tests) 18ms βœ“ src/utils/customHeaderUtils.test.ts (11 tests) 28ms βœ“ src/utils/debugLogger.test.ts (6 tests) 40ms βœ“ src/utils/schemaValidator.test.ts (7 tests) 87ms βœ“ src/policy/utils.test.ts (11 tests) 13ms βœ“ src/services/sessionSummaryUtils.test.ts (10 tests) 56ms βœ“ src/config/storage.test.ts (10 tests) 25ms βœ“ src/utils/textUtils.test.ts (12 tests) 12ms βœ“ src/core/apiKeyCredentialStorage.test.ts (7 tests) 41ms βœ“ src/utils/thoughtUtils.test.ts (11 tests) 5ms βœ“ src/utils/safeJsonStringify.test.ts (8 tests) 8ms βœ“ src/resources/resource-registry.test.ts (4 tests) 12ms βœ“ src/routing/strategies/overrideStrategy.test.ts (3 tests) 18ms βœ“ src/agents/introspection-agent.test.ts (5 tests) 26ms βœ“ src/policy/shell-safety.test.ts (5 tests) 198ms βœ“ src/safety/context-builder.test.ts (3 tests) 35ms βœ“ src/tools/get-internal-docs.test.ts (4 tests) 227ms βœ“ src/utils/filesearch/result-cache.test.ts (3 tests) 4ms working stdoutworking stderr βœ“ src/utils/stdio.test.ts (2 tests) 24ms βœ“ src/tools/tool-names.test.ts (5 tests) 17ms βœ“ src/telemetry/config.test.ts (14 tests) 45ms βœ“ src/services/fileSystemService.test.ts (3 tests) 27ms βœ“ src/agents/subagent-tool-wrapper.test.ts (7 tests) 168ms βœ“ src/agents/codebase-investigator.test.ts (2 tests) 13ms βœ“ src/routing/strategies/defaultStrategy.test.ts (1 test) 3ms βœ“ src/core/tokenLimits.test.ts (5 tests) 6ms βœ“ src/telemetry/telemetry-utils.test.ts (6 tests) 4ms βœ“ src/utils/version.test.ts (3 tests) 4ms βœ“ src/prompts/mcp-prompts.test.ts (2 tests) 5ms βœ“ src/policy/policy-updater.test.ts (5 tests) 42ms βœ“ src/commands/init.test.ts (2 tests) 23ms βœ“ src/safety/registry.test.ts (4 tests) 5ms βœ“ src/utils/formatters.test.ts (4 tests) 18ms βœ“ src/commands/extensions.test.ts (1 test) 11ms βœ“ src/index.test.ts (1 test) 9ms βœ“ src/tools/confirmation-policy.test.ts (6 tests) 277ms βœ“ src/code_assist/codeAssist.test.ts (7 tests) 32ms βœ“ src/routing/modelRouterService.test.ts (5 tests) 94ms βœ“ src/skills/skillManager.test.ts (3 tests) 99ms βœ“ src/utils/errorParsing.test.ts (10 tests) 5ms βœ“ src/utils/flashFallback.test.ts (4 tests) 14ms βœ“ src/utils/tool-utils.test.ts (9 tests) 12ms βœ“ src/telemetry/telemetry.test.ts (2 tests) 33ms βœ“ src/config/flashFallback.test.ts (3 tests) 30ms βœ“ src/telemetry/metrics.test.ts (68 tests) 43712ms βœ“ Telemetry Metrics > recordFlickerFrame > does not record metrics if not initialized 5390ms βœ“ Telemetry Metrics > recordFlickerFrame > records a flicker frame event when initialized 4892ms βœ“ Telemetry Metrics > recordExitFail > does not record metrics if not initialized 4853ms βœ“ Telemetry Metrics > recordExitFail > records a exit fail event when initialized 5490ms βœ“ Telemetry Metrics > recordSlowRender > does not record metrics if not initialized 4821ms βœ“ Telemetry Metrics > recordSlowRender > records a slow render event when initialized 5772ms βœ“ Telemetry Metrics > initializeMetrics > should apply common attributes including email 2376ms βœ“ Telemetry Metrics > recordChatCompressionMetrics > does not record metrics if not initialized 1273ms Test Files 211 passed (211) Tests 3857 passed | 25 skipped (3882) Start at 04:20:13 Duration 60.03s (transform 48.53s, setup 11.19s, collect 720.56s, tests 102.04s, environment 70ms, prepare 61.17s) JUNIT report written to /startdir/src/gemini-cli/packages/core/junit.xml % Coverage report from v8 > gemini-cli-vscode-ide-companion@0.24.5 test > vitest run RUN v3.2.4 /startdir/src/gemini-cli/packages/vscode-ide-companion βœ“ src/open-files-manager.test.ts (17 tests) 50ms βœ“ src/ide-server.test.ts (13 tests | 1 skipped) 174ms βœ“ src/extension.test.ts (11 tests) 93ms Test Files 3 passed (3) Tests 40 passed | 1 skipped (41) Start at 04:21:15 Duration 1.43s (transform 501ms, setup 0ms, collect 1.64s, tests 317ms, environment 1ms, prepare 574ms) ==> ERROR: A failure occurred in check(). Aborting... ==> ERROR: Build failed, check /home/alhp/workspace/chroot/build_885ab328-e198-4449-afa3-11a09241186a/build