This library offers Widgetastic Widgets for PatternFly v5/v6, serving as an extended iteration of widgetastic.patternfly4.
Built on top of widgetastic.core with Playwright as the browser automation engine, this library provides a robust and modern approach to UI testing for PatternFly components.
# Install from PyPI
pip install widgetastic.patternfly5
# Or install from source
git clone https://github.com/RedHatQE/widgetastic.patternfly5.git
cd widgetastic.patternfly5
pip install -e .
- alert
- breadcrumb
- button
- card
- chip
- clipboard-copy
- date and time
- description-list
- drawer
- dual-list-selector
- expandable-section
- forms
- menus
- modal
- navigation
- pagination
- popover
- progress
- slider
- switch
- table
- tabs
- title
# clone the repo
git clone https://github.com/RedHatQE/widgetastic.patternfly5.git
cd widgetastic.patternfly5
# create a virtual environment
python3 -m venv .venv_pfy5
source .venv_pfy5/bin/activate
# update pip and its friends
pip install -U pip setuptools wheel
# install the package in editable mode
pip install -e .[dev]
# if you use zsh, pip install will fail. Use this instead:
pip install -e ".[dev]"
# install Playwright browsers for testing
playwright install chromium firefox
playwright install-deps
# setup pre-commit hooks
pre-commit install
The library includes comprehensive tests that run against the official PatternFly documentation pages:
- PatternFly v6 (latest)
- PatternFly v5 (archived)
Tests are powered by Playwright, providing fast, reliable, and modern browser automation.
Before running tests, install Playwright browsers:
# Install Playwright (included in dev dependencies)
pip install -e ".[dev]"
# Install Playwright browsers
playwright install chromium firefox
# Install system dependencies (if needed)
playwright install-deps
Basic test execution:
# Run tests with default settings (chromium, v6, headed mode)
pytest -v
# Run tests against PatternFly v5
pytest -v --pf-version v5
# Run tests with Firefox
pytest -v --browser firefox
# Run tests in headless mode (no browser window)
pytest -v --headless
Advanced options:
# Run tests in parallel (speeds up execution)
pytest -v -n 3 --browser chromium --pf-version v6
# Run with slow motion for debugging (100ms delay between actions)
pytest -v --slowmo 100
# Run specific test file
pytest testing/components/test_button.py -v --browser firefox
# Run tests with coverage
pytest -v --cov=./ --cov-report=html
Available test options:
Option | Choices | Default | Description |
---|---|---|---|
--browser |
chromium , firefox |
chromium |
Browser to use for testing |
--pf-version |
v5 , v6 |
v6 |
PatternFly version to test against |
--headless |
flag | False |
Run in headless mode (no UI) |
--slowmo |
milliseconds | 0 |
Slow down operations for debugging |
-n |
number | 1 |
Number of parallel workers (requires pytest-xdist) |
When debugging, it's helpful to:
- Run tests in headed mode (without
--headless
) to see browser interactions - Use
--slowmo
to slow down actions and observe what's happening - Run a single test file or test function instead of the entire suite
- Reduce parallelism (
-n 1
or remove-n
flag) to avoid race conditions
# Debug specific test with visible browser and slow execution
pytest testing/components/test_modal.py::test_modal_basic -v --slowmo 1000