58 lines
1.7 KiB
TypeScript
Raw Permalink Normal View History

import { sleep } from '@midscene/core/utils';
import { beforeAll, describe, expect, it, vi } from 'vitest';
import { AndroidAgent, AndroidDevice, getConnectedDevices } from '../../src';
vi.setConfig({
testTimeout: 240 * 1000,
});
const pageUrl = 'https://todomvc.com/examples/react/dist/';
describe('Test todo list', () => {
let agent: AndroidAgent;
beforeAll(async () => {
const devices = await getConnectedDevices();
const page = new AndroidDevice(devices[0].udid);
feat: android playground (#542) * refactor: android api * refactor: enhance Android agent to accept options for device connection * fix: type error * fix: click after clearInput * fix: click before clearInput * feat: android playground * feat: support npx package name * feat: android playground joint * fix: git ignore conflicts * feat: ensure adb server is running before initializing adb client * fix: deps consistency * ci: add android playground * feat: integrate shared constants and improve server configuration in android playground * feat: android playground style * feat: style opt * feat: add @rsbuild/plugin-svgr dependency and improve URI handling in adb * feat: remove unused water flow scripts and update comments to English * feat: download report file * feat: standalone android playground * feat: use dynamic import * feat: migrate CSS to LESS and remove unused styles in chrome extension and report * feat: enhance Android playground with ScrcpyPlayer ref integration and device management improvements * feat: optimize styles and layout in Android playground and visualizer components * chore: add bin back * chore: update build script to exclude documentation generation * feat: add not ready message to PlaygroundResult for improved user guidance * feat: add error handling for screenshot capture in Android page * docs: update readme * feat: add PNG validation for screenshot buffer in Android page * feat: enhance UI components with improved styling and tooltips in ScrcpyPlayer and PromptInput * docs: update uri parameter description in integrate-with-android documentation and improve uri handling in launch function * style: update primary color to #2B83FF across multiple components and adjust margin in App.less * refactor: replace userConfig with globalConfig for environment configuration management and update related functions * feat: integrate server validation logic in App, AdbDevice, and ScrcpyPlayer components for improved connection handling * style: enhance player component layout with overflow handling and margin adjustments * style: refine player component layout with flex adjustments and improved spacing * feat: add midscene model name display and improve layout in EnvConfig component * feat: integrate ShinyText component for enhanced loading progress display in PlaygroundResult * test: add test for isValidPNGImageBuffer * style: remove background color from App.less and adjust AI config override behavior in env.ts --------- Co-authored-by: yutao <yutao.tao@bytedance.com>
2025-04-17 17:44:11 +08:00
agent = new AndroidAgent(page, {
aiActionContext:
'If any location, permission, user agreement, etc. popup, click agree. If login page pops up, close it.',
});
await page.connect();
await page.launch(pageUrl);
await sleep(3000);
});
it(
'ai todo',
async () => {
await agent.aiAction(
"type 'Study JS today' in the task box input and press the Enter key",
);
await agent.aiAction(
"type 'Study Rust tomorrow' in the task box input and press the Enter key",
);
await agent.aiAction(
"type 'Study AI the day after tomorrow' in the task box input and press the Enter key",
);
await agent.aiAction(
'move the mouse to the second item in the task list and click the delete button on the right of the second task',
);
await agent.aiAction(
'click the check button on the left of the second task',
);
await agent.aiAction(
"click the 'completed' status button below the task list",
);
const list = await agent.aiQuery('string[], the complete task list');
expect(list.length).toEqual(1);
await agent.aiAssert(
'Near the bottom of the list, there is a tip shows "1 item left".',
);
},
720 * 1000,
);
});