testdriver:what-is-testdriver

Reliably test your most difficult user flows

SKILL.md

GitHub
<!-- Generated from what-is-testdriver.mdx. DO NOT EDIT. -->

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:

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 is the preferred test runner for TestDriver.</Tip>

,