MCPcopy Index your code
hub / github.com/callstack/agent-device / evaluateIsPredicate

Function evaluateIsPredicate

src/utils/selector-is-predicates.ts:18–58  ·  view source on GitHub ↗
(params: {
  predicate: Exclude<IsPredicate, 'exists'>;
  node: SnapshotState['nodes'][number];
  nodes: SnapshotState['nodes'];
  expectedText?: string;
  platform: Platform | PublicPlatform;
})

Source from the content-addressed store, hash-verified

16}
17
18export function evaluateIsPredicate(params: {
19 predicate: Exclude<IsPredicate, 'exists'>;
20 node: SnapshotState['nodes'][number];
21 nodes: SnapshotState['nodes'];
22 expectedText?: string;
23 platform: Platform | PublicPlatform;
24}): { pass: boolean; actualText: string; details: string } {
25 const { predicate, node, nodes, expectedText, platform } = params;
26 const actualText = extractNodeText(node);
27 const editable = isNodeEditable(node, platform);
28 const selected = node.selected === true;
29 const visible =
30 predicate === 'text' ? isNodeVisible(node) : isAssertionVisible(node, nodes, platform);
31 let pass = false;
32 switch (predicate) {
33 case 'visible':
34 pass = visible;
35 break;
36 case 'hidden':
37 pass = !visible;
38 break;
39 case 'editable':
40 pass = editable;
41 break;
42 case 'selected':
43 pass = selected;
44 break;
45 case 'text':
46 pass = actualText === (expectedText ?? '');
47 break;
48 }
49 const details =
50 predicate === 'text'
51 ? `expected="${expectedText ?? ''}" actual="${actualText}"`
52 : `actual=${JSON.stringify({
53 visible,
54 editable,
55 selected,
56 })}`;
57 return { pass, actualText, details };
58}
59
60function isAssertionVisible(
61 node: SnapshotState['nodes'][number],

Calls 4

extractNodeTextFunction · 0.90
isNodeEditableFunction · 0.90
isNodeVisibleFunction · 0.90
isAssertionVisibleFunction · 0.85

Tested by

no test coverage detected