Releases: openqa-labs/openqa
v0.0.10
What's new
varlock environment schema
.env.schemaadded to all scaffolded.openqaprojects β documents every variable with type, description, and@sensitiveannotation. Secrets are redacted from logs automatically.varlock/auto-loadimported in config files so env vars are validated on startup.- varlock auto-installed during
openqa initβ zero manual steps. - Node.js >=22 engine requirement added to template
package.jsonfiles (varlock requirement).
Example feature files
openqa initnow scaffolds two example feature files into.openqa/features/:todomvc.featureβ 2 scenarios using*(asterisk) step syntaxgetting-started.featureβ 1 scenario
- Init prompt updated: feature files path is now relative to
.openqa/(default:features).
Fix: async install spinner
- Replaced
execSyncwith asyncspawnso the CLI spinner animates properly duringnpm installand Playwright browser download.
Docs
- README, quickstart, and CLAUDE.md updated with varlock docs, feature file organization, and customization guidance.
Full changelog
v0.0.8 β OpenCode provider + unified SDK architecture
What's new
OpenCode provider (openCode)
A second AI provider powered by @opencode-ai/sdk. Supports any model your OpenCode installation has access to β including GitLab Duo, GitHub Copilot, Anthropic, OpenAI, and Google.
import { runAgent, openCode } from 'openqa';
// GitLab Duo (default)
await runAgent(openCode('gitlab/duo-chat-haiku-4-5'), step, page);
// GitHub Copilot
await runAgent(openCode('github-copilot/gpt-5.4'), step, page);
// Anthropic / OpenAI / Google
await runAgent(openCode('anthropic/claude-sonnet-4-6'), step, page);
await runAgent(openCode('openai/gpt-4o'), step, page);
await runAgent(openCode('google/gemini-2.0-flash'), step, page);Unified SDK architecture
Both claudeCode and openCode now share the same transport and interface:
- Shared MCP server β Playwright MCP exposed over HTTP on a random
127.0.0.1port perrunAgent()call. No subprocesses, no temp files, no socket bridges. - Shared system prompt β identical agent instructions regardless of which backend runs the step.
- Uniform
provider.run()interface β swapping providers is a one-line change in.openqa/steps/steps.ts.
openqa init wizard updates
- GitLab Duo (
gitlab/duo-chat-haiku-4-5) and GitHub Copilot (github-copilot/gpt-5.4) added as first-class OpenCode model options - Next Steps message now shows
claude login/opencode auth loginas the local auth path β no API key needed for local development
No API key needed locally
claude login # Claude Code
opencode auth login # OpenCode (GitLab Duo, GitHub Copilot, Anthropic, OpenAI, Google, β¦)Installation
npx openqa initOr update an existing install:
cd .openqa && npm install openqa@latestFull changelog
v0.0.6 - Fix claude-agent-sdk 0.1.75 Compatibility
Bug Fixes
- Fixed browser context disposal issue with claude-agent-sdk 0.1.75
- Resolved "Target page, context or browser has been closed" error occurring on multi-step AI workflows
- The SDK's improved cleanup in v0.1.75 was closing externally-managed browser contexts
- Solution: Wrapped browser context with no-op close() function to prevent premature disposal
- All AI steps in tests now work correctly across multiple sequential operations
Changes
- Updated
ClaudeAgent.jsto use wrapped browser context with managed lifecycle - Enhanced
SessionManager.jswith MCP connection management capabilities - Updated documentation in
CLAUDE.md
Compatibility
- Compatible with
claude-agent-sdkv0.1.75 and later - Tested with Playwright BDD multi-step workflows
Installation
npm install openqa@0.0.6View on npm: https://www.npmjs.com/package/openqa
v0.0.5 - Custom Fixture Support for YAML Tests
π What's New
Custom Fixture Support for YAML Tests
YAML tests can now import custom Playwright fixtures, enabling advanced use cases like cloud browsers, custom test data, and authentication fixtures.
Example:
name: Cloud Browser Tests
fixtureFile: ./fixtures/browser.js # Import custom fixtures
tests:
- name: Test with cloud browser
steps:
- Navigate to https://example.com
- Add laptop to cartFixture file:
// fixtures/browser.js
import { test as base } from '@playwright/test';
import { chromium } from '@playwright/test';
export const test = base.extend({
browser: [async ({}, use) => {
const browser = await chromium.connectOverCDP('ws://your-cloud-browser');
await use(browser);
await browser.close();
}, { scope: 'worker' }],
});π¦ Changes
- Added `fixtureFile` property to YAML schema for importing custom Playwright fixtures
- Path validation: requires relative paths starting with `./` or `../`
- File type validation: only `.js` and `.ts` extensions allowed
- Full backward compatibility: existing YAML tests work unchanged
π Examples
- OnKernel cloud browser: `examples/playwright-yaml/fixtures/onkernel.js`
- Steel Docker browser: `examples/playwright-yaml/fixtures/steel.js`
- YAML usage: `examples/playwright-yaml/tests/onkernel.spec.yaml`
- Steel BDD example: `examples/playwright-bdd-steel/`
π§ Technical Details
Files Modified
- `src/yaml/schema.js` - Added fixtureFile validation
- `src/yaml/generator.js` - Conditional import generation with path resolution
- `src/cli/generate.js` - Pass absolute YAML path for fixture resolution
- `README.md` - Added fixture documentation and examples
Path Resolution
Fixture paths are resolved relative to the YAML file location and work identically in both development and production environments. No hardcoded paths or assumptions about package location.
π Documentation
Updated README with:
- YAML custom fixtures quick start example
- Cloud browser fixture patterns
- Updated examples list
π Links
- npm: https://www.npmjs.com/package/openqa
- Documentation: https://github.com/openqa-labs/openqa
v0.0.3 - Enhanced Init Command & Improved BDD Templates
π What's New
Enhanced Init Command
- Zero-parameter setup: Simply run
npx openqa init- no arguments needed! - Interactive prompts: Choose framework (Playwright-BDD or Cucumber.js), install browsers, and select AI provider
- Smart browser installation: Optional Chromium installation with progress tracking
- Provider-specific guidance: Tailored setup instructions based on your AI provider choice (Anthropic vs Others)
Improved BDD Templates
- Fixed timeout issues: 4-minute default timeout for AI-powered browser tests
- Better test results: Cucumber reports now output to
cucumber-test-results/directory - Included .gitignore files: Both templates now include proper .gitignore files for clean repositories
- Fixed Playwright-BDD template: Proper test instance export for bddgen compatibility
LangChain Agent Enhancements
- Configurable recursion limit: Default increased to 100 (from 25) for complex workflows
- Environment variable support: Configure models via
ANTHROPIC_MODEL,OPENAI_MODEL,GOOGLE_MODEL,DEFAULT_MODEL - Flexible timeout control: Set
RECURSION_LIMITenvironment variable
Documentation Improvements
- Simplified Quick Start: Single
npx openqa initcommand for new projects - Clear authentication steps: Added auth instructions to all integration guides
- Better organization: Separated new projects from existing project integrations
π¦ Installation
# New projects
npx openqa init
# Existing projects
npm install openqaπ§ What's Fixed
- β Cucumber template timeout errors
- β Playwright-BDD bddgen "Can't guess test instance" error
- β ES module error in CLI init command
- β Missing .gitignore files in templates
- β Confusing README structure
π Full Changelog
- Enhanced init command with interactive prompts and browser installation
- Fix Cucumber template timeouts (4-minute default)
- Fix .gitignore files not being published to npm
- Fix playwright-bdd template: export test instance for bddgen
- Restructure README with step-by-step flow
- Add recursion limit and model configuration to LangChain agent
- Add Cucumber.js example for testing and reference
π Contributors
Generated with Claude Code
Co-Authored-By: Claude noreply@anthropic.com
v0.0.2 - BDD Integration & CLI Tool
π What's New
BDD Integration
- 1-Line BDD Setup: Replace all step definitions with a single import
- Playwright-BDD:
import 'openqa/bdd/playwright-bdd' - Cucumber.js:
import 'openqa/bdd/cucumber'
- Playwright-BDD:
- Write tests in pure natural language - AI handles everything
- Automatic browser setup and teardown for Cucumber.js
CLI Scaffolding Tool
- Instant Project Setup:
npx openqa init playwright-bdd - 2-Minute Workflow: From zero to running BDD tests
- Creates complete project structure with:
- Configuration files
- Example .feature files
- Step definitions (1-line integration)
- Dependencies auto-installed
Documentation Updates
- Restructured README with BDD-first approach
- Comprehensive testing guide in PUBLISHING.md
- Clear examples for both frameworks
π¦ Installation
```bash
npm install openqa@latest
```
π Quick Start
New Project:
```bash
npx openqa init playwright-bdd
cd my-project
claude login # or set ANTHROPIC_API_KEY
npm test
```
Existing Project:
```bash
npm install openqa
Replace all step definitions with:
import 'openqa/bdd/playwright-bdd';
```
π Links
- NPM: https://www.npmjs.com/package/openqa
- Website: https://www.auto-browse.com/
- Examples: https://github.com/auto-browse/openqa/tree/main/examples
π Full Changelog
- Add BDD integration modules for Playwright-BDD and Cucumber.js
- Add CLI scaffolding tool with interactive prompts
- Add project templates for both frameworks
- Add example project (playwright-bdd-simple)
- Update README with BDD-first structure
- Fix npm publish exports issue (removed main field)
- Update PUBLISHING.md with comprehensive testing guide
Release v0.0.1
OpenQA v0.0.1
First public release of OpenQA - AI-powered browser automation using Playwright MCP with Claude Code
integration.
Features
- π€ AI-powered browser automation with natural language commands
- π Shared browser context between tests and AI agent
- π Seamless Playwright integration
- π Works with Claude Code credentials (no API key needed)
- π¦ Support for both Claude SDK and LangChain agents
- β¨ Playwright and Playwright BDD examples included
Installation
npm install openqa @playwright/test
NPM Package
https://www.npmjs.com/package/openqa
Documentation
See https://github.com/auto-browse/openqa#readme for usage instructions and examples.