Skip to main content

Open source, self hosted solution for visual testing and managing results of visual testing.

Project description

Python SDK for Visual Regression Tracker

Codacy Badge Codacy Badge

Install

pip install visual-regression-tracker

# or, with playwright integration
pip install visual-regression-tracker[playwright]
python -m playwright install

Usage

Import

from visual_regression_tracker import VisualRegressionTracker, Config, TestRun

Configure connection

As python

config = Config(
    # apiUrl - URL where backend is running 
    apiUrl='http://localhost:4200',

    # project - Project name or ID
    project='Default project',

    # apiKey - User apiKey
    apiKey='tXZVHX0EA4YQM1MGDD',

    # ciBuildId - Current git commit SHA
    ciBuildId='commit_sha',

    # branch - Current git branch 
    branchName='develop',

    # enableSoftAssert - Log errors instead of exceptions
    enableSoftAssert=False,
)

vrt = VisualRegressionTracker(config)

Or, as JSON config file vrt.json

{
    "apiUrl":"http://localhost:4200",
    "project":"Default project",
    "apiKey":"tXZVHX0EA4YQM1MGDD",
    "ciBuildId":"commit_sha",
    "branchName":"develop",
    "enableSoftAssert":false
}
vrt = VisualRegressionTracker()

Or, as environment variables

VRT_APIURL="http://localhost:4200" \
VRT_PROJECT="Default project" \
VRT_APIKEY="tXZVHX0EA4YQM1MGDD" \
VRT_CIBUILDID="commit_sha" \
VRT_BRANCHNAME="develop" \
VRT_ENABLESOFTASSERT=true \
    python
vrt = VisualRegressionTracker()

Setup / Teardown

As context manager:

with vrt:
    ...
    # track test runs
    ...

Without context manager:

vrt.start()
...
# track test runs
...
vrt.stop()

Assert

vrt.track(TestRun(
    # Name to be displayed
    # Required
    name='Image name',

    # Base64 encoded string
    # Required
    imageBase64=image,

    # Allowed mismatch tollerance in %
    # Optional
    # Default: 0%
    diffTollerancePercent=1,

    # Optional
    os='Mac',

    # Optional
    browser='Chrome',

    # Optional
    viewport='800x600',

    # Optional
    device='PC',

    # Array of areas to be ignored
    ignoreAreas=[
        IgnoreArea(
            # X-coordinate relative of left upper corner
            # Required
            x=10,
            # Y-coordinate relative of left upper corner
            # Required
            y=20,
            # Area width in px
            # Required
            width=300,
            # Height width in px
            # Required
            height=400
        )
    ],
))

Integration with Microsoft Playwright

Imports

from playwright import sync_playwright
from visual_regression_tracker import Config, TestRun
from visual_regression_tracker.p import PlaywrightVisualRegressionTracker

Start playwright and navigate to page

playwright = sync_playwright().start()
browserType = playwright.chromium
browser = browserType.launch(headless=False)
page = browser.newPage()
page.goto('https://www.python.org/')

Configure connection to VRT server

vrt = PlaywrightVisualRegressionTracker(browserType, config)

Setup / Tear down

As context manager:

with vrt:
    ...
    # track test runs
    ...

Without context manager:

vrt.start()
...
# track test runs
...
vrt.stop()

Track page

vrt.trackPage(page, imageName[, options])
  • page: Page Playwright page

  • imageName: str name for the taken screenshot image

  • options: PageTrackOptions optional configuration with:

    • diffTollerancePercent: float specify acceptable difference from baseline, between 0-100.

    • ignoreAreas: List[IgnoreArea]

      • x: int X-coordinate relative of left upper corner
      • y: int Y-coordinate relative of left upper corner
      • width: int area width in px
      • height: int area height in px
    • screenshotOptions: PageScreenshotOptions configuration for Playwrights screenshot method

      • full_page: bool When true, takes a screenshot of the full scrollable page, instead of the currently visibvle viewport. Defaults to false.

      • omit_background: bool Hides default white background and allows capturing screenshots with transparency. Defaults to false.

      • clip: FloatRect An object which specifies clipping of the resulting image. Should have the following fields:

        • x: float x-coordinate of top-left corner of clip area
        • y: float y-coordinate of top-left corner of clip area
        • width: float width of clipping area
        • height: float height of clipping area
      • timeout: float Maximum time in milliseconds, defaults to 30 seconds, pass 0 to disable timeout.

    • agent: Agent Additional information to mark baseline across agents that have different:

      • os: str operating system name, like Windows, Mac, etc.
      • device: str device name, PC identifier, mobile identifier etc.
      • viewport: str viewport size.

Track element handle

vrt.trackElementHandle(elementHandle, imageName[, options])
  • elementHandle: ElementHandle Playwright ElementHandle

  • imageName: str name for the taken screenshot image

  • options: ElementHandleTrackOptions optional configuration with:

    • diffTollerancePercent: float specify acceptable difference from baseline, between 0-100.

    • ignoreAreas: List[IgnoreArea]

      • x: int X-coordinate relative of left upper corner
      • y: int Y-coordinate relative of left upper corner
      • width: int area width in px
      • height: int area height in px
    • screenshotOptions: ElementHandleScreenshotOptions configuration for Playwrights screenshot method

      • omit_background: bool Hides default white background and allows capturing screenshots with transparency. Defaults to false.

      • timeout: float Maximum time in milliseconds, defaults to 30 seconds, pass 0 to disable timeout.

    • agent: Agent Additional information to mark baseline across agents that have different:

      • os: str operating system name, like Windows, Mac, etc.
      • device: str device name, PC identifier, mobile identifier etc.
      • viewport: str viewport size.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

visual_regression_tracker-4.8.0.tar.gz (13.7 kB view details)

Uploaded Source

Built Distribution

visual_regression_tracker-4.8.0-py2.py3-none-any.whl (13.5 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file visual_regression_tracker-4.8.0.tar.gz.

File metadata

  • Download URL: visual_regression_tracker-4.8.0.tar.gz
  • Upload date:
  • Size: 13.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/49.2.0.post20200714 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.3

File hashes

Hashes for visual_regression_tracker-4.8.0.tar.gz
Algorithm Hash digest
SHA256 88c2f26adc29ffdac5b104d51c28f193fd815d262534a297feb1aebd0d87b6e5
MD5 5008708d8d589680a8ae18dbc9e2dfea
BLAKE2b-256 808bb5810112886d26d4de9d116e603529345f5d5a8ac3cdd3135ef63788625e

See more details on using hashes here.

Provenance

File details

Details for the file visual_regression_tracker-4.8.0-py2.py3-none-any.whl.

File metadata

  • Download URL: visual_regression_tracker-4.8.0-py2.py3-none-any.whl
  • Upload date:
  • Size: 13.5 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/49.2.0.post20200714 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.3

File hashes

Hashes for visual_regression_tracker-4.8.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 402d648b5e823b95842e29378d914700af3c44188f50b17e37e6c1fef84b3432
MD5 84348fdd6acfc49c10b2b7f55265fa21
BLAKE2b-256 e08d36c9daaadfdac9e287d12e653db8f6564f95a118e37644ded5363b28fdf4

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page