# 测试运行器：依赖由项目 pyproject.toml 与 uv.lock 决定。
# 构建上下文为项目根目录；源码由 Compose 挂载，不复制秘密配置到镜像。
FROM python:3.12-slim-bookworm

LABEL maintainer="DF QA Team"
LABEL description="DF Test Framework 测试运行环境"

WORKDIR /app
ENV PYTHONUNBUFFERED=1 \
    PYTHONDONTWRITEBYTECODE=1 \
    PIP_NO_CACHE_DIR=1 \
    UV_PROJECT_ENVIRONMENT=/opt/venv \
    PATH="/opt/venv/bin:$PATH"

RUN pip install --no-cache-dir uv
COPY pyproject.toml uv.lock ./
RUN uv sync --locked --no-install-project

# 只在项目声明了 UI extra 时安装浏览器；API 项目不强制引入 Playwright。
RUN if /opt/venv/bin/python -c "import playwright" >/dev/null 2>&1; then \
      /opt/venv/bin/python -m playwright install --with-deps chromium; \
    fi

CMD ["pytest", "--version"]
