0.5.8 — Accessibility locators, Fiori diagnostics & support alignment
🇫🇷 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 explicitroleattribute still wins, but plain HTML semantics resolve too — a bare<button>,a[href]→link,input[type=checkbox]→checkbox,h1–h6→heading… (pragmatic HTML-AAM subset, case-insensitive). A React/Angular/vanilla widget no longer needsroleattributes 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 Componentsaccessible-nameattribute /accessibleNameproperty,label[for]/wrapping label,alt, buttonvalue, visible text,title,placeholder), with the engines' usual matching rules (case-insensitive substring or/regex/). Available on BOTH the dom engine (user-intent locators, PlaywrightgetByRole(name=…)style:role=button name=Fermer la notification) and the wc engine (an icon-onlyui5-buttonor an unlabelledui5-inputis addressed by what a screen reader would announce). Flows throughResolve Ui5 With Fallback'swc=/dom=forms unchanged. - Proven offline:
fiori_wc_smoke.robot7/7 (accessible-name attribute AND non-reflectedaccessibleNameproperty) andfiori_hybrid_smoke.robot6/6 (implicitrole=buttonviaaria-label,role=textboxnamed by itslabel[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,Nonewhen absent, never touchingGet Ui5 Page Tree'smode=diffstate), 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 incollection_errors, never abort the diagnostic) and theissuessynthesis is actionable: first JS/console error quoted, a missing UI5 tree names the recommended fallback engines and the iframes to scope into. RespectsSet 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 Compositionand the nested-frame stack (Push/Pop Ui5 Frame); the planner/generator/healer agents referenceGet Page Composition/Get Fiori Diagnosticsat 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.