Opcional · Bajo presupuesto · En torno a las bibliotecas v0.8.5

Las herramientas del taller SAPFX: escribir, delegar y mantener sus pruebas SAP

Las herramientas del taller SAPFX son herramientas opcionales, entregadas bajo presupuesto, que aceleran la escritura y el mantenimiento de las pruebas SAP automatizadas con Robot Framework: un grabador SAP GUI, un grabador para SAP Fiori y el WebGUI, una herramienta que puntúa las peticiones de prueba antes de confiarlas a los agentes, cinco agentes IA y su marco, un puente MCP para los asistentes IA, mantenimiento preventivo, una cartografía de las interfaces de su sistema SAP, una capa de negocio de ejemplo y un pack de instalación para Windows. Se añaden a las bibliotecas SAPFX (paquete robotframework-sapfx, Apache 2.0, gratuitas en PyPI), que controlan SAP GUI, SAP Fiori, OData y RFC y bastan para escribir y ejecutar sus pruebas. Las herramientas no sustituyen nada: producen pruebas Robot Framework corrientes, que llaman a los mismos keywords.

producen archivos .robot y .resource corrientes
Bibliotecas SAPFXIncluidas · gratuitas
SapEccLibrarySAP GUI · 195
SapFioriLibraryFiori, WebGUI · 98
SapApiLibraryOData, RFC · 149
442 keywords · pip install robotframework-sapfx · Apache 2.0
10
herramientas en torno a las bibliotecas
5
agentes IA especializados en SAP
5
formatos de exportación por grabador
3
plugins MCP, uno por canal
Incluido u opcional

Dos capas, un solo motor

Las herramientas no son otra edición de SAPFX: se apoyan en las bibliotecas y solo funcionan con ellas.

Incluidas · gratuitas

Las bibliotecas

  • pip install robotframework-sapfx, licencia Apache 2.0, sin registro
  • 442 keywords para SAP GUI, SAP Fiori, el WebGUI, OData y RFC
  • Percepción de la pantalla, espera del estado real de SAP, reparación de localizadores siempre registrada, aserciones visuales
  • Documentación pública de los keywords y repositorio público en GitHub
Opcional · bajo presupuesto

Las herramientas del taller

  • Fuera del paquete PyPI y fuera del repositorio público
  • Entregadas bajo presupuesto, en forma de un pack de despliegue para Windows
  • Instalación, formación y adaptación de la capa de negocio, según el alcance del presupuesto
  • Los archivos que producen le pertenecen

Una regla de diseño: ningún formato propietario. Una prueba grabada, generada o reparada por el taller sigue siendo un archivo .robot con sus archivos .resource, legibles, versionados con su código y ejecutados por robot con las bibliotecas. Retire las herramientas: sus pruebas y sus keywords de negocio se quedan, y se ejecutan.

Con o sin el taller

Lo que cambian las herramientas, tarea por tarea

Todo sigue siendo posible solo con las bibliotecas. Las herramientas acortan los pasos largos; no se anuncia ninguna cifra de ganancia, porque no se ha medido ninguna.

TareaSolo con las bibliotecasCon las herramientas del taller
Escribir una primera pruebaA mano, con la documentación de los keywords; Get Screen Map numera lo que contiene la pantalla.Usted recorre el proceso; el grabador escribe el borrador, que se puede reproducir enseguida.
Elegir un localizador estableLos keywords de percepción muestran los controles; la elección es suya.El grabador propone el localizador que resolverá la biblioteca: tipo de control UI5, etiqueta verificada, SID.
Verificar una petición antes de confiarla a los agentesUsted la relee; nada la mide.Prompt Eval puntúa su forma y ocho criterios, y sondea el sistema: una petición que no puede ejecutarse se detecta antes del gasto.
Pasar de una petición de negocio a una suiteUsted traduce la petición en pasos y verifica cada uno.sap-planner escribe el plan observado en el sistema; sap-generator ejecuta cada paso antes de escribirlo.
Reparar tras una actualizaciónCada localizador reparado queda registrado; usted corrige la capa resources.El informe de deriva propone la corrección; sap-healer la verifica en el sistema y repara, sin tocar las pruebas.
Ver que una pantalla ha cambiadoEl keyword Check Screen Against Watch compara una pantalla con su referencia.Una suite centinela lista para planificar vigila una lista de transacciones y redacta el informe.
Cartografiar las interfaces del sistemaLos keywords de lectura por RFC devuelven destinos, perfiles IDoc y servicios; el ensamblaje queda por hacer.Un relevamiento en solo lectura, conciliado con sus registros, generado en láminas A3 y en un informe, con sus pruebas en pantalla.
Poner a trabajar a un asistente IArf-mcp ejecuta keywords, sin ver la pantalla SAP.Los plugins le dan la pantalla SAP en texto, en diferencial o en imagen anotada.
Equipar un puesto de pruebaspip install, y luego cada dependencia por turno.install.cmd: entorno local, versiones fijadas, integridad verificada, MCP configurado.
Documentar para la aceptaciónEl informe y el registro de Robot Framework.Planes y casos de prueba ISTQB exportados por los grabadores, revisados por sap-istqb.
Retomar una misión interrumpidaEmpezar de nuevo.Otro agente retoma desde el hilo de reanudación, tras volver a demostrar el sistema objetivo.
Las herramientas, una por una

Diez herramientas para escribir y mantener las pruebas SAP

Para cada una: lo que hace, lo que usted obtiene, sus límites y la prueba de que funciona.

Grabador de escritorio01 / 10

Grabador SAP GUI: recorra el proceso y obtenga una prueba que se ejecuta

Usted trabaja en SAP GUI para Windows como de costumbre; el grabador convierte cada gesto en un keyword de SapEccLibrary. Por defecto escucha los eventos de la API SAP GUI Scripting, lo que capta también botones, cuadrículas y árboles, y recurre a la lectura de la pantalla cuando el servidor prohíbe la grabación.

En modo semántico, un campo se designa por su etiqueta visible (Fill Field By Label Table Name T000) en lugar de por su identificador técnico, y solo si esa etiqueta designa realmente el mismo elemento: si no, el identificador se queda. El archivo producido es una suite completa, que se ejecuta tal cual con robot.

Prueba: filmado en toma real el 4 de octubre de 2026 en ABAP Platform 1909, hasta la reproducción de las exportaciones por Robot Framework; los defectos encontrados al filmar se corrigieron el mismo día.

equipo WindowsCaptura real
Lanzador del grabador de escritorio de SAPFX para SAP GUI
Lanzador del grabador de SAP GUI: modos de captura, de paso del cursor y de grabación, exportaciones a elección.equipo Windows
Grabar y luego reproducir
> python tools/recorder/sapgui_recorder.py --record --engine native --semantic --export-resources
# otras exportaciones: --export-spec  --export-istqb  --export-report
> python tools/recorder/sapgui_recorder.py --replay proceso.robot
# recorder.cmd abre el lanzador gráfico

Lo que hace

  • Graba mediante los eventos de la API (motor nativo) o leyendo la pantalla, a elección o automáticamente
  • Añade aserciones durante la grabación: Ctrl+Alt+A para el valor del campo activo, Ctrl+Alt+V para la huella visual de la pantalla
  • Reproduce una grabación contra la sesión SAP GUI abierta y se detiene en el primer paso que falla
  • Convierte un script VBS del grabador integrado en SAP GUI (Alt+F12), sin sesión SAP
  • Lanzador gráfico: modo, exportaciones, panel de pasos para reordenar, modificar o eliminar

Lo que obtiene

  • Una suite .robot completa y reproducible
  • Un par «resource y suite»: keywords de negocio por un lado, prueba sin identificador técnico por el otro
  • Un plan en el formato specs/, punto de entrada de los agentes
  • Un plan y casos de prueba ISTQB, con un bloque de reproducción
  • Un informe HTML de documentación, capturas incluidas

Sus límites

  • Solo SAP GUI para Windows
  • Una grabación es un borrador: se revisa antes de convertirla en prueba
  • La lectura de la pantalla sigue un ritmo humano; un proceso ejecutado por un script se graba con el motor nativo
Extensión de navegador02 / 10

Grabador web: el localizador que resolverá la biblioteca, no un identificador generado

Una extensión de Chrome (Manifest V3) graba sus gestos en las aplicaciones SAP Fiori y SAPUI5, SAP GUI for HTML y las páginas híbridas. Cada clic se convierte en un keyword de SapFioriLibrary, con el localizador que la biblioteca resuelve en ejecución: el tipo y las propiedades del control UI5, nunca el identificador DOM que cambia de una carga a otra.

El panel reproduce la grabación en la página antes de cualquier exportación, lo que la valida sin lanzar robot. En el par «resource y suite», los pasos UI5 se vuelven autorreparables: el XPath capturado al grabar sirve de alternativa.

Prueba: validado contra una aplicación SAP Fiori Elements (cap-sflight, SAPUI5 1.139): la suite exportada y el par «resource y suite» reproducidos en verde por Robot Framework, con el efecto medido en la aplicación (4 133 viajes filtrados a 91). Las exportaciones están cubiertas por una suite sin conexión.

Demo Kit OpenUI5Captura real
Grabador web de SAPFX grabando en el Demo Kit de OpenUI5
Grabador web en el Demo Kit público de OpenUI5 (SAPUI5 1.151): el campo de búsqueda se designa por su tipo de control UI5 y cada gesto se convierte en una línea.Demo Kit OpenUI5Pantalla de una aplicación SAPUI5: el logotipo de SAP y las marcas de SAP son propiedad de SAP SE.
Instalar la extensión
# chrome://extensions, modo de desarrollador activado
# «Cargar descomprimida»: tools/recorder_web/extension
# luego Alt+Shift+R en la pestaña de la aplicación SAP

Lo que hace

  • Cinco motores de localización: control UI5 por tipo y propiedades, XPath sobre controles UI5, SID del WebGUI, UI5 Web Components, DOM genérico por rol y nombre accesible
  • Graba clics, entradas, la tecla Intro y la navegación, esperando a que la página UI5 quede en reposo
  • Clic derecho: menú de aserciones (visible, texto)
  • play reproduce en la página, +test añade un escenario, un .robot exportado se vuelve a importar
  • Atajo Alt+Shift+R para iniciar y detener

Lo que obtiene

  • Una suite .robot completa, apertura del navegador incluida
  • Un par «resource y suite» con keywords autorreparables
  • Un plan en el formato specs/
  • Un plan y casos de prueba ISTQB
  • Un informe HTML de documentación

Sus límites

  • Extensión cargada desde el pack, no publicada en la Chrome Web Store
  • Iframes de otro origen: un panel por marco accesible, sin vista de conjunto
  • Un borrador, que se revisa antes de convertirlo en prueba
Puntuación de peticiones03 / 10

Prompt Eval: puntuar una petición de prueba antes de que los agentes la traten

Una petición confiada a los agentes (una ficha de escenario escrita en lenguaje humano) es un prompt, y tratarla de principio a fin, del plan a las revisiones, cuesta del orden de dos millones de tokens de agentes en nuestras campañas. Prompt Eval la puntúa antes de ese gasto, en tres niveles: su forma, verificada sin ninguna llamada a un modelo frente a la regla de redacción del taller; su parte de plantilla, medida sobre todo el lote, porque una línea copiada tal cual por otras peticiones no dice nada de esta; y ocho criterios juzgados por un modelo de lenguaje en una llamada por petición (intención, hechos frente a hipótesis, nivel de prueba, aserción que decide, objetivo, repetibilidad, capacidades, postura), cada uno puntuado de 1 a 5 con un motivo que cita la petición.

El juez falla cerrado: un modelo inalcanzable, una respuesta ilegible o un criterio ausente valen cero con un motivo, nunca un aprobado. El juez configurado funciona en local, servido por LM Studio en la estación que sirve también la memoria QA de CabrIA; cualquier punto de acceso compatible con OpenAI puede sustituirlo. Por último, una sonda de viabilidad verifica por RFC, en solo lectura y sin un solo token de agente, que las transacciones, tablas y módulos de función que nombra la petición existen en cada sistema objetivo, probado por su release.

Prueba: primera pasada del 10 de octubre de 2026 sobre las 160 peticiones del taller: 150 fuera de la forma de referencia, 88 % de líneas de plantilla en el lote del 4 de octubre; la sonda devolvió 25 peticiones jugables, 71 bloqueadas y 64 por calificar en ABAP Platform 1909.

Puntuar, juzgar, sondear
> python -m tools.prompt_eval check
# forma y parte de plantilla, sin llamada a un modelo; código 1 si una petición falla
> python -m tools.prompt_eval score --only 21,100 --samples 3
# ocho criterios juzgados, mediana de tres juicios
> python -m tools.prompt_eval feasibility --cibles a4h
# objetos SAP nombrados, sondeados por RFC en solo lectura
> python -m tools.prompt_eval gui --open

Lo que hace

  • Forma y parte de plantilla verificadas sin ninguna llamada a un modelo, con un código de salida aprovechable en integración continua
  • Ocho criterios puntuados de 1 a 5 por un juez, mediana de varios juicios a elección, motivos que citan la petición
  • Sonda de viabilidad por RFC en solo lectura: jugable, bloqueada (el objeto que falta se nombra) o por calificar
  • Ejecuciones versionadas, comparación de dos ejecuciones con prueba de significación e informes HTML, mediante nuestro motor de evaluación de prompts PEW (Prompt Eval Workflow)
  • Interfaz local: puntuación, criterios, motivos y viabilidad petición por petición, puntuación lanzada en segundo plano

Lo que obtiene

  • Una puntuación por petición, con las constataciones y los motivos que la explican
  • La lista de las peticiones que no pueden ejecutarse en un objetivo, antes de lanzar allí un agente
  • La medida de lo que una reescritura de las peticiones ha cambiado, ejecución contra ejecución

Sus límites

  • La puntuación mide la redacción de una petición, no su coste: el estudio inicial sobre trece peticiones tratadas no muestra relación significativa
  • «Jugable» dice que los objetos nombrados existen, no que las autorizaciones, los datos o el flujo de negocio estén ahí: la exploración en el sistema sigue siendo necesaria
  • Los ocho criterios necesitan un juez; la forma, la parte de plantilla y la viabilidad prescinden de él
  • Nuevo, todavía fuera del pack de despliegue para Windows
Agentes IA04 / 10

Cinco agentes que planifican, escriben, reparan y revisan sus pruebas, bajo control humano

Los agentes trabajan en Claude Code o GitHub Copilot y controlan SAP a través del puente MCP descrito más abajo. Aplican el método Spec-Test-Driven Development: una petición escrita en lenguaje humano se confronta con el sistema real antes de escribir la menor prueba, cada paso se ejecuta en SAP antes de escribirse, y la suite lleva la huella del plan del que procede.

Un contrato común fija lo que un agente puede tocar: la reparación se limita a la capa de keywords de negocio, nunca a la prueba ni a sus aserciones, con un presupuesto acotado (2 candidatos, 20 llamadas, 15 minutos) y un veredicto con nombre.

Petición en lenguaje humanosap-planner: plan observadosap-generator: suite ejecutada antes de escribirsesap-verifier: revisiónsap-istqb: revisión del diseño

Prueba: seis campañas planificadas, generadas y revisadas por estos agentes del 24 de septiembre al 1 de octubre de 2026, en ABAP Platform 1909 y 2023: viaje RAP 7/7, rol Business Partner 7/7, centinela My Inbox 7/7, mosaico del launchpad 6/6, IDoc 12/12, job en segundo plano y spool 11/11.

tests/robot/cross/idoc_sortant_ale_a4h.robot
*** Settings ***
# …
...                 Spec: specs/idoc-sortant-ale-a4h.md (sha256:f5ddc14105b7, 2026-10-01)
...                 Generated from specs/idoc-sortant-ale-a4h.md by sap-generator:
...                 re-run the generator rather than hand-editing locators here.
# …
1. Un IDoc sortant émis atteint le statut 03, jugé par son code, et son entrant n'est pas oublié
    # …
    ${email}=    New Run Email
    ${cree}=    Send Flight Customer Change Idoc    ${TEST_CUSTOMER}    ${email}
    # …
    Dispatch Idoc By Number    ${docnum}
    ${sortant}=    Wait For Idoc Status    ${docnum}    expected=success    timeout=${IDOC_WAIT}
    Should Be Equal    ${sortant}[status]    ${STATUS_OUTBOUND_PASSED_TO_PORT}
    # …
    ${lien}=    Get Idoc Counterpart    ${docnum}    timeout=${COUNTERPART_WAIT}
    Track Run Idoc    ${lien}[counterpart]
    ${entrant}=    Wait For Idoc Status    ${lien}[counterpart]    expected=${STATUS_INBOUND_POSTED}
    ...    timeout=${IDOC_WAIT}
    Should Be Equal    ${entrant}[status]    ${STATUS_INBOUND_POSTED}
    Flight Customer Email Should Be    ${TEST_CUSTOMER}    ${email}

Lo que hace

  • sap-planner explora el sistema y escribe un plan observado en specs/
  • sap-generator ejecuta cada paso antes de escribirlo y sella la suite con la huella SHA-256 del plan
  • sap-healer reproduce un fallo y repara la capa resources, nunca la prueba
  • sap-verifier revisa en solo lectura frente al invariante de negocio y las pruebas
  • sap-istqb redacta planes y casos de prueba ISTQB y revisa el diseño de cada suite

Lo que obtiene

  • Comandos listos: /sap-plan, /sap-generate, /sap-heal, /sap-verify, /sap-istqb, /sap-maintain
  • Planes revisados por una persona antes de cualquier generación
  • Un registro de cada reparación y un informe de revisión con veredicto
  • Las definiciones para VS Code y GitHub Copilot, generadas desde la misma fuente

Sus límites

  • Hace falta un asistente IA (Claude Code o GitHub Copilot), con su suscripción y su política de datos
  • Las acciones importantes (commit, push, eliminación, instalación, publicación) siempre piden autorización, incluso en modo autónomo
  • Aceleran, no deciden: planes y revisiones se leen
Contrato y continuidad05 / 10

Un marco que acota a los agentes y les permite retomar tras una interrupción

Un agente no actúa solo sobre un sistema SAP. El plan produce un archivo de misión que fija el sistema objetivo autorizado y el invariante de negocio; un script lo valida, junto con las huellas de las pruebas, y una revisión independiente lee el resultado. Un hook de permisos deja pasar las lecturas y pide autorización para lo demás; el modo autónomo solo lo activa una persona, en su puesto, y las acciones importantes siguen pidiendo autorización en él.

Una misión interrumpida (servidor reiniciado, tiempo agotado, fallo) se puede retomar: hallazgos, decisiones y siguiente paso se escriben sobre la marcha, una entrada por archivo, nunca reescrita. Retomar es volver a abrir las sesiones, demostrar el sistema objetivo y volver a percibir: el hilo no reproduce nada ni concede ningún permiso.

Prueba: la validación de los archivos de misión se ejecuta en integración continua y en una prueba unitaria; el día de su primera ejecución, tres archivos de misión de seis eran inválidos, por tres razones distintas, y se corrigieron.

Contrato, política y reanudación
> python scripts/agent_contract.py handoff --all
# cada archivo de misión: sistema objetivo, invariante, huellas de las pruebas
> python scripts/agent_policy.py status
# política de permisos del puesto (solo una persona la cambia)
> python scripts/agent_handover.py resume mi-mision
# valida el hilo y devuelve lo que un agente necesita para retomar

Lo que hace

  • Archivo de misión validado por script: sistema objetivo, invariante, huellas de las pruebas
  • Veredictos con nombre del reparador: reparado y verificado, defecto de la aplicación, bloqueado, se necesita una persona, no verificado
  • Hook de permisos para Claude Code y GitHub Copilot; política autónoma cambiada solo por una persona
  • Hilo de reanudación inmutable y registro de las escrituras de negocio, que nunca reproduce nada
  • Skill sapfx: los cuatro canales, el bucle percepción y acción, las convenciones y el ciclo de los agentes, en una llamada

Lo que obtiene

  • Misiones trazables: qué sistema objetivo, qué invariante, qué veredicto
  • Una reanudación sin pérdida tras una interrupción, por otro agente
  • Una skill incluida en el pack, utilizable sin acceso al repositorio

Sus límites

  • El marco acota a los agentes, no garantiza que lo logren: «no lo he conseguido» es una salida prevista
  • El hook actúa en los anfitriones que lo cargan: hay que comprobar que está cargado antes de confiar en él
  • Ningún secreto en el hilo: las credenciales se vuelven a dar al retomar
Plugins MCP06 / 10

El puente MCP: un asistente IA que ve la pantalla SAP antes de actuar

rf-mcp es un servidor MCP de código abierto que ejecuta keywords de Robot Framework paso a paso para un asistente IA; no conoce SAP. Los tres plugins de SAPFX le aportan la percepción: la pantalla SAP GUI como firma de texto, el árbol de controles UI5 de una página SAP Fiori, el estado del canal API, y una pantalla ya vista devuelta en diferencial en lugar de completa.

La sobrecapa sapfx-mcp arranca rf-mcp sin cambios y añade cuatro herramientas que el contrato de los plugins no permite: el estado SAP leído en directo, la captura de pantalla real (bruta o anotada con objetivos numerados), la recarga de los plugins sin reiniciar y, desde el 9 de octubre de 2026, la aprobación por una persona de una escritura en SAP: el agente no puede aprobarse a sí mismo.

Prueba: recorridos de extremo a extremo a través de rf-mcp 0.36, repetidos el 28 de septiembre de 2026: SAP Fiori 8/8 en una página de prueba, SAP GUI 9/9 contra ABAP Platform 1909, estado servido por los plugins incluido; aprobación humana a través de rf-mcp, 30/30 en ABAP Platform 2023 y en 1909, el 9 de octubre de 2026.

A4H, release 754Captura real
SAP GUI: pantalla de selección SE16 de SNWD_PD, cada campo enmarcado y numerado
Captura anotada de la pantalla de selección de SE16: 86 objetivos numerados, la vista que recibe un agente en modo anotado, producida por el keyword Get Annotated Screenshot de la biblioteca.A4H, release 754 · Captura del 5 de octubre de 2026Pantalla de un software de SAP: el logotipo de SAP y las marcas de SAP son propiedad de SAP SE.
Servidor MCP declarado por el instalador
> sapfx-mcp --transport stdio --without-frontend
# rf-mcp sin cambios, más cuatro herramientas:
#   sapfx_state          estado SAP leído en directo, en diferencial
#   sapfx_screenshot     captura bruta o anotada (objetivos numerados)
#   sapfx_reload         recarga de los plugins sin reiniciar
#   sapfx_approve_write  una persona aprueba la siguiente escritura

Lo que hace

  • Enrutamiento de los keywords hacia la biblioteca adecuada y guía de localizadores propia de SAP
  • sapfx_state: transacción, pila de ventanas, ventana modal abierta, tipo del mensaje de estado
  • sapfx_screenshot: imagen de la pantalla, con objetivos numerados que el agente designa por su número
  • sapfx_reload: recarga en caliente de la capa de plugins
  • sapfx_approve_write: la solicitud de escritura (motivo, objetivo, sistema, mandante, pantalla) se muestra a una persona, que aprueba o rechaza; sin respuesta, es un rechazo. Cuando el cliente MCP no sabe mostrar la solicitud, se abre un cuadro de entrada en el puesto
  • Aviso cuando el código de SAPFX ha cambiado desde el arranque del servidor

Lo que obtiene

  • Un servidor MCP declarado para Claude Code (.mcp.json) y para VS Code (.vscode/mcp.json), escrito por el instalador
  • Un estado del canal API sin ninguna credencial de conexión
  • Una aprobación vinculada a un objetivo y registrada en el registro de auditoría, con su aprobador

Sus límites

  • Una sesión SAP GUI en directo por proceso de servidor
  • Versiones de rf-mcp validadas de la 0.31 a la 0.36: una versión no validada se rechaza al arrancar
  • La aprobación humana se apoya en la política de sesión de las bibliotecas
  • El puente sirve al agente; no sustituye la revisión humana
Mantenimiento preventivo07 / 10

Saber que una pantalla ha cambiado antes de que la campaña se ponga en rojo

Las bibliotecas reparan un localizador perdido y lo dicen: un aviso en el registro de Robot Framework y, si se activa, una línea en un registro de telemetría. El taller aprovecha esas huellas: un script lee la telemetría de varias ejecuciones, detecta los localizadores reparados siempre hacia el mismo objetivo y propone la corrección en la capa resources, que solo aplica cuando se le pide.

Una suite centinela, para planificar, compara la pantalla inicial de una lista de transacciones con su referencia (estructura, huella visual, zonas de la pantalla) y produce un informe de deriva; /sap-maintain encadena centinela, telemetría y agente sap-healer en un único informe.

Prueba: ciclo de referencia, pantalla sin cambios y deriva detectada validado en directo contra ABAP Platform 1909; el script de deriva y los dos controles se entregan en el pack, en Python sin dependencias.

tests/robot/ecc_drift_sentinel.robot
*** Variables ***
# Les écrans surveillés : l'écran initial de chaque transaction critique.
@{WATCHED_TRANSACTIONS}    SE16    SE38    SM50
# …
*** Test Cases ***
Watch Critical Screens
    # …
    ${outcomes}=    Create List
    FOR    ${tcode}    IN    @{WATCHED_TRANSACTIONS}
        Go To Transaction    ${tcode}
        Wait Until Busy Done
        ${verdict}=    Check Screen Against Watch    ${tcode}
        ...    directory=${WATCH_DIR}    fail_on_drift=${FAIL_ON_DRIFT}
        ...    per_resolution=${PER_RESOLUTION}
        Append To List    ${outcomes}    ${verdict}
    END
Informe de deriva y control del plan
> python scripts/healing_drift_report.py --log healing.jsonl
# propone las correcciones de la capa resources; --apply las aplica
> python scripts/check_spec_sync.py
# ¿sigue cada suite en línea con su plan?

Lo que hace

  • Informe de deriva a partir de SAPFX_HEALING_LOG: derivas estables localizadas en los archivos .resource, derivas inestables dejadas a una persona
  • Corrección aplicada solo con --apply, y listada
  • Centinela: vigilar una pantalla más es añadir una transacción a una lista
  • Controles: una suite todavía en línea con su plan, una suite generada sin localizador técnico ni espera fija

Lo que obtiene

  • Informes Markdown legibles
  • Códigos de retorno utilizables por una tarea planificada (1 = deriva que tratar)
  • Referencias de pantalla que se versionan con sus pruebas

Sus límites

  • Nunca modifica una prueba, solo la capa resources
  • El centinela constata un cambio, no dice si era deseado
  • Las referencias visuales dependen de la resolución de pantalla: una por geometría
Cartografía de interfaces08 / 10

Cartografía: lo que está conectado a su SAP, del grupo hasta la tabla

Una cartografía de interfaces caduca el día en que se dibuja. Esta herramienta la reconstruye desde el propio sistema: un relevamiento por RFC, en solo lectura y probado por la release, lee los destinos, los perfiles y el tráfico IDoc, los servicios Gateway, las rutas HTTP servidas, los jobs, los tRFC en error y la carga de llamadas. Después lo concilia, mediante una regla y sobre claves estables, con su cartografía de aplicaciones y su registro de interfaces: grupo, entidades, dominios, aplicaciones, luego sistema SAP, mandante, capa de interfaz, objeto, y hasta la función, el programa, la transacción y la tabla.

La herramienta no decide nada: cada interfaz recibe un veredicto calculado por una regla, nunca por un modelo de lenguaje (confirmada, no documentada, inactiva, no encontrada, fuera del alcance de SAP, no medida, nunca cero), y lo que requiere una mirada humana llega con sus fuentes. Las pruebas visuales se capturan en SAP GUI bajo una política de solo lectura (SM59, WE20, SICF, /IWFND/MAINT_SERVICE), cada una verificada frente a la interfaz que ilustra. Las decisiones del arquitecto (aceptar, documentar, retirar, investigar) se conservan de un relevamiento al siguiente mientras el veredicto se mantenga.

Prueba: relevamientos del 12 de octubre de 2026 en ABAP Platform 1909 y 2023 (suite de validación 5/5 en cada uno, en solo lectura); pruebas visuales 19/19 verificadas en 1909 y 16/16 en 2023; en 1909, 28 interfaces por decidir, y las decisiones conservadas tal cual en el relevamiento siguiente.

A4H, release 754Captura real
Lámina A3 de la cartografía del paisaje SAP del sistema A4H, flujos coloreados por veredicto
Lámina del paisaje en A4H (ABAP Platform 1909), en francés: interfaces relevadas por RFC, flujos trazados y coloreados por veredicto. Los niveles marcados ◇ (grupo, entidades, aplicaciones) vienen de una cartografía de aplicaciones de ejemplo.A4H, release 754 · Relevamiento del 12 de octubre de 2026
A4H, release 754Captura real
Extracto del informe de cartografía: hallazgos por verificar, decisión del arquitecto y prueba SM59
Lo que el arquitecto debe verificar: un destino inactivo, su decisión y su prueba SM59, y un llamante RFC ausente del registro.A4H, release 754 · Relevamiento del 12 de octubre de 2026Pantalla de un software de SAP: el logotipo de SAP y las marcas de SAP son propiedad de SAP SE.
Relevar, cualificar, probar, generar
> python -m tools.landscape_map collect --ashost <host> --user <usuario> --password-env SAP_PWD --expect-release 754 -o entree.json
# relevamiento por RFC, política de solo lectura aplicada primero
> python -m tools.landscape_map merge entree.json --apps aplicaciones.csv --register registro.csv -o cualificado.json
> python -m tools.landscape_map build cualificado.json -o relevamiento.json
> python -m tools.landscape_map proofs relevamiento.json -o out --conn /H/<host>/S/3200 --user <usuario> --password-env SAP_PWD --expect-release 754
> python -m tools.landscape_map render relevamiento.json -o out --decisions decisions.json --proofs out/preuves.json --pdf

Lo que hace

  • Relevamiento por RFC en solo lectura, sistema probado por su release antes de cualquier lectura
  • Conciliación mediante una regla con la cartografía de aplicaciones y el registro de interfaces (CSV o JSON)
  • Un veredicto por interfaz, calculado por una regla y nunca por un modelo; una actividad ilegible es «no medida», nunca cero
  • Pruebas capturadas en SAP GUI en solo lectura y verificadas en pantalla, logotipo de SAP enmascarado
  • Decisiones del arquitecto ligadas a la clave de la interfaz, conservadas en el relevamiento siguiente, nombradas cuando cambia el veredicto
  • Comparación de dos relevamientos, con un código de retorno cuando algo se ha movido

Lo que obtiene

  • Dos láminas A3: el paisaje anidado, con flujos trazados y coloreados por veredicto, y el árbol padre e hijo
  • Un informe HTML y su PDF: cifras clave, ficha de linaje por interfaz, hallazgos por verificar con sus pruebas
  • La lista de trabajo del arquitecto, una exportación Mermaid legible por draw.io y un artefacto determinista

Sus límites

  • La actividad depende de la recogida de carga del sistema: sin ella, es «no medida»
  • Los intercambios por ficheros o por buses de eventos escapan a la mirada de SAP; las interfaces SOAP aún no se relevan
  • El grupo, las entidades y los dominios vienen de sus fuentes: sin ellas, quedan como marcadores, nunca adivinados
  • Aún no está en el paquete de despliegue Windows
Capa de negocio de ejemplo09 / 10

Keywords de negocio y suites de ejemplo, para adaptar a sus pantallas

Entre las bibliotecas y sus pruebas se sitúa una capa de keywords que habla el lenguaje del negocio: abrir una sesión, contar las entradas de una tabla, leer registros. El taller proporciona una, medida en los sistemas del laboratorio, con nombres que se corresponden de un canal a otro.

Es la capa que repara el agente sap-healer y la que usted adapta: cada archivo empieza con un aviso que lo presenta como un ejemplo que personalizar, porque una release, un idioma o una variante de pantalla cambian sus valores.

Prueba: las suites de ejemplo proceden de las campañas del laboratorio, por ejemplo el producto EPM leído por tres canales, 7/7 en las releases 754 y 758; en integración continua, el pack instalado supera una ejecución en seco que resuelve cada keyword.

Nombres que se corresponden de un canal a otro (capa de ejemplo)
GestoSAP GUIWebGUI y SAP FioriODataRFC
AbrirOpen SAP And Log InOpen SAP And Log InOpen Api ChannelOpen Rfc Channel
ContarCount Table EntriesCount WebGui Table EntriesCount Business EntitiesCount Business Records
CerrarClose SAPClose SAPClose Api ChannelClose Rfc Channel

Lo que hace

  • Nueve archivos de vocabulario: SAP GUI, SAP Fiori y WebGUI, OData, RFC, seguridad (por RFC y en pantalla), controles entre canales, salida de tablas, datos de demostración
  • Veinticinco page objects, uno por pantalla o aplicación: SE16, SE11, launchpad, Business Partner, IDoc, job en segundo plano y spool...
  • Doce suites de ejemplo en el pack, entre ellas una que lee el mismo producto por tres canales y otra que se ejecuta en el Demo Kit público de OpenUI5, sin credenciales

Lo que obtiene

  • Pruebas que se leen en términos de negocio, sin identificadores SAP en la suite
  • Un único lugar donde reparar una pantalla modificada
  • Sus propios keywords en su propio archivo (site_keywords.resource), junto a los archivos entregados

Sus límites

  • Ejemplos, no un vocabulario universal: cada valor se midió en nuestros sistemas de desarrollo
  • Hay que verificar y adaptar en su sistema: release, idioma, variantes de pantalla, campos propios
  • Puntos de partida, no una cobertura de sus procesos
Pack de despliegue10 / 10

Un puesto de pruebas listo con un comando, sin clonar ningún repositorio

El pack es un ZIP autónomo para Windows: las bibliotecas y los plugins MCP en paquetes, los dos grabadores, la capa de negocio, las doce suites de ejemplo, los agentes y su skill, los scripts de mantenimiento. Su instalador crea un entorno Python local, instala versiones fijadas y verifica la integridad de cada archivo antes de continuar.

El canal RFC, opcional, tiene su propio script: se apoya en el runtime NW RFC que SAP GUI 8.00 ya deposita en el puesto, o en el SDK de SAP que usted proporcione, y comprueba que la importación funciona de verdad.

Prueba: en integración continua, el ZIP real se instala con su instalador real en Python 3.10 y supera una ejecución en seco; el pack 0.8.5 se construyó y probó sobre una extracción limpia el 13 de octubre de 2026.

Instalar el pack
> install.cmd -WithMcp -WithBrowsers
# entorno local, versiones fijadas, integridad verificada
> powershell -ExecutionPolicy Bypass -File install-rfc.ps1 -UseSapGuiRuntime
# canal RFC opcional, sin archivo del SDK en un puesto equipado con SAP GUI 8.00

Lo que hace

  • install.cmd: entorno .venv local, dependencias fijadas, comprobación de importación
  • -WithMcp: rf-mcp, plugins y configuraciones MCP escritas en su sitio
  • -WithBrowsers: Chromium de Playwright para SAP Fiori y el WebGUI
  • Rechazo de un archivo alterado (SHA256SUMS.txt) y de un Python anterior a 3.10
  • install-rfc.ps1 -CheckOnly: diagnóstico del canal RFC sin modificar nada

Lo que obtiene

  • Un puesto que ejecuta las suites de ejemplo
  • Las configuraciones MCP para Claude Code y VS Code
  • Un inventario SHA-256 de cada archivo del pack

Sus límites

  • Solo Windows, como SAP GUI para Windows
  • El SDK SAP NW RFC está bajo licencia de SAP y no es redistribuible: no está en el pack
  • El canal RFC requiere Python 3.10 a 3.12 (versiones de pyrfc disponibles)
Incluido, gratuito

Ya en las bibliotecas: las funciones en las que se apoyan las herramientas

Parte de lo que hace útil al taller vive en el propio paquete PyPI. Estas funciones son gratuitas, están documentadas y se pueden usar sin ninguna herramienta.

En el paquete PyPI

Comprobaciones previas

Constatar antes de fallar tarde: scripting del servidor, representación de las listas en el puesto, postura de seguridad del cliente SAP GUI, actividad del Gateway. Cada una nombra el parámetro que corregir.

Scripting Should Be Fully EnabledGateway Should Be Active
En el paquete PyPI

Percepción numerada

Una línea y un número por objetivo de la pantalla; un agente designa un número, el keyword actúa sobre el identificador, verificado de nuevo antes de la acción.

Get Screen MapGet Ui5 Page Map
En el paquete PyPI

Reparación registrada

Un localizador perdido se repara con un aviso y, si se activa, una línea de telemetría: la materia prima del informe de deriva.

Resolve Element With HealingResolve Ui5 With Fallback
En el paquete PyPI

Vigilancia de pantalla

Una pantalla comparada con su referencia: estructura, identificadores renombrados emparejados, huella visual y zonas de la pantalla. El núcleo de la suite centinela.

Check Screen Against Watch
En el paquete PyPI

Aserciones visuales

Huellas perceptuales de una pantalla, de un elemento o de una página web, con las zonas volátiles enmascaradas: lo que la API de scripting no ve.

Screen Should Match BaselineUi5 Screen Should Match Baseline
En el paquete PyPI

Salida en cinco formatos

Una tabla leída en cualquiera de los cuatro canales se escribe en SVG, XLSX, CSV, JSON Lines o Parquet y se vuelve a leer; una extracción incompleta se rechaza.

Table Extract Should Be Complete
En el paquete PyPI

Artefacto determinista

JSON ordenado, huella SHA-256 sobre un perímetro declarado y recalculada al releer: un artefacto modificado después se rechaza.

Write Deterministic ArtifactCompare Deterministic Artifacts
En el paquete PyPI

Prueba de cierre

Al final de una campaña, demostrar que las sesiones SAP GUI están cerradas, sin captura de pantalla y sin contar las demás sesiones del puesto.

Sap Gui Should Have No Open Connection
Programa CabrIA (I+D)

Dos bloques de CabrIA, además del taller

Proceden del programa CabrIA, no de SAPFX. Opcionales, se conectan y se retiran sin tocar las pruebas, y el pack de despliegue no los incluye.

Opcional · CabrIA

Registrador de vuelo

Un listener en cada ejecución de Robot Framework, un plugin sobre el servidor MCP y un recolector del registro de reparación consignan lo que deja cada ejecución, con secretos y datos personales enmascarados antes de cualquier almacenamiento. Los archivos van a una carpeta vecina, fuera del repositorio de pruebas.

Se retira eliminando dos variables de entorno.

Opcional · CabrIA

Memoria QA citada

El servidor MCP local qa-brain permite consultar en lenguaje natural lo que el terreno ha enseñado (keywords, planes, documentación, lecciones escritas tras un incidente), con sus fuentes: 4119 pasajes indexados a 9 de octubre de 2026. Los agentes de SAPFX lo consultan antes de sus decisiones de criterio cuando está montado.

La observación en el sistema real siempre decide: un pasaje citado nunca es una prueba. Si no está, no bloquea nada.

Rigor

Un taller que se aplica sus propias reglas

Controles mecánicos, en integración continua, sostienen lo que promete el taller en lugar de fiarlo a la disciplina.

Una sola versión en todas partes

En cada release, bibliotecas, plugins, agentes, extensión y skill llevan la misma versión, verificada por una prueba: hoy la 0.8.5.

Convenciones verificadas

Ningún localizador técnico en una suite generada, ninguna espera fija, una suite ligada a la huella de su plan: controlado en integración continua y en cada edición.

Un mínimo de Python respetado

Las suites y la capa de negocio se controlan para Python 3.10, el mínimo del pack: lo impuso un defecto invisible en 3.12.

Listas blancas

El repositorio público y el pack solo contienen lo que se ha decidido: una carpeta nueva sigue siendo privada hasta que alguien decide publicarla.

Sin promesas

Lo que las herramientas no hacen

Mejor saberlo antes de solicitarlas.

No sustituyen a un editor gráfico

Una grabación es un borrador y una prueba sigue siendo un archivo Robot Framework hecho de keywords legibles sin programar: alguien del equipo la revisa y la mantiene.

No deciden por usted

El plan de un agente se revisa antes de la generación, las acciones importantes piden autorización y la reparación nunca toca una aserción.

No crean dependencia

Los archivos producidos se ejecutan con robot y las bibliotecas; dejar las herramientas no rompe ninguna prueba.

No anuncian ninguna ganancia en cifras

No se ha medido ninguna ganancia de productividad. Lo que se mide son campañas ejecutadas en nuestros sistemas SAP de desarrollo, nunca en un sistema de cliente.

No funcionan en todas partes

El pack y el grabador SAP GUI son para Windows, los agentes requieren Claude Code o GitHub Copilot y el canal RFC requiere Python 3.10 a 3.12.

No están publicadas

Ni en el paquete PyPI, ni en el repositorio público, ni en la Chrome Web Store: se entregan bajo presupuesto.

Obtener las herramientas

Tres pasos, empezando por lo gratuito

Las herramientas solo sirven con las bibliotecas: empiece por ellas.

1

Instale las bibliotecas

pip install robotframework-sapfx, y luego una primera prueba con la guía de inicio. Verá lo que SAPFX hace en sus pantallas antes de solicitar nada.

2

Describa su contexto

Canales SAP, releases, puesto de pruebas, asistente IA utilizado, restricciones de seguridad: por el formulario o por correo electrónico. Le diremos qué herramientas le servirán y cuáles no.

3

Reciba su presupuesto y luego el taller

Las herramientas útiles, su instalación, la formación y la adaptación de la capa de negocio a sus pantallas se recogen en un presupuesto, con un alcance definido conjuntamente; después se le entrega el pack de despliegue para Windows.

Las bibliotecas siguen siendo libres y gratuitas, con o sin las herramientas.

Preguntas frecuentes

Las herramientas del taller SAPFX: las preguntas que nos hacen

Las respuestas cortas; el resto se habla sobre su caso.

¿Cómo grabar una prueba SAP GUI para Robot Framework?

Con el grabador SAP GUI del taller SAPFX: usted recorre el proceso en SAP GUI para Windows, el grabador lo convierte en keywords de SapEccLibrary a partir de los eventos de la API SAP GUI Scripting y exporta una suite .robot reproducible, un par resource y suite, un plan, casos de prueba ISTQB y un informe HTML. La grabación sigue siendo un borrador que hay que revisar.

¿Puede un agente IA generar pruebas SAP?

Sí, con los agentes del taller SAPFX en Claude Code o GitHub Copilot: sap-planner confronta la petición con el sistema SAP y escribe un plan observado, sap-generator ejecuta cada paso en SAP antes de escribirlo, sap-verifier y sap-istqb revisan la suite. Una persona revisa el plan antes de la generación.

¿Están incluidas las herramientas de SAPFX en el paquete PyPI?

No. El paquete robotframework-sapfx contiene las tres bibliotecas y su núcleo común, bajo licencia Apache 2.0. Las herramientas del taller (grabadores, puntuación de peticiones, agentes IA, plugins MCP, mantenimiento, capa de negocio de ejemplo, pack Windows) no están ni en el paquete ni en el repositorio público: se entregan bajo presupuesto.

¿Hacen falta las herramientas para usar SAPFX?

No. Las bibliotecas bastan para escribir, ejecutar y mantener pruebas SAP en Robot Framework. Las herramientas acortan la escritura, la generación y el mantenimiento de las pruebas; no son un requisito previo.

¿Dependen de las herramientas las pruebas que producen?

No. Son archivos .robot y .resource que llaman a los keywords de las bibliotecas y se ejecutan con robot. Le pertenecen y siguen funcionando sin las herramientas.

¿Qué asistente IA necesitan los agentes de SAPFX?

Claude Code, o GitHub Copilot en VS Code, con el servidor MCP rf-mcp y los plugins de SAPFX. Los grabadores, las herramientas de mantenimiento y el pack funcionan sin asistente IA.

¿Envían las herramientas datos fuera del puesto?

Los grabadores, las herramientas de mantenimiento y el pack se ejecutan en el puesto y no envían nada a otro lugar; una contraseña escrita durante una grabación se sustituye por un marcador. Prompt Eval envía la petición al juez que usted configure, por defecto un modelo servido en local. Los agentes pasan por el asistente IA que usted elija: lo que perciben de la pantalla SAP se transmite a ese servicio, según su contrato con él.

¿Cómo saber si una petición de prueba está lista para los agentes?

Con Prompt Eval, la herramienta de puntuación del taller SAPFX: verifica la forma de la petición y su parte de plantilla sin llamada a un modelo, hace juzgar ocho criterios por un modelo de lenguaje, preferentemente local, y sondea por RFC, en solo lectura, que los objetos SAP que nombra existen en el objetivo. La puntuación mide la redacción, no el coste; «jugable» no exime de la exploración en el sistema.

¿Se pueden cartografiar las interfaces de un sistema SAP?

Sí, con la herramienta de cartografía del taller SAPFX: un relevamiento por RFC en solo lectura lee los destinos, los perfiles y el tráfico IDoc, los servicios Gateway y las rutas HTTP servidas, los concilia mediante una regla con su cartografía de aplicaciones y su registro de interfaces, y genera dos láminas A3 y un informe. Cada interfaz recibe un veredicto calculado por una regla, nunca por un modelo de lenguaje, y las diferencias por verificar llegan con sus pruebas capturadas en SAP GUI.

¿Cómo obtener las herramientas del taller SAPFX?

Bajo presupuesto, por el formulario de contacto o por correo electrónico: el presupuesto cubre las herramientas útiles, su instalación, la formación y la adaptación a sus pantallas, y después se le entrega el pack de despliegue para Windows.

Taller SAPFX

¿Las herramientas del taller para su equipo?

Indíquenos sus canales SAP, sus releases y su asistente IA: le señalamos las herramientas útiles y le enviamos un presupuesto para su puesta en marcha.

  • Un intercambio técnico, no comercial
  • Sus datos permanecen en Francia
Página SAPFX

o directamente por correo electrónico: