Skip to content

test: use FlaUI to test all frameworks #193

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 6 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

<PropertyGroup>
<OutputType>Library</OutputType>
<TargetFrameworks>net472</TargetFrameworks>
<TargetFrameworks>net472;netcoreapp3.1;net5.0-windows</TargetFrameworks>
<RootNamespace>Demo.ActivateNonModalDialog</RootNamespace>
<UseWPF>true</UseWPF>
<Nullable>enable</Nullable>
Expand All @@ -15,7 +15,7 @@
</ItemGroup>

<ItemGroup>
<PackageReference Include="Moq" Version="4.5.30" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.2.0" />
</ItemGroup>

</Project>
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

<PropertyGroup>
<OutputType>Library</OutputType>
<TargetFrameworks>net472</TargetFrameworks>
<TargetFrameworks>net472;netcoreapp3.1;net5.0-windows</TargetFrameworks>
<RootNamespace>Demo.CloseNonModalDialog</RootNamespace>
<UseWPF>true</UseWPF>
<Nullable>enable</Nullable>
Expand All @@ -15,7 +15,7 @@
</ItemGroup>

<ItemGroup>
<PackageReference Include="Moq" Version="4.5.30" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.2.0" />
</ItemGroup>

</Project>
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

<PropertyGroup>
<OutputType>Library</OutputType>
<TargetFrameworks>net472</TargetFrameworks>
<TargetFrameworks>net472;netcoreapp3.1;net5.0-windows</TargetFrameworks>
<RootNamespace>Demo.CustomDialogTypeLocator</RootNamespace>
<UseWPF>true</UseWPF>
<Nullable>enable</Nullable>
Expand All @@ -15,7 +15,7 @@
</ItemGroup>

<ItemGroup>
<PackageReference Include="Moq" Version="4.5.30" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.2.0" />
</ItemGroup>

</Project>
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

<PropertyGroup>
<OutputType>Library</OutputType>
<TargetFrameworks>net472</TargetFrameworks>
<TargetFrameworks>net472;netcoreapp3.1;net5.0-windows</TargetFrameworks>
<RootNamespace>Demo.CustomFolderBrowserDialog</RootNamespace>
<UseWPF>true</UseWPF>
<Nullable>enable</Nullable>
Expand All @@ -15,7 +15,7 @@
</ItemGroup>

<ItemGroup>
<PackageReference Include="Moq" Version="4.5.30" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.2.0" />
</ItemGroup>

</Project>
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,7 @@
using NUnit.Framework;
using TechTalk.SpecFlow;
using TestBaseClasses.Features;
using TestStack.White;
using TestStack.White.Factory;
using TestStack.White.ScreenObjects;
using FlaUI.Core;

namespace Demo.CustomFolderBrowserDialog.Features
{
Expand All @@ -19,17 +17,12 @@ protected override Application LaunchApplication()
{
// ReSharper disable once AssignNullToNotNullAttribute
string applicationFilePath = Path.Combine(
Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location),
Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)!,
"Demo.CustomFolderBrowserDialog.exe");

return Application.Launch(applicationFilePath);
}

protected override MainScreen GetMainScreen(ScreenRepository screenRepository)
{
return screenRepository.Get<MainScreen>("Demo - Custom Folder Browser Dialog", InitializeOption.NoCache);
}

[Given("I have browsed a folder")]
public void GivenIHaveBrowsedAFolder()
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,25 +1,24 @@
using TestStack.White.ScreenObjects;
using TestStack.White.UIItems;
using TestStack.White.UIItems.Finders;
using TestStack.White.UIItems.WindowItems;
using FlaUI.Core;
using FlaUI.Core.AutomationElements;
using TestBaseClasses.Features;

namespace Demo.CustomFolderBrowserDialog.ScreenObjects
{
public class BrowseFolderScreen : AppScreen
public class BrowseFolderScreen : Window
{
public BrowseFolderScreen(Window window, ScreenRepository screenRepository)
: base(window, screenRepository)
public BrowseFolderScreen(FrameworkAutomationElementBase frameworkAutomationElement)
: base(frameworkAutomationElement)
{
}

public virtual void ClickSelectFolder()
{
Window.Get<Button>(SearchCriteria.ByText("Select Folder")).Click();
FindFirstDescendant(cf => cf.ByText("Select Folder")).AsButton().Click();
}

public virtual void ClickCancel()
{
Window.Get<Button>(SearchCriteria.ByText("Cancel")).Click();
FindFirstDescendant(cf => cf.ByText("Cancel")).AsButton().Click();
}
}
}
Original file line number Diff line number Diff line change
@@ -1,30 +1,28 @@
using TestStack.White.Factory;
using TestStack.White.ScreenObjects;
using TestStack.White.ScreenObjects.ScreenAttributes;
using TestStack.White.UIItems;
using TestStack.White.UIItems.WindowItems;
using FlaUI.Core;
using FlaUI.Core.AutomationElements;
using TestBaseClasses.Features;

namespace Demo.CustomFolderBrowserDialog.ScreenObjects
{
public class MainScreen : AppScreen
public class MainScreen : Window
{
[AutomationId("RQ_N2kIsN0C39sxTonCRtA")]
private readonly TextBox? pathTextBox = null;

[AutomationId("TTK4W3coCE2skIHpcUe97Q")]
private readonly Button? browseButton = null;

public MainScreen(Window window, ScreenRepository screenRepository)
: base(window, screenRepository)
public MainScreen(FrameworkAutomationElementBase frameworkAutomationElement)
: base(frameworkAutomationElement)
{
browseButton = FindFirstDescendant(cf => cf.ByAutomationId("TTK4W3coCE2skIHpcUe97Q")).AsButton();
pathTextBox = FindFirstDescendant(cf => cf.ByAutomationId("RQ_N2kIsN0C39sxTonCRtA")).AsTextBox();
}

public virtual string? FileName => pathTextBox?.Text;

public virtual BrowseFolderScreen ClickBrowse()
{
browseButton!.Click();
return ScreenRepository.GetModal<BrowseFolderScreen>("Select Folder", Window, InitializeOption.NoCache);
return this.WaitForModalWindow<BrowseFolderScreen>("Select Folder"/*, Window, InitializeOption.NoCache*/);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

<PropertyGroup>
<OutputType>Library</OutputType>
<TargetFrameworks>net472</TargetFrameworks>
<TargetFrameworks>net472;netcoreapp3.1;net5.0-windows</TargetFrameworks>
<RootNamespace>Demo.CustomMessageBox</RootNamespace>
<UseWPF>true</UseWPF>
<Nullable>enable</Nullable>
Expand All @@ -15,7 +15,7 @@
</ItemGroup>

<ItemGroup>
<PackageReference Include="Moq" Version="4.5.30" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.2.0" />
</ItemGroup>

</Project>
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,7 @@
using NUnit.Framework;
using TechTalk.SpecFlow;
using TestBaseClasses.Features;
using TestStack.White;
using TestStack.White.Factory;
using TestStack.White.ScreenObjects;
using FlaUI.Core;

namespace Demo.CustomMessageBox.Features
{
Expand All @@ -19,17 +17,12 @@ protected override Application LaunchApplication()
{
// ReSharper disable once AssignNullToNotNullAttribute
string applicationFilePath = Path.Combine(
Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location),
Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)!,
"Demo.CustomMessageBox.exe");

return Application.Launch(applicationFilePath);
}

protected override MainScreen GetMainScreen(ScreenRepository screenRepository)
{
return ScreenRepository!.Get<MainScreen>("Demo - Custom Message Box", InitializeOption.NoCache);
}

[Given("confirmation with text is shown")]
public void ShowConfirmationWithText()
{
Expand Down
36 changes: 17 additions & 19 deletions samples/wpf/Demo.CustomMessageBox.Test/ScreenObjects/MainScreen.cs
Original file line number Diff line number Diff line change
@@ -1,66 +1,64 @@
using TestStack.White.Factory;
using TestStack.White.ScreenObjects;
using TestStack.White.ScreenObjects.ScreenAttributes;
using TestStack.White.UIItems;
using TestStack.White.UIItems.WindowItems;
using FlaUI.Core;
using FlaUI.Core.AutomationElements;
using TestBaseClasses.Features;

namespace Demo.CustomMessageBox.ScreenObjects
{
public class MainScreen : AppScreen
public class MainScreen : Window
{
[AutomationId("1k7d1Nm8MkOYK5qGrdVX4Q")]
private readonly Button? messageBoxWithMessageButton = null;

[AutomationId("EvNqZT9tYkuNzKDDrLJ8Yw")]
private readonly Button? messageBoxWithCaptionButton = null;

[AutomationId("FWGzBkom5ESJz_p7KCPKqQ")]
private readonly Button? messageBoxWithButtonsButton = null;

[AutomationId("SapYi2J7bkiJ1z1GWwOZAQ")]
private readonly Button? messageBoxWithIconButton = null;

[AutomationId("sUjm2_m1LUGWso8S2Us5ow")]
private readonly Button? messageBoxWithDefaultResultButton = null;

[AutomationId("kT3_ZUZfsEK1QdZ2jBfuIQ")]
private readonly Label? confirmation = null;

public MainScreen(Window window, ScreenRepository screenRepository)
: base(window, screenRepository)
public MainScreen(FrameworkAutomationElementBase frameworkAutomationElement)
: base(frameworkAutomationElement)
{
messageBoxWithMessageButton = FindFirstDescendant(cf => cf.ByAutomationId("1k7d1Nm8MkOYK5qGrdVX4Q")).AsButton();
messageBoxWithCaptionButton = FindFirstDescendant(cf => cf.ByAutomationId("EvNqZT9tYkuNzKDDrLJ8Yw")).AsButton();
messageBoxWithButtonsButton = FindFirstDescendant(cf => cf.ByAutomationId("FWGzBkom5ESJz_p7KCPKqQ")).AsButton();
messageBoxWithIconButton = FindFirstDescendant(cf => cf.ByAutomationId("SapYi2J7bkiJ1z1GWwOZAQ")).AsButton();
messageBoxWithDefaultResultButton = FindFirstDescendant(cf => cf.ByAutomationId("sUjm2_m1LUGWso8S2Us5ow")).AsButton();
confirmation = FindFirstDescendant(cf => cf.ByAutomationId("kT3_ZUZfsEK1QdZ2jBfuIQ")).AsLabel();
}

public virtual string? Confirmation => confirmation?.Text;

public virtual MessageBoxScreen ClickMessageBoxWithMessage()
{
messageBoxWithMessageButton!.Click();
return ScreenRepository.GetModal<MessageBoxScreen>(" ", Window, InitializeOption.NoCache);
return this.WaitForModalWindow<MessageBoxScreen>(" ");
}

public virtual MessageBoxScreen ClickMessageBoxWithCaption()
{
messageBoxWithCaptionButton!.Click();
return ScreenRepository.GetModal<MessageBoxScreen>("This Is The Caption", Window, InitializeOption.NoCache);
return this.WaitForModalWindow<MessageBoxScreen>("This Is The Caption");
}

public virtual MessageBoxScreen ClickMessageBoxWithButtons()
{
messageBoxWithButtonsButton!.Click();
return ScreenRepository.GetModal<MessageBoxScreen>("This Is The Caption", Window, InitializeOption.NoCache);
return this.WaitForModalWindow<MessageBoxScreen>("This Is The Caption");
}

public virtual MessageBoxScreen ClickMessageBoxWithIcon()
{
messageBoxWithIconButton!.Click();
return ScreenRepository.GetModal<MessageBoxScreen>("This Is The Caption", Window, InitializeOption.NoCache);
return this.WaitForModalWindow<MessageBoxScreen>("This Is The Caption");
}

public virtual MessageBoxScreen ClickMessageBoxWithDefaultResult()
{
messageBoxWithDefaultResultButton!.Click();
return ScreenRepository.GetModal<MessageBoxScreen>("This Is The Caption", Window, InitializeOption.NoCache);
return this.WaitForModalWindow<MessageBoxScreen>("This Is The Caption");
}
}
}
Original file line number Diff line number Diff line change
@@ -1,31 +1,30 @@
using TestStack.White.ScreenObjects;
using TestStack.White.UIItems;
using TestStack.White.UIItems.Finders;
using TestStack.White.UIItems.WindowItems;
using FlaUI.Core;
using FlaUI.Core.AutomationElements;
using TestBaseClasses.Features;

namespace Demo.CustomMessageBox.ScreenObjects
{
public class MessageBoxScreen : AppScreen
public class MessageBoxScreen : Window
{
public MessageBoxScreen(Window window, ScreenRepository screenRepository)
: base(window, screenRepository)
public MessageBoxScreen(FrameworkAutomationElementBase frameworkAutomationElement)
: base(frameworkAutomationElement)
{
}

public virtual string Caption => Window.Title;
public virtual string Caption => Title;

public virtual bool IsOKButtonVisible => Window.Exists<Button>(SearchCriteria.ByText("OK"));
public virtual bool IsOKButtonVisible => FindFirstDescendant(cf => cf.ByText("OK"))?.AsButton() != null;

public virtual bool IsCancelButtonVisible => Window.Exists<Button>(SearchCriteria.ByText("Cancel"));
public virtual bool IsCancelButtonVisible => FindFirstDescendant(cf => cf.ByText("Cancel"))?.AsButton() != null;

public virtual void ClickOK()
{
Window.Get<Button>(SearchCriteria.ByText("OK")).Click();
FindFirstDescendant(cf => cf.ByText("OK")).AsButton().Click();
}

public virtual void ClickCancel()
{
Window.Get<Button>(SearchCriteria.ByText("Cancel")).Click();
FindFirstDescendant(cf => cf.ByText("Cancel")).AsButton().Click();
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

<PropertyGroup>
<OutputType>Library</OutputType>
<TargetFrameworks>net472</TargetFrameworks>
<TargetFrameworks>net472;netcoreapp3.1;net5.0-windows</TargetFrameworks>
<RootNamespace>Demo.CustomOpenFileDialog</RootNamespace>
<UseWPF>true</UseWPF>
<Nullable>enable</Nullable>
Expand All @@ -15,7 +15,7 @@
</ItemGroup>

<ItemGroup>
<PackageReference Include="Moq" Version="4.5.30" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.2.0" />
</ItemGroup>

</Project>
Loading