doc-detective 4.21.0 → 4.23.0

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.
Files changed (79) hide show
  1. package/dist/common/src/schemas/schemas.json +538 -338
  2. package/dist/common/src/types/generated/config_v3.d.ts +5 -5
  3. package/dist/common/src/types/generated/context_v3.d.ts +5 -5
  4. package/dist/common/src/types/generated/report_v3.d.ts +5 -5
  5. package/dist/common/src/types/generated/resolvedTests_v3.d.ts +10 -10
  6. package/dist/common/src/types/generated/spec_v3.d.ts +5 -5
  7. package/dist/common/src/types/generated/startSurface_v3.d.ts +7 -7
  8. package/dist/common/src/types/generated/step_v3.d.ts +7 -7
  9. package/dist/common/src/types/generated/test_v3.d.ts +19 -19
  10. package/dist/core/appium.d.ts +2 -1
  11. package/dist/core/appium.d.ts.map +1 -1
  12. package/dist/core/appium.js +47 -13
  13. package/dist/core/appium.js.map +1 -1
  14. package/dist/core/ptyProbeWorker.d.ts +2 -0
  15. package/dist/core/ptyProbeWorker.d.ts.map +1 -0
  16. package/dist/core/ptyProbeWorker.js +61 -0
  17. package/dist/core/ptyProbeWorker.js.map +1 -0
  18. package/dist/core/ptyWatchdog.d.ts +77 -0
  19. package/dist/core/ptyWatchdog.d.ts.map +1 -0
  20. package/dist/core/ptyWatchdog.js +179 -0
  21. package/dist/core/ptyWatchdog.js.map +1 -0
  22. package/dist/core/resolveTests.d.ts.map +1 -1
  23. package/dist/core/resolveTests.js +16 -4
  24. package/dist/core/resolveTests.js.map +1 -1
  25. package/dist/core/tests/androidEmulator.d.ts +2 -12
  26. package/dist/core/tests/androidEmulator.d.ts.map +1 -1
  27. package/dist/core/tests/androidEmulator.js +5 -17
  28. package/dist/core/tests/androidEmulator.js.map +1 -1
  29. package/dist/core/tests/appSurface.d.ts +55 -2
  30. package/dist/core/tests/appSurface.d.ts.map +1 -1
  31. package/dist/core/tests/appSurface.js +279 -23
  32. package/dist/core/tests/appSurface.js.map +1 -1
  33. package/dist/core/tests/browserWait.d.ts +1 -1
  34. package/dist/core/tests/browserWait.d.ts.map +1 -1
  35. package/dist/core/tests/browserWait.js +108 -84
  36. package/dist/core/tests/browserWait.js.map +1 -1
  37. package/dist/core/tests/findElement.d.ts.map +1 -1
  38. package/dist/core/tests/findElement.js +16 -5
  39. package/dist/core/tests/findElement.js.map +1 -1
  40. package/dist/core/tests/iosSimulator.d.ts +89 -0
  41. package/dist/core/tests/iosSimulator.d.ts.map +1 -0
  42. package/dist/core/tests/iosSimulator.js +453 -0
  43. package/dist/core/tests/iosSimulator.js.map +1 -0
  44. package/dist/core/tests/mobileBrowser.d.ts +46 -0
  45. package/dist/core/tests/mobileBrowser.d.ts.map +1 -0
  46. package/dist/core/tests/mobileBrowser.js +140 -0
  47. package/dist/core/tests/mobileBrowser.js.map +1 -0
  48. package/dist/core/tests/mobileDevice.d.ts +15 -0
  49. package/dist/core/tests/mobileDevice.d.ts.map +1 -0
  50. package/dist/core/tests/mobileDevice.js +24 -0
  51. package/dist/core/tests/mobileDevice.js.map +1 -0
  52. package/dist/core/tests/mobilePlatform.d.ts +1 -8
  53. package/dist/core/tests/mobilePlatform.d.ts.map +1 -1
  54. package/dist/core/tests/mobilePlatform.js +5 -26
  55. package/dist/core/tests/mobilePlatform.js.map +1 -1
  56. package/dist/core/tests.d.ts +7 -1
  57. package/dist/core/tests.d.ts.map +1 -1
  58. package/dist/core/tests.js +344 -61
  59. package/dist/core/tests.js.map +1 -1
  60. package/dist/core/utils.d.ts.map +1 -1
  61. package/dist/core/utils.js +26 -1
  62. package/dist/core/utils.js.map +1 -1
  63. package/dist/index.cjs +1835 -691
  64. package/dist/runtime/heavyDeps.d.ts +1 -1
  65. package/dist/runtime/heavyDeps.d.ts.map +1 -1
  66. package/dist/runtime/heavyDeps.js +1 -0
  67. package/dist/runtime/heavyDeps.js.map +1 -1
  68. package/dist/runtime/installCommand.d.ts +1 -1
  69. package/dist/runtime/installCommand.d.ts.map +1 -1
  70. package/dist/runtime/installCommand.js +21 -4
  71. package/dist/runtime/installCommand.js.map +1 -1
  72. package/dist/runtime/iosInstaller.d.ts +23 -0
  73. package/dist/runtime/iosInstaller.d.ts.map +1 -0
  74. package/dist/runtime/iosInstaller.js +104 -0
  75. package/dist/runtime/iosInstaller.js.map +1 -0
  76. package/dist/runtime/loader.d.ts.map +1 -1
  77. package/dist/runtime/loader.js +76 -0
  78. package/dist/runtime/loader.js.map +1 -1
  79. package/package.json +2 -1
@@ -0,0 +1,140 @@
1
+ // Native app surfaces phase A5: mobile web browsers on managed devices.
2
+ // With a mobile platform entry, `browsers` means the browser ON the device,
3
+ // driven through the same per-device Appium session the app surfaces use:
4
+ // Chrome on the Android emulator (UiAutomator2 + server-managed chromedriver)
5
+ // and Safari on the iOS simulator (XCUITest). Everything here is pure —
6
+ // support-matrix decisions, config rejection, and capability shapes — so the
7
+ // preflights stay unit-testable without a device.
8
+ import path from "node:path";
9
+ // The device browser each mobile target supports. There is exactly one per
10
+ // platform — the on-device browser is part of the device image, not an
11
+ // installable engine choice, so unsupported names SKIP (they can never
12
+ // become available on that target) rather than falling back.
13
+ const SUPPORTED_MOBILE_BROWSER = {
14
+ android: "chrome",
15
+ ios: "safari",
16
+ };
17
+ // Subdirectory of the Doc Detective cache where the Appium server stores the
18
+ // chromedrivers it auto-downloads to match the device's Chrome version.
19
+ const MOBILE_CHROMEDRIVER_DIR = "chromedriver-mobile";
20
+ export { mobileBrowserSupport, mobileBrowserConfigError, buildMobileBrowserCapabilities, defaultMobileBrowserName, mobileBrowserGate, MOBILE_CHROMEDRIVER_DIR, };
21
+ // The browser a mobile context gets when the runOn entry names none — the
22
+ // mobile analog of the desktop first-available default.
23
+ function defaultMobileBrowserName(platform) {
24
+ return SUPPORTED_MOBILE_BROWSER[platform];
25
+ }
26
+ // The A5 support matrix: chrome+android and safari+ios are the only pairs.
27
+ // The reason names both the rejected and the supported browser so the fix is
28
+ // one edit away.
29
+ function mobileBrowserSupport({ platform, browserName, }) {
30
+ const supported = SUPPORTED_MOBILE_BROWSER[platform];
31
+ if (browserName === supported)
32
+ return { supported: true };
33
+ return {
34
+ supported: false,
35
+ reason: `Skipping context: '${browserName}' isn't available on ${platform}. '${supported}' is the supported ${platform} browser — set browsers: "${supported}" (or omit browsers) on the ${platform} runOn entry.`,
36
+ };
37
+ }
38
+ // Device-fixed browser config is rejected loudly rather than silently
39
+ // ignored: `headless` belongs to the device descriptor, and window/viewport
40
+ // dimensions are fixed by the device's screen. `headless: true` is the
41
+ // schema-injected default (AJV useDefaults), so only an authored `false` is
42
+ // distinguishable and rejectable.
43
+ function mobileBrowserConfigError(browser) {
44
+ if (!browser)
45
+ return null;
46
+ if (browser.headless === false) {
47
+ return "browser headless is meaningless for a device browser — the device owns its display. Set headless on the device descriptor (device.headless) instead.";
48
+ }
49
+ const authoredDimensions = (value) => value && typeof value === "object" && Object.keys(value).length > 0;
50
+ if (authoredDimensions(browser.window)) {
51
+ return "browser window dimensions are fixed by the device's screen and can't be set on a mobile context. Choose a different device (device.deviceType) if you need another size.";
52
+ }
53
+ if (authoredDimensions(browser.viewport)) {
54
+ return "browser viewport dimensions are fixed by the device's screen and can't be set on a mobile context. Choose a different device (device.deviceType) if you need another size.";
55
+ }
56
+ return null;
57
+ }
58
+ // The one decision point the mobile preflights consult before any toolchain
59
+ // work: does this context get a device-browser session, a SKIP, or a FAIL?
60
+ // Order matters — the mixed guard first (a scope limit, so SKIP, and config
61
+ // on a context that can't run at all shouldn't fail the run), then the loud
62
+ // config rejection, then the support matrix with the platform default filled.
63
+ function mobileBrowserGate({ platform, browser, hasBrowserStep, hasAppStep, }) {
64
+ if (!hasBrowserStep)
65
+ return { action: "proceed", browserName: null };
66
+ if (hasAppStep) {
67
+ // Interleaving native app surfaces and the device browser in one context
68
+ // needs foreground + NATIVE_APP/WEBVIEW context switching, which lands
69
+ // with the mobile interaction vocabulary (phase A6). Both halves run
70
+ // today — in separate tests/contexts.
71
+ return {
72
+ action: "skip",
73
+ level: "warning",
74
+ reason: `Skipping context on '${platform}': mixing native app surfaces and browser steps in one mobile context isn't supported yet — put the web steps and the app steps in separate tests or contexts. Mobile-web-only and native-app-only contexts both run today.`,
75
+ };
76
+ }
77
+ const configError = mobileBrowserConfigError(browser);
78
+ if (configError) {
79
+ return {
80
+ action: "fail",
81
+ reason: `Mobile context on '${platform}': ${configError}`,
82
+ };
83
+ }
84
+ const browserName = browser?.name ?? defaultMobileBrowserName(platform);
85
+ const support = mobileBrowserSupport({ platform, browserName });
86
+ if (!support.supported) {
87
+ return { action: "skip", level: "warning", reason: support.reason };
88
+ }
89
+ return { action: "proceed", browserName };
90
+ }
91
+ // Session capabilities for the device browser. Mirrors the per-platform app
92
+ // capability shapes in appSurface.ts (APP_DRIVER_PLATFORMS) — same drivers,
93
+ // same udid pinning, same WDA timeout floor and derived-data opt-in — but
94
+ // with `browserName` in place of an app identifier, which puts the session
95
+ // in a web context from the start.
96
+ function buildMobileBrowserCapabilities({ platform, udid, cacheDir, timeout, }) {
97
+ if (platform === "android") {
98
+ return {
99
+ platformName: "Android",
100
+ "appium:automationName": "UiAutomator2",
101
+ browserName: "Chrome",
102
+ "appium:udid": udid,
103
+ "appium:newCommandTimeout": 600,
104
+ // adb operations can be slow on a cold emulator (same floor as app
105
+ // sessions).
106
+ "appium:adbExecTimeout": 120000,
107
+ "wdio:enforceWebDriverClassic": true,
108
+ // On-device chromedriver management: the server downloads a
109
+ // chromedriver matching the device's Chrome version. Requires the
110
+ // Appium server to run with
111
+ // --allow-insecure=uiautomator2:chromedriver_autodownload. The
112
+ // download lands in the Doc Detective cache so later runs reuse it.
113
+ "appium:chromedriverAutodownload": true,
114
+ "appium:chromedriverExecutableDir": path.join(cacheDir, MOBILE_CHROMEDRIVER_DIR),
115
+ };
116
+ }
117
+ const capabilities = {
118
+ platformName: "iOS",
119
+ "appium:automationName": "XCUITest",
120
+ browserName: "Safari",
121
+ "appium:udid": udid,
122
+ "appium:newCommandTimeout": 600,
123
+ "wdio:enforceWebDriverClassic": true,
124
+ };
125
+ // The first-ever XCUITest session cold-builds WebDriverAgent via
126
+ // xcodebuild (~10 min on CI). App surfaces carry an authored startSurface
127
+ // timeout for this; a mobile-web session has no step to author one on, so
128
+ // the default ceiling matches the generous one the apps-ios fixtures use.
129
+ const effectiveTimeout = timeout ?? 900000;
130
+ capabilities["appium:wdaLaunchTimeout"] = Math.max(effectiveTimeout, 120000);
131
+ capabilities["appium:wdaConnectionTimeout"] = Math.max(effectiveTimeout, 120000);
132
+ // Same opt-in derived-data sharing as iOS app sessions (see appSurface.ts
133
+ // for the caching contract).
134
+ const derivedDataPath = process.env.DOC_DETECTIVE_IOS_WDA_DERIVED_DATA_PATH;
135
+ if (derivedDataPath && derivedDataPath.trim()) {
136
+ capabilities["appium:derivedDataPath"] = derivedDataPath.trim();
137
+ }
138
+ return capabilities;
139
+ }
140
+ //# sourceMappingURL=mobileBrowser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mobileBrowser.js","sourceRoot":"","sources":["../../../src/core/tests/mobileBrowser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ export { normalizeDeviceDescriptor };
2
+ export type { DeviceDescriptor };
3
+ interface DeviceDescriptor {
4
+ name?: string;
5
+ deviceType?: string;
6
+ osVersion?: string;
7
+ headless?: boolean;
8
+ platform?: string;
9
+ }
10
+ declare function normalizeDeviceDescriptor({ contextDevice, stepDevice, platform, }: {
11
+ contextDevice?: DeviceDescriptor | string;
12
+ stepDevice?: DeviceDescriptor | string;
13
+ platform?: string;
14
+ }): DeviceDescriptor;
15
+ //# sourceMappingURL=mobileDevice.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mobileDevice.d.ts","sourceRoot":"","sources":["../../../src/core/tests/mobileDevice.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,yBAAyB,EAAE,CAAC;AACrC,YAAY,EAAE,gBAAgB,EAAE,CAAC;AAEjC,UAAU,gBAAgB;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAKD,iBAAS,yBAAyB,CAAC,EACjC,aAAa,EACb,UAAU,EACV,QAAQ,GACT,EAAE;IACD,aAAa,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAAC;IAC1C,UAAU,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAAC;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,gBAAgB,CAYnB"}
@@ -0,0 +1,24 @@
1
+ // Native app surfaces: the shared mobile-device descriptor, used by both the
2
+ // Android emulator layer (androidEmulator.ts) and the iOS simulator layer
3
+ // (iosSimulator.ts). A descriptor names a managed device by identity and
4
+ // refines how it is created; the per-platform acquisition modules turn it into
5
+ // a booted emulator/simulator. Kept pure so it's unit-testable without either
6
+ // toolchain.
7
+ export { normalizeDeviceDescriptor };
8
+ // Normalize a context default device merged with a step-level device override.
9
+ // A string is shorthand for `{ name }`. The step wins field-by-field; platform
10
+ // comes from whichever supplies it (the mobile context, normally).
11
+ function normalizeDeviceDescriptor({ contextDevice, stepDevice, platform, }) {
12
+ const asObj = (d) => typeof d === "string" ? { name: d.trim() } : d ? { ...d } : {};
13
+ const ctx = asObj(contextDevice);
14
+ const step = asObj(stepDevice);
15
+ const merged = { ...ctx, ...step };
16
+ // Drop undefined step keys so they don't clobber context values.
17
+ for (const k of Object.keys(step)) {
18
+ if (step[k] === undefined && ctx[k] !== undefined)
19
+ merged[k] = ctx[k];
20
+ }
21
+ merged.platform = step.platform ?? ctx.platform ?? platform;
22
+ return merged;
23
+ }
24
+ //# sourceMappingURL=mobileDevice.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mobileDevice.js","sourceRoot":"","sources":["../../../src/core/tests/mobileDevice.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,0EAA0E;AAC1E,yEAAyE;AACzE,+EAA+E;AAC/E,8EAA8E;AAC9E,aAAa;AAEb,OAAO,EAAE,yBAAyB,EAAE,CAAC;AAWrC,+EAA+E;AAC/E,+EAA+E;AAC/E,mEAAmE;AACnE,SAAS,yBAAyB,CAAC,EACjC,aAAa,EACb,UAAU,EACV,QAAQ,GAKT;IACC,MAAM,KAAK,GAAG,CAAC,CAA6B,EAAoB,EAAE,CAChE,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACjE,MAAM,GAAG,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC;IACjC,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC;IAC/B,MAAM,MAAM,GAAqB,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC;IACrD,iEAAiE;IACjE,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAA+B,EAAE,CAAC;QAChE,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,SAAS;YAAG,MAAc,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IACjF,CAAC;IACD,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,IAAI,QAAQ,CAAC;IAC5D,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1,11 +1,4 @@
1
- export { isMobileTargetPlatform, mobileContextSkipReason };
1
+ export { isMobileTargetPlatform };
2
2
  type MobileTarget = "android" | "ios";
3
3
  declare function isMobileTargetPlatform(platform: unknown): MobileTarget | null;
4
- declare function mobileContextSkipReason({ platform, hasBrowserStep, }: {
5
- platform: MobileTarget;
6
- hasBrowserStep?: boolean;
7
- }): {
8
- level: "warning" | "info";
9
- reason: string;
10
- };
11
4
  //# sourceMappingURL=mobilePlatform.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mobilePlatform.d.ts","sourceRoot":"","sources":["../../../src/core/tests/mobilePlatform.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,CAAC;AAE3D,KAAK,YAAY,GAAG,SAAS,GAAG,KAAK,CAAC;AAGtC,iBAAS,sBAAsB,CAAC,QAAQ,EAAE,OAAO,GAAG,YAAY,GAAG,IAAI,CAGtE;AAQD,iBAAS,uBAAuB,CAAC,EAC/B,QAAQ,EACR,cAAc,GACf,EAAE;IACD,QAAQ,EAAE,YAAY,CAAC;IACvB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,GAAG;IAAE,KAAK,EAAE,SAAS,GAAG,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAahD"}
1
+ {"version":3,"file":"mobilePlatform.d.ts","sourceRoot":"","sources":["../../../src/core/tests/mobilePlatform.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,sBAAsB,EAAE,CAAC;AAElC,KAAK,YAAY,GAAG,SAAS,GAAG,KAAK,CAAC;AAGtC,iBAAS,sBAAsB,CAAC,QAAQ,EAAE,OAAO,GAAG,YAAY,GAAG,IAAI,CAGtE"}
@@ -1,36 +1,15 @@
1
1
  // Native app surfaces phase A3: the `android`/`ios` target platforms. Unlike
2
2
  // desktop platforms (where host == target), a mobile platform names the
3
3
  // TARGET a context runs against and is gated by host *capability*, not host
4
- // identity. As of A3b, android native app contexts can PASS (via
5
- // androidContextPreflight, which capability-gates and lazily installs the
6
- // toolchain); the cases this module composes SKIP reasons for are the ones
7
- // still gated by a later phase — iOS (A4) and android+browser (A5). The reason
8
- // composer is pure so it's unit-testable without probing an SDK.
9
- export { isMobileTargetPlatform, mobileContextSkipReason };
4
+ // identity. Native app contexts (A3/A4) and mobile-web browser contexts (A5)
5
+ // both run on capable hosts; the browser-side decisions (support matrix,
6
+ // device-fixed config rejection, mixed-context deferral) live in
7
+ // mobileBrowser.ts.
8
+ export { isMobileTargetPlatform };
10
9
  // Classify a context platform as a mobile target, or null for desktop / junk.
11
10
  function isMobileTargetPlatform(platform) {
12
11
  if (platform === "android" || platform === "ios")
13
12
  return platform;
14
13
  return null;
15
14
  }
16
- // Compose the SKIP reason (and log level) for the mobile-context cases still
17
- // gated by a not-yet-implemented phase:
18
- // - ios -> app surfaces land in A4
19
- // - android with a browser step -> mobile browsers land in A5
20
- // (Android native app runs are handled by androidContextPreflight, which
21
- // capability-gates and lazily installs the toolchain rather than skipping.)
22
- function mobileContextSkipReason({ platform, hasBrowserStep, }) {
23
- const roadmap = "docs/design/native-app-surfaces.md";
24
- if (platform === "ios") {
25
- return {
26
- level: "info",
27
- reason: `Skipping context on 'ios': iOS app surfaces land in phase A4 of the native app roadmap (${roadmap}). Gate iOS tests with runOn platforms so this skip is intentional.`,
28
- };
29
- }
30
- // android + a browser step: mobile-web testing on Android is phase A5.
31
- return {
32
- level: "warning",
33
- reason: `Skipping context on 'android': mobile browser testing on Android lands in phase A5 of the native app roadmap (${roadmap}). Native Android app tests (no browser steps) run today.`,
34
- };
35
- }
36
15
  //# sourceMappingURL=mobilePlatform.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mobilePlatform.js","sourceRoot":"","sources":["../../../src/core/tests/mobilePlatform.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,wEAAwE;AACxE,4EAA4E;AAC5E,iEAAiE;AACjE,0EAA0E;AAC1E,2EAA2E;AAC3E,+EAA+E;AAC/E,iEAAiE;AAEjE,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,CAAC;AAI3D,8EAA8E;AAC9E,SAAS,sBAAsB,CAAC,QAAiB;IAC/C,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,KAAK;QAAE,OAAO,QAAQ,CAAC;IAClE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,6EAA6E;AAC7E,wCAAwC;AACxC,6DAA6D;AAC7D,gEAAgE;AAChE,yEAAyE;AACzE,4EAA4E;AAC5E,SAAS,uBAAuB,CAAC,EAC/B,QAAQ,EACR,cAAc,GAIf;IACC,MAAM,OAAO,GAAG,oCAAoC,CAAC;IACrD,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;QACvB,OAAO;YACL,KAAK,EAAE,MAAM;YACb,MAAM,EAAE,2FAA2F,OAAO,qEAAqE;SAChL,CAAC;IACJ,CAAC;IACD,uEAAuE;IACvE,OAAO;QACL,KAAK,EAAE,SAAS;QAChB,MAAM,EAAE,iHAAiH,OAAO,2DAA2D;KAC5L,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"mobilePlatform.js","sourceRoot":"","sources":["../../../src/core/tests/mobilePlatform.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,wEAAwE;AACxE,4EAA4E;AAC5E,6EAA6E;AAC7E,yEAAyE;AACzE,iEAAiE;AACjE,oBAAoB;AAEpB,OAAO,EAAE,sBAAsB,EAAE,CAAC;AAIlC,8EAA8E;AAC9E,SAAS,sBAAsB,CAAC,QAAiB;IAC/C,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,KAAK;QAAE,OAAO,QAAQ,CAAC;IAClE,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { type BrowserAssetName } from "../runtime/browsers.js";
2
2
  import { type AppSessionState } from "./tests/appSurface.js";
3
- export { runSpecs, runViaApi, getRunner, ensureChromeAvailable, ensureContextBrowserInstalled, combinationKey, warmUpDecision, selectWarmUpTargets, getDriverCapabilities, getDefaultBrowser, buildFallbackCandidates, driverSkipDiagnostic, resolveBrowserFallbackPolicy, shouldRepairBeforeFallback, isSupportedContext, contextRequirementsSkipMessage, resolveAutoScreenshot, resolveAutoRecord, buildAutoRecordStep, specIsRouted, killTree, };
3
+ export { runSpecs, runViaApi, getRunner, ensureChromeAvailable, ensureContextBrowserInstalled, combinationKey, warmUpDecision, selectWarmUpTargets, getDriverCapabilities, getDefaultBrowser, buildFallbackCandidates, driverSkipDiagnostic, resolveBrowserFallbackPolicy, shouldRepairBeforeFallback, isSupportedContext, contextRequirementsSkipMessage, resolveAutoScreenshot, resolveAutoRecord, buildAutoRecordStep, specIsRouted, killTree, jobDisplayResources, };
4
4
  declare function killTree(pid?: number, timeoutMs?: number): Promise<void>;
5
5
  /**
6
6
  * Stable identity for a "context combination" — the platform + browser pairing
@@ -25,6 +25,12 @@ declare function getDriverCapabilities({ runnerDetails, name, options }: {
25
25
  name: any;
26
26
  options: any;
27
27
  }): any;
28
+ declare function jobDisplayResources(job: any, ctx: {
29
+ platform: string;
30
+ xvfbAvailable: boolean;
31
+ allowOverlappingCaptures?: boolean;
32
+ runHasDisplayRecording: boolean;
33
+ }): string[];
28
34
  declare function isSupportedContext({ context, apps, platform }: {
29
35
  context: any;
30
36
  apps: any[];
@@ -1 +1 @@
1
- {"version":3,"file":"tests.d.ts","sourceRoot":"","sources":["../../src/core/tests.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tests.d.ts","sourceRoot":"","sources":["../../src/core/tests.ts"],"names":[],"mappings":"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"}