Skip to content

RedHatQE/widgetastic.patternfly5

Repository files navigation

widgetastic.patternfly5

Python Versions PyPI version github actions pre: black

Overview

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.

Installation

# 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 .

Supported Components

Components

Charts:

Patterns

Development

Contribution guide

# 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

Testing

The library includes comprehensive tests that run against the official PatternFly documentation pages:

Tests are powered by Playwright, providing fast, reliable, and modern browser automation.

Prerequisites

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

Running Tests

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)

Debugging Tests

When debugging, it's helpful to:

  1. Run tests in headed mode (without --headless) to see browser interactions
  2. Use --slowmo to slow down actions and observe what's happening
  3. Run a single test file or test function instead of the entire suite
  4. 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

About

No description or website provided.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 14

Languages