WinAppDriver: First step into Windows app Test automation using WebdriverIO and WinAppDriver.

Praveen David Mathew
6 min readJul 24, 2021

--

Boiler Plate Code:

https://github.com/praveendvd/webdriverIO_winappdriver_boilerplate

Read the theory:

Let us start by understanding how easy is device Automation:

let's see what is automation is all about

Old implementation:

So previously there were no standards on device or web automation. Each device vendor releases a utility or tool called a driver that knows how to automate their product.

so for example for automating the windows app we have WinAppDriver, for automating chrome we have Chromedriver and so on. These tools have all implementations, code logic etc on how to automate their product (Yes you are right everything is already done for you)

Now they expose these implementations through rest API, rest APIs are nothing but an abstract public method that listens to HTTP calls and triggers the actual code logic under the hood when the user calls that rest endpoint. It just hides all the internal complex implementation so that users don't get scared.

an example API:

yes, API is just a function!!! here we are saying if the user does a post to /findElement then do all complex things and return the element

app.post('/findElement', (req, res) => {
// do all complex emplementation on finding element
return element
});

Challenge:

The challenge of not having a standard was that each vendor implemented the API in a different way, this causes issues with cross-device or browser testing. You cannot use the same code for testing different browsers or devices

Solution:

so solutions like Appium, Selenium etc came up with a wrapper server that creates another abstraction and exposes everything using JSON wire protocol (its still rest api just enforced how the endpoints, response and requests should look like), so you can use the same API to automate all devices or browsers. Routing of commands to correct browser or device will be handled by selenium or…

--

--

Praveen David Mathew

An open source advocator/WebdriverIO Projectcommiter/Postman Supernova/Postman-html-extra contributor/Stack overflow sqa moderator/Speaker