mirror of
https://github.com/google-gemini/gemini-cli.git
synced 2026-04-24 12:04:56 -07:00
fix: enable browser_agent in integration tests and add localhost fixture tests (#24523)
This commit is contained in:
@@ -0,0 +1,161 @@
|
||||
/**
|
||||
* @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 === '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 === '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 === '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 === '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 === 'browser_agent',
|
||||
);
|
||||
expect(browserCalls.length).toBeGreaterThan(0);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user