testdriver:click
SkillDev toolsClick at specific coordinates or on elements
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the testdriver:click skill
What this skill tells your AI
The instructions your AI receives, as published by testdriverai/testdriverai in ai/skills/testdriver-click/SKILL.md and read by ahel’s review.
Element Click
When you call this on an Element object, it clicks on the found element.
Syntax
await element.click(action)
Parameters
Returns
Promise<void>
Examples
// Regular click
const button = await testdriver.find('submit button');
await button.click();
// Double-click
const file = await testdriver.find('README.txt file');
await file.click('double-click');
// Right-click
const item = await testdriver.find('menu item');
await item.click('right-click');
// Hover (same as element.hover())
const tooltip = await testdriver.find('info icon');
await button.click('hover');
Coordinate Click
Click at specific screen coordinates.
Syntax
await testdriver.click(x, y, action)
Parameters
Returns
Promise<void>
Examples
// Click at coordinates
await testdriver.click(500, 300);
// Double-click at coordinates
await testdriver.click(500, 300, 'double-click');
// Right-click at coordinates
await testdriver.click(500, 300, 'right-click');
Click Actions
Regular Click
One left-click action.
const button = await testdriver.find('Login button');
await button.click();
Double Click
A double-click action. It usually opens files or selects text.
const file = await testdriver.find('document.pdf');
await file.click('double-click');
// Or use the dedicated method
await file.doubleClick();
Right Click
Right-click to open context menus.
const folder = await testdriver.find('Documents folder');
await folder.click('right-click');
// Or use the dedicated method
await folder.rightClick();
Mouse Down / Mouse Up
Use these for drag operations or custom click behavior.
const draggable = await testdriver.find('draggable item');
await draggable.click('mouseDown');
// Move to target
const dropZone = await testdriver.find('drop zone');
await dropZone.hover();
await dropZone.click('mouseUp');
// Or use dedicated methods
await draggable.mouseDown();
await dropZone.mouseUp();
Best Practices
A click on an element is more reliable. It does not depend on the resolution:
// ✅ Preferred
const button = await testdriver.find('submit button');
await button.click();
// ❌ Avoid (fragile)
await testdriver.click(500, 300);
const element = await testdriver.find('button');
if (!element.found()) {
throw new Error('Element not found');
}
await element.click();
The find() method finds elements automatically. But a click on an element that TestDriver did not find throws an error:
const element = await testdriver.find('button');
// This will throw if element wasn't found
await element.click();
Use Cases
const cancelBtn = await testdriver.find('cancel button');
await cancelBtn.click();
```
// Select menu option
const deleteOption = await testdriver.find('Delete option');
await deleteOption.click();
```
const target = await testdriver.find('target zone');
await target.hover();
await target.mouseUp();
```
Complete Example
import { beforeAll, afterAll, describe, it } from 'vitest';
import TestDriver from 'testdriverai';
describe('Click Interactions', () => {
let testdriver;
beforeAll(async () => {
client = new TestDriver(process.env.TD_API_KEY);
await testdriver.auth();
await testdriver.connect();
});
afterAll(async () => {
await testdriver.disconnect();
});
it('should perform various click actions', async () => {
await testdriver.focusApplication('Google Chrome');
// Regular click
const loginBtn = await testdriver.find('login button');
await loginBtn.click();
// Right-click for context menu
const profileIcon = await testdriver.find('profile icon');
await profileIcon.rightClick();
const settingsOption = await testdriver.find('Settings menu option');
await settingsOption.click();
// Double-click to edit
const nameField = await testdriver.find('name display field');
await nameField.doubleClick();
// Verify state
await testdriver.assert('name field is now editable');
});
it('should perform drag and drop', async () => {
const item = await testdriver.find('draggable item');
await item.mouseDown();
// Drag to new location
const dropTarget = await testdriver.find('drop area');
await dropTarget.hover();
await dropTarget.mouseUp();
// Verify
await testdriver.assert('item is in the drop area');
});
});
Related Methods
find()- Find elements to clickhover()- Put the cursor on the element without a clickdoubleClick()- The double-click methodrightClick()- The right-click method
Signals
- GitHub stars
- 242
- Forks
- 35
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
testdriver-click- Source
- github.com/testdriverai/testdriverai