Map your app once. Every test reuses it.
Every screen and path becomes a reusable graph. Change a screen once, and every test that touches it follows.
Real remotes. Real HDMI capture. Real verification, not a green checkmark. Open source, one flat fee — no per-device licenses, no robots.
Reports — pass/fail, KPIs and execution video, every run
Map the app once, prove what's on screen, watch it around the clock, and let an AI agent see and act on the device — all in the same open-source stack.
Every screen and path becomes a reusable graph. Change a screen once, and every test that touches it follows.


Every run, a report you can read. Image matching, OCR and AI detectors keep the source, the reference and the diff.
A built in MCP server: any AI client can inspect and control a real device.
TVs, set top boxes, phones, PCs, consoles, drones. If it has a screen and something to drive it, it can be tested. A stream alone works too: watched, not driven.
BrowserStack and Sauce Labs are trademarks of their respective owners. VirtualPyTest is not affiliated with or endorsed by either; the logos mark compatibility only.

VirtualPyTest in 60 seconds — dashboard, live control, one-click runs, reports, KPIs, heatmap, incidents
Free and open source, nothing sold as an add on.
A visual builder for everyone, and full Python the moment you need real logic.
Named variants override only what differs per model.
One library with auto OCR and focus detection. Recapture in one click when the UI changes.
Per minute A/V KPIs per device, trended by platform and software version.
Every device watched day and night, alerted the moment it breaks.
One glance shows where the fleet hurts. Rewind to what happened at 3 a.m.
Hosts, devices and system metrics, with every live screen side by side.
Reads the device's own About screen, by OCR or menu, in any language.
Busy or idle, manual or script. CPU, memory, disk and temperature, around the clock.
Pass rates, durations and volume with nothing to query, on standard Grafana you own.
Scoped by workspace, team and user. Grant or deny every action; deny always wins.
Nothing to install. Operate the whole lab from anywhere.
The software is free. You pay only for the hardware you want, never a per device license.
Self host on a Raspberry Pi, standard PC, or Minisforum mini PC. We recommend Linux. Prefer plug and play? We can configure and ship a complete unit.
Yes. VirtualPyTest is open source under the GNU AGPL v3. You can use, modify and self host it at no cost, including for commercial internal use. No paid tiers, no usage limits, no feature gates.
The one obligation: if you distribute a modified version or offer it to others as a service, you must publish your changes under the same license. For commercial licensing outside those terms, talk to us.
Anything that can be remotely controlled: Android and iOS phones and tablets, Android TV, Apple TV, Fire TV and smart TVs, set top boxes with IR or network control, any browser, and Windows, macOS or Linux desktop apps.
Control goes through ADB, Appium, IR blasters, smart TV network APIs or browser automation. Any device with an HDMI output can be captured with a USB capture card.
Test logic and navigation are separate. A navigation tree maps your app once: nodes are screens, edges are the actions that move between them.
Same script on Android, iOS, a set top box or the web. Change a screen once and every test that touches it follows.
Every check runs against what is actually on screen. Image matching, OCR and AI vision detectors confirm the expected content is there, and each result keeps the source frame, the reference and the pixel diff as evidence.
No brittle DOM selectors, so checks survive UI redesigns and work the same on every platform.
Real devices are always captured through an HDMI acquisition card, whether they are set top boxes, TVs, phones or tablets. You see exactly what a viewer sees, with no dependency on the device's own APIs. Only emulators are captured through ADB.
Every run keeps a frame by frame replay and a screenshot timeline you can attach to bug reports.
VirtualPyTest is visual first and platform agnostic: one script for every device, AI vision instead of element selectors, and built in support for set top boxes and TVs through IR and HDMI capture, which Appium and Selenium do not cover. Monitoring and Grafana dashboards are built in.
It complements them rather than replacing them: Appium and Playwright are used under the hood for mobile and web.
Yes. Trigger scripts and campaigns through the REST API from any pipeline, and receive a completion callback on a URL you provide when a long run finishes. Point your CI at a running server, or launch the stack with the setup scripts as part of the job.
Docker and Docker Compose for the stack, Python 3.11 or newer for local development. Per device: ADB access for Android, a Mac with Xcode and Appium for iOS, an IR blaster or network API for set top boxes and TVs, a USB capture card for HDMI, and Chrome or Firefox for web.
Controllers already exist for Android, iOS, web and IR controlled devices, so most devices only need connection details and a navigation tree, which the AI can help build. For a new platform, implement the controller interface once and every feature works with it.
Any client that speaks MCP, such as Claude Desktop or Cursor. The built in server exposes 77 tools: take control of a device, navigate, verify, capture the screen, run tests and read the results.
Yes. A phone from your farm account joins the fleet as an ordinary device, with the same navigation graph, scripts and reports. You keep your own farm account; we never resell the minutes.
Yes. Every device's screen is recorded for 24 hours. The fleet heatmap shows where incidents happened, and you can scrub back to the exact minute.
Something else? Read the full FAQ on GitHub or .
No install, nothing to set up. Sign in on a read only account and watch real devices, real dashboards, real incidents, as they happen.