Skip to content
Testing
Skill

/testdriver-focus-application

Bring an application window to the foreground

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

Context preview

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

Bring an application window to the foreground

SKILL.md

testdriver-focus-application.SKILL.md
name: testdriver:focus-application
description: Bring an application window to the foreground

<!-- Generated from focus-application.mdx. DO NOT EDIT. -->

Overview

Move a specific application window to the front. Make it the active window for interactions.

Syntax

await testdriver.focusApplication(name)

Parameters

<ParamField path="name" type="string" required> The application name (for example, `'Google Chrome'`, `'Microsoft Edge'`, `'Notepad'`) </ParamField>

Returns

`Promise<string>` - The result message

Examples

Common Applications

// Focus Chrome browser
await testdriver.focusApplication('Google Chrome');

// Focus Edge browser
await testdriver.focusApplication('Microsoft Edge');

// Focus Notepad
await testdriver.focusApplication('Notepad');

// Focus File Explorer
await testdriver.focusApplication('File Explorer');

// Focus Visual Studio Code
await testdriver.focusApplication('Visual Studio Code');

After Opening Applications

// Open Chrome and focus it
await testdriver.exec('pwsh', `
  Start-Process "C:/Program Files/Google/Chrome/Application/chrome.exe" -ArgumentList "https://example.com"
`, 5000);

await new Promise(r => setTimeout(r, 2000)); // Wait for launch

// Focus the Chrome window
await testdriver.focusApplication('Google Chrome');

Best Practices

<Check> **Focus before UI interactions**

Always focus the target application before interacting with its UI:

  await testdriver.focusApplication('Google Chrome');
  
  const button = await testdriver.find('submit button');
  await button.click();

</Check>

<Check> **Wait after launching apps**

Give applications time to open before focusing:

  await testdriver.exec('pwsh', 'Start-Process notepad', 5000);
  await new Promise(r => setTimeout(r, 1000)); // Wait for launch
  await testdriver.focusApplication('Notepad');

</Check>

<Check> **Use exact application names**

  // ✅ Correct
  await testdriver.focusApplication('Google Chrome');
  
  // ❌ May not work
  await testdriver.focusApplication('Chrome');
  await testdriver.focusApplication('chrome.exe');

</Check>

<Warning> **Application must be running**

The application must already be running. `focusApplication()` won't launch applications, only bring existing windows to the foreground. </Warning>

Use Cases

<AccordionGroup> <Accordion title="Multi-Application Testing">

    // Test workflow across multiple apps
    await testdriver.focusApplication('Google Chrome');
    const data = await testdriver.extract('the order number');
    
    await testdriver.focusApplication('Notepad');
    await testdriver.type(data);
    await testdriver.pressKeys(['ctrl', 's']);
    
    await testdriver.focusApplication('Google Chrome');
    const nextButton = await testdriver.find('next button');
    await nextButton.click();

</Accordion>

<Accordion title="Browser Switching">

    // Compare behavior in different browsers
    await testdriver.focusApplication('Google Chrome');
    await testdriver.assert('page loaded correctly in Chrome');
    
    await testdriver.focusApplication('Microsoft Edge');
    await testdriver.assert('page loaded correctly in Edge');

</Accordion>

<Accordion title="Desktop Application Testing">

    // Launch and focus desktop app
    await testdriver.exec('pwsh', 'Start-Process notepad', 5000);
    await new Promise(r => setTimeout(r, 1000));
    
    await testdriver.focusApplication('Notepad');
    await testdriver.type('Test content');

</Accordion>

<Accordion title="Window Management">

    // Show desktop first
    await testdriver.pressKeys(['winleft', 'd']);
    
    // Click desktop icon
    const icon = await testdriver.find('Chrome icon on desktop');
    await icon.click();
    
    await new Promise(r => setTimeout(r, 2000));
    
    // Focus the opened window
    await testdriver.focusApplication('Google Chrome');

</Accordion> </AccordionGroup>

Common Application Names

Browsers

  • `'Google Chrome'`
  • `'Microsoft Edge'`
  • `'Mozilla Firefox'`
  • `'Safari'` (macOS)

Office Applications

  • `'Microsoft Word'`
  • `'Microsoft Excel'`
  • `'Microsoft PowerPoint'`
  • `'Microsoft Outlook'`

Development Tools

  • `'Visual Studio Code'`
  • `'Visual Studio'`
  • `'IntelliJ IDEA'`
  • `'Sublime Text'`

System Applications

  • `'Notepad'`
  • `'File Explorer'`
  • `'Command Prompt'`
  • `'Windows PowerShell'`
  • `'Task Manager'`

Communication

  • `'Microsoft Teams'`
  • `'Slack'`
  • `'Discord'`
  • `'Zoom'`

Complete Example

import { beforeAll, afterAll, describe, it } from 'vitest';
import TestDriver from 'testdriverai';

describe('Multi-Application Workflow', () => {
  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 work across multiple applications', async () => {
    // Start in browser
    await testdriver.focusApplication('Google Chrome');
    
    // Get data from web page
    const orderNumber = await testdriver.extract('the order number');
    console.log('Order:', orderNumber);
    
    // Open Notepad
    await testdriver.exec('pwsh', 'Start-Process notepad', 5000);
    await new Promise(r => setTimeout(r, 1500));
    
    // Focus Notepad and save data
    await testdriver.focusApplication('Notepad');
    await testdriver.type(`Order Number: ${orderNumber}`);
    await testdriver.type('\n');
    await testdriver.type(`Date: ${new Date().toISOString()}`);
    
    // Save file
    await testdriver.pressKeys(['ctrl', 's']);
    await new Promise(r => setTimeout(r, 500));
    
    await testdriver.type('C:\\order-info.txt');
    awai
Read more
Ships withtestdriverai

Computer-Use SDK for E2E QA Testing

Get the whole plugin

Other skills on testdriverai.