Skip to main content

WebQA Agent is an autonomous web browser agent that audits performance, functionality & UX for engineers and vibe-coding creators.

Project description

WebQA Agent

License GitHub stars GitHub forks GitHub issues Ask DeepWiki

Try Demo 🤗HuggingFace | 🚀ModelScope
Join us on 🎮Discord | 💬WeChat

English · 简体中文

If you like WebQA Agent, please give us a ⭐ on GitHub!
Click Star

🤖 WebQA Agent is an autonomous web browser agent that audits performance, functionality & UX for engineers and vibe-coding creators. ✨

🚀 Core Features

🧭 Overview

WebQA Agent Business Features Diagram

📋 Feature Highlights

  • 🤖 AI-Powered Testing: Performs autonomous website testing with intelligent planning and reflection—explores pages, plans actions, and executes end-to-end flows without manual scripting. Features 2-stage architecture (lightweight filtering + comprehensive planning) and dynamic test generation for newly appeared UI elements.
  • 📊 Multi-Dimensional Observation: Covers functionality, performance, user experience, and basic security; evaluates load speed, design details, and links to surface issues. Uses multi-modal analysis (screenshots + DOM structure + text content) and DOM diff detection to discover new test opportunities.
  • 🎯 Actionable Recommendations: Runs in real browsers with smart element prioritization and automatic viewport management. Provides concrete suggestions for improvement with adaptive recovery mechanisms for robust test execution.
  • 📈 Visual Reports: Generates detailed HTML test reports with clear, multi-dimensional views for analysis and tracking.

📹 Examples

Try Demo: 🤗Hugging Face · 🚀ModelScope

Quick Start

🏎️ Recommended uv (Python>=3.11):

# 1) Create a project and install the package
uv init my-webqa && cd my-webqa
uv add webqa-agent
uv sync

# 2) Install browser (required)
uv run playwright install chromium

# 3) Create a config file (auto-generated template)
uv run webqa-agent init            # creates config.yaml

# 4) Edit config.yaml
#    - target.url: your site
#    - llm_config.api_key: your OpenAI key (or set OPENAI_API_KEY)
#  For detailed configuration information, please refer to the "Usage > Test Configuration"

# 5) Run
uv run webqa-agent run

🐳 Docker (one-liner)

Before starting, ensure Docker is installed. If not, please refer to the official installation guide: Docker Installation Guide.

Recommended versions: Docker >= 24.0, Docker Compose >= 2.32.

mkdir -p config \
  && curl -fsSL https://raw.githubusercontent.com/MigoXLab/webqa-agent/main/config/config.yaml.example -o config/config.yaml

# Edit config.yaml
# Set target.url, llm_config.api_key and other parameters

curl -fsSL https://raw.githubusercontent.com/MigoXLab/webqa-agent/main/start.sh | bash

🛠️ From source

git clone https://github.com/MigoXLab/webqa-agent.git
cd webqa-agent
uv sync
uv run playwright install chromium
cp ./config/config.yaml.example ./config/config.yaml
# Edit config.yaml
# Set target.url, llm_config.api_key and other parameters
uv run webqa-agent run -c ./config/config.yaml

Optional Dependencies

Performance (Lighthouse): npm install lighthouse chrome-launcher (Node.js ≥18)

Security (Nuclei):

brew install nuclei      # macOS
nuclei -ut               # update templates
# Linux/Win: download from https://github.com/projectdiscovery/nuclei/releases

⚙️ Usage

Test Configuration

target:
  url: https://example.com              # Website URL to test
  description: Website QA testing
  # max_concurrent_tests: 2             # Optional, default 2

test_config:
  function_test:                        # Functional testing
    enabled: True
    type: ai                            # 'default' or 'ai'
    business_objectives: Test search functionality, generate 3 test cases
    dynamic_step_generation:
      enabled: True                     # Enable dynamic step generation
      max_dynamic_steps: 10
      min_elements_threshold: 1
  ux_test:                              # User experience testing
    enabled: True
  performance_test:                     # Performance analysis (requires Lighthouse)
    enabled: False
  security_test:                        # Security scanning (requires Nuclei)
    enabled: False

llm_config:
  model: gpt-4.1-2025-04-14             # Vision model configuration, currently supports OpenAI SDK compatible format only
  filter_model: gpt-4o-mini             # Lightweight model for element filtering
  api_key: your_api_key                 # Or use OPENAI_API_KEY env var
  base_url: https://api.openai.com/v1   # Or use OPENAI_BASE_URL env var
  temperature: 0.1

browser_config:
  viewport: {"width": 1280, "height": 720}
  headless: False                       # Auto True in Docker
  language: en-US
  cookies: []
  save_screenshots: False

report:
  language: en-US                       # zh-CN or en-US

log:
  level: info                           # debug, info, warning, error

Notes for Running Tests

  • Functional Testing (AI mode): Two-stage planning. Stage 1 (filter_model) prioritizes elements for efficient analysis; Stage 2 (primary model) generates comprehensive test cases. The agent may reflect and re-plan based on page state and coverage, so executed case count can differ from the initial request. When dynamic_step_generation is enabled, new UI elements (e.g., dropdowns, modals) detected via DOM diff will trigger additional generated steps.
  • Functional Testing (default mode): Focuses on whether UI interactions (clicks, navigations) complete successfully.
  • User Experience Testing: Multi-modal analysis (screenshots + DOM structure + text) to assess visual quality, detect typos/grammar issues, and validate layout rendering. Model outputs include best-practice suggestions for optimization.

📖 CLI Reference

init - Create Configuration

# Create config.yaml in current directory
webqa-agent init

# Create at custom path
webqa-agent init -o myconfig.yaml

# Overwrite existing file
webqa-agent init --force

run - Execute Tests

# Auto-discover config (./config.yaml or ./config/config.yaml)
webqa-agent run

# Specify config file
webqa-agent run -c /path/to/config.yaml

ui - Web Interface

WebQA Agent provides a visual interface powered by Gradio:

# Install Gradio
uv add "gradio>=5.44.0"

# Launch Web UI (English by default)
webqa-agent ui
# Access at http://localhost:7860

# Launch with Chinese interface
webqa-agent ui -l zh-CN

# Optional: custom host/port and no auto-open browser
webqa-agent ui --host 0.0.0.0 --port 9000

🧠 Recommended Models

Model Recommendation
gpt-4.1-2025-04-14 High accuracy and reliability
gpt-4.1-mini-2025-04-14 Economical and practical
qwen3-vl-235b-a22b-instruct Open-source model, preferred for on-premise
doubao-seed-1-6-vision-250815 Good web understanding, supports visual recognition

📊 View Results

Test reports are generated in the reports/ directory. Open the HTML file to view detailed results.

🗺️ Roadmap

  1. Continuous optimization of AI functional testing: Improve coverage and accuracy
  2. Functional traversal and page validation: Verify business logic correctness
  3. Interaction and visualization: Real-time reasoning process display
  4. Capability expansion: Multi-model integration and more evaluation dimensions

🙏 Acknowledgements

  • natbot: Drive a browser with GPT-3
  • Midscene.js: AI Operator for Web, Android, Automation & Testing
  • browser-use: AI Agent for Browser control

📄 License

This project is licensed under the Apache 2.0 License.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

webqa_agent-0.2.1.tar.gz (675.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

webqa_agent-0.2.1-py3-none-any.whl (688.9 kB view details)

Uploaded Python 3

File details

Details for the file webqa_agent-0.2.1.tar.gz.

File metadata

  • Download URL: webqa_agent-0.2.1.tar.gz
  • Upload date:
  • Size: 675.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for webqa_agent-0.2.1.tar.gz
Algorithm Hash digest
SHA256 1ef0e9a39a09c6ed749168f58eb79b0da76819df4e41c3ff9c051270ea1ada84
MD5 726fb7953355abd9cfc8de48d41c0219
BLAKE2b-256 11a9c6c10c18517e09ac495ba2c3d7c1ecc1b6a46a37276279f4662bab79dc35

See more details on using hashes here.

Provenance

The following attestation bundles were made for webqa_agent-0.2.1.tar.gz:

Publisher: workflow.yml on MigoXLab/webqa-agent

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file webqa_agent-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: webqa_agent-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 688.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for webqa_agent-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 caa9b95c1f8c4555038b1453ec819d300892c56c69102ff589b54b6bb67dcede
MD5 b5a65065adbbb2246f6a203960f4741e
BLAKE2b-256 2397b5d3fb745aa5fde4cdbfd94db9837bdd5a5b199bcb61b7a6de7db9695117

See more details on using hashes here.

Provenance

The following attestation bundles were made for webqa_agent-0.2.1-py3-none-any.whl:

Publisher: workflow.yml on MigoXLab/webqa-agent

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page