"""Integration test fixtures — detect real ESP32 hardware on the serial port.""" from __future__ import annotations import os import pytest import serial ESP32_PORT = os.environ.get("ESP32_SERIAL_PORT", "/dev/ttyUSB4") def esp32_available() -> bool: """Check if an ESP32 is connected on the expected port.""" try: s = serial.Serial(ESP32_PORT, 115200, timeout=1) s.close() return True except (serial.SerialException, OSError): return False requires_esp32 = pytest.mark.skipif( not esp32_available(), reason=f"ESP32 not found on {ESP32_PORT}", ) @pytest.fixture async def esp32_client(): """Connected SerialClient fixture -- skips if no hardware.""" if not esp32_available(): pytest.skip(f"ESP32 not available on {ESP32_PORT}") from mcbluetooth_esp32.serial_client import SerialClient client = SerialClient(port=ESP32_PORT) await client.connect() yield client await client.disconnect()