> ## Documentation Index
> Fetch the complete documentation index at: https://docs.testdriver.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# What is TestDriver?

> Reliably test your most difficult user flows

## The problem with usual test tools

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 |

## The TestDriver solution

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.

### Javascript SDK

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:

```javascript Installing Loom from the Chrome Web Store theme={null}
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>

,
