Overview
Thunders currently supports Web Apps and API Apps as primary testing targets. However, desktop applications can also be tested by virtualizing them into web-accessible interfaces.
The concept is straightforward:
Use a virtualization or remote desktop solution to render the desktop app inside a browser
Once the desktop app is accessible via a URL in a Chromium-based browser, it is treated as a standard Web App in Thunders
Write test cases in natural language just like any other web application
This means Thunders can test virtually any desktop application — ERP systems, accounting software, legacy Windows apps, and more — as long as they can be streamed or rendered in a browser through a virtualization layer.
Recommended Virtualization Solutions
Below is a comparison of recommended virtualization solutions for making desktop apps browser-accessible:
Solution | Type | Best For | Browser Rendering | URL for Thunders |
Citrix Virtual Apps & Desktops | Enterprise-grade, widely adopted | Organizations already using Citrix infrastructure | HTML5-based Citrix Workspace (StoreFront) | Citrix StoreFront/Workspace URL that launches the specific app |
Microsoft Azure Virtual Desktop (AVD) | Native Azure integration | Organizations on Azure, Windows-only desktop apps | RDP Web Client (https://client.wvd.microsoft.com) | AVD web client URL |
Apache Guacamole | Open-source, clientless remote desktop gateway | Cost-sensitive teams, self-hosted environments | HTML5 rendering of RDP/VNC/SSH sessions | Guacamole web interface URL (e.g., https://guacamole.company.com) |
Amazon AppStream 2.0 | AWS-managed app streaming service | AWS-native organizations | Streams desktop apps to browser with no plugins | AppStream streaming URL |
Kasm Workspaces | Container-based browser-accessible desktops | DevOps-oriented teams | Modern, Docker-native approach | Kasm workspace URL |
Citrix Virtual Apps & Desktops
Enterprise-grade, widely adopted virtualization platform
Provides an HTML5-based Citrix Workspace (StoreFront) that renders desktop apps directly in a browser
Setup: Publish the desktop app in Citrix Studio, enable HTML5 Receiver/Workspace, expose via StoreFront URL
The URL to use in Thunders would be the Citrix StoreFront/Workspace URL that launches the specific app
Microsoft Azure Virtual Desktop (AVD) with RDP Web Client
Native Azure integration, supports Windows apps
Uses the RDP Web Client (https://client.wvd.microsoft.com) to render desktop sessions in a browser
Setup: Create a host pool in AVD, publish the desktop app as a RemoteApp, users access via the web client URL
The URL to use in Thunders would be the AVD web client URL
Apache Guacamole
Open-source, clientless remote desktop gateway
Renders RDP/VNC/SSH sessions as HTML5 in the browser
Setup: Deploy Guacamole server (Docker recommended), configure RDP/VNC connection to the machine running the desktop app
The URL to use in Thunders would be the Guacamole web interface URL (e.g.,
https://guacamole.company.com)
Amazon AppStream 2.0
AWS-managed app streaming service
Streams desktop apps to a browser with no plugins required
Setup: Create an AppStream fleet, upload the desktop app image, create a streaming URL
The URL to use in Thunders would be the AppStream streaming URL
Kasm Workspaces
Container-based browser-accessible desktops
Modern, Docker-native approach
Setup: Deploy Kasm server, create a workspace image with the desktop app installed
The URL to use in Thunders would be the Kasm workspace URL
Setup Guide (Generic Steps)
The following steps apply regardless of which virtualization solution you choose.
Step 1: Choose and Deploy a Virtualization Solution
Pick one of the recommended solutions based on your existing infrastructure
Deploy it following the vendor's official documentation
Ensure the desktop app is installed and published/available through the virtualization layer
Step 2: Verify Browser Accessibility
Open a Chromium-based browser (Chrome, Edge)
Navigate to the virtualization platform's web URL
Verify the desktop app renders and is interactive in the browser
⚠️ Important: Thunders uses a Browser. Test that all UI elements (buttons, inputs, menus) are clickable and typeable through the browser.
Step 3: Network Accessibility
The virtualization URL must be reachable from Thunders' browser infrastructure
If using Thunders' cloud: the URL must be publicly accessible (or with proper IP Filtering: https://help.thunders.ai/en/articles/12437961-ip-whitelisting-for-thunders)
If using self-hosted or hybrid Thunders: the URL must be reachable from the self-hosted Browserless container's network
Step 4: Handle Authentication
Most virtualization platforms require authentication before accessing the desktop app
In Thunders, use Environment Variables (Credentials) to store login credentials:
[USERNAME]for the virtualization platform username
[PASSWORD]for the virtualization platform password
The first test steps should handle logging into the virtualization platform before interacting with the desktop app
Adding the Virtualized App to Thunders
Once your desktop app is accessible through a browser via virtualization, follow these steps to set it up in Thunders.
Step 1: Create a Project
In Thunders, create a new Project for the desktop app
Step 2: Create an Environment
Add an Environment to the project
Set the Environment URL to the virtualization platform's web URL where the desktop app is accessible
Example for Citrix:
https://storefront.company.com/Citrix/StoreWeb/
Example for Guacamole:
https://guacamole.company.com/#/
Example for AVD:
https://client.wvd.microsoft.com/arm/webclient/
Step 3: Configure Environment Variables
Add credentials as Environment Variables:
USERNAME— virtualization platform login
PASSWORD— virtualization platform password
Any other app-specific credentials
Step 4: (Optional) Configure Multi-App Setup
If the project involves testing both the virtualized desktop app AND a web app, use Thunders' multi-app feature
Add Apps to the project with descriptive names (e.g.,
DESKTOP_ERP,WEB_PORTAL)Each app gets its own URL per environment, accessible via
[APP.DESKTOP_ERP.URL]and[APP.WEB_PORTAL.URL]in test steps
Step 5: Write Test Cases
Write test scenarios in natural language as usual
The first step should navigate to the virtualization URL:
Navigate to [ENVIRONMENT_URL]Include steps to authenticate with the virtualization platform if needed
Then interact with the desktop app as rendered in the browser
Example scenario:
Navigate to [ENVIRONMENT_URL]
Enter [USERNAME] in the username field
Enter [PASSWORD] in the password field
Click Login
Wait for the desktop app to load
Click on the "New Invoice" button
Fill in the invoice form with test data
Click Save
Assert that the success message is displayed
Tips and Best Practices
Increase timeouts — Virtualized desktop apps may be slower to render than native web apps. Consider increasing the browser session timeout.
Screen resolution — Configure the virtualization session to use a resolution that matches Thunders' browser viewport (1280x720 or 1920x1080 for instance). This ensures UI elements are visible and clickable.
Disable animations — If possible, disable UI animations in the desktop app to improve test reliability.
Use explicit waits — Add
Wait for X to be visiblesteps after navigation and interactions, as virtualized apps may have rendering delays.Avoid detection — Some virtualization platforms may detect automated browsers. Thunders supports bot detection bypass via the Browserless Unblock API if needed.
Limitations
Area | Limitation | Details |
Performance | Slower test execution | Virtualized apps render through an additional layer, so tests may run slower than native web app tests. |
Element Detection | Varies by solution | Thunders' AI-powered selector finding works on the HTML/DOM rendered in the browser and on the Stream pixels. For virtualized apps that stream pixels (like pure RDP), element detection relies only vision models rather than DOM selectors. Which will be slower |
Keyboard Shortcuts | May be intercepted | Some keyboard shortcuts may be intercepted by the virtualization layer rather than reaching the desktop app. |
File Upload/Download | Different behavior | File operations may behave differently through virtualization layers. |
In Summary
To begin testing desktop apps with Thunders:
Choose a virtualization solution based on your existing infrastructure
Deploy and configure the virtualization platform
Verify browser accessibility using a Chromium-based browser
Set up the project in Thunders with the virtualization URL as the environment URL
Write test cases in natural language, starting with authentication steps
For technical assistance or questions, please reach out to our support team at [email protected].
Other related reads you might find useful:
