Transform plain English into production-ready test automation. Mark 1 is an intelligent test generation platform that converts natural language descriptions into executable Robot Framework code using a sophisticated multi-agent AI system. No coding required—just describe what you want to test.
"Open Flipkart and search for shoes and then get the first product name" ↓ [4 AI Agents Working Together] ↓ ✅ Working Robot Framework Test - 🎯 95%+ Success Rate - Vision-based element detection that actually works
- ⚡ 3-5x Faster - Batch processing finds all elements in one session
- 🧠 Context-Aware - AI understands your workflow, not just individual steps
- 🔒 Privacy-First - Run locally with Ollama or use cloud models
- 📦 Zero Setup - One command to start, works out of the box
- 🎨 Beautiful Reports - Detailed HTML logs for easy debugging
| Feature | Mark 1 | Selenium IDE | Playwright Codegen | Manual Coding |
|---|---|---|---|---|
| Input Method | Natural language | Record actions | Record actions | Write code |
| Output Format | Robot Framework | Selenium code | Python/JS/Java | Any framework |
| Element Detection | AI (95%+) | Record only | Record only | Manual |
| Learning Curve | None | Low | Medium | High |
| Maintenance | Simply Rerun | Re-record | Re-record | Manual updates |
- ✅ Python 3.9+ - Download
- ✅ Docker Desktop - Install (must be running!)
- ✅ Git - Install
- ✅ Google Gemini API Key - Get Free Key
# 1. Clone the repository git clone https://github.com/your-repo/mark-1.git cd mark-1 # 2. Configure your API key cp src/backend/.env.example src/backend/.env # Edit src/backend/.env and add your GEMINI_API_KEY # 3. Start Mark 1 chmod +x run.sh ./run.sh # 4. Start BrowserUse service (in another terminal) python tools/browser_use_service.py- Open
http://localhost:5000in your browser - Enter a test description:
Open Flipkart and search for shoes and then get the first product name - Click "Generate & Run"
- Watch the magic happen! ✨
"Open Flipkart and search for shoes and then get the first product name" "Navigate to GitHub using url https://github.com/monkscode, and then get the name of the Pinned project" "Go to google.com and search for python tutorials" Pro Tip: Be specific about what you want. Mention exact elements like "first product name" or "search button in header".
Mark 1 uses a multi-agent AI system to transform your natural language into working tests:
Your Query → [AI Processing] → Robot Framework Code → Execution → Results The Process:
- Intelligent Planning - Query analyzed and broken into precise steps
- Smart Element Detection - AI finds web elements with 95%+ accuracy
- Code Generation - Transforms steps into production-ready Robot Framework code
- Quality Assurance - Validates code before execution
- Isolated Execution - Runs in clean Docker containers
What You Get:
- ✅ Working test code in Robot Framework format
- ✅ Detailed HTML reports with step-by-step execution logs
- ✅ Real-time progress updates
- ✅ Validated locators that work on dynamic websites
mark-1/ ├── src/backend/ # FastAPI backend with AI agents ├── tools/ # Browser automation utilities ├── robot_tests/ # Generated tests & reports (auto-created) │ └── {run-id}/ │ ├── test.robot # Your generated test │ ├── log.html # Detailed execution log │ └── report.html # Test summary ├── docs/ # Documentation ├── run.sh # One-command startup └── README.md # You are here! - Library Switching Guide - Switch between Browser Library & Selenium ⭐
- Configuration Guide - Environment variables and settings
- Troubleshooting - Fix common issues
- FAQ - Frequently asked questions
- Best Practices - Get the most out of Mark 1
- Architecture - How Mark 1 works under the hood
- Contributing - Help improve Mark 1
Your Input:
Open Flipkart and search for shoes and then get the first product name Generated Code (Browser Library):
*** Settings *** Library Browser *** Variables *** ${browser} chromium ${headless} False *** Test Cases *** Search Shoes On Flipkart New Browser ${browser} headless=${headless} New Context viewport=None New Page https://www.flipkart.com Fill Text name=q shoes Keyboard Key press Enter ${product_name}= Get Text xpath=(//div[@class='_4rR01T'])[1] Log First product name: ${product_name} Close BrowserResult: Working test + detailed HTML report in ~20 seconds.
Note: Code format depends on your ROBOT_LIBRARY setting (browser or selenium).
Create a .env file in src/backend/:
# AI Provider MODEL_PROVIDER=online GEMINI_API_KEY=your-actual-api-key-here ONLINE_MODEL=gemini-2.5-flash # Application APP_PORT=5000 # Browser Automation BROWSER_USE_SERVICE_URL=http://localhost:4999 BROWSER_USE_TIMEOUT=900 # Robot Framework Library (selenium or browser) ROBOT_LIBRARY=browserGet your free Gemini API key: Google AI Studio
For detailed configuration options, see the Configuration Guide.
Mark 1 supports two Robot Framework libraries for test execution:
ROBOT_LIBRARY=browserBenefits:
- ✅ 2-3x faster test execution
- ✅ Better AI compatibility - LLMs understand JavaScript/Playwright better
- ✅ Modern web support - Shadow DOM, iframes, SPAs work seamlessly
- ✅ Auto-waiting built-in - No explicit waits needed
- ✅ Powerful locators - Text-based, role-based, and traditional selectors
- ✅ Consistent validation - Same engine (Playwright) for generation and execution
When to use: New projects, modern websites, performance-critical tests
ROBOT_LIBRARY=seleniumBenefits:
- ✅ Mature and stable - Battle-tested library
- ✅ Wide compatibility - Works with older websites
- ✅ Familiar syntax - Traditional Selenium approach
When to use: Existing projects, legacy websites, Selenium expertise
Switching is easy: Just change ROBOT_LIBRARY in your .env file and restart Mark 1!
Test the API directly:
chmod +x test.sh ./test.shOr use curl:
curl -X POST http://localhost:5000/generate-and-run \ -H "Content-Type: application/json" \ -d '{"query": "go to google.com and search for python tutorials"}'Common Issues:
- "Docker is not available" - Make sure Docker Desktop is running
- "GEMINI_API_KEY not found" - Check your
.envfile insrc/backend/ - "Port 5000 already in use" - Change
APP_PORTin your.envfile - Tests fail with "Element not found" - Try being more specific in your query
For detailed troubleshooting, see the Troubleshooting Guide.
We welcome contributions! Whether it's bug fixes, new features, or documentation improvements, your help makes Mark 1 better for everyone.
Please see our Contributing Guide for detailed instructions on:
- Setting up your development environment
- Making and testing changes
- Submitting pull requests
- Code guidelines and best practices
By submitting a pull request, you agree to our Contributor License Agreement.
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
- 📚 Documentation: Check the docs folder
- 🐛 Bug Reports: GitHub Issues
- 💬 Discussions: GitHub Discussions
- 💡 Feature Requests: Open an issue with the
enhancementlabel
If Mark 1 helps streamline your testing workflow:
- ⭐ Star this repository
- 🐛 Report issues and help us improve
- 💡 Suggest features
- 🤝 Contribute code
- 📢 Share your experience
Built with ❤️ for the test automation community
Mark 1 is not affiliated with or endorsed by Google, Robot Framework, or any mentioned websites. All trademarks belong to their respective owners.