Skip to main content

Vedro Screenshot Matcher

The screenshot_matcher (a.k.a. Machu Picchu) 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.

rn_image_picker_lib_temp_96855992-842a-40ec-8d1e-bc81f029e72a

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

Metadata

Release files for machu-picchu 0.1.0

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

Source distribution (sdist)

Source distribution for machu-picchu 0.1.0
File Size Uploaded
machu-picchu-0.1.0.tar.gz 5.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for machu-picchu 0.1.0
File Interpreter ABI Platform
machu_picchu-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 12.9 kB

Release files / machu-picchu-0.1.0.tar.gz

Download URL machu-picchu-0.1.0.tar.gz
Size 5.8 kB
Tags Source
SHA-256 checksum
How to use checksums
bdeee360b1e37fe3cb10170736dc75fa3b71b2e3e2b92b5333195fa28b229c86
BLAKE2b-256 checksum
How to use checksums
127d60e08d61c39ff5eecb86e5cba040672d2e8827cfb3477b72f78609d73a29
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.10.13

Release files / machu_picchu-0.1.0-py3-none-any.whl

Download URL machu_picchu-0.1.0-py3-none-any.whl
Size 7.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ac0baaea3bbd0597ab6dc7ca48bc0dea039f492bae2c460dbfb238eac39f76cf
BLAKE2b-256 checksum
How to use checksums
c4e45b493812cc6f8dc0d8a2e885ee37d0a7d132e887304abbba4289a6caa8d2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.10.13

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

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