Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

pytest-Jira-xray-plus

An independent Apache-2.0 fork of pytest-jira-xray, based on 6ac1117585da590001cdbc2bf261b78683c19dcb (0.9.4 line). Experimental alpha 0.1.0a1, prepared for community testing. Native per-case Xray integration is unverified; this is not production-ready. No native iteration or dataset support is claimed. Publication status must be checked on PyPI.

Requires Python 3.12+ and pytest 9.1.1–9.x; validated on Python 3.12 / pytest 9.1.1 only. Older inherited compatibility claims have been removed for this initial alpha. Report bugs with synthetic reproducers via GitHub issues.

Start with the two-stage validation kit: one offline command, then an optional experimental sandbox-only native capability probe.

Preserve every executed case offline

pytest --xray-case-report=cases.json now produces a transport-independent JSON report: unique node IDs, effective parameter IDs, phase outcomes and all observed attempts. A failed attempt survives a later successful retry. No Jira markers, credentials or uploads are needed. Parameter values are excluded; --xray-case-values separately opts into potentially sensitive scalar values. IDs themselves can contain data, so use safe explicit IDs or opt into --xray-case-redact-identities for per-run aliases in the offline file.

See report schema and aggregation rules. The report is not Xray import JSON and does not populate Jira's native iteration UI.

Optional comment fallback

--xray-parameter-details retains case details in the legacy Xray Test Run comment. This remains a fallback, separate from the complete local case report. It does not create native Xray iterations or datasets, and it explicitly opts into including scalar values. Without either feature flag, upstream behavior is unchanged.

Upstream already rejects duplicate Jira IDs by default. With --allow-duplicate-ids, it merges results and preserves failure over pass. The baseline probe reproduces loss of individual passing-case detail, not a last-result-wins status bug.

Local use (no Jira required)

Use a fresh virtual environment. Do not install this fork alongside pytest-jira-xray: both intentionally provide pytest_xray and the xray pytest entry point for compatibility.

python -m venv .venv
. .venv/bin/activate
python -m pip install -e . pytest-httpserver pytest-xdist pytest-rerunfailures
pytest examples/synthetic.py --xray-case-report=cases.json

# Optional legacy Xray JSON comment fallback (also offline):
pytest examples/synthetic.py --jira-xray --allow-duplicate-ids \
  --xray-parameter-details --xraypath=xray.json

The example intentionally has one failure followed by a pass. Exit code 1 is expected. Add --cloud for Cloud status strings (PASSED/FAILED); the default remains upstream's Server/DC spelling (PASS/FAIL). When enabling --jira-xray, also use --xraypath for offline evaluation; omitting it enables the inherited upload path. --xray-case-report alone never enables that publisher.

The comment fallback leaves non-parametrized Xray results unchanged. Existing captures, defects and evidences continue to merge. Setup/teardown errors are separate phase records, not extra parameter cases. xdist report serialization is covered by integration tests; parallel completion order is not guaranteed.

Values are opt-in: scalars and node IDs may contain sensitive data. Use synthetic inputs for evaluation. Non-scalar objects receive a placeholder without calling user repr; choose descriptive pytest IDs for those. Indirect fixture values are the input parameters, not the fixture's runtime return values.

Validation

pytest -q
python tools/reproduce.py src --details
python -m build
python -m twine check dist/*

The regression probe can also be run against an unmodified upstream checkout: python tools/reproduce.py /path/to/upstream/src. It deliberately fails when both passing parameter cases are absent from the report, after first proving that a failure survives a later pass. See validation scope. Regression tests block HTTP transport; inherited integration tests use only a localhost fake server with synthetic credentials.

Scope and next decisions

Native iterations, dataset creation, per-iteration evidence, cross-session attempt identity, parameter redaction and comment-size limits need further design. See the unexecuted native validation plan. For the legacy Xray payload only, the original status hierarchy is retained: ABORTED outranks FAIL, so a group containing a skip and a failure is ABORTED, with the failure visible in comments. This prototype does not silently turn that group into PASS, but does not change upstream's semantics to fail-dominant either. Expected failures and unexpected passes retain upstream mappings. Publishing error exit behavior is also inherited. The independent offline report uses the conservative failure-first rules documented in CASE-REPORT.md.

Read API decision notes, release proposal, and NOTICE. Original upstream instructions remain in README.rst.

Metadata

Release files for pytest-jira-xray-plus 0.1.0a1

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-jira-xray-plus 0.1.0a1
File Size Uploaded
pytest_jira_xray_plus-0.1.0a1.tar.gz 49.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pytest-jira-xray-plus 0.1.0a1
File Interpreter ABI Platform
pytest_jira_xray_plus-0.1.0a1-py3-none-any.whl Python 3 none any Details

Total release size: 74.2 kB

Release files / pytest_jira_xray_plus-0.1.0a1.tar.gz

Download URL pytest_jira_xray_plus-0.1.0a1.tar.gz
Size 49.9 kB
Tags Source
SHA-256 checksum
How to use checksums
cd44ad7ba97f37fa51eb218268c454e3c5853844a7bdd2e5dc5c55a6aef5f82d
BLAKE2b-256 checksum
How to use checksums
55f9e96ef75d4a4adec01f0b889cf61c6596dbbd8e91781cba3447a62ef1dd51
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 15, 2026.

Transparency log

Release files / pytest_jira_xray_plus-0.1.0a1-py3-none-any.whl

Download URL pytest_jira_xray_plus-0.1.0a1-py3-none-any.whl
Size 24.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
06153566fca47205bfe2b6145a92eb27f3dd0a1b1949e70eba36b63efb0ee853
BLAKE2b-256 checksum
How to use checksums
b1c1142ac6a1058fa93732e1c2d51fc65b34566ef6acd44fa0e471d389a22157
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 15, 2026.

Transparency log

Release history Release notifications | RSS feed

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

This release

0.1.0a1 This release

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