# Propuesta e2e_checks para apps/shaders_lab
# Generado por fn-recopilador modo design-e2e
# Fecha: 2026-05-19
#
# Diagnostico:
#   lang=cpp, framework=imgui (fn::run_app), domain=gfx
#   toolchain: mingw-w64 (cross-compile Windows desde WSL)
#   modulos: main.cpp + compiler.cpp + 19 .cpp del registry (gfx + core)
#   deps externas: imgui_node_editor, SQLite::SQLite3
#   persistencia propia: shaders_lab.db (junto al .exe, via shaderlab_db)
#   sin tests/ ni tests_*.py detectados
#   sin primitives_gallery integration (golden_image: OMITIDO)
#   sin --self-test: fn::run_app no parsea argv (confirmado piloto 0120)
#   sin tag 'service': no expone HTTP (smoke con health: OMITIDO)
#   operations.db: NO usa (ops_audit: OMITIDO)
#
# Patron: C++ ImGui — checks estructurales sin lanzar GUI ni GPU

app_id: shaders_lab

e2e_checks:
  # Build: compila el target completo para Windows via mingw-w64.
  # Valida que todos los .cpp del registry enlazados (19 archivos gfx+core)
  # compilan sin errores y el linkado con imgui_node_editor + SQLite tiene exito.
  # Es el check mas valioso: detecta regresiones de API en cualquiera de las
  # 19 funciones del registry que usa la app.
  - id: build
    cmd: "cmake --build /home/lucas/fn_registry/cpp/build/windows --target shaders_lab -j"
    timeout_s: 300
    severity: critical

  # Verifica que el artefacto .exe existe tras el build.
  # Detecta casos donde cmake reporta exit 0 pero el linker no produjo binario
  # (muy raro con mingw-w64 pero ha ocurrido en builds parciales con -j).
  - id: binary_exists
    cmd: "test -f /home/lucas/fn_registry/cpp/build/windows/apps/shaders_lab/shaders_lab.exe"
    timeout_s: 5
    severity: critical

  # Verifica que el .ico esta presente junto al .exe.
  # add_imgui_app genera shaders_lab_appicon.rc que windres incluye como recurso;
  # si el .ico falta el build pasa pero el .exe queda sin icono embebido
  # (visible al deploy a /mnt/c/.../Desktop/apps/).
  - id: icon_exists
    cmd: "test -f /home/lucas/fn_registry/apps/shaders_lab/appicon.ico"
    timeout_s: 5
    severity: warning
