Skip to main content

version codecov docs

pytest-playwright-enhanced

pytest-playwright-enhanced is a batteries included pytest plugin for the playwright python bindings that offers extended functionality with a focus on removing boilerplate code for projects that wish to test modern web applications and APIs. pytest-playwright-enhanced plans to offer the following:

  • Automatic, browser management and installation if required (TBD)
  • Improved, human readable APIs that build on top of playwrights API.
  • Improved artifacting and debugability.
  • Asynchronous support.
  • Custom hooks to allow you to plugin and modify behaviour at runtime.
  • Much More...

pytest-playwright-enhanced is currently implementing core plugin functionality, the main enhancements will follow shortly.

pytest-playwright-enhanced right now treats browsers, contexts and pages at a function level. This allows easily per test overrides at the small cost of slightly less performance creating browsers, for now it is worth it as it offers much more flexibility and user defined configurations.


Quick Start

Quickly get running by doing the following:

  • pip install pytest-playwright-enhanced
  • pytest <posargs> --acquire-binaries=with-deps

Overriding Browser and Context args

There are two methods for overwriting both browser and context arguments at runtime. These are:

import pytest
import typing

@pytest.mark.browser_kwargs(env={}, timeout=15)
@pytest.mark.context_kwargs()
def test_my_app(pw_page):
    # This page will have a preconfigured browser and context from the 
    # marker arguments.
    ...


def my_function(config: pytest.Config) -> dict[typing.Any, typing.Any]:
    return {
        # custom options.
        # inspect CLI if you need via config.
    }

# if you need to calculate the args at runtime, later use:
@pytest.mark.browser_kwargs(callback=my_function)
@pytest.mark.context_kwargs(callback=my_function)
def test_my_app(pw_page):
    # internal machinery will invoke `my_function_that_returns_kwargs` 
    # later to get overrides.  These are merged sensible with CLI and 
    # other PWE defaults.
    ...

Alternatively, if you need more dynamicism, overwrite the fixture and take full control:

import pytest
import typing

@pytest.fixture(scope="function")
def pw_browser_contexts(config: pytest.Config) -> dict[typing.Any, typing.Any]:
    return {
        # Any overrides here,
        # ...
    }

Fixtures


  • pw_playwright - At present this returns the sync Playwright instance.
  • pw_multi_browser - Automatically run a test on chromium, firefox and webkit.
  • pw_headed - Returns if the browser is running headlessly or not.
  • pw_slow_mo - Returns the currently throttle in milliseconds, defaults to 0.
  • pw_is_chromium - Returns if the current browser is chromium.
  • pw_is_webkit - Returns if the current browser is webkit.
  • pw_is_firefox - Returns if the current browser is firefox.
  • pw_root_url - Returns the base url auto loaded by Page objects.
  • pw_browser - Returns the current Browser instance.
  • pw_browser_engine - A string representing the type of browser for this test.
  • pw_context - A playwright sync Context object, useful for multi page scenarios.
  • pw_context_kwargs - An overridable fixture to control arguments to playwright Context instances.
  • pw_page - Returns a new Page instance.
  • pw_is_debugging - Returns if playwright will be using PW_DEBUG mode.
  • pw_browser_kwargs - An overridable fixture to control arguments to playwright `Browser nstances.

Hooks

pytest_playwright_acquire_binaries: Hook in and customise binary acquisition at runtime. pytest_playwright_is_debugging: User defined behaviour for detecting if an IDE is debugging. pytest_playwright_browser_env: Control the environment passed on to playwright browser instances. pytest_playwright_configure_proxy: Return a ProxySettings object in your own hooks to control proxy settings.


Markers

  • @pytest.mark.only_on_browsers - Only run on a subset of browsers when using the pw_multi_browser fixture.
  • @pytest.mark.context_kwargs - Per test level overrides to the context object.
  • @pytest.mark.browser_kwargs - Per test level overrides to the browser object.

Metadata

Release files for pytest-playwright-enhanced 0.2.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 pytest-playwright-enhanced 0.2.0
File Size Uploaded
pytest_playwright_enhanced-0.2.0.tar.gz 19.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pytest-playwright-enhanced 0.2.0
File Interpreter ABI Platform
pytest_playwright_enhanced-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 41.5 kB

Release files / pytest_playwright_enhanced-0.2.0.tar.gz

Download URL pytest_playwright_enhanced-0.2.0.tar.gz
Size 19.4 kB
Tags Source
SHA-256 checksum
How to use checksums
36ae84be2762b9c0b196a89bb767116b4096ac1c779e283f8fef5172f89512c8
BLAKE2b-256 checksum
How to use checksums
9a5e7ca9415732471779cab39ffe9f3019ed2142cdd29cb629e154737d2ec2dd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.2 CPython/3.12.2 Linux/6.5.0-1016-azure

Release files / pytest_playwright_enhanced-0.2.0-py3-none-any.whl

Download URL pytest_playwright_enhanced-0.2.0-py3-none-any.whl
Size 22.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ce644b9e56fc34d1b9606c04e3c570cb3983443581ffd8e49ec0d8fadc30e36a
BLAKE2b-256 checksum
How to use checksums
2d91b4c4837bbbccf3ea230442a1bb79a46f424c7b689b36070c4bae84a2f263
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.2 CPython/3.12.2 Linux/6.5.0-1016-azure

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files

0.1.9

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

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