Added
-
New / enhanced actions (lighter tests, fewer
evaluateblocks):select_combobox— open a MUI Autocomplete/Select, optionallyfilter, and click the option matchingtext, with fallback across[role=option]/.MuiAutocomplete-option/li.MuiMenuItem-root. Replaces the verbose open-input +setNativeValue+ scan-optionsevaluatepattern. Fields:selector(defaultinput[role='combobox']),text,filter,openWait/filterWait/waitAfter.clicktext-mode refinements —scope: "dialog"(only match inside an open[role=dialog]/.MuiDialog-root),visible: true(skip hidden/zero-size matches),last: true(click the last match). Replaces hand-rolled dialog-button-by-textevaluatescans. Backward-compatible: defaults match prior behavior.waitconditiongone—{ gone: "<css>" }(or{ gone: true, selector|text }) waits until an element/text disappears or hides (spinners, closing backdrops/dialogs), complementing the existing appear-waits. Reduces fixed-sleep flakiness.type_reactblur+waitAfter— commit on blur and/or wait after dispatching events (e.g. for debounced autocomplete). Makes per-appset-react-inputwrapper modules unnecessary.
-
Nested module parameter forwarding — a module can now
$useanother module and forward its own params/defaults into the nested call'sparamsblock ({{param}}placeholders in nested params are resolved against the outer module's scope). Previously this threw "unresolved parameter". -
Dashboard — Live screencast overhaul:
- Horizontal layout: the screencast feed sits on top, the test log below.
- Filmstrip of recent frames in fixed slots (no horizontal scroll — frames pass through in place), newest marked LIVE.
- Auto-follow the running test (sticky — stays on one test until it ends, never interleaves two tests' frames), plus a test selector dropdown to pin a specific test.
- Click any frame to enlarge it full-size in the lightbox.
-
Dashboard — Screenshots tab: "Find blank" scan that flags uniform/blank screenshots and deletes them. New
isBlankImage()detector invisual-diff.js(zero-dependency PNG decode) and endpointsGET /api/db/projects/:id/screenshots/blank-scan+POST /api/screenshots/delete(path-validated). -
Dashboard favicon — "E²" monogram (Test Operations Center palette), embedded as a self-contained data-URI (SVG + PNG fallbacks).
Changed
- Dashboard dark-theme contrast overhaul — WCAG AA color tokens (text/border/signal hues retuned); UI accent decoupled from PASS-green (interactive/active/selected/focus states now use cyan
--ui-accent, green is reserved for PASS); typography floor raised (8–9px labels → 10px, eased letter-spacing); decorative coordinate stamps removed; global:focus-visiblerings. - Project selection persists across reloads (localStorage) — fixes views (Screenshots, Runs, Suites, Variables, Learnings) getting stuck on "Select a project" after a refresh because
S.projectwasn't restored from the browser-restored<select>.