# CLAUDE.md para que Claude pruebe un programa de escritorio

Plantilla de libre uso. Sale de 244 pruebas de AutoCAD 2027 ejecutadas por Claude Code sin que una persona
hiciera los clics (eder3232.com). Sirve para cualquier programa grande, cerrado y con interfaz: AutoCAD, Revit,
Civil 3D u otro. Cópiala como `CLAUDE.md` y ajusta los nombres.

---

# Laboratorio de pruebas · <programa> <versión>

- Entorno fijo: <programa> <versión y build>, <idioma>, <SDK>. No se actualiza a mitad del trabajo.
- Los archivos de trabajo van en `<carpeta fuera del repositorio>`, nunca en el repositorio ni en carpetas que vigile otro programa.

## Lo que exige permiso de la persona

Pídelo **una vez por tanda**, con el alcance explícito, y no lo extiendas solo a la tanda siguiente:

- instalar o descargar cualquier cosa;
- crear cuentas o usar servicios en la nube que puedan costar dinero;
- bajar la seguridad del programa (aunque sea temporal, y restaurándola después);
- usar el ratón y el teclado reales;
- tocar la sesión de la persona: su instancia del programa, sus archivos, su perfil.

Si el clasificador de permisos bloquea algo, plantéaselo a la persona. No lo rodees.

## Instancias

- Trabaja **solo en instancias propias**: arráncalas tú, anota su PID y termina solo las que arrancaste.
- Antes de terminar un PID, comprueba que el proceso sea el ejecutable esperado: Windows reutiliza los PID.
- No te conectes con `GetActiveObject` ni con la ROT: devuelven la instancia de la persona si está abierta.
- Lo que puede tumbar el programa, en una instancia desechable. Si aparece el informe de error, ciérralo **sin enviar**.

## Cómo actuar sobre el programa, en este orden

1. **Código dentro del programa** (el runner: `lab run <ID>`), que devuelve el resultado en JSON.
2. **Mensajes de Win32 a una ventana concreta** (`pulsar-boton.py`, `WM_SETTEXT`, `WM_COMMAND`): no tocan el ratón ni dependen del primer plano. Mira antes la clase del control.
3. **UI Automation**, para controles WPF o con nombre.
4. **Ratón y teclado reales**, solo con permiso y deteniéndote si cambia la ventana activa.

## Cómo saber qué pasó

- **Lee el estado, no la pantalla:** cuentas de elementos, variables del programa, el comando activo, archivos testigo.
- Lo asíncrono o lo que puede morir sin avisar escribe un **testigo en archivo** en cada paso: la salida estándar se pierde si el proceso cae.
- Las capturas, para confirmar. Un PDF o una imagen exportada se abren y se miran antes de darlos por buenos.
- Mientras corre cada prueba, **vigila las ventanas** del proceso: un diálogo modal bloquea todo (el canal del runner, COM y hasta el arranque).
- Lo que puede abrir un diálogo, lánzalo en segundo plano y contesta el diálogo desde fuera.

## Cómo concluir

- Cada afirmación «X provoca Y» lleva **una prueba de control** que descarta la explicación alternativa.
- Marca como verificado solo lo ejecutado aquí. Lo leído en documentación se marca como «no probado».
- Anota cada resultado con lo medido y el control. Corrige una clasificación en cuanto aparezca la causa real.
- Registra tus propios errores (símbolo inventado, herramienta mal usada, permiso no pedido).

## Trampas conocidas

- Antes de usar un símbolo de la API, búscalo en el inventario. Antes de usar un comando, pregúntale al programa si existe.
- Rutas de Windows: nada de barras invertidas dentro de heredocs o cadenas de Python. Usa `/` o escribe el archivo con el editor.
- PowerShell 5.1 escribe en ANSI sin `-Encoding utf8`.
- Lee la cabecera de uso de cada herramienta propia antes de llamarla.
