Comandos

ComandoDescripción
windup initCrea windup.config.ts, .windup/ (gitignored) y un escenario de ejemplo
windup new "<instruction>" [--id x] [--force] [--depends-on ids] [--validate]Genera un escenario a partir de una instrucción imprecisa; --validate lo ejecuta y refina hasta que pasa (≤3 intentos)
windup run [scenario]Ejecuta un escenario (replay cuando está en caché, planifica ante un miss)
windup run --allEjecuta cada escenario — modo CI
windup scan [--update] [--no-assist]Indexa estáticamente rutas y elementos interactivos en el mapa del sitio; --update reindexa solo los archivos cambiados desde el último scan (git diff); --no-assist omite la capa LLM (coste cero)
windup costs [--last n] [--days n] [--json]Informe de uso de IA desde el libro mayor de ejecuciones: totales, replays gratuitos, desglose por proveedor, por modelo y por escenario, gasto de scan y de autoría
windup statusPáginas del mapa del sitio por fuente, obsolescencia, escenarios en caché, fragmentos
windup fragment extract <scenario> <a1..aN> --id <id> --description <text>Promueve una porción de un plan en caché a un fragmento reutilizable
windup secret set <account> [--user u] [--password p]Registra credenciales de prueba: valores → .env.local, mapeo → windup.credentials.json
windup secret listCuentas + si cada ENV está definida (nunca imprime valores)
windup sig <url> [--repeat n]Firma estructural de la página (diagnósticos)
windup bench <scenario>Protocolo de validación completo (generación, determinismo del replay, recuperación ante fallos)
windup cache clearDescarta la caché de trayectorias (las siguientes ejecuciones replanifican)

Flags de run

FlagQué hace
--allEjecuta cada escenario del directorio — modo CI, un navegador caliente para toda la suite. Código de salida distinto de cero si algún escenario falla.
--concurrency <n>Ejecuta hasta n escenarios en paralelo sobre un único navegador caliente compartido con contextos aislados — ~2× más rápido en una suite mixta. Secuencial por defecto.
--no-cacheIgnora el plan en caché y replanifica desde cero (fuerza una llamada al LLM), incluso cuando existe una trayectoria válida. Úsalo para regenerar un plan a propósito.
--no-mapPlanifica sin el grafo del mapa del sitio — omite las rutas y selectores indexados. Útil para depurar el planificador o un entorno recién creado.
--repeat <n>Ejecuta el escenario n veces seguidas sobre el mismo navegador caliente — comprobaciones de estabilidad y flakes.
--headedMuestra la ventana del navegador en vez de ejecutar en modo headless.
--slowmo <ms>Añade un retardo entre acciones para que puedas observar cada paso — ritmo de demo y depuración.
--base-url <url>Sobrescribe el origen de la URL de inicio para esta ejecución (dev / staging / CI). Rebasa incluso las URLs absolutas del escenario, preservando ruta y query.
--browser chromium|firefox|webkitEjecuta en el motor elegido (Chromium por defecto). El mismo plan se reproduce en los tres — escribe una vez, ejecuta en todos.
--llm <provider[:model]>Elige el LLM planificador para esta ejecución (p. ej. openai:gpt-5-mini). Solo afecta a la planificación; los replays en caché nunca llaman a un LLM.
--summaryTras la ejecución, una llamada extra al LLM escribe un informe legible por humanos citando valores reales observados en la página final. Desactivado por defecto para que los replays sigan a $0.
--suggestEn una ejecución fallida, una llamada extra al LLM propone una corrección concreta para el escenario. Se dispara solo ante un fallo.
--reporter junit|json|htmlEmite un informe de CI — JUnit XML, un resumen JSON legible por máquina o una página HTML autocontenida.
--report-file <path>Escribe el informe en una ruta específica (por defecto .windup/reports/).

Informe de IA (--summary)

Para humanos que leen resultados (no CI), --summary añade una llamada al LLM después de cada ejecución que escribe un breve informe: qué hizo la prueba, el resultado, valores concretos observados en la página final (precios, mensajes, nombres de productos — citados literalmente desde la página) y cualquier dificultad (pasos lentos, replanificación, fallos). Se imprime en la terminal, queda en el libro mayor de ejecuciones y se muestra como un bloque destacado en los informes HTML/JSON.

npx windup run checkout --summary --reporter html
# summary: "The test logged in and completed checkout for 3 items; the
#  confirmation page showed 'Thank you for your order'. Prices observed: ..."

Desactivado por defecto a propósito — los replays en caché se mantienen en cero llamadas al LLM y $0. El coste del informe (~$0.0005 en el modelo por defecto) se rastrea por separado en las métricas de la ejecución y se incluye en estimated_cost_usd.

Sugerencias de corrección ante fallos (--suggest)

Cuando una ejecución falla, --suggest añade una llamada al LLM que actúa como un ingeniero senior de QA depurándola: compara el plan ejecutado y el paso fallido contra la página final real y los selectores conocidos del mapa del sitio, y luego propone una corrección concreta para el escenario — el selector equivocado y el real, una pantalla objetivo que no contiene lo que la tarea espera, un paso faltante, o un timeout demasiado corto para una página lenta.

npx windup run create-invoice --suggest
# FAIL  create-invoice  ... element button:has-text('Save') not visible
#   suggested fix: The 'Save' button does not exist; the dialog's real button
#   is labeled 'Create'. Change the hint to button:has-text('Create').

Convierte una ejecución en rojo en una edición concreta — en vez de tener que hacer ingeniería inversa de la app a mano. Solo se dispara ante un fallo (las ejecuciones en verde no cuestan nada), nunca edita el escenario en sí, y se muestra como un bloque destacado en los informes HTML/JSON. Combina de forma natural con --summary.