Skip to content

0.5.7 — Hybrid Fiori sessions + secure ECC multi-session

Choose a tag to compare

@CyrilM29 CyrilM29 released this 17 Jul 20:17

🇫🇷 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 / WebGUI lsdata elements / 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 dom engine — 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 a dom= last-resort form in Resolve Ui5 With Fallback (role→xpath→sid→wc→dom, healing telemetry included).
  • Nested-frame stackPush Ui5 Frame / Pop Ui5 Frame / Get Ui5 Frame Stack: nested-iframe scoping (Browser level1 >>> level2 chaining) for composite launchpads; a surplus Pop fails loudly. Set Ui5 Frame keeps its exact semantics — fully backward compatible.
  • Proven offline by tests/robot/fiori_hybrid_smoke.robot 5/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; optional RSYST-* login with a never-logged Robot Secret password; alias rollback on failure) and Create 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) and SAPFX_STRICT_COM_THREAD=1 upgrades it to an actionable error instead of COM's cryptic RPC_E_WRONG_THREAD.
  • Proven live by tests/robot/ecc_multisession_smoke.robot 4/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 the sid= fallback form) passed the element state as a string to Browser's internal Python API (KeyError: 'visible' — Robot's argument conversion does not apply through get_library_instance). Both now use the real ElementState enum + timedelta timeout. 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).