All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
maxRetriesoption toAssertionOptions(default:1) to control how many times a failed assertion is retried with a fresh page snapshot and screenshot. Setting it to0disables retries.onRetrycallback toAssertionOptionsthat fires before each retry, receiving the retry index and the fullAssertionResultfrom the previous attempt for debugging flaky assertions.- CUA mode (
configure({ ai: { mode: "cua" } })): executerunStepsandrunUserFlowthrough OpenAI's Responses API with the built-incomputertool. Screenshot-driven, coordinate-based actions via Playwright'spage.mouse/page.keyboard. RequiresOPENAI_API_KEYandgateway: "none"; Redis step caching is skipped in this mode because coordinate actions aren't portable across viewport sizes. cuamodel slot inModelConfig(default:gpt-5.5). For now, you cannot override the CUA model.getMode()helper andAIModetype exported fromsrc/config.ts.
- Core execution functions:
runSteps(),runUserFlow(),generatePlaywrightTest(),executeWithAutoHealing() - Multi-model assertion engine: consensus-based validation using Claude and Gemini with arbiter for disagreements
- Redis-based step caching: cache-first execution with AI fallback and auto-healing
- Configurable AI models: 8 model slots for different use cases (step execution, assertions, extraction, etc.)
- AI Gateway support: route through Vercel AI Gateway or use direct provider SDKs
- Placeholder system:
{{run.*}},{{global.*}},{{data.*}}, and{{email.*}}dynamic value injection - Email extraction: pluggable email provider interface with built-in emailsink provider
- Data extraction: AI-powered extraction of values from page snapshots and URLs
- Wait conditions: AI-evaluated wait conditions with exponential backoff
- Secure script runner: AST-validated Playwright script execution with whitelisted APIs
- Telemetry: optional Axiom/OpenTelemetry tracing via environment variables
- Structured logging: Pino-based logger with configurable log levels
- Global configuration:
configure()function for models, gateway, email provider, upload path