⚠️ Demo / Beta — A learning project exploring Python GUI development and automation. Testing the waters!
A Python desktop app that automates CLI test execution. It opens a real cmd.exe window and uses pyautogui to type commands character-by-character — simulating a human typing into the terminal.
- On startup, the app scans the
test_cases/folder for.pyfiles - Each file's first comment line (
# Title) becomes the checkbox label - Select test cases, set your options, and click ▶ Start Run
- A cmd.exe window opens and commands are typed automatically via pyautogui
- The Console Log shows real-time progress of each test case
- Click ⬛ Abort Run to stop mid-execution (cleans up folders)
- 🎯 Visual Automation – Watch commands being typed into a real cmd.exe window
- ☑️ Multi-select – Select All / Deselect All test cases
- 🧹 Clean before/after – Remove generated folders automatically
- ⬛ Abort – Stop mid-run, auto-cleanup on abort
- 📋 Console Log – Real-time execution progress
- 🎨 Dark Theme – Catppuccin Mocha colour palette
- 🔄 Auto-flow Layout – Checkboxes wrap to fit window width
- Python 3.10+
- Windows (uses cmd.exe + pyautogui)
pip install pyautogui
python app.pyDrop a .py file in the test_cases/ folder:
# My Test Case Title
# clean: output_dir
def run(engine):
engine.cmd("dotnet new console -o output_dir", wait=4.0)
engine.cmd("cd output_dir", wait=1.0)
engine.cmd("dotnet build", wait=4.0)
engine.cmd("cd ..", wait=1.0)| Line | Purpose |
|---|---|
# Title |
First comment = display name in GUI |
# clean: dir1, dir2 |
(Optional) Folders to remove on clean |
| Method | What it does |
|---|---|
engine.cmd(command, wait=2.0) |
Types command + Enter, waits N seconds |
engine.write_file(path, content) |
Writes a file relative to base directory |
├── app.py ← GUI application (run this)
├── automation.py ← Low-level: open cmd, type characters, send commands
├── engine.py ← Engine wrapper passed to test case run() functions
├── service.py ← Orchestration: validation, cleanup, countdown, execution
├── test_loader.py ← Discovers .py files in test_cases/, parses headers
└── test_cases/
├── case1_dotnet_info.py
├── case2_console_app.py
└── case3_solution.py
| Setting | Description |
|---|---|
| Base directory | Working directory where cmd.exe opens and commands run |
| Typing delay (sec) | Delay between each character typed (0 = instant) |
| Countdown (sec) | Seconds to wait before automation starts |
| Clean before run | Remove test case folders before execution |
| Clean after run | Remove test case folders after execution |
