Skip to content

v1.5.0

Latest

Choose a tag to compare

@fastslack fastslack released this 05 Jun 12:41
· 5 commits to main since this release

Added

  • New / enhanced actions (lighter tests, fewer evaluate blocks):

    • select_combobox — open a MUI Autocomplete/Select, optionally filter, and click the option matching text, with fallback across [role=option] / .MuiAutocomplete-option / li.MuiMenuItem-root. Replaces the verbose open-input + setNativeValue + scan-options evaluate pattern. Fields: selector (default input[role='combobox']), text, filter, openWait/filterWait/waitAfter.
    • click text-mode refinementsscope: "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-text evaluate scans. Backward-compatible: defaults match prior behavior.
    • wait condition gone{ 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_react blur + waitAfter — commit on blur and/or wait after dispatching events (e.g. for debounced autocomplete). Makes per-app set-react-input wrapper modules unnecessary.
  • Nested module parameter forwarding — a module can now $use another module and forward its own params/defaults into the nested call's params block ({{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 in visual-diff.js (zero-dependency PNG decode) and endpoints GET /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-visible rings.
  • Project selection persists across reloads (localStorage) — fixes views (Screenshots, Runs, Suites, Variables, Learnings) getting stuck on "Select a project" after a refresh because S.project wasn't restored from the browser-restored <select>.