\chapter{Herramientas profesionales y CI} \label{ch:herramientas} \section{Stack de tooling} \begin{table}[h] \centering \begin{tabular}{@{}llp{5.5cm}@{}} \toprule \textbf{Herramienta} & \textbf{Rol} & \textbf{D\'onde} \\ \midrule pytest & Unit/integraci\'on Python & bots, bot-descarga, extraction \\ Vitest & Unit frontend & desktop\_app \\ go test & Unit count-api & services-count-... \\ k6 & Carga / estr\'es & \texttt{docs/plan\_pruebas/scripts} \\ Docker Compose & Stack + smoke & ra\'iz del repo \\ latexmk & Compilar este plan & \texttt{docs/plan\_pruebas} \\ respx / httpx mock & Fake HTTP LLM/API & CI Python \\ LocalStack / moto & MinIO local & Integraci\'on \\ \bottomrule \end{tabular} \caption{Herramientas profesionales adoptadas.} \end{table} \section{Pipeline CI objetivo (no implementado en esta entrega)} Orden recomendado por PR: \begin{enumerate} \item \texttt{pytest} bots + bot-descarga. \item \texttt{npm test} desktop. \item \texttt{go test ./...} count-api. \item \texttt{docker compose up} + curl smoke \texttt{/health/live}. \item Nightly: k6 ST-GW-01 y ST-BOT-01 en staging. \end{enumerate} \section{Compilar este documento} \begin{lstlisting}[language=bash,caption={latexmk}] cd docs/plan_pruebas latexmk -pdf main.tex \end{lstlisting} \section{Prioridad de implementaci\'on de tests (ROI)} \begin{enumerate} \item FastAPI TestClient bot-descarga (claim, cancel, auth, offline). \item Integraci\'on gateway $\rightarrow$ bot-descarga $\rightarrow$ PG $\rightarrow$ MinIO local. \item Estr\'es heartbeats + events (patr\'on de carga real del bot). \item Estr\'es count-api (riesgo OOM). \item CI m\'inimo para no perder cobertura. \end{enumerate}