obsidian-integration-testing 5.6.0 → 6.2.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 (43) hide show
  1. package/README.md +48 -19
  2. package/dist/lib/cjs/appium-session-config.cjs +42 -0
  3. package/dist/lib/cjs/appium-session-config.d.cts +44 -0
  4. package/dist/lib/cjs/connect-to-cdp.cjs +2 -1
  5. package/dist/lib/cjs/connect-to-cdp.d.cts +9 -0
  6. package/dist/lib/cjs/device-readiness.cjs +43 -0
  7. package/dist/lib/cjs/device-readiness.d.cts +55 -0
  8. package/dist/lib/cjs/emulator-args.cjs +7 -3
  9. package/dist/lib/cjs/emulator-args.d.cts +14 -2
  10. package/dist/lib/cjs/library.cjs +1 -1
  11. package/dist/lib/cjs/obsidian-instance.cjs +2 -2
  12. package/dist/lib/cjs/obsidian-instance.d.cts +6 -0
  13. package/dist/lib/cjs/transport-appium.cjs +32 -9
  14. package/dist/lib/cjs/transport-appium.d.cts +19 -0
  15. package/dist/lib/cjs/transport-desktop-cdp.cjs +59 -1
  16. package/dist/lib/cjs/transport-desktop-cdp.d.cts +24 -0
  17. package/dist/lib/cjs/transport-factory.cjs +107 -21
  18. package/dist/lib/cjs/transport-options.cjs +1 -1
  19. package/dist/lib/cjs/transport-options.d.cts +89 -0
  20. package/dist/lib/cjs/visibility.cjs +54 -0
  21. package/dist/lib/cjs/visibility.d.cts +61 -0
  22. package/dist/lib/esm/appium-session-config.d.mts +44 -0
  23. package/dist/lib/esm/appium-session-config.mjs +15 -0
  24. package/dist/lib/esm/connect-to-cdp.d.mts +9 -0
  25. package/dist/lib/esm/connect-to-cdp.mjs +2 -1
  26. package/dist/lib/esm/device-readiness.d.mts +55 -0
  27. package/dist/lib/esm/device-readiness.mjs +17 -0
  28. package/dist/lib/esm/emulator-args.d.mts +14 -2
  29. package/dist/lib/esm/emulator-args.mjs +7 -3
  30. package/dist/lib/esm/library.mjs +1 -1
  31. package/dist/lib/esm/obsidian-instance.d.mts +6 -0
  32. package/dist/lib/esm/obsidian-instance.mjs +2 -2
  33. package/dist/lib/esm/transport-appium.d.mts +19 -0
  34. package/dist/lib/esm/transport-appium.mjs +36 -10
  35. package/dist/lib/esm/transport-desktop-cdp.d.mts +24 -0
  36. package/dist/lib/esm/transport-desktop-cdp.mjs +62 -1
  37. package/dist/lib/esm/transport-factory.mjs +116 -21
  38. package/dist/lib/esm/transport-options.d.mts +89 -0
  39. package/dist/lib/esm/visibility.d.mts +61 -0
  40. package/dist/lib/esm/visibility.mjs +26 -0
  41. package/dist/obsidian-integration-testing-6.2.0.tgz +0 -0
  42. package/package.json +3 -3
  43. package/dist/obsidian-integration-testing-5.6.0.tgz +0 -0
@@ -13,6 +13,18 @@ export interface ObsidianAndroidAppiumTransportOptions {
13
13
  * Defaults to `'md.obsidian'`
14
14
  */
15
15
  readonly appId?: string;
16
+ /**
17
+ * Timeout in milliseconds for the auto-started Appium server to become ready
18
+ * (its `/status` endpoint to respond).
19
+ *
20
+ * Only applies when the harness auto-starts the Appium server
21
+ * ({@link shouldAutoStartAppium}); ignored when attaching to an
22
+ * already-running server. On a cold machine the `npx appium` server can take
23
+ * a while to finish booting, so raise this if startup times out.
24
+ *
25
+ * @default `180000`
26
+ */
27
+ readonly appiumStartTimeoutInMilliseconds?: number;
16
28
  /**
17
29
  * The Appium server URL (e.g. `'http://localhost:4723'`).
18
30
  */
@@ -35,6 +47,68 @@ export interface ObsidianAndroidAppiumTransportOptions {
35
47
  * factory skips emulator startup and attaches to the existing session.
36
48
  */
37
49
  readonly deviceId?: string;
50
+ /**
51
+ * Timeout in milliseconds for waiting, after `sys.boot_completed`, for a
52
+ * harness-started emulator to become idle before the Appium session is
53
+ * established.
54
+ *
55
+ * `sys.boot_completed` fires *before* the guest is actually idle: package
56
+ * optimization and system services keep churning, so establishing the session
57
+ * immediately makes every one of UiAutomator2's serialized `adb` round-trips
58
+ * contend with that work and inflates session establishment ~3x. The factory
59
+ * instead waits until the boot animation has stopped and the package manager
60
+ * is serving, proceeding early once idle or after this budget (best-effort — a
61
+ * timeout logs a warning and proceeds). Set `0` to skip the wait. Only applies
62
+ * to a harness-started emulator, not a reused one.
63
+ *
64
+ * @default `60000`
65
+ */
66
+ readonly deviceIdleTimeoutInMilliseconds?: number;
67
+ /**
68
+ * Whether the auto-started Appium server console window is shown.
69
+ *
70
+ * When `false` (the default), the `npx appium` server process is spawned with
71
+ * its console window hidden (`windowsHide`), so it never steals focus. Ignored
72
+ * when attaching to an already-running Appium server ({@link shouldAutoStartAppium}
73
+ * `false`, or the server already reachable). Set `true` to see the server log window.
74
+ *
75
+ * @default `false`
76
+ */
77
+ readonly isAppiumConsoleVisible?: boolean;
78
+ /**
79
+ * Whether the auto-started Android emulator window is shown on screen.
80
+ *
81
+ * When `false` (the default), the emulator is started with `-no-window`
82
+ * (headless), so it never steals focus. Ignored when reusing an already-running
83
+ * device (nothing is launched to hide). Set `true` to watch the emulator UI.
84
+ *
85
+ * @default `false`
86
+ */
87
+ readonly isEmulatorVisible?: boolean;
88
+ /**
89
+ * Timeout in milliseconds for waiting for `app.workspace.layoutReady` after
90
+ * the vault is (re)opened.
91
+ *
92
+ * Registering a vault triggers a full Obsidian re-init (`location.reload()`
93
+ * reopens the vault and reloads every plugin — the heaviest startup step). On
94
+ * a cold-booted or under-provisioned emulator that init can take a while, so
95
+ * this budget is the largest of the transport timeouts. Raise it further if
96
+ * releases still flake on slow CI emulators.
97
+ *
98
+ * @default `90000`
99
+ */
100
+ readonly layoutReadyTimeoutInMilliseconds?: number;
101
+ /**
102
+ * Timeout in milliseconds for establishing the Appium session (WebDriverIO
103
+ * `remote()` — UiAutomator2 server install + app launch).
104
+ *
105
+ * This is the largest and most load-sensitive step of the Android setup:
106
+ * on a cold or contended emulator it dominates startup and can take a few
107
+ * minutes. Raise it if session establishment times out under load.
108
+ *
109
+ * @default `180000`
110
+ */
111
+ readonly sessionConnectionRetryTimeoutInMilliseconds?: number;
38
112
  /**
39
113
  * An existing Appium session ID to reattach to.
40
114
  *
@@ -113,6 +187,21 @@ export interface ObsidianCdpTransportOptions {
113
187
  * @default `undefined`
114
188
  */
115
189
  readonly isHarnessOwnedInstance?: boolean | undefined;
190
+ /**
191
+ * Whether the owned desktop Obsidian window is shown on screen.
192
+ *
193
+ * When `false` (the default), the harness launches the owned instance with
194
+ * keep-alive Chromium flags and moves its window **off-screen** once Electron's
195
+ * remote bridge is available, so the run never steals focus or pops a window in
196
+ * front of you. Off-screen (not minimized) keeps the renderer live, so
197
+ * `setTimeout`, `requestAnimationFrame`, `:hover`, and trusted input behave
198
+ * identically to a visible window. Set `true` to watch the window (e.g. when
199
+ * debugging). Ignored in attach mode ({@link port} set) — the harness never
200
+ * moves the user's own running window.
201
+ *
202
+ * @default `false`
203
+ */
204
+ readonly isObsidianAppVisible?: boolean;
116
205
  /**
117
206
  * Pins the **Electron shell** (installer build) the owned instance runs.
118
207
  *
@@ -0,0 +1,61 @@
1
+ /**
2
+ * @file
3
+ *
4
+ * Pure resolution of the process-visibility options — whether the launched
5
+ * desktop Obsidian window, Android emulator window, and Appium server console
6
+ * are shown on screen. All three surfaces are **hidden by default** (`is*Visible`
7
+ * is `false` when omitted) so an integration run never steals focus or pops
8
+ * windows in front of the user.
9
+ *
10
+ * Kept separate from the integration-only launch/spawn code (`transport-factory`,
11
+ * `transport-desktop-cdp`, `obsidian-instance`, all excluded from unit tests) so
12
+ * the hidden-by-default resolution stays unit-testable — those launchers need a
13
+ * real Obsidian / emulator / Appium server.
14
+ */
15
+ /**
16
+ * Chromium switches passed to a **hidden** owned desktop instance.
17
+ *
18
+ * The harness hides the window by moving it **off-screen** (not minimizing it).
19
+ * An off-screen window still reports `visibilityState: 'visible'` to Chromium, so
20
+ * `setTimeout`, `requestAnimationFrame`, `:hover`, and trusted input all keep
21
+ * working exactly as when visible — but only if Chromium never decides to
22
+ * background it. These flags guarantee that: native occlusion tracking is
23
+ * disabled and the timer/renderer backgrounding heuristics are switched off, so
24
+ * an off-screen (or covered) renderer is never throttled or frozen.
25
+ *
26
+ * A *minimized* window, by contrast, freezes `requestAnimationFrame` regardless
27
+ * of any flag (there is no surface to composite), which is why the harness moves
28
+ * the window off-screen rather than minimizing it.
29
+ */
30
+ export declare const OWNED_HIDDEN_LAUNCH_FLAGS: string[];
31
+ /**
32
+ * Resolves the extra Chromium launch args for an owned desktop instance: the
33
+ * {@link OWNED_HIDDEN_LAUNCH_FLAGS} when the window is hidden (the default), or
34
+ * an empty list when it is visible.
35
+ *
36
+ * @param isObsidianAppVisible - The resolved option value (omitted → hidden).
37
+ * @returns The extra launch args (possibly empty).
38
+ */
39
+ export declare function resolveOwnedHiddenLaunchArgs(isObsidianAppVisible?: boolean): string[];
40
+ /**
41
+ * Whether the auto-started Appium server console window should be hidden.
42
+ *
43
+ * @param isAppiumConsoleVisible - The resolved option value (omitted → hidden).
44
+ * @returns `true` when the console window should be hidden (the default).
45
+ */
46
+ export declare function shouldHideAppiumConsole(isAppiumConsoleVisible?: boolean): boolean;
47
+ /**
48
+ * Whether the auto-started Android emulator window should be hidden
49
+ * (via the emulator's `-no-window` flag).
50
+ *
51
+ * @param isEmulatorVisible - The resolved option value (omitted → hidden).
52
+ * @returns `true` when the emulator window should be hidden (the default).
53
+ */
54
+ export declare function shouldHideEmulatorWindow(isEmulatorVisible?: boolean): boolean;
55
+ /**
56
+ * Whether the owned desktop Obsidian window should be hidden (moved off-screen).
57
+ *
58
+ * @param isObsidianAppVisible - The resolved option value (omitted → hidden).
59
+ * @returns `true` when the window should be hidden (the default).
60
+ */
61
+ export declare function shouldHideObsidianApp(isObsidianAppVisible?: boolean): boolean;
@@ -0,0 +1,26 @@
1
+ const OWNED_HIDDEN_LAUNCH_FLAGS = [
2
+ "--disable-features=CalculateNativeWinOcclusion",
3
+ "--disable-background-timer-throttling",
4
+ "--disable-backgrounding-occluded-windows",
5
+ "--disable-renderer-backgrounding"
6
+ ];
7
+ function resolveOwnedHiddenLaunchArgs(isObsidianAppVisible) {
8
+ return shouldHideObsidianApp(isObsidianAppVisible) ? [...OWNED_HIDDEN_LAUNCH_FLAGS] : [];
9
+ }
10
+ function shouldHideAppiumConsole(isAppiumConsoleVisible) {
11
+ return !(isAppiumConsoleVisible ?? false);
12
+ }
13
+ function shouldHideEmulatorWindow(isEmulatorVisible) {
14
+ return !(isEmulatorVisible ?? false);
15
+ }
16
+ function shouldHideObsidianApp(isObsidianAppVisible) {
17
+ return !(isObsidianAppVisible ?? false);
18
+ }
19
+ export {
20
+ OWNED_HIDDEN_LAUNCH_FLAGS,
21
+ resolveOwnedHiddenLaunchArgs,
22
+ shouldHideAppiumConsole,
23
+ shouldHideEmulatorWindow,
24
+ shouldHideObsidianApp
25
+ };
26
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3Zpc2liaWxpdHkudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBQdXJlIHJlc29sdXRpb24gb2YgdGhlIHByb2Nlc3MtdmlzaWJpbGl0eSBvcHRpb25zIFx1MjAxNCB3aGV0aGVyIHRoZSBsYXVuY2hlZFxuICogZGVza3RvcCBPYnNpZGlhbiB3aW5kb3csIEFuZHJvaWQgZW11bGF0b3Igd2luZG93LCBhbmQgQXBwaXVtIHNlcnZlciBjb25zb2xlXG4gKiBhcmUgc2hvd24gb24gc2NyZWVuLiBBbGwgdGhyZWUgc3VyZmFjZXMgYXJlICoqaGlkZGVuIGJ5IGRlZmF1bHQqKiAoYGlzKlZpc2libGVgXG4gKiBpcyBgZmFsc2VgIHdoZW4gb21pdHRlZCkgc28gYW4gaW50ZWdyYXRpb24gcnVuIG5ldmVyIHN0ZWFscyBmb2N1cyBvciBwb3BzXG4gKiB3aW5kb3dzIGluIGZyb250IG9mIHRoZSB1c2VyLlxuICpcbiAqIEtlcHQgc2VwYXJhdGUgZnJvbSB0aGUgaW50ZWdyYXRpb24tb25seSBsYXVuY2gvc3Bhd24gY29kZSAoYHRyYW5zcG9ydC1mYWN0b3J5YCxcbiAqIGB0cmFuc3BvcnQtZGVza3RvcC1jZHBgLCBgb2JzaWRpYW4taW5zdGFuY2VgLCBhbGwgZXhjbHVkZWQgZnJvbSB1bml0IHRlc3RzKSBzb1xuICogdGhlIGhpZGRlbi1ieS1kZWZhdWx0IHJlc29sdXRpb24gc3RheXMgdW5pdC10ZXN0YWJsZSBcdTIwMTQgdGhvc2UgbGF1bmNoZXJzIG5lZWQgYVxuICogcmVhbCBPYnNpZGlhbiAvIGVtdWxhdG9yIC8gQXBwaXVtIHNlcnZlci5cbiAqL1xuXG4vKipcbiAqIENocm9taXVtIHN3aXRjaGVzIHBhc3NlZCB0byBhICoqaGlkZGVuKiogb3duZWQgZGVza3RvcCBpbnN0YW5jZS5cbiAqXG4gKiBUaGUgaGFybmVzcyBoaWRlcyB0aGUgd2luZG93IGJ5IG1vdmluZyBpdCAqKm9mZi1zY3JlZW4qKiAobm90IG1pbmltaXppbmcgaXQpLlxuICogQW4gb2ZmLXNjcmVlbiB3aW5kb3cgc3RpbGwgcmVwb3J0cyBgdmlzaWJpbGl0eVN0YXRlOiAndmlzaWJsZSdgIHRvIENocm9taXVtLCBzb1xuICogYHNldFRpbWVvdXRgLCBgcmVxdWVzdEFuaW1hdGlvbkZyYW1lYCwgYDpob3ZlcmAsIGFuZCB0cnVzdGVkIGlucHV0IGFsbCBrZWVwXG4gKiB3b3JraW5nIGV4YWN0bHkgYXMgd2hlbiB2aXNpYmxlIFx1MjAxNCBidXQgb25seSBpZiBDaHJvbWl1bSBuZXZlciBkZWNpZGVzIHRvXG4gKiBiYWNrZ3JvdW5kIGl0LiBUaGVzZSBmbGFncyBndWFyYW50ZWUgdGhhdDogbmF0aXZlIG9jY2x1c2lvbiB0cmFja2luZyBpc1xuICogZGlzYWJsZWQgYW5kIHRoZSB0aW1lci9yZW5kZXJlciBiYWNrZ3JvdW5kaW5nIGhldXJpc3RpY3MgYXJlIHN3aXRjaGVkIG9mZiwgc29cbiAqIGFuIG9mZi1zY3JlZW4gKG9yIGNvdmVyZWQpIHJlbmRlcmVyIGlzIG5ldmVyIHRocm90dGxlZCBvciBmcm96ZW4uXG4gKlxuICogQSAqbWluaW1pemVkKiB3aW5kb3csIGJ5IGNvbnRyYXN0LCBmcmVlemVzIGByZXF1ZXN0QW5pbWF0aW9uRnJhbWVgIHJlZ2FyZGxlc3NcbiAqIG9mIGFueSBmbGFnICh0aGVyZSBpcyBubyBzdXJmYWNlIHRvIGNvbXBvc2l0ZSksIHdoaWNoIGlzIHdoeSB0aGUgaGFybmVzcyBtb3Zlc1xuICogdGhlIHdpbmRvdyBvZmYtc2NyZWVuIHJhdGhlciB0aGFuIG1pbmltaXppbmcgaXQuXG4gKi9cbmV4cG9ydCBjb25zdCBPV05FRF9ISURERU5fTEFVTkNIX0ZMQUdTID0gW1xuICAnLS1kaXNhYmxlLWZlYXR1cmVzPUNhbGN1bGF0ZU5hdGl2ZVdpbk9jY2x1c2lvbicsXG4gICctLWRpc2FibGUtYmFja2dyb3VuZC10aW1lci10aHJvdHRsaW5nJyxcbiAgJy0tZGlzYWJsZS1iYWNrZ3JvdW5kaW5nLW9jY2x1ZGVkLXdpbmRvd3MnLFxuICAnLS1kaXNhYmxlLXJlbmRlcmVyLWJhY2tncm91bmRpbmcnXG5dO1xuXG4vKipcbiAqIFJlc29sdmVzIHRoZSBleHRyYSBDaHJvbWl1bSBsYXVuY2ggYXJncyBmb3IgYW4gb3duZWQgZGVza3RvcCBpbnN0YW5jZTogdGhlXG4gKiB7QGxpbmsgT1dORURfSElEREVOX0xBVU5DSF9GTEFHU30gd2hlbiB0aGUgd2luZG93IGlzIGhpZGRlbiAodGhlIGRlZmF1bHQpLCBvclxuICogYW4gZW1wdHkgbGlzdCB3aGVuIGl0IGlzIHZpc2libGUuXG4gKlxuICogQHBhcmFtIGlzT2JzaWRpYW5BcHBWaXNpYmxlIC0gVGhlIHJlc29sdmVkIG9wdGlvbiB2YWx1ZSAob21pdHRlZCBcdTIxOTIgaGlkZGVuKS5cbiAqIEByZXR1cm5zIFRoZSBleHRyYSBsYXVuY2ggYXJncyAocG9zc2libHkgZW1wdHkpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZU93bmVkSGlkZGVuTGF1bmNoQXJncyhpc09ic2lkaWFuQXBwVmlzaWJsZT86IGJvb2xlYW4pOiBzdHJpbmdbXSB7XG4gIHJldHVybiBzaG91bGRIaWRlT2JzaWRpYW5BcHAoaXNPYnNpZGlhbkFwcFZpc2libGUpID8gWy4uLk9XTkVEX0hJRERFTl9MQVVOQ0hfRkxBR1NdIDogW107XG59XG5cbi8qKlxuICogV2hldGhlciB0aGUgYXV0by1zdGFydGVkIEFwcGl1bSBzZXJ2ZXIgY29uc29sZSB3aW5kb3cgc2hvdWxkIGJlIGhpZGRlbi5cbiAqXG4gKiBAcGFyYW0gaXNBcHBpdW1Db25zb2xlVmlzaWJsZSAtIFRoZSByZXNvbHZlZCBvcHRpb24gdmFsdWUgKG9taXR0ZWQgXHUyMTkyIGhpZGRlbikuXG4gKiBAcmV0dXJucyBgdHJ1ZWAgd2hlbiB0aGUgY29uc29sZSB3aW5kb3cgc2hvdWxkIGJlIGhpZGRlbiAodGhlIGRlZmF1bHQpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2hvdWxkSGlkZUFwcGl1bUNvbnNvbGUoaXNBcHBpdW1Db25zb2xlVmlzaWJsZT86IGJvb2xlYW4pOiBib29sZWFuIHtcbiAgcmV0dXJuICEoaXNBcHBpdW1Db25zb2xlVmlzaWJsZSA/PyBmYWxzZSk7XG59XG5cbi8qKlxuICogV2hldGhlciB0aGUgYXV0by1zdGFydGVkIEFuZHJvaWQgZW11bGF0b3Igd2luZG93IHNob3VsZCBiZSBoaWRkZW5cbiAqICh2aWEgdGhlIGVtdWxhdG9yJ3MgYC1uby13aW5kb3dgIGZsYWcpLlxuICpcbiAqIEBwYXJhbSBpc0VtdWxhdG9yVmlzaWJsZSAtIFRoZSByZXNvbHZlZCBvcHRpb24gdmFsdWUgKG9taXR0ZWQgXHUyMTkyIGhpZGRlbikuXG4gKiBAcmV0dXJucyBgdHJ1ZWAgd2hlbiB0aGUgZW11bGF0b3Igd2luZG93IHNob3VsZCBiZSBoaWRkZW4gKHRoZSBkZWZhdWx0KS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNob3VsZEhpZGVFbXVsYXRvcldpbmRvdyhpc0VtdWxhdG9yVmlzaWJsZT86IGJvb2xlYW4pOiBib29sZWFuIHtcbiAgcmV0dXJuICEoaXNFbXVsYXRvclZpc2libGUgPz8gZmFsc2UpO1xufVxuXG4vKipcbiAqIFdoZXRoZXIgdGhlIG93bmVkIGRlc2t0b3AgT2JzaWRpYW4gd2luZG93IHNob3VsZCBiZSBoaWRkZW4gKG1vdmVkIG9mZi1zY3JlZW4pLlxuICpcbiAqIEBwYXJhbSBpc09ic2lkaWFuQXBwVmlzaWJsZSAtIFRoZSByZXNvbHZlZCBvcHRpb24gdmFsdWUgKG9taXR0ZWQgXHUyMTkyIGhpZGRlbikuXG4gKiBAcmV0dXJucyBgdHJ1ZWAgd2hlbiB0aGUgd2luZG93IHNob3VsZCBiZSBoaWRkZW4gKHRoZSBkZWZhdWx0KS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNob3VsZEhpZGVPYnNpZGlhbkFwcChpc09ic2lkaWFuQXBwVmlzaWJsZT86IGJvb2xlYW4pOiBib29sZWFuIHtcbiAgcmV0dXJuICEoaXNPYnNpZGlhbkFwcFZpc2libGUgPz8gZmFsc2UpO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIkFBOEJPLE1BQU0sNEJBQTRCO0FBQUEsRUFDdkM7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFDRjtBQVVPLFNBQVMsNkJBQTZCLHNCQUEwQztBQUNyRixTQUFPLHNCQUFzQixvQkFBb0IsSUFBSSxDQUFDLEdBQUcseUJBQXlCLElBQUksQ0FBQztBQUN6RjtBQVFPLFNBQVMsd0JBQXdCLHdCQUEyQztBQUNqRixTQUFPLEVBQUUsMEJBQTBCO0FBQ3JDO0FBU08sU0FBUyx5QkFBeUIsbUJBQXNDO0FBQzdFLFNBQU8sRUFBRSxxQkFBcUI7QUFDaEM7QUFRTyxTQUFTLHNCQUFzQixzQkFBeUM7QUFDN0UsU0FBTyxFQUFFLHdCQUF3QjtBQUNuQzsiLAogICJuYW1lcyI6IFtdCn0K
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "obsidian-integration-testing",
3
- "version": "5.6.0",
3
+ "version": "6.2.0",
4
4
  "description": "Simplifies integration testing of Obsidian plugins.",
5
5
  "keywords": [
6
6
  "obsidian",
@@ -172,10 +172,10 @@
172
172
  "czg": "^1.13.1",
173
173
  "dprint": "^0.55.1",
174
174
  "esbuild": "^0.28.1",
175
- "eslint": "^10.6.0",
175
+ "eslint": "^10.7.0",
176
176
  "eslint-import-resolver-typescript": "^4.4.5",
177
177
  "eslint-plugin-import-x": "^4.17.1",
178
- "eslint-plugin-jsdoc": "^63.0.12",
178
+ "eslint-plugin-jsdoc": "^63.0.13",
179
179
  "eslint-plugin-perfectionist": "^5.10.0",
180
180
  "eslint-plugin-tsdoc": "^0.5.2",
181
181
  "globals": "^17.7.0",