Project Info
This project did not submit a demo video on Devpost.
Inspiration
Imagine if testing your website was as simple as pasting a URL. Our platform uses Claude AI and Stagehand to automatically explore your site, generate user flows (eg. "Login → Checkout" or "Signup → Browse"), and test them end-to-end with no manual scripting needed. It identifies bugs in real-time, flags broken steps with full context and screenshots, and gives you a clean dashboard to monitor, debug, and re-run tests instantly. Think of it as an AI-powered QA engineer that never sleeps.
What it does
Our platform uses Claude AI and Stagehand to automatically explore your site, generate user flows (eg. "Login → Checkout" or "Signup → Browse"), and test them end-to-end with no manual scripting needed. It identifies bugs in real-time, flags broken steps with full context and screenshots, and gives you a clean dashboard to monitor, debug, and re-run tests instantly. It works like this: Generating test steps: Each flow is broken down into atomic actions (clicks, form entries, validations), using the Stagehand and Playwright framework. Executing flows: Stagehand performs actions (act()) and validations (extract()/observe()), logging each step with success/failure status and context. Autonomous Error detection: Errors (like missing elements or failed assertions) trigger alerts, and an agent autonomously creates a Github issue on the website's repository indicating the incorrect user flow. Continuous feedback: Developers can re-run flows, annotate failures (false alarm or real bug), and iterate instantly. Accurate Summarization: We utilize AI to summarize the results of the automatic testing framework in a sleek, interactive chatbot interface.
How we built it
Frontend: Next.js + Tailwind UI + ShadCN to render flows, logs, screenshots, and error history. Stagehand Integration: We used Stagehand’s page.goto, act, observe, and extract APIs for page control and assertions. LLM Integration: We utilized Anthropic's API to create a function that is called when Stagehand detects failed tests in the DOM - this trigger the LLM to create a title and description for a Github issue and create a Github issue on the repo. We also utilized the Gemini API for a summarization of the battle testing.
Challenges we ran into
One big challenge was trying to figure out which framework to use to integrate multiple AI agents. We got over this hump by utilizing Langchain and Langgraph's support for autonomous agents.
Accomplishments we're proud of
We are proud of being able to build a feature that autonomously created Github issues, as that was one main functionality we wanted to integrate.
What we learned
We learned a lot about AI agents as well as different frameworks for integrating multiple agents into software applications. We also learned a lot about browser automation and testing.
What's next
We plan on incorporating a fully agentic system that can read and understand HTML DOM, and identify potential issues within the code. We also hope to allow AI to make decisions about creating Github issues/PRs, as well as new frontend designs. Srikar Eranky Hacker ID: 98A
Website Testing Assistant
An AI-powered website testing system that automatically scrapes websites, generates Playwright tests, runs them, and creates GitHub issues for test failures.
Features
- 🤖 AI-Powered Test Generation: Uses Claude to generate comprehensive Playwright tests
- 🌐 Website Scraping: Extracts HTML, JavaScript, and CSS from any website
- 🧪 Automated Testing: Runs generated tests and reports results
- 🐛 GitHub Integration: Automatically creates GitHub issues for test failures
- 💬 Chatbot Interface: Natural language interface for testing workflows
- 🔧 FastMCP Server: Anthropic's FastMCP server with @tool decorators for AI agent integration
Architecture
Frontend (Next.js) → API Server (FastAPI) → Anthropic API → FastMCP Server → Tools
↓
GitHub Issues
Setup
Prerequisites
- Python 3.8+
- Node.js 18+
- Playwright browsers
- Anthropic API key
- GitHub token (optional, for issue creation)
Backend Setup
-
Install Python dependencies:
cd backend pip install -r requirements.txt -
Install Playwright browsers:
playwright install -
Set up environment variables: Create a
.envfile in thebackenddirectory:ANTHROPIC_API_KEY=your_anthropic_api_key_here GITHUB_TOKEN=your_github_token_here GITHUB_REPO=owner/repo_name -
Start the servers:
./start.shThis will start:
- FastMCP server on
http://localhost:8001 - API server on
http://localhost:8000 - Frontend on
http://localhost:3000
- FastMCP server on
Frontend Setup
-
Install dependencies:
cd frontend npm install --legacy-peer-deps -
Start the development server:
npm run devThe frontend will run on
http://localhost:3000
Usage
Chatbot Interface
-
Open
http://localhost:3000in your browser -
Enter a website URL in the URL field
-
Use natural language to interact with the assistant:
Examples:
- "Test the website at https://example.com"
- "Scrape https://example.com"
- "Generate tests for https://example.com"
- "Run test_google_com.py"
Quick Actions
The interface provides quick action buttons for common tasks:
- Test Website Integrity: Complete workflow (scrape → generate → run → create issue)
- Scrape Website: Extract HTML, JavaScript, and CSS
- Generate Tests: Create Playwright test files
- Run Tests: Execute existing test files
FastMCP Server
The FastMCP server can be used directly by AI agents:
cd backend
python fastmcp_server.py
Available Tools:
scrape_website(url): Extract website contentgenerate_playwright_test(url, html_content): Generate test filesrun_playwright_test(filename): Execute testscreate_github_issue(title, body, labels): Create GitHub issuestest_website_integrity(url): Complete workflow
API Endpoints
POST /api/chat
Handle chat messages and route to appropriate tools via Anthropic.
Request:
{
"messages": [
{ "role": "user", "content": "Test the website at https://example.com" }
],
"url": "https://example.com"
}
Response:
{
"message": "✅ Website integrity test completed successfully!",
"success": true,
"data": {...}
}
GET /api/tools
List available MCP tools.
Workflow
- User Input: User provides a URL and command via chatbot
- Anthropic Processing: API server sends request to Anthropic with tool definitions
- Tool Decision: Anthropic decides which tools to use
- FastMCP Execution: API server calls FastMCP server to execute tools
- Results: Returns detailed results to the user
Configuration
Environment Variables
| Variable | Description | Required |
|---|---|---|
ANTHROPIC_API_KEY | Anthropic API key for Claude | Yes |
GITHUB_TOKEN | GitHub personal access token | No |
GITHUB_REPO | GitHub repository (format: owner/repo) | No |
GitHub Token Setup
- Go to GitHub Settings → Developer settings → Personal access tokens
- Generate a new token with
reposcope - Add the token to your
.envfile
Development
Project Structure
├── backend/
│ ├── fastmcp_server.py # FastMCP server with @tool decorators
│ ├── api_server.py # FastAPI server with Anthropic integration
│ ├── fastmcp_client.py # Client for communicating with FastMCP server
│ ├── generate_tests.py # Original test generator
│ ├── requirements.txt # Python dependencies
│ └── .env # Environment variables
├── frontend/
│ ├── app/
│ │ └── page.tsx # Chatbot interface
│ ├── components/
│ │ └── ui/ # UI components
│ └── package.json # Node dependencies
└── README.md
Adding New Tools
- Add the tool function with
@mcp.tool()decorator infastmcp_server.py - Add tool definition to the API server's tool list
- Update the system message in
api_server.pyif needed
FastMCP Tool Example
@mcp.tool()
async def my_new_tool(param1: str, param2: int) -> str:
"""Description of what this tool does.
Args:
param1: Description of param1
param2: Description of param2
"""
# Tool implementation
return "Tool result"
Troubleshooting
Common Issues
-
Playwright browsers not installed:
playwright install -
CORS errors:
- Ensure the frontend is running on
http://localhost:3000 - Check CORS configuration in
api_server.py
- Ensure the frontend is running on
-
API key errors:
- Verify your
.envfile is in the backend directory - Check that
ANTHROPIC_API_KEYis set correctly
- Verify your
-
FastMCP server not responding:
- Ensure FastMCP server is running on port 8001
- Check that FastMCP dependencies are installed
-
GitHub integration not working:
- Ensure
GITHUB_TOKENandGITHUB_REPOare set - Verify the token has
reposcope
- Ensure
Debug Mode
Run the API server with debug logging:
uvicorn api_server:app --reload --log-level debug
Contributing
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
License
MIT License - see LICENSE file for details.
Analysis
View
Metric
- 17
- 7
- 5
- 5
Figures cover GitHub contributors during the hackathon window. A co-authored commit counts in full for each author, so per-member totals add up to more than the whole-team figures.
Technology
- AnthropicIn code
- CSSIn code
- FastAPIIn code
- JavaScriptIn code
- Next.jsIn code
- OpenAIIn code
- PythonIn code
- ReactIn code
- Tailwind CSSIn code
- TypeScriptIn code
- Google GeminiClaimed
10 of 11 appear in the indexed code. 1 claimed on Devpost could not be matched to code, which may simply mean the tool leaves no trace in the repository.
AI coding agents
No AI coding agent signals were found in this repository.
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
282 KB
Source files
83
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
dwang88/calhacks2025
100 files · 559 KB · @ bda389f
Structure
Interface
69 files · 69%Screens, components and styles rendered to the user.
Application logic
12 files · 12%Domain rules, services and shared utilities.
Supporting
Layers are inferred from where files sit in the tree, not from reading the code. A project that names its directories unconventionally will read oddly here — open the file browser to check anything the diagram implies.
Languages
- TypeScript71%
- Python19%
- JavaScript6%
- Markdown2%
- CSS2%
- YAML0%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
frontend/package.json
npm · 56- @browserbasehq/stagehand
- @hookform/resolvers
- @radix-ui/react-accordion
- @radix-ui/react-alert-dialog
- @radix-ui/react-aspect-ratio
- @radix-ui/react-avatar
- @radix-ui/react-checkbox
- @radix-ui/react-collapsible
- @radix-ui/react-context-menu
- @radix-ui/react-dialog
- @radix-ui/react-dropdown-menu
- @radix-ui/react-hover-card
- @radix-ui/react-label
- @radix-ui/react-menubar
- @radix-ui/react-navigation-menu
- @radix-ui/react-popover
- @radix-ui/react-progress
- @radix-ui/react-radio-group
- +38 more
backend/requirements.txt
pypi · 13- aiohttp
- anthropic
- fastapi
- fastmcp
- langchain-anthropic
- langchain-mcp-adapters
- langgraph
- openai
- playwright
- pydantic
- python-dotenv
- requests
- uvicorn
backend/package.json
npm · 4- @browserbasehq/stagehand
- @playwright/test
- dotenv
- zod
Declared in the repository’s manifests at the indexed commit. A declared package is not proof it is used, and runtime dependencies are listed first.
This project’s features have not been analysed yet.
Export this project's context (description, README, evidence, key source files) to chat with an AI agent elsewhere.