Skip to content

Tags: devicelab-dev/maestro-runner

Tags

v1.1.24

Toggle v1.1.24's commit message
fix(record): keep screenrecord alive after the launching adb shell exits

A backgrounded screenrecord that inherits the adb shell's stdio either dies
with the session or holds it open, so --record's start-verification found no
process and every recording silently skipped on real devices. Redirect stdio
to /dev/null at all four launch sites — the standalone startRecording step
had the same latent bug.

Caught validating the 1.1.24 build on a Pixel 4a; both Android drivers now
pull a playable MP4 into the flow's report assets.

v1.1.22

Toggle v1.1.22's commit message
docs(changelog): add 1.1.22 release notes

v1.1.21

Toggle v1.1.21's commit message
docs(changelog): add 1.1.21 release notes

v1.1.20

Toggle v1.1.20's commit message
docs(changelog): add 1.1.20 release notes

v1.1.19

Toggle v1.1.19's commit message
docs(changelog): add 1.1.19 release notes

v1.1.18

Toggle v1.1.18's commit message
docs(changelog): credit PR authors and reporters for 1.1.18

v1.1.17

Toggle v1.1.17's commit message
docs: add CHANGELOG entry for v1.1.17

v1.1.16

Toggle v1.1.16's commit message
docs: add CHANGELOG entry for v1.1.16

Release notes for 1.1.16 — cropOn, --artifacts, experimental iOS DeviceLab driver, iOS setLocation, Android DeviceLab tap reliability + lazy-retry timing fix, iOS startup resilience, AWS Device Farm support. Credits issue reporters.

v1.1.15

Toggle v1.1.15's commit message
Fix web actionability gate regressions and AX-tree non-Element returns

Three closely-related regressions surfaced by the desktop browser suites
on 1.1.15:

1. The actionability gate's `_isElementVisible` re-check was stricter
   than the finder cascade's own visibility logic, so legitimately
   visible elements got rejected. The worst case was `<input type=
   checkbox style="opacity:0">` covered by a styled `<label>` (TodoMVC
   pattern) — clicking it works in real browsers, but the gate's
   opacity-zero rejection blocked the dispatch. Dropped the visibility
   re-check from `_isActionable`. The gate keeps its unique
   contributions: `disabled` / `aria-disabled` / `pointer-events: none`.

2. `findByAXTree` returned `#text` node handles when the AX node's
   accessible name came from a single text child (saucedemo "Back to
   products", demoblaze "Home"). Rod's `Click()` can't dispatch on
   non-Element nodes, so the tap failed silently. `axNodeToElement`
   now walks up to the nearest ancestor Element when the resolved
   handle has `nodeType !== 1`.

3. SPAs that put the route label into `document.title` (saucedemo
   again) had their accessible name surfaced by the AX-tree query
   against `<title>` — an off-screen metadata element. Both
   `findByAXTree` and the JS `findByText` resolver now filter out
   non-renderable tags (`<title>`, `<script>`, `<style>`, `<meta>`,
   `<link>`, `<base>`, `<head>`, `<noscript>`, `<template>`).

Bonus: when the actionability gate does time out, the error message
now includes the specific rejection reason
(`last rejection: pointer-events-none`, `last rejection: disabled-prop`,
etc.) read from a `__maestroLastRejection` global the gate maintains.
Helps users debug their own flows without re-running with -v.

Verified on the desktop browser suites:
  saucedemo:    9/12 → 10/12 (Browse Products fixed)
  demoblaze:   10/12 → 11/12 (Home Navigation fixed)
  todomvc:      3/10 →  4/10 in suite, 10/10 when run in isolation
                (remaining suite failures are localStorage carry-over
                between flows — pre-existing test infrastructure
                issue, not a 1.1.15 regression)
  the-internet 13/15, expandtesting 12/15: unchanged (pre-existing
                site quirks, not 1.1.15-related)