{"id":21406321,"url":"https://github.com/visual-regression-tracker/sdk-python","last_synced_at":"2025-07-14T00:32:23.901Z","repository":{"id":42971109,"uuid":"284615563","full_name":"Visual-Regression-Tracker/sdk-python","owner":"Visual-Regression-Tracker","description":null,"archived":false,"fork":false,"pushed_at":"2023-07-04T09:47:44.000Z","size":72,"stargazers_count":5,"open_issues_count":7,"forks_count":5,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-07-04T17:45:30.764Z","etag":null,"topics":["python"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Visual-Regression-Tracker.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2020-08-03T05:54:58.000Z","updated_at":"2025-04-22T12:47:04.000Z","dependencies_parsed_at":"2023-01-20T02:04:01.026Z","dependency_job_id":null,"html_url":"https://github.com/Visual-Regression-Tracker/sdk-python","commit_stats":{"total_commits":82,"total_committers":2,"mean_commits":41.0,"dds":"0.46341463414634143","last_synced_commit":"42d80da45dcf4af15fd908df45bd332d889ec853"},"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/Visual-Regression-Tracker/sdk-python","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Visual-Regression-Tracker%2Fsdk-python","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Visual-Regression-Tracker%2Fsdk-python/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Visual-Regression-Tracker%2Fsdk-python/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Visual-Regression-Tracker%2Fsdk-python/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Visual-Regression-Tracker","download_url":"https://codeload.github.com/Visual-Regression-Tracker/sdk-python/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Visual-Regression-Tracker%2Fsdk-python/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265227897,"owners_count":23731059,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["python"],"created_at":"2024-11-22T16:38:39.566Z","updated_at":"2025-07-14T00:32:23.855Z","avatar_url":"https://github.com/Visual-Regression-Tracker.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Python SDK for [Visual Regression Tracker](https://github.com/Visual-Regression-Tracker/Visual-Regression-Tracker)\n\n[![Codacy Badge](https://app.codacy.com/project/badge/Grade/0b98190cea064d6f9f1210da653ba37b)](https://www.codacy.com/gh/Visual-Regression-Tracker/sdk-python?utm_source=github.com\u0026amp;utm_medium=referral\u0026amp;utm_content=Visual-Regression-Tracker/sdk-python\u0026amp;utm_campaign=Badge_Grade)\n[![Codacy Badge](https://app.codacy.com/project/badge/Coverage/0b98190cea064d6f9f1210da653ba37b)](https://www.codacy.com/gh/Visual-Regression-Tracker/sdk-python?utm_source=github.com\u0026utm_medium=referral\u0026utm_content=Visual-Regression-Tracker/sdk-python\u0026utm_campaign=Badge_Coverage)\n\n## Install\n\n```python\npip install visual-regression-tracker\n\n# or, with playwright integration\npip install visual-regression-tracker[playwright]\npython -m playwright install\n```\n\n## Usage\n\n### Import\n\n```python\nfrom visual_regression_tracker import VisualRegressionTracker, Config, TestRun\n```\n\n### Configure connection\n\n#### As python\n```python\nconfig = Config(\n    # apiUrl - URL where backend is running \n    apiUrl='http://localhost:4200',\n\n    # project - Project name or ID\n    project='Default project',\n\n    # apiKey - User apiKey\n    apiKey='tXZVHX0EA4YQM1MGDD',\n\n    # ciBuildId - Current git commit SHA\n    ciBuildId='commit_sha',\n\n    # branch - Current git branch \n    branchName='develop',\n\n    # enableSoftAssert - Log errors instead of exceptions\n    enableSoftAssert=False,\n)\n\nvrt = VisualRegressionTracker(config)\n```\n\n#### Or, as JSON config file `vrt.json`\n```json\n{\n    \"apiUrl\":\"http://localhost:4200\",\n    \"project\":\"Default project\",\n    \"apiKey\":\"tXZVHX0EA4YQM1MGDD\",\n    \"ciBuildId\":\"commit_sha\",\n    \"branchName\":\"develop\",\n    \"enableSoftAssert\":false\n}\n```\n```python\nvrt = VisualRegressionTracker()\n```\n\n#### Or, as environment variables\n```sh\nVRT_APIURL=\"http://localhost:4200\" \\\nVRT_PROJECT=\"Default project\" \\\nVRT_APIKEY=\"tXZVHX0EA4YQM1MGDD\" \\\nVRT_CIBUILDID=\"commit_sha\" \\\nVRT_BRANCHNAME=\"develop\" \\\nVRT_ENABLESOFTASSERT=true \\\n    python\n```\n```python\nvrt = VisualRegressionTracker()\n```\n\n### Setup / Teardown\n\nAs context manager:\n```python\nwith vrt:\n    ...\n    # track test runs\n    ...\n```\n\nWithout context manager:\n```python\nvrt.start()\n...\n# track test runs\n...\nvrt.stop()\n```\n\n### Assert\n\n```python\nvrt.track(TestRun(\n    # Name to be displayed\n    # Required\n    name='Image name',\n\n    # Base64 encoded string\n    # Required\n    imageBase64=image,\n\n    # Allowed mismatch tollerance in %\n    # Optional\n    # Default: 0%\n    diffTollerancePercent=1,\n\n    # Optional\n    os='Mac',\n\n    # Optional\n    browser='Chrome',\n\n    # Optional\n    viewport='800x600',\n\n    # Optional\n    device='PC',\n\n    # Array of areas to be ignored\n    ignoreAreas=[\n        IgnoreArea(\n            # X-coordinate relative of left upper corner\n            # Required\n            x=10,\n            # Y-coordinate relative of left upper corner\n            # Required\n            y=20,\n            # Area width in px\n            # Required\n            width=300,\n            # Height width in px\n            # Required\n            height=400\n        )\n    ],\n))\n```\n\n### Integration with Microsoft Playwright\n\n#### Imports\n```python\nfrom playwright import sync_playwright\nfrom visual_regression_tracker import Config, TestRun\nfrom visual_regression_tracker.p import PlaywrightVisualRegressionTracker\n```\n\n#### Start playwright and navigate to page\n```python\nplaywright = sync_playwright().start()\nbrowserType = playwright.chromium\nbrowser = browserType.launch(headless=False)\npage = browser.newPage()\npage.goto('https://www.python.org/')\n```\n\n#### Configure connection to VRT server\n```python\nvrt = PlaywrightVisualRegressionTracker(browserType, config)\n```\n\n#### Setup / Tear down\n\nAs context manager:\n```python\nwith vrt:\n    ...\n    # track test runs\n    ...\n```\n\nWithout context manager:\n```python\nvrt.start()\n...\n# track test runs\n...\nvrt.stop()\n```\n\n#### Track page\n```python\nvrt.trackPage(page, imageName[, options])\n```\n\n- `page: Page` [Playwright page](https://microsoft.github.io/playwright-python/sync_api.html#playwright.sync_api.Page)\n\n- `imageName: str` name for the taken screenshot image\n\n- `options: PageTrackOptions` optional configuration with:\n  - `diffTollerancePercent: float` specify acceptable difference from baseline, between `0-100`.\n\n  - `ignoreAreas: List[IgnoreArea]` \n    - `x: int`  X-coordinate relative of left upper corner\n    - `y: int`  Y-coordinate relative of left upper corner\n    - `width: int`  area width in px\n    - `height: int` area height in px\n\n  - `screenshotOptions: PageScreenshotOptions` configuration for Playwrights `screenshot` method\n    - `full_page: bool`  When true, takes a screenshot of the full scrollable page, instead of the currently visibvle viewport. Defaults to `false`.\n\n    - `omit_background: bool`  Hides default white background and allows capturing screenshots with transparency. Defaults to `false`.\n\n    - `clip: FloatRect` An object which specifies clipping of the resulting image. Should have the following fields:\n\n      - `x: float` x-coordinate of top-left corner of clip area\n      - `y: float` y-coordinate of top-left corner of clip area\n      - `width: float` width of clipping area\n      - `height: float` height of clipping area\n\n    - `timeout: float` Maximum time in milliseconds, defaults to 30 seconds, pass 0 to disable timeout.\n\n  - `agent: Agent` Additional information to mark baseline across agents that have different:\n    - `os: str`  operating system name, like Windows, Mac, etc.\n    - `device: str`  device name, PC identifier, mobile identifier etc.\n    - `viewport: str` viewport size.\n\n#### Track element handle\n```python\nvrt.trackElementHandle(elementHandle, imageName[, options])\n```\n\n- `elementHandle: ElementHandle` [Playwright ElementHandle](https://microsoft.github.io/playwright-python/sync_api.html#playwright.sync_api.ElementHandle)\n\n- `imageName: str` name for the taken screenshot image\n\n- `options: ElementHandleTrackOptions` optional configuration with:\n  - `diffTollerancePercent: float` specify acceptable difference from baseline, between `0-100`.\n\n  - `ignoreAreas: List[IgnoreArea]` \n    - `x: int`  X-coordinate relative of left upper corner\n    - `y: int`  Y-coordinate relative of left upper corner\n    - `width: int`  area width in px\n    - `height: int` area height in px\n\n  - `screenshotOptions: ElementHandleScreenshotOptions` configuration for Playwrights `screenshot` method\n\n    - `omit_background: bool`  Hides default white background and allows capturing screenshots with transparency. Defaults to `false`.\n\n    - `timeout: float` Maximum time in milliseconds, defaults to 30 seconds, pass 0 to disable timeout.\n\n  - `agent: Agent` Additional information to mark baseline across agents that have different:\n    - `os: str`  operating system name, like Windows, Mac, etc.\n    - `device: str`  device name, PC identifier, mobile identifier etc.\n    - `viewport: str` viewport size.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvisual-regression-tracker%2Fsdk-python","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvisual-regression-tracker%2Fsdk-python","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvisual-regression-tracker%2Fsdk-python/lists"}