Notice
As of July 4, 2026, future updates to the Donobu SDK are private. See https://www.donobu.com/docs/playwright/installation
Donobu SDK
Create, run, and heal AI-assisted Playwright flows with a single dependency. The donobu package ships the Playwright fixture, Page.AI orchestration layer, CLI wrapper, failure triage, and plugin system to comprehensively test websites.
Highlights
-
Typed Playwright fixture -
import { test } from 'donobu'to extend Playwright withpage.aihelpers, smart selectors, and persistence. -
Autonomous Page.AI - run
page.ai()with optional Zod schemas, cached tool-call replays, custom tool allow-lists, and env-var controls. -
Prebuilt tools - call keyboard, mouse, accessibility, cookie, and analysis tools via friendly wrappers (
page.runAccessibilityTest, etc). -
Failure triage & auto-heal -
npx donobu test --auto-healcaptures screenshots, GPT reasoning, structured treatment plans, and can re-run fixes automatically.
Prerequisites
- Node.js 18+ and a package manager (npm 8+, pnpm 10+, or yarn).
- Playwright browsers (
npx playwright install). - At least one LLM credential (OpenAI, Anthropic, Google Gemini, AWS Bedrock, or Donobu API).
Installation
npm install --save-dev donobu @playwright/test
npx playwright install # downloads browsers if neededQuick Start
- Author a test using the Donobu fixture
import { test } from 'donobu'; test('Test for https://www.starbucks.com', async ({ page }) => { await page.goto('https://www.starbucks.com'); await page.ai('Go to the featured menu page'); await page.ai.assert( `Assert that the featured menu page has a seasonally appropriate vibe for ${new Date()}`, ); await page.ai('Find a Starbucks store in Stowe, Vermont'); await page.ai.assert( 'Assert that a store in Stowe, Vermont is found and the map shows Mt. Mansfield close by.', ); });
- Run the test with Page.AI enabled
OPENAI_API_KEY=sk-*** npx donobu test
npx donobu test proxies Playwright while wiring Donobu-specific env vars (triage directories, Page.AI cache clearing, auto-heal retries, etc.).
Page.AI API Surface
| Method | Description |
|---|---|
await page.ai(instruction, opts?) |
Launches an autonomous Donobu flow that can call browser tools. |
await page.ai.assert(assertion, opts?) |
AI assertion against DOM text, screenshot, title, and URL. |
await page.ai.extract(schema, opts?) |
Produce JSON data shaped by a Zod schema using screenshot + history. |
- Every invocation of
page.ai()is cached in<spec directory>/.cache-lock/<spec-file>.cache.js. Runnpx donobu test --clear-ai-cacheto regenerate the cache.
Page.AI Caching, Env Vars, and Secrets
- Per-spec cache: Page.AI cache entries are saved next to the spec inside
.cache-lock/<spec-file>.cache.js. Commit them to stabilise selectors or delete to regenerate. - CLI toggles:
--clear-ai-cache(orDONOBU_PAGE_AI_CLEAR_CACHE=1) clears cache before eachpage.ai.act. - Allow specific env vars by explicitly referencing them by name in the
page.ai()instruction or by passing them as options:In the above example, thetest('uses secret', async ({ page }, testInfo) => { await page.ai('Log in using {{$.env.MY_SECRET}} credentials', { envVars: ['SOME_OTHER_SECRET'], }); });
page.aiagent will have access to theMY_SECRETandSOME_OTHER_SECRETenv vars.
CLI Usage
npx donobu mirrors Playwright subcommands and adds Donobu-specific tooling.
| Command | What it does |
|---|---|
npx donobu test [playwright args] |
Runs Playwright tests with Donobu fixtures, triage, optional auto-heal, and Page.AI caching controls. |
npx donobu test --auto-heal |
After failures, generate treatment plans and automatically retry tests whose plans recommend it. |
npx donobu test --no-triage |
Skip evidence gathering (faster but no treatment plans). |
npx donobu test --triage-output-dir ./artifacts |
Persist evidence outside test-results/donobu-triage. |
npx donobu test --clear-ai-cache |
Clear Page.AI cache before every act() invocation for the run. |
npx donobu heal --plan path/to/plan.json |
Re-run a previously generated treatment plan with matching Playwright args. |
npx playwright-json-to-markdown report.json |
Convert Playwright JSON reports into human-friendly Markdown. |
npx playwright-json-to-slack-json report.json |
Produce Slack-ready payloads from Playwright reports. |
Failure Evidence & Auto-Heal
- During
donobu test, failure evidence (flow metadata, screenshots, DOM dumps, GPT summaries) is stored undertest-results/donobu-triage/<timestamp>-<runId>/. -
triageTestFailurebuilds a structured treatment plan containing failure reason, remediation steps, and automation directives. Plans are written next to the evidence (prefixed withtreatment-plan-). - Passing
--auto-heallets Donobu run an autonomous flow that attempts to fix selectors/code. Successful fixes attach regenerated tests (fixed-test.ts) and annotate runs with@self-healed.
GPT Configuration
Donobu selects a GPT backend in the following priority order:
-
BASE64_GPT_CONFIG- Base64 JSON matchingGptConfigSchema. -
DONOBU_API_KEY- use Donobu hosted models. - Anthropic via AWS Bedrock (
AWS_BEDROCK_MODEL_NAME,AWS_REGION,AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY). - Anthropic direct (
ANTHROPIC_API_KEY, optionalANTHROPIC_MODEL_NAME). - Google Gemini (
GOOGLE_GENERATIVE_AI_API_KEY, optionalGOOGLE_GENERATIVE_AI_MODEL_NAME). - OpenAI (
OPENAI_API_KEY, optionalOPENAI_API_MODEL_NAME).
Additional runtime env vars:
| Env var | Purpose |
|---|---|
DONOBU_PAGE_AI_CLEAR_CACHE |
Force cache invalidation for every page.ai() call. |
BASE_WORKING_DIR |
Override the platform-specific Donobu data directory. |
BROWSERBASE_API_KEY / BROWSERBASE_PROJECT_ID
|
Run flows inside BrowserBase sessions instead of local Chromium. |
Additional Resources
- Example flows and generated tests: https://github.com/donobu-inc/playwright-flows
- Support: https://donobu.com