testdriver-agent
How the TestDriver agent behaves on GitHub issues, pull requests, and @mentions
Perform a right-click action to open context menus
Claude Code
$ npx -y skills add testdriverai/testdriverai --skill testdriver-right-click --agent claude-code
Codex
$ npx skills add testdriverai/testdriverai --skill testdriver-right-click -a codex -y
Cursor
$ npx skills add testdriverai/testdriverai --skill testdriver-right-click -a cursor -y
Gemini CLI
$ npx skills add testdriverai/testdriverai --skill testdriver-right-click -a gemini-cli -y
GitHub Copilot
$ npx skills add testdriverai/testdriverai --skill testdriver-right-click -a github-copilot -y
OpenCode
$ npx skills add testdriverai/testdriverai --skill testdriver-right-click -a opencode -y
Windsurf
$ npx skills add testdriverai/testdriverai --skill testdriver-right-click -a windsurf -y
name: testdriver:right-click description: Perform a right-click action to open context menus
<!-- Generated from right-click.mdx. DO NOT EDIT. -->
The `rightClick()` method does a right-click action on an element. It usually opens context menus. You can call it on an [`Element`](/core-concepts/elements) instance. Or you can use it with a selector.
// Right-click on an element
await element.rightClick();
// Right-click using a selector
await ai.rightClick('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 right-click |
It returns a `Promise<void>`. The promise resolves when the right-click action completes.
const fileItem = await ai.find('README.md file');
await fileItem.rightClick();
// Select menu option
await ai.click('Delete from context menu');await ai.rightClick('image in the gallery');
await ai.click('Save image as');import { test } from 'vitest';
import { vscode } from '@testdriver/sdk';
test('renames a file via context menu', async () => {
const { ai } = await vscode();
// Right-click on a file
await ai.rightClick('test.js in the file explorer');
// Click rename option
await ai.click('Rename');
// Type new name
await ai.type('test.spec.js');
await ai.pressKeys('Enter');
// Verify rename
const renamedFile = await ai.find('test.spec.js in the file explorer');
expect(renamedFile).toBeTruthy();
});import { test } from 'vitest';
import { chrome } from '@testdriver/sdk';
test('opens link in new tab', async () => {
const { ai } = await chrome('https://example.com');
// Right-click on a link
await ai.rightClick('Documentation link');
// Select "Open in new tab"
await ai.click('Open link in new tab');
});test('uses custom context menu', async () => {
const { ai } = await chrome('https://app.example.com');
// Right-click on custom element
await ai.rightClick('project item in the list');
// Wait for custom menu to appear
await ai.find('custom context menu');
// Click menu option
await ai.click('Duplicate project');
// Verify duplication
const duplicatedProject = await ai.find('project item (copy)');
expect(duplicatedProject).toBeTruthy();
});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,…