本文へ移動
cccskills
無料GitHub で公開

testdriver:focus-application

Bring an application window to the foreground

インストール方法を見る

含まれるファイル(1)

  • SKILL.md7.4 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

<!-- 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"> ```javascript // 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"> ```javascript // 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"> ```javascript // 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"> ```javascript // 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');
    await testdriver.pressKeys(['enter']);
    
    // Return to browser
    await testdriver.focusApplication('Google Chrome');
    
    const confirmButton = await testdriver.find('confirm order button');
    await confirmButton.click();
    
    await testdriver.assert('order confirmed');
  });

  it('should switch between browser tabs', async () => {
    await testdriver.focusApplication('Google Chrome');
    
    // Open new tab
    await testdriver.pressKeys(['ctrl', 't']);
    await new Promise(r => setTimeout(r, 500));
    
    // Navigate to URL
    await testdriver.pressKeys(['ctrl', 'l']);
    await testdriver.type('https://example.com');
    await testdriver.pressKeys(['enter']);
    
    await new Promise(r => setTimeout(r, 2000));
    
    // Ensure Chrome is still focused
    await testdriver.focusApplication('Google Chrome');
    
    await testdriver.assert('example.com page is loaded');
  });

  it('should handle dialog boxes', async () => {
    await testdriver.focusApplication('Google Chrome');
    
    const deleteButton = await testdriver.find('delete account button');
    await deleteButton.click();
    
    await new Promise(r => setTimeout(r, 500));
    
    // Dialog appears - make sure it's focused
    await testdriver.focusApplication('Google Chrome');
    
    const confirmBtn = await testdriver.find('confirm deletion button');
    await confirmBtn.click();
  });
});

Related Methods

  • exec() - Launch applications with PowerShell
  • pressKeys() - Use Alt+Tab to switch windows
  • find() - Locate elements in the focused window

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

How the TestDriver agent behaves on GitHub issues, pull requests, and @mentions

日本語の概要は準備中です。原文の説明を表示しています。

testdriverai/testdriverai2432026年9月21日 更新

Execute natural language tasks using AI

日本語の概要は準備中です。原文の説明を表示しています。

testdriverai/testdriverai2432026年9月21日 更新

Make AI-powered assertions about screen state

日本語の概要は準備中です。原文の説明を表示しています。

testdriverai/testdriverai2432026年9月21日 更新

Deploy TestDriver on your AWS infrastructure using CloudFormation

日本語の概要は準備中です。原文の説明を表示しています。

testdriverai/testdriverai2432026年9月21日 更新

Speed up tests with screenshot-based caching

日本語の概要は準備中です。原文の説明を表示しています。

testdriverai/testdriverai2432026年9月21日 更新

How TestDriver learns your app and caches what it discovers for instant, deterministic replays

日本語の概要は準備中です。原文の説明を表示しています。

testdriverai/testdriverai2432026年9月21日 更新

testdriverai のスキルをすべて見る

このスキルの問題を報告する