Download packages/cli/src/test-utils/AppRig.test.tsx from SaylorTwift/gemini-cli: direct link, hf CLI and curl.
- Browser
- Download file 2.39 kB
-
https://huggingface.co/SaylorTwift/gemini-cli/resolve/main/packages/cli/src/test-utils/AppRig.test.tsx
- Command line
-
hf download hf://SaylorTwift/gemini-cli/packages/cli/src/test-utils/AppRig.test.tsx
-
curl -L -o AppRig.test.tsx https://huggingface.co/SaylorTwift/gemini-cli/resolve/main/packages/cli/src/test-utils/AppRig.test.tsx
2.39 kB
| /** | |
| * @license | |
| * Copyright 2026 Google LLC | |
| * SPDX-License-Identifier: Apache-2.0 | |
| */ | |
| import { describe, it, afterEach, expect } from 'vitest'; | |
| import { AppRig } from './AppRig.js'; | |
| import path from 'node:path'; | |
| import { fileURLToPath } from 'node:url'; | |
| import { debugLogger } from '@google/gemini-cli-core'; | |
| const __dirname = path.dirname(fileURLToPath(import.meta.url)); | |
| describe('AppRig', () => { | |
| let rig: AppRig | undefined; | |
| afterEach(async () => { | |
| await rig?.unmount(); | |
| }); | |
| it('should handle deterministic tool turns with breakpoints', async () => { | |
| const fakeResponsesPath = path.join( | |
| __dirname, | |
| 'fixtures', | |
| 'steering.responses', | |
| ); | |
| rig = new AppRig({ | |
| fakeResponsesPath, | |
| configOverrides: { modelSteering: true }, | |
| }); | |
| await rig.initialize(); | |
| await rig.render(); | |
| await rig.waitForIdle(); | |
| // Set breakpoints on the canonical tool names | |
| rig.setBreakpoint('list_directory'); | |
| rig.setBreakpoint('read_file'); | |
| // Start a task | |
| debugLogger.log('[Test] Sending message: Start long task'); | |
| await rig.sendMessage('Start long task'); | |
| // Wait for the first breakpoint (list_directory) | |
| const pending1 = await rig.waitForPendingConfirmation('list_directory'); | |
| expect(pending1.toolName).toBe('list_directory'); | |
| // Injected a hint | |
| await rig.addUserHint('focus on .txt'); | |
| // Resolve and wait for the NEXT breakpoint (read_file) | |
| // resolveTool will automatically remove the breakpoint policy for list_directory | |
| await rig.resolveTool('list_directory'); | |
| const pending2 = await rig.waitForPendingConfirmation('read_file'); | |
| expect(pending2.toolName).toBe('read_file'); | |
| // Resolve and finish. Also removes read_file breakpoint. | |
| await rig.resolveTool('read_file'); | |
| await rig.waitForOutput('Task complete.', 100000); | |
| }); | |
| it('should render the app and handle a simple message', async () => { | |
| const fakeResponsesPath = path.join( | |
| __dirname, | |
| 'fixtures', | |
| 'simple.responses', | |
| ); | |
| rig = new AppRig({ fakeResponsesPath }); | |
| await rig.initialize(); | |
| await rig.render(); | |
| // Wait for initial render | |
| await rig.waitForIdle(); | |
| // Type a message | |
| await rig.type('Hello'); | |
| await rig.pressEnter(); | |
| // Wait for model response | |
| await rig.waitForOutput('Hello! How can I help you today?'); | |
| }); | |
| }); | |