Overview
The mouseUp() method releases the mouse button. It completes a drag operation or a custom mouse gesture that you started with mouseDown(). Call it without parameters to release the button at the present mouse position.
Syntax
javascript// 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
javascript// 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
javascriptimport { 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
javascripttest('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
javascripttest('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
javascriptimport { 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
javascripttest('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 bymouseDown()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()instead of mouseDown/mouseUp pair
Related Methods
mouseDown()- Press mouse button without releasinghover()- Move mouse to elementclick()- Complete click (mouseDown + mouseUp)doubleClick()- Double-click on elementrightClick()- Right-click for context menu


