A production-ready Playwright + TypeScript framework foundation built with a:
- framework-first
- manifest-driven
- validator-governed
- spec-driven
- agent-assisted
architecture.
Agents never control:
- folder structure
- naming conventions
- fixture boundaries
- auth model
- environment resolution
- registry schema
- governance rules
- healing limits
All inputs are normalized into deterministic manifests before code generation.
Generated code is blocked if it violates framework rules.
Healers can fix only approved test-side issues.
Every generated test and artifact must map back to a source.
- Primary UI: Test Automation Playground at
https://apptesting.pl/ - Primary API: DummyJSON at
https://dummyjson.com
- OpenAPI YAML / JSON
- story.md
- Jira markdown / normalized export
- user instruction snapshots
- screenshots and flow notes
- Collect inputs in
specs/ - Normalize to manifests in
src/ai/manifests/ - Plan changes by comparing manifests, registry, and target files
- Generate code using templates
- Sync registry
- Validate manifests + registry + generated code
- Execute by layer, tag, sourceRef, or scenarioId
- Record artifacts and registry updates
- Heal only approved issues
npm install
npx playwright install --with-deps
cp .env.example .env
cp .env.local.example .env.local
npm run typecheck
npm run validate:manifests
npm run registry:check
npm run test:smokeRuntime config is loaded from .env plus an environment-specific file:
TEST_ENV=localloads.env.localTEST_ENV=qaloads.env.qaTEST_ENV=stageloads.env.stage
Use .env for shared defaults and .env.<TEST_ENV> for environment-specific URLs, credentials, and test data. Shell or CI variables still take precedence over file values.
Examples:
TEST_ENV=qa npm run test:api
npm run agentic -- --action=run --mode=ui --env=stage
npm run agentic -- --action=run --mode=api --test-env=qanpm run testnpm run test:smokenpm run test:uinpm run test:apinpm run test:hybridnpm run agentic -- --action=plan --mode=ui --input-type=story --strategy=plan-only --env=localnpm run agentic -- --action=generate --mode=api --input-type=openapi --strategy=extend --env=qanpm run agentic -- --action=normalize --mode=ui --input-type=jira --env=localnpm run agentic -- --action=normalize --mode=ui --input-type=user-input --env=localnpm run agentic -- --action=normalize --mode=ui --input-type=screenshot --env=localnpm run agentic -- --action=promote --mode=ui --input-type=story --strategy=auto --env=localnpm run agentic -- --action=run --mode=ui --env=localnpm run agentic -- --action=classify --mode=ui --env=localnpm run agentic -- --action=heal --mode=ui --env=localnpm run agentic -- --action=flakes --mode=ui --env=localnpm run agentic -- --action=analytics --mode=ui --env=localnpm run agentic -- --action=security --env=localnpm run agentic -- --action=full --mode=smoke --input-type=openapi --strategy=auto --env=localnpm run auth:setupnpm run validate:manifestsnpm run plan:changesnpm run registry:checknpm run validate:frameworknpm run validate:secretsnpm run validatenpm run artifacts:initnpm run generate:sample
- UI wrappers for forms, interactions, widgets, tables, alerts, frames/windows, files, dynamic content, and shadow DOM
- DummyJSON API wrappers for auth, users, products, carts, and posts
- executable governance checks for schema validity, traceability, folder placement, weak assertions, hard waits, hardcoded URLs/secrets, and fixture boundaries
- stronger registry schema
- sample manifest schema
- sample normalized sources
- artifact initialization script
- OpenAPI normalization stub
- template-based generator for manifest-backed Playwright specs
- governance docs
- CI pipeline
- UI/API/hybrid skeletons