PercyIO.Playwright 1.0.0-beta

This is a prerelease version of PercyIO.Playwright.
There is a newer version of this package available.
See the version list below for details.
dotnet add package PercyIO.Playwright --version 1.0.0-beta                
NuGet\Install-Package PercyIO.Playwright -Version 1.0.0-beta                
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="PercyIO.Playwright" Version="1.0.0-beta" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add PercyIO.Playwright --version 1.0.0-beta                
#r "nuget: PercyIO.Playwright, 1.0.0-beta"                
#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.
// Install PercyIO.Playwright as a Cake Addin
#addin nuget:?package=PercyIO.Playwright&version=1.0.0-beta&prerelease

// Install PercyIO.Playwright as a Cake Tool
#tool nuget:?package=PercyIO.Playwright&version=1.0.0-beta&prerelease                

percy-playwright-dotnet

Test

Percy visual testing for .NET Playwright.

Development

Install/update @percy/cli dev dependency (requires Node 14+):

$ npm install --save-dev @percy/cli

Install dotnet SDK:

$ brew tap isen-ng/dotnet-sdk-versions
$ brew install --cask  dotnet-sdk7-0-400
$ dotnet --list-sdks

Run tests:

npm run test

Installation

npm install @percy/cli (requires Node 14+):

$ npm install --save-dev @percy/cli

Install the PercyIO.Playwright package (for example, with .NET CLI):

$ dotnet add package PercyIO.Playwright

Usage

This is an example test using the Percy.Snapshot method.

using PercyIO.Playwright;

// ... other test code

var playwright = await Microsoft.Playwright.Playwright.CreateAsync();
var browser = await playwright.Chromium.LaunchAsync(new BrowserTypeLaunchOptions { Headless = false });
var page = await browser.NewPageAsync();
await page.GotoAsync("http://example.com");
​
// take a snapshot
Percy.Snapshot(page, ".NET example");

// snapshot options using an anonymous object
Percy.Snapshot(page, ".NET anonymous options", new {
  widths = new [] { 600, 1200 }
});

// snapshot options using a dictionary-like object
Percy.Options snapshotOptions = new Percy.Options();
snapshotOptions.Add("minHeight", 1280);
Percy.Snapshot(page, ".NET typed options", snapshotOptions);

Running the above normally will result in the following log:

[percy] Percy is not running, disabling snapshots

When running with percy exec, and your project's PERCY_TOKEN, a new Percy build will be created and snapshots will be uploaded to your project.

$ export PERCY_TOKEN=[your-project-token]
$ percy exec -- [your test command]
[percy] Percy has started!
[percy] Created build #1: https://percy.io/[your-project]
[percy] Snapshot taken ".NET example"
[percy] Snapshot taken ".NET anonymous options"
[percy] Snapshot taken ".NET typed options"
[percy] Stopping percy...
[percy] Finalized build #1: https://percy.io/[your-project]
[percy] Done!

Configuration

void Percy.Snapshot(IPage page, string name, object? options)

  • page (required) - A playwright page instance
  • name (required) - The snapshot name; must be unique to each snapshot
  • options - An object containing various snapshot options (see per-snapshot configuration options)

Running Percy on Automate

Percy.Screenshot(driver, name, options) [ needs @percy/cli 1.28.8-beta.2+ ];

This is an example test using the Percy.Screenshot method.

// ... other test code
// import
using PercyIO.Playwright;
class Program
{
  static void Main(string[] args)
  {

    // Add caps here
    string cdpUrl = "wss://cdp.browserstack.com/playwright?caps=" + Uri.EscapeDataString(capsJson);
    var playwright = await Playwright.CreateAsync();
    browser = await playwright.Chromium.ConnectAsync(cdpUrl);
    page = await browser.NewPageAsync();

    // navigate to webpage
    await page.GotoAsync("http://example.com");

    // take screenshot
    Percy.Screenshot(page, "dotnet screenshot-1");

    // other code
  }
}
  • page (required) - A Playwright page instance
  • name (required) - The screenshot name; must be unique to each screenshot
  • options (optional) - There are various options supported by Percy.Screenshot to server further functionality.
    • fullPage - Boolean value by default it falls back to false, Takes full page screenshot [From CLI v1.27.6+]
    • freezeAnimatedImage - Boolean value by default it falls back to false, you can pass true and percy will freeze image based animations.
    • freezeImageBySelectors - List of selectors. Images will be freezed which are passed using selectors. For this to work freezeAnimatedImage must be set to true.
    • freezeImageByXpaths - List of xpaths. Images will be freezed which are passed using xpaths. For this to work freezeAnimatedImage must be set to true.
    • percyCSS - Custom CSS to be added to DOM before the screenshot being taken. Note: This gets removed once the screenshot is taken.
    • ignoreRegionXpaths - List of xpaths. elements in the DOM can be ignored using xpath
    • ignoreRegionSelectors - List of selectors. elements in the DOM can be ignored using selectors.
    • customIgnoreRegions - List of custom objects. elements can be ignored using custom boundaries. Just passing a simple object for it like below.
      • Refer to example -
        • List<object> ignoreCustomElement = new List<object>();
          var region1 = new Dictionary<string, int>();
          region1.Add("top", 10);
          region1.Add("bottom", 120);
          region1.Add("right", 10);
          region1.Add("left", 10);
          ignoreCustomElement.Add(region1);
          region1.Add("custom_ignore_regions", ignoreCustomElement);
          
    • considerRegionXpaths - List of xpaths. elements in the DOM can be considered for diffing and will be ignored by Intelli Ignore using xpaths.
    • considerRegionSelectors - List of selectors. elements in the DOM can be considered for diffing and will be ignored by Intelli Ignore using selectors.
    • customConsiderRegions - List of custom objects. elements can be considered for diffing and will be ignored by Intelli Ignore using custom boundaries
      • Refer to example -
        • List<object> considerCustomElement = new List<object>();
          var region2 = new Dictionary<string, int>();
          region2.Add("top", 10);
          region2.Add("bottom", 120);
          region2.Add("right", 10);
          region2.Add("left", 10);
          considerCustomElement.Add(region2);
          region2.Add("custom_consider_regions", considerCustomElement);
          
        • Parameters:
          • top (int): Top coordinate of the consider region.
          • bottom (int): Bottom coordinate of the consider region.
          • left (int): Left coordinate of the consider region.
          • right (int): Right coordinate of the consider region.

Creating Percy on automate build

Note: Automate Percy Token starts with auto keyword. The command can be triggered using exec keyword.

$ export PERCY_TOKEN=[your-project-token]
$ percy exec -- [dotnet test command]
[percy] Percy has started!
[percy] [Dotnet example] : Starting automate screenshot ...
[percy] Screenshot taken "Dotnet example"
[percy] Stopping percy...
[percy] Finalized build #1: https://percy.io/[your-project]
[percy] Done!

Refer to docs here: Percy on Automate

Product 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. 
.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.

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 2,655 6/25/2024
1.0.0-beta 295 6/17/2024