Skip to main content

Playwright plugin for matching screenshots with Vedro Testing Framework

Project description

Vedro Screenshot Matcher

The screenshot_matcher is a powerful tool designed for developers and testers to visually compare two versions of an application. By contrasting a production version (known as "golden") with a development version (referred to as "test"), spotting visual inconsistencies becomes more straightforward.

Integrated seamlessly with the vedro testing framework, it aids in performing visual regression tests with ease.

Installation

  1. Install the Plugin

     vedro plugin install vedro_screenshot_matcher
    
  2. Configure the Plugin In your vedro.cfg.py:

     import vedro
     import screenshot_matcher
     
     class Config(vedro.Config):
         class Plugins(vedro.Config.Plugins):
             class ScreenshotMatcher(screenshot_matcher.ScreenshotMatcher):
                 test_app_url = "http://localhost"
                 golden_app_url = "http://golden-app.com"
    

Make sure to provide the correct test_app_url and golden_app_url in the configuration.

Quick Start

Suppose you have a basic test as below:

import vedro
from contexts import opened_index_page

class Scenario(vedro.Scenario):
    subject = "share page"

    def given_opened_page(self):
        self.page = opened_index_page()

    def when_user_click_on_share(self):
        self.page.get_by_text("Share").click()

    def then_it_should_show_share_popup(self):
        share_popup = self.page.locator(".share-popup .title")
        assert share_popup.text_content() == "Share Page"

The context that opens the index page:

import vedro
import playwright
from os import environ

@vedro.context
async def opened_index_page():
    browser = await playwright.chromium.launch()
    page = await browser.new_page()

    await page.goto(environ["APP_URL"])

    return page

To implement a screenshot assertion:

  1. Add the @screenshot_asserts decorator at the beginning of the scenario

  2. Include the match_screenshot assertion where needed import vedro from screenshot_matcher import screenshot_asserts, match_screenshot

    @screenshot_asserts() # Step 1: Add decorator class Scenario(vedro.Scenario): subject = "share page"

     def given_opened_page(self):
         self.page = opened_index_page()
    
     def when_user_click_on_share(self):
         self.page.get_by_text("Share").click()
    
     def then_it_should_show_share_popup(self):
         share_popup = self.page.locator(".share-popup .title")
         assert share_popup.text_content() == "Share Page"
         assert match_screenshot(share_popup)  # Step 2: Add screenshot assertion
    

By following these steps, the plugin will:

  1. Execute the test using APP_URL set to your golden_app_url
  2. Capture a screenshot, storing it as the expected outcome
  3. Run the test again with APP_URL set to your test_app_url
  4. Finally, it will compare the new screenshot with the previously saved one

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

vedro-screenshot-matcher-0.1.0.tar.gz (7.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

vedro_screenshot_matcher-0.1.0-py3-none-any.whl (7.3 kB view details)

Uploaded Python 3

File details

Details for the file vedro-screenshot-matcher-0.1.0.tar.gz.

File metadata

File hashes

Hashes for vedro-screenshot-matcher-0.1.0.tar.gz
Algorithm Hash digest
SHA256 67d5ecf292729fef9e0b943e7de366478bc163af336a865e1ffe62b29397914a
MD5 1a8a3bdb6a88fb4cce74f67e87a73c5f
BLAKE2b-256 a46157466e759d3c35311775a1424154e523d566ec473783a9dc29a0091bf9b9

See more details on using hashes here.

File details

Details for the file vedro_screenshot_matcher-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for vedro_screenshot_matcher-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9b16fb3f6fe65b12b8356b3c667c840e2174c4c9406e9909aaf89b8c86effd31
MD5 e688bd5837630854ccc4dba62196e960
BLAKE2b-256 5aaabadab16e06839ad6c04e8a50efbf0c1467e37b988a3260f31836fbd108ab

See more details on using hashes here.

Supported by

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