Skip to main content

Testing Desktop Apps with Thunders via Virtualization

Written by Ines
Updated today

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:

  1. Use a virtualization or remote desktop solution to render the desktop app inside a browser

  2. Once the desktop app is accessible via a URL in a Chromium-based browser, it is treated as a standard Web App in Thunders

  3. 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

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

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

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 visible steps 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:

  1. Choose a virtualization solution based on your existing infrastructure

  2. Deploy and configure the virtualization platform

  3. Verify browser accessibility using a Chromium-based browser

  4. Set up the project in Thunders with the virtualization URL as the environment URL

  5. 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:

Did this answer your question?