Skip to content
Testing
Skill

/testdriver-mouse-up

Release the mouse button

From plugin
testdriverai
24260 skills1 agent
Install
$ npx -y skills add testdriverai/testdriverai --skill testdriver-mouse-up --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/testdriver-mouse-up

Context preview

The summary Claude sees to decide when to auto-load this skill.

Release the mouse button

SKILL.md

testdriver-mouse-up.SKILL.md
name: testdriver:mouse-up
description: Release the mouse button

<!-- Generated from mouse-up.mdx. DO NOT EDIT. -->

Overview

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.

Syntax

// Release mouse button at current position
await ai.mouseUp();

Parameters

None. The mouse button is released at the current cursor position.

Returns

It returns a `Promise<void>`. The promise resolves when TestDriver releases the mouse button.

Examples

Complete Drag and Drop

// Start dragging
await ai.mouseDown('file to drag');

// Move to drop location
await ai.hover('target folder');

// Complete the drop
await ai.mouseUp();

Selecting Multiple Files

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');
});

Drawing Application

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();
});

Resizing Window Panels

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);
});

Drag to Reorder List Items

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');
});

Text Selection with Mouse

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');
});

Important Notes

  • `mouseUp()` must be preceded by [`mouseDown()`](/mouse-down) to have an effect
  • Releases the button at the current cursor position
  • Completes any drag or selection operation that was in progress
  • For simple clicks, use [`click()`](/click) instead of mouseDown/mouseUp pair

Related Methods

  • [`mouseDown()`](/mouse-down) - Press mouse button without releasing
  • [`hover()`](/hover) - Move mouse to element
  • [`click()`](/click) - Complete click (mouseDown + mouseUp)
  • [`doubleClick()`](/double-click) - Double-click on element
  • [`rightClick()`](/right-click) - Right-click for context menu
Read more
Ships withtestdriverai

Computer-Use SDK for E2E QA Testing

Get the whole plugin

Other skills on testdriverai.