OneStreamAutoLibrary.WindowsUIHelpers
2026.1.30.1
dotnet add package OneStreamAutoLibrary.WindowsUIHelpers --version 2026.1.30.1
NuGet\Install-Package OneStreamAutoLibrary.WindowsUIHelpers -Version 2026.1.30.1
<PackageReference Include="OneStreamAutoLibrary.WindowsUIHelpers" Version="2026.1.30.1" />
<PackageVersion Include="OneStreamAutoLibrary.WindowsUIHelpers" Version="2026.1.30.1" />
<PackageReference Include="OneStreamAutoLibrary.WindowsUIHelpers" />
paket add OneStreamAutoLibrary.WindowsUIHelpers --version 2026.1.30.1
#r "nuget: OneStreamAutoLibrary.WindowsUIHelpers, 2026.1.30.1"
#:package OneStreamAutoLibrary.WindowsUIHelpers@2026.1.30.1
#addin nuget:?package=OneStreamAutoLibrary.WindowsUIHelpers&version=2026.1.30.1
#tool nuget:?package=OneStreamAutoLibrary.WindowsUIHelpers&version=2026.1.30.1
WindowsUIHelpers
A .NET Framework 4.8 library for Windows desktop UI automation using Telerik Test Studio and WPF/Silverlight controls. WindowsUIHelpers provides reusable page objects, components, and helpers for building maintainable desktop automation tests for OneStream and other Windows applications.
Integration
WindowsUIHelpers depends on and uses:
- CommonHelpers - Shared utilities, logging interfaces (
ITestLogger), reporting, and common infrastructure - SeleniumHelpers - Shared base classes and utilities (also used for web automation)
- Telerik Test Framework - WPF/Silverlight automation framework (
ArtOfTest.WebAii,Telerik.WebAii.Controls.Xaml)
This library is designed to be consumed by Windows desktop test projects requiring page object models and reusable Windows UI components.
Features
Page Object Model (POM):
Structured, maintainable page objects for Windows desktop UI automationReusable Components:
Pre-built components for common WPF/Silverlight elements:- ButtonComponent - Button interactions and waiting
- TextBoxComponent - Text input operations
- ComboBoxComponent - Dropdown/ComboBox operations
- TreeViewComponent - Tree navigation and selection
- WindowComponent - Window management and waiting
- PropertyGridComponent - Property grid interactions
- BaseComponent - Base class for custom components
Common Page Objects:
Ready-to-use page objects for common scenarios:- LoginPage - Desktop application login automation
- NavigationPanePage - Application navigation panel interactions
- FileExplorerPage - Windows File Explorer automation
- Dialog Helpers - Open/Save dialog automation
ITestLogger Integration:
Built-in logging support for page-level actions and diagnosticsTelerik Test Studio Support:
Full integration with Test Studio framework for WPF/Silverlight automation
Prerequisites
- .NET Framework 4.8
- Telerik Test Studio 2025.x (tested with 2025.1.226.1)
- Required DLLs installed at:
C:\Program Files (x86)\Progress\Test Studio\Bin\ ArtOfTest.WebAii.dllTelerik.WebAii.Controls.Xaml.dll
- Required DLLs installed at:
- CommonHelpers - Shared utilities and logging
- SeleniumHelpers - Shared base classes
Note: This library uses SpecificVersion=False for Telerik references, making it compatible with any Test Studio 2025.x version installed on your machine.
Installation
Add the NuGet package to your .NET Framework 4.8 project:
Install-Package OneStreamAutoLibrary.WindowsUIHelpers
Or via .NET CLI:
dotnet add package OneStreamAutoLibrary.WindowsUIHelpers
Usage Example
Basic Login Page Usage
using ArtOfTest.WebAii.Wpf;
using CommonHelpers.Logging;
using WindowsUIHelpers.PageObjects.CommonWindows;
public class DesktopLoginTest
{
public void LoginTest()
{
// Create WPF application connection
using var wpfApp = new WpfApplication();
wpfApp.Launch(@"C:\Path\To\OneStreamApp.exe");
// Create logger (from CommonHelpers)
ITestLogger logger = new YourLoggerImplementation();
// Use LoginPage from WindowsUIHelpers
var loginPage = new LoginPage(wpfApp.Find, logger);
loginPage.LogonToDesktopApp(wpfApp, "https://server.com");
loginPage.SelectApp("MyApplication");
logger.Info("Login successful");
}
}
Using Components Directly
using ArtOfTest.WebAii.Wpf;
using WindowsUIHelpers.Components;
using CommonHelpers.Logging;
public void ComponentExample(VisualFind find, ITestLogger logger)
{
// Use ButtonComponent
var buttonComponent = new ButtonComponent(find, logger);
var submitButton = buttonComponent.GetElementByName<RadButton>("btnSubmit");
buttonComponent.Click(submitButton);
// Use TextBoxComponent
var textBoxComponent = new TextBoxComponent(find, logger);
var usernameBox = textBoxComponent.GetElementByName<TextBox>("txtUsername");
textBoxComponent.EnterText(usernameBox, "testuser");
// Use ComboBoxComponent
var comboBoxComponent = new ComboBoxComponent(find, logger);
var appDropdown = comboBoxComponent.GetElementByName<RadComboBox>("cmbApplication");
comboBoxComponent.SelectItemFromComboBoxEdit(appDropdown, "MyApp");
}
Creating Custom Page Objects
using ArtOfTest.WebAii.Wpf;
using ArtOfTest.WebAii.Silverlight;
using CommonHelpers.Logging;
using WindowsUIHelpers.Components;
using Telerik.WebAii.Controls.Xaml;
namespace YourProject.PageObjects
{
public class DashboardPage : BaseComponent
{
private readonly ButtonComponent _buttonComponent;
private readonly TextBoxComponent _textBoxComponent;
public DashboardPage(VisualFind find, ITestLogger logger) : base(find, logger)
{
_buttonComponent = new ButtonComponent(find, logger);
_textBoxComponent = new TextBoxComponent(find, logger);
}
// UI Elements
public RadButton RefreshButton => GetElementByName<RadButton>("btnRefresh");
public TextBox SearchBox => GetElementByName<TextBox>("txtSearch");
// Page Methods
public void Search(string searchTerm)
{
WaitUntilElementVisible(() => SearchBox);
_textBoxComponent.EnterText(SearchBox, searchTerm);
_buttonComponent.Click(RefreshButton);
_logger?.Info($"Searched for: {searchTerm}");
}
}
}
Components
ButtonComponent
Handles WPF/Silverlight button interactions with built-in waits.
Methods:
Click(FrameworkElement)- Clicks the buttonWaitForButtonEnabled(Func<FrameworkElement>)- Waits for button to be enabledWaitForButtonDisabled(Func<FrameworkElement>)- Waits for button to be disabledClickAndWaitForElement(...)- Clicks and waits for another elementFindByText(string)- Finds button by text contentFindByToolTip(string)- Finds button by tooltip
TextBoxComponent
Handles WPF/Silverlight text input operations.
Methods:
EnterText(FrameworkElement, string)- Enters text into fieldClearText(FrameworkElement)- Clears the text fieldGetText(FrameworkElement)- Gets current text value
ComboBoxComponent
Handles WPF/Silverlight dropdown operations.
Methods:
SelectItemFromComboBoxEdit(RadComboBox, string)- Selects item by textGetSelectedItem(RadComboBox)- Gets currently selected item
WindowComponent
Handles window management and waiting.
Methods:
WaitForWindow(WpfApplication, string)- Waits for window by titleCloseWindow(FrameworkElement)- Closes a window
Project Structure
WindowsUIHelpers/
├── Components/
│ ├── BaseComponent.cs # Base class for all components
│ ├── ButtonComponent.cs # Button interactions
│ ├── TextBoxComponent.cs # Text input operations
│ ├── ComboBoxComponent.cs # Dropdown operations
│ ├── TreeViewComponent.cs # Tree navigation
│ ├── WindowComponent.cs # Window management
│ └── PropertyGridComponent.cs # Property grid operations
├── PageObjects/
│ ├── CommonWindows/
│ │ ├── LoginPage.cs # Desktop login page
│ │ ├── FileExplorerPage.cs # File Explorer automation
│ │ └── DialogHelpers/
│ │ ├── OpenFileDialogHelper.cs
│ │ └── SaveAsDialogHelper.cs
│ └── NavigationPane/
│ ├── NavigationPanePage.cs # App navigation panel
│ └── Application/
│ ├── Cube/
│ │ └── DimensionLibraryPage.cs
│ └── Tools/
│ └── LoadExtractPage.cs
└── README.md
Dependencies
This library depends on:
CommonHelpers - Provides:
ITestLogger- Logging interface for page objects- Shared utilities and infrastructure
- Reporting helpers
SeleniumHelpers - Provides:
- Base classes and common automation patterns
- Shared utilities
Telerik Test Studio - Provides:
ArtOfTest.WebAii(v2025.x) - WPF/Silverlight automation frameworkTelerik.WebAii.Controls.Xaml(v2025.x) - Telerik control support- Tested with versions: 2025.1.226.1
Note: Telerik Test Studio must be installed separately on the machine. The DLLs are referenced from the global installation path and are not included in the NuGet package.
Version Compatibility
- WindowsUIHelpers: Compatible with Test Studio/Framework 2025.1.226.1
- .NET Framework: Requires .NET Framework 4.8
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET Framework | net48 is compatible. net481 was computed. |
-
.NETFramework 4.8
- OneStreamAutoLibrary.CommonHelpers (>= 2025.12.19.1)
- OneStreamAutoLibrary.SeleniumHelpers (>= 2026.1.30.1)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 2026.1.30.1 | 39 | 1/30/2026 |
| 2026.1.27.2 | 72 | 1/28/2026 |
| 2026.1.27.1 | 71 | 1/27/2026 |
| 2026.1.16.1 | 96 | 1/16/2026 |
Initial release.