"""Shared fixtures for svrnty-vision test suite.""" from __future__ import annotations import base64 import io import pytest from fastapi.testclient import TestClient from PIL import Image from svrnty_vision.server import app @pytest.fixture(scope="session") def client() -> TestClient: return TestClient(app) @pytest.fixture(scope="session") def red_png_b64() -> str: """100×100 solid-red PNG encoded as base64 — minimal valid image for all endpoints.""" img = Image.new("RGB", (100, 100), color=(220, 50, 50)) buf = io.BytesIO() img.save(buf, format="PNG") return base64.b64encode(buf.getvalue()).decode("ascii") @pytest.fixture(scope="session") def gradient_png_b64() -> str: """200×200 RGB gradient — more realistic for VLM + palette tests.""" img = Image.new("RGB", (200, 200)) for x in range(200): for y in range(200): img.putpixel((x, y), (x, y, 128)) buf = io.BytesIO() img.save(buf, format="PNG") return base64.b64encode(buf.getvalue()).decode("ascii") def pytest_configure(config: pytest.Config) -> None: config.addinivalue_line( "markers", "integration: live service tests — require Tailscale + running Spark hosts. " "Run with: pytest -m integration", )