"""Keep registered use-case coverage present before any marker deselection.""" import pytest from tests.usecases.registry import load_cases, validate_coverage def pytest_addoption(parser): parser.addoption("--verify-usecases", action="store_true", help="Fail if established use cases lose registered test coverage") @pytest.hookimpl(tryfirst=True) def pytest_collection_modifyitems(config, items): if not config.getoption("--verify-usecases"): return collected = {} for item in items: collected[item.nodeid] = { "usecases": {m.args[0] for m in item.iter_markers("usecase") if m.args}, "browser": item.get_closest_marker("browser") is not None, "disabled": any(item.get_closest_marker(m) for m in ("skip", "skipif", "xfail")), } try: validate_coverage(load_cases(), collected) except (KeyError, ValueError, TypeError, OSError) as exc: raise pytest.UsageError(f"Use-case regression contract failed: {exc}") from exc