Skill240 repo starsupdated 20d ago
testdriver:type
Type text into focused input fields
Install in Claude Code
Copygit clone --depth 1 https://github.com/testdriverai/testdriverai /tmp/testdriver-type && cp -r /tmp/testdriver-type/ai/skills/testdriver-type ~/.claude/skills/testdriver-typeThen start a new Claude Code session; the skill loads automatically.
Definition
SKILL.md
<!-- Generated from type.mdx. DO NOT EDIT. -->
## Overview
Type text or numbers into the currently focused input field with optional delay between keystrokes.
## Syntax
```javascript
await testdriver.type(text, options)
```
## Parameters
<ParamField path="text" type="string | number" required>
Text to type (can be a string or number)
</ParamField>
<ParamField path="options" type="object | number">
Typing options (or legacy delay number)
<Expandable title="properties">
<ParamField path="delay" type="number" default={250}>
Delay between keystrokes in milliseconds
</ParamField>
<ParamField path="secret" type="boolean" default={false}>
If `true`, treats text as sensitive data (won't be logged or stored in debug info/dashcam)
</ParamField>
</Expandable>
</ParamField>
## Returns
`Promise<void>`
## Examples
### Basic Typing
```javascript
// Type text
await testdriver.type('hello@example.com');
// Type numbers
await testdriver.type(12345);
// Type with custom delay (legacy syntax)
await testdriver.type('slow typing', 500); // 500ms between each character
// Type with options object
await testdriver.type('text', { delay: 500 });
```
### Password/Secret Handling
```javascript
// ✅ SECURE - Mark as secret to prevent logging
const passwordField = await testdriver.find('password input');
await passwordField.click();
await testdriver.type('MySecureP@ssw0rd', { secret: true });
// Password NOT logged in dashcam or debug output
// ❌ INSECURE - Password will be logged
await testdriver.type('MySecureP@ssw0rd');
// Password appears in logs, dashcam replay, and debug info
// Use secret for any sensitive data
await testdriver.find('api key input').click();
await testdriver.type('sk-1234567890abcdef', { secret: true });
await testdriver.find('credit card input').click();
await testdriver.type('4111111111111111', { secret: true });
```
<Warning>
**Always use `secret: true` for passwords and sensitive data!**
Without this option, typed text appears in:
- Dashcam video replays
- TestDriver logs
- Debug screenshots
- Error messages
</Warning>
### Form Filling
```javascript
// Focus field and type
const emailField = await testdriver.find('email input');
await emailField.click();
await testdriver.type('user@example.com');
// Tab to next field and type
await testdriver.pressKeys(['tab']);
await testdriver.type('John Doe');
// Type password securely
await testdriver.pressKeys(['tab']);
await testdriver.type('MySecureP@ssw0rd', { secret: true });
```
### Clearing and Replacing Text
```javascript
const searchBox = await testdriver.find('search input');
await searchBox.click();
// Clear existing text
await testdriver.pressKeys(['ctrl', 'a']); // Select all
await testdriver.type('new search query');
```
## Best Practices
<Check>
**Focus the field first**
Always click the input field or navigate to it before typing:
```javascript
const input = await testdriver.find('username input');
await input.click();
await testdriver.type('testuser');
```
</Check>
<Check>
**Use Tab for navigation**
Navigate between fields using Tab instead of clicking each one:
```javascript
const firstField = await testdriver.find('first name');
await firstField.click();
await testdriver.type('John');
await testdriver.pressKeys(['tab']);
await testdriver.type('Doe');
await testdriver.pressKeys(['tab']);
await testdriver.type('john@example.com');
```
</Check>
<Check>
**Clear fields before typing**
Clear existing content to avoid appending:
```javascript
const input = await testdriver.find('search field');
await input.click();
await testdriver.pressKeys(['ctrl', 'a']); // Select all
await testdriver.type('new search');
```
</Check>
<Warning>
**Field must be focused**
Typing will only work if an input field is currently focused. If no field is focused, the text may be lost or trigger unexpected keyboard shortcuts.
</Warning>
## Use Cases
<AccordionGroup>
<Accordion title="Login Forms">
```javascript
await testdriver.focusApplication('Google Chrome');
const usernameField = await testdriver.find('username input');
await usernameField.click();
await testdriver.type('testuser@example.com');
await testdriver.pressKeys(['tab']);
await testdriver.type('MyP@ssword123', { secret: true });
await testdriver.pressKeys(['enter']);
```
</Accordion>
<Accordion title="Search Fields">
```javascript
const searchBox = await testdriver.find('search input');
await searchBox.click();
await testdriver.type('laptop computers');
await testdriver.pressKeys(['enter']);
// Wait for results
await new Promise(r => setTimeout(r, 2000));
```
</Accordion>
<Accordion title="Multi-Field Forms">
```javascript
// First field
const nameField = await testdriver.find('full name input');
await nameField.click();
await testdriver.type('Jane Smith');
// Navigate with Tab
await testdriver.pressKeys(['tab']);
await testdriver.type('jane.smith@example.com');
await testdriver.pressKeys(['tab']);
await testdriver.type('+1-555-0123');
await testdriver.pressKeys(['tab']);
await testdriver.type('123 Main Street');
```
</Accordion>
<Accordion title="Text Editors">
```javascript
const editor = await testdriver.find('text editor area');
await editor.click();
await testdriver.type('# My Document', 100);
await testdriver.pressKeys(['enter', 'enter']);
await testdriver.type('This is the first paragraph.', 50);
```
</Accordion>
<Accordion title="Numeric Input">
```javascript
const quantityField = await testdriver.find('quantity input');
await quantityField.click();
// Clear field
await testdriver.pressKeys(['ctrl', 'a']);
// Type number
await testdriver.type(5);
```
</Accordion>More from this repository
testdriver:aiSkill
Execute natural language tasks using AI
testdriver:assertSkill
Make AI-powered assertions about screen state
testdriver:aws-setupSkill
Deploy TestDriver on your AWS infrastructure using CloudFormation
testdriver:cacheSkill
Speed up tests with screenshot-based caching
testdriver:cachingSkill
1.7x faster test execution with intelligent caching and optimization
testdriver:captchaSkill
Solve captchas using 2captcha service
testdriver:ci-cdSkill
Run TestDriver tests in CI/CD with parallel execution and cross-platform support
testdriver:clickSkill
Click at specific coordinates or on elements