# Clone
git clone https://github.com/berkinduz/gamma-e2e-testing-tool.git
cd gamma-e2e-testing-tool
# Python deps
pip install -r requirements_gui.txt
# (Optional) .env if you want to preload Email/Password/UA
# cp env.example .env
# Start GUI
python run_gui.py– Create Test → steps → Save – Select Project & Flow → Run – Logs → “Click to see results” → Results
Multi-project e-commerce test automation tool built with Selenium and Python GUI.
- Modern GUI: Dark theme with intuitive controls (no coding required)
- Multi-project Support: Google, Example, and more
- Headless & Normal Mode: Run tests with or without browser UI
- JSON Test Flows: Create tests without coding
- Artifact Collection: Screenshots, logs, and analysis on failures
- Test Builder: Visual test creation interface
- Cross-platform: Windows, macOS, Linux
- Settings Panel: Per‑project Email/Password/User‑Agent, normal mode window size and DevTools toggle, theme selection; smart restart notifications
gamma/
├── 📁 assets/ # Icons and images
├── 📁 config/ # Theme configuration
├── 📁 core/ # Core business logic
│ ├── runner.py # Test execution logic
│ ├── builder.py # Test builder logic
│ ├── history.py # History management
│ ├── results.py # Results management
│ └── utils.py # Utility functions
├── 📁 ui/ # UI components
│ ├── theme.py # Theme management
│ ├── styles.py # UI styles
│ ├── icons.py # Icon management
│ └── layout.py # Main layout structure
├── 📁 tabs/ # Tab components
│ ├── logs_tab.py # Logs tab UI
│ ├── results_tab.py # Results tab UI
│ ├── history_tab.py # History tab UI
│ ├── builder_tab.py # Builder tab UI
│ └── settings_tab.py # Settings tab UI
├── 📁 tests/ # Test framework
│ ├── projects/ # Project-specific test folders
│ │ ├── GOOGLE/ # Google project tests
│ │ ├── EXAMPLE/ # Example project tests
│ │ └── NEW_PROJECT/ # Your new project tests
│ ├── base_test_engine.py # Core test engine
│ └── json_runner.py # JSON flow executor
├── gui.py # Main GUI application
├── run_gui.py # GUI launcher
└── requirements_gui.txt # Python dependencies
# Clone and setup
git clone <your-repo>
cd gamma
# Install dependencies
pip install -r requirements_gui.txt
# Optional: Create .env (if you want to preload emails/passwords/UA). If you skip this step, you can set them later from Settings.
cp env.example .env # optionalOption A) Edit .env with your project credentials (recommended for CI):
# Google Project
GOOGLE_EMAIL=your_email@gmail.com
GOOGLE_PASSWORD=your_password
# Example Project
EXAMPLE_EMAIL=test@example.com
EXAMPLE_PASSWORD=test123
# Add more projects as needed
NEW_PROJECT_EMAIL=user@newproject.com
NEW_PROJECT_PASSWORD=password123Option B) Use the GUI Settings tab to set Email/Password/User‑Agent, Browser options, and Theme selection. Browser settings apply immediately, theme changes require restart.
# Start GUI
python run_gui.py
# Or run specific test
python tests/json_runner.py tests/projects/google/GOOGLE_HOMEPAGE.json GOOGLE- Launch GUI → "Create Test" tab
- Select project from dropdown
- Add steps: navigate, click, fill, wait
- Save flow → automatically discovered by GUI
Place tests/projects/<PROJECT>/<FLOW>.json:
{
"PROJECT_CONFIG": { "name": "MY_SHOP" },
"TEST_STEPS": [
{
"name": "Go to homepage",
"action": "navigate",
"url": "https://myshop.com"
},
{
"name": "Wait for search",
"action": "wait",
"selector": "#search-input",
"timeout": 20
},
{
"name": "Fill email",
"action": "fill",
"selector": "#email",
"value": "$EMAIL"
},
{
"name": "Fill password",
"action": "fill",
"selector": "#password",
"value": "$PASSWORD"
}
]
}Special Tokens:
$EMAIL→ automatically replaced with<PROJECT>_EMAILfrom.env$PASSWORD→ automatically replaced with<PROJECT>_PASSWORDfrom.env
Supported Actions:
navigate: Go to URLclick: Click elementfill: Fill input fieldwait: Wait for element
Put a *.py under tests/projects/<PROJECT>/ using the shared engine.
# Project credentials (required)
<PROJECT>_EMAIL=user@project.com
<PROJECT>_PASSWORD=password123
# Optional settings
LOGS_MAX_RUNS=10 # Keep only latest N test runs
# Per project creds (loaded automatically): <PROJECT>_EMAIL / <PROJECT>_PASSWORD / <PROJECT>_USER_AGENT
# Browser (normal mode): BROWSER_WIDTH / BROWSER_HEIGHT / DEVTOOLS_OPEN (0/1)The application supports multiple themes with customizable settings:
- Dark Theme (default): Modern dark interface
- Light Theme: Clean light interface
- Theme Switching: Change themes via Settings tab
- Custom Themes: Edit
config/theme_config.jsonto add new themes
Theme changes require application restart and are automatically saved.
Perfect for CI/CD pipelines:
# Set environment
export HEADLESS=1
# Run test
python tests/json_runner.py tests/projects/google/GOOGLE_HOMEPAGE.json GOOGLE# In .env
GOOGLE_USER_AGENT="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"Failed tests automatically save:
- Screenshots at failure points
- Console error logs
- Network error summaries
- Page analysis data
- Full test logs
- Launch GUI → "Test Builder" tab
- Select project from dropdown
- Add test steps
- Save flow → automatically discovered
- Create folder:
tests/projects/<PROJECT>/ - Add
<FLOW>.jsonwithPROJECT_CONFIGandTEST_STEPS - Optionally add to
.env:<PROJECT>_EMAIL,<PROJECT>_PASSWORD,<PROJECT>_USER_AGENT - Or set them via GUI → Settings; Start GUI → select Project and Flow → Run
- Create
tests/projects/<PROJECT>/<FLOW>.py - Import
BaseTestEngineand defineTEST_STEPS - Run directly or via GUI
- Element not found: Check selector, timing, iframes
- Headless failures: Verify window size, scale factor
- Screenshot issues: Check file permissions, disk space
- Import errors: Verify
sys.path.appendand__init__.pyfiles
Enable detailed logging:
Use the GUI Logs tab for details; you can also increase Selenium/console verbosity via environment if needed.
## 🧭 Tips for non‑developers
- Use Settings to enter Email/Password/User‑Agent; values apply instantly, no restart needed.
- Normal mode browser size and DevTools can be set from Settings.
- Change themes from Settings tab; theme changes require application restart.
- When a test finishes, the Logs tab shows a "Click to see results" link.
- You can clear all logs from the History tab.- Test Builder not working: Ensure you have write permissions to
tests/projects/folder - Steps not saving: Check project name and flow name are filled
- Validation errors: Ensure required fields are completed
Test results are saved in logs/<timestamp>-<testtype>/:
summary.json: Test execution summary*.png: Screenshots at failure points*-page-analysis.json: Page state analysis*-console.json: Console error logs*-network-summary.json: Network request summary
- Fork the repository
- Create feature branch
- Add tests for new functionality
- Submit pull request
This project is licensed under the MIT License - see the LICENSE file for details.
Happy Testing! 🎉
-
Edit flows in the GUI
- Drag-and-drop step reordering, multi-select delete
- JSON diff/preview and “validate before save”
- Inline selector tester (quick probe) for CSS selectors
-
Automation & scheduling
- Built-in scheduler for recurring runs (cron-like UI in Settings)
- GitHub Actions workflow with cron, matrix (projects/flows), and artifact upload
- Notifications: Slack/Telegram/webhook on success/failure with links to artifacts
- Export JUnit XML (for CI) and HTML summary (shareable report)
- CLI flags for schedule files, retries, shard/parallel config
-
More modern UI/UX
- Inline preview in Results (PNG/JSON/TXT)
- History filters (Project/Status/Date) + search
- Global toasts and keyboard shortcuts (e.g., Ctrl+R to Run)
-
More actions
- assertText/assertUrl/assertVisible
- hover/select (dropdown), scrollTo, pressKey, uploadFile
- waitForUrlContains, waitForNetworkIdle
-
CLI & orchestration
gamma run --project <P> --flow <F> --headless- Parallel runs (process-based)
-
Stability & observability
- Flaky handling: retries/backoff for wait steps
- Artifact packaging (zip) and quick “Open Folder” shortcut
- Error classification (selector/timeout/network) summary
