I am often asked the question, “Do you know of an automation tool that can be used in automating desktop-based applications?”
If that’s you, here are the top 15 free automation testing tools for desktop applications updated for 2021. (Originally posted in 2019)
- WinAppDriver (*Paused Project)
- White framework (DEPRECATED)
- Oracle Application Testing Suite
- Appium (no this is not a typo)
- Robot Framework
- AltUnity Tester
- Takes advantage of the industry-standard WebDriver Protocol
- Developed by Microsoft
- Development has been put on hold
Winium.Desktop is a Selenium Remote WebDriver implementation for the automated testing of Windows applications based on WinForms and WPF platforms. In the “Why Winium?” section of their website, it mentions that:
You have Selenium WebDriver for testing web apps, and Appium for testing iOS and Android apps. And now you have Selenium-based tools for testing Windows apps as well. What are some of the benefits? As said by Appium:
You can write tests with your favorite dev tools using any WebDriver-compatible language, including:
- or Perl with the Selenium WebDriver API and language-specific client libraries.
You can also use it with any testing framework.
Sounds like a good reason to me. If it sounds good to you as well, you can check it out on their GitHub site where it currently has over 329 stars.
- Support multiple languages
- Uses the tried and trie WebDriver API that most tests already know
- CAUTION: This project looks like it hasn't been updated in a long time.
The Guild Wants YOU
If you've read this far, you know how important it is to stay updated with the latest in test automation, tooling, processes, and practices. One of the best ways is to become a TestGuild member. Join now at no cost!
Do you need to automate a thick client application like WPF, Silverlight, Win32, or WinForms?
If so, then the White framework may be the automation framework for you.
White is an open-source library from Test Stack. Like CodedUI, it has a more narrow scope; it only targets desktop applications, not Web applications. Both CodedUI and White are based on UI Automation Library for Microsoft.
There aren’t many automation testing tools that handle software testing .NET applications, so this is a valuable tool for folks who need to test such technologies. It’s also easy to get started using White.
UPDATE: White has been DEPRECATED and is no longer actively maintained. Its replacement is FlaUI.
- I only kept White in this list so when folks google it they will learn that it has been deprecated and should not be used going forward
Need to test desktop Java applications?
It provides automated functional GUI testing for various types of applications. It is aimed at teams who want their automated tests to be written by test experts from the user perspective, without requiring any coding effort.
Jubula tests incorporate best practices from software development to ensure the long-term maintainability of the automated tests.
I recently interviewed the product owner of Jubula, Alex Schladebeck, on Episode 240 of my TestGuild Automation Podcast:
- Good for Java Applications automation
- It takes a no-coding approach to write tests. This can help to save time and improve the readability of your test.
- Doesn't support running tests in headless mode
- Ony supports Java RCP/SWT/JAVAFX/Swing applications
Do you love using Python as your go-to language for everything, and also need to automate Windows desktop applications? If so, check out pywinauto.
It describes itself as a GUI automation library written in pure Python and well developed for Windows GUI. At its simplest, it allows you to send mouse and keyboard actions to dialogs and controls on both Windows and Linux, while more complex text-based actions are supported on Windows only thus far (Linux AT-SPI support is under development).
The latest release introduced MS UI Automation (UIA) support, which includes WinForms, WPF, Qt browsers, Store apps-based tests, and more.
- Since this is a Python library it is great for testers already using Python
- I love Python so I'm calling that a pro lol
- It uses Python, believe it or not, there are some weirdos out there that don't like Python
Oracle Application Testing Suite
Does your team do a lot of Oracle-based software development?
Oracle Application Testing Suite (OATS) contains a bunch of integrated products to help with Oracle Functional Testing for regression testing of Web applications and Oracle Load Testing for performance testing of your Oracle packaged solutions.
Oracle explains that its Application Testing Suite is a comprehensive, integrated testing solution that ensures the quality, scalability, and availability of your Web applications, Web Services, packaged Oracle Applications, and Oracle databases.
This integrated, full lifecycle solution enables you to define and manage your application testing process, validate application functionality, and ensure that your applications will perform under load.
With the Application Testing Suite, you can deploy your Web applications and Web Services in less time while maximizing the efficiency of your testing team.
Oracle Application Testing suite contains a bunch of integrated products to help with Oracle Functional Testing for regression testing of web applications and Oracle Load Testing for performance testing of your Oracle packaged solutions.
- If you need a tool to help test your regression and performance test your Oracle applications or databases OATS is a must-try tool.
- Not useful if you don’t have to automate Oracle applications
SikuliX can help automate anything you see on the screen of your desktop computer running Windows, Mac or some Linux/Unix. SikuliX uses image recognition powered by OpenCV to identify and control GUI components.
A few years ago I spoke with the main developer and maintainer of SikuliX, Raimund Hocke, on Episode 40 of my TestTalks podcast.
After speaking with Raimund I thought it would be helpful to create a quick video to demonstrate just how easy it is to get started with SikuliX.
- Good option if you have an application that needs to be tested that has controls that aren’t recognized by other solutions
- Image-based automation is tricky and often time unreliable. I would use this approach only as a last resort
FlaUI is a .NET library that helps with automated test scripts for Windows user interface applications (Win32, WinForms, WPF, Store Apps. FlaUI was developed because of one of the maintainers of TestStack.White found White’s codebase to be horrible to update and support.
If you are a C# SDET you might want to try FlaUI before White.
FlaUI currently has 1k stars on GitHub
- A good option for automation Window interfaces
- No multi-language support – only supports writing test in C#
- According to one user comment in GitHub “We had to create a lot of extensions for it to be reliable. There is a ton of missing features and it doesn't have Retry mechanisms”
AutoIt v3 is a freeware, BASIC-like scripting language designed for automating the Windows GUI and general scripting.
When I originally wrote this post I said that this is not the most robust of automated testing tools, many teams integrate AutoIt with Selenium to work around non-browser windows that appear in an automated test workflow. However Mohamed Amine M’Barki told me that I probably didn’t use it fully. It does as much if more than many of the tools listed in this post.
Here is a list of features Mohamed shared with me that AutoIt can help automate like desktop automation, Excel & Word, API testing and more
- Easy to use syntax
- Support COM
- Doesn't support Java
ZAPTEST is one of those tools I’ve been hearing about for a while but never tried until I heard that it now offers a free edition. ZAPTEST can be used to create test automation against any GUI-based application. It also supports any environment, making it a very flexible solution if you're looking for cross-operating system support.
- If you’re looking for a full-blown desktop automation tool that also supports API testing, has a recorder, can be run in parallel and integrates with MicroFocus ALM, Rally or Jira, give the free version a try.
- Not open-sourced
AirTest is an open-source test automation tool aimed at hard-to-automate applications like games.
No surprise, really, since one of the largest game companies in the world, NetEase, developed it.
For even more street cred, it was developed in conjunction with Google.
AirTest currently has over 4k stars on GitHub
- Write Once, Run Anywhere: Airtest provides cross-platform APIs
- Doesn’t seem to have worldwide adoption yet
You might be thinking — Appium? Isn't that just for mobile automation testing?
While that is one of its primary uses, the main contributor and the father of the modern Appium we all know and love Jonathan Lipps reminded me that Appium bundles WinAppDriver as well as Appium4Mac which can be used to automate Mac desktop applications!
- Most testers are already familiar with Appium
- Some functionality relies on WinAppDriver and as I mentioned earlier this project is currently on hold by Microsoft
Robot Framework is an all-purpose open-source automation framework. It can be used to test not only web applications but also has plugins for automating:
- Confluent Kafka,
- library for testing JavaFX applications
- IBM Mainframe 3270,
- Java FX applications
- Java Web Start applications
- Library for testing the SAPGUI client
- MQTT library for testing Java applications with Swing GUI
- Library for automating Windows GUI.
- Easy to install and learn
- Supports lots of different technologies
- Has a very active community
- Some users complaining about refactoring and debugging capabilities since it’s doesn't support popular IDEs
AltUnity Tester – UI Test Automation
Need to automate desktop unity applications?
AltUnity Test is an open-source UI test automation solutions for Unity teams. You can use it to help you inspect and programmatically control the objects of your Unity-based games and apps.
You can also run your tests on real devices or inside the Unity Editor.
I actually never heard of Nexial until someone mentioned it in the comments.
It allows you to automate for web (selenium), desktop, database, API, and much more using a keyword-driven approach
Give it a try and let me know what you think.
Karate has come a long way since I first reviewed it as an API testing tool back in 2017.
Not only does it support API, Web, Performance Testing, and much more but I also can now handle desktop automation as well!
The creator of Karate Peter Thomas pointed me to the Karate Robot Windows install guide that unlocks this feature. Once installed and configured you will be able to automate Windows-based applications.
Did I miss your favorite Desktop Automation Tool?
Those are my top automation testing tools for desktop applications let me know if I missed your favorite one.