Skip to content
Testing
Skill

/testdriver-press-keys

Press keyboard keys and shortcuts

From plugin
testdriverai
24260 skills1 agent
Install
$ npx -y skills add testdriverai/testdriverai --skill testdriver-press-keys --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-press-keys

Context preview

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

Press keyboard keys and shortcuts

SKILL.md

testdriver-press-keys.SKILL.md
name: testdriver:press-keys
description: Press keyboard keys and shortcuts

<!-- Generated from press-keys.mdx. DO NOT EDIT. -->

Overview

Push one or more keyboard keys at the same time. Use this for keyboard shortcuts, navigation, and special keys.

Syntax

await testdriver.pressKeys(keys)

Parameters

<ParamField path="keys" type="Array&lt;string&gt;" required> An array of the keys to push at the same time </ParamField>

Returns

`Promise<void>`

Common Keys

Special Keys

  • `'enter'`, `'tab'`, `'escape'`, `'backspace'`, `'delete'`
  • `'space'`, `'up'`, `'down'`, `'left'`, `'right'`
  • `'home'`, `'end'`, `'pageup'`, `'pagedown'`

Modifier Keys

  • `'ctrl'`, `'alt'`, `'shift'`
  • `'command'` (macOS), `'win'` (Windows)
  • `'ctrlleft'`, `'ctrlright'`, `'shiftleft'`, `'shiftright'`

Function Keys

  • `'f1'` through `'f24'`

Examples

Navigation

// Tab to next field
await testdriver.pressKeys(['tab']);

// Shift+Tab to previous field
await testdriver.pressKeys(['shift', 'tab']);

// Arrow keys
await testdriver.pressKeys(['down']);
await testdriver.pressKeys(['up']);
await testdriver.pressKeys(['left']);
await testdriver.pressKeys(['right']);

// Home/End
await testdriver.pressKeys(['home']);  // Start of line
await testdriver.pressKeys(['end']);   // End of line

// Page navigation
await testdriver.pressKeys(['pagedown']);
await testdriver.pressKeys(['pageup']);

Keyboard Shortcuts

// Copy (Ctrl+C / Cmd+C)
await testdriver.pressKeys(['ctrl', 'c']);

// Paste (Ctrl+V / Cmd+V)
await testdriver.pressKeys(['ctrl', 'v']);

// Save (Ctrl+S)
await testdriver.pressKeys(['ctrl', 's']);

// Select All (Ctrl+A)
await testdriver.pressKeys(['ctrl', 'a']);

// Undo (Ctrl+Z)
await testdriver.pressKeys(['ctrl', 'z']);

// Redo (Ctrl+Y)
await testdriver.pressKeys(['ctrl', 'y']);

// Find (Ctrl+F)
await testdriver.pressKeys(['ctrl', 'f']);

// New tab (Ctrl+T)
await testdriver.pressKeys(['ctrl', 't']);

// Close tab (Ctrl+W)
await testdriver.pressKeys(['ctrl', 'w']);

// Refresh (F5 or Ctrl+R)
await testdriver.pressKeys(['f5']);
await testdriver.pressKeys(['ctrl', 'r']);

System Shortcuts

// Alt+Tab (Windows - switch apps)
await testdriver.pressKeys(['alt', 'tab']);

// Alt+F4 (Windows - close window)
await testdriver.pressKeys(['alt', 'f4']);

// Win+D (Windows - show desktop)
await testdriver.pressKeys(['winleft', 'd']);

// Win+L (Windows - lock screen)
await testdriver.pressKeys(['winleft', 'l']);

// Cmd+Tab (macOS - switch apps)
await testdriver.pressKeys(['command', 'tab']);

// Cmd+Q (macOS - quit app)
await testdriver.pressKeys(['command', 'q']);

Form Submission

// Submit form
await testdriver.pressKeys(['enter']);

// Cancel/Close
await testdriver.pressKeys(['escape']);

// Check checkbox
await testdriver.pressKeys(['space']);

Text Editing

// Delete selected text
await testdriver.pressKeys(['delete']);

// Backspace
await testdriver.pressKeys(['backspace']);

// Select all and delete
await testdriver.pressKeys(['ctrl', 'a']);
await testdriver.pressKeys(['delete']);

// Cut text
await testdriver.pressKeys(['ctrl', 'x']);

Best Practices

<Check> **Wait after shortcuts**

Some keyboard shortcuts trigger animations or navigation:

  await testdriver.pressKeys(['ctrl', 't']); // New tab
  await new Promise(r => setTimeout(r, 500)); // Wait for tab
  await testdriver.pressKeys(['ctrl', 'l']); // Focus URL bar

</Check>

<Check> **Use Tab for form navigation**

Tab is more reliable than clicking multiple fields:

  const firstField = await testdriver.find('email input');
  await firstField.click();
  await testdriver.type('user@example.com');
  
  await testdriver.pressKeys(['tab']);
  await testdriver.type('password123');
  
  await testdriver.pressKeys(['tab']);
  await testdriver.pressKeys(['enter']); // Submit

</Check>

<Warning> **Platform-specific keys**

Use the appropriate modifier key for the platform:

  • Windows/Linux: `'ctrl'`
  • macOS: `'command'`
  // For cross-platform, you might need to detect OS
  const modKey = process.platform === 'darwin' ? 'command' : 'ctrl';
  await testdriver.pressKeys([modKey, 'c']); // Copy

</Warning>

Use Cases

<AccordionGroup> <Accordion title="Form Navigation">

    // Fill form using Tab
    const firstField = await testdriver.find('name field');
    await firstField.click();
    await testdriver.type('John Doe');
    
    await testdriver.pressKeys(['tab']);
    await testdriver.type('john@example.com');
    
    await testdriver.pressKeys(['tab']);
    await testdriver.type('555-0123');
    
    await testdriver.pressKeys(['tab']);
    await testdriver.pressKeys(['enter']); // Submit

</Accordion>

<Accordion title="Text Manipulation">

    const textArea = await testdriver.find('comment textarea');
    await textArea.click();
    
    // Select all existing text
    await testdriver.pressKeys(['ctrl', 'a']);
    
    // Copy it
    await testdriver.pressKeys(['ctrl', 'c']);
    
    // Type new text
    await testdriver.type('New comment');
    
    // Undo if needed
    await testdriver.pressKeys(['ctrl', 'z']);

</Accordion>

<Accordion title="Browser Navigation">

    // Open new tab
    await testdriver.pressKeys(['ctrl', 't']);
    await new Promise(r => setTimeout(r, 500));
    
    // Focus address bar
    await testdriver.pressKeys(['ctrl', 'l']);
    await testdriver.type('https://example.com');
    await testdriver.pressKeys(['enter']);
    
    // Refresh page
    await testdriver.pressKeys(['f5']);
    
    // Close tab
    await testdriver.pressKeys(['ctrl', 'w']);

</Accordion>

<Accordion title="Application Shortcuts">

    // Save document
    await testdriver.pressKeys(['c
Read more
Ships withtestdriverai

Computer-Use SDK for E2E QA Testing

Get the whole plugin

Other skills on testdriverai.