Percy playwright python
Percy visual testing for Python Playwright.
Installation
npm install @percy/cli:
$ npm install --save-dev @percy/cli
pip install Percy playwright package:
$ pip install percy-playwright
Usage
This is an example test using the percy_snapshot function.
from percy import percy_snapshot
with sync_playwright() as playwright:
browser = playwright.chromium.connect()
page = browser.new_page()
page.goto('http://example.com')
# take a snapshot
percy_snapshot(browser, 'Python example')
Running the test 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 -- [python test command]
[percy] Percy has started!
[percy] Created build #1: https://percy.io/[your-project]
[percy] Snapshot taken "Python example"
[percy] Stopping percy...
[percy] Finalized build #1: https://percy.io/[your-project]
[percy] Done!
Configuration
percy_snapshot(page, name[, **kwargs])
page(required) - A playwright page instancename(required) - The snapshot name; must be unique to each snapshot**kwargs- See per-snapshot configuration options
Percy on Automate
Usage
from playwright.sync_api import sync_playwright
from percy import percy_screenshot, percy_snapshot
desired_cap = {
'browser': 'chrome',
'browser_version': 'latest',
'os': 'osx',
'os_version': 'ventura',
'name': 'Percy Playwright PoA Demo',
'build': 'percy-playwright-python-tutorial',
'browserstack.username': 'username',
'browserstack.accessKey': 'accesskey'
}
with sync_playwright() as playwright:
cdpUrl = 'wss://cdp.browserstack.com/playwright?caps=' + urllib.parse.quote(json.dumps(desired_cap))
browser = playwright.chromium.connect(cdpUrl)
page = browser.new_page()
page.goto("https://percy.io/")
percy_screenshot(page, name = "Screenshot 1")
take a snapshot
percy_screenshot(page, name = 'Screenshot 1')
page(required) - A Playwright page instancename(required) - The screenshot name; must be unique to each screenshotoptions(optional) - There are various options supported by percy_screenshot to server further functionality.sync- Boolean value by default it falls back tofalse, Gives the processed result around screenshot [From CLI v1.28.8]full_page- Boolean value by default it falls back tofalse, Takes full page screenshot [From CLI v1.28.8]freeze_animated_image- Boolean value by default it falls back tofalse, you can passtrueand percy will freeze image based animations.freeze_image_by_selectors-List of selectors. Images will be freezed which are passed using selectors. For this to workfreeze_animated_imagemust be set to true.freeze_image_by_xpaths- List of xpaths. Images will be freezed which are passed using xpaths. For this to workfreeze_animated_imagemust be set to true.percy_css- Custom CSS to be added to DOM before the screenshot being taken. Note: This gets removed once the screenshot is taken.ignore_region_xpaths- List of xpaths. elements in the DOM can be ignored using xpathignore_region_selectors- List of selectors. elements in the DOM can be ignored using selectors.custom_ignore_regions- List of custom objects. elements can be ignored using custom boundaries. Just passing a simple object for it like below.- example:
{"top": 10, "right": 10, "bottom": 120, "left": 10} - In above example it will draw rectangle of ignore region as per given coordinates.
top(int): Top coordinate of the ignore region.bottom(int): Bottom coordinate of the ignore region.left(int): Left coordinate of the ignore region.right(int): Right coordinate of the ignore region.
- example:
consider_region_xpaths- List of xpaths. elements in the DOM can be considered for diffing and will be ignored by Intelli Ignore using xpaths.consider_region_selectors- List of selectors. elements in the DOM can be considered for diffing and will be ignored by Intelli Ignore using selectors.custom_consider_regions- List of custom objects. elements can be considered for diffing and will be ignored by Intelli Ignore using custom boundaries- example:
{"top": 10, "right": 10, "bottom": 120, "left": 10} - In above example it will draw rectangle of consider region will be drawn.
- 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.
- example:
regionsparameter that allows users to apply snapshot options to specific areas of the page. This parameter is an array where each object defines a custom region with configurations.- Parameters:
-
elementSelector(optional, only one of the following must be provided, if this is not provided then full page will be considered as region)boundingBox(object): Defines the coordinates and size of the region.x(number): X-coordinate of the region.y(number): Y-coordinate of the region.width(number): Width of the region.height(number): Height of the region.
elementXpath(string): The XPath selector for the element.elementCSS(string): The CSS selector for the element.
-
algorithm(mandatory)- Specifies the snapshot comparison algorithm.
- Allowed values:
standard,layout,ignore,intelliignore.
-
configuration(required forstandardandintelliignorealgorithms, ignored otherwise)diffSensitivity(number): Sensitivity level for detecting differences.imageIgnoreThreshold(number): Threshold for ignoring minor image differences.carouselsEnabled(boolean): Whether to enable carousel detection.bannersEnabled(boolean): Whether to enable banner detection.adsEnabled(boolean): Whether to enable ad detection.
-
assertion(optional)- Defines assertions to apply to the region.
diffIgnoreThreshold(number): The threshold for ignoring minor differences.
-
- Parameters:
Example Usage for regions
obj1 = {
"elementSelector": {
"elementCSS": ".ad-banner"
},
"algorithm": "intelliignore",
"configuration": {
"diffSensitivity": 2,
"imageIgnoreThreshold": 0.2,
"carouselsEnabled": true,
"bannersEnabled": true,
"adsEnabled": true
},
"assertion": {
"diffIgnoreThreshold": 0.4,
}
};
# we can use the createRegion function
from percy import percy_snapshot
from percy.screenshot import (create_region)
obj2 = create_region(
algorithm="intellignore",
diffSensitivity=2,
imageIgnoreThreshold=0.2,
carouselsEnabled=True,
adsEnabled=True,
diffIgnoreThreshold=0.4
)
percy_snapshot(page, name="Homepage", regions=[obj1]);
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 -- [python test command]
[percy] Percy has started!
[percy] [Python example] : Starting automate screenshot ...
[percy] Screenshot taken "Python example"
[percy] Stopping percy...
[percy] Finalized build #1: https://percy.io/[your-project]
[percy] Done!
Refer to docs here: Percy on Automate
Metadata
Release files for percy-playwright 1.0.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| percy_playwright-1.0.3.tar.gz | 31.7 kB | Without provenance | Details for percy_playwright-1.0.3.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| percy_playwright-1.0.3-py3-none-any.whl | Python 3 | none | any | Details for percy_playwright-1.0.3-py3-none-any.whl |
Total release size: 48.3 kB
Release files / percy_playwright-1.0.3.tar.gz
| Download URL | percy_playwright-1.0.3.tar.gz |
|---|---|
| Size | 31.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
acd7fe0c18ba20ebcb4f5ff39e7479e76a11fe7c92b515664501e471d457f575
|
|
BLAKE2b-256 checksum How to use checksums |
1489cdeb68ea134f0891e08afa83ad4eda4940e8dbb68bd06c339f3a41ad8b15
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.25
|
Release files / percy_playwright-1.0.3-py3-none-any.whl
| Download URL | percy_playwright-1.0.3-py3-none-any.whl |
|---|---|
| Size | 16.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6cb07310c539f8e1427ef21b1584ffed1cb6ff64c30d69ad35b1639e121983c8
|
|
BLAKE2b-256 checksum How to use checksums |
58e044470a70b145492d6d4c284d7c259cd204de817bae2178b63e0201253a26
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.25
|
Security for percy-playwright 1.0.3
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.