Agent-native lightweight web automated testing toolkit.
AutoQA is designed for a simple workflow:
autoqa scan https://example.com --out ./reports/example --fullAn AI agent such as Codex, Hermes, Claude, or another coding agent should be able to run one command, collect test evidence, and produce a usable Markdown report.
Chinese README: README.zh-CN.md
AutoQA is not trying to replace Playwright, Lighthouse, ZAP, or k6. It is a lightweight orchestration and evidence layer that makes these capabilities easier for agents to use.
The first target is practical web testing:
- HTTP availability checks
- redirect chain inspection
robots.txtvalidationsitemap.xmlvalidation- public asset checks such as
favicon.icoandmanifest.json - title and description checks
- common security header checks
- browser screenshots
- console error collection
- network failure collection
- authenticated page testing with test accounts
- Markdown and JSON reports
- evidence directory for screenshots, headers, HTML previews, logs, and traces
- One command should be enough for a useful default scan.
- Configuration should be optional, not required.
- Reports should be readable by humans and structured enough for agents.
- Evidence should be saved and traceable.
- Authentication should support test accounts without leaking secrets.
- The default mode should be safe and read-only.
- The implementation should stay lightweight and avoid becoming a heavy test management platform.
AutoQA is planned as a small multi-language toolkit:
| Layer | Stack | Responsibility |
|---|---|---|
| Core | Go | CLI, HTTP scanner, concurrent checks, evidence store, result aggregation, MCP server |
| Browser | TypeScript + Playwright | browser automation, screenshots, traces, console logs, network logs, E2E execution |
| Agent | Python | result analysis, test planning, report writing, failure explanation, LLM integration |
Users and agents should only need to interact with one command:
autoqaThe internal Go, TypeScript, and Python components should be hidden behind that command.
The exact installation method is still being designed. The intended experience is:
curl -fsSL https://autoqa.dev/install.sh | shOr with Docker:
docker run --rm \
-v "$PWD/reports:/reports" \
ghcr.io/nesoriel/autoqa:latest \
scan https://example.com --out /reports/example --fullDuring early development, the project may require running the Go CLI, TypeScript browser runner, and Python agent components from source.
Run a full default scan:
autoqa scan https://example.com --out ./reports/example --fullRun a faster smoke scan:
autoqa scan https://example.com --out ./reports/example --profile smokeRun an SEO-focused scan:
autoqa scan https://example.com --out ./reports/example --profile seoUse a config file:
autoqa scan --config autoqa.yamlExpected output:
reports/example/
report.md
result.json
summary.json
autoqa.log
evidence/
screenshots/
http/
console/
network/
pages/
AutoQA must support authenticated testing through test accounts. Passwords should not be passed directly on the command line.
Recommended pattern:
export AUTOQA_TEST_PASSWORD='your-test-password'
autoqa scan https://example.com \
--out ./reports/example \
--full \
--login-url /login \
--username test@example.com \
--password-env AUTOQA_TEST_PASSWORDAutoQA should also support Playwright storage state:
autoqa auth login https://example.com \
--login-url /login \
--username test@example.com \
--password-env AUTOQA_TEST_PASSWORD \
--save-state .autoqa/auth/state.json
autoqa scan https://example.com \
--out ./reports/example \
--full \
--auth-state .autoqa/auth/state.jsonSensitive values such as passwords, cookies, tokens, Authorization, Cookie, and Set-Cookie must be redacted from reports and evidence by default.
autoqa scan <url>
autoqa scan <url> --out <dir>
autoqa scan <url> --full
autoqa scan <url> --profile smoke
autoqa scan <url> --profile seo
autoqa scan --config autoqa.yaml
autoqa auth login <url>
autoqa setup
autoqa doctor
autoqa mcpAutoQA is currently in the design stage. The first milestone is to make this command genuinely useful:
autoqa scan <url> --out <dir> --fullTBD.