(params: {
predicate: Exclude<IsPredicate, 'exists'>;
node: SnapshotState['nodes'][number];
nodes: SnapshotState['nodes'];
expectedText?: string;
platform: Platform | PublicPlatform;
})
| 16 | } |
| 17 | |
| 18 | export 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 | |
| 60 | function isAssertionVisible( |
| 61 | node: SnapshotState['nodes'][number], |
no test coverage detected