// Copyright (c) Microsoft Corporation
// The Microsoft Corporation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
using System;
using System.Collections.Generic;
using System.Runtime.CompilerServices;
[assembly: InternalsVisibleTo("UITestBase")]
[assembly: InternalsVisibleTo("Session")]
namespace Microsoft.PowerToys.UITest
{
///
/// This file manages the configuration of modules for UI tests.
///
///
/// How to add a new module:
/// 1. Define the new module in the PowerToysModule enum.
/// 2. Add the exe window name to the ModuleWindowName dictionary in the ModuleConfigData constructor.
/// 3. Add the exe path to the ModulePath dictionary in the ModuleConfigData constructor.
///
///
/// Represents the modules in PowerToys.
///
public enum PowerToysModule
{
PowerToysSettings,
FancyZone,
Hosts,
Runner,
Workspaces,
}
///
/// Represents the window size for the UI test.
///
public enum WindowSize
{
///
/// Unspecified window size, won't make any size change
///
UnSpecified,
///
/// Small window size, 640 * 480
///
Small,
///
/// Small window size, 480 * 640
///
Small_Vertical,
///
/// Medium window size, 1024 * 768
///
Medium,
///
/// Medium window size, 768 * 1024
///
Medium_Vertical,
///
/// Large window size, 1920 * 1080
///
Large,
///
/// Large window size, 1080 * 1920
///
Large_Vertical,
}
internal class ModuleConfigData
{
private Dictionary ModulePath { get; }
// Singleton instance of ModuleConfigData.
private static readonly Lazy SingletonInstance = new Lazy(() => new ModuleConfigData());
public static ModuleConfigData Instance => SingletonInstance.Value;
public const string WindowsApplicationDriverUrl = "http://127.0.0.1:4723";
public Dictionary ModuleWindowName { get; }
private ModuleConfigData()
{
// The exe window name for each module.
ModuleWindowName = new Dictionary
{
[PowerToysModule.PowerToysSettings] = "PowerToys Settings",
[PowerToysModule.FancyZone] = "FancyZones Layout",
[PowerToysModule.Hosts] = "Hosts File Editor",
[PowerToysModule.Runner] = "PowerToys",
[PowerToysModule.Workspaces] = "Workspaces Editor",
};
// Exe start path for the module if it exists.
ModulePath = new Dictionary
{
[PowerToysModule.PowerToysSettings] = @"\..\..\..\WinUI3Apps\PowerToys.Settings.exe",
[PowerToysModule.FancyZone] = @"\..\..\..\PowerToys.FancyZonesEditor.exe",
[PowerToysModule.Hosts] = @"\..\..\..\WinUI3Apps\PowerToys.Hosts.exe",
[PowerToysModule.Runner] = @"\..\..\..\PowerToys.exe",
[PowerToysModule.Workspaces] = @"\..\..\..\PowerToys.WorkspacesEditor.exe",
};
}
public string GetModulePath(PowerToysModule scope) => ModulePath[scope];
public string GetWindowsApplicationDriverUrl() => WindowsApplicationDriverUrl;
public string GetModuleWindowName(PowerToysModule scope) => ModuleWindowName[scope];
}
}