Download integration-tests/browser-agent-localhost.test.ts from SaylorTwift/gemini-cli: direct link, hf CLI and curl.
- Browser
- Download file 4.76 kB
-
https://huggingface.co/SaylorTwift/gemini-cli/resolve/main/integration-tests/browser-agent-localhost.test.ts
- Command line
-
hf download hf://SaylorTwift/gemini-cli/integration-tests/browser-agent-localhost.test.ts
-
curl -L -o browser-agent-localhost.test.ts https://huggingface.co/SaylorTwift/gemini-cli/resolve/main/integration-tests/browser-agent-localhost.test.ts
4.76 kB
| /** | |
| * @license | |
| * Copyright 2026 Google LLC | |
| * SPDX-License-Identifier: Apache-2.0 | |
| */ | |
| import { describe, it, expect, beforeEach, afterEach } from 'vitest'; | |
| import { TestRig, assertModelHasOutput } from './test-helper.js'; | |
| import { dirname, join } from 'node:path'; | |
| import { fileURLToPath } from 'node:url'; | |
| const __filename = fileURLToPath(import.meta.url); | |
| const __dirname = dirname(__filename); | |
| describe('browser-agent-localhost', () => { | |
| let rig: TestRig; | |
| const browserSettings = { | |
| agents: { | |
| overrides: { | |
| browser_agent: { | |
| enabled: true, | |
| }, | |
| }, | |
| browser: { | |
| headless: true, | |
| sessionMode: 'isolated' as const, | |
| }, | |
| }, | |
| }; | |
| beforeEach(() => { | |
| rig = new TestRig(); | |
| }); | |
| afterEach(async () => { | |
| await rig.cleanup(); | |
| }); | |
| it('should navigate to localhost fixture and read page content', async () => { | |
| rig.setup('localhost-navigate', { | |
| fakeResponsesPath: join( | |
| __dirname, | |
| 'browser-agent-localhost.navigate.responses', | |
| ), | |
| settings: browserSettings, | |
| }); | |
| const result = await rig.run({ | |
| args: 'Navigate to http://127.0.0.1:18923/index.html and tell me the page title and list all links.', | |
| }); | |
| assertModelHasOutput(result); | |
| const toolLogs = rig.readToolLogs(); | |
| const browserAgentCall = toolLogs.find( | |
| (t) => | |
| t.toolRequest.name === 'invoke_agent' && | |
| JSON.parse(t.toolRequest.args).agent_name === 'browser_agent', | |
| ); | |
| expect( | |
| browserAgentCall, | |
| 'Expected browser_agent to be called', | |
| ).toBeDefined(); | |
| }); | |
| it('should fill out and submit a form on localhost', async () => { | |
| rig.setup('localhost-form', { | |
| fakeResponsesPath: join( | |
| __dirname, | |
| 'browser-agent-localhost.form.responses', | |
| ), | |
| settings: browserSettings, | |
| }); | |
| const result = await rig.run({ | |
| args: "Navigate to http://127.0.0.1:18923/form.html, fill in name='Test User', email='test@example.com', message='Hello World', and submit the form.", | |
| }); | |
| assertModelHasOutput(result); | |
| const toolLogs = rig.readToolLogs(); | |
| const browserAgentCall = toolLogs.find( | |
| (t) => | |
| t.toolRequest.name === 'invoke_agent' && | |
| JSON.parse(t.toolRequest.args).agent_name === 'browser_agent', | |
| ); | |
| expect( | |
| browserAgentCall, | |
| 'Expected browser_agent to be called', | |
| ).toBeDefined(); | |
| }); | |
| it('should navigate through a multi-step flow', async () => { | |
| rig.setup('localhost-multistep', { | |
| fakeResponsesPath: join( | |
| __dirname, | |
| 'browser-agent-localhost.multistep.responses', | |
| ), | |
| settings: browserSettings, | |
| }); | |
| const result = await rig.run({ | |
| args: "Go to http://127.0.0.1:18923/multi-step/step1.html, fill in 'testuser' as username, click Next, then click Finish on step 2. Report the result.", | |
| }); | |
| assertModelHasOutput(result); | |
| const toolLogs = rig.readToolLogs(); | |
| const browserAgentCall = toolLogs.find( | |
| (t) => | |
| t.toolRequest.name === 'invoke_agent' && | |
| JSON.parse(t.toolRequest.args).agent_name === 'browser_agent', | |
| ); | |
| expect( | |
| browserAgentCall, | |
| 'Expected browser_agent to be called', | |
| ).toBeDefined(); | |
| }); | |
| it('should handle dynamically loaded content', async () => { | |
| rig.setup('localhost-dynamic', { | |
| fakeResponsesPath: join( | |
| __dirname, | |
| 'browser-agent-localhost.dynamic.responses', | |
| ), | |
| settings: browserSettings, | |
| }); | |
| const result = await rig.run({ | |
| args: 'Navigate to http://127.0.0.1:18923/dynamic.html, wait for content to load, and tell me what items appear.', | |
| }); | |
| assertModelHasOutput(result); | |
| const toolLogs = rig.readToolLogs(); | |
| const browserAgentCall = toolLogs.find( | |
| (t) => | |
| t.toolRequest.name === 'invoke_agent' && | |
| JSON.parse(t.toolRequest.args).agent_name === 'browser_agent', | |
| ); | |
| expect( | |
| browserAgentCall, | |
| 'Expected browser_agent to be called', | |
| ).toBeDefined(); | |
| }); | |
| it('should take a screenshot of localhost page', async () => { | |
| rig.setup('localhost-screenshot', { | |
| fakeResponsesPath: join( | |
| __dirname, | |
| 'browser-agent-localhost.screenshot.responses', | |
| ), | |
| settings: browserSettings, | |
| }); | |
| const result = await rig.run({ | |
| args: 'Navigate to http://127.0.0.1:18923/index.html and take a screenshot.', | |
| }); | |
| assertModelHasOutput(result); | |
| const toolLogs = rig.readToolLogs(); | |
| const browserCalls = toolLogs.filter( | |
| (t) => | |
| t.toolRequest.name === 'invoke_agent' && | |
| JSON.parse(t.toolRequest.args).agent_name === 'browser_agent', | |
| ); | |
| expect(browserCalls.length).toBeGreaterThan(0); | |
| }); | |
| }); | |