0.5.7 — Hybrid Fiori sessions + secure ECC multi-session
🇫🇷 Release « sessions hybrides ». Deux axes livrés ensemble : côté Fiori, les pages hybrides (sonde de composition, moteur DOM générique, pile de frames imbriquées) ; côté ECC, le multi-session par alias en sécurité (2e fenêtre sans re-login, bascule explicite, teardown isolé). Chaque keyword a été piloté en direct pas-à-pas via rf-mcp puis verrouillé par une suite reproductible rejouée par le vrai robot. Dézippez, install.cmd, c'est prêt.
What's new
Fiori hybrid sessions (one page, several technologies per region)
Get Page Composition— hybrid perception probe: which technologies coexist where (classic UI5 runtime /ui5-*Web Components hosts / WebGUIlsdataelements / React-Angular-Vue hints), the recommended engines in fallback order, and every iframe with a reusable Browser selector plus its own probed composition (best-effort, never a failed perception).- Generic
domengine — the 5th resolution engine (Resolve/Click/Fill Dom …,Get Dom Text,Get Dom Match Count,Dom Element Should Be Visible): the non-SAP regions of a hybrid page (React/Angular/vanilla widgets) enter the same grammar — CSS + text + ARIA role + attributes, light-DOM CSS paths, and adom=last-resort form inResolve Ui5 With Fallback(role→xpath→sid→wc→dom, healing telemetry included). - Nested-frame stack —
Push Ui5 Frame/Pop Ui5 Frame/Get Ui5 Frame Stack: nested-iframe scoping (Browserlevel1 >>> level2chaining) for composite launchpads; a surplus Pop fails loudly.Set Ui5 Framekeeps its exact semantics — fully backward compatible. - Proven offline by
tests/robot/fiori_hybrid_smoke.robot5/5 (four technologies, two genuinely nested frame levels), after the same cycle was driven live step-by-step through rf-mcp.
ECC multi-session registry (two live sessions, safely)
Open Sap Session(second connection by string or SAP Logon entry; optionalRSYST-*login with a never-logged RobotSecretpassword; alias rollback on failure) andCreate Gui Session(second window on the ACTIVE connection — scripted/o, no re-login hence no multi-logon popup: the recommended path for "write in one session, verify in the other").Switch / List / Close / Close All Sap Sessions,Get Active Sap Session— explicit multiplexing (one active session at a time), JSON-safe inventory (rf-mcp compatible), isolated teardown: closing an alias never closes a connection another alias still uses.- STA safety rail: the owning COM thread is remembered per alias; cross-thread access gets a defensive
CoInitialize(the marshalled mode the rf-mcp state providers rely on) andSAPFX_STRICT_COM_THREAD=1upgrades it to an actionable error instead of COM's crypticRPC_E_WRONG_THREAD. - Proven live by
tests/robot/ecc_multisession_smoke.robot4/4 vs the ABAP Platform Trial A4H (independent transactions per alias, surviving session still drivable), after the same cycle was driven step-by-step through rf-mcp.
Fixed
Sid Should Be Visible(and thesid=fallback form) passed the element state as a string to Browser's internal Python API (KeyError: 'visible'— Robot's argument conversion does not apply throughget_library_instance). Both now use the realElementStateenum +timedeltatimeout. Caught live by the new hybrid smoke.
Proof numbers: 720 unit tests (677 → 720) · 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.7-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: 5937309695d6c72616d2ceb4a780bc38261fd7c32812450cf341887017631a0b.
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).