==> Synchronizing chroot copy [/home/alhp/workspace/chroot/root] -> [build_12106ced-d05a-41c6-85a8-55de7d2d8e6d]...done
==> Making package: gemini-cli 1:0.20.0-2.1 (Fri Dec 12 21:49:43 2025)
==> Retrieving sources...
-> Cloning gemini-cli git repo...
Cloning into bare repository '/home/alhp/workspace/build/x86-64-v2/gemini-cli-1:0.20.0-2/gemini-cli'...
==> Validating source files with sha512sums...
gemini-cli ... Passed
==> Making package: gemini-cli 1:0.20.0-2.1 (Fri Dec 12 20:51:06 2025)
==> Checking runtime dependencies...
==> Installing missing dependencies...
resolving dependencies...
looking for conflicting packages...
Package (5) New Version Net Change Download Size
extra/c-ares 1.34.6-1 0.51 MiB 0.22 MiB
extra/libngtcp2 1.18.0-1 0.64 MiB
extra/libuv 1.51.0-1 0.62 MiB
extra/simdjson 1:4.2.2-1 6.28 MiB
extra/nodejs 25.2.1-1 61.25 MiB
Total Download Size: 0.22 MiB
Total Installed Size: 69.30 MiB
:: Proceed with installation? [Y/n]
:: Retrieving packages...
c-ares-1.34.6-1-x86_64 downloading...
checking keyring...
checking package integrity...
loading package files...
checking for file conflicts...
:: Processing package changes...
installing c-ares...
installing libngtcp2...
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-2 0.04 MiB
extra/perl-mailtools 2.22-2 0.10 MiB
extra/perl-timedate 2.33-8 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.6.4-1 7.14 MiB
Total Installed Size: 47.45 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/4) Creating system user accounts...
Creating group 'git' with GID 970.
Creating user 'git' (git daemon user) with UID 970 and GID 970.
(2/4) Reloading system manager configuration...
Skipped: Current root is not booted.
(3/4) Arming ConditionNeedsUpdate...
(4/4) Checking for old perl modules...
==> 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 1305 packages, and audited 1311 packages in 24s
347 packages are looking for funding
run `npm fund` for details
4 vulnerabilities (1 moderate, 3 high)
To address all issues, run:
npm audit fix
Run `npm audit` for details.
npm notice
npm notice New minor version of npm available! 11.6.4 -> 11.7.0
npm notice Changelog: https://github.com/npm/cli/releases/tag/v11.7.0
npm notice To update run: npm install -g npm@11.7.0
npm notice
==> Starting build()...
> @google/gemini-cli@0.20.0 bundle
> npm run generate && node esbuild.config.js && node scripts/copy_bundle_assets.js
> @google/gemini-cli@0.20.0 generate
> node scripts/generate-git-commit-info.js
Assets copied to bundle/
> @google/gemini-cli@0.20.0 prepare
> husky && npm run bundle
> @google/gemini-cli@0.20.0 bundle
> npm run generate && node esbuild.config.js && node scripts/copy_bundle_assets.js
> @google/gemini-cli@0.20.0 generate
> node scripts/generate-git-commit-info.js
Assets copied to bundle/
npm notice
npm notice π¦ @google/gemini-cli@0.20.0
npm notice Tarball Contents
npm notice 11.4kB LICENSE
npm notice 11.6kB README.md
npm notice 21.4MB bundle/gemini.js
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.20.0
npm notice filename: google-gemini-cli-0.20.0.tgz
npm notice package size: 5.7 MB
npm notice unpacked size: 31.0 MB
npm notice shasum: cf8bb042ef23b0a3aa74299638c20981f62ff9cf
npm notice integrity: sha512-vExq28AfJ1RLk[...]Rf9LrkLVRAcWA==
npm notice bundled deps: 52
npm notice bundled files: 0
npm notice own files: 4153
npm notice total files: 4153
npm notice
google-gemini-cli-0.20.0.tgz
==> Starting check()...
> @google/gemini-cli@0.20.0 build
> node scripts/build.js
> @google/gemini-cli@0.20.0 generate
> node scripts/generate-git-commit-info.js
> @google/gemini-cli-a2a-server@0.20.0 build
> node ../../scripts/build_package.js
Successfully copied files.
> @google/gemini-cli@0.20.0 build
> node ../../scripts/build_package.js
Successfully copied files.
> @google/gemini-cli-core@0.20.0 build
> node ../../scripts/build_package.js
Successfully copied files.
> @google/gemini-cli-test-utils@0.20.0 build
> node ../../scripts/build_package.js
Successfully copied files.
> gemini-cli-vscode-ide-companion@0.20.0 build
> npm run build:dev
> gemini-cli-vscode-ide-companion@0.20.0 build:dev
> npm run check-types && npm run lint && node esbuild.js
> gemini-cli-vscode-ide-companion@0.20.0 check-types
> tsc --noEmit
> gemini-cli-vscode-ide-companion@0.20.0 lint
> eslint src
[watch] build started
[watch] build finished
> @google/gemini-cli@0.20.0 test
> npm run test --workspaces --if-present
> @google/gemini-cli-a2a-server@0.20.0 test
> vitest run
RUN v3.2.4 /startdir/src/gemini-cli/packages/a2a-server
Coverage enabled with v8
β src/commands/command-registry.test.ts (6 tests) 90ms
β src/persistence/gcs.test.ts (12 tests) 37ms
β src/commands/extensions.test.ts (8 tests) 4ms
β src/agent/task.test.ts (8 tests) 27ms
β src/http/endpoints.test.ts (5 tests) 48ms
β src/http/app.test.ts (13 tests) 83ms
Test Files 6 passed (6)
Tests 52 passed (52)
Start at 20:52:00
Duration 3.34s (transform 1.33s, setup 0ms, collect 9.97s, tests 290ms, environment 1ms, prepare 931ms)
JUNIT report written to /startdir/src/gemini-cli/packages/a2a-server/junit.xml
% Coverage report from v8
> @google/gemini-cli@0.20.0 test
> vitest run
RUN v3.2.4 /startdir/src/gemini-cli/packages/cli
Coverage enabled with v8
β src/utils/sessionCleanup.test.ts (70 tests) 80ms
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-YhOeSf/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-DQFToZ/.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-G5Csfw/.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-WGLdS8/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-ue0IC3/dist/bundle.js
β src/utils/settingsUtils.test.ts (73 tests) 24ms
β src/ui/components/shared/vim-buffer-actions.test.ts (74 tests) 30ms
β src/ui/hooks/atCommandProcessor.test.ts (42 tests) 429ms
β src/services/FileCommandLoader.test.ts (40 tests) 333ms
stdout | src/config/settings.test.ts > Settings Loading and Merging > migrateDeprecatedSettings > should migrate disabled extensions from user and workspace settings
Migrating deprecated extensions.disabled settings from User settings...
Migrating deprecated extensions.disabled settings from Workspace settings...
stderr | src/config/settings.test.ts > Settings Loading and Merging > migrateDeprecatedSettings > should migrate disabled extensions from user and workspace settings
[WARN] Skipping unreadable directory: /mock/workspace (ENOENT: no such file or directory, stat '/mock/workspace')
stderr | src/config/settings.test.ts > Settings Loading and Merging > migrateDeprecatedSettings > should not do anything if there are no deprecated settings
[WARN] Skipping unreadable directory: /mock/workspace (ENOENT: no such file or directory, stat '/mock/workspace')
β src/services/prompt-processors/shellProcessor.test.ts (33 tests) 62ms
β src/config/settings.test.ts (80 tests) 54ms
β src/ui/commands/extensionsCommand.test.ts (38 tests) 92ms
β src/config/extension.test.ts (70 tests) 354ms
β src/nonInteractiveCli.test.ts (34 tests) 587ms
β runNonInteractive > should handle cancellation (Ctrl+C) 412ms
β src/ui/components/shared/text-buffer.test.ts (161 tests) 403ms
β src/ui/contexts/KeypressContext.test.tsx (87 tests) 218ms
β src/ui/hooks/useSelectionList.test.tsx (45 tests) 235ms
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 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/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/useSlashCompletion.test.ts (21 tests) 510ms
β src/ui/hooks/vim.test.tsx (87 tests) 918ms
β src/ui/hooks/useToolScheduler.test.ts (23 tests) 507ms
β src/ui/hooks/slashCommandProcessor.test.tsx (37 tests) 854ms
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 toggle setting with Space key
[DEBUG SettingsDialog] Saving general.previewFeatures immediately with value: true
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
β src/ui/hooks/useGeminiStream.test.tsx (54 tests) 1285ms
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
β src/ui/keyMatchers.test.ts (44 tests) 40ms
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
[DEBUG SettingsDialog] Saving general.vimMode immediately with value: true
β src/ui/components/SettingsDialog.test.tsx (50 tests) 3676ms
β SettingsDialog > Initial Rendering > should render the settings dialog with default state 345ms
β src/ui/components/InputPrompt.test.tsx (110 tests) 2637ms
β src/config/extensions/extensionEnablement.test.ts (48 tests) 66ms
β src/utils/sessions.test.ts (16 tests) 48ms
β src/ui/commands/chatCommand.test.ts (30 tests) 139ms
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
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/zed-integration/zedIntegration.test.ts (20 tests) 261ms
β src/utils/sessionUtils.test.ts (20 tests) 246ms
β src/ui/hooks/shellCommandProcessor.test.tsx (20 tests) 190ms
stderr | src/ui/AppContainer.test.tsx > AppContainer State Management > Basic Rendering > renders with startup warnings
[STARTUP] Cannot start phase 'discover_tools': phase is already active. Call end() before starting again.
stderr | src/ui/AppContainer.test.tsx > AppContainer State Management > State Initialization > initializes with theme error from initialization result
[STARTUP] Cannot start phase 'discover_tools': phase is already active. Call end() before starting again.
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
stderr | src/ui/AppContainer.test.tsx > AppContainer State Management > Context Providers > provides AppContext with correct values
[STARTUP] Cannot start phase 'discover_tools': phase is already active. Call end() before starting again.
stderr | src/ui/AppContainer.test.tsx > AppContainer State Management > Context Providers > provides UIStateContext with state management
[STARTUP] Cannot start phase 'discover_tools': phase is already active. Call end() before starting again.
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
stderr | src/ui/AppContainer.test.tsx > AppContainer State Management > Context Providers > provides UIActionsContext with action handlers
[STARTUP] Cannot start phase 'discover_tools': phase is already active. Call end() before starting again.
stderr | src/ui/AppContainer.test.tsx > AppContainer State Management > Context Providers > provides ConfigContext with config object
[STARTUP] Cannot start phase 'discover_tools': phase is already active. Call end() before starting again.
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
stderr | src/ui/AppContainer.test.tsx > AppContainer State Management > Settings Integration > handles settings with all display options disabled
[STARTUP] Cannot start phase 'discover_tools': phase is already active. Call end() before starting again.
β src/ui/hooks/useAutoAcceptIndicator.test.ts (17 tests) 188ms
stderr | src/ui/AppContainer.test.tsx > AppContainer State Management > Settings Integration > handles settings with memory usage enabled
[STARTUP] Cannot start phase 'discover_tools': phase is already active. Call end() before starting again.
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
stderr | src/ui/AppContainer.test.tsx > AppContainer State Management > Version Handling > handles version format: 1.0.0
[STARTUP] Cannot start phase 'discover_tools': phase is already active. Call end() before starting again.
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
stderr | src/ui/AppContainer.test.tsx > AppContainer State Management > Version Handling > handles version format: 2.1.3-beta
[STARTUP] Cannot start phase 'discover_tools': phase is already active. Call end() before starting again.
stderr | src/ui/AppContainer.test.tsx > AppContainer State Management > Version Handling > handles version format: 3.0.0-nightly
[STARTUP] Cannot start phase 'discover_tools': phase is already active. Call end() before starting again.
stderr | src/ui/AppContainer.test.tsx > AppContainer State Management > Error Handling > handles undefined settings gracefully
[STARTUP] Cannot start phase 'discover_tools': phase is already active. Call end() before starting again.
stderr | src/ui/AppContainer.test.tsx > AppContainer State Management > Provider Hierarchy > establishes correct provider nesting order
[STARTUP] Cannot start phase 'discover_tools': phase is already active. Call end() before starting again.
stderr | src/ui/AppContainer.test.tsx > AppContainer State Management > Session Resumption > handles resumed session data correctly
[STARTUP] Cannot start phase 'discover_tools': phase is already active. Call end() before starting again.
stderr | src/ui/AppContainer.test.tsx > AppContainer State Management > Session Resumption > renders without resumed session data
[STARTUP] Cannot start phase 'discover_tools': phase is already active. Call end() before starting again.
β src/config/policy-engine.integration.test.ts (12 tests) 248ms
β src/validateNonInterActiveAuth.test.ts (17 tests) 47ms
β src/config/settingsSchema.test.ts (17 tests) 23ms
β src/services/McpPromptLoader.test.ts (27 tests) 21ms
β src/ui/components/shared/BaseSelectionList.test.tsx (26 tests) 632ms
β src/utils/errors.test.ts (28 tests) 150ms
stderr | src/ui/AppContainer.test.tsx > AppContainer State Management > Quota and Fallback Integration > passes a null proQuotaRequest to UIStateContext by default
[STARTUP] Cannot start phase 'discover_tools': phase is already active. Call end() before starting again.
stderr | src/ui/AppContainer.test.tsx > AppContainer State Management > Quota and Fallback Integration > passes a valid proQuotaRequest to UIStateContext when provided by the hook
[STARTUP] Cannot start phase 'discover_tools': phase is already active. Call end() before starting again.
stderr | src/ui/AppContainer.test.tsx > AppContainer State Management > Quota and Fallback Integration > passes the handleProQuotaChoice function to UIActionsContext
[STARTUP] Cannot start phase 'discover_tools': phase is already active. Call end() before starting again.
stderr | src/ui/AppContainer.test.tsx > AppContainer State Management > Terminal Title Update Feature > should not update terminal title when showStatusInTitle is false
[STARTUP] Cannot start phase 'discover_tools': phase is already active. Call end() before starting again.
stderr | src/ui/AppContainer.test.tsx > AppContainer State Management > Terminal Title Update Feature > should not update terminal title when hideWindowTitle is true
[STARTUP] Cannot start phase 'discover_tools': phase is already active. Call end() before starting again.
stderr | src/ui/AppContainer.test.tsx > AppContainer State Management > Terminal Title Update Feature > should update terminal title with thought subject when in active state
[STARTUP] Cannot start phase 'discover_tools': phase is already active. Call end() before starting again.
stderr | src/ui/AppContainer.test.tsx > AppContainer State Management > Terminal Title Update Feature > should update terminal title with default text when in Idle state and no thought subject
[STARTUP] Cannot start phase 'discover_tools': phase is already active. Call end() before starting again.
stderr | src/ui/AppContainer.test.tsx > AppContainer State Management > Terminal Title Update Feature > should update terminal title when in WaitingForConfirmation state with thought subject
[STARTUP] Cannot start phase 'discover_tools': phase is already active. Call end() before starting again.
stderr | src/ui/AppContainer.test.tsx > AppContainer State Management > Terminal Title Update Feature > should pad title to exactly 80 characters
[STARTUP] Cannot start phase 'discover_tools': phase is already active. Call end() before starting again.
stderr | src/ui/AppContainer.test.tsx > AppContainer State Management > Terminal Title Update Feature > should use correct ANSI escape code format
[STARTUP] Cannot start phase 'discover_tools': phase is already active. Call end() before starting again.
stderr | src/ui/AppContainer.test.tsx > AppContainer State Management > Terminal Title Update Feature > should use CLI_TITLE environment variable when set
[STARTUP] Cannot start phase 'discover_tools': phase is already active. Call end() before starting again.
stderr | src/ui/AppContainer.test.tsx > AppContainer State Management > Queue Error Message > should set and clear the queue error message after a timeout
[STARTUP] Cannot start phase 'discover_tools': phase is already active. Call end() before starting again.
stderr | src/ui/AppContainer.test.tsx > AppContainer State Management > Queue Error Message > should reset the timer if a new error message is set
[STARTUP] Cannot start phase 'discover_tools': phase is already active. Call end() before starting again.
stderr | src/ui/AppContainer.test.tsx > AppContainer State Management > Terminal Height Calculation > should prevent terminal height from being less than 1
[STARTUP] Cannot start phase 'discover_tools': phase is already active. Call end() before starting again.
stderr | src/ui/AppContainer.test.tsx > AppContainer State Management > Keyboard Input Handling (CTRL+C / CTRL+D) > CTRL+C > should cancel ongoing request on first press
[STARTUP] Cannot start phase 'discover_tools': phase is already active. Call end() before starting again.
stderr | src/ui/AppContainer.test.tsx > AppContainer State Management > Keyboard Input Handling (CTRL+C / CTRL+D) > CTRL+C > should quit on second press
[STARTUP] Cannot start phase 'discover_tools': phase is already active. Call end() before starting again.
stderr | src/ui/AppContainer.test.tsx > AppContainer State Management > Keyboard Input Handling (CTRL+C / CTRL+D) > CTRL+C > should reset press count after a timeout
[STARTUP] Cannot start phase 'discover_tools': phase is already active. Call end() before starting again.
stderr | src/ui/AppContainer.test.tsx > AppContainer State Management > Keyboard Input Handling (CTRL+C / CTRL+D) > CTRL+D > should do nothing if text buffer is not empty
[STARTUP] Cannot start phase 'discover_tools': phase is already active. Call end() before starting again.
stderr | 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
[STARTUP] Cannot start phase 'discover_tools': phase is already active. Call end() before starting again.
stderr | src/ui/AppContainer.test.tsx > AppContainer State Management > Keyboard Input Handling (CTRL+C / CTRL+D) > CTRL+D > should reset press count after a timeout
[STARTUP] Cannot start phase 'discover_tools': phase is already active. Call end() before starting again.
stderr | src/ui/AppContainer.test.tsx > AppContainer State Management > Copy Mode (CTRL+S) > 'Normal Mode' > should NOT toggle mouse off when Ctrl+S is pressed
[STARTUP] Cannot start phase 'discover_tools': phase is already active. Call end() before starting again.
stderr | src/ui/AppContainer.test.tsx > AppContainer State Management > Copy Mode (CTRL+S) > 'Alternate Buffer Mode' > should toggle mouse off when Ctrl+S is pressed
[STARTUP] Cannot start phase 'discover_tools': phase is already active. Call end() before starting again.
stderr | 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
[STARTUP] Cannot start phase 'discover_tools': phase is already active. Call end() before starting again.
stderr | src/ui/AppContainer.test.tsx > AppContainer State Management > Copy Mode (CTRL+S) > 'Alternate Buffer Mode' > should exit copy mode on any key press
[STARTUP] Cannot start phase 'discover_tools': phase is already active. Call end() before starting again.
stderr | src/ui/AppContainer.test.tsx > AppContainer State Management > Model Dialog Integration > should provide isModelDialogOpen in the UIStateContext
[STARTUP] Cannot start phase 'discover_tools': phase is already active. Call end() before starting again.
stderr | src/ui/AppContainer.test.tsx > AppContainer State Management > Model Dialog Integration > should provide model dialog actions in the UIActionsContext
[STARTUP] Cannot start phase 'discover_tools': phase is already active. Call end() before starting again.
stderr | src/ui/AppContainer.test.tsx > AppContainer State Management > CoreEvents Integration > subscribes to UserFeedback and drains backlog on mount
[STARTUP] Cannot start phase 'discover_tools': phase is already active. Call end() before starting again.
stderr | src/ui/AppContainer.test.tsx > AppContainer State Management > CoreEvents Integration > unsubscribes from UserFeedback on unmount
[STARTUP] Cannot start phase 'discover_tools': phase is already active. Call end() before starting again.
stderr | src/ui/AppContainer.test.tsx > AppContainer State Management > CoreEvents Integration > adds history item when UserFeedback event is received
[STARTUP] Cannot start phase 'discover_tools': phase is already active. Call end() before starting again.
stderr | src/ui/AppContainer.test.tsx > AppContainer State Management > CoreEvents Integration > updates currentModel when ModelChanged event is received
[STARTUP] Cannot start phase 'discover_tools': phase is already active. Call end() before starting again.
stderr | src/ui/AppContainer.test.tsx > AppContainer State Management > Shell Interaction > should not crash if resizing the pty fails
[STARTUP] Cannot start phase 'discover_tools': phase is already active. Call end() before starting again.
stderr | src/ui/AppContainer.test.tsx > AppContainer State Management > Banner Text > should render placeholder banner text for USE_GEMINI auth type
[STARTUP] Cannot start phase 'discover_tools': phase is already active. Call end() before starting again.
stderr | src/ui/AppContainer.test.tsx > AppContainer State Management > onCancelSubmit Behavior > clears the prompt when onCancelSubmit is called with shouldRestorePrompt=false
[STARTUP] Cannot start phase 'discover_tools': phase is already active. Call end() before starting again.
stderr | src/ui/AppContainer.test.tsx > AppContainer State Management > onCancelSubmit Behavior > restores the prompt when onCancelSubmit is called with shouldRestorePrompt=true (or undefined)
[STARTUP] Cannot start phase 'discover_tools': phase is already active. Call end() before starting again.
β src/config/extensions/extensionSettings.test.ts (17 tests) 45ms
stderr | src/ui/AppContainer.test.tsx > AppContainer State Management > onCancelSubmit Behavior > input history is independent from conversation history (survives /clear)
[STARTUP] Cannot start phase 'discover_tools': phase is already active. Call end() before starting again.
β src/ui/AppContainer.test.tsx (60 tests) 1882ms
β AppContainer State Management > State Initialization > handles debug mode state 375ms
β src/ui/hooks/useQuotaAndFallback.test.ts (12 tests) 133ms
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
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
β src/ui/hooks/useCommandCompletion.test.tsx (21 tests) 246ms
β src/ui/hooks/useAtCompletion.test.ts (14 tests) 2046ms
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
β src/utils/commentJson.test.ts (12 tests) 40ms
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:2990) 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/utils/sandbox.test.ts (7 tests) 201ms
]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.
stderr | 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.
stderr | 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 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/components/Composer.test.tsx (20 tests) 561ms
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
]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) 322ms
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 | 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/trustedFolders.test.ts (21 tests) 50ms
β src/ui/hooks/useSessionResume.test.ts (12 tests) 141ms
β src/utils/handleAutoUpdate.test.ts (19 tests) 276ms
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.
β src/ui/contexts/ScrollProvider.test.tsx (9 tests) 225ms
β src/utils/installationInfo.test.ts (16 tests) 69ms
β src/services/CommandService.test.ts (11 tests) 40ms
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/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.
β src/ui/components/StatsDisplay.test.tsx (13 tests) 527ms
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.
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/config/extensions/github.test.ts (26 tests) 234ms
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/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
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/ui/hooks/usePhraseCycler.test.tsx (13 tests) 467ms
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 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/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:215:5
at file:///startdir/src/gemini-cli/node_modules/@vitest/runner/dist/chunk-hooks.js:752:20
β src/ui/auth/AuthDialog.test.tsx (21 tests) 700ms
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-pO6S6i/non-existent/.gitignore'
at open (node:internal/fs/promises:641:25)
at Object.writeFile (node:internal/fs/promises:1249: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:318: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-pO6S6i/non-existent/.gitignore'
}
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 (18 tests) 298ms
β src/ui/commands/directoryCommand.test.tsx (13 tests) 31ms
β src/ui/commands/setupGithubCommand.test.ts (10 tests) 163ms
β src/ui/commands/memoryCommand.test.ts (10 tests) 44ms
β src/ui/components/shared/MaxSizedBox.test.tsx (21 tests) 503ms
β src/ui/hooks/usePermissionsModifyTrust.test.ts (13 tests) 73ms
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 | ../../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) 1459ms
β ScrollableList Demo Behavior > should scroll to bottom when new items are added and stop when scrolled up 467ms
β ScrollableList Demo Behavior > Keyboard Navigation > should handle scroll keys correctly 964ms
β src/config/config.test.ts (146 tests | 1 skipped) 7744ms
β src/ui/components/messages/ToolGroupMessage.test.tsx (17 tests) 972ms
stderr | DiagConsoleLogger.error (/startdir/src/gemini-cli/node_modules/@opentelemetry/api/src/diag/consoleLogger.ts:49:28)
{"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/contexts/ScrollProvider.drag.test.tsx (6 tests) 183ms
β src/ui/hooks/useMessageQueue.test.tsx (14 tests) 57ms
β src/ui/components/Footer.test.tsx (21 tests) 577ms
β src/config/extensions/update.test.ts (10 tests) 40ms
β src/utils/relaunch.test.ts (8 tests) 52ms
β src/commands/extensions/uninstall.test.ts (9 tests) 79ms
β src/ui/components/SessionBrowser.test.tsx (6 tests) 853ms
β SessionBrowser component > shows empty state when no sessions exist 339ms
β src/zed-integration/acp.test.ts (16 tests) 63ms
β src/utils/envVarResolver.test.ts (16 tests) 28ms
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/services/prompt-processors/injectionParser.test.ts (21 tests) 83ms
β src/ui/themes/color-utils.test.ts (23 tests) 113ms
β src/ui/components/ProQuotaDialog.test.tsx (9 tests) 142ms
β src/ui/components/LoadingIndicator.test.tsx (16 tests) 213ms
β src/ui/hooks/useInputHistoryStore.test.ts (14 tests) 93ms
β src/ui/commands/ideCommand.test.ts (8 tests) 71ms
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".
β src/ui/commands/restoreCommand.test.ts (13 tests) 375ms
β src/ui/hooks/useFolderTrust.test.ts (12 tests) 207ms
stdout | src/ui/auth/useAuth.test.tsx > useAuth > useAuthCommand > should authenticate if USE_GEMINI and env key is found
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".
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) 377ms
β src/ui/components/messages/DiffRenderer.test.tsx (26 tests) 1863ms
β > with useAlternateBuffer = true > should call colorizeCode with null language for new file with unknown extension 466ms
β src/ui/components/shared/VirtualizedList.test.tsx (9 tests) 737ms
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:49: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:72: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:49: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:72: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/state/extensions.test.ts (15 tests) 34ms
β src/config/sandboxConfig.test.ts (27 tests) 73ms
β src/ui/hooks/useShellHistory.test.ts (7 tests) 681ms
β src/ui/hooks/useExtensionUpdates.test.tsx (4 tests) 415ms
β src/ui/utils/computeStats.test.ts (12 tests) 8ms
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/components/shared/TextInput.test.tsx (11 tests) 135ms
β src/ui/commands/copyCommand.test.ts (11 tests) 115ms
β src/ui/components/HistoryItemDisplay.test.tsx (19 tests) 1537ms
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:49: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:72: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:49: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:72: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/hooks/useReverseSearchCompletion.test.tsx (10 tests) 441ms
β src/utils/sessionCleanup.integration.test.ts (5 tests) 207ms
β src/ui/hooks/useIdeTrustListener.test.tsx (5 tests) 298ms
β src/services/prompt-processors/atFileProcessor.test.ts (11 tests) 450ms
β― src/services/BuiltinCommandLoader.test.ts (10 tests | 2 failed) 10055ms
β BuiltinCommandLoader > should correctly pass the config object to restore command factory 6ms
β BuiltinCommandLoader > should filter out null command definitions returned by factories 1ms
β BuiltinCommandLoader > should handle a null config gracefully when calling factories 0ms
β 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 0ms
β BuiltinCommandLoader > should exclude policies command when message bus integration is disabled 0ms
Γ BuiltinCommandLoader profile > should not include profile command when isDevelopment is false 5027ms
β 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 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".
β src/ui/components/MultiFolderTrustDialog.test.tsx (8 tests) 736ms
β src/ui/utils/textUtils.test.ts (10 tests) 44ms
β src/ui/components/ModelStatsDisplay.test.tsx (6 tests) 1029ms
β > should render "no API calls" message when there are no active models 391ms
β src/ui/hooks/useSessionBrowser.test.ts (7 tests) 155ms
β src/commands/extensions/disable.test.ts (12 tests) 194ms
β src/config/extensions/github_fetch.test.ts (8 tests) 72ms
β src/ui/hooks/useInputHistory.test.ts (11 tests) 202ms
β src/ui/components/DebugProfiler.test.tsx (13 tests) 303ms
β src/ui/hooks/useEditorSettings.test.tsx (10 tests) 268ms
β src/ui/hooks/useKeypress.test.tsx (22 tests) 303ms
β src/commands/extensions/update.test.ts (8 tests) 72ms
β src/ui/components/ModelDialog.test.tsx (9 tests) 965ms
β > renders the title and help text 317ms
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) 220ms
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+DQoCAgICAgMAAhCIFIQcCQCAAQYH3AGsiAUHAAHEEQCACIAFBQGqthiEHQgAhAgwBCyABRQ0AIAcgAa0iBIYgAkHAACABa62IhCEHIAIgBIYhAgsgCCACNwMQIAggBzcDGAJAQYH4ACAAayIAQcAAcQRAIAUgAEFAaq2IIQNCACEFDAELIABFDQAgBUHAACAAa62GIAMgAK0iAoiEIQMgBSACiCEFCyAIIAM3AwAgCCAFNwMIIAgpAwhCBIYgCCkDACIDQjyIhCECIAgpAxAgCCkDGIRCAFKtIANC//////////8Pg4QiA0KBgICAgICAgAhaBEAgAkIBfCECDAELIANCgICAgICAgIAIUg0AIAJCAYMgAnwhAgsgCEEgaiQAIAkgAiAGQoCAgICAgICAgH+DhL85AwALmRgDEn8BfAN+IwBBsARrIgwkACAMQQA2AiwCQCABvSIZQgBTBEBBASERQZkJIRMgAZoiAb0hGQwBCyAEQYAQcQRAQQEhEUGcCSETDAELQZ8JQZoJIARBAXEiERshEyARRSEVCwJAIBlCgICAgICAgPj/AINCgICAgICAgPj/AFEEQCAAQSAgAiARQQNqIgMgBEH//3txECkgACATIBEQJiAAQe0VQdweIAVBIHEiBRtB4RpB4B4gBRsgASABYhtBAxAmIABBICACIAMgBEGAwABzECkgAyACIAIgA0gbIQoMAQsgDEEQaiESAkACfwJAIAEgDEEsahCMASIBIAGgIgFEAAAAAAAAAABiBEAgDCAMKAIsIgZBAWs2AiwgBUEgciIOQeEARw0BDAMLIAVBIHIiDkHhAEYNAiAMKAIsIQlBBiADIANBAEgbDAELIAwgBkEdayIJNgIsIAFEAAAAAAAAsEGiIQFBBiADIANBAEgbCyELIAxBMGpBoAJBACAJQQBOG2oiDSEHA0AgBwJ/IAFEAAAAAAAA8EFjIAFEAAAAAAAAAABmcQRAIAGrDAELQQALIgM2AgAgB0EEaiEHIAEgA7ihRAAAAABlzc1BoiIBRAAAAAAAAAAAYg0ACwJAIAlBAEwEQCAJIQMgByEGIA0hCAwBCyANIQggCSEDA0BBHSADIANBHU4bIQMCQCAHQQRrIgYgCEkNACADrSEaQgAhGQNAIAYgGUL/////D4MgBjUCACAahnwiG0KAlOvcA4AiGUKA7JSjDH4gG3w+AgAgBkEEayIGIAhPDQALIBmnIgZFDQAgCEEEayIIIAY2AgALA0AgCCAHIgZJBEAgBkEEayIHKAIARQ0BCwsgDCAMKAIsIANrIgM2AiwgBiEHIANBAEoNAAsLIANBAEgEQCALQRlqQQluQQFqIQ8gDkHmAEYhEANAQQlBACADayIDIANBCU4bIQoCQCAGIAhNBEAgCCgCACEHDAELQYCU69wDIAp2IRRBfyAKdEF/cyEWQQAhAyAIIQcDQCAHIAMgBygCACIXIAp2ajYCACAWIBdxIBRsIQMgB0EEaiIHIAZJDQALIAgoAgAhByADRQ0AIAYgAzYCACAGQQRqIQYLIAwgDCgCLCAKaiIDNgIsIA0gCCAHRUECdGoiCCAQGyIHIA9BAnRqIAYgBiAHa0ECdSAPShshBiADQQBIDQALC0EAIQMCQCAGIAhNDQAgDSAIa0ECdUEJbCEDQQohByAIKAIAIgpBCkkNAANAIANBAWohAyAKIAdBCmwiB08NAAsLIAsgA0EAIA5B5gBHG2sgDkHnAEYgC0EAR3FrIgcgBiANa0ECdUEJbEEJa0gEQEEEQaQCIAlBAEgbIAxqIAdBgMgAaiIKQQltIg9BAnRqQdAfayEJQQohByAPQXdsIApqIgpBB0wEQANAIAdBCmwhByAKQQFqIgpBCEcNAAsLAkAgCSgCACIQIBAgB24iDyAHbCIKRiAJQQRqIhQgBkZxDQAgECAKayEQAkAgD0EBcUUEQEQAAAAAAABAQyEBIAdBgJTr3ANHIAggCU9yDQEgCUEEay0AAEEBcUUNAQtEAQAAAAAAQEMhAQtEAAAAAAAA4D9EAAAAAAAA8D9EAAAAAAAA+D8gBiAURhtEAAAAAAAA+D8gECAHQQF2IhRGGyAQIBRJGyEYAkAgFQ0AIBMtAABBLUcNACAYmiEYIAGaIQELIAkgCjYCACABIBigIAFhDQAgCSAHIApqIgM2AgAgA0GAlOvcA08EQANAIAlBADYCACAIIAlBBGsiCUsEQCAIQQRrIghBADYCAAsgCSAJKAIAQQFqIgM2AgAgA0H/k+vcA0sNAAsLIA0gCGtBAnVBCWwhA0EKIQcgCCgCACIKQQpJDQADQCADQQFqIQMgCiAHQQpsIgdPDQALCyAJQQRqIgcgBiAGIAdLGyEGCwNAIAYiByAITSIKRQRAIAdBBGsiBigCAEUNAQsLAkAgDkHnAEcEQCAEQQhxIQkMAQsgA0F/c0F/IAtBASALGyIGIANKIANBe0pxIgkbIAZqIQtBf0F+IAkbIAVqIQUgBEEIcSIJDQBBdyEGAkAgCg0AIAdBBGsoAgAiDkUNAEEKIQpBACEGIA5BCnANAANAIAYiCUEBaiEGIA4gCkEKbCIKcEUNAAsgCUF/cyEGCyAHIA1rQQJ1QQlsIQogBUFfcUHGAEYEQEEAIQkgCyAGIApqQQlrIgZBACAGQQBKGyIGIAYgC0obIQsMAQtBACEJIAsgAyAKaiAGakEJayIGQQAgBkEAShsiBiAGIAtKGyELC0F/IQogC0H9////B0H+////ByAJIAtyIhAbSg0BIAsgEEEAR2pBAWohDgJAIAVBX3EiFUHGAEYEQCADIA5B/////wdzSg0DIANBACADQQBKGyEGDAELIBIgAyADQR91IgZzIAZrrSASEEciBmtBAUwEQANAIAZBAWsiBkEwOgAAIBIgBmtBAkgNAAsLIAZBAmsiDyAFOgAAIAZBAWtBLUErIANBAEgbOgAAIBIgD2siBiAOQf////8Hc0oNAgsgBiAOaiIDIBFB/////wdzSg0BIABBICACIAMgEWoiBSAEECkgACATIBEQJiAAQTAgAiAFIARBgIAEcxApAkACQAJAIBVBxgBGBEAgDEEQaiIGQQhyIQMgBkEJciEJIA0gCCAIIA1LGyIKIQgDQCAINQIAIAkQRyEGAkAgCCAKRwRAIAYgDEEQak0NAQNAIAZBAWsiBkEwOgAAIAYgDEEQaksNAAsMAQsgBiAJRw0AIAxBMDoAGCADIQYLIAAgBiAJIAZrECYgCEEEaiIIIA1NDQALIBAEQCAAQYwlQQEQJgsgC0EATCAHIAhNcg0BA0AgCDUCACAJEEciBiAMQRBqSwRAA0AgBkEBayIGQTA6AAAgBiAMQRBqSw0ACwsgACAGQQkgCyALQQlOGxAmIAtBCWshBiAIQQRqIgggB08NAyALQQlKIQMgBiELIAMNAAsMAgsCQCALQQBIDQAgByAIQQRqIAcgCEsbIQogDEEQaiIGQQhyIQMgBkEJciENIAghBwNAIA0gBzUCACANEEciBkYEQCAMQTA6ABggAyEGCwJAIAcgCEcEQCAGIAxBEGpNDQEDQCAGQQFrIgZBMDoAACAGIAxBEGpLDQALDAELIAAgBkEBECYgBkEBaiEGIAkgC3JFDQAgAEGMJUEBECYLIAAgBiALIA0gBmsiBiAGIAtKGxAmIAsgBmshCyAHQQRqIgcgCk8NASALQQBODQALCyAAQTAgC0ESakESQQAQKSAAIA8gEiAPaxAmDAILIAshBgsgAEEwIAZBCWpBCUEAECkLIABBICACIAUgBEGAwABzECkgBSACIAIgBUgbIQoMAQsgEyAFQRp0QR91QQlxaiELAkAgA0ELSw0AQQwgA2shBkQAAAAAAAAwQCEYA0AgGEQAAAAAAAAwQKIhGCAGQQFrIgYNAAsgCy0AAEEtRgRAIBggAZogGKGgmiEBDAELIAEgGKAgGKEhAQsgEUECciEJIAVBIHEhCCASIAwoAiwiByAHQR91IgZzIAZrrSASEEciBkYEQCAMQTA6AA8gDEEPaiEGCyAGQQJrIg0gBUEPajoAACAGQQFrQS1BKyAHQQBIGzoAACAEQQhxIQYgDEEQaiEHA0AgByIFAn8gAZlEAAAAAAAA4EFjBEAgAaoMAQtBgICAgHgLIgdBkC9qLQAAIAhyOgAAIAYgA0EASnJFIAEgB7ehRAAAAAAAADBAoiIBRAAAAAAAAAAAYXEgBUEBaiIHIAxBEGprQQFHckUEQCAFQS46AAEgBUECaiEHCyABRAAAAAAAAAAAYg0AC0F/IQpB/f///wcgCSASIA1rIgVqIgZrIANIDQAgAEEgIAIgBgJ/AkAgA0UNACAHIAxBEGprIghBAmsgA04NACADQQJqDAELIAcgDEEQamsiCAsiB2oiAyAEECkgACALIAkQJiAAQTAgAiADIARBgIAEcxApIAAgDEEQaiAIECYgAEEwIAcgCGtBAEEAECkgACANIAUQJiAAQSAgAiADIARBgMAAcxApIAMgAiACIANIGyEKCyAMQbAEaiQAIAoLRgEBfyAAKAI8IQMjAEEQayIAJAAgAyABpyABQiCIpyACQf8BcSAAQQhqEBQQjQEhAiAAKQMIIQEgAEEQaiQAQn8gASACGwu+AgEHfyMAQSBrIgMkACADIAAoAhwiBDYCECAAKAIUIQUgAyACNgIcIAMgATYCGCADIAUgBGsiATYCFCABIAJqIQVBAiEGIANBEGohAQJ/A0ACQAJAAkAgACgCPCABIAYgA0EMahAYEI0BRQRAIAUgAygCDCIHRg0BIAdBAE4NAgwDCyAFQX9HDQILIAAgACgCLCIBNgIcIAAgATYCFCAAIAEgACgCMGo2AhAgAgwDCyABIAcgASgCBCIISyIJQQN0aiIEIAcgCEEAIAkbayIIIAQoAgBqNgIAIAFBDEEEIAkbaiIBIAEoAgAgCGs2AgAgBSAHayEFIAYgCWshBiAEIQEMAQsLIABBADYCHCAAQgA3AxAgACAAKAIAQSByNgIAQQAgBkECRg0AGiACIAEoAgRrCyEEIANBIGokACAECwkAIAAoAjwQGQsjAQF/Qcg7KAIAIgAEQANAIAAoAgARCQAgACgCBCIADQALCwu/AgEFfyMAQeAAayICJAAgAiAANgIAIwBBEGsiAyQAIAMgAjYCDCMAQZABayIAJAAgAEGgL0GQARArIgAgAkEQaiIFIgE2AiwgACABNgIUIABB/////wdBfiABayIEIARB/////wdPGyIENgIwIAAgASAEaiIBNgIcIAAgATYCECAAQbsTIAJBAEEAEIsBGiAEBEAgACgCFCIBIAEgACgCEEZrQQA6AAALIABBkAFqJAAgA0EQaiQAAkAgBSIAQQNxBEADQCAALQAARQ0CIABBAWoiAEEDcQ0ACwsDQCAAIgFBBGohACABKAIAIgNBf3MgA0GBgoQIa3FBgIGChHhxRQ0ACwNAIAEiAEEBaiEBIAAtAAANAAsLIAAgBWtBAWoiABBhIgEEfyABIAUgABArBUEACyEAIAJB4ABqJAAgAAvFAQICfwF8IwBBMGsiBiQAIAEoAgghBwJAQbQ7LQAAQQFxBEBBsDsoAgAhAQwBC0EFQZAnEAwhAUG0O0EBOgAAQbA7IAE2AgALIAYgBTYCKCAGIAQ4AiAgBiADNgIYIAYgAjgCEAJ/IAEgB0GXGyAGQQxqIAZBEGoQEiIIRAAAAAAAAPBBYyAIRAAAAAAAAAAAZnEEQCAIqwwBC0EACyEBIAYoAgwhAyAAIAEpAwA3AwAgACABKQMINwMIIAMQESAGQTBqJAALCQAgABCQARAjCwwAIAAoAghB6BwQZgsJACAAEJIBECMLVQECfyMAQTBrIgIkACABIAAoAgQiA0EBdWohASAAKAIAIQAgAiABIANBAXEEfyABKAIAIABqKAIABSAACxEBAEEwEB4gAkEwECshACACQTBqJAAgAAs7AQF/IAEgACgCBCIFQQF1aiEBIAAoAgAhACABIAIgAyAEIAVBAXEEfyABKAIAIABqKAIABSAACxEdAAs3AQF/IAEgACgCBCIDQQF1aiEBIAAoAgAhACABIAIgA0EBcQR/IAEoAgAgAGooAgAFIAALERIACzcBAX8gASAAKAIEIgNBAXVqIQEgACgCACEAIAEgAiADQQFxBH8gASgCACAAaigCAAUgAAsRDAALNQEBfyABIAAoAgQiAkEBdWohASAAKAIAIQAgASACQQFxBH8gASgCACAAaigCAAUgAAsRCwALYQECfyMAQRBrIgIkACABIAAoAgQiA0EBdWohASAAKAIAIQAgAiABIANBAXEEfyABKAIAIABqKAIABSAACxEBAEEQEB4iACACKQMINwMIIAAgAikDADcDACACQRBqJAAgAAtjAQJ/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
β src/ui/hooks/useGitBranchName.test.tsx (7 tests) 519ms
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/ui/components/messages/CompressionMessage.test.tsx (8 tests) 217ms
β src/commands/mcp/remove.test.ts (6 tests) 297ms
β src/config/extensions/consent.test.ts (15 tests) 89ms
β src/ui/components/messages/ToolMessage.test.tsx (12 tests) 1731ms
β > renders basic tool information 833ms
β src/ui/commands/mcpCommand.test.ts (5 tests) 177ms
β src/ui/components/PermissionsModifyTrustDialog.test.tsx (7 tests) 819ms
β src/ui/App.test.tsx (11 tests) 351ms
β src/ui/hooks/useHistoryManager.test.ts (8 tests) 311ms
β src/ui/hooks/useLoadingIndicator.test.tsx (6 tests) 121ms
β src/commands/extensions/enable.test.ts (7 tests) 102ms
β― src/config/config.integration.test.ts (14 tests | 1 failed) 13110ms
β Configuration Integration Tests > File Filtering and Configuration > 'should load default file filtering seβ¦' 70ms
β 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β¦' 15ms
β 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β¦' 1ms
β Configuration Integration Tests > Checkpointing Configuration > should enable checkpointing when the setting is true 8ms
Γ Configuration Integration Tests > Approval Mode Integration Tests > 'should parse --approval-mode=auto_ediβ¦' 10007ms
β 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β¦' 2728ms
β Configuration Integration Tests > Approval Mode Integration Tests > 'should parse --approval-mode=default β¦' 23ms
β Configuration Integration Tests > Approval Mode Integration Tests > 'should parse legacy --yolo flag correβ¦' 8ms
β Configuration Integration Tests > Approval Mode Integration Tests > 'should handle no approval mode argumeβ¦' 17ms
β Configuration Integration Tests > Approval Mode Integration Tests > 'should reject invalid approval mode vβ¦' 101ms
β Configuration Integration Tests > Approval Mode Integration Tests > 'should reject conflicting --yolo and β¦' 98ms
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/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/ui/components/Notifications.test.tsx (8 tests) 262ms
β src/ui/utils/commandUtils.test.ts (14 tests) 35ms
β src/ui/contexts/SessionContext.test.tsx (4 tests) 300ms
β src/ui/themes/theme-manager.test.ts (12 tests) 61ms
β src/gemini_cleanup.test.tsx (1 test) 624ms
β gemini.tsx main function cleanup > should log error when cleanupExpiredSessions fails 622ms
β src/utils/deepMerge.test.ts (13 tests) 12ms
β src/commands/extensions/link.test.ts (5 tests) 68ms
β src/ui/components/ToolStatsDisplay.test.tsx (5 tests) 639ms
β > should render "no tool calls" message when there are no active tools 428ms
β src/commands/mcp/list.test.ts (4 tests) 57ms
β src/zed-integration/connection.test.ts (7 tests) 395ms
β src/utils/sandboxUtils.test.ts (17 tests) 198ms
β src/ui/utils/MarkdownDisplay.test.tsx (30 tests) 1043ms
β > with 'Windows' line endings > renders a fenced code block without a language 458ms
β src/ui/utils/updateCheck.test.ts (10 tests) 90ms
β src/ui/utils/highlight.test.ts (16 tests) 47ms
β src/utils/commands.test.ts (12 tests) 38ms
β src/ui/utils/kittyProtocolDetector.test.ts (5 tests) 134ms
β src/ui/themes/theme.test.ts (9 tests) 22ms
β src/ui/contexts/MouseContext.test.tsx (15 tests) 138ms
β src/ui/components/DialogManager.test.tsx (18 tests) 662ms
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.
β src/ui/components/shared/RadioButtonSelect.test.tsx (5 tests) 257ms
β src/commands/extensions/install.test.ts (8 tests) 112ms
β src/config/keyBindings.test.ts (6 tests) 95ms
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' }
β src/utils/cleanup.test.ts (8 tests) 404ms
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/commands/aboutCommand.test.ts (5 tests) 259ms
stdout | src/ui/components/Header.test.tsx > > renders with a single color when theme.ui.gradient has one color
[
[
{
"color": "#FF0000",
"children": "\n βββ βββββββββ ββββββββββ ββββββ ββββββ βββββ ββββββ βββββ βββββ\nββββββ ββββββββββββββββββββββββββββββ ββββββ βββββ ββββββββ βββββ βββββ\n ββββββ βββ βββ ββββ β β ββββββββββββββ ββββ ββββββββ ββββ ββββ\n ββββββ ββββ βββββββ βββββββββ ββββ ββββ βββββββββββββ ββββ\n ββββ ββββ βββββ βββββββ ββββ βββ ββββ ββββ ββββ ββββββββ ββββ\n ββββ βββββ βββββ ββββ β β ββββ ββββ ββββ ββββ βββββββ ββββ\n ββββ βββββββββββ ββββββββββ βββββ βββββ βββββ βββββ βββββββ βββββ\nβββ βββββββββ ββββββββββ βββββ βββββ βββββ βββββ βββββ βββββ\n"
},
null
]
]
β src/ui/components/Header.test.tsx (9 tests) 863ms
β > renders the long logo on a wide terminal 491ms
β src/ui/components/AppHeader.test.tsx (8 tests) 942ms
β > should render the banner with default text 469ms
β src/ui/hooks/useConsoleMessages.test.tsx (7 tests) 139ms
β src/ui/IdeIntegrationNudge.test.tsx (6 tests) 2518ms
β IdeIntegrationNudge > renders correctly with default options 434ms
β IdeIntegrationNudge > handles "Yes" selection 357ms
β IdeIntegrationNudge > handles "No" selection 480ms
β IdeIntegrationNudge > handles "Dismiss" selection 571ms
β IdeIntegrationNudge > displays correct text and handles selection when extension is pre-installed 391ms
β src/ui/utils/mouse.test.ts (17 tests) 95ms
β src/ui/components/messages/ShellToolMessage.test.tsx (3 tests) 963ms
β > interactive shell focus > clicks inside the shell area sets focus to true 715ms
β src/ui/utils/terminalSetup.test.ts (9 tests) 174ms
β src/commands/extensions/examples/mcp-server/example.test.ts (7 tests) 1002ms
β src/ui/components/messages/ToolResultDisplay.test.tsx (8 tests) 1252ms
β ToolResultDisplay > truncates very long string results 918ms
β src/utils/readStdin.test.ts (6 tests) 115ms
β src/ui/components/messages/Todo.test.tsx (14 tests) 690ms
β src/ui/commands/permissionsCommand.test.ts (7 tests) 121ms
β src/zed-integration/fileSystemService.test.ts (5 tests) 13ms
β src/ui/hooks/useFlickerDetector.test.ts (6 tests) 84ms
β src/ui/components/views/McpStatus.test.tsx (11 tests) 293ms
β src/commands/extensions/list.test.ts (5 tests) 12ms
β src/ui/components/AlternateBufferQuittingDisplay.test.tsx (5 tests) 221ms
β src/ui/commands/toolsCommand.test.ts (4 tests) 208ms
β src/ui/hooks/useFocus.test.tsx (6 tests) 170ms
β src/ui/components/messages/ToolConfirmationMessage.test.tsx (10 tests) 645ms
β src/ui/components/EditorSettingsDialog.test.tsx (5 tests) 784ms
β src/ui/commands/compressCommand.test.ts (5 tests) 64ms
β src/ui/hooks/usePrivacySettings.test.tsx (4 tests) 297ms
β src/ui/hooks/useBanner.test.ts (6 tests) 125ms
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) 125ms
β src/utils/dialogScopeUtils.test.ts (4 tests) 26ms
β src/ui/components/shared/EnumSelector.test.tsx (9 tests) 415ms
β src/ui/commands/initCommand.test.ts (3 tests) 112ms
β src/core/initializer.test.ts (5 tests) 46ms
β src/ui/components/FolderTrustDialog.test.tsx (8 tests) 1254ms
β FolderTrustDialog > should render the dialog with title and description 457ms
β src/ui/hooks/useTimer.test.tsx (8 tests) 146ms
β src/ui/privacy/CloudFreePrivacyNotice.test.tsx (9 tests) 944ms
β src/ui/utils/textOutput.test.ts (10 tests) 48ms
β src/utils/userStartupWarnings.test.ts (5 tests) 155ms
β src/ui/commands/docsCommand.test.ts (3 tests) 63ms
β src/commands/extensions.test.tsx (3 tests) 8ms
β src/ui/components/ConfigInitDisplay.test.tsx (4 tests) 302ms
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/commands/extensions/validate.test.ts (5 tests) 135ms
β src/ui/commands/clearCommand.test.ts (2 tests) 78ms
β src/ui/components/PrepareLabel.test.tsx (6 tests) 447ms
β PrepareLabel > renders plain label when no match (short label) 301ms
β src/ui/components/GradientRegression.test.tsx (5 tests) 1068ms
β Gradient Crash Regression Tests > should not crash when theme.ui.gradient is empty 395ms
β Gradient Crash Regression Tests > should not crash when theme.ui.gradient is empty 497ms
β src/ui/commands/bugCommand.test.ts (2 tests) 179ms
β src/ui/commands/policiesCommand.test.ts (4 tests) 351ms
β src/config/extensions/variables.test.ts (10 tests) 37ms
β src/ui/hooks/useAnimatedScrollbar.test.tsx (7 tests) 140ms
β src/utils/persistentState.test.ts (5 tests) 18ms
β src/ui/components/AnsiOutput.test.tsx (12 tests) 460ms
β src/ui/components/views/ExtensionsList.test.tsx (10 tests) 457ms
β src/ui/components/shared/Scrollable.test.tsx (4 tests) 475ms
β src/ui/components/ConsentPrompt.test.tsx (5 tests) 91ms
β src/ui/components/ThemeDialog.test.tsx (4 tests) 4230ms
β ThemeDialog Snapshots > should render correctly in theme selection mode 2773ms
β ThemeDialog Snapshots > should render correctly in scope selector mode 690ms
β ThemeDialog Snapshots > should call onCancel when ESC is pressed 387ms
β ThemeDialog Snapshots > should call refreshStatic when a theme is selected 379ms
β src/config/auth.test.ts (8 tests) 39ms
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/commands/extensions/new.test.ts (4 tests) 222ms
β src/ui/components/SuggestionsDisplay.test.tsx (6 tests) 283ms
β src/ui/auth/ApiAuthDialog.test.tsx (5 tests) 581ms
β src/config/extensions/storage.test.ts (5 tests) 192ms
β src/ui/components/ContextSummaryDisplay.test.tsx (4 tests) 310ms
β src/test-utils/render.test.tsx (6 tests) 96ms
β src/ui/utils/displayUtils.test.ts (8 tests) 18ms
β src/ui/components/IdeTrustChangeDialog.test.tsx (6 tests) 390ms
β src/ui/components/ShellInputPrompt.test.tsx (7 tests) 141ms
β src/ui/utils/markdownUtilities.test.ts (7 tests) 29ms
β src/ui/utils/formatters.test.ts (14 tests) 11ms
β src/ui/components/MainContent.test.tsx (2 tests) 160ms
β src/ui/commands/terminalSetupCommand.test.ts (5 tests) 38ms
β src/test-utils/mockCommandContext.test.ts (3 tests) 128ms
β src/ui/utils/directoryUtils.test.ts (5 tests) 48ms
β src/utils/windowTitle.test.ts (7 tests) 47ms
β src/ui/auth/AuthInProgress.test.tsx (5 tests) 350ms
stderr | src/ui/components/GeminiRespondingSpinner.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/GeminiRespondingSpinner.test.tsx (5 tests) 167ms
β src/ui/hooks/useBatchedScroll.test.ts (7 tests) 127ms
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/components/QueuedMessageDisplay.test.tsx (5 tests) 254ms
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/utils/startupWarnings.test.ts (4 tests) 66ms
β src/ui/utils/input.test.ts (6 tests) 28ms
β src/ui/commands/statsCommand.test.ts (3 tests) 67ms
β src/ui/utils/clipboardUtils.test.ts (6 tests) 29ms
β src/core/auth.test.ts (3 tests) 71ms
β src/ui/components/messages/ToolMessageRawMarkdown.test.tsx (6 tests) 873ms
β src/ui/components/DetailedMessagesDisplay.test.tsx (3 tests) 338ms
β src/ui/components/shared/DescriptiveRadioButtonSelect.test.tsx (2 tests) 150ms
β src/ui/commands/helpCommand.test.ts (2 tests) 126ms
β src/ui/commands/quitCommand.test.ts (1 test) 209ms
β src/ui/hooks/useMouseClick.test.ts (2 tests) 161ms
β src/ui/utils/ui-sizing.test.ts (10 tests) 11ms
β src/ui/components/ContextUsageDisplay.test.tsx (3 tests) 289ms
β src/utils/version.test.ts (3 tests) 35ms
β src/ui/hooks/useMemoryMonitor.test.tsx (3 tests) 148ms
β src/ui/commands/privacyCommand.test.ts (2 tests) 68ms
β src/commands/mcp.test.ts (3 tests) 127ms
β src/ui/components/SessionSummaryDisplay.test.tsx (1 test) 402ms
β > renders the summary display with a title 401ms
β src/ui/hooks/useMouse.test.ts (4 tests) 170ms
β src/ui/hooks/useReactToolScheduler.test.ts (1 test) 125ms
β src/ui/commands/themeCommand.test.ts (2 tests) 59ms
β src/ui/privacy/PrivacyNotice.test.tsx (4 tests) 343ms
β src/commands/utils.test.ts (2 tests) 6ms
β src/ui/components/Help.test.tsx (3 tests) 336ms
β src/ui/components/QuittingDisplay.test.tsx (2 tests) 51ms
β src/ui/components/ShowMoreLines.test.tsx (5 tests) 219ms
β src/ui/commands/settingsCommand.test.ts (2 tests) 54ms
β src/ui/components/ExitWarning.test.tsx (4 tests) 67ms
β src/ui/commands/modelCommand.test.ts (2 tests) 65ms
β src/ui/commands/corgiCommand.test.ts (2 tests) 88ms
β src/utils/resolvePath.test.ts (7 tests) 12ms
β src/ui/commands/authCommand.test.ts (2 tests) 53ms
β src/ui/commands/editorCommand.test.ts (2 tests) 106ms
β src/ui/components/ShellConfirmationDialog.test.tsx (4 tests) 419ms
β src/core/theme.test.ts (3 tests) 26ms
β src/ui/utils/CodeColorizer.test.tsx (1 test) 405ms
β colorizeCode > renders empty lines correctly when useAlternateBuffer is true 404ms
β src/ui/components/AboutBox.test.tsx (5 tests) 434ms
β AboutBox > renders with required props 304ms
β src/utils/checks.test.ts (3 tests) 19ms
β src/utils/events.test.ts (2 tests) 16ms
β src/services/prompt-processors/argumentProcessor.test.ts (2 tests) 41ms
β src/config/settingPaths.test.ts (2 tests) 36ms
β src/ui/components/views/ToolsList.test.tsx (3 tests) 526ms
β > renders correctly with descriptions 448ms
β src/utils/updateEventEmitter.test.ts (1 test) 72ms
β src/ui/components/messages/GeminiMessage.test.tsx (4 tests) 335ms
β src/ui/components/views/ChatList.test.tsx (3 tests) 325ms
β src/ui/components/MemoryUsageDisplay.test.tsx (2 tests) 268ms
β src/utils/math.test.ts (7 tests) 12ms
β src/ui/hooks/useModelCommand.test.tsx (3 tests) 70ms
β src/ui/components/AutoAcceptIndicator.test.tsx (3 tests) 64ms
β src/ui/privacy/CloudPaidPrivacyNotice.test.tsx (2 tests) 387ms
β CloudPaidPrivacyNotice > renders correctly 343ms
β src/ui/components/LoopDetectionConfirmation.test.tsx (2 tests) 302ms
β src/ui/components/messages/UserMessage.test.tsx (3 tests) 176ms
β src/ui/privacy/GeminiPrivacyNotice.test.tsx (2 tests) 139ms
β src/ui/components/RawMarkdownIndicator.test.tsx (2 tests) 156ms
β src/ui/components/CopyModeWarning.test.tsx (2 tests) 79ms
β src/ui/components/ConsoleSummaryDisplay.test.tsx (3 tests) 59ms
β src/ui/components/messages/InfoMessage.test.tsx (3 tests) 194ms
β src/ui/components/Banner.test.tsx (3 tests) 134ms
β src/ui/components/ThemedGradient.test.tsx (1 test) 130ms
β src/utils/processUtils.test.ts (1 test) 5ms
β src/ui/components/messages/WarningMessage.test.tsx (2 tests) 61ms
β src/ui/components/CliSpinner.test.tsx (1 test) 73ms
β src/ui/components/Tips.test.tsx (2 tests) 103ms
β src/ui/components/StickyHeader.test.tsx (2 tests) 184ms
β src/ui/components/messages/ErrorMessage.test.tsx (2 tests) 169ms
β src/ui/utils/InlineMarkdownRenderer.test.ts (7 tests) 35ms
β src/ui/components/ShellModeIndicator.test.tsx (1 test) 83ms
β src/ui/components/UpdateNotification.test.tsx (1 test) 39ms
β―β―β―β―β―β―β― Failed Tests 3 β―β―β―β―β―β―β―
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/3]β―
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:207:3
205| });
206|
207| it('should not include profile command when isDevelopment is false',β¦
| ^
208| process.env['NODE_ENV'] = 'production';
209| const { BuiltinCommandLoader } = await import('./BuiltinCommandLoaβ¦
β―β―β―β―β―β―β―β―β―β―β―β―β―β―β―β―β―β―β―β―β―β―β―β―[2/3]β―
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:216:3
214| });
215|
216| it('should include profile command when isDevelopment is true', asynβ¦
| ^
217| process.env['NODE_ENV'] = 'development';
218| const { BuiltinCommandLoader } = await import('./BuiltinCommandLoaβ¦
β―β―β―β―β―β―β―β―β―β―β―β―β―β―β―β―β―β―β―β―β―β―β―β―[3/3]β―
Test Files 2 failed | 282 passed (284)
Tests 3 failed | 3724 passed | 2 skipped (3729)
Start at 20:52:04
Duration 170.36s (transform 59.01s, setup 31.37s, collect 3022.45s, tests 121.85s, environment 212ms, prepare 114.25s)
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.20.0
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.20.0 test
> vitest run
RUN v3.2.4 /startdir/src/gemini-cli/packages/core
Coverage enabled with v8
β src/utils/memoryImportProcessor.test.ts (25 tests) 176ms
β src/policy/policy-engine.test.ts (60 tests) 325ms
β src/utils/editCorrector.test.ts (40 tests) 159ms
β src/utils/fileUtils.test.ts (71 tests) 230ms
β src/ide/ide-client.test.ts (35 tests) 315ms
β src/mcp/oauth-provider.test.ts (34 tests) 1713ms
β MCPOAuthProvider > authenticate > should handle invalid callback request 1014ms
β src/tools/mcp-tool.test.ts (42 tests) 354ms
β src/policy/config.test.ts (19 tests) 2866ms
β createPolicyEngineConfig > should return ASK_USER for write tools and ALLOW for read-only tools by default 1431ms
β createPolicyEngineConfig > should have YOLO allow-all rule beat write tool rules in YOLO mode 326ms
β src/tools/ripGrep.test.ts (51 tests | 1 skipped) 3619ms
β RipGrepTool > error handling and edge cases > should handle 'empty files' gracefully 553ms
β RipGrepTool > getDescription > should generate correct description with pattern and path 339ms
β RipGrepTool > getDescription > should generate correct description with pattern, include, and path 355ms
β src/tools/edit.test.ts (56 tests) 1107ms
β src/hooks/hookRunner.test.ts (17 tests) 641ms
β src/code_assist/oauth2.test.ts (25 tests) 463ms
β src/fallback/handler.test.ts (30 tests) 368ms
β src/core/logger.test.ts (39 tests) 1454ms
β src/utils/filesearch/fileSearch.test.ts (27 tests) 546ms
β src/services/modelConfigService.test.ts (23 tests) 56ms
β src/telemetry/uiTelemetry.test.ts (19 tests) 62ms
β src/telemetry/memory-monitor.test.ts (31 tests) 144ms
β src/tools/web-fetch.test.ts (32 tests) 241ms
β src/utils/editor.test.ts (110 tests) 96ms
β src/core/turn.test.ts (21 tests) 76ms
β src/core/baseLlmClient.test.ts (24 tests) 53ms
β src/agents/executor.test.ts (32 tests) 354ms
β src/telemetry/clearcut-logger/clearcut-logger.test.ts (41 tests) 588ms
β src/utils/paths.test.ts (88 tests | 17 skipped) 54ms
β src/tools/read-many-files.test.ts (31 tests) 973ms
β src/config/config.test.ts (97 tests) 904ms
β src/utils/shell-utils.test.ts (77 tests | 2 skipped) 251ms
β src/services/loopDetectionService.test.ts (47 tests) 2002ms
β LoopDetectionService > Content Loop Detection > should not detect a loop for random content 1764ms
β src/tools/mcp-client.test.ts (34 tests) 1030ms
β connectToMcpServer with OAuth > should discover oauth config if not in www-authenticate header 527ms
β src/core/coreToolScheduler.test.ts (34 tests) 702ms
β src/tools/smart-edit.test.ts (24 tests) 722ms
β src/telemetry/loggers.test.ts (34 tests) 339ms
β src/utils/memoryDiscovery.test.ts (29 tests) 1653ms
β memoryDiscovery > refreshServerHierarchicalMemory should refresh memory and update config 470ms
β src/tools/write-file.test.ts (31 tests) 349ms
β src/core/client.test.ts (52 tests | 1 skipped) 1566ms
β src/tools/read-file.test.ts (29 tests) 610ms
β src/utils/systemEncoding.test.ts (38 tests) 216ms
β src/output/stream-json-formatter.test.ts (19 tests) 68ms
β src/utils/workspaceContext.test.ts (34 tests) 79ms
β src/tools/memoryTool.test.ts (19 tests) 98ms
β src/mcp/oauth-token-storage.test.ts (28 tests) 88ms
β src/hooks/types.test.ts (35 tests) 45ms
β src/utils/googleErrors.test.ts (13 tests) 20ms
β src/tools/grep.test.ts (24 tests) 500ms
β src/hooks/hookRegistry.test.ts (17 tests) 15ms
β src/code_assist/converter.test.ts (24 tests) 8ms
β src/utils/googleQuotaErrors.test.ts (15 tests) 64ms
β src/utils/filesearch/crawler.test.ts (18 tests) 287ms
β src/mcp/token-storage/keychain-token-storage.test.ts (29 tests) 1479ms
β src/utils/pathReader.test.ts (18 tests) 531ms
β src/hooks/hookAggregator.test.ts (10 tests) 32ms
β src/policy/toml-loader.test.ts (25 tests) 577ms
β src/core/prompts.test.ts (40 tests) 193ms
β src/mcp/oauth-utils.test.ts (29 tests) 152ms
β src/ide/ideContext.test.ts (23 tests) 72ms
β src/tools/modifiable-tool.test.ts (12 tests) 101ms
β src/utils/userAccountManager.test.ts (23 tests) 278ms
β src/telemetry/gcp-exporters.test.ts (18 tests) 307ms
β src/code_assist/server.test.ts (14 tests) 264ms
β src/tools/glob.test.ts (37 tests) 3627ms
β GlobTool > execute > should find files with special characters in the name 356ms
β GlobTool > execute > should find files with special characters like [] and () in the path 321ms
β src/utils/partUtils.test.ts (37 tests) 45ms
β src/utils/gitIgnoreParser.test.ts (25 tests) 435ms
β src/tools/ls.test.ts (21 tests) 698ms
β src/utils/getFolderStructure.test.ts (15 tests) 345ms
β src/core/geminiChat.test.ts (48 tests) 7986ms
β GeminiChat > sendMessageStream > should fail if the stream ends with an empty part and has no finishReason 506ms
β GeminiChat > sendMessageStream > should throw an error when a tool call is followed by an empty stream response 509ms
β GeminiChat > sendMessageStream > should throw InvalidStreamError when no tool call and no finish reason 527ms
β GeminiChat > sendMessageStream > should throw InvalidStreamError when no tool call and empty response text 514ms
β GeminiChat > sendMessageStream > should throw InvalidStreamError when finishReason is MALFORMED_FUNCTION_CALL 519ms
β GeminiChat > sendMessageStream > should retry when finishReason is MALFORMED_FUNCTION_CALL 549ms
β GeminiChat > sendMessageStream with retries > should yield a RETRY event when an invalid stream is encountered 510ms
β GeminiChat > sendMessageStream with retries > should retry on invalid content, succeed, and report metrics 569ms
β GeminiChat > sendMessageStream with retries > should set temperature to 1 on retry 556ms
β GeminiChat > sendMessageStream with retries > should fail after all retries on persistent invalid content and report metrics 584ms
β GeminiChat > should correctly retry and append to an existing history mid-conversation 565ms
β GeminiChat > should retry if the model returns a completely empty stream (no chunks) 524ms
β GeminiChat > should discard valid partial content from a failed attempt upon retry 524ms
β src/services/fileDiscoveryService.test.ts (20 tests) 350ms
β src/utils/ignorePatterns.test.ts (28 tests) 18ms
β src/utils/retry.test.ts (24 tests) 123ms
β src/hooks/hookEventHandler.test.ts (9 tests) 150ms
β src/telemetry/sanitize.test.ts (18 tests) 71ms
β src/telemetry/startupProfiler.test.ts (21 tests) 106ms
β src/hooks/hookPlanner.test.ts (9 tests) 61ms
β src/utils/generateContentResponseUtilities.test.ts (29 tests) 10ms
β src/telemetry/activity-monitor.test.ts (22 tests) 79ms
β src/safety/checker-runner.test.ts (9 tests) 130ms
β src/code_assist/oauth-credential-storage.test.ts (16 tests) 110ms
β src/telemetry/semantic.test.ts (21 tests) 53ms
β src/output/json-formatter.test.ts (15 tests) 68ms
β src/services/gitService.test.ts (15 tests) 131ms
β src/services/modelConfig.integration.test.ts (10 tests) 13ms
β src/utils/events.test.ts (15 tests) 188ms
β src/safety/built-in.test.ts (14 tests) 75ms
β src/mcp/token-storage/file-token-storage.test.ts (16 tests) 2089ms
β src/telemetry/rate-limiter.test.ts (24 tests) 137ms
β src/routing/strategies/classifierStrategy.test.ts (8 tests) 39ms
β src/tools/message-bus-integration.test.ts (9 tests) 178ms
β src/mcp/token-storage/hybrid-token-storage.test.ts (11 tests) 188ms
β― src/services/shellExecutionService.test.ts (49 tests | 2 failed | 1 skipped) 11341ms
β ShellExecutionService > Successful Execution > should execute a command and capture output 124ms
β ShellExecutionService > Successful Execution > should strip ANSI codes from output 30ms
β ShellExecutionService > Successful Execution > should correctly decode multi-byte characters split across chunks 12ms
β ShellExecutionService > Successful Execution > should handle commands with no output 23ms
β ShellExecutionService > Successful Execution > should capture large output (10000 lines) 524ms
β ShellExecutionService > Successful Execution > should not add extra padding but preserve explicit trailing whitespace 10ms
β ShellExecutionService > Successful Execution > should truncate output exceeding the scrollback limit 7ms
β ShellExecutionService > Successful Execution > should call onPid with the process id 11ms
β ShellExecutionService > pty interaction > should write to the pty and trigger a render 17ms
β ShellExecutionService > pty interaction > should resize the pty and the headless terminal 11ms
β ShellExecutionService > pty interaction > should not resize the pty if it is not active 3ms
β ShellExecutionService > pty interaction > should ignore errors when resizing an exited pty 4ms
β ShellExecutionService > pty interaction > should re-throw other errors during resize 16ms
β ShellExecutionService > pty interaction > should scroll the headless terminal 12ms
β ShellExecutionService > pty interaction > should not throw when resizing a pty that has already exited (Windows) 1ms
β ShellExecutionService > Failed Execution > should capture a non-zero exit code 5ms
β ShellExecutionService > Failed Execution > should capture a termination signal 7ms
β ShellExecutionService > Failed Execution > should handle a synchronous spawn error 10ms
β ShellExecutionService > Aborting Commands > should abort a running process and set the aborted flag 7ms
β ShellExecutionService > Aborting Commands > should send SIGTERM and then SIGKILL on abort 205ms
β ShellExecutionService > Aborting Commands > should resolve without waiting for the processing chain on abort 12ms
β ShellExecutionService > Binary Output > should detect binary output and switch to progress events 28ms
β ShellExecutionService > Binary Output > should not emit data events after binary is detected 18ms
β ShellExecutionService > Platform-Specific Behavior > should use powershell.exe on Windows 27ms
β ShellExecutionService > Platform-Specific Behavior > should use bash on Linux 17ms
β ShellExecutionService > AnsiOutput rendering > should call onOutputEvent with AnsiOutput when showColor is true 11ms
β ShellExecutionService > AnsiOutput rendering > should call onOutputEvent with AnsiOutput when showColor is false 23ms
β ShellExecutionService > AnsiOutput rendering > should handle multi-line output correctly when showColor is false 33ms
β ShellExecutionService child_process fallback > Successful Execution > should execute a command and capture stdout and stderr 2ms
β ShellExecutionService child_process fallback > Successful Execution > should strip ANSI codes from output 15ms
β ShellExecutionService child_process fallback > Successful Execution > should correctly decode multi-byte characters split across chunks 1ms
β ShellExecutionService child_process fallback > Successful Execution > should handle commands with no output 1ms
β ShellExecutionService child_process fallback > Successful Execution > should truncate stdout using a sliding window and show a warning
β ShellExecutionService child_process fallback > Failed Execution > should capture a non-zero exit code and format output correctly 1ms
β ShellExecutionService child_process fallback > Failed Execution > should capture a termination signal 1ms
β ShellExecutionService child_process fallback > Failed Execution > should handle a spawn error 6ms
β ShellExecutionService child_process fallback > Failed Execution > handles errors that do not fire the exit event 1ms
β ShellExecutionService child_process fallback > Aborting Commands > on 'linux' > should abort a running process and set the aborted flag 9ms
β ShellExecutionService child_process fallback > Aborting Commands > on 'win32' > should abort a running process and set the aborted flag 1ms
β ShellExecutionService child_process fallback > Aborting Commands > should gracefully attempt SIGKILL on linux if SIGTERM fails 16ms
β ShellExecutionService child_process fallback > Binary Output > should detect binary output and switch to progress events 1ms
β ShellExecutionService child_process fallback > Binary Output > should not emit data events after binary is detected 9ms
β ShellExecutionService child_process fallback > Platform-Specific Behavior > should use powershell.exe on Windows 1ms
β ShellExecutionService child_process fallback > Platform-Specific Behavior > should use bash and detached process group on Linux 1ms
β ShellExecutionService execution method selection > should use node-pty when shouldUseNodePty is true and pty is available 15ms
β ShellExecutionService execution method selection > should use child_process when shouldUseNodePty is false 1ms
β ShellExecutionService execution method selection > should fall back to child_process if pty is not available even if shouldUseNodePty is true 1ms
Γ ShellExecutionService environment variables > should use a sanitized environment when in a GitHub run 5034ms
β 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".
Γ ShellExecutionService environment variables > should include the full process.env when not in a GitHub run 5003ms
β 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/utils/llm-edit-fixer.test.ts (8 tests) 128ms
β src/core/contentGenerator.test.ts (16 tests) 117ms
β src/tools/shell.test.ts (27 tests | 1 skipped) 1323ms
β src/ide/ide-installer.test.ts (15 tests) 69ms
β src/utils/secure-browser-launcher.test.ts (14 tests) 61ms
β src/utils/bfsFileSearch.test.ts (11 tests) 188ms
β src/confirmation-bus/message-bus.test.ts (10 tests) 76ms
β src/config/models.test.ts (23 tests) 40ms
β src/utils/channel.test.ts (22 tests) 213ms
β src/tools/tool-registry.test.ts (14 tests) 531ms
β ToolRegistry > discoverTools > should return a DISCOVERED_TOOL_EXECUTION_ERROR on tool failure 316ms
β src/telemetry/high-water-mark-tracker.test.ts (18 tests) 141ms
β src/utils/errorReporting.test.ts (6 tests) 541ms
β reportError > should generate a report and log the path 355ms
β src/mcp/google-auth-provider.test.ts (15 tests) 215ms
β src/core/loggingContentGenerator.test.ts (7 tests) 184ms
β src/hooks/hookTranslator.test.ts (10 tests) 155ms
β src/tools/tools.test.ts (11 tests) 61ms
β src/routing/strategies/compositeStrategy.test.ts (6 tests) 46ms
β src/utils/terminalSerializer.test.ts (16 tests) 545ms
β src/telemetry/sdk.test.ts (9 tests) 209ms
β src/ide/process-utils.test.ts (8 tests) 8ms
β src/code_assist/setup.test.ts (7 tests) 71ms
β src/core/fakeContentGenerator.test.ts (7 tests) 45ms
β src/mcp/sa-impersonation-provider.test.ts (8 tests) 114ms
β src/tools/diffOptions.test.ts (9 tests) 24ms
β src/utils/environmentContext.test.ts (6 tests) 213ms
β src/utils/filesearch/ignore.test.ts (12 tests) 132ms
β src/mcp/token-storage/base-token-storage.test.ts (12 tests) 54ms
β src/agents/schema-utils.test.ts (6 tests) 97ms
β src/telemetry/activity-detector.test.ts (13 tests) 48ms
β src/code_assist/experiments/client_metadata.test.ts (13 tests) 600ms
β src/services/chatRecordingService.test.ts (10 tests) 197ms
β src/services/contextManager.test.ts (5 tests) 59ms
β src/core/nonInteractiveToolExecutor.test.ts (8 tests) 220ms
β src/ide/detect-ide.test.ts (15 tests) 86ms
β src/core/recordingContentGenerator.test.ts (4 tests) 51ms
β src/availability/modelAvailabilityService.test.ts (9 tests) 44ms
β src/agents/invocation.test.ts (11 tests) 71ms
β src/agents/utils.test.ts (12 tests) 70ms
β src/services/chatCompressionService.test.ts (17 tests) 125ms
β src/utils/filesearch/crawlCache.test.ts (9 tests) 102ms
β src/code_assist/experiments/experiments.test.ts (4 tests) 91ms
β src/utils/tokenCalculation.test.ts (7 tests) 10ms
β src/tools/write-todos.test.ts (9 tests) 168ms
β src/prompts/prompt-registry.test.ts (7 tests) 124ms
β src/utils/pathCorrector.test.ts (4 tests) 150ms
β src/availability/policyCatalog.test.ts (10 tests) 5ms
β src/tools/base-tool-invocation.test.ts (2 tests) 34ms
β src/code_assist/codeAssist.test.ts (7 tests) 70ms
β src/utils/delay.test.ts (7 tests) 109ms
β src/utils/debugLogger.test.ts (6 tests) 19ms
β src/utils/nextSpeakerChecker.test.ts (10 tests) 110ms
β src/utils/installationManager.test.ts (4 tests) 26ms
β src/telemetry/config.test.ts (11 tests) 42ms
β src/utils/customHeaderUtils.test.ts (11 tests) 41ms
β src/utils/schemaValidator.test.ts (7 tests) 223ms
β src/routing/strategies/fallbackStrategy.test.ts (4 tests) 8ms
β src/utils/summarizer.test.ts (8 tests) 278ms
β src/utils/textUtils.test.ts (12 tests) 35ms
β src/core/apiKeyCredentialStorage.test.ts (7 tests) 119ms
β src/utils/safeJsonStringify.test.ts (8 tests) 15ms
β src/utils/thoughtUtils.test.ts (11 tests) 44ms
β src/hooks/hookSystem.test.ts (9 tests) 97ms
β src/tools/mcp-client-manager.test.ts (11 tests) 32ms
β src/tools/web-search.test.ts (9 tests) 298ms
β src/routing/modelRouterService.test.ts (10 tests) 247ms
β src/routing/strategies/overrideStrategy.test.ts (3 tests) 37ms
β src/utils/geminiIgnoreParser.test.ts (2 tests) 163ms
β src/availability/policyHelpers.test.ts (4 tests) 10ms
β src/services/modelConfig.golden.test.ts (1 test) 31ms
β src/config/storage.test.ts (6 tests) 17ms
β src/safety/context-builder.test.ts (3 tests) 31ms
β src/agents/registry.test.ts (12 tests) 82ms
working stdoutworking stderr β src/utils/stdio.test.ts (2 tests) 67ms
β src/utils/filesearch/result-cache.test.ts (3 tests) 28ms
β src/agents/codebase-investigator.test.ts (2 tests) 3ms
β src/services/fileSystemService.test.ts (3 tests) 51ms
β src/prompts/mcp-prompts.test.ts (2 tests) 23ms
β src/utils/errorParsing.test.ts (10 tests) 26ms
β src/safety/registry.test.ts (4 tests) 24ms
β src/telemetry/telemetry-utils.test.ts (6 tests) 11ms
β src/core/tokenLimits.test.ts (5 tests) 17ms
β src/utils/formatters.test.ts (4 tests) 18ms
β src/index.test.ts (1 test) 14ms
β src/commands/extensions.test.ts (1 test) 16ms
β src/routing/strategies/defaultStrategy.test.ts (1 test) 52ms
β src/utils/extensionLoader.test.ts (9 tests | 1 skipped) 44ms
β src/agents/subagent-tool-wrapper.test.ts (7 tests) 74ms
β src/utils/flashFallback.test.ts (4 tests) 15ms
β src/config/flashFallback.test.ts (6 tests) 7ms
β src/utils/tool-utils.test.ts (8 tests) 8ms
β src/telemetry/telemetry.test.ts (2 tests) 29ms
β src/telemetry/metrics.test.ts (68 tests) 35773ms
β Telemetry Metrics > recordFlickerFrame > does not record metrics if not initialized 2093ms
β Telemetry Metrics > recordFlickerFrame > records a flicker frame event when initialized 2984ms
β Telemetry Metrics > recordExitFail > does not record metrics if not initialized 2502ms
β Telemetry Metrics > recordExitFail > records a exit fail event when initialized 2713ms
β Telemetry Metrics > recordSlowRender > does not record metrics if not initialized 2326ms
β Telemetry Metrics > recordSlowRender > records a slow render event when initialized 2216ms
β Telemetry Metrics > initializeMetrics > should apply common attributes including email 3656ms
β Telemetry Metrics > recordChatCompressionMetrics > does not record metrics if not initialized 2560ms
β Telemetry Metrics > recordChatCompressionMetrics > records token compression with the correct attributes 2897ms
β Telemetry Metrics > recordTokenUsageMetrics > should not record metrics if not initialized 3239ms
β Telemetry Metrics > recordTokenUsageMetrics > should record token usage for 'input' type with 100 tokens for model 'gemini-pro' 2063ms
β Telemetry Metrics > recordTokenUsageMetrics > should record token usage for 'output' type with 50 tokens for model 'gemini-pro' 1794ms
β Telemetry Metrics > recordTokenUsageMetrics > should record token usage for 'thought' type with 25 tokens for model 'gemini-pro' 732ms
β Telemetry Metrics > recordTokenUsageMetrics > should record token usage for 'cache' type with 75 tokens for model 'gemini-pro' 490ms
β Telemetry Metrics > recordLinesChanged metric > should record lines removed with function_name after initialization 465ms
β―β―β―β―β―β―β― Failed Tests 2 β―β―β―β―β―β―β―
FAIL src/services/shellExecutionService.test.ts > ShellExecutionService environment variables > should use a sanitized environment when in a GitHub run
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/shellExecutionService.test.ts:1303:3
1301| });
1302|
1303| it('should use a sanitized environment when in a GitHub run', async β¦
| ^
1304| // Mock the environment to simulate a GitHub Actions run
1305| vi.stubEnv('GITHUB_SHA', 'test-sha');
β―β―β―β―β―β―β―β―β―β―β―β―β―β―β―β―β―β―β―β―β―β―β―β―[1/2]β―
FAIL src/services/shellExecutionService.test.ts > ShellExecutionService environment variables > should include the full process.env when not in a GitHub run
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/shellExecutionService.test.ts:1356:3
1354| });
1355|
1356| it('should include the full process.env when not in a GitHub run', aβ¦
| ^
1357| vi.stubEnv('MY_TEST_VAR', 'test-value');
1358| vi.stubEnv('GITHUB_SHA', '');
β―β―β―β―β―β―β―β―β―β―β―β―β―β―β―β―β―β―β―β―β―β―β―β―[2/2]β―
Test Files 1 failed | 180 passed (181)
Tests 2 failed | 3438 passed | 24 skipped (3464)
Start at 20:54:56
Duration 54.11s (transform 51.05s, setup 11.85s, collect 670.06s, tests 107.82s, environment 136ms, prepare 82.08s)
JUNIT report written to /startdir/src/gemini-cli/packages/core/junit.xml
npm error Lifecycle script `test` failed with error:
npm error code 1
npm error path /startdir/src/gemini-cli/packages/core
npm error workspace @google/gemini-cli-core@0.20.0
npm error location /startdir/src/gemini-cli/packages/core
npm error command failed
npm error command sh -c vitest run
> gemini-cli-vscode-ide-companion@0.20.0 test
> vitest run
RUN v3.2.4 /startdir/src/gemini-cli/packages/vscode-ide-companion
β src/open-files-manager.test.ts (17 tests) 27ms
β src/extension.test.ts (11 tests) 82ms
β src/ide-server.test.ts (13 tests | 1 skipped) 240ms
Test Files 3 passed (3)
Tests 40 passed | 1 skipped (41)
Start at 20:55:52
Duration 1.93s (transform 572ms, setup 0ms, collect 1.76s, tests 348ms, environment 0ms, prepare 1.25s)
==> ERROR: A failure occurred in check().
Aborting...
==> ERROR: Build failed, check /home/alhp/workspace/chroot/build_12106ced-d05a-41c6-85a8-55de7d2d8e6d/build