This is the first post in this series on the extensibility of Coded UI Test. In this blog, I will introduce the extensibility points of Coded UI Test.
The Coded UI Test tool, as you would guess, is heavily dependent on the UI technology being used in the application. Given that the UI programming have evolved and changed a lot over the years, from earlier versions of Visual Basic to latest WPF\Silverlight version to HTML 5.0 & AJAX, it is not possible for the tool to support all these technologies in the base product itself. Hence to enable users to still use Coded UI Test, the tool has various extensibility points that let users\partners to build support for technologies not support by the base product. To see the details on the technologies supported, refer this page.
Due to this, the extensibility is also key feature for Coded UI Test and it is built into each layer of the architecture. To explain this, let me briefly explain the high-level layer diagram of the tool –
The above diagram is mostly self-explanatory –
The same diagram with yellow glyph showing the extensibility points is below –
Since the Fast Forward feature of Test Runner is using subset of features there for Coded UI Test, any extension that the user writes for Coded UI Test will work also for Fast Forward feature without doing anything extra. In rest of the series, I will simply explain the extensibility from Coded UI Test perspective and that will automatically cover Fast Forward feature of Test Runner too.
The below table summarizes the extensibility points –
Extensibility Point
Class(es) to extend
Description and use
Covered in blogs
Extension Package
UITestExtensionPackage
The entry point to any UITest extension.
Blog 2 of this series
Technology Adapter
UITechnologyManager, UITechnologyElement
Used to add support to technologies not supported by the tool in the box. For example, use this to add support for Java AWT classes.
Blogs 3 & 4 of this series
Filter/ Aggregation Rule
UITestActionFilter
Used to add new filter or aggregation rule to the recorder. For example, add an aggregation rule for custom DataPicker control to record richer SetValue of Date action instead of individual clicks.
Blog 6 of this series
Property Provider
UITestPropertyProvider
Used to supply information about various properties supported by the control and how to use these properties. For example, use this to add more properties to an existing control (say Today to WPF DatePicker).
Blog 5 of this series
Browser Service
BrowserFactory, BrowserService, BrowserHelper
In addition to technology adapter extension point, this is needed to support new browser.
Future Post
Add\Modify API
Mouse, Keyboard
Customize how mouse or keyboard actions behave.
UITest Object Model
UITestActionInvoker, UITest
Listen to various events from UITest to do some custom action or, do something completely different with the recording.
Using UITest events
To know more about extensibility, check “Hello, World” Extension for Coded UI Test.