From 31f9c8de118452fe2e6c21c0701751fb7b5c42e6 Mon Sep 17 00:00:00 2001 From: PJ Date: Wed, 19 Aug 2026 09:41:48 +0530 Subject: [PATCH] docs(manual): state how text combines with the key beside it the object selector section said every pair must match without saying where the innermost rule then lands. --- docs/manual/spec-language.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/manual/spec-language.md b/docs/manual/spec-language.md index 061fc4e..3db96e0 100644 --- a/docs/manual/spec-language.md +++ b/docs/manual/spec-language.md @@ -80,6 +80,8 @@ s.ax.find({ testTag: "AccountCard", clickable: true }) Every key-value pair must match. A key means the same thing here as in the string form: `id`, `desc`, `idPrefix`, `descPrefix` and `tag` keep their matching rules, and every other key is an attribute name, with substring and boolean rules per attribute. +`text` is ANDed like any other key, and the innermost rule then holds over what the whole selector matched: `{ class: "status", text: "Sent" }` drops a row whose badge carries the class and the text both, and keeps one whose badge carries the text alone. + Known attribute names are typed; you get autocomplete on `testTag`, `text`, `content-desc`, the boolean states (`clickable`, `enabled`, `focused`, `checked`, `selected`, `secure`), and the cross-platform aliases (`identifier`, `accessibilityIdentifier`, `accessibilityText`, `accessibilityLabel`, `label`, `resource-id`, `class`, `elementType`, `package`, `placeholderValue`, `hintText`). Boolean state attributes accept a native `true` / `false`. Other attribute keys still type-check as a string-valued fallback so raw driver attributes remain reachable. A boolean state matches only where the platform reports it. `{secure: true}` names the password entry and `{secure: false}` names an editable field that is not one, so neither value names an element that is no field at all, and neither matches anything on Android, which reports the fact for nothing.