From 2f8e041a7cb26011df9dfd3d4c3ac04360ff3b58 Mon Sep 17 00:00:00 2001 From: amit3200 Date: Fri, 14 Jun 2024 18:12:35 +0530 Subject: [PATCH] Updating README --- README.md | 64 +++++++++++++++++++++++++++++++++++++++++------ percy/__init__.py | 4 +-- 2 files changed, 59 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index e564137..40b5c57 100644 --- a/README.md +++ b/README.md @@ -24,11 +24,13 @@ This is an example test using the `percy_snapshot` function. ``` python from percy import percy_snapshot -browser = webdriver.Firefox() -browser.get('http://example.com') -​ -# take a snapshot -percy_snapshot(browser, 'Python example') +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: @@ -54,7 +56,7 @@ $ percy exec -- [python test command] ## Configuration -`percy_snapshot(driver, name[, **kwargs])` +`percy_snapshot(page, name[, **kwargs])` - `page` (**required**) - A playwright page instance - `name` (**required**) - The snapshot name; must be unique to each snapshot @@ -81,10 +83,58 @@ desired_cap = { } with sync_playwright() as playwright: - desired_caps = {} 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 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.9-beta.0+] + - `full_page` - Boolean value by default it falls back to `false`, Takes full page screenshot [From CLI v1.28.9-beta.0+] + - `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. + - `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. + - `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. + + +### Creating Percy on automate build +Note: Automate Percy Token starts with `auto` keyword. The command can be triggered using `exec` keyword. + +```sh-session +$ 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](https://docs.percy.io/docs/integrate-functional-testing-with-visual-testing) diff --git a/percy/__init__.py b/percy/__init__.py index 71b0e35..cd25f51 100644 --- a/percy/__init__.py +++ b/percy/__init__.py @@ -6,7 +6,7 @@ from percy.screenshot import percy_snapshot except ImportError: - def percy_snapshot(driver, *a, **kw): + def percy_snapshot(page, *a, **kw): raise ModuleNotFoundError( "[percy] `percy-playwright-python` package is not installed, " "please install it to use percy_snapshot command" @@ -15,7 +15,7 @@ def percy_snapshot(driver, *a, **kw): # for better backwards compatibility def percySnapshot(browser, *a, **kw): - return percy_snapshot(driver=browser, *a, **kw) + return percy_snapshot(page=browser, *a, **kw) def percy_screenshot(page, *a, **kw):