"""Shared pytest configuration. The GUI suite is headless by default: unless the caller already chose a platform, ``QT_QPA_PLATFORM=offscreen`` is set here, before pytest-qt builds its session ``QApplication``. An explicit caller value is respected. OpenseesPy is a process-global singleton, so a lazy autouse guard wipes the domain after every test. The import is inside the teardown so that ``tests/unit`` never imports the solver. """ from __future__ import annotations import os from collections.abc import Iterator import pytest os.environ.setdefault("QT_QPA_PLATFORM", "offscreen") @pytest.fixture(autouse=True) def _wipe_opensees_domain() -> Iterator[None]: """Wipe the OpenseesPy domain after a test if the solver was imported.""" yield try: from openseespy.opensees import wipe except Exception: # pragma: no cover - solver not installed / import side effects return wipe()