chore: auto-commit (9 archivos)
- .claude/commands/autopilot.md - dev/proposals_e2e_checks_0121/altsnap_jitter_test.yaml - dev/proposals_e2e_checks_0121/app_hub_launcher.yaml - dev/proposals_e2e_checks_0121/element_matrix_chat.yaml - dev/proposals_e2e_checks_0121/footprint_geo_stack.yaml - dev/proposals_e2e_checks_0121/metabase_registry.yaml - dev/proposals_e2e_checks_0121/script_navegador.yaml - dev/proposals_e2e_checks_0121/services_monitor.yaml - dev/proposals_e2e_checks_0121/tables_qa.yaml Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,149 @@
|
||||
# Propuesta e2e_checks para apps/tables_qa
|
||||
# Generado por fn-recopilador modo design-e2e
|
||||
# app_id: tables_qa
|
||||
# Issue: 0121a wave 3
|
||||
# Fecha: 2026-05-19
|
||||
#
|
||||
# Diagnostico:
|
||||
# lang=cpp, framework=imgui (fn::run_app), domain=tools
|
||||
# toolchain: mingw-w64 (cross-compile Windows desde WSL) — mismo toolchain que el resto del ecosistema
|
||||
# modulos propios: main.cpp + qa_state + qa_panel + test_suite + perf_tests + 10 tabs (tab_*.cpp)
|
||||
# dependencia clave: fn_module_data_table (target CMake opcional — linked si existe)
|
||||
# Enlaza via: target_link_libraries(tables_qa PRIVATE fn_module_data_table)
|
||||
# Si fn_module_data_table no existe, el build procede sin el modulo (tabs muestran stubs).
|
||||
# sin frontend/ — no hay pnpm/vite
|
||||
# sin tests/ ni pytest — suite propia en test_suite.cpp (run_test_suite(), 10 checks in-process)
|
||||
# sin migrations/ — no usa BD propia
|
||||
# sin operations.db — no usa el ciclo reactivo de operations (ops_audit: OMITIDO)
|
||||
# sin tag 'service' — no expone HTTP (smoke/health: OMITIDO)
|
||||
# appicon.ico: PRESENTE en apps/tables_qa/appicon.ico
|
||||
#
|
||||
# FLAG --self-test:
|
||||
# Parseado en main.cpp (L77-84) pero MARCADO como WIP fase 2 TBD.
|
||||
# Retorno actual: siempre exit 0 con mensaje "SKIPPED (fase 2 TBD)".
|
||||
# El self-test headless real no esta implementado — requiere init parcial del
|
||||
# framework (logger) + imgui_test_engine (fase 2 del issue 0108).
|
||||
# Dado que exit 0 es garantizado por el stub, el check se incluye como WARNING:
|
||||
# verifica que el binario acepta el flag sin crash y confirma el estado WIP.
|
||||
# Se podra ascender a critical cuando la fase 2 este implementada.
|
||||
#
|
||||
# test_suite.cpp (in-process):
|
||||
# run_test_suite() ejecuta 10 smoke tests sobre la API publica de data_table.
|
||||
# Tests: TableInput construction, ColumnSpec enums, BadgeRule/ChipRule fields,
|
||||
# State default-constructible, TableEvent enums, ColorScale config, Duration
|
||||
# thresholds, Button setup, Multi-table input, ColorStop ordering.
|
||||
# NO requiere display ni contexto GL — opera solo sobre estructuras C++ en memoria.
|
||||
# Sin embargo, se invoca desde el QA panel en runtime (boton "Run Tests"),
|
||||
# NO desde argv. Por tanto NO hay un --run-tests CLI flag que pueda usarse
|
||||
# como check headless directo. El check tests_binary_link (ver abajo) verifica
|
||||
# que el modulo data_table linka sin error como proxy del test suite.
|
||||
#
|
||||
# BUILD path: cmake --build cpp/build --target tables_qa -j
|
||||
# BINARY path: cpp/build/apps/tables_qa/tables_qa (Linux/WSL)
|
||||
# o cpp/build/windows/apps/tables_qa/tables_qa.exe (Windows cross)
|
||||
# app.md documenta el run command como:
|
||||
# ./cpp/build/apps/tables_qa/tables_qa (Linux/WSL nativo)
|
||||
# No se detecta referencia a build de Windows en app.md — se usa build nativo WSL.
|
||||
#
|
||||
# Patron: C++ ImGui app testbed (QA visual, sin modo capture propio, sin HTTP)
|
||||
|
||||
app_id: tables_qa
|
||||
|
||||
e2e_checks:
|
||||
# Build del target tables_qa en el directorio de build WSL nativo.
|
||||
# Enlaza fn_module_data_table (data_table::render, TQL, renderers, etc.) si el
|
||||
# target existe. Este check valida: (a) los 10 tabs compilan sin error, (b) la
|
||||
# API publica de data_table_cpp es ABI-compatible con las cabeceras usadas en
|
||||
# los tabs, (c) ninguna TU del modulo rompe ODR.
|
||||
# Es el build gate de data_table v2.0+ para issue 0081 BeginTable migration.
|
||||
- id: build
|
||||
cmd: "cmake --build /home/lucas/fn_registry/cpp/build --target tables_qa -j"
|
||||
timeout_s: 300
|
||||
severity: critical
|
||||
# Nota: si fn_module_data_table aun no esta buildado, cmake lo buildara como
|
||||
# dependencia transitiva antes de tables_qa (order dado por target_link_libraries).
|
||||
|
||||
# Verifica que el binario existe tras el build.
|
||||
# cmake --build puede retornar exit 0 en rebuilds parciales sin producir binario
|
||||
# si el target ya esta up-to-date pero el archivo fue borrado manualmente.
|
||||
- id: binary_exists
|
||||
cmd: "test -f /home/lucas/fn_registry/cpp/build/apps/tables_qa/tables_qa"
|
||||
timeout_s: 5
|
||||
severity: critical
|
||||
|
||||
# Prueba el flag --self-test declarado en main.cpp.
|
||||
# Estado actual (v0.1.0): stub WIP que imprime "SKIPPED (fase 2 TBD)" y sale exit 0.
|
||||
# El check confirma: (a) el binario acepta el flag sin SIGSEGV ni abort,
|
||||
# (b) el logger se inicializa correctamente antes del early exit,
|
||||
# (c) exit 0 consistente con el contrato del stub.
|
||||
# Marcado WARNING porque el test suite real no esta corriendo — cuando fase 2
|
||||
# implemente --self-test real con imgui_test_engine, ascender a critical y
|
||||
# añadir expect_stdout_contains para verificar resultados concretos.
|
||||
- id: self_test_stub
|
||||
cmd: "/home/lucas/fn_registry/cpp/build/apps/tables_qa/tables_qa --self-test"
|
||||
timeout_s: 15
|
||||
expect_exit: 0
|
||||
expect_stdout_contains: "SKIPPED"
|
||||
severity: warning
|
||||
# Cuando fase 2 este lista, cambiar expect_stdout_contains a "pass" o similar
|
||||
# y ascender severity a critical.
|
||||
|
||||
# Verifica que el .ico esta presente junto al fuente.
|
||||
# add_imgui_app genera tables_qa_appicon.rc que windres incluye en el .exe
|
||||
# (recurso .rsrc). Si appicon.ico falta, el build WSL pasa pero el .exe
|
||||
# Windows queda sin icono embebido. Fallo aqui detecta borrado accidental
|
||||
# del .ico antes de cross-compile.
|
||||
- id: icon_exists
|
||||
cmd: "test -f /home/lucas/fn_registry/apps/tables_qa/appicon.ico"
|
||||
timeout_s: 5
|
||||
severity: warning
|
||||
|
||||
# Verifica que los 10 tabs estan declarados en tabs.h como funciones render_*.
|
||||
# tables_qa crece anadiendo tabs (10 en v0.1.0: basic, renderers, buttons,
|
||||
# color_rules, dots, joins, tql, drill, events, compat).
|
||||
# Un tab anadido en tab_*.cpp pero no declarado en tabs.h produce linker error
|
||||
# solo si main.cpp lo referencia; este check detecta drift entre tabs.h y
|
||||
# el conteo esperado sin necesitar build.
|
||||
# Cuenta "render_" en tabs.h como proxy del numero de tabs declarados.
|
||||
- id: tabs_declared
|
||||
cmd: >
|
||||
count=$(grep -c 'render_' /home/lucas/fn_registry/apps/tables_qa/tabs.h 2>/dev/null);
|
||||
echo "render_ declarations in tabs.h: $count";
|
||||
test "$count" -ge 10
|
||||
timeout_s: 5
|
||||
severity: warning
|
||||
# Nota: si se añaden tabs futuros, el umbral -ge 10 es minimo; no necesita
|
||||
# actualizarse salvo que se eliminen tabs (lo que requeriria revision manual).
|
||||
|
||||
# Verifica que CMakeLists.txt lista los 10 tab_*.cpp en add_imgui_app.
|
||||
# Un tab_foo.cpp creado pero no añadido al CMakeLists no se compila y sus
|
||||
# funciones quedan como undefined symbols (detectado en link, no en compile).
|
||||
# Este check estático es mas rapido que el build completo y da feedback antes.
|
||||
- id: cmakelists_tab_srcs
|
||||
cmd: >
|
||||
count=$(grep -c '^ tab_' /home/lucas/fn_registry/apps/tables_qa/CMakeLists.txt 2>/dev/null);
|
||||
echo "tab_*.cpp in CMakeLists: $count";
|
||||
test "$count" -ge 10
|
||||
timeout_s: 5
|
||||
severity: warning
|
||||
|
||||
# Justificacion por check:
|
||||
# | check | razon |
|
||||
# |---------------------|------------------------------------------------------------------------------------|
|
||||
# | build | enlaza fn_module_data_table — gate de API data_table v2+ para issue 0081 |
|
||||
# | binary_exists | confirma que cmake produjo binario (no solo exit 0) |
|
||||
# | self_test_stub | verifica flag --self-test sin crash; estado WIP documentado; escala a critical |
|
||||
# | icon_exists | .ico requerido para windres cross-compile; faltante no rompe build WSL |
|
||||
# | tabs_declared | detecta drift entre tabs.h y numero esperado de tabs del QA testbed |
|
||||
# | cmakelists_tab_srcs | detecta tab_*.cpp creado pero no registrado en add_imgui_app(...) |
|
||||
#
|
||||
# checks OMITIDOS y razon:
|
||||
# | check | razon de omision |
|
||||
# |----------------|------------------------------------------------------------------------------------|
|
||||
# | ops_audit | no usa operations.db — no hay bucle reactivo en esta app |
|
||||
# | smoke/health | no es service, no expone HTTP — es testbed GUI |
|
||||
# | capture_mode | no implementado — "Export golden" en app.md es boton UI, no flag CLI |
|
||||
# | | (tab_compat.cpp L: "TBD: requires capture API integration") |
|
||||
# | run_test_suite | run_test_suite() es in-process vía botón UI, no accessible via CLI flag |
|
||||
# | pytest | sin tests/ dir, sin pytest |
|
||||
# | perf_test | perf_tests son in-process (run_perf_test via UI), no CLI invocable headless |
|
||||
Reference in New Issue
Block a user