Skip to main content

Pytest plugin that auto-reports test results with screenshots to VisionSpec

Project description

pytest-visionspec

Pytest plugin that auto-reports test results with screenshots to VisionSpec.

Install

pip install pytest-visionspec

Setup

Set two environment variables:

VS_API_KEY=vs_your_project_api_key
VS_API_URL=https://visionspec-dev.helpfulhuman.xyz

Usage

Tag tests with @pytest.mark.vs("journey-id"):

@pytest.mark.vs("login-happy-path")
def test_login(page):
    page.goto("/login")
    page.fill("[name=email]", "user@example.com")
    page.click("button[type=submit]")
    assert page.url == "/dashboard"

The plugin automatically:

  1. Captures a Playwright screenshot after each test
  2. Uploads it to VisionSpec storage
  3. Posts the result (pass/fail + screenshot URL) to VisionSpec

Markers

  • @pytest.mark.vs("journey-id") — link test to a VisionSpec V1 journey spec
  • @pytest.mark.vs_surface("mobile") — override the reported surface (default: desktop)
  • @pytest.mark.vs_v2("spec-slug", jtbd="jtbd-slug") — link test to a VisionSpec V2 spec (chapters model). Results are buffered and POSTed in one batch at session end to /api/v2/results.

V2 usage (chapters model)

For V2 projects, tag tests with vs_v2 — no screenshot capture, batched reporting:

@pytest.mark.vs_v2("verdict-returns-200", jtbd="get-verdict")
def test_verdict():
    r = client.get("/verdict")
    assert r.status_code == 200

Get your project's VS_API_KEY via the V2 MCP tool get_project(project) (returns test_reporting.env_vars) or from the "CI / Test runner" tab in V2 project settings.

Results POST once per pytest session. Coverage in V2 get_doc's summary field then shows tested / passing / failing counts per spec.

Git SHA auto-detection (V2)

Each vs_v2 result is tagged with the SUT's git SHA so the vs2 dashboard can group results by build ("which SHA is safe to ship?").

Detection is automatic and deterministic:

  1. git rev-parse HEAD — works locally and in any CI that checks out the .git directory (GitHub Actions does this by default).
  2. GITHUB_SHA — GH Actions sets this natively.
  3. Omitted — if neither works, results are recorded without a revision tag. The dashboard's build-scoped views will not include them.

No user-configurable env var (like VS_GIT_SHA) is supported — the git SHA is a single source of truth (the SUT itself). Setting it via env var risks tagging results with the wrong SHA.

Page fixture detection

By default, the plugin looks for a page fixture. Configure custom fixture names in pyproject.toml:

[tool.pytest.ini_options]
vs_page_fixtures = ["v2app", "v1app", "page"]

The plugin checks each name in order and uses the first one it finds.

Environment variables

Variable Required Description
VS_API_KEY Yes Project API key from VisionSpec
VS_API_URL Yes VisionSpec server URL
VS_SUT_VERSION No Version of the system under test
VS_VERBOSE No Set to 1 for debug logging
VS_VERSION No App version metadata
VS_FRONTEND_VERSION No Frontend version metadata
VS_BACKEND_VERSION No Backend version metadata

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pytest_visionspec-0.4.0.tar.gz (7.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pytest_visionspec-0.4.0-py3-none-any.whl (7.6 kB view details)

Uploaded Python 3

File details

Details for the file pytest_visionspec-0.4.0.tar.gz.

File metadata

  • Download URL: pytest_visionspec-0.4.0.tar.gz
  • Upload date:
  • Size: 7.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.12

File hashes

Hashes for pytest_visionspec-0.4.0.tar.gz
Algorithm Hash digest
SHA256 2945a9fa22f0a8d5af01ea48c9df614e1087337457dfa8b2a9bd351c50d8434e
MD5 7b21d2f780a434d572d16e214264b1c7
BLAKE2b-256 6a47bf35f485d192b2ecef2a89e5bca143eb984735d4d7c73a9c0c4c0a616c4c

See more details on using hashes here.

File details

Details for the file pytest_visionspec-0.4.0-py3-none-any.whl.

File metadata

File hashes

Hashes for pytest_visionspec-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e4afe465dbcb0206ae0517ab076509d61dedadb61bacf7ee0d89e78780507a3a
MD5 c3b2902c5ae4c5719d175fc5e3d4a21a
BLAKE2b-256 0e0abb058d6a9ec3efad7f5f68a28c75d868c6d0d1c69d50d26f52a5abeca032

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page