Python 88.3%
TypeScript 7.6%
Shell 4.1%
1"""Shared pytest fixtures and cost gates for the API Atlas smoke tests.23Run: pytest -q (cheap smoke tests only)4 RUN_EXPENSIVE_TESTS=true pytest -q tests/openai5Flags (all default false): RUN_EXPENSIVE_TESTS RUN_REALTIME_TESTS RUN_IMAGE_TESTS RUN_VIDEO_TESTS6 RUN_ADMIN_TESTS RUN_AUDIO_TESTS RUN_BATCH_TESTS7Keys are read from .env via scripts/live.py (never printed).8"""9from __future__ import annotations1011import os12import sys13from pathlib import Path1415import pytest1617ROOT = Path(__file__).resolve().parent.parent18sys.path.insert(0, str(ROOT))1920from scripts import live # noqa: E402 (loads .env)2122FLAGS = ["RUN_EXPENSIVE_TESTS", "RUN_REALTIME_TESTS", "RUN_IMAGE_TESTS", "RUN_VIDEO_TESTS",23 "RUN_ADMIN_TESTS", "RUN_AUDIO_TESTS", "RUN_BATCH_TESTS"]242526def flag(name: str) -> bool:27 return os.environ.get(name, "false").strip().lower() in ("1", "true", "yes", "on")282930def pytest_configure(config: pytest.Config) -> None:31 for f in FLAGS:32 config.addinivalue_line("markers", f"{f.lower()}: requires {f}=true")333435def pytest_collection_modifyitems(config: pytest.Config, items: list[pytest.Item]) -> None:36 for item in items:37 for f in FLAGS:38 if item.get_closest_marker(f.lower()) and not flag(f):39 item.add_marker(pytest.mark.skip(reason=f"{f} is not enabled"))404142@pytest.fixture(scope="session")43def openai():44 if not os.environ.get("OPENAI_API_KEY"):45 pytest.skip("OPENAI_API_KEY not set")46 return live.openai_request474849@pytest.fixture(scope="session")50def anthropic():51 if not os.environ.get("ANTHROPIC_API_KEY"):52 pytest.skip("ANTHROPIC_API_KEY not set")53 return live.anthropic_request545556@pytest.fixture(scope="session")57def xai():58 if not os.environ.get("XAI_API_KEY"):59 pytest.skip("XAI_API_KEY not set")60 return live.xai_request616263@pytest.fixture(scope="session")64def gemini():65 if not os.environ.get("GEMINI_API_KEY"):66 pytest.skip("GEMINI_API_KEY not set")67 return live.gemini_request686970# Cheapest models used by default in tests (override with env for future runs)71OPENAI_CHEAP_MODEL = os.environ.get("ATLAS_OPENAI_CHEAP_MODEL", "gpt-5.4-nano")72OPENAI_CHEAP_CHAT_MODEL = os.environ.get("ATLAS_OPENAI_CHEAP_CHAT_MODEL", "gpt-4.1-nano")73ANTHROPIC_CHEAP_MODEL = os.environ.get("ATLAS_ANTHROPIC_CHEAP_MODEL", "claude-haiku-4-5-20251001")74XAI_CHEAP_MODEL = os.environ.get("ATLAS_XAI_CHEAP_MODEL", "grok-4.3")75GEMINI_CHEAP_MODEL = os.environ.get("ATLAS_GEMINI_CHEAP_MODEL", "gemini-3.5-flash-lite")767778@pytest.fixture(scope="session")79def models() -> dict[str, str]:80 return {"openai": OPENAI_CHEAP_MODEL, "openai_chat": OPENAI_CHEAP_CHAT_MODEL, "anthropic": ANTHROPIC_CHEAP_MODEL,81 "xai": XAI_CHEAP_MODEL, "gemini": GEMINI_CHEAP_MODEL}82