A pytest plugin for playwright python
Project description
pytest-playwright-enhanced
[!CAUTION]
pytest-playwright-enhancedis in the alpha stage.
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.
Asynchronoussupport.- Custom
hooksto 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-enhancedpytest <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,
# ...
}
[!CAUTION] If you chose the fixture route, you are responsible for all details, PWE defaults will not be included. Using the markers, a deferred function can be used to calculate args at runtime!
Fixtures
pw_playwright- At present this returns the syncPlaywrightinstance.pw_multi_browser- Automatically run a test onchromium,firefoxandwebkit.pw_headed- Returns if the browser is running headlessly or not.pw_slow_mo- Returns the currently throttle in milliseconds, defaults to0.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 byPageobjects.pw_browser- Returns the currentBrowserinstance.pw_browser_engine- A string representing the type of browser for this test.pw_context- A playwright syncContextobject, useful for multi page scenarios.pw_context_kwargs- An overridable fixture to control arguments to playwrightContextinstances.pw_page- Returns a newPageinstance.pw_is_debugging- Returns if playwright will be usingPW_DEBUGmode.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 thepw_multi_browserfixture.@pytest.mark.context_kwargs- Per test level overrides to thecontextobject.@pytest.mark.browser_kwargs- Per test level overrides to thebrowserobject.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pytest_playwright_enhanced-0.2.0.tar.gz.
File metadata
- Download URL: pytest_playwright_enhanced-0.2.0.tar.gz
- Upload date:
- Size: 19.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.2 CPython/3.12.2 Linux/6.5.0-1016-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
36ae84be2762b9c0b196a89bb767116b4096ac1c779e283f8fef5172f89512c8
|
|
| MD5 |
4771fb517f19094e83a281996f575ec5
|
|
| BLAKE2b-256 |
9a5e7ca9415732471779cab39ffe9f3019ed2142cdd29cb629e154737d2ec2dd
|
File details
Details for the file pytest_playwright_enhanced-0.2.0-py3-none-any.whl.
File metadata
- Download URL: pytest_playwright_enhanced-0.2.0-py3-none-any.whl
- Upload date:
- Size: 22.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.2 CPython/3.12.2 Linux/6.5.0-1016-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ce644b9e56fc34d1b9606c04e3c570cb3983443581ffd8e49ec0d8fadc30e36a
|
|
| MD5 |
4da3761d4fe652cdcd1bbcb36cdc22fc
|
|
| BLAKE2b-256 |
2d91b4c4837bbbccf3ea230442a1bb79a46f424c7b689b36070c4bae84a2f263
|