testdriver-agent
How the TestDriver agent behaves on GitHub issues, pull requests, and @mentions
Release the mouse button
Claude Code
$ npx -y skills add testdriverai/testdriverai --skill testdriver-mouse-up --agent claude-code
Codex
$ npx skills add testdriverai/testdriverai --skill testdriver-mouse-up -a codex -y
Cursor
$ npx skills add testdriverai/testdriverai --skill testdriver-mouse-up -a cursor -y
Gemini CLI
$ npx skills add testdriverai/testdriverai --skill testdriver-mouse-up -a gemini-cli -y
GitHub Copilot
$ npx skills add testdriverai/testdriverai --skill testdriver-mouse-up -a github-copilot -y
OpenCode
$ npx skills add testdriverai/testdriverai --skill testdriver-mouse-up -a opencode -y
Windsurf
$ npx skills add testdriverai/testdriverai --skill testdriver-mouse-up -a windsurf -y
name: testdriver:mouse-up description: Release the mouse button
<!-- Generated from mouse-up.mdx. DO NOT EDIT. -->
The `mouseUp()` method releases the mouse button. It completes a drag operation or a custom mouse gesture that you started with [`mouseDown()`](/mouse-down). Call it without parameters to release the button at the present mouse position.
// Release mouse button at current position await ai.mouseUp();
None. The mouse button is released at the current cursor position.
It returns a `Promise<void>`. The promise resolves when TestDriver releases the mouse button.
// Start dragging
await ai.mouseDown('file to drag');
// Move to drop location
await ai.hover('target folder');
// Complete the drop
await ai.mouseUp();import { test } from 'vitest';
import { vscode } from '@testdriver/sdk';
test('selects range of files', async () => {
const { ai } = await vscode();
// Click first file
await ai.click('first-file.js in explorer');
// Hold shift and click last file
await ai.pressKeys('Shift');
await ai.mouseDown('last-file.js in explorer');
await ai.mouseUp();
// Verify multiple files selected
const selectedCount = await ai.find('status bar showing file count');
expect(selectedCount.text).toContain('5 files');
});test('draws a shape', async () => {
const { ai } = await chrome('https://drawing-app.example.com');
// Select pencil tool
await ai.click('pencil tool');
// Draw a line
await ai.mouseDown('canvas near top-left');
await ai.hover('canvas center');
await ai.hover('canvas bottom-right');
await ai.mouseUp();
// Verify drawing exists
const strokes = await ai.exec('canvas.getContext("2d").getImageData(0,0,100,100)');
expect(strokes).toBeTruthy();
});test('resizes editor panel', async () => {
const { ai } = await vscode();
// Grab the divider
await ai.mouseDown('panel resize divider');
// Drag to new position
await ai.hover('position 400 pixels from left');
// Release to complete resize
await ai.mouseUp();
// Verify new panel size
const panel = await ai.find('editor panel');
expect(panel.width).toBeGreaterThan(350);
});import { test } from 'vitest';
import { chrome } from '@testdriver/sdk';
test('reorders tasks in list', async () => {
const { ai } = await chrome('https://todo-app.example.com');
// Start dragging first task
await ai.mouseDown('drag handle on first task');
// Move down to third position
await ai.hover('third task position');
// Drop the task
await ai.mouseUp();
// Verify new order
const thirdTask = await ai.find('third task in list');
expect(thirdTask.text).toContain('Original first task');
});test('selects text with mouse drag', async () => {
const { ai } = await chrome('https://document.example.com');
// Start selection at beginning of word
await ai.mouseDown('start of "TestDriver" word');
// Drag to end of word
await ai.hover('end of "TestDriver" word');
// Complete selection
await ai.mouseUp();
// Verify selection
const selection = await ai.exec('window.getSelection().toString()');
expect(selection).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,…