From 7014d037064fa827e41ee78109410d195f7cc6b6 Mon Sep 17 00:00:00 2001 From: BenSheridanEdwards Date: Thu, 2 Jul 2026 22:08:22 +0100 Subject: [PATCH] chore(release): v0.12.0 Scrolling (scrollIntoView), selector discovery (nativeproof inspect), toHaveValue + role state filters, non-input fill warnings, and seven locator/CLI/mock-server correctness fixes. --- CHANGELOG.md | 43 +++++++++++++++++++++++++++++++++++++++++++ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 46 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 790e3c5..eaa96c7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,49 @@ All notable changes to NativeProof are documented here. The format follows [Keep a Changelog](https://keepachangelog.com/) and the project adheres to [Semantic Versioning](https://semver.org/). +## 0.12.0 + +Scrolling, selector discovery, and a hardened locator core. + +**Added** + +- `Locator.scrollIntoView({ direction?, maxSwipes? })` swipes until the element appears — + Playwright's scrollIntoViewIfNeeded for native, computing the swipe vector from the page + source's own bounds. Backed by an optional `Driver.swipe` seam. Device-proven on Android 15 + and iOS 26.5 (`docs/proof/scroll-into-view/`). +- `nativeproof inspect` prints the candidate `native.*` locators for the configured app's + current screen — semantic roles with names first, then visible text, then test ids — ending + the read-the-XML-and-guess authoring loop (`docs/proof/inspect/`). +- `expect(locator).toHaveValue(value)` and `Locator.inputValue()` assert an input's own content + (no label/placeholder fallback). +- `getByRole(role, { checked?, disabled? })` selects controls by state. +- `fill()`/`clear()` warn when the matched node is not a text input — the silent-no-op + observed on real devices when a locator matches a label instead of the field. + +**Fixed** + +- Attribute matching is anchored to whole names: `long-clickable` no longer passes as + `clickable` (wrong `clickableAncestor` tap targets, lying `toBeEnabled`/`toBeDisabled`) and + iOS `placeholderValue` is no longer read as `value` (placeholders matched as visible text). +- Exact-string selectors match labels however the source escaped them (`'`, `'`, or a + literal apostrophe) — `getByText("I'll speak")` previously could never match. +- Caller-supplied `g`-flagged RegExps no longer carry state across wait polls, which made + negated `toShow`/`toHaveText` assertions falsely pass. +- `near()` anchors, clickable ancestors, and control-state lookups resolve from a single + source snapshot — no more cross-frame mispairing under animation (and one source read per + poll instead of three). +- `startMockServer` rejects with an actionable error on a busy port instead of crashing the + worker process. +- Onboarding config rewrites survive comments containing apostrophes or braces. +- `--ios` with no iOS project errors listing the available projects instead of silently + running the first project; the CLI preflight honors the same `PLATFORM` / + `NATIVEPROOF_PROJECT` env vars the runner reads. + +**Changed** + +- The README now documents the full locator, interaction, assertion, and mocking surface, + including `mock.route()` + traffic assertions and the did-you-mean failure hints. + ## 0.11.0 Atomic text entry and self-explaining failures. diff --git a/package-lock.json b/package-lock.json index 4c61d6a..c38b85f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "nativeproof", - "version": "0.11.0", + "version": "0.12.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "nativeproof", - "version": "0.11.0", + "version": "0.12.0", "license": "MIT", "dependencies": { "@wdio/cli": "^9.29.1", diff --git a/package.json b/package.json index 8044544..8d1259c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "nativeproof", - "version": "0.11.0", + "version": "0.12.0", "license": "MIT", "type": "module", "description": "Playwright-feeling native mobile E2E for Appium/WebdriverIO with runner-native tests, locators, expect, fixtures, and evidence.",