[pytest]
# addopts: Default CLI options applied to every pytest run.
# -ra                    → Show extra test summary info for skipped, xfailed, etc.
# --junitxml=...         → Emit JUnit XML for CI systems (machines can parse it).
# --html=...             → Generate a human-friendly HTML report after each run.
# --self-contained-html  → Inline CSS/JS in the HTML report for easy sharing.
# --tb=short             → Short tracebacks to keep logs readable.
# -p conftest_plugin     → Load our custom plugin (conftest_plugin.py) that:
#                          - extracts Title/Description/Requirements/Steps from test docstrings
#                          - adds custom columns to the HTML report
#                          - writes requirements_coverage.json and summary.md in reports/
addopts = -ra --junitxml=reports/junit.xml --html=reports/report.html --self-contained-html --tb=short -p conftest_plugin --cov=ecu_framework --cov-report=term-missing

# markers: Document all custom markers so pytest doesn't warn and so usage is clear.
# Use with: pytest -m "markername"
markers =
    hardware: requires real hardware (BabyLIN device and ECU); excluded by default in mock runs
    babylin: tests that use the BabyLIN interface (may require hardware)
    unit: fast, isolated tests (no hardware, no external I/O)
    req_001: REQ-001 - Mock interface shall echo transmitted frames for local testing
    req_002: REQ-002 - Mock interface shall synthesize deterministic responses for request operations
    req_003: REQ-003 - Mock interface shall support frame filtering by ID
    req_004: REQ-004 - Mock interface shall handle timeout scenarios gracefully
    smoke: Basic functionality validation tests
    boundary: Boundary condition and edge case tests

# testpaths: Where pytest looks for tests by default.
testpaths = tests
