@astur-mobile/core 0.6.0-beta → 0.7.1-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.js CHANGED
@@ -24,6 +24,18 @@ export const by = {
24
24
  type(value, options) {
25
25
  return { strategy: 'type', value, exact: options?.exact ?? true };
26
26
  },
27
+ /**
28
+ * Placeholder / hint text of an empty input.
29
+ *
30
+ * Neither platform exposes this as a first-class accessibility field, so it
31
+ * is read from the driver's raw attributes where they carry it (`hint` on
32
+ * Android, `placeholderValue` on iOS) and falls back to the element's own
33
+ * value or label when the field is empty — which is how a placeholder
34
+ * surfaces on a field the user has not typed into. See {@link placeholderOf}.
35
+ */
36
+ placeholder(value, options) {
37
+ return { strategy: 'placeholder', value, exact: options?.exact ?? true };
38
+ },
27
39
  xpath(value) {
28
40
  return { strategy: 'xpath', value, exact: true };
29
41
  },
@@ -70,15 +82,115 @@ function formatNativeSelectorValue(payload) {
70
82
  }
71
83
  return parts.join(' ');
72
84
  }
85
+ function emptyRefinement() {
86
+ return { filters: [], and: [], or: [] };
87
+ }
73
88
  export class MobileLocator {
74
89
  selector;
75
90
  session;
76
- constructor(session, selector) {
91
+ /** `undefined` for a plain locator — the fast path that reaches the agent untouched. */
92
+ refinement;
93
+ constructor(session, selector, refinement) {
77
94
  this.session = session;
78
95
  this.selector = selector;
96
+ this.refinement = refinement;
97
+ }
98
+ /**
99
+ * True when this locator can be handed to a driver as its bare selector.
100
+ *
101
+ * Every action checks this before taking a driver's element fast path: those
102
+ * take an {@link ElementSelector}, which cannot carry a refinement, so a
103
+ * refined locator has to resolve here and act on the resulting coordinates.
104
+ *
105
+ * `by.type('any')` resolves here too. It is a wildcard only this tree matcher
106
+ * implements; the native agents read it as a literal type named "any" and
107
+ * find nothing. It also selects the whole tree, which one tree read answers
108
+ * more cheaply than an agent serialising every node on its own.
109
+ */
110
+ get isPlain() {
111
+ return this.refinement === undefined && !isAnyType(this.selector);
112
+ }
113
+ derive(change) {
114
+ const base = this.refinement ?? emptyRefinement();
115
+ return new MobileLocator(this.session, this.selector, { ...base, ...change });
116
+ }
117
+ /** Scope a child lookup to this locator's matches. */
118
+ scoped(selector) {
119
+ return new MobileLocator(this.session, selector, { ...emptyRefinement(), within: this });
120
+ }
121
+ locator(selector) {
122
+ return this.scoped(selector);
123
+ }
124
+ getByLabel(value, options) {
125
+ return this.scoped(by.label(value, options));
126
+ }
127
+ getByA11y(value, options) {
128
+ return this.scoped(by.a11y(value, options));
129
+ }
130
+ getByText(value, options) {
131
+ return this.scoped(by.text(value, options));
132
+ }
133
+ getByTestId(value, options) {
134
+ return this.scoped(by.testId(value, options));
135
+ }
136
+ getById(value, options) {
137
+ return this.scoped(by.id(value, options));
138
+ }
139
+ getByRole(role, options) {
140
+ return this.scoped(by.role(role, options));
141
+ }
142
+ getByType(value, options) {
143
+ return this.scoped(by.type(value, options));
144
+ }
145
+ getByPlaceholder(value, options) {
146
+ return this.scoped(by.placeholder(value, options));
147
+ }
148
+ /**
149
+ * Narrow a locator that matches several elements.
150
+ *
151
+ * ```ts
152
+ * device.getByType('Cell').filter({ hasText: 'In stock' })
153
+ * ```
154
+ *
155
+ * Repeated calls stack: every filter must pass.
156
+ */
157
+ filter(filter) {
158
+ const base = this.refinement ?? emptyRefinement();
159
+ return this.derive({ filters: [...base.filters, filter] });
160
+ }
161
+ /**
162
+ * Match elements this locator and `other` both match.
163
+ *
164
+ * Both sides are taken whole, so `a.filter(f).and(b)` filters only `a`, and
165
+ * anything chained afterwards applies to the intersection.
166
+ */
167
+ and(other) {
168
+ return this.combine({ and: [other] });
169
+ }
170
+ /**
171
+ * Match elements either this locator or `other` matches, in document order.
172
+ *
173
+ * Both sides are taken whole, so `a.filter(f).or(b)` filters only `a`, and
174
+ * anything chained afterwards applies to the union.
175
+ */
176
+ or(other) {
177
+ return this.combine({ or: [other] });
178
+ }
179
+ combine(change) {
180
+ return new MobileLocator(this.session, this.selector, { ...emptyRefinement(), group: this, ...change });
181
+ }
182
+ first() {
183
+ return this.nth(0);
184
+ }
185
+ last() {
186
+ return this.nth(-1);
187
+ }
188
+ /** Match at `index`; negative counts from the end, so `-1` is the last. */
189
+ nth(index) {
190
+ return this.derive({ index });
79
191
  }
80
192
  async tap(options = {}) {
81
- if (this.session.tapElement) {
193
+ if (this.isPlain && this.session.tapElement) {
82
194
  await this.session.tapElement(this.selector, withKeyboardDefault(this.session, options));
83
195
  return;
84
196
  }
@@ -90,7 +202,7 @@ export class MobileLocator {
90
202
  await this.session.tap(centerOf(element.bounds));
91
203
  }
92
204
  async doubleTap(options = {}) {
93
- if (this.session.doubleTapElement) {
205
+ if (this.isPlain && this.session.doubleTapElement) {
94
206
  await this.session.doubleTapElement(this.selector, withKeyboardDefault(this.session, options));
95
207
  return;
96
208
  }
@@ -109,7 +221,7 @@ export class MobileLocator {
109
221
  await this.session.tap(point);
110
222
  }
111
223
  async longPress(options = {}) {
112
- if (this.session.longPressElement) {
224
+ if (this.isPlain && this.session.longPressElement) {
113
225
  await this.session.longPressElement(this.selector, withKeyboardDefault(this.session, options));
114
226
  return;
115
227
  }
@@ -124,7 +236,7 @@ export class MobileLocator {
124
236
  await this.longPress(options);
125
237
  }
126
238
  async dragTo(target, options = {}) {
127
- if (this.session.dragElement) {
239
+ if (this.isPlain && this.session.dragElement) {
128
240
  if (target instanceof MobileLocator && target.session !== this.session) {
129
241
  throw new AsturError('CROSS_SESSION_LOCATOR', 'Cannot drag between locators from different Astur device sessions.');
130
242
  }
@@ -207,9 +319,52 @@ export class MobileLocator {
207
319
  return previous;
208
320
  }
209
321
  async currentMatch() {
210
- return this.session.findElement
211
- ? this.session.findElement(this.selector)
212
- : findElement(await this.session.getTree(), this.selector);
322
+ if (this.isPlain) {
323
+ return this.session.findElement
324
+ ? this.session.findElement(this.selector)
325
+ : findElement(await this.session.getTree(), this.selector);
326
+ }
327
+ return (await this.queryAll())[0];
328
+ }
329
+ /**
330
+ * A plain locator addressing the same element, when the element can be named
331
+ * on its own.
332
+ *
333
+ * A composed locator cannot be handed to a driver, because the drivers take
334
+ * an {@link ElementSelector} and a refinement does not fit in one. Falling
335
+ * straight to coordinates would work for pointer actions but quietly lose
336
+ * everything else the drivers do — clearing a field before typing, waiting
337
+ * on the IME, honouring per-element options. So before giving up on the fast
338
+ * path, check whether the resolved element happens to be uniquely
339
+ * identifiable by an id, label, or text of its own. In a list of look-alike
340
+ * rows nothing will be unique and this returns `undefined`; for the far more
341
+ * common "the field inside that section" it succeeds, and the composed
342
+ * locator then behaves exactly like a plain one.
343
+ */
344
+ async plainEquivalent() {
345
+ if (this.isPlain) {
346
+ return this;
347
+ }
348
+ const tree = await this.session.getTree();
349
+ const element = this.resolveAgainst(tree, documentOrder(tree))[0];
350
+ if (!element) {
351
+ return undefined;
352
+ }
353
+ const candidates = [
354
+ element.id === undefined ? undefined : by.id(element.id),
355
+ element.label === undefined ? undefined : by.label(element.label),
356
+ element.text === undefined ? undefined : by.text(element.text)
357
+ ];
358
+ for (const candidate of candidates) {
359
+ if (!candidate) {
360
+ continue;
361
+ }
362
+ const found = findElements(tree, candidate);
363
+ if (found.length === 1 && found[0] === element) {
364
+ return new MobileLocator(this.session, candidate);
365
+ }
366
+ }
367
+ return undefined;
213
368
  }
214
369
  async scrollRegion() {
215
370
  if (this.session.getViewport) {
@@ -218,6 +373,23 @@ export class MobileLocator {
218
373
  return (await this.session.getTree()).bounds;
219
374
  }
220
375
  async fill(value, options = {}) {
376
+ if (!this.isPlain) {
377
+ const plain = await this.plainEquivalent();
378
+ if (plain) {
379
+ await plain.fill(value, options);
380
+ return;
381
+ }
382
+ // Nothing names this element on its own, so the drivers' selector-based
383
+ // fill is out of reach. Focus it by tapping and type into that focus.
384
+ if (!this.session.typeText) {
385
+ throw new AsturError('COMPOSED_LOCATOR_FILL_UNSUPPORTED', `Cannot fill ${formatSelector(this.selector)} through a composed locator: the element is not uniquely identifiable on its own, and this platform cannot type into the focused element. Target the field with a plain locator instead.`);
386
+ }
387
+ const target = await this.waitForVisible(options);
388
+ await preparePointerTargetForKeyboard(this.session, centerOf(target.bounds), options.keyboard);
389
+ await this.session.tap(centerOf(target.bounds));
390
+ await this.session.typeText(value);
391
+ return;
392
+ }
221
393
  if (this.session.fillElement) {
222
394
  await this.session.fillElement(this.selector, value, withKeyboardDefault(this.session, options));
223
395
  return;
@@ -245,7 +417,7 @@ export class MobileLocator {
245
417
  }
246
418
  }
247
419
  async waitForVisible(options = {}) {
248
- if (this.session.waitForElement) {
420
+ if (this.isPlain && this.session.waitForElement) {
249
421
  return this.session.waitForElement(this.selector, {
250
422
  ...options,
251
423
  state: 'visible'
@@ -257,13 +429,12 @@ export class MobileLocator {
257
429
  });
258
430
  }
259
431
  async waitForHidden(options = {}) {
260
- if (this.session.waitForElementHidden) {
432
+ if (this.isPlain && this.session.waitForElementHidden) {
261
433
  await this.session.waitForElementHidden(this.selector, options);
262
434
  return;
263
435
  }
264
436
  await waitFor(async () => {
265
- const root = await this.session.getTree();
266
- const match = findElement(root, this.selector);
437
+ const match = await this.currentMatch();
267
438
  return !match || !match.visible;
268
439
  }, {
269
440
  ...options,
@@ -273,9 +444,7 @@ export class MobileLocator {
273
444
  }
274
445
  async waitForSnapshot(predicate = () => true, options = {}) {
275
446
  return waitFor(async () => {
276
- const match = this.session.findElement
277
- ? await this.session.findElement(this.selector)
278
- : findElement(await this.session.getTree(), this.selector);
447
+ const match = await this.currentMatch();
279
448
  return match && predicate(match) ? match : undefined;
280
449
  }, {
281
450
  ...options,
@@ -299,10 +468,89 @@ export class MobileLocator {
299
468
  message: options.message ?? `Timed out waiting for ${formatSelector(this.selector)} to match at least one element`
300
469
  });
301
470
  }
471
+ /**
472
+ * The element this locator resolves to right now, or `undefined` when it is
473
+ * absent. It never waits, and a failed read throws instead of reading as
474
+ * "absent": a caller that retries has to be able to tell the two apart.
475
+ */
476
+ async query() {
477
+ return this.currentMatch();
478
+ }
479
+ /** The session default applied when a wait passes no `timeout`. */
480
+ get defaultTimeout() {
481
+ return this.session.capabilities.timeout;
482
+ }
302
483
  async queryAll() {
303
- return this.session.findElements
304
- ? this.session.findElements(this.selector)
305
- : findElements(await this.session.getTree(), this.selector);
484
+ if (this.isPlain) {
485
+ return this.session.findElements
486
+ ? this.session.findElements(this.selector)
487
+ : findElements(await this.session.getTree(), this.selector);
488
+ }
489
+ // A refinement is relative to a whole tree, so it must be resolved against
490
+ // one snapshot. Taking a single snapshot also keeps the comparison honest:
491
+ // resolving each stage with its own query could interleave with a UI
492
+ // change and produce a set that never existed on screen at one instant.
493
+ const tree = await this.session.getTree();
494
+ return this.resolveAgainst(tree, documentOrder(tree));
495
+ }
496
+ /**
497
+ * Resolve selector + refinement against one tree snapshot.
498
+ *
499
+ * Order matters and mirrors how the API reads left to right: scope, then the
500
+ * base match, then set combination, then filters, then position. `nth` last
501
+ * is what makes `.filter(...).first()` mean "first of the filtered set"
502
+ * rather than "the first match, if it survives the filter".
503
+ */
504
+ /** @internal — module-level helpers resolve nested locators through this. */
505
+ resolveAgainst(tree, order) {
506
+ const refinement = this.refinement;
507
+ if (!refinement) {
508
+ return findElements(tree, this.selector);
509
+ }
510
+ let matches;
511
+ if (refinement.group) {
512
+ matches = refinement.group.resolveAgainst(tree, order);
513
+ }
514
+ else if (refinement.within) {
515
+ // Strict descendants: a parent does not contain itself.
516
+ const roots = refinement.within.resolveAgainst(tree, order);
517
+ matches = roots.flatMap((root) => root.children.flatMap((child) => findElements(child, this.selector)));
518
+ }
519
+ else {
520
+ matches = findElements(tree, this.selector);
521
+ }
522
+ for (const other of refinement.and) {
523
+ const allowed = new Set(other.resolveAgainst(tree, order));
524
+ matches = matches.filter((element) => allowed.has(element));
525
+ }
526
+ for (const other of refinement.or) {
527
+ matches = matches.concat(other.resolveAgainst(tree, order));
528
+ }
529
+ matches = sortByDocumentOrder(dedupe(matches), order);
530
+ for (const filter of refinement.filters) {
531
+ matches = matches.filter((element) => this.passesFilter(element, filter, tree, order));
532
+ }
533
+ if (refinement.index !== undefined) {
534
+ const index = refinement.index < 0 ? matches.length + refinement.index : refinement.index;
535
+ const picked = matches[index];
536
+ return picked ? [picked] : [];
537
+ }
538
+ return matches;
539
+ }
540
+ passesFilter(element, filter, tree, order) {
541
+ if (filter.hasText !== undefined && !textMatches(subtreeText(element), filter.hasText)) {
542
+ return false;
543
+ }
544
+ if (filter.hasNotText !== undefined && textMatches(subtreeText(element), filter.hasNotText)) {
545
+ return false;
546
+ }
547
+ if (filter.has !== undefined && !containsMatch(element, filter.has, tree, order)) {
548
+ return false;
549
+ }
550
+ if (filter.hasNot !== undefined && containsMatch(element, filter.hasNot, tree, order)) {
551
+ return false;
552
+ }
553
+ return true;
306
554
  }
307
555
  async waitFor(options = {}) {
308
556
  const { state = 'visible', ...wait } = options;
@@ -365,6 +613,26 @@ export class MobileLocator {
365
613
  async isFocused(options = {}) {
366
614
  return (await this.snapshot(options)).focused === true;
367
615
  }
616
+ /**
617
+ * Checked state of a checkbox, switch, radio, or toggle.
618
+ *
619
+ * Throws rather than returning `false` when the element reports no checked
620
+ * state at all — "this is not a checkable control" is a different fact from
621
+ * "it is unchecked", and silently conflating them turns a mis-aimed locator
622
+ * into a passing assertion.
623
+ */
624
+ async isChecked(options = {}) {
625
+ const element = await this.snapshot(options);
626
+ const checked = checkedStateOf(element);
627
+ if (checked === undefined) {
628
+ throw new AsturError('ELEMENT_NOT_CHECKABLE', `${formatSelector(this.selector)} reports no checked state. It resolved to a ${element.type}, which is not a checkbox, switch, radio button, or toggle.`);
629
+ }
630
+ return checked;
631
+ }
632
+ /** True when the element and everything beneath it carry no text at all. */
633
+ async isEmpty(options = {}) {
634
+ return subtreeText(await this.snapshot(options)).trim().length === 0;
635
+ }
368
636
  toString() {
369
637
  return formatSelector(this.selector);
370
638
  }
@@ -385,6 +653,9 @@ export function findElements(root, selector) {
385
653
  const descendants = root.children.flatMap((child) => findElements(child, selector));
386
654
  return matches(root, selector) ? [root, ...descendants] : descendants;
387
655
  }
656
+ function isAnyType(selector) {
657
+ return selector.strategy === 'type' && selector.value.trim().toLowerCase() === 'any';
658
+ }
388
659
  export function matches(element, selector) {
389
660
  switch (selector.strategy) {
390
661
  case 'accessibility':
@@ -396,10 +667,14 @@ export function matches(element, selector) {
396
667
  case 'text':
397
668
  return matchValue(element.text, selector) || matchValue(element.label, selector);
398
669
  case 'type':
399
- if (selector.value.trim().toLowerCase() === 'any') {
670
+ if (isAnyType(selector)) {
400
671
  return true;
401
672
  }
402
673
  return matchValue(element.type, selector);
674
+ case 'placeholder': {
675
+ const placeholder = placeholderOf(element);
676
+ return placeholder === undefined ? false : matchValue(placeholder, selector);
677
+ }
403
678
  case 'coordinates':
404
679
  return false;
405
680
  case 'xpath':
@@ -408,6 +683,115 @@ export function matches(element, selector) {
408
683
  throw new AsturError('NATIVE_SELECTOR_REQUIRES_AGENT', 'by.native() selectors resolve on the native agent and cannot be matched against a cached UI-tree snapshot. Use agent.mode: "required" (recommended), or ensure a native agent is connected in "auto" mode.');
409
684
  }
410
685
  }
686
+ /**
687
+ * Placeholder / hint text for an element, or `undefined` when it has none.
688
+ *
689
+ * Read from the driver's raw attributes first, because that is the only place
690
+ * either platform reports it faithfully. The fallback covers the common case
691
+ * the raw attributes miss: an *empty* field whose only visible string is the
692
+ * placeholder, which both platforms surface as the value or the label. A field
693
+ * the user has typed into reports its content there instead, so the fallback is
694
+ * deliberately skipped once `text` is present — otherwise typing into a field
695
+ * would silently change what `getByPlaceholder` matches.
696
+ */
697
+ export function placeholderOf(element) {
698
+ const raw = element.raw;
699
+ if (raw && typeof raw === 'object') {
700
+ const record = raw;
701
+ for (const key of ['hint', 'hintText', 'placeholder', 'placeholderValue']) {
702
+ const value = record[key];
703
+ if (typeof value === 'string' && value.length > 0) {
704
+ return value;
705
+ }
706
+ }
707
+ }
708
+ // Only an empty field can be showing its placeholder.
709
+ if (element.text !== undefined && element.text.length > 0) {
710
+ return undefined;
711
+ }
712
+ return emptyToUndefined(element.value) ?? emptyToUndefined(element.label);
713
+ }
714
+ /**
715
+ * Checked state of a checkbox, switch, radio, or toggle.
716
+ *
717
+ * Prefers the driver's own report. Where a driver does not carry one, the state
718
+ * is derived from the raw attributes and then from the value string the
719
+ * platforms use for toggles (`"1"`, `"true"`, `"on"`). Returns `undefined`
720
+ * rather than `false` when nothing answers, so "this element has no checked
721
+ * state" stays distinguishable from "it is unchecked".
722
+ */
723
+ export function checkedStateOf(element) {
724
+ if (element.checked !== undefined) {
725
+ return element.checked;
726
+ }
727
+ const raw = element.raw;
728
+ if (raw && typeof raw === 'object') {
729
+ const value = raw.checked;
730
+ if (typeof value === 'boolean') {
731
+ return value;
732
+ }
733
+ if (typeof value === 'string' && value.length > 0) {
734
+ return value === 'true';
735
+ }
736
+ }
737
+ if (!isToggleType(element.type)) {
738
+ return undefined;
739
+ }
740
+ const value = element.value?.trim().toLowerCase();
741
+ if (value === '1' || value === 'true' || value === 'on') {
742
+ return true;
743
+ }
744
+ if (value === '0' || value === 'false' || value === 'off') {
745
+ return false;
746
+ }
747
+ return element.selected;
748
+ }
749
+ function isToggleType(type) {
750
+ const normalized = type.toLowerCase();
751
+ return normalized.includes('switch')
752
+ || normalized.includes('checkbox')
753
+ || normalized.includes('toggle')
754
+ || normalized.includes('radio');
755
+ }
756
+ function emptyToUndefined(value) {
757
+ return value === undefined || value.length === 0 ? undefined : value;
758
+ }
759
+ /** Every text-ish string an element carries, used by `filter({ hasText })`. */
760
+ function textOf(element) {
761
+ return [element.text, element.label, element.value].filter(Boolean).join(' ');
762
+ }
763
+ /** Concatenated text of an element and everything beneath it. */
764
+ export function subtreeText(element) {
765
+ return flattenTree(element).map(textOf).join(' ');
766
+ }
767
+ function textMatches(haystack, expected) {
768
+ return expected instanceof RegExp ? expected.test(haystack) : haystack.includes(expected);
769
+ }
770
+ /** Position of every node in a pre-order walk, so unions can be re-sorted. */
771
+ function documentOrder(tree) {
772
+ const order = new Map();
773
+ flattenTree(tree).forEach((element, index) => order.set(element, index));
774
+ return order;
775
+ }
776
+ function sortByDocumentOrder(elements, order) {
777
+ return [...elements].sort((a, b) => (order.get(a) ?? 0) - (order.get(b) ?? 0));
778
+ }
779
+ /**
780
+ * Identity here is object identity, which holds because every stage resolves
781
+ * against the same snapshot object. Two elements with identical fields are
782
+ * still two elements, and that is the behaviour a list of look-alike rows
783
+ * needs.
784
+ */
785
+ function dedupe(elements) {
786
+ return [...new Set(elements)];
787
+ }
788
+ /** Does `candidate`'s subtree contain anything `locator` matches? */
789
+ function containsMatch(candidate, locator, tree, order) {
790
+ const withinCandidate = new Set(flattenTree(candidate));
791
+ return locator
792
+ .resolveAgainst(tree, order)
793
+ .some((element) => element !== candidate && withinCandidate.has(element));
794
+ }
411
795
  export function flattenTree(root) {
412
796
  return [root, ...root.children.flatMap((child) => flattenTree(child))];
413
797
  }
@@ -1 +1 @@
1
- {"version":3,"file":"locator.js","sourceRoot":"","sources":["../src/locator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"locator.js","sourceRoot":"","sources":["../src/locator.ts"],"names":[],"mappings":"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"}