A previous release had provenance metadata, but this release does not. View details.
Visual Sonar 🔊
Automate WVD/Citrix remote desktop sessions using Computer Vision — no DOM access, no server agents, no licensing fees.
Visual Sonar "echolocates" form fields by pressing TAB and detecting visual focus changes. Works where Selenium and traditional RPA tools can't.
✨ Features
| Feature | Description |
|---|---|
| 🎯 Visual Field Detection | Detects fields by screen diff when focus changes |
| 📊 Data-Driven Testing | Run same test with multiple data sets (CSV/JSON) |
| 🔍 OCR Text Extraction | Extract text from screen (pytesseract/easyocr) |
| 🖥️ WVD Simulator | Test safely without real remote desktop |
| 🔒 Secrets Scrubbing | Passwords never appear in logs |
| 📸 Step Screenshots | Every action captured for debugging |
| ⚡ DPI Aware | Per-monitor scaling support |
🚀 Quick Start
Option A: Install from PyPI (Recommended)
pip install visual-sonar
Then use:
visual-sonar map
visual-sonar run
visual-sonar --help
Option B: Install from Source
git clone https://github.com/godhiraj-code/wvdautomation.git
cd wvdautomation
pip install -e .
2. Map Your Form
python visual_sonar.py map
Name fields as name:type (types: text, click, toggle, dropdown, double_click)
3. Create Input
{
"username": "jdoe@company.com",
"password": "SecretPass123",
"signin": true
}
4. Run
python visual_sonar.py run
📋 Commands
| Command | Description |
|---|---|
map |
Interactive field mapping |
run [file.json] |
Execute automation |
list |
Show available test cases |
batch <data.csv> |
Data-driven batch testing |
extract screen |
OCR extract from full screen |
extract region x y w h |
OCR extract from region |
help |
Show full help |
🧪 Testing Without Remote Desktop
Use the built-in simulator:
# Terminal 1 - Start simulator
python wvd_simulator.py
# Terminal 2 - Map and run
python visual_sonar.py map
python visual_sonar.py run
📊 Data-Driven Testing
Run same test with multiple credentials:
Create test_cases/users.csv:
username,password,signin
user1@co.com,pass1,true
user2@co.com,pass2,true
Run batch:
python visual_sonar.py batch test_cases/users.csv
🔍 OCR Text Extraction
# Full screen
python visual_sonar.py extract screen
# Specific region
python visual_sonar.py extract region 100 200 300 50
# Verify text exists (for assertions)
python visual_sonar.py extract verify 100 200 300 50 "Success"
Note: Requires
pip install pytesseract+ Tesseract-OCR
🛡️ Safety
- Emergency Stop: Move mouse to TOP-LEFT corner
- FailSafe: Always enabled by default
- Secrets: Never logged, always scrubbed
- Screenshots: Captured on every step
📁 Files
| File | Purpose | Git |
|---|---|---|
wvd_map.json |
Field coordinates | ✅ |
input.json |
Your secrets | ❌ |
test_cases/ |
Test data files | ✅ |
*.png |
Debug screenshots | ❌ |
🔧 Troubleshooting
| Issue | Solution |
|---|---|
| "No map file" | Run python visual_sonar.py map first |
| "Screen Unstable" | WVD connection laggy, wait and retry |
| Wrong coordinates | Remap (resolution/DPI may have changed) |
| OCR not working | Install Tesseract-OCR software |
📖 Documentation
- USER_GUIDE.md - Comprehensive beginner guide
📜 License
MIT © Visual Sonar Team
Metadata
Release files for visual-sonar 1.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Loss of provenance
These files do not have provenance metadata, despite files in a prior release including this data.
We recommend further investigation before installing these files. View details.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| visual_sonar-1.0.1.tar.gz | 20.0 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| visual_sonar-1.0.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 37.8 kB
Release files / visual_sonar-1.0.1.tar.gz
Loss of provenance
This file belongs to a release without provenance metadata, despite a prior release including this data.
We recommend further investigation before installing this file. View details.
| Download URL | visual_sonar-1.0.1.tar.gz |
|---|---|
| Size | 20.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
695eac34bac7c41bb5f596046f33ec61ec70e383276a4e8da3b2a07c27c8e16d
|
|
BLAKE2b-256 checksum How to use checksums |
0fd1f18311f2aa289619464620e9a859fa1b742326a7141d975016ffb95cbc77
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.0
|
Release files / visual_sonar-1.0.1-py3-none-any.whl
Loss of provenance
This file belongs to a release without provenance metadata, despite a prior release including this data.
We recommend further investigation before installing this file. View details.
| Download URL | visual_sonar-1.0.1-py3-none-any.whl |
|---|---|
| Size | 17.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
92f340ddd28a590376861f7b611658a7cdd02ecbcd163510e068c80f3765eb22
|
|
BLAKE2b-256 checksum How to use checksums |
63f4b232d3c0846390427a18996c86aa96758c79697185f28cf08e0f1de8c2dc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.0
|
Security for visual-sonar 1.0.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Loss of provenance
A previous release of these files had provenance metadata, but this release does not.
While this could reflect a routine change by the project maintainers, it may also indicate that the release files have been compromised.
Release comparison
- Removed 1.0.0 2 files With provenance
- Added 1.0.1 2 files Without provenance
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.