Unicorn.UI.Web.Playwright
1.0.0
dotnet add package Unicorn.UI.Web.Playwright --version 1.0.0
NuGet\Install-Package Unicorn.UI.Web.Playwright -Version 1.0.0
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="Unicorn.UI.Web.Playwright" Version="1.0.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Unicorn.UI.Web.Playwright" Version="1.0.0" />
<PackageReference Include="Unicorn.UI.Web.Playwright" />
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 Unicorn.UI.Web.Playwright --version 1.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Unicorn.UI.Web.Playwright, 1.0.0"
#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 Unicorn.UI.Web.Playwright@1.0.0
#: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=Unicorn.UI.Web.Playwright&version=1.0.0
#tool nuget:?package=Unicorn.UI.Web.Playwright&version=1.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
Unicorn.UI.Web.Playwright
Implementation of browser interaction based on Playwright.
- Web Driver implementation
- Typified controls implementations
- PageObject implementation
- Abstract WebSite and pages pool
PageObject example
// Example of base web page.
// Page object supports inheritance, so all derived classes initialize controls described in base class also.
// Any page should be derived from WebPage
// Page properties like relative url and title could be specified using PageInfoAttribute
// Url property is implicitly used to navigate to the page from WebSite instance.
// Title property is implicitly used in page Opened property indicating
[PageInfo("test-ui-apps.html", "Test UI apps | Unicorn.TAF")]
public class ExamplePage : WebPage
{
// Creating page instance with <see cref="WebDriver"/> context.
public ExamplePage(WebDriver driver) : base(driver)
{
}
// Page object controls could either class properties or class fields (properties should have a setter).
[Name("Page title")]
[Find(Using.WebCss, "section[style *= block] h1.heading-separator")]
public WebControl MainTitle { get; set; }
// Each page object control could have readable name specified through NameAttribute.
// This generate human friendly ToString for the control and makes reports and logs more readable.
// Besides generic FindAttribute there are simlified shortcuts for locators:
// ByIdAttribute, ByClassAttribute, ByNameAttribute
[Name("Page header")]
[ById("hero")]
public WebControl Header { get; set; }
// If a control has the same locator across all the places, then the locator and the name could be
// specified for the control type using the same FindAttribute and NameAttribute.
// In such case the control also will be initialized with page object.
public ModalWindow Modal { get; set; }
public void WaitForLoading() =>
Header.Wait(Until.Visible, Timeouts.PageLoadTimeout);
}
Custom website implementation example
// Describes specific website implementation.
// The base website gives access to underlying WebDriver instance, provides with pages cache
// mechanism (to avoid page creation each time) and eases pages navigation.
// Some site specific actions and helpers could be placed here.
// The website should inherit WebSite
public class TestWebsite : WebSite
{
// Website creation based on existing explicitly created WebDriver instance.
// Should call base constructor.
public TestWebsite(WebDriver driver, string siteUrl) : base(driver, siteUrl)
{
}
// Website creation based on retrieved type of browser (WebDriver in this case is created automatically).
// Should call base constructor.
public TestWebsite(BrowserType browser, string siteUrl) : base(browser, siteUrl)
{
}
}
Page Pool use example
TestWebsite website = new TestWebsite(....);
// All you need to create a new website page is to call
ExamplePage page = website.GetPage<ExamplePage>();
// if the page was already created for current webdriver, existing instance will be returned
// otherwise new instance will be created
// To navigate directly to the page by it's url it's enough to call
ExamplePage page = website.NavigateTo<ExamplePage>();
Built-in matchers
ExamplePage page = website.GetPage<ExamplePage>();
Assert.That(page.MainTitle, UI.Control.HasText("'Hello World' app"))
Assert.That(page.TitleDropdown, UI.Dropdown.HasSelectedValue("Nothing selected"))
Assert.That(page.NameInput, UI.TextInput.HasValue(string.Empty))
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
.NETStandard 2.0
- Microsoft.Playwright (>= 1.56.0)
- Unicorn.UI.Core (>= 4.1.0)
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 |
|---|---|---|
| 1.0.0 | 200 | 12/3/2025 |