peachsim 0.1.637 → 0.1.638
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/README.md +8 -5
- package/cli/bridge-flow-runner.ts +442 -14
- package/cli/commands/inspect/core.ts +93 -24
- package/cli/commands/maestro.ts +2 -2
- package/cli/commands/serve.ts +13 -1
- package/cli/drivers/playwright-provisioning.ts +8 -16
- package/cli/drivers/playwright-sim-host.ts +3 -0
- package/cli/drivers/playwright.ts +1 -0
- package/cli/internal-child.ts +51 -8
- package/dist-lib/agent-daemon-client.cjs +1 -1
- package/dist-lib/agent-events.cjs +1 -1
- package/dist-lib/agent-identity.cjs +1 -1
- package/dist-lib/agent-sessions.cjs +1 -1
- package/dist-lib/attached-projects.cjs +1 -1
- package/dist-lib/auth/shared-session.cjs +1 -1
- package/dist-lib/backend-origin.cjs +1 -1
- package/dist-lib/beta.cjs +1 -1
- package/dist-lib/beta.mjs +1 -1
- package/dist-lib/bridge-constants.cjs +1 -1
- package/dist-lib/bridge-contract-input.cjs +3 -2
- package/dist-lib/bridge-contract-input.mjs +3 -2
- package/dist-lib/bridge-contract.cjs +1 -1
- package/dist-lib/bridge-contract.mjs +1 -1
- package/dist-lib/capture-contract.cjs +1 -1
- package/dist-lib/capture-contract.mjs +1 -1
- package/dist-lib/cli-constants.cjs +1 -1
- package/dist-lib/cloud-contract.cjs +1 -1
- package/dist-lib/cloud-contract.mjs +1 -1
- package/dist-lib/cloud-test-args.cjs +1 -1
- package/dist-lib/cloud-test-args.mjs +1 -1
- package/dist-lib/cloud.cjs +1 -1
- package/dist-lib/cloud.mjs +1 -1
- package/dist-lib/config.cjs +1 -1
- package/dist-lib/detox/index.cjs +1 -1
- package/dist-lib/dev-bundle-resolution.cjs +1 -1
- package/dist-lib/home-paths.cjs +1 -1
- package/dist-lib/host/bridge-host.cjs +4 -2
- package/dist-lib/host/fetch-proxy-handler.cjs +1 -1
- package/dist-lib/host/fetch-proxy-overrides.cjs +1 -1
- package/dist-lib/host/fetch-proxy-overrides.mjs +1 -1
- package/dist-lib/host/replacement-module-handler.cjs +1 -1
- package/dist-lib/host/websocket-proxy.cjs +1 -1
- package/dist-lib/index.cjs +76 -20
- package/dist-lib/jump-to-source-babel.cjs +1 -1
- package/dist-lib/jump-to-source-native.cjs +1 -1
- package/dist-lib/kotlin-host.cjs +1 -1
- package/dist-lib/menu.cjs +1 -1
- package/dist-lib/menu.mjs +1 -1
- package/dist-lib/metro-fingerprint-registry.cjs +1 -1
- package/dist-lib/metro-fingerprint-registry.mjs +1 -1
- package/dist-lib/metro-production-bundle.cjs +1 -1
- package/dist-lib/metro-production-bundle.mjs +1 -1
- package/dist-lib/metro.cjs +1 -1
- package/dist-lib/native-app-identity.cjs +1 -1
- package/dist-lib/native-app-identity.mjs +1 -1
- package/dist-lib/profiles.cjs +1 -1
- package/dist-lib/public-brand.cjs +1 -1
- package/dist-lib/react-native-host-modules.cjs +1 -1
- package/dist-lib/react-native-host-modules.mjs +1 -1
- package/dist-lib/render-mode.cjs +1 -1
- package/dist-lib/scripts/dev-server-scanner.cjs +1 -1
- package/dist-lib/sdk.cjs +78 -20
- package/dist-lib/sdk.mjs +77 -20
- package/dist-lib/skills.cjs +394 -62
- package/dist-lib/swift-compile.cjs +89 -7
- package/dist-lib/swift-compile.mjs +89 -7
- package/dist-lib/swift-package.cjs +1 -1
- package/dist-lib/swift-package.mjs +1 -1
- package/dist-lib/swift-submit.cjs +1 -1
- package/dist-lib/swift-submit.mjs +1 -1
- package/dist-lib/swift.cjs +122 -34
- package/dist-lib/vite-swift.cjs +89 -7
- package/dist-lib/vite.cjs +1 -1
- package/package.json +1 -1
- package/src/bridge-contract-input.ts +3 -2
- package/src/bridge-contract.ts +8 -0
- package/src/host/bridge-host.ts +5 -5
- package/src/native-seam-manifest.ts +4 -6
- package/src/swift-compile.ts +105 -9
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.638 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.638 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
package/dist-lib/kotlin-host.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.638 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
package/dist-lib/menu.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.638 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/menu.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.638 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.638 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/metro.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.638 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.638 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/profiles.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.638 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.638 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.638 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/render-mode.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.638 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.638 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
package/dist-lib/sdk.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.638 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -75,6 +75,7 @@ __export(sdk_exports, {
|
|
|
75
75
|
inspectWarnings: () => inspectWarnings,
|
|
76
76
|
isInspectModeActive: () => isInspectModeActive,
|
|
77
77
|
isInspectPickCommand: () => isInspectPickCommand,
|
|
78
|
+
isPeachAccessibilityTree: () => isPeachAccessibilityTree,
|
|
78
79
|
isShellCommandUnavailable: () => isShellCommandUnavailable,
|
|
79
80
|
isSimSemanticTree: () => isSimSemanticTree,
|
|
80
81
|
isTapSuccess: () => isTapSuccess,
|
|
@@ -675,33 +676,89 @@ function formatLayoutElements(elements, opts) {
|
|
|
675
676
|
});
|
|
676
677
|
return lines.join("\n");
|
|
677
678
|
}
|
|
679
|
+
function isPeachAccessibilityTree(value) {
|
|
680
|
+
if (!Array.isArray(value)) return false;
|
|
681
|
+
return value.every((node) => {
|
|
682
|
+
if (node === null || typeof node !== "object") return false;
|
|
683
|
+
if (Reflect.get(node, "platform") !== "ios" && Reflect.get(node, "platform") !== "android")
|
|
684
|
+
return false;
|
|
685
|
+
if (typeof Reflect.get(node, "elementId") !== "string") return false;
|
|
686
|
+
if (!Number.isInteger(Reflect.get(node, "nodeId"))) return false;
|
|
687
|
+
for (const key of ["type", "role"]) {
|
|
688
|
+
if (typeof Reflect.get(node, key) !== "string") return false;
|
|
689
|
+
}
|
|
690
|
+
for (const key of ["testID", "label", "hint", "value", "placeholder"]) {
|
|
691
|
+
const field = Reflect.get(node, key);
|
|
692
|
+
if (field !== null && typeof field !== "string") return false;
|
|
693
|
+
}
|
|
694
|
+
for (const key of [
|
|
695
|
+
"isAccessibilityElement",
|
|
696
|
+
"enabled",
|
|
697
|
+
"selected",
|
|
698
|
+
"checked",
|
|
699
|
+
"clickable",
|
|
700
|
+
"isTextInput"
|
|
701
|
+
]) {
|
|
702
|
+
if (typeof Reflect.get(node, key) !== "boolean") return false;
|
|
703
|
+
}
|
|
704
|
+
const hasFocus = Reflect.get(node, "hasFocus");
|
|
705
|
+
if (hasFocus !== void 0 && typeof hasFocus !== "boolean") return false;
|
|
706
|
+
const state = Reflect.get(node, "state");
|
|
707
|
+
if (state !== null) {
|
|
708
|
+
if (typeof state !== "object") return false;
|
|
709
|
+
const checked = Reflect.get(state, "checked");
|
|
710
|
+
if (typeof checked !== "boolean" && checked !== "mixed") return false;
|
|
711
|
+
for (const key of ["disabled", "selected", "busy", "expanded"]) {
|
|
712
|
+
if (typeof Reflect.get(state, key) !== "boolean") return false;
|
|
713
|
+
}
|
|
714
|
+
}
|
|
715
|
+
const value2 = Reflect.get(node, "accessibilityValue");
|
|
716
|
+
if (value2 !== null) {
|
|
717
|
+
if (typeof value2 !== "object") return false;
|
|
718
|
+
for (const key of ["min", "max", "now"]) {
|
|
719
|
+
const field = Reflect.get(value2, key);
|
|
720
|
+
if (field !== void 0 && (typeof field !== "number" || !Number.isFinite(field)))
|
|
721
|
+
return false;
|
|
722
|
+
}
|
|
723
|
+
const text = Reflect.get(value2, "text");
|
|
724
|
+
if (text !== void 0 && typeof text !== "string") return false;
|
|
725
|
+
}
|
|
726
|
+
if (!isSemanticGeometry(Reflect.get(node, "frame"))) return false;
|
|
727
|
+
return isPeachAccessibilityTree(Reflect.get(node, "children"));
|
|
728
|
+
});
|
|
729
|
+
}
|
|
678
730
|
async function inspectAccessibilityTree(bridge) {
|
|
679
731
|
const result = await bridge.send({
|
|
680
732
|
type: "query",
|
|
681
|
-
query: { kind: "
|
|
733
|
+
query: { kind: "accessibility" }
|
|
682
734
|
});
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
735
|
+
const tree = result !== null && typeof result === "object" ? Reflect.get(result, "accessibility") : void 0;
|
|
736
|
+
if (!isPeachAccessibilityTree(tree))
|
|
737
|
+
throw new Error("engine returned an invalid accessibility snapshot");
|
|
738
|
+
const nodes = [];
|
|
739
|
+
const visit = (node) => {
|
|
740
|
+
if (node.isAccessibilityElement) {
|
|
741
|
+
nodes.push({
|
|
742
|
+
role: node.role,
|
|
743
|
+
label: node.label,
|
|
744
|
+
hint: node.hint,
|
|
745
|
+
state: node.state ? { ...node.state } : null,
|
|
746
|
+
testID: node.testID,
|
|
694
747
|
position: {
|
|
695
|
-
x: Math.round(node.
|
|
696
|
-
y: Math.round(node.
|
|
748
|
+
x: Math.round(node.frame.x),
|
|
749
|
+
y: Math.round(node.frame.y)
|
|
697
750
|
},
|
|
698
751
|
size: {
|
|
699
|
-
w: Math.round(node.
|
|
700
|
-
h: Math.round(node.
|
|
752
|
+
w: Math.round(node.frame.width),
|
|
753
|
+
h: Math.round(node.frame.height)
|
|
701
754
|
}
|
|
702
|
-
}
|
|
703
|
-
|
|
704
|
-
|
|
755
|
+
});
|
|
756
|
+
if (node.platform === "ios") return;
|
|
757
|
+
}
|
|
758
|
+
for (const child of node.children) visit(child);
|
|
759
|
+
};
|
|
760
|
+
for (const root of tree) visit(root);
|
|
761
|
+
return nodes;
|
|
705
762
|
}
|
|
706
763
|
function resolveFindMode(q) {
|
|
707
764
|
if (q.testId) {
|
|
@@ -2551,6 +2608,7 @@ var SimClient = class {
|
|
|
2551
2608
|
inspectWarnings,
|
|
2552
2609
|
isInspectModeActive,
|
|
2553
2610
|
isInspectPickCommand,
|
|
2611
|
+
isPeachAccessibilityTree,
|
|
2554
2612
|
isShellCommandUnavailable,
|
|
2555
2613
|
isSimSemanticTree,
|
|
2556
2614
|
isTapSuccess,
|
package/dist-lib/sdk.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.638 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
var __defProp = Object.defineProperty;
|
|
3
3
|
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
4
4
|
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
@@ -576,33 +576,89 @@ function formatLayoutElements(elements, opts) {
|
|
|
576
576
|
});
|
|
577
577
|
return lines.join("\n");
|
|
578
578
|
}
|
|
579
|
+
function isPeachAccessibilityTree(value) {
|
|
580
|
+
if (!Array.isArray(value)) return false;
|
|
581
|
+
return value.every((node) => {
|
|
582
|
+
if (node === null || typeof node !== "object") return false;
|
|
583
|
+
if (Reflect.get(node, "platform") !== "ios" && Reflect.get(node, "platform") !== "android")
|
|
584
|
+
return false;
|
|
585
|
+
if (typeof Reflect.get(node, "elementId") !== "string") return false;
|
|
586
|
+
if (!Number.isInteger(Reflect.get(node, "nodeId"))) return false;
|
|
587
|
+
for (const key of ["type", "role"]) {
|
|
588
|
+
if (typeof Reflect.get(node, key) !== "string") return false;
|
|
589
|
+
}
|
|
590
|
+
for (const key of ["testID", "label", "hint", "value", "placeholder"]) {
|
|
591
|
+
const field = Reflect.get(node, key);
|
|
592
|
+
if (field !== null && typeof field !== "string") return false;
|
|
593
|
+
}
|
|
594
|
+
for (const key of [
|
|
595
|
+
"isAccessibilityElement",
|
|
596
|
+
"enabled",
|
|
597
|
+
"selected",
|
|
598
|
+
"checked",
|
|
599
|
+
"clickable",
|
|
600
|
+
"isTextInput"
|
|
601
|
+
]) {
|
|
602
|
+
if (typeof Reflect.get(node, key) !== "boolean") return false;
|
|
603
|
+
}
|
|
604
|
+
const hasFocus = Reflect.get(node, "hasFocus");
|
|
605
|
+
if (hasFocus !== void 0 && typeof hasFocus !== "boolean") return false;
|
|
606
|
+
const state = Reflect.get(node, "state");
|
|
607
|
+
if (state !== null) {
|
|
608
|
+
if (typeof state !== "object") return false;
|
|
609
|
+
const checked = Reflect.get(state, "checked");
|
|
610
|
+
if (typeof checked !== "boolean" && checked !== "mixed") return false;
|
|
611
|
+
for (const key of ["disabled", "selected", "busy", "expanded"]) {
|
|
612
|
+
if (typeof Reflect.get(state, key) !== "boolean") return false;
|
|
613
|
+
}
|
|
614
|
+
}
|
|
615
|
+
const value2 = Reflect.get(node, "accessibilityValue");
|
|
616
|
+
if (value2 !== null) {
|
|
617
|
+
if (typeof value2 !== "object") return false;
|
|
618
|
+
for (const key of ["min", "max", "now"]) {
|
|
619
|
+
const field = Reflect.get(value2, key);
|
|
620
|
+
if (field !== void 0 && (typeof field !== "number" || !Number.isFinite(field)))
|
|
621
|
+
return false;
|
|
622
|
+
}
|
|
623
|
+
const text = Reflect.get(value2, "text");
|
|
624
|
+
if (text !== void 0 && typeof text !== "string") return false;
|
|
625
|
+
}
|
|
626
|
+
if (!isSemanticGeometry(Reflect.get(node, "frame"))) return false;
|
|
627
|
+
return isPeachAccessibilityTree(Reflect.get(node, "children"));
|
|
628
|
+
});
|
|
629
|
+
}
|
|
579
630
|
async function inspectAccessibilityTree(bridge) {
|
|
580
631
|
const result = await bridge.send({
|
|
581
632
|
type: "query",
|
|
582
|
-
query: { kind: "
|
|
633
|
+
query: { kind: "accessibility" }
|
|
583
634
|
});
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
635
|
+
const tree = result !== null && typeof result === "object" ? Reflect.get(result, "accessibility") : void 0;
|
|
636
|
+
if (!isPeachAccessibilityTree(tree))
|
|
637
|
+
throw new Error("engine returned an invalid accessibility snapshot");
|
|
638
|
+
const nodes = [];
|
|
639
|
+
const visit = (node) => {
|
|
640
|
+
if (node.isAccessibilityElement) {
|
|
641
|
+
nodes.push({
|
|
642
|
+
role: node.role,
|
|
643
|
+
label: node.label,
|
|
644
|
+
hint: node.hint,
|
|
645
|
+
state: node.state ? { ...node.state } : null,
|
|
646
|
+
testID: node.testID,
|
|
595
647
|
position: {
|
|
596
|
-
x: Math.round(node.
|
|
597
|
-
y: Math.round(node.
|
|
648
|
+
x: Math.round(node.frame.x),
|
|
649
|
+
y: Math.round(node.frame.y)
|
|
598
650
|
},
|
|
599
651
|
size: {
|
|
600
|
-
w: Math.round(node.
|
|
601
|
-
h: Math.round(node.
|
|
652
|
+
w: Math.round(node.frame.width),
|
|
653
|
+
h: Math.round(node.frame.height)
|
|
602
654
|
}
|
|
603
|
-
}
|
|
604
|
-
|
|
605
|
-
|
|
655
|
+
});
|
|
656
|
+
if (node.platform === "ios") return;
|
|
657
|
+
}
|
|
658
|
+
for (const child of node.children) visit(child);
|
|
659
|
+
};
|
|
660
|
+
for (const root of tree) visit(root);
|
|
661
|
+
return nodes;
|
|
606
662
|
}
|
|
607
663
|
function resolveFindMode(q) {
|
|
608
664
|
if (q.testId) {
|
|
@@ -2451,6 +2507,7 @@ export {
|
|
|
2451
2507
|
inspectWarnings,
|
|
2452
2508
|
isInspectModeActive,
|
|
2453
2509
|
isInspectPickCommand,
|
|
2510
|
+
isPeachAccessibilityTree,
|
|
2454
2511
|
isShellCommandUnavailable,
|
|
2455
2512
|
isSimSemanticTree,
|
|
2456
2513
|
isTapSuccess,
|