rnxsim 0.1.444 → 0.1.446
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/cli/auth.ts +2 -2
- package/cli/cloud-client.ts +13 -13
- package/cli/cloud-session.ts +1 -1
- package/cli/commands/detox.ts +18 -0
- package/cli/commands/inspect.ts +2 -2
- package/cli/outbound-endpoints.ts +0 -2
- package/cli/send-to-box.ts +7 -7
- package/detox/index.ts +21 -1
- 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 +1 -1
- package/dist-lib/bridge-contract-input.mjs +1 -1
- 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.cjs +1 -1
- package/dist-lib/cloud.mjs +1 -1
- package/dist-lib/config.cjs +1 -1
- package/dist-lib/detox/index.cjs +16 -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 +178 -178
- 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 +4 -4
- package/dist-lib/jump-to-source-babel.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/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 +1 -1
- package/dist-lib/sdk.mjs +1 -1
- package/dist-lib/skills.cjs +198 -201
- package/dist-lib/vite.cjs +1 -1
- package/package.json +1 -1
- package/src/auth/shared-session.ts +1 -1
- package/src/cloud-contract.ts +1 -1
package/cli/auth.ts
CHANGED
|
@@ -11,8 +11,8 @@
|
|
|
11
11
|
import {
|
|
12
12
|
readSharedDesktopAuthSession,
|
|
13
13
|
sharedDesktopAuthAccounts,
|
|
14
|
-
} from '../src/auth/shared-session'
|
|
15
|
-
import { rnxExit } from './run-rnx'
|
|
14
|
+
} from '../src/auth/shared-session.ts'
|
|
15
|
+
import { rnxExit } from './run-rnx.ts'
|
|
16
16
|
|
|
17
17
|
export type CliApiKeyEnvName = 'RNX_API_KEY'
|
|
18
18
|
|
package/cli/cloud-client.ts
CHANGED
|
@@ -17,26 +17,26 @@ import {
|
|
|
17
17
|
resolveMetroIosAssetDestFiles,
|
|
18
18
|
type MetroArtifactAssetSize,
|
|
19
19
|
type MetroAssetDescriptor,
|
|
20
|
-
} from '../../contrast-bundler/src/metroAssetArtifact'
|
|
20
|
+
} from '../../contrast-bundler/src/metroAssetArtifact.ts'
|
|
21
21
|
import {
|
|
22
22
|
buildRnxCloudArtifact,
|
|
23
23
|
type RnxCloudArtifactReceipt,
|
|
24
|
-
} from '../../contrast-bundler/src/metroCloudArtifact'
|
|
25
|
-
import {
|
|
26
|
-
import {
|
|
27
|
-
import { isLoopbackHost } from '../src/backend-origin'
|
|
24
|
+
} from '../../contrast-bundler/src/metroCloudArtifact.ts'
|
|
25
|
+
import { loadMetroFingerprintRegistry } from '../../sootsim-engine/src/metro-fingerprint-registry-client.ts'
|
|
26
|
+
import { inferMetroModuleIdentity } from '../../sootsim-engine/src/metro-fingerprint.ts'
|
|
27
|
+
import { isLoopbackHost } from '../src/backend-origin.ts'
|
|
28
28
|
import {
|
|
29
29
|
isRnxCloudCommandType,
|
|
30
30
|
RNX_CLOUD_MAX_ARTIFACT_BYTES,
|
|
31
31
|
type RnxCloudBoxCreateReceipt,
|
|
32
32
|
type RnxCloudCreateReceipt,
|
|
33
|
-
} from '../src/cloud-contract'
|
|
33
|
+
} from '../src/cloud-contract.ts'
|
|
34
34
|
import {
|
|
35
35
|
RNX_METRO_MODULE_IDENTITY_VERSION,
|
|
36
36
|
type RNXMetroModuleIdentityMetadata,
|
|
37
|
-
} from '../src/metro-production-bundle'
|
|
38
|
-
import { rnxPublicBrand } from '../src/public-brand'
|
|
39
|
-
import { CHOOSE_ACCOUNT_HINT } from './auth'
|
|
37
|
+
} from '../src/metro-production-bundle.ts'
|
|
38
|
+
import { rnxPublicBrand } from '../src/public-brand.ts'
|
|
39
|
+
import { CHOOSE_ACCOUNT_HINT } from './auth.ts'
|
|
40
40
|
import {
|
|
41
41
|
createCloudSession,
|
|
42
42
|
normalizeCloudOrigin,
|
|
@@ -44,15 +44,15 @@ import {
|
|
|
44
44
|
type CloudBoxSession,
|
|
45
45
|
type CloudSession,
|
|
46
46
|
type CloudSimSession,
|
|
47
|
-
} from './cloud-session'
|
|
48
|
-
import { detectProject, findProjectRoot } from './commands/detect'
|
|
49
|
-
import type { StorageSnapshot } from '../../sootsim-engine/src/preview/storage-snapshot-contract'
|
|
47
|
+
} from './cloud-session.ts'
|
|
48
|
+
import { detectProject, findProjectRoot } from './commands/detect.ts'
|
|
49
|
+
import type { StorageSnapshot } from '../../sootsim-engine/src/preview/storage-snapshot-contract.ts'
|
|
50
50
|
import type {
|
|
51
51
|
BridgeClaimResult,
|
|
52
52
|
BridgeSimInfo,
|
|
53
53
|
ParsedBridgeCliArgs,
|
|
54
54
|
WsBridge,
|
|
55
|
-
} from './ws-bridge'
|
|
55
|
+
} from './ws-bridge.ts'
|
|
56
56
|
|
|
57
57
|
export const DEFAULT_RNX_CLOUD_ORIGIN = rnxPublicBrand.origin
|
|
58
58
|
export const MAX_RNX_CLOUD_BUNDLE_BYTES = RNX_CLOUD_MAX_ARTIFACT_BYTES
|
package/cli/cloud-session.ts
CHANGED
package/cli/commands/detox.ts
CHANGED
|
@@ -86,6 +86,7 @@ export async function runDetox(args: string[], opts: RunDetoxOpts = {}): Promise
|
|
|
86
86
|
prev === '-t' ||
|
|
87
87
|
prev === '--testNamePattern' ||
|
|
88
88
|
prev === '--grep' ||
|
|
89
|
+
prev === '--outputFile' ||
|
|
89
90
|
prev === '--maxWorkers' ||
|
|
90
91
|
prev === '--shard'
|
|
91
92
|
)
|
|
@@ -154,11 +155,28 @@ export async function runDetox(args: string[], opts: RunDetoxOpts = {}): Promise
|
|
|
154
155
|
// scope roots + testMatch to the discovered test dir so jest doesn't
|
|
155
156
|
// scan the entire repo (which causes haste collisions in monorepos).
|
|
156
157
|
const presetPath = resolve(resolveDetoxDir(), 'jest-preset.cjs')
|
|
158
|
+
// an external suite may optionally declare its own ignore patterns via e2e/jest-ignore.cjs
|
|
159
|
+
const suiteIgnoreFile = testDir ? join(testDir, 'e2e', 'jest-ignore.cjs') : null
|
|
160
|
+
let suiteIgnorePatterns: string[] = []
|
|
161
|
+
if (suiteIgnoreFile && existsSync(suiteIgnoreFile)) {
|
|
162
|
+
try {
|
|
163
|
+
const req = createRequire(import.meta.url)
|
|
164
|
+
const exported = req(suiteIgnoreFile)
|
|
165
|
+
suiteIgnorePatterns = Array.isArray(exported)
|
|
166
|
+
? exported
|
|
167
|
+
: Array.isArray(exported.testPathIgnorePatterns)
|
|
168
|
+
? exported.testPathIgnorePatterns
|
|
169
|
+
: []
|
|
170
|
+
} catch {}
|
|
171
|
+
}
|
|
157
172
|
tempConfig = join(tmpdir(), `rnx-detox-${process.pid}.config.cjs`)
|
|
158
173
|
const cfg = {
|
|
159
174
|
rootDir: testDir,
|
|
160
175
|
roots: ['<rootDir>'],
|
|
161
176
|
testMatch: ['<rootDir>/**/*.test.ts', '<rootDir>/**/*.test.js'],
|
|
177
|
+
...(suiteIgnorePatterns.length > 0
|
|
178
|
+
? { testPathIgnorePatterns: suiteIgnorePatterns }
|
|
179
|
+
: {}),
|
|
162
180
|
}
|
|
163
181
|
writeFileSync(
|
|
164
182
|
tempConfig,
|
package/cli/commands/inspect.ts
CHANGED
|
@@ -475,9 +475,9 @@ function printRenderProfile(worker: string, rp: Record<string, any> | undefined)
|
|
|
475
475
|
)
|
|
476
476
|
}
|
|
477
477
|
}
|
|
478
|
-
if (rp.paragraphBuilds || rp.paragraphLayouts) {
|
|
478
|
+
if (rp.paragraphBuilds || rp.prewarmParagraphBuilds || rp.paragraphLayouts) {
|
|
479
479
|
console.log(
|
|
480
|
-
` text shaping: ${rp.paragraphBuilds} shaped ${Number(rp.paragraphBuildMs ?? 0).toFixed(1)}ms · ${rp.paragraphLayouts} re-broken ${Number(rp.paragraphLayoutMs ?? 0).toFixed(1)}ms`,
|
|
480
|
+
` text shaping: ${rp.paragraphBuilds} shaped on frame ${Number(rp.paragraphBuildMs ?? 0).toFixed(1)}ms · ${rp.prewarmParagraphBuilds ?? 0} shaped on idle ${Number(rp.prewarmParagraphBuildMs ?? 0).toFixed(1)}ms · ${rp.paragraphLayouts} re-broken ${Number(rp.paragraphLayoutMs ?? 0).toFixed(1)}ms (all phases)`,
|
|
481
481
|
)
|
|
482
482
|
}
|
|
483
483
|
console.log(` blur: ${rp.avgBlurMs}ms`)
|
|
@@ -250,8 +250,6 @@ export const DECLARED_OUTBOUND_CALLS: Record<string, OutboundCallDeclaration> =
|
|
|
250
250
|
{ category: 'contrast_user_action', count: 1 },
|
|
251
251
|
'packages/sootsim-engine/src/auth/shared-session.ts :: fetch :: `${CONTRAST_ORIGIN}/api/auth/sign-out`':
|
|
252
252
|
{ category: 'contrast_user_action', count: 1 },
|
|
253
|
-
'packages/sootsim-engine/src/auth/UploadsMenu.tsx :: fetch :: `${CONTRAST_ORIGIN}/api/preview/uploads?limit=20`':
|
|
254
|
-
{ category: 'contrast_user_action', count: 1 },
|
|
255
253
|
"packages/sootsim-engine/src/billing/client.ts :: fetch :: apiUrl('/api/sootsim/billing/checkout')":
|
|
256
254
|
{ category: 'contrast_user_action', count: 1 },
|
|
257
255
|
'packages/sootsim-engine/src/billing/client.ts :: fetch :: apiUrl(path)': {
|
package/cli/send-to-box.ts
CHANGED
|
@@ -5,17 +5,17 @@
|
|
|
5
5
|
// it directly; both hand it a way to run a bridge command against the sim that
|
|
6
6
|
// is running the app, and both get the same simulator id and URL back.
|
|
7
7
|
|
|
8
|
-
import { isStorageSnapshot } from '../../sootsim-engine/src/preview/storage-snapshot-contract'
|
|
8
|
+
import { isStorageSnapshot } from '../../sootsim-engine/src/preview/storage-snapshot-contract.ts'
|
|
9
9
|
import {
|
|
10
10
|
DEFAULT_DEVICE_BY_PLATFORM,
|
|
11
11
|
getRuntimePlatform,
|
|
12
12
|
listDeviceModels,
|
|
13
|
-
} from '../../sootsim-engine/src/settings/devices'
|
|
14
|
-
import { toRNXProductionBundleUrl } from '../src/metro-production-bundle'
|
|
15
|
-
import { createCloudBox } from './cloud-client'
|
|
16
|
-
import type { StorageSnapshot } from '../../sootsim-engine/src/preview/storage-snapshot-contract'
|
|
17
|
-
import type { DeviceModel } from '../../sootsim-engine/src/settings/devices'
|
|
18
|
-
import type { BridgeCommandType } from '../src/bridge-contract'
|
|
13
|
+
} from '../../sootsim-engine/src/settings/devices.ts'
|
|
14
|
+
import { toRNXProductionBundleUrl } from '../src/metro-production-bundle.ts'
|
|
15
|
+
import { createCloudBox } from './cloud-client.ts'
|
|
16
|
+
import type { StorageSnapshot } from '../../sootsim-engine/src/preview/storage-snapshot-contract.ts'
|
|
17
|
+
import type { DeviceModel } from '../../sootsim-engine/src/settings/devices.ts'
|
|
18
|
+
import type { BridgeCommandType } from '../src/bridge-contract.ts'
|
|
19
19
|
|
|
20
20
|
export interface SendToBoxOptions {
|
|
21
21
|
/** runs one bridge command against the sim running the app. */
|
package/detox/index.ts
CHANGED
|
@@ -7,7 +7,12 @@ import * as path from 'path'
|
|
|
7
7
|
import { chromium } from 'playwright'
|
|
8
8
|
import { launchReapedChromeScoped } from '../../../scripts/lib/reap-browser'
|
|
9
9
|
import { pollUntil } from '../src/poll-until'
|
|
10
|
-
import {
|
|
10
|
+
import {
|
|
11
|
+
createExpect,
|
|
12
|
+
createWaitFor,
|
|
13
|
+
describeNodeVisibility,
|
|
14
|
+
isNodeVisible,
|
|
15
|
+
} from './expectations'
|
|
11
16
|
import {
|
|
12
17
|
dispatchTwoFingerGesture,
|
|
13
18
|
dragScrollNode,
|
|
@@ -725,6 +730,11 @@ function createSootSimElement(matcher: Matcher): SootSimElement {
|
|
|
725
730
|
await waitForSootsimWorkletsIdle(page, 3000)
|
|
726
731
|
const node = await findNodeByMatcher(matcher)
|
|
727
732
|
if (!node) throw new Error(`element not found for tap: ${JSON.stringify(matcher)}`)
|
|
733
|
+
if (!isNodeVisible(node)) {
|
|
734
|
+
throw new Error(
|
|
735
|
+
`Cannot perform action due to constraint failure: element not visible (${describeNodeVisibility(node)}): ${JSON.stringify(matcher)}`,
|
|
736
|
+
)
|
|
737
|
+
}
|
|
728
738
|
const defaultPoint = point ? null : await getDefaultTapPoint(page, node)
|
|
729
739
|
const targetSootSimX =
|
|
730
740
|
typeof point?.x === 'number'
|
|
@@ -750,6 +760,11 @@ function createSootSimElement(matcher: Matcher): SootSimElement {
|
|
|
750
760
|
const node = await findNodeByMatcher(matcher)
|
|
751
761
|
if (!node)
|
|
752
762
|
throw new Error(`element not found for multiTap: ${JSON.stringify(matcher)}`)
|
|
763
|
+
if (!isNodeVisible(node)) {
|
|
764
|
+
throw new Error(
|
|
765
|
+
`Cannot perform action due to constraint failure: element not visible (${describeNodeVisibility(node)}): ${JSON.stringify(matcher)}`,
|
|
766
|
+
)
|
|
767
|
+
}
|
|
753
768
|
const center = getNodeCenter(node)
|
|
754
769
|
const pageCoords = await sootsimToPage(page, center.x, center.y)
|
|
755
770
|
|
|
@@ -775,6 +790,11 @@ function createSootSimElement(matcher: Matcher): SootSimElement {
|
|
|
775
790
|
const node = await findNodeByMatcher(matcher)
|
|
776
791
|
if (!node)
|
|
777
792
|
throw new Error(`element not found for longPress: ${JSON.stringify(matcher)}`)
|
|
793
|
+
if (!isNodeVisible(node)) {
|
|
794
|
+
throw new Error(
|
|
795
|
+
`Cannot perform action due to constraint failure: element not visible (${describeNodeVisibility(node)}): ${JSON.stringify(matcher)}`,
|
|
796
|
+
)
|
|
797
|
+
}
|
|
778
798
|
const duration = typeof pointOrDuration === 'number' ? pointOrDuration : durationArg
|
|
779
799
|
const target =
|
|
780
800
|
typeof pointOrDuration === 'object'
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.446 | (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.446 | (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.446 | (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.446 | (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.446 | (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.446 | (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.446 | (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/beta.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.446 | (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/beta.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.446 | (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.446 | (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.446 | (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.446 | (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.446 | (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.446 | (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/cloud.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.446 | (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/cloud.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.446 | (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);
|
package/dist-lib/config.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.446 | (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/detox/index.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.446 | (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;
|
|
@@ -2319,6 +2319,11 @@ function createSootSimElement(matcher) {
|
|
|
2319
2319
|
await waitForSootsimWorkletsIdle(page, 3e3);
|
|
2320
2320
|
const node = await findNodeByMatcher(matcher);
|
|
2321
2321
|
if (!node) throw new Error(`element not found for tap: ${JSON.stringify(matcher)}`);
|
|
2322
|
+
if (!isNodeVisible(node)) {
|
|
2323
|
+
throw new Error(
|
|
2324
|
+
`Cannot perform action due to constraint failure: element not visible (${describeNodeVisibility(node)}): ${JSON.stringify(matcher)}`
|
|
2325
|
+
);
|
|
2326
|
+
}
|
|
2322
2327
|
const defaultPoint = point ? null : await getDefaultTapPoint(page, node);
|
|
2323
2328
|
const targetSootSimX = typeof point?.x === "number" ? node.absolutePosition.x + point.x : defaultPoint?.x ?? node.absolutePosition.x + node.layout.width / 2;
|
|
2324
2329
|
const targetSootSimY = typeof point?.y === "number" ? node.absolutePosition.y + point.y : defaultPoint?.y ?? node.absolutePosition.y + node.layout.height / 2;
|
|
@@ -2332,6 +2337,11 @@ function createSootSimElement(matcher) {
|
|
|
2332
2337
|
const node = await findNodeByMatcher(matcher);
|
|
2333
2338
|
if (!node)
|
|
2334
2339
|
throw new Error(`element not found for multiTap: ${JSON.stringify(matcher)}`);
|
|
2340
|
+
if (!isNodeVisible(node)) {
|
|
2341
|
+
throw new Error(
|
|
2342
|
+
`Cannot perform action due to constraint failure: element not visible (${describeNodeVisibility(node)}): ${JSON.stringify(matcher)}`
|
|
2343
|
+
);
|
|
2344
|
+
}
|
|
2335
2345
|
const center = getNodeCenter(node);
|
|
2336
2346
|
const pageCoords = await sootsimToPage(page, center.x, center.y);
|
|
2337
2347
|
for (let i = 0; i < times; i++) {
|
|
@@ -2352,6 +2362,11 @@ function createSootSimElement(matcher) {
|
|
|
2352
2362
|
const node = await findNodeByMatcher(matcher);
|
|
2353
2363
|
if (!node)
|
|
2354
2364
|
throw new Error(`element not found for longPress: ${JSON.stringify(matcher)}`);
|
|
2365
|
+
if (!isNodeVisible(node)) {
|
|
2366
|
+
throw new Error(
|
|
2367
|
+
`Cannot perform action due to constraint failure: element not visible (${describeNodeVisibility(node)}): ${JSON.stringify(matcher)}`
|
|
2368
|
+
);
|
|
2369
|
+
}
|
|
2355
2370
|
const duration = typeof pointOrDuration === "number" ? pointOrDuration : durationArg;
|
|
2356
2371
|
const target = typeof pointOrDuration === "object" ? {
|
|
2357
2372
|
x: node.absolutePosition.x + pointOrDuration.x,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.446 | (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/home-paths.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.446 | (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;
|