TestStack White: Find Elements using AutomationElement Extensions

Have you ever faced the issue where finding an UI element using TestStack White SearchCriteria API returns null? If yes, here are few alternatives that utilises the AutomationElement.

The alternative approach uses AutomationElement which is part of the Microsoft UI Automation API. Simply, it iterates through the children elements of AutomationElement of the White…

WPF ItemsControl with TestStack White

Problem If you are reading this blog most likely means you have been through the same unsuccessful experience I had of trying to get a WPF ItemsControl control via automation ID using TestStack.White API (v0.13.3) in order to carry on some UI test automation.

Acquiring a WPF ListBox via automation ID using White is simple job.…

Insights on Linq Count() vs Count Property

In this post I am investigating the difference between Count property and Count() extension method of the .NET enumerable. Below code snippet sets the scene of what we trying to answer.

As in the previous post will start by decompiling the System.Core 4.0.0.0 dll.

The Linq Count() extension method behaves differently based on the…

Insights on Linq Any() Performance

The Enumerable.Any<TSource>() is an extension method that lives in System.Core assembly under System.Linq namespace. If you are wondering what happens with the extended enumerable source then this is the right post. In the right gets enumerated or not then we would have to look at the implementation. In System.Core 4.0.0.0 the Any(…) method comes with two overloads which is worth investigating. Simply…

Insights on .NET Concurrency: Reactive Programming

Intro This is the last form of concurrency we are going to cover in Insights on .NET Concurrency series. Reactive programming is a programming paradigm that is built on the concept of asynchronous data streams. Each asynchronous event feeds into a stream of events, where the stream can be observed, composed, manipulated, filtered etc. Its key characteristic is…

Insights on .NET Concurrency: Parallel Programming

Intro Parallel programming is the next post from the Insights on .NET Concurrency series. Parallelism is about making more than one thing happen at the same time, with the main objective being improve the performance of CPU bound operations. Parallel programming model tries to overcome single core limitations. With parallelism we can process larger more complex problems in a more…