testdriver-agent
How the TestDriver agent behaves on GitHub issues, pull requests, and @mentions
Reliably test your most difficult user flows
$ npx -y skills add testdriverai/testdriverai --skill testdriver-what-is-testdriver --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/testdriver-what-is-testdriverContext preview
The summary Claude sees to decide when to auto-load this skill.
Reliably test your most difficult user flows
name: testdriver:what-is-testdriver description: Reliably test your most difficult user flows
<!-- Generated from what-is-testdriver.mdx. DO NOT EDIT. -->
Usual test tools such as Playwright test one web application. They use one browser tab and they use selectors.
But selectors are frequently not reliable, or they are not available. This makes tests weak and not stable:
| Challenge | Problem | Examples | |-----------|---------|----------| | **Teams that move quickly** | They change the UI structure frequently. This breaks the CSS and XPath selectors. | Agile teams, startups, vibe-coders | | **Dynamic content** | You cannot select it with selectors. | AI chatbots, PDFs, images, videos | | **Software that you do not own** | It can have no correct accessibility attributes. | Other websites, extensions, third-party applications | | **Workflows with more than one application** | You cannot test them with web-only tools. | Desktop apps, browser extensions, IDEs | | **Visual states** | You cannot make a check of them with code selectors. | Charts, graphs, videos, images, spelling errors, UI layout |
TestDriver is a complete test platform. It handles these conditions. It has a Javascript SDK, hosted infrastructure, and debug tools. These tools make it easy to write, run, and keep tests for your most difficult user flows.
This is an example of a TestDriver test. The test installs a production Chrome extension from the Chrome Web Store. Then it makes sure that the extension is in the extensions menu:
import { describe, expect, it } from "vitest";
import { TestDriver } from "testdriverai/vitest/hooks";
describe("Chrome Extension Test", () => {
const testdriver = TestDriver(context);
// Launch Chrome with Loom loaded by its Chrome Web Store ID
await testdriver.provision.chromeExtension({
extensionId: 'liecbddmkiiihnedobmlmillhodjkdmb'
});
// Click on the extensions button (puzzle piece icon) in Chrome toolbar
const extensionsButton = await testdriver.find("The puzzle-shaped icon in the Chrome toolbar.");
await extensionsButton.click();
// Look for Loom in the extensions menu
const loomExtension = await testdriver.find("Loom extension in the extensions dropdown");
expect(loomExtension.found()).toBeTruthy();
});<Tip>[vitest](https://vitest.dev/) is the preferred test runner for TestDriver.</Tip>
,
Repo: testdriverai/testdriverai
How the TestDriver agent behaves on GitHub issues, pull requests, and @mentions
Deploy TestDriver on your AWS infrastructure using CloudFormation
How TestDriver learns your app and caches what it discovers for instant, deterministic replays