testdriver-agent
How the TestDriver agent behaves on GitHub issues, pull requests, and @mentions
Perform a double-click action on an element or at specific coordinates
Claude Code
$ npx -y skills add testdriverai/testdriverai --skill testdriver-double-click --agent claude-code
Codex
$ npx skills add testdriverai/testdriverai --skill testdriver-double-click -a codex -y
Cursor
$ npx skills add testdriverai/testdriverai --skill testdriver-double-click -a cursor -y
Gemini CLI
$ npx skills add testdriverai/testdriverai --skill testdriver-double-click -a gemini-cli -y
GitHub Copilot
$ npx skills add testdriverai/testdriverai --skill testdriver-double-click -a github-copilot -y
OpenCode
$ npx skills add testdriverai/testdriverai --skill testdriver-double-click -a opencode -y
Windsurf
$ npx skills add testdriverai/testdriverai --skill testdriver-double-click -a windsurf -y
name: testdriver:double-click description: Perform a double-click action on an element or at specific coordinates
<!-- Generated from double-click.mdx. DO NOT EDIT. -->
The `doubleClick()` method does a double-click action on an element. You can call it on an [`Element`](/core-concepts/elements) instance. Or you can use it with a selector.
// Double-click on an element
await element.doubleClick();
// Double-click using a selector
await ai.doubleClick('selector');When called on an `Element`, no parameters are required.
When called directly on the AI client:
| Parameter | Type | Description | |-----------|------|-------------| | `selector` | `string` | The selector describing the element to double-click |
It returns a `Promise<void>`. The promise resolves when the double-click action completes.
const fileItem = await ai.find('README.md file');
await fileItem.doubleClick();await ai.doubleClick('README.md in the file list');import { test } from 'vitest';
import { vscode } from '@testdriver/sdk';
test('opens a file by double-clicking', async () => {
const { ai } = await vscode();
// Double-click to open a file in the explorer
await ai.doubleClick('package.json in the file explorer');
// Verify the file opened
const editor = await ai.find('text editor showing package.json');
expect(editor).toBeTruthy();
});import { test } from 'vitest';
import { chrome } from '@testdriver/sdk';
test('navigates folders in Google Drive', async () => {
const { ai } = await chrome('https://drive.google.com');
// Double-click to open a folder
await ai.doubleClick('Documents folder');
// Wait for folder to open
await ai.find('breadcrumb showing Documents');
});// Double-click to select a word
await ai.doubleClick('word "TestDriver" in the paragraph');
// Verify selection
const selectedText = await ai.exec('window.getSelection().toString()');
expect(selectedText).toBe('TestDriver');How the TestDriver agent behaves on GitHub issues, pull requests, and @mentions
Deploy TestDriver on your AWS infrastructure using CloudFormation
How TestDriver learns your app and caches what it discovers for instant, deterministic replays
Produce the "Playwright 1.xx API Review" artifact for a range of commits - the public API additions and the breaking or behavior…
Write, refine, run, and QA promptfoo evaluation suites: promptfooconfig.yaml, prompts, providers, vars, tests, assertions,…
DeepEval evaluation workflow for AI agents and LLM applications. TRIGGER when the user wants to evaluate or improve an AI agent,…