Skip to content

Releases: tapsmith/tapsmith

v0.7.0

Choose a tag to compare

@github-actions github-actions released this 14 Oct 11:44
8c9162e

What's Changed

🚀 Features

  • Accept React Native's remaining accessibility roles in getByRole (PILOT-664) by @samsmithyeah in #349

🐛 Bug Fixes

  • Infer the init --yes platform from --apk/--app and say when iOS is left out (PILOT-626, PILOT-625) by @samsmithyeah in #329
  • Restore routes and event subscription when the route stream reconnects (PILOT-581) by @samsmithyeah in #328
  • Bound every hook with the test timeout so a hung hook fails instead of hanging the run (PILOT-583) by @samsmithyeah in #330
  • Stop init with WRITE_FAILED when a file cannot be written (PILOT-623, PILOT-624) by @samsmithyeah in #331
  • Name label and state filters in Android selector descriptions (PILOT-606) by @samsmithyeah in #332
  • Shard the default project's files in a config without projects (PILOT-596) by @samsmithyeah in #333
  • Run single-target UI, watch and parallel workers under the target's device config (PILOT-654) by @samsmithyeah in #338
  • Match Android RN tab, progressbar, toolbar and combobox roles in getByRole (PILOT-656) by @samsmithyeah in #337
  • Decode XML entities in MCP snapshots and the locator playground (PILOT-658) by @samsmithyeah in #336
  • Bound every MCP tool response so large runs no longer drop the connection (PILOT-657) by @samsmithyeah in #339
  • Honour getByRole state options in MCP tools and the Locator Playground (PILOT-655) by @samsmithyeah in #340
  • Make locator suggestions copy-paste safe and resolvable on device (PILOT-659) by @samsmithyeah in #341
  • Cancel the init wizard cleanly on Ctrl-C instead of crashing (PILOT-518) by @samsmithyeah in #334
  • Stop Android agent commands the daemon gave up on, and never queue behind them (PILOT-605) by @samsmithyeah in #335
  • Match iOS getByRole heading by the header trait and RN generic views by role description (PILOT-608) by @samsmithyeah in #342
  • Say when there's no package.json before suggesting the Tapsmith install (PILOT-631) by @samsmithyeah in #343
  • Recover an unresponsive Android device without restarting adb for every session (PILOT-475) by @samsmithyeah in #344
  • Refuse chained calls in MCP and Locator Playground locator strings instead of dropping them (PILOT-660) by @samsmithyeah in #347
  • Fix the MCP first-snapshot check's post-reboot handshake timeouts and log where the time goes (PILOT-580) by @samsmithyeah in #348
  • Make the Locator Playground and MCP snapshot match the runtime for getByLabel and WebView suggestions (PILOT-666) by @samsmithyeah in #350
  • Replace a stale Tapsmith CA on Android 14+ and warn on rejected certificates (PILOT-712) by @samsmithyeah in #367
  • Make getByRole("tab") match tab items, and "tablist" the tab bar (PILOT-514) by @samsmithyeah in #368
  • Reset the app and re-run beforeAll before a retry under per-file reset (PILOT-715) by @samsmithyeah in #369
  • Never kill Tapsmith emulators when adb can't be queried (PILOT-710) by @samsmithyeah in #370

📝 Documentation

  • Show the Node 22+ requirement beside the website hero install command (PILOT-634) by @samsmithyeah in #345
  • Add migration guides from Maestro, Detox and Appium (PILOT-651) by @samsmithyeah in #346

🧹 Maintenance & CI

  • Spend fewer macOS runner slots on iOS E2E by @samsmithyeah in #318
  • Automate dependency updates with Renovate by @samsmithyeah in #351
  • Update Rust crate anyhow to v1.0.103 [SECURITY] by @renovate[bot] in #356
  • Update Rust crate rustls to v0.23.45 [SECURITY] by @renovate[bot] in #358
  • Update dependency figlet to v1.11.3 [SECURITY] by @renovate[bot] in #355
  • Update dependency @modelcontextprotocol/sdk to v1.31.0 [SECURITY] by @renovate[bot] in #359
  • Update dependency sharp to ^0.35.0 [SECURITY] - autoclosed by @renovate[bot] in #360
  • Update Rust crate h2 to v0.4.16 [SECURITY] by @renovate[bot] in #357
  • Update dependency @grpc/grpc-js to v1.14.5 [SECURITY] by @renovate[bot] in #353
  • Update dependency fflate to v0.8.3 [SECURITY] by @renovate[bot] in #354
  • Update dependency ws to v8.21.0 [SECURITY] by @renovate[bot] in #361
  • Update dependency astro to v7 [SECURITY] by @renovate[bot] in #362
  • Batch Renovate majors and lockfile refreshes into fewer PRs by @samsmithyeah in #366
  • Update dependency vitest to v4 [SECURITY] by @renovate[bot] in #364

New Contributors

Full Changelog: v0.6.0...v0.7.0

v0.6.0

Choose a tag to compare

@github-actions github-actions released this 08 Oct 13:26
3cb107d

What's Changed

🚀 Features

  • Version the trace archive format and make its paths portable (PILOT-331) by @samsmithyeah in #248
  • Parse the CLI with commander: per-command flags, uniform --help, validated trace/video modes (PILOT-260, PILOT-252, PILOT-254) by @samsmithyeah in #253
  • Move the iOS commands under tapsmith ios — breaking: old names removed (PILOT-271) by @samsmithyeah in #256
  • Render image bodies as pictures in the Network tab by @samsmithyeah in #259
  • Boot Tapsmith-launched emulators side by side, each on a reserved port (PILOT-495, PILOT-439) by @samsmithyeah in #291
  • Stop wasting cold iOS simulator setup on devicectl and a needless clear (PILOT-496) by @samsmithyeah in #289
  • Record and enforce device claims across Tapsmith sessions (PILOT-381) by @samsmithyeah in #299
  • Support RegExp in getByText, getByLabel and getByRole's name, and in toHaveText/toContainText (PILOT-520, PILOT-548) by @samsmithyeah in #313

🐛 Bug Fixes

  • Make exists() a non-waiting presence probe (PILOT-344) by @samsmithyeah in #236
  • Promo Video workflow: render on PRs, republish on release when tools/promo changed by @samsmithyeah in #235
  • Make and()/or() work on a real device (PILOT-349) by @samsmithyeah in #239
  • Website: cache-bust the promo video URL by @samsmithyeah in #234
  • Make all() return live nth() locators, like Playwright (PILOT-346) by @samsmithyeah in #241
  • Harden live all() handles and positional composition (PILOT-346 follow-up) by @samsmithyeah in #242
  • Refuse iOS taps on covered elements instead of tapping the cover (PILOT-223) by @samsmithyeah in #243
  • Make the iOS reverse role map independent of Dictionary order (PILOT-365) by @samsmithyeah in #244
  • Refuse Android taps on covered elements instead of tapping the cover (PILOT-362) by @samsmithyeah in #245
  • Make the iOS system-proxy fallback multi-daemon safe and visible (PILOT-319) by @samsmithyeah in #247
  • Honour device pins and --force-install in every run mode (PILOT-261, PILOT-313, PILOT-342) by @samsmithyeah in #246
  • Refuse merge-reports merges that can't be trusted (PILOT-257) by @samsmithyeah in #250
  • Fail loudly when a config file cannot be loaded (PILOT-262) by @samsmithyeah in #251
  • Run TypeScript tests from a CommonJS project without the paths[0] crash (PILOT-382) by @samsmithyeah in #252
  • Fail iOS hideKeyboard() when the keyboard stays up, and stop it pressing the screen centre (PILOT-363) by @samsmithyeah in #254
  • Stop merge-reports announcing "Running tests from 0 file(s)" by @samsmithyeah in #257
  • Unify the --json error envelope and document every --json schema (PILOT-270) by @samsmithyeah in #260
  • Make the MCP server's tool descriptions and version tell agents the truth (PILOT-267) by @samsmithyeah in #261
  • Make init prefer a capture-capable AVD and stop doctor suggesting --force over the user's AVD (PILOT-403, PILOT-404) by @samsmithyeah in #262
  • Never kill an emulator Tapsmith cannot prove it launched (PILOT-401) by @samsmithyeah in #263
  • Run the other device targets when one cannot start, with advice that fits the config (PILOT-400) by @samsmithyeah in #265
  • Dismiss system ANR dialogs in the Android preflight, name them in errors, and warn on the test (PILOT-398, PILOT-399) by @samsmithyeah in #264
  • Upgrade glob to 13 and fail CI on install-time deprecation warnings (PILOT-405) by @samsmithyeah in #268
  • Launch emulators fast locally, find the emulator binary, and report launches that die (PILOT-402, PILOT-417) by @samsmithyeah in #267
  • Judge doctor's platforms by the config, and make every fix it prints work (PILOT-263) by @samsmithyeah in #266
  • Update async-trait to 0.1.92 for clippy 1.99's double_must_use lint by @samsmithyeah in #271
  • Show attached but unusable Android devices in list-devices (PILOT-432) by @samsmithyeah in #270
  • Write init configs that target the iOS devices the user picked (PILOT-251) by @samsmithyeah in #269
  • Drop the core packages' postinstall and stop shipping compiled tests (PILOT-437, PILOT-438) by @samsmithyeah in #274
  • Fail tapsmith verify when no test ran (PILOT-394) by @samsmithyeah in #272
  • Find the npm-installed iOS device agent, check Developer Mode in ios setup-device (PILOT-264) by @samsmithyeah in #273
  • Stop iOS agents when their daemon exits, and reap ones a killed daemon left (PILOT-299) by @samsmithyeah in #275
  • Shut the headless MCP server down when its client closes stdin (PILOT-453) by @samsmithyeah in #276
  • Count only connected physical iOS devices, with one devicectl rule in the SDK and daemon (PILOT-386, PILOT-395) by @samsmithyeah in #277
  • Stream the iOS simulator agent build instead of buffering it, and build init's agent the same way (PILOT-393) by @samsmithyeah in #278
  • Name attached but unusable Android devices in test runs and MCP (PILOT-457) by @samsmithyeah in #280
  • Start UI and watch mode on the device targets that can start (PILOT-415) by @samsmithyeah in #282
  • Build init's iOS simulator agent only for a plan with a simulator target (PILOT-465) by @samsmithyeah in #283
  • Serve the tapsmith://api-reference MCP resource from installed packages and the repo (PILOT-359) by @samsmithyeah in #284
  • Keep the daemon's own error and the full detail in start errors (PILOT-463, PILOT-464) by @samsmithyeah in #285
  • Stop iOS clearData orphaning the app container, and heal apps the agent can't see (PILOT-462) by @samsmithyeah in #286
  • Report a daemon binary spawn() refuses through the formatted start error (PILOT-490) by @samsmithyeah in #288
  • Start the MCP session's own daemon when no daemon it finds will connect (PILOT-489) by @samsmithyeah in #290
  • Seed the init wizard's build prompts from detected builds, and validate them (PILOT-513) by @samsmithyeah in #295
  • Adopt only the configured simulator in parallel iOS runs (PILOT-511) by @samsmithyeah in #293
  • Normalize whitespace in getByText, role names and getByLabel (PILOT-510) by @samsmithyeah in #294
  • Bound the per-test idle waits so never-idle Android screens don't delay every test (PILOT-509) by @samsmithyeah in #296
  • Stop emulator launches hanging on the crash-report dialog, and never orphan a failed launch (PILOT-512) by @samsmithyeah in #298
  • Fix first-run docs breakers and warn when route() handlers can never fire (PILOT-517) by @samsmithyeah in #297
  • Offer to install Tapsmith from init, and say so when a config can't import it (PILOT-551) by @samsmithyeah in #300
  • Validate config keys, types and values at load (PILOT-552) by @samsmithyeah in #302
  • Turn macOS App Nap off for windowed emulators so they aren't throttled (PILOT-515) by @samsmithyeah in #304
  • Add test.describe and clear errors for missing Playwright APIs (PILOT-544) by @samsmithyeah in #306
  • Recognise Expo projects in tapsmith init: Expo build guidance and ids from the app config (PILOT-557) by @samsmithyeah in #303
  • Match getByRole names case-insensitively by substring, with exact: true for a whole match (PILOT-549) by @samsmithyeah in #305
  • Stop Node's module-type warnings on config load, and verify's doubled banner (PILOT-540) by @samsmithyeah in #307
  • Publish prereleases under a dist-tag, and point install docs at tapsmith@beta (PILOT-541) by @samsmithyeah in #308
  • Give no-toolchain advice that matches...
Read more

v0.5.0

Choose a tag to compare

@github-actions github-actions released this 14 Sep 15:27
570fb47

What's Changed

🚀 Features

  • Declared app isolation, daemon reset ladder, persistent UI worker, device readiness and @tapsmith/react-native warm resets by @samsmithyeah in #215
  • Capture Android Firestore traffic instead of tunnelling it by default by @samsmithyeah in #209
  • Add timestamps and column sorting to the Console tab by @samsmithyeah in #211
  • Multi-device tests: drive two devices in one test (PILOT-310) by @samsmithyeah in #222
  • Capture live HTTP/2 streams and Firebase emulator traffic (PILOT-316, PILOT-317) by @samsmithyeah in #223
  • Add opt-out anonymous telemetry to the CLI and SDK (PILOT-330) by @samsmithyeah in #227

🐛 Bug Fixes

  • Never deny iOS permission prompts from the blocking-dialog sweep by @samsmithyeah in #197
  • Let tonic's Status through clippy's result_large_err size lint by @samsmithyeah in #201
  • Stop two timing tests racing the clock they are testing by @samsmithyeah in #206
  • Centre UI-mode empty-state text when it wraps by @samsmithyeah in #203
  • Fix the MCP servers: run TypeScript tests, report failures, and stop lying about the session by @samsmithyeah in #199
  • Make screenshot pick work on actions with no captured hierarchy by @samsmithyeah in #207
  • Fix startup-launch agent flake and iOS Save Password cascade in device E2E by @samsmithyeah in #225
  • Make isVisible() non-waiting and add isHidden() (PILOT-287) by @samsmithyeah in #226
  • Make scrollIntoView honour filter/and/or/scope and unify the resolve-tick ladder (PILOT-345) by @samsmithyeah in #229
  • Retry the iOS foreground probe instead of recovering the session (PILOT-350) by @samsmithyeah in #230
  • Harden Android E2E preflight, and stop system UI hiding the hooks marker by @samsmithyeah in #231

📝 Documentation

  • Homepage: mobile layout fixes, Maestro-focused copy, fact-checked comparison table by @samsmithyeah in #196
  • Promo video refresh, comparison-table rows, and current-UI screenshots by @samsmithyeah in #228

🧹 Maintenance & CI

Other Changes

Full Changelog: v0.4.1...v0.5.0

v0.4.1

Choose a tag to compare

@github-actions github-actions released this 30 Jul 08:33
1ab7474

What's Changed

🐛 Bug Fixes

  • Attribute timeout errors to the in-flight operation; fix reporter frame filtering for npm installs by @samsmithyeah in #194

🧹 Maintenance & CI

Full Changelog: v0.4.0...v0.4.1

v0.4.0

Choose a tag to compare

@github-actions github-actions released this 18 Jul 12:36
d7293e5

What's Changed

🚀 Features

  • Warm in-process deep-link delivery on iOS simulators, bounded by cold file boundaries (PILOT-249) by @samsmithyeah in #174
  • Add element pick mode to the live device mirror in UI mode by @samsmithyeah in #180
  • Guide users off Google Play AVD images that silently break HTTPS capture by @samsmithyeah in #185
  • Extend strict mode to WebView locators (PILOT-227) by @samsmithyeah in #188

🐛 Bug Fixes

  • Surface UI/watch startup failures instead of silently exiting 1 (PILOT-253) by @samsmithyeah in #176
  • Ride out transient agent-connection drops in test runs (PILOT-282) by @samsmithyeah in #182
  • Make scrollIntoView a reliable no-op on already-visible elements (PILOT-283) by @samsmithyeah in #181
  • Render a reset-epoch marker so warm same-screen iOS resets verify as delivered by @samsmithyeah in #178
  • Keep long MCP test runs alive with progress notifications and add a session-wide suite status tool by @samsmithyeah in #184
  • Record no assertion bounds when the element is hidden or gone by @samsmithyeah in #177
  • UI mode: keep a finished test's status and trace when afterAll re-tags attribution by @samsmithyeah in #186
  • Include beforeAll and afterAll actions in packaged test traces by @samsmithyeah in #175
  • Dismiss the Android soft keyboard with BACK instead of ESCAPE (PILOT-284) by @samsmithyeah in #183
  • Bound and retry iOS WebView connection setup; probe newest targets first (PILOT-288) by @samsmithyeah in #189
  • Make E2E CI resilient: fix every root-caused flake across SDK, daemon, and agents by @samsmithyeah in #190

📝 Documentation

  • Render website changelog as flat bullet lists (no categorisation) by @samsmithyeah in #170
  • Refresh website/docs screenshots and add click-to-enlarge by @samsmithyeah in #191

Other Changes

  • Speed up iOS E2E shard setup: cache npm and overlap simulator boot by @samsmithyeah in #179

Full Changelog: v0.3.5...v0.4.0

Promo video (website asset)

Pre-release

Choose a tag to compare

@samsmithyeah samsmithyeah released this 29 Jul 21:45
d7293e5

Rolling asset release: hosts the website's promo video so the 11MB+ mp4 stays out of git history. Replace with gh release upload promo-video promo.mp4 --clobber, then re-run the Deploy Website workflow. Excluded from the website changelog.

v0.3.5

Choose a tag to compare

@github-actions github-actions released this 03 Jul 16:36
170ed7f

What's Changed

🐛 Bug Fixes

  • Fence zombie test bodies and ship the failed attempt's trace on flaky results by @samsmithyeah in #171
  • Cut Android agent per-action a11y round-trips from ~15 to 0-2 (PILOT-278) by @samsmithyeah in #172

Full Changelog: v0.3.4...v0.3.5

v0.3.4

Choose a tag to compare

@github-actions github-actions released this 02 Jul 14:47
562ee33

What's Changed

Other Changes

  • Add retain-on-failure-and-retries trace/video mode (Playwright parity) by @samsmithyeah in #165
  • Retry transient agent-command timeouts within the action budget by @samsmithyeah in #166
  • Fix the systematic E2E CI flakes across all four components by @samsmithyeah in #167
  • Automate releases + publish notes to GitHub Releases and website changelog by @samsmithyeah in #168

New Contributors

  • @github-actions[bot] made their first contribution in #169

Full Changelog: v0.3.3...v0.3.4

v0.3.3

Choose a tag to compare

@samsmithyeah samsmithyeah released this 02 Jul 10:40
7a67da5

What's Changed

Full Changelog: v0.3.2...v0.3.3

v0.3.2

Choose a tag to compare

@samsmithyeah samsmithyeah released this 02 Jul 10:40

What's Changed

  • Address positional/filtered actions by agent-cached element id by @samsmithyeah in #156

Full Changelog: v0.3.1...v0.3.2