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
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="OneStreamAutoLibrary.WindowsUIHelpers" Version="2026.1.30.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="OneStreamAutoLibrary.WindowsUIHelpers" Version="2026.1.30.1" />
                    
Directory.Packages.props
<PackageReference Include="OneStreamAutoLibrary.WindowsUIHelpers" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add OneStreamAutoLibrary.WindowsUIHelpers --version 2026.1.30.1
                    
#r "nuget: OneStreamAutoLibrary.WindowsUIHelpers, 2026.1.30.1"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package OneStreamAutoLibrary.WindowsUIHelpers@2026.1.30.1
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=OneStreamAutoLibrary.WindowsUIHelpers&version=2026.1.30.1
                    
Install as a Cake Addin
#tool nuget:?package=OneStreamAutoLibrary.WindowsUIHelpers&version=2026.1.30.1
                    
Install as a Cake Tool

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 automation

  • Reusable 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 diagnostics

  • Telerik 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.dll
    • Telerik.WebAii.Controls.Xaml.dll
  • 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 button
  • WaitForButtonEnabled(Func<FrameworkElement>) - Waits for button to be enabled
  • WaitForButtonDisabled(Func<FrameworkElement>) - Waits for button to be disabled
  • ClickAndWaitForElement(...) - Clicks and waits for another element
  • FindByText(string) - Finds button by text content
  • FindByToolTip(string) - Finds button by tooltip

TextBoxComponent

Handles WPF/Silverlight text input operations.

Methods:

  • EnterText(FrameworkElement, string) - Enters text into field
  • ClearText(FrameworkElement) - Clears the text field
  • GetText(FrameworkElement) - Gets current text value

ComboBoxComponent

Handles WPF/Silverlight dropdown operations.

Methods:

  • SelectItemFromComboBoxEdit(RadComboBox, string) - Selects item by text
  • GetSelectedItem(RadComboBox) - Gets currently selected item

WindowComponent

Handles window management and waiting.

Methods:

  • WaitForWindow(WpfApplication, string) - Waits for window by title
  • CloseWindow(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 framework
    • Telerik.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 Compatible and additional computed target framework versions.
.NET Framework net48 is compatible.  net481 was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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.