Skip to main content
Glama
palaneelam

QA Browser MCP Agent

by palaneelam
README.md
# QA Browser MCP Agent for ToolShop

> A practical Browser MCP Agent series for testing the ToolShop application using Python, FastMCP, Playwright, GitHub Models API, and professional HTML reporting.

![Python](https://img.shields.io/badge/Python-3.12+-blue)
![FastMCP](https://img.shields.io/badge/FastMCP-3.4.2-green)
![Playwright](https://img.shields.io/badge/Playwright-Browser%20Automation-brightgreen)
![MCP](https://img.shields.io/badge/MCP-Model%20Context%20Protocol-purple)
![License](https://img.shields.io/badge/License-MIT-yellow)

## Overview

This repository demonstrates how to build a QA Browser MCP Agent for ToolShop:

```text
https://practicesoftwaretesting.com
```

The project evolves from basic browser control to autonomous AI-powered QA execution.

## Who This Is For

- Manual Testers
- QA Engineers
- Automation Testers
- SDETs
- QA Leads
- QA Architects
- Students learning MCP
- Anyone learning Agentic AI for Software Testing

## Architecture

```text
User / QA Engineer
        ↓
Python Main Program
        ↓
FastMCP Client
        ↓
STDIO Transport
        ↓
FastMCP Browser Server
        ↓
Playwright
        ↓
Chrome Browser
        ↓
ToolShop Website
        ↓
Screenshots + HTML Reports
```

For AI versions:

```text
User Goal
        ↓
GitHub Models API
        ↓
AI Test Plan / Exploratory Test Ideas
        ↓
Browser MCP Server
        ↓
Playwright Execution
        ↓
Professional QA Report
```

## Versions

| Version | Folder | Purpose | AI Used | HTML Report |
|---|---|---|---|---|
| V1 | `v1_browser_control` | Browser control basics | No | No |
| V2 | `v2_search_testing_agent` | Search functionality testing | No | Yes |
| V3 | `v3_cart_testing_agent` | Shopping cart testing | No | Yes |
| V4 | `v4_checkout_testing_agent` | Checkout readiness testing | No | Yes |
| V5 | `v5_ai_exploratory_testing_agent` | AI exploratory testing | Yes | Yes |
| V6 | `v6_autonomous_browser_qa_agent` | Autonomous browser QA | Yes | Yes |

## Project Structure

```text
QA_Browser_MCP_Agent/
├── README.md
├── requirements.txt
├── .gitignore
├── LICENSE
├── CHANGELOG.md
├── CONTRIBUTING.md
├── docs/
│   ├── architecture.md
│   ├── version-comparison.md
│   ├── troubleshooting.md
│   └── sample-goals.md
├── v1_browser_control/
├── v2_search_testing_agent/
├── v3_cart_testing_agent/
├── v4_checkout_testing_agent/
├── v5_ai_exploratory_testing_agent/
└── v6_autonomous_browser_qa_agent/
```

## Prerequisites

Install:

- Python 3.12+
- Git
- VS Code
- Chromium via Playwright
- GitHub Models access for V5/V6

## Setup

```powershell
cd C:\GIT\qa_mcp_series
git clone https://github.com/YOUR_USERNAME/QA_Browser_MCP_Agent.git
cd QA_Browser_MCP_Agent

python -m venv .venv
.venv\Scripts\activate

pip install -r requirements.txt
playwright install chromium
```

## Environment Variables

Create `.env` in the project root only if you want V5/V6 to use GitHub Models:

```env
GITHUB_TOKEN=your_github_models_token_here
```

V1 to V4 do not need this token.

V5 and V6 also include fallback logic, so they can still run if the token is missing or quota is exhausted.

## Run Commands

Run all commands from project root.

```powershell
python .\v1_browser_control\main.py
python .\v2_search_testing_agent\main.py
python .\v3_cart_testing_agent\main.py
python .\v4_checkout_testing_agent\main.py
python .\v5_ai_exploratory_testing_agent\main.py
python .\v6_autonomous_browser_qa_agent\main.py
```

## Output Locations

Each version stores its own evidence:

```text
v2_search_testing_agent/screenshots/
v2_search_testing_agent/reports/

v3_cart_testing_agent/screenshots/
v3_cart_testing_agent/reports/

v4_checkout_testing_agent/screenshots/
v4_checkout_testing_agent/reports/

v5_ai_exploratory_testing_agent/screenshots/
v5_ai_exploratory_testing_agent/reports/

v6_autonomous_browser_qa_agent/screenshots/
v6_autonomous_browser_qa_agent/reports/
```

## Version 1: Browser Control MCP

Run:

```powershell
python .\v1_browser_control\main.py
```

Menu:

```text
1. Show Available MCP Tools
2. Open ToolShop and Capture Screenshot
3. Get ToolShop Homepage Info
4. Verify ToolShop Homepage Loads
0. Exit
```

Expected output:

```text
v1_browser_control/screenshots/toolshop_homepage.png
```

## Version 2: Search Testing Agent

Run:

```powershell
python .\v2_search_testing_agent\main.py
```

Inputs:

```text
Existing product: hammer
Invalid product: xyznotfound
Report name: search_test_report.html
```

Output:

```text
v2_search_testing_agent/reports/search_test_report.html
```

## Version 3: Cart Testing Agent

Run:

```powershell
python .\v3_cart_testing_agent\main.py
```

Inputs:

```text
Product: hammer
Report name: cart_test_report.html
```

Output:

```text
v3_cart_testing_agent/reports/cart_test_report.html
```

## Version 4: Checkout Testing Agent

Run:

```powershell
python .\v4_checkout_testing_agent\main.py
```

Inputs:

```text
Product: saw
Report name: checkout_test_report.html
```

Output:

```text
v4_checkout_testing_agent/reports/checkout_test_report.html
```

## Version 5: AI Exploratory Testing Agent

Run:

```powershell
python .\v5_ai_exploratory_testing_agent\main.py
```

Example goals:

```text
Perform security-oriented exploratory testing on ToolShop search
Explore ToolShop search from a usability perspective
Perform boundary testing on ToolShop search
Test ToolShop search functionality like a functional QA engineer
```

Output:

```text
v5_ai_exploratory_testing_agent/reports/ai_exploratory_search_report.html
```

## Version 6: Autonomous Browser QA Agent

Run:

```powershell
python .\v6_autonomous_browser_qa_agent\main.py
```

Example goals:

```text
Test ToolShop search functionality like a senior QA engineer
Perform security-focused browser QA testing on ToolShop search
Perform usability-focused testing on ToolShop product search
Perform boundary and negative testing on ToolShop search
```

Output:

```text
v6_autonomous_browser_qa_agent/reports/autonomous_browser_qa_report.html
```

## Important Concept: Why Single-Flow Tools Are Used

In MCP STDIO mode, each tool call may start a new server process. Browser state may not persist across separate menu options.

That is why this project uses stable single-flow tools:

```text
open_toolshop_and_capture_screenshot()
run_search_functionality_tests()
run_cart_functionality_tests()
run_checkout_functionality_tests()
run_ai_exploratory_search_tests()
run_autonomous_browser_qa()
```

## Troubleshooting Summary

Detailed troubleshooting is available in:

```text
docs/troubleshooting.md
```

Common issues covered:

- Browser state not persisting
- Unknown tool
- MCP connection closed
- Missing GitHub token
- Same AI results for every goal
- GitHub Models rate limit
- Playwright timeout
- Checkout button not found
- Screenshot links not opening
- Browser executable missing

## Git Commands

Check status:

```powershell
git status
```

Recommended `.gitignore` should exclude:

```text
.env
.venv/
__pycache__/
screenshots/
reports/
*.html
*.png
```

Commit:

```powershell
git add README.md requirements.txt .gitignore LICENSE CHANGELOG.md CONTRIBUTING.md docs/ v1_browser_control/ v2_search_testing_agent/ v3_cart_testing_agent/ v4_checkout_testing_agent/ v5_ai_exploratory_testing_agent/ v6_autonomous_browser_qa_agent/
git commit -m "Add QA Browser MCP Agent with six progressive versions"
git push origin main
```

If your branch is master:

```powershell
git push origin master
```

## Learning Outcomes

You will learn:

- MCP client-server architecture
- Browser automation using Playwright
- How to expose browser actions as MCP tools
- Why STDIO MCP can be stateless
- How to design stable browser-agent workflows
- How to generate professional HTML reports
- How AI can generate exploratory test ideas
- How to evolve from automation scripts to autonomous QA agents

## Future Enhancements

- Excel reporting
- PDF reporting
- Console log capture
- Network log capture
- Accessibility checks
- Visual validation
- Login flow testing
- Checkout form validation
- Bug report generation
- AI root cause analysis
- GitHub Actions
- Docker support

## Author

Neelam Pal  
QA Architect | AI in Testing | MCP | Agentic AI | Quality Engineering

## License

MIT License.