Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

percy-selenium-python

Test

Percy visual testing for Python Selenium.

Installation

npm install @percy/cli:

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

pip install Percy selenium package:

$ pip install percy-selenium

Usage

This is an example test using the percy_snapshot function.

from percy import percy_snapshot

browser = webdriver.Firefox()
browser.get('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(driver, name[, **kwargs])

Cookies

By default the SDK sends the browser's cookies with each snapshot so Percy can load pages and assets that need a logged-in session during asset discovery. To stop sending cookies, set PERCY_DO_NOT_USE_CAPTURED_COOKIES=true. Assets behind authentication may then fail to load and snapshots can render incorrectly; the SDK logs a warning once when this is enabled.

Migrating Config

If you have a previous Percy configuration file, migrate it to the newest version with the config:migrate command:

$ percy config:migrate

Percy on Automate

Usage

This is an example test using the percy_screenshot function. percy_screenshot(driver, name, options) [ needs @percy/cli 1.27.0-beta.0+ ];

from percy import percy_screenshot

driver = webdriver.Remote("https://hub-cloud.browserstack.com/wd/hub", caps) # using automate session
driver.get('http://example.com')
​
# take a snapshot
percy_screenshot(driver, name = 'Screenshot 1')
  • driver (required) - A Selenium driver 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.
    • sync - Boolean value by default it falls back to false, Gives the processed result around screenshot [From CLI v1.28.0-beta.0+]
    • full_page - Boolean value by default it falls back to false, Takes full page screenshot [From CLI v1.27.6+]
    • freeze_animated_image - Boolean value by default it falls back to false, you can pass true and 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 work freeze_animated_image must be set to true.
    • freeze_image_by_xpaths - List of xpaths. Images will be freezed which are passed using xpaths. For this to work freeze_animated_image must 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 xpath
    • ignore_region_selectors - List of selectors. elements in the DOM can be ignored using selectors.
    • ignore_region_selenium_elements - List of selenium web-element. elements can be ignored using selenium_elements.
    • 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.
    • 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.
    • consider_region_selenium_elements - List of selenium web-element. elements can be considered for diffing and will be ignored by Intelli Ignore using selenium_elements.
    • 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.
    • regions parameter 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 for standard and intelliignore algorithms, 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.

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

Robot Framework Support

This package includes built-in Robot Framework support. Install the additional dependencies:

$ pip install robotframework robotframework-seleniumlibrary

Then use PercyLibrary in your Robot tests:

*** Settings ***
Library    SeleniumLibrary
Library    percy.robot_library.PercyLibrary

*** Test Cases ***
Homepage Visual Test
    Open Browser    https://example.com    chrome
    Percy Snapshot    Homepage
    Percy Snapshot    Responsive    widths=375,768,1280
    Percy Snapshot    Tagged    labels=regression,v2
    Close Browser

Run with percy exec:

$ percy exec -- robot tests/

Robot Keywords

Percy Snapshot

Percy Snapshot name [widths] [min_height] [percy_css] [scope] [enable_javascript] [enable_layout] [labels] [regions]

  • name (required) - The snapshot name; must be unique to each snapshot
  • widths - Comma-separated responsive widths (e.g., 375,768,1280)
  • min_height - Minimum screenshot height in pixels
  • percy_css - Custom CSS to inject before snapshot
  • scope - CSS selector to limit the snapshot area
  • enable_javascript - Enable JS in Percy rendering (default: not set)
  • enable_layout - Enable layout comparison mode (default: not set)
  • labels - Comma-separated labels/tags (e.g., regression,homepage)
  • test_case - Test case identifier
  • regions - JSON string of region definitions (use Create Percy Region)
  • responsive_snapshot_capture - Enable responsive capture mode

Percy Screenshot (Automate)

Percy Screenshot name [options] [ignore_region_selenium_elements] [consider_region_selenium_elements]

Create Percy Region

Create Percy Region [algorithm] [element_css] [element_xpath] [bounding_box] [padding]

${region}=    Create Percy Region    algorithm=ignore    element_css=.ad-banner
Percy Snapshot    Homepage    regions=${{json.dumps([${region}])}}

Percy Is Running

${running}=    Percy Is Running
Run Keyword If    ${running}    Percy Snapshot    Homepage

Note: Robot Framework support is optional. If robotframework is not installed, the rest of percy-selenium works unchanged.

Metadata

Release files for percy-selenium 2.2.2b0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for percy-selenium 2.2.2b0
File Size Uploaded Provenance Actions
percy_selenium-2.2.2b0.tar.gz 53.9 kB Without provenance Details for percy_selenium-2.2.2b0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for percy-selenium 2.2.2b0
File Interpreter ABI Platform Actions
percy_selenium-2.2.2b0-py3-none-any.whl Python 3 none any Details for percy_selenium-2.2.2b0-py3-none-any.whl

Total release size: 80.9 kB

Release files / percy_selenium-2.2.2b0.tar.gz

Download URL percy_selenium-2.2.2b0.tar.gz
Size 53.9 kB
Tags Source
SHA-256 checksum
How to use checksums
f651409b4c0bb496533cb516c936e54a66fe6095e808a41f43db8ac7da817d14
BLAKE2b-256 checksum
How to use checksums
ca61ec59be9bae6213f0b774a47679f42690314d942ee8723c76195ca425e84b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.15.2

Release files / percy_selenium-2.2.2b0-py3-none-any.whl

Download URL percy_selenium-2.2.2b0-py3-none-any.whl
Size 27.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
8538080717a302a44fb4dce56f431536fb42054e718f9f5db6971af05c49ece0
BLAKE2b-256 checksum
How to use checksums
d77204bcfe4757f9e6695e8b6b4e8a6cbef9956a532b21ff4d6011f9f0738fb9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.15.2

Security for percy-selenium 2.2.2b0

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.

Release history Release notifications | RSS feed

This release
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page