Windows desktop automation has become much easier with Appium and WinAppDriver. If you have worked with mobile automation before, the workflow will feel familiar. You start a server, define capabilities, locate elements, and interact with the application. The same concepts now apply to Windows desktop apps. In this post, we will walk you through a minimal and practical example of […]
Getting Started with Windows Desktop Automation Using Appium and WinAppDriver
Simulating slow network speeds for mobile app testing using your laptop as a hotspot
When testing mobile apps, functional validation is only half the story. A lot of critical issues surface during non-functional testing, especially in areas like interruption testing. One of the key subcategories under interruption testing is network interruption testing. Some features that work flawlessly on a strong Wi-Fi connection can slow down, fail silently, or time out when the network becomes […]
How to use Appium Inspector along with Windows Inspector
In our previous post, we explored how to use Windows Inspector (Inspect.exe) to inspect UI elements in desktop applications. It’s a great starting point, especially when you want to understand how your app exposes properties like AutomationId, Name, and ClassName. But if you’ve tried automating desktop apps using Appium or WinAppDriver, you might have noticed a few limitations with Windows […]
How to use Windows Inspector to write selector for Windows UI or Desktop App
In this post, we will show you how to use Windows Inspector to identify UI elements and write stable selectors for your desktop automation scripts. When you start automating Windows desktop applications using WinAppDriver or Appium, one of the first hurdles you’ll run into is figuring out how to locate elements on the app or Windows UI. If you’ve done […]
Building a Qxf2 test automation wiki model using unsloth
Recently we set out to explore how we could fine-tune a code LLM on our Test Automation Framework. During our research, we came across Hugging Face’s excellent guide on Fine-tuning a Code LLM on Custom Code, which provided a clear path, but required access to an A100 GPU. While that hardware requirement is reasonable for serious fine-tuning, we wanted to […]
Writing XPaths to validate UI with Appium OCR Plugin
In our previous post, we suggested that Accessibility ID as a reliable locator strategy for identifying mobile elements across different platforms. While working on the task, we explored another plugin – Appium OCR Plugin that helped us write robust XPaths to validate UI that worked on both iOS and Android. But the problem we had was, although we were able […]
Accessibility ID as a locator strategy on Appium for iOS and Android apps
We‘re working on a Flutter app that connects to the Cars API API microservice to retrieve and display a list of cars. As testers working on this app, our primary motivation was to explore Flutter and gain a deeper understanding of how it supports cross-platform development. At the same time, we aimed to ensure that the testing process was smooth, […]
AI assistant and Model Context Protocol to automate tasks
After being introduced to the Model Context Protocol (MCP) at a recent conference, we were eager to experiment with MCP servers firsthand. In our project management workflow, we typically use a script to create new Trello boards and add members at the beginning of each sprint. To streamline this process, we decided to build an AI assistant that automates Trello […]
How to configure SonarQube effectively?
At Qxf2, we have used various static code analysis tools such as Codacy, SonarQube, and others to ensure code quality across projects. This post is about SonarQube, a powerful tool that allows teams to maintain clean code by identifying potential issues and enforcing coding standards. Typically, when we introduce a static code analysis tool at our clients, we end up […]
Designing Scalable Tests for Feature Flags
Feature flags introduce a layer of dynamic behavior in applications, enabling toggled changes without redeployment. While they empower development and experimentation, they also bring unique challenges to testing. Designing tests around feature flags requires recognizing that one size does not fit all—different scenarios demand different strategies. In this post, we explore a range of approaches to help maintain adaptable, and […]