Skip to content

0.5.8 — Accessibility locators, Fiori diagnostics & support alignment

Choose a tag to compare

@CyrilM29 CyrilM29 released this 18 Jul 20:44

🇫🇷 Release « accessibilité & diagnostic ». Les moteurs dom et wc gagnent les localisateurs d'accessibilité (role= ARIA calculé, name= nom accessible — le localisateur « intention utilisateur », façon getByRole(name=…)) ; la nouvelle couche Get Fiori Diagnostics explique en un appel un écran Fiori qui ne répond pas ; et les supports (agents de test, hints MCP, GUI du recorder desktop) sont réalignés sur le produit. Dézippez, install.cmd, c'est prêt.

What's new

Accessibility locators (dom & wc engines)

  • role= on the dom engine now matches the computed ARIA role: an explicit role attribute still wins, but plain HTML semantics resolve too — a bare <button>, a[href]link, input[type=checkbox]checkbox, h1h6heading… (pragmatic HTML-AAM subset, case-insensitive). A React/Angular/vanilla widget no longer needs role attributes sprinkled in its markup to be addressable.
  • New name= selector key = the accessible name (simplified accname in W3C precedence order: aria-labelledby, aria-label, the UI5 Web Components accessible-name attribute / accessibleName property, label[for]/wrapping label, alt, button value, visible text, title, placeholder), with the engines' usual matching rules (case-insensitive substring or /regex/). Available on BOTH the dom engine (user-intent locators, Playwright getByRole(name=…) style: role=button name=Fermer la notification) and the wc engine (an icon-only ui5-button or an unlabelled ui5-input is addressed by what a screen reader would announce). Flows through Resolve Ui5 With Fallback's wc=/dom= forms unchanged.
  • Proven offline: fiori_wc_smoke.robot 7/7 (accessible-name attribute AND non-reflected accessibleName property) and fiori_hybrid_smoke.robot 6/6 (implicit role=button via aria-label, role=textbox named by its label[for]); web recorder regenerated (bundle embedded).

Fiori diagnostics layer

  • Get Fiori Diagnostics — ONE JSON-safe dict aggregating the hybrid composition probe, the UI5 control tree (short probe, None when absent, never touching Get Ui5 Page Tree's mode=diff state), normalized console/page errors (Browser 20 bricks, incremental by default, truncation always announced) and the ARIA snapshot of the non-SAP regions. Every section is best-effort (failures land in collection_errors, never abort the diagnostic) and the issues synthesis is actionable: first JS/console error quoted, a missing UI5 tree names the recommended fallback engines and the iframes to scope into. Respects Set Ui5 Frame / Push Ui5 Frame.
  • Log Fiori Diagnostics — same collection rendered as a Markdown report in the Robot log (issues first), teardown-friendly.

Support alignment (test agents · MCP hints · recorder GUI)

  • The rf-mcp Fiori hints and the sap-healer agent now cite the FULL fallback chain (role → xpath → sid → wc → dom); the hints also cover the dom engine, Get Page Composition and the nested-frame stack (Push/Pop Ui5 Frame); the planner/generator/healer agents reference Get Page Composition / Get Fiori Diagnostics at their perception steps (VS Code chat modes regenerated).
  • The desktop recorder launcher GUI now exposes the CLI's --engine auto|native|poll (capture/record) and --semantic (native record → human keywords by visible label) options, which had been CLI-only since 0.2.0/0.4.0.

Proof numbers: 750 unit tests (720 → 750) · 93 % coverage · 17/17 live scenarios. UI5 1.60 → 2.0-nightly compatibility unchanged; MV3 extension 0.4.1 unchanged.

Attachment: sapfx-pack-0.5.8-win.zip — self-contained Windows deployment pack (both wheels, business resources, recorders + MV3 extension, sample suites, maintenance scripts, test agents). Install: unzip, then install.cmd (options -WithMcp, -WithBrowsers). SHA-256: 5a4b713f4c6682b9350d5b8bdf61617359b80cecd92b5539a7c31b6e2fbcc896.

Ops note: after updating the libraries, restart the rf-mcp server — the process freezes the imported library class and instance (field note in the repo).

Source repository is private - access on request: cyril@montiel.me.