@astur-mobile/core 0.5.0-beta.5 → 0.7.0-beta

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/locator.d.ts CHANGED
@@ -22,6 +22,18 @@ export declare const by: {
22
22
  type(value: string, options?: {
23
23
  exact?: boolean;
24
24
  }): ElementSelector;
25
+ /**
26
+ * Placeholder / hint text of an empty input.
27
+ *
28
+ * Neither platform exposes this as a first-class accessibility field, so it
29
+ * is read from the driver's raw attributes where they carry it (`hint` on
30
+ * Android, `placeholderValue` on iOS) and falls back to the element's own
31
+ * value or label when the field is empty — which is how a placeholder
32
+ * surfaces on a field the user has not typed into. See {@link placeholderOf}.
33
+ */
34
+ placeholder(value: string, options?: {
35
+ exact?: boolean;
36
+ }): ElementSelector;
25
37
  xpath(value: string): ElementSelector;
26
38
  coordinates(x: number, y: number): Coordinates;
27
39
  /**
@@ -56,10 +68,116 @@ export interface ScrollIntoViewOptions extends WaitOptions {
56
68
  /** Scrollable region to swipe within. Defaults to the device viewport. */
57
69
  container?: MobileLocator;
58
70
  }
71
+ /** Narrowing predicate for {@link MobileLocator.filter}. */
72
+ export interface LocatorFilter {
73
+ /** Keep matches whose own text, or any descendant's, contains this. */
74
+ hasText?: string | RegExp;
75
+ /** Drop matches whose own text, or any descendant's, contains this. */
76
+ hasNotText?: string | RegExp;
77
+ /** Keep matches containing at least one element the given locator matches. */
78
+ has?: MobileLocator;
79
+ /** Drop matches containing an element the given locator matches. */
80
+ hasNot?: MobileLocator;
81
+ }
82
+ /**
83
+ * Everything layered on top of a locator's base selector.
84
+ *
85
+ * Held separately rather than folded into {@link ElementSelector} because a
86
+ * selector is the atom the native agents understand. A locator carrying no
87
+ * refinement is still handed to the agent whole, exactly as before; only a
88
+ * refined one is resolved here against a tree snapshot.
89
+ */
90
+ interface LocatorRefinement {
91
+ /**
92
+ * Start from everything this locator resolves to, instead of the base
93
+ * selector. Set by `and` / `or`, which combine whole locators: the receiver's
94
+ * own filters and position must apply before the combination, not after it.
95
+ */
96
+ group?: MobileLocator;
97
+ /** Search only within this locator's matches. */
98
+ within?: MobileLocator;
99
+ filters: LocatorFilter[];
100
+ /** Intersected with the base match set. */
101
+ and: MobileLocator[];
102
+ /** Unioned with the base match set. */
103
+ or: MobileLocator[];
104
+ /** Positional narrowing, applied last. Negative counts from the end. */
105
+ index?: number;
106
+ }
59
107
  export declare class MobileLocator {
60
108
  readonly selector: ElementSelector;
61
109
  private readonly session;
62
- constructor(session: PlatformSession, selector: ElementSelector);
110
+ /** `undefined` for a plain locator — the fast path that reaches the agent untouched. */
111
+ private readonly refinement?;
112
+ constructor(session: PlatformSession, selector: ElementSelector, refinement?: LocatorRefinement);
113
+ /**
114
+ * True when this locator can be handed to a driver as its bare selector.
115
+ *
116
+ * Every action checks this before taking a driver's element fast path: those
117
+ * take an {@link ElementSelector}, which cannot carry a refinement, so a
118
+ * refined locator has to resolve here and act on the resulting coordinates.
119
+ *
120
+ * `by.type('any')` resolves here too. It is a wildcard only this tree matcher
121
+ * implements; the native agents read it as a literal type named "any" and
122
+ * find nothing. It also selects the whole tree, which one tree read answers
123
+ * more cheaply than an agent serialising every node on its own.
124
+ */
125
+ private get isPlain();
126
+ private derive;
127
+ /** Scope a child lookup to this locator's matches. */
128
+ private scoped;
129
+ locator(selector: ElementSelector): MobileLocator;
130
+ getByLabel(value: string, options?: {
131
+ exact?: boolean;
132
+ }): MobileLocator;
133
+ getByA11y(value: string, options?: {
134
+ exact?: boolean;
135
+ }): MobileLocator;
136
+ getByText(value: string, options?: {
137
+ exact?: boolean;
138
+ }): MobileLocator;
139
+ getByTestId(value: string, options?: {
140
+ exact?: boolean;
141
+ }): MobileLocator;
142
+ getById(value: string, options?: {
143
+ exact?: boolean;
144
+ }): MobileLocator;
145
+ getByRole(role: MobileRole | string, options?: RoleSelectorOptions): MobileLocator;
146
+ getByType(value: string, options?: {
147
+ exact?: boolean;
148
+ }): MobileLocator;
149
+ getByPlaceholder(value: string, options?: {
150
+ exact?: boolean;
151
+ }): MobileLocator;
152
+ /**
153
+ * Narrow a locator that matches several elements.
154
+ *
155
+ * ```ts
156
+ * device.getByType('Cell').filter({ hasText: 'In stock' })
157
+ * ```
158
+ *
159
+ * Repeated calls stack: every filter must pass.
160
+ */
161
+ filter(filter: LocatorFilter): MobileLocator;
162
+ /**
163
+ * Match elements this locator and `other` both match.
164
+ *
165
+ * Both sides are taken whole, so `a.filter(f).and(b)` filters only `a`, and
166
+ * anything chained afterwards applies to the intersection.
167
+ */
168
+ and(other: MobileLocator): MobileLocator;
169
+ /**
170
+ * Match elements either this locator or `other` matches, in document order.
171
+ *
172
+ * Both sides are taken whole, so `a.filter(f).or(b)` filters only `a`, and
173
+ * anything chained afterwards applies to the union.
174
+ */
175
+ or(other: MobileLocator): MobileLocator;
176
+ private combine;
177
+ first(): MobileLocator;
178
+ last(): MobileLocator;
179
+ /** Match at `index`; negative counts from the end, so `-1` is the last. */
180
+ nth(index: number): MobileLocator;
63
181
  tap(options?: WaitOptions & TapOptions): Promise<void>;
64
182
  doubleTap(options?: WaitOptions & DoubleTapOptions): Promise<void>;
65
183
  longPress(options?: WaitOptions & LongPressOptions): Promise<void>;
@@ -85,6 +203,22 @@ export declare class MobileLocator {
85
203
  */
86
204
  private settleAfterScroll;
87
205
  private currentMatch;
206
+ /**
207
+ * A plain locator addressing the same element, when the element can be named
208
+ * on its own.
209
+ *
210
+ * A composed locator cannot be handed to a driver, because the drivers take
211
+ * an {@link ElementSelector} and a refinement does not fit in one. Falling
212
+ * straight to coordinates would work for pointer actions but quietly lose
213
+ * everything else the drivers do — clearing a field before typing, waiting
214
+ * on the IME, honouring per-element options. So before giving up on the fast
215
+ * path, check whether the resolved element happens to be uniquely
216
+ * identifiable by an id, label, or text of its own. In a list of look-alike
217
+ * rows nothing will be unique and this returns `undefined`; for the far more
218
+ * common "the field inside that section" it succeeds, and the composed
219
+ * locator then behaves exactly like a plain one.
220
+ */
221
+ private plainEquivalent;
88
222
  private scrollRegion;
89
223
  fill(value: string, options?: WaitOptions & ElementFillOptions): Promise<void>;
90
224
  isVisible(options?: WaitOptions): Promise<boolean>;
@@ -94,7 +228,26 @@ export declare class MobileLocator {
94
228
  waitForSnapshot(predicate?: (snapshot: MobileElementSnapshot) => boolean, options?: WaitOptions): Promise<MobileElementSnapshot>;
95
229
  snapshot(options?: WaitOptions): Promise<MobileElementSnapshot>;
96
230
  all(options?: WaitOptions): Promise<MobileElementSnapshot[]>;
231
+ /**
232
+ * The element this locator resolves to right now, or `undefined` when it is
233
+ * absent. It never waits, and a failed read throws instead of reading as
234
+ * "absent": a caller that retries has to be able to tell the two apart.
235
+ */
236
+ query(): Promise<MobileElementSnapshot | undefined>;
237
+ /** The session default applied when a wait passes no `timeout`. */
238
+ get defaultTimeout(): number;
97
239
  queryAll(): Promise<MobileElementSnapshot[]>;
240
+ /**
241
+ * Resolve selector + refinement against one tree snapshot.
242
+ *
243
+ * Order matters and mirrors how the API reads left to right: scope, then the
244
+ * base match, then set combination, then filters, then position. `nth` last
245
+ * is what makes `.filter(...).first()` mean "first of the filtered set"
246
+ * rather than "the first match, if it survives the filter".
247
+ */
248
+ /** @internal — module-level helpers resolve nested locators through this. */
249
+ resolveAgainst(tree: MobileElementSnapshot, order: Map<MobileElementSnapshot, number>): MobileElementSnapshot[];
250
+ private passesFilter;
98
251
  waitFor(options?: WaitOptions & {
99
252
  state?: 'visible' | 'hidden' | 'attached';
100
253
  }): Promise<void>;
@@ -123,11 +276,46 @@ export declare class MobileLocator {
123
276
  isDisabled(options?: WaitOptions): Promise<boolean>;
124
277
  isSelected(options?: WaitOptions): Promise<boolean>;
125
278
  isFocused(options?: WaitOptions): Promise<boolean>;
279
+ /**
280
+ * Checked state of a checkbox, switch, radio, or toggle.
281
+ *
282
+ * Throws rather than returning `false` when the element reports no checked
283
+ * state at all — "this is not a checkable control" is a different fact from
284
+ * "it is unchecked", and silently conflating them turns a mis-aimed locator
285
+ * into a passing assertion.
286
+ */
287
+ isChecked(options?: WaitOptions): Promise<boolean>;
288
+ /** True when the element and everything beneath it carry no text at all. */
289
+ isEmpty(options?: WaitOptions): Promise<boolean>;
126
290
  toString(): string;
127
291
  }
128
292
  export declare function findElement(root: MobileElementSnapshot, selector: ElementSelector): MobileElementSnapshot | undefined;
129
293
  export declare function findElements(root: MobileElementSnapshot, selector: ElementSelector): MobileElementSnapshot[];
130
294
  export declare function matches(element: MobileElementSnapshot, selector: ElementSelector): boolean;
295
+ /**
296
+ * Placeholder / hint text for an element, or `undefined` when it has none.
297
+ *
298
+ * Read from the driver's raw attributes first, because that is the only place
299
+ * either platform reports it faithfully. The fallback covers the common case
300
+ * the raw attributes miss: an *empty* field whose only visible string is the
301
+ * placeholder, which both platforms surface as the value or the label. A field
302
+ * the user has typed into reports its content there instead, so the fallback is
303
+ * deliberately skipped once `text` is present — otherwise typing into a field
304
+ * would silently change what `getByPlaceholder` matches.
305
+ */
306
+ export declare function placeholderOf(element: MobileElementSnapshot): string | undefined;
307
+ /**
308
+ * Checked state of a checkbox, switch, radio, or toggle.
309
+ *
310
+ * Prefers the driver's own report. Where a driver does not carry one, the state
311
+ * is derived from the raw attributes and then from the value string the
312
+ * platforms use for toggles (`"1"`, `"true"`, `"on"`). Returns `undefined`
313
+ * rather than `false` when nothing answers, so "this element has no checked
314
+ * state" stays distinguishable from "it is unchecked".
315
+ */
316
+ export declare function checkedStateOf(element: MobileElementSnapshot): boolean | undefined;
317
+ /** Concatenated text of an element and everything beneath it. */
318
+ export declare function subtreeText(element: MobileElementSnapshot): string;
131
319
  export declare function flattenTree(root: MobileElementSnapshot): MobileElementSnapshot[];
132
320
  export declare function centerOf(bounds: Bounds): Coordinates;
133
321
  export declare function pointInBounds(bounds: Bounds, xRatio: number, yRatio: number): Coordinates;
@@ -154,4 +342,5 @@ export declare function screenshotGeometry(session: PlatformSession, image: Buff
154
342
  * them produces a diff that looks like a regression instead of a mismatch.
155
343
  */
156
344
  export declare function screenshotKey(session: PlatformSession): Promise<string>;
345
+ export {};
157
346
  //# sourceMappingURL=locator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"locator.d.ts","sourceRoot":"","sources":["../src/locator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"locator.d.ts","sourceRoot":"","sources":["../src/locator.ts"],"names":[],"mappings":"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"}