75 lines
2.0 KiB
TypeScript
Raw Permalink Normal View History

import {
AgentOverChromeBridge,
getBridgePageInCliSide,
} from '@/bridge-mode/agent-cli-side';
import { describe, expect, it, vi } from 'vitest';
vi.setConfig({
testTimeout: 60 * 1000,
});
const sleep = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms));
const describeIf = process.env.BRIDGE_MODE ? describe : describe.skip;
describeIf(
'fully functional agent in server(cli) side',
{
timeout: 3 * 60 * 10,
},
() => {
it('basic', async () => {
const page = getBridgePageInCliSide();
expect(page).toBeDefined();
// server should be destroyed as well
await page.destroy();
});
it('page in cli side', async () => {
const page = getBridgePageInCliSide();
// make sure the extension bridge is launched before timeout
await page.connectNewTabWithUrl('https://www.baidu.com');
// sleep 3s
await sleep(3000);
await page.destroy();
});
it('agent in cli side, new tab', async () => {
const agent = new AgentOverChromeBridge();
await agent.connectNewTabWithUrl('https://www.bing.com');
await sleep(3000);
await agent.ai('type "AI 101" and hit Enter and scroll down');
await sleep(3000);
await agent.aiAssert('there are some search results');
await agent.destroy();
});
it('agent in cli side, current tab', async () => {
const agent = new AgentOverChromeBridge();
await agent.connectCurrentTab();
await sleep(3000);
const answer = await agent.aiQuery(
'name of the current page? return {name: string}',
);
console.log(answer);
expect(answer.name).toBeTruthy();
await agent.destroy();
});
it('agent in cli side, current tab, limit popup to current page', async () => {
const agent = new AgentOverChromeBridge();
await agent.connectCurrentTab({ forceSameTabNavigation: true });
await agent.ai('click "文库"sleep 1500mstype "AI 101" and hit Enter');
await sleep(3000);
await agent.destroy();
});
},
);