"""Testy zachowania przycisku nagrywania z www/script.js.

Logika siedzi w JavaScripcie, więc właściwe sprawdzenie robi harness.js
w jsdom. Ten moduł uruchamia go raz i wystawia każdy przypadek jako osobny
test pytest, żeby wyniki czytało się jak zwykłe testy pythonowe.

Uruchomienie:
    pytest tests/www                 # wymaga pytest
    python tests/www/test_record_button.py   # bez pytest, sam raport

Przygotowanie (raz):
    cd tests/www && npm install
"""

from __future__ import annotations

import sys
from pathlib import Path

sys.path.insert(0, str(Path(__file__).resolve().parent))

from harness_runner import (            # noqa: E402
    assert_case,
    case_ids,
    missing_requirement,
    report,
    run_harness,
)

try:
    import pytest
except ModuleNotFoundError:      # pozwala odpalić plik bezpośrednio
    pytest = None

HARNESS = "harness.js"


if pytest is not None:
    _REASON = missing_requirement()

    @pytest.mark.skipif(_REASON is not None, reason=str(_REASON))
    def test_harness_runs() -> None:
        """Sam harness musi się uruchomić — inaczej reszta nic nie znaczy."""
        assert run_harness(HARNESS), "harness nie zwrócił wyników"

    @pytest.mark.skipif(_REASON is not None, reason=str(_REASON))
    @pytest.mark.parametrize("case_id", case_ids(HARNESS))
    def test_record_button(case_id: str) -> None:
        assert_case(HARNESS, case_id)


if __name__ == "__main__":
    sys.exit(report(HARNESS))
