obsidian-integration-testing 8.4.0 → 9.1.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.
- package/README.md +82 -11
- package/dist/lib/cjs/avd-list.cjs +36 -0
- package/dist/lib/cjs/avd-list.d.cts +38 -0
- package/dist/lib/cjs/demo-vault-populate.cjs +77 -0
- package/dist/lib/cjs/demo-vault-populate.d.cts +71 -0
- package/dist/lib/cjs/demo-vault-tree.cjs +52 -0
- package/dist/lib/cjs/demo-vault-tree.d.cts +34 -0
- package/dist/lib/cjs/enable-plugin.cjs +56 -5
- package/dist/lib/cjs/enable-plugin.d.cts +26 -1
- package/dist/lib/cjs/global-setup-core.cjs +92 -26
- package/dist/lib/cjs/global-setup-core.d.cts +24 -3
- package/dist/lib/cjs/index.cjs +10 -1
- package/dist/lib/cjs/index.d.cts +6 -0
- package/dist/lib/cjs/jest/global-setup-no-plugin.cjs +41 -0
- package/dist/lib/cjs/jest/global-setup-no-plugin.d.cts +26 -0
- package/dist/lib/cjs/jest/global-setup.cjs +7 -2
- package/dist/lib/cjs/jest/global-setup.d.cts +20 -3
- package/dist/lib/cjs/jest/global-teardown-no-plugin.cjs +26 -0
- package/dist/lib/cjs/jest/global-teardown-no-plugin.d.cts +11 -0
- package/dist/lib/cjs/library.cjs +1 -1
- package/dist/lib/cjs/plugin-enable-retry.cjs +53 -0
- package/dist/lib/cjs/plugin-enable-retry.d.cts +71 -0
- package/dist/lib/cjs/poll-in-obsidian.cjs +72 -0
- package/dist/lib/cjs/poll-in-obsidian.d.cts +92 -0
- package/dist/lib/cjs/poll-until.cjs +43 -0
- package/dist/lib/cjs/poll-until.d.cts +42 -0
- package/dist/lib/cjs/process-exit-message.cjs +47 -0
- package/dist/lib/cjs/process-exit-message.d.cts +48 -0
- package/dist/lib/cjs/transport-appium.cjs +51 -1
- package/dist/lib/cjs/transport-appium.d.cts +24 -1
- package/dist/lib/cjs/transport-desktop-cdp.cjs +20 -11
- package/dist/lib/cjs/transport-desktop-cdp.d.cts +9 -2
- package/dist/lib/cjs/transport-factory.cjs +122 -23
- package/dist/lib/cjs/transport-options.cjs +1 -1
- package/dist/lib/cjs/transport-options.d.cts +28 -0
- package/dist/lib/cjs/transport.cjs +1 -1
- package/dist/lib/cjs/transport.d.cts +37 -0
- package/dist/lib/cjs/vault-path-match.cjs +49 -0
- package/dist/lib/cjs/vault-path-match.d.cts +36 -0
- package/dist/lib/cjs/vitest/global-setup-no-plugin.cjs +37 -0
- package/dist/lib/cjs/vitest/global-setup-no-plugin.d.cts +26 -0
- package/dist/lib/cjs/vitest/global-setup.cjs +7 -2
- package/dist/lib/cjs/vitest/global-setup.d.cts +20 -3
- package/dist/lib/esm/avd-list.d.mts +38 -0
- package/dist/lib/esm/avd-list.mjs +11 -0
- package/dist/lib/esm/demo-vault-populate.d.mts +71 -0
- package/dist/lib/esm/demo-vault-populate.mjs +57 -0
- package/dist/lib/esm/demo-vault-tree.d.mts +34 -0
- package/dist/lib/esm/demo-vault-tree.mjs +35 -0
- package/dist/lib/esm/enable-plugin.d.mts +26 -1
- package/dist/lib/esm/enable-plugin.mjs +54 -4
- package/dist/lib/esm/global-setup-core.d.mts +24 -3
- package/dist/lib/esm/global-setup-core.mjs +101 -27
- package/dist/lib/esm/index.d.mts +6 -0
- package/dist/lib/esm/index.mjs +7 -1
- package/dist/lib/esm/jest/global-setup-no-plugin.d.mts +26 -0
- package/dist/lib/esm/jest/global-setup-no-plugin.mjs +17 -0
- package/dist/lib/esm/jest/global-setup.d.mts +20 -3
- package/dist/lib/esm/jest/global-setup.mjs +7 -2
- package/dist/lib/esm/jest/global-teardown-no-plugin.d.mts +11 -0
- package/dist/lib/esm/jest/global-teardown-no-plugin.mjs +6 -0
- package/dist/lib/esm/library.mjs +1 -1
- package/dist/lib/esm/plugin-enable-retry.d.mts +71 -0
- package/dist/lib/esm/plugin-enable-retry.mjs +24 -0
- package/dist/lib/esm/poll-in-obsidian.d.mts +92 -0
- package/dist/lib/esm/poll-in-obsidian.mjs +48 -0
- package/dist/lib/esm/poll-until.d.mts +42 -0
- package/dist/lib/esm/poll-until.mjs +19 -0
- package/dist/lib/esm/process-exit-message.d.mts +48 -0
- package/dist/lib/esm/process-exit-message.mjs +23 -0
- package/dist/lib/esm/transport-appium.d.mts +24 -1
- package/dist/lib/esm/transport-appium.mjs +51 -1
- package/dist/lib/esm/transport-desktop-cdp.d.mts +9 -2
- package/dist/lib/esm/transport-desktop-cdp.mjs +20 -11
- package/dist/lib/esm/transport-factory.mjs +125 -23
- package/dist/lib/esm/transport-options.d.mts +28 -0
- package/dist/lib/esm/transport.d.mts +37 -0
- package/dist/lib/esm/vault-path-match.d.mts +36 -0
- package/dist/lib/esm/vault-path-match.mjs +14 -0
- package/dist/lib/esm/vitest/global-setup-no-plugin.d.mts +26 -0
- package/dist/lib/esm/vitest/global-setup-no-plugin.mjs +11 -0
- package/dist/lib/esm/vitest/global-setup.d.mts +20 -3
- package/dist/lib/esm/vitest/global-setup.mjs +7 -2
- package/dist/obsidian-integration-testing-9.1.0.tgz +0 -0
- package/package.json +38 -8
- package/dist/obsidian-integration-testing-8.4.0.tgz +0 -0
|
@@ -100,6 +100,34 @@ export interface ObsidianAndroidAppiumTransportOptions {
|
|
|
100
100
|
* @default `90000`
|
|
101
101
|
*/
|
|
102
102
|
readonly layoutReadyTimeoutInMilliseconds?: number;
|
|
103
|
+
/**
|
|
104
|
+
* Number of extra attempts to enable the plugin and verify it loaded, on top
|
|
105
|
+
* of the first attempt.
|
|
106
|
+
*
|
|
107
|
+
* On a freshly cold-booted emulator the plugin subsystem can still be settling
|
|
108
|
+
* when the harness enables the plugin, so the enable lands in the enabled set
|
|
109
|
+
* but the load races and fails (`"<id>" is in the enabled set but not loaded`).
|
|
110
|
+
* Device-idle and `layoutReady` are already awaited, so this is the narrow
|
|
111
|
+
* residual race: the harness retries the enable + load-verification this many
|
|
112
|
+
* times with exponential backoff (see
|
|
113
|
+
* {@link pluginEnableRetryDelayInMilliseconds}), forcing a genuine reload each
|
|
114
|
+
* attempt. A captured plugin load error is treated as a deterministic bug and
|
|
115
|
+
* is **not** retried. Set `0` to disable retry (a single attempt).
|
|
116
|
+
*
|
|
117
|
+
* @default `3`
|
|
118
|
+
*/
|
|
119
|
+
readonly pluginEnableRetryCount?: number;
|
|
120
|
+
/**
|
|
121
|
+
* Base delay in milliseconds between plugin-enable attempts (see
|
|
122
|
+
* {@link pluginEnableRetryCount}).
|
|
123
|
+
*
|
|
124
|
+
* The delay grows exponentially per retry: the first retry waits this long,
|
|
125
|
+
* the second twice as long, the third four times, and so on — giving a
|
|
126
|
+
* still-settling cold guest progressively more time to become ready.
|
|
127
|
+
*
|
|
128
|
+
* @default `2000`
|
|
129
|
+
*/
|
|
130
|
+
readonly pluginEnableRetryDelayInMilliseconds?: number;
|
|
103
131
|
/**
|
|
104
132
|
* Timeout in milliseconds for establishing the Appium session (WebDriverIO
|
|
105
133
|
* `remote()` — UiAutomator2 server install + app launch).
|
|
@@ -3,6 +3,18 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Defines the transport interface for communicating with a running Obsidian instance.
|
|
5
5
|
*/
|
|
6
|
+
/**
|
|
7
|
+
* An opaque handle identifying a console-capture window opened by
|
|
8
|
+
* {@link ObsidianTransport.beginConsoleCapture} and consumed by
|
|
9
|
+
* {@link ObsidianTransport.readConsoleCaptureSince}.
|
|
10
|
+
*/
|
|
11
|
+
export interface ConsoleCaptureHandle {
|
|
12
|
+
/**
|
|
13
|
+
* A unique marker written into the target's log stream at capture start,
|
|
14
|
+
* used to slice out everything logged after this point.
|
|
15
|
+
*/
|
|
16
|
+
readonly marker: string;
|
|
17
|
+
}
|
|
6
18
|
/**
|
|
7
19
|
* A pluggable transport that evaluates JavaScript expressions inside a running
|
|
8
20
|
* Obsidian instance and manages vault lifecycle.
|
|
@@ -13,6 +25,21 @@
|
|
|
13
25
|
* - {@link AppiumTransport} — Mobile Obsidian via Appium WebView JS injection
|
|
14
26
|
*/
|
|
15
27
|
export interface ObsidianTransport {
|
|
28
|
+
/**
|
|
29
|
+
* Begins capturing the target's native console/error stream so a later
|
|
30
|
+
* {@link ObsidianTransport.readConsoleCaptureSince} can return everything
|
|
31
|
+
* logged since this call.
|
|
32
|
+
*
|
|
33
|
+
* Used to surface the *real* plugin-load error when Obsidian swallows it
|
|
34
|
+
* before the harness's `loadPlugin` monkey-patch sees it (the error then
|
|
35
|
+
* only exists in the renderer/WebView console). Optional and platform-specific:
|
|
36
|
+
* implemented by {@link AppiumTransport} (tails `adb logcat`); absent on
|
|
37
|
+
* {@link DesktopCdpTransport} (desktop errors are surfaced in-renderer, and a
|
|
38
|
+
* developer can open DevTools directly).
|
|
39
|
+
*
|
|
40
|
+
* @returns An opaque handle to pass to {@link ObsidianTransport.readConsoleCaptureSince}, or `undefined` when unsupported.
|
|
41
|
+
*/
|
|
42
|
+
beginConsoleCapture?(): Promise<ConsoleCaptureHandle | undefined>;
|
|
16
43
|
/**
|
|
17
44
|
* Disposes of transport resources (e.g. WebSocket connections, Appium sessions).
|
|
18
45
|
*/
|
|
@@ -64,6 +91,16 @@ export interface ObsidianTransport {
|
|
|
64
91
|
* @param files - Map of relative file paths to content buffers.
|
|
65
92
|
*/
|
|
66
93
|
pushFiles?(vaultPath: string, files: Record<string, Uint8Array>): Promise<void>;
|
|
94
|
+
/**
|
|
95
|
+
* Reads the native console/error output captured since the matching
|
|
96
|
+
* {@link ObsidianTransport.beginConsoleCapture} call.
|
|
97
|
+
*
|
|
98
|
+
* A bounded, post-hoc, failure-path-only dump — not a live monitor.
|
|
99
|
+
*
|
|
100
|
+
* @param handle - The handle returned by {@link ObsidianTransport.beginConsoleCapture} (or `undefined` when capture was unsupported).
|
|
101
|
+
* @returns The captured console/error text, or `undefined` when unsupported or nothing relevant was logged.
|
|
102
|
+
*/
|
|
103
|
+
readConsoleCaptureSince?(handle: ConsoleCaptureHandle | undefined): Promise<string | undefined>;
|
|
67
104
|
/**
|
|
68
105
|
* Registers a vault path so Obsidian can target it.
|
|
69
106
|
*
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file
|
|
3
|
+
*
|
|
4
|
+
* Pure matching of a probed vault base path against a requested vault path.
|
|
5
|
+
*
|
|
6
|
+
* The desktop CDP transport routes an `evalInObsidian` call to the correct
|
|
7
|
+
* Obsidian window by probing each target's `app.vault.adapter.getBasePath()` and
|
|
8
|
+
* comparing it to the requested vault path. That comparison must tolerate benign
|
|
9
|
+
* formatting differences between the renderer-reported base path and the
|
|
10
|
+
* Node-side path (path-separator flavor, and case on case-insensitive
|
|
11
|
+
* filesystems), so it lives here as a pure, unit-tested helper rather than as a
|
|
12
|
+
* raw `===` inside the integration-only transport module (which is excluded from
|
|
13
|
+
* unit tests).
|
|
14
|
+
*/
|
|
15
|
+
/**
|
|
16
|
+
* Normalizes a vault path for comparison: unifies path separators to `/`, strips
|
|
17
|
+
* any trailing separators, and (on a case-insensitive filesystem) lowercases it.
|
|
18
|
+
*
|
|
19
|
+
* @param path - The path to normalize.
|
|
20
|
+
* @param isCaseInsensitive - Whether to compare case-insensitively. Defaults to
|
|
21
|
+
* the host filesystem's behavior (case-insensitive on Windows).
|
|
22
|
+
* @returns The normalized path.
|
|
23
|
+
*/
|
|
24
|
+
export declare function normalizeVaultPathForComparison(path: string, isCaseInsensitive?: boolean): string;
|
|
25
|
+
/**
|
|
26
|
+
* Whether a probed base path and a requested vault path refer to the same vault,
|
|
27
|
+
* comparing via {@link normalizeVaultPathForComparison} so separator-flavor and
|
|
28
|
+
* (on case-insensitive filesystems) case differences do not cause a false miss.
|
|
29
|
+
*
|
|
30
|
+
* @param basePath - The base path probed from an Obsidian target.
|
|
31
|
+
* @param vaultPath - The requested vault path.
|
|
32
|
+
* @param isCaseInsensitive - Whether to compare case-insensitively. Defaults to
|
|
33
|
+
* the host filesystem's behavior (case-insensitive on Windows).
|
|
34
|
+
* @returns `true` when the two paths refer to the same vault.
|
|
35
|
+
*/
|
|
36
|
+
export declare function vaultPathsMatch(basePath: string, vaultPath: string, isCaseInsensitive?: boolean): boolean;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import process from "node:process";
|
|
2
|
+
const IS_CASE_INSENSITIVE_FILESYSTEM = process.platform === "win32";
|
|
3
|
+
function normalizeVaultPathForComparison(path, isCaseInsensitive = IS_CASE_INSENSITIVE_FILESYSTEM) {
|
|
4
|
+
const unifiedSeparators = path.replace(/[\\/]+/g, "/").replace(/\/+$/, "");
|
|
5
|
+
return isCaseInsensitive ? unifiedSeparators.toLowerCase() : unifiedSeparators;
|
|
6
|
+
}
|
|
7
|
+
function vaultPathsMatch(basePath, vaultPath, isCaseInsensitive = IS_CASE_INSENSITIVE_FILESYSTEM) {
|
|
8
|
+
return normalizeVaultPathForComparison(basePath, isCaseInsensitive) === normalizeVaultPathForComparison(vaultPath, isCaseInsensitive);
|
|
9
|
+
}
|
|
10
|
+
export {
|
|
11
|
+
normalizeVaultPathForComparison,
|
|
12
|
+
vaultPathsMatch
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3ZhdWx0LXBhdGgtbWF0Y2gudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBQdXJlIG1hdGNoaW5nIG9mIGEgcHJvYmVkIHZhdWx0IGJhc2UgcGF0aCBhZ2FpbnN0IGEgcmVxdWVzdGVkIHZhdWx0IHBhdGguXG4gKlxuICogVGhlIGRlc2t0b3AgQ0RQIHRyYW5zcG9ydCByb3V0ZXMgYW4gYGV2YWxJbk9ic2lkaWFuYCBjYWxsIHRvIHRoZSBjb3JyZWN0XG4gKiBPYnNpZGlhbiB3aW5kb3cgYnkgcHJvYmluZyBlYWNoIHRhcmdldCdzIGBhcHAudmF1bHQuYWRhcHRlci5nZXRCYXNlUGF0aCgpYCBhbmRcbiAqIGNvbXBhcmluZyBpdCB0byB0aGUgcmVxdWVzdGVkIHZhdWx0IHBhdGguIFRoYXQgY29tcGFyaXNvbiBtdXN0IHRvbGVyYXRlIGJlbmlnblxuICogZm9ybWF0dGluZyBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSByZW5kZXJlci1yZXBvcnRlZCBiYXNlIHBhdGggYW5kIHRoZVxuICogTm9kZS1zaWRlIHBhdGggKHBhdGgtc2VwYXJhdG9yIGZsYXZvciwgYW5kIGNhc2Ugb24gY2FzZS1pbnNlbnNpdGl2ZVxuICogZmlsZXN5c3RlbXMpLCBzbyBpdCBsaXZlcyBoZXJlIGFzIGEgcHVyZSwgdW5pdC10ZXN0ZWQgaGVscGVyIHJhdGhlciB0aGFuIGFzIGFcbiAqIHJhdyBgPT09YCBpbnNpZGUgdGhlIGludGVncmF0aW9uLW9ubHkgdHJhbnNwb3J0IG1vZHVsZSAod2hpY2ggaXMgZXhjbHVkZWQgZnJvbVxuICogdW5pdCB0ZXN0cykuXG4gKi9cblxuaW1wb3J0IHByb2Nlc3MgZnJvbSAnbm9kZTpwcm9jZXNzJztcblxuLyoqXG4gKiBXaGV0aGVyIHRoZSBob3N0IGZpbGVzeXN0ZW0gY29tcGFyZXMgcGF0aHMgY2FzZS1pbnNlbnNpdGl2ZWx5LiBXaW5kb3dzIChhbmQsIGluXG4gKiBwcmFjdGljZSwgdGhlIGRlZmF1bHQgbWFjT1Mgdm9sdW1lKSBhcmUgY2FzZS1pbnNlbnNpdGl2ZTsgdHJlYXQgb25seSBXaW5kb3dzIGFzXG4gKiBzdWNoIGJ5IGRlZmF1bHQsIG1hdGNoaW5nIHdoZXJlIHRoZSBoYXJuZXNzIHJ1bnMuXG4gKi9cbmNvbnN0IElTX0NBU0VfSU5TRU5TSVRJVkVfRklMRVNZU1RFTSA9IHByb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMic7XG5cbi8qKlxuICogTm9ybWFsaXplcyBhIHZhdWx0IHBhdGggZm9yIGNvbXBhcmlzb246IHVuaWZpZXMgcGF0aCBzZXBhcmF0b3JzIHRvIGAvYCwgc3RyaXBzXG4gKiBhbnkgdHJhaWxpbmcgc2VwYXJhdG9ycywgYW5kIChvbiBhIGNhc2UtaW5zZW5zaXRpdmUgZmlsZXN5c3RlbSkgbG93ZXJjYXNlcyBpdC5cbiAqXG4gKiBAcGFyYW0gcGF0aCAtIFRoZSBwYXRoIHRvIG5vcm1hbGl6ZS5cbiAqIEBwYXJhbSBpc0Nhc2VJbnNlbnNpdGl2ZSAtIFdoZXRoZXIgdG8gY29tcGFyZSBjYXNlLWluc2Vuc2l0aXZlbHkuIERlZmF1bHRzIHRvXG4gKiAgIHRoZSBob3N0IGZpbGVzeXN0ZW0ncyBiZWhhdmlvciAoY2FzZS1pbnNlbnNpdGl2ZSBvbiBXaW5kb3dzKS5cbiAqIEByZXR1cm5zIFRoZSBub3JtYWxpemVkIHBhdGguXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVWYXVsdFBhdGhGb3JDb21wYXJpc29uKHBhdGg6IHN0cmluZywgaXNDYXNlSW5zZW5zaXRpdmUgPSBJU19DQVNFX0lOU0VOU0lUSVZFX0ZJTEVTWVNURU0pOiBzdHJpbmcge1xuICBjb25zdCB1bmlmaWVkU2VwYXJhdG9ycyA9IHBhdGgucmVwbGFjZSgvW1xcXFwvXSsvZywgJy8nKS5yZXBsYWNlKC9cXC8rJC8sICcnKTtcbiAgcmV0dXJuIGlzQ2FzZUluc2Vuc2l0aXZlID8gdW5pZmllZFNlcGFyYXRvcnMudG9Mb3dlckNhc2UoKSA6IHVuaWZpZWRTZXBhcmF0b3JzO1xufVxuXG4vKipcbiAqIFdoZXRoZXIgYSBwcm9iZWQgYmFzZSBwYXRoIGFuZCBhIHJlcXVlc3RlZCB2YXVsdCBwYXRoIHJlZmVyIHRvIHRoZSBzYW1lIHZhdWx0LFxuICogY29tcGFyaW5nIHZpYSB7QGxpbmsgbm9ybWFsaXplVmF1bHRQYXRoRm9yQ29tcGFyaXNvbn0gc28gc2VwYXJhdG9yLWZsYXZvciBhbmRcbiAqIChvbiBjYXNlLWluc2Vuc2l0aXZlIGZpbGVzeXN0ZW1zKSBjYXNlIGRpZmZlcmVuY2VzIGRvIG5vdCBjYXVzZSBhIGZhbHNlIG1pc3MuXG4gKlxuICogQHBhcmFtIGJhc2VQYXRoIC0gVGhlIGJhc2UgcGF0aCBwcm9iZWQgZnJvbSBhbiBPYnNpZGlhbiB0YXJnZXQuXG4gKiBAcGFyYW0gdmF1bHRQYXRoIC0gVGhlIHJlcXVlc3RlZCB2YXVsdCBwYXRoLlxuICogQHBhcmFtIGlzQ2FzZUluc2Vuc2l0aXZlIC0gV2hldGhlciB0byBjb21wYXJlIGNhc2UtaW5zZW5zaXRpdmVseS4gRGVmYXVsdHMgdG9cbiAqICAgdGhlIGhvc3QgZmlsZXN5c3RlbSdzIGJlaGF2aW9yIChjYXNlLWluc2Vuc2l0aXZlIG9uIFdpbmRvd3MpLlxuICogQHJldHVybnMgYHRydWVgIHdoZW4gdGhlIHR3byBwYXRocyByZWZlciB0byB0aGUgc2FtZSB2YXVsdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhdWx0UGF0aHNNYXRjaChiYXNlUGF0aDogc3RyaW5nLCB2YXVsdFBhdGg6IHN0cmluZywgaXNDYXNlSW5zZW5zaXRpdmUgPSBJU19DQVNFX0lOU0VOU0lUSVZFX0ZJTEVTWVNURU0pOiBib29sZWFuIHtcbiAgcmV0dXJuIG5vcm1hbGl6ZVZhdWx0UGF0aEZvckNvbXBhcmlzb24oYmFzZVBhdGgsIGlzQ2FzZUluc2Vuc2l0aXZlKSA9PT0gbm9ybWFsaXplVmF1bHRQYXRoRm9yQ29tcGFyaXNvbih2YXVsdFBhdGgsIGlzQ2FzZUluc2Vuc2l0aXZlKTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICJBQWVBLE9BQU8sYUFBYTtBQU9wQixNQUFNLGlDQUFpQyxRQUFRLGFBQWE7QUFXckQsU0FBUyxnQ0FBZ0MsTUFBYyxvQkFBb0IsZ0NBQXdDO0FBQ3hILFFBQU0sb0JBQW9CLEtBQUssUUFBUSxXQUFXLEdBQUcsRUFBRSxRQUFRLFFBQVEsRUFBRTtBQUN6RSxTQUFPLG9CQUFvQixrQkFBa0IsWUFBWSxJQUFJO0FBQy9EO0FBYU8sU0FBUyxnQkFBZ0IsVUFBa0IsV0FBbUIsb0JBQW9CLGdDQUF5QztBQUNoSSxTQUFPLGdDQUFnQyxVQUFVLGlCQUFpQixNQUFNLGdDQUFnQyxXQUFXLGlCQUFpQjtBQUN0STsiLAogICJuYW1lcyI6IFtdCn0K
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file
|
|
3
|
+
*
|
|
4
|
+
* Vitest **plugin-less** global setup/teardown adapter.
|
|
5
|
+
*
|
|
6
|
+
* The counterpart to `./global-setup.ts` (which installs and enables the built
|
|
7
|
+
* plugin). This one runs {@link createSetup} with `installPlugin: false`, so it
|
|
8
|
+
* launches the owned Obsidian instance, registers an **empty** temp vault, and
|
|
9
|
+
* publishes the owned-instance endpoint to workers — but copies/enables no
|
|
10
|
+
* plugin. Point a non-plugin consumer's `globalSetup` straight at
|
|
11
|
+
* `obsidian-integration-testing/vitest-global-setup-no-plugin`; no wrapper needed.
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* Vitest global setup function (plugin-less; no pre-population).
|
|
15
|
+
*
|
|
16
|
+
* Registers an empty temp vault and provides `tempVaultPath` to tests, without
|
|
17
|
+
* copying or enabling any plugin.
|
|
18
|
+
*/
|
|
19
|
+
export declare const setup: (this: void, project: import("vitest/node").TestProject) => Promise<void>;
|
|
20
|
+
/**
|
|
21
|
+
* Vitest global teardown function.
|
|
22
|
+
*
|
|
23
|
+
* Removes the temporary vault created during setup.
|
|
24
|
+
*/
|
|
25
|
+
export declare const teardown: (this: void) => Promise<void>;
|
|
26
|
+
export { getTempVault } from './global-setup.mjs';
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { createSetup } from "./global-setup.mjs";
|
|
2
|
+
const noPluginGlobalSetup = createSetup({ installPlugin: false });
|
|
3
|
+
const setup = noPluginGlobalSetup.setup;
|
|
4
|
+
const teardown = noPluginGlobalSetup.teardown;
|
|
5
|
+
import { getTempVault } from "./global-setup.mjs";
|
|
6
|
+
export {
|
|
7
|
+
getTempVault,
|
|
8
|
+
setup,
|
|
9
|
+
teardown
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3ZpdGVzdC9nbG9iYWwtc2V0dXAtbm8tcGx1Z2luLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogVml0ZXN0ICoqcGx1Z2luLWxlc3MqKiBnbG9iYWwgc2V0dXAvdGVhcmRvd24gYWRhcHRlci5cbiAqXG4gKiBUaGUgY291bnRlcnBhcnQgdG8gYC4vZ2xvYmFsLXNldHVwLnRzYCAod2hpY2ggaW5zdGFsbHMgYW5kIGVuYWJsZXMgdGhlIGJ1aWx0XG4gKiBwbHVnaW4pLiBUaGlzIG9uZSBydW5zIHtAbGluayBjcmVhdGVTZXR1cH0gd2l0aCBgaW5zdGFsbFBsdWdpbjogZmFsc2VgLCBzbyBpdFxuICogbGF1bmNoZXMgdGhlIG93bmVkIE9ic2lkaWFuIGluc3RhbmNlLCByZWdpc3RlcnMgYW4gKiplbXB0eSoqIHRlbXAgdmF1bHQsIGFuZFxuICogcHVibGlzaGVzIHRoZSBvd25lZC1pbnN0YW5jZSBlbmRwb2ludCB0byB3b3JrZXJzIFx1MjAxNCBidXQgY29waWVzL2VuYWJsZXMgbm9cbiAqIHBsdWdpbi4gUG9pbnQgYSBub24tcGx1Z2luIGNvbnN1bWVyJ3MgYGdsb2JhbFNldHVwYCBzdHJhaWdodCBhdFxuICogYG9ic2lkaWFuLWludGVncmF0aW9uLXRlc3Rpbmcvdml0ZXN0LWdsb2JhbC1zZXR1cC1uby1wbHVnaW5gOyBubyB3cmFwcGVyIG5lZWRlZC5cbiAqL1xuXG4vKiB2OCBpZ25vcmUgc3RhcnQgLS0gSW50ZWdyYXRpb24tdGltZSBzZXR1cCBjb3ZlcmVkIGJ5IGludGVncmF0aW9uIHRlc3RzLCBub3QgdW5pdCB0ZXN0cy4gKi9cblxuaW1wb3J0IHsgY3JlYXRlU2V0dXAgfSBmcm9tICcuL2dsb2JhbC1zZXR1cC5tanMnO1xuXG5jb25zdCBub1BsdWdpbkdsb2JhbFNldHVwID0gY3JlYXRlU2V0dXAoeyBpbnN0YWxsUGx1Z2luOiBmYWxzZSB9KTtcblxuLyoqXG4gKiBWaXRlc3QgZ2xvYmFsIHNldHVwIGZ1bmN0aW9uIChwbHVnaW4tbGVzczsgbm8gcHJlLXBvcHVsYXRpb24pLlxuICpcbiAqIFJlZ2lzdGVycyBhbiBlbXB0eSB0ZW1wIHZhdWx0IGFuZCBwcm92aWRlcyBgdGVtcFZhdWx0UGF0aGAgdG8gdGVzdHMsIHdpdGhvdXRcbiAqIGNvcHlpbmcgb3IgZW5hYmxpbmcgYW55IHBsdWdpbi5cbiAqL1xuZXhwb3J0IGNvbnN0IHNldHVwID0gbm9QbHVnaW5HbG9iYWxTZXR1cC5zZXR1cDtcblxuLyoqXG4gKiBWaXRlc3QgZ2xvYmFsIHRlYXJkb3duIGZ1bmN0aW9uLlxuICpcbiAqIFJlbW92ZXMgdGhlIHRlbXBvcmFyeSB2YXVsdCBjcmVhdGVkIGR1cmluZyBzZXR1cC5cbiAqL1xuZXhwb3J0IGNvbnN0IHRlYXJkb3duID0gbm9QbHVnaW5HbG9iYWxTZXR1cC50ZWFyZG93bjtcblxuZXhwb3J0IHsgZ2V0VGVtcFZhdWx0IH0gZnJvbSAnLi9nbG9iYWwtc2V0dXAubWpzJztcbiJdLAogICJtYXBwaW5ncyI6ICJBQWVBLFNBQVMsbUJBQW1CO0FBRTVCLE1BQU0sc0JBQXNCLFlBQVksRUFBRSxlQUFlLE1BQU0sQ0FBQztBQVF6RCxNQUFNLFFBQVEsb0JBQW9CO0FBT2xDLE1BQU0sV0FBVyxvQkFBb0I7QUFFNUMsU0FBUyxvQkFBb0I7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
|
@@ -13,6 +13,22 @@ import { TempVault } from '../temp-vault.mjs';
|
|
|
13
13
|
* Options for {@link createSetup}.
|
|
14
14
|
*/
|
|
15
15
|
export interface CreateSetupOptions {
|
|
16
|
+
/**
|
|
17
|
+
* Community-plugin ids to enable in the vault in addition to the plugin-under-test,
|
|
18
|
+
* after it is enabled (see {@link CoreSetupParams.enableCommunityPlugins}). Seed each
|
|
19
|
+
* plugin's built files via {@link CreateSetupOptions.populate} (e.g. with `buildDemoVaultPopulate`)
|
|
20
|
+
* so the enable finds them on disk.
|
|
21
|
+
*/
|
|
22
|
+
readonly enableCommunityPlugins?: readonly string[];
|
|
23
|
+
/**
|
|
24
|
+
* Whether to install and enable the built plugin in the temp vault. Defaults
|
|
25
|
+
* to `true`. Set to `false` for a **non-plugin** consumer that only needs a
|
|
26
|
+
* registered, empty vault to `evalInObsidian` against — the owned instance is
|
|
27
|
+
* still launched and its endpoint published to workers, so re-exporting
|
|
28
|
+
* `createSetup({ installPlugin: false })` reuses the same attach wiring with no
|
|
29
|
+
* plugin copy/enable. See {@link CoreSetupParams.installPlugin}.
|
|
30
|
+
*/
|
|
31
|
+
readonly installPlugin?: boolean;
|
|
16
32
|
/**
|
|
17
33
|
* Returns files/folders to write into the vault before Obsidian opens it (see
|
|
18
34
|
* {@link CoreSetupParams.populate}). A thunk so large fixtures are built lazily,
|
|
@@ -31,7 +47,8 @@ export interface VitestGlobalSetup {
|
|
|
31
47
|
* Creates a Vitest global setup/teardown pair, optionally pre-populating the vault
|
|
32
48
|
* before Obsidian opens it — use this for a dedicated large-vault/performance
|
|
33
49
|
* project. The plain {@link setup} / {@link teardown} exports are the no-populate
|
|
34
|
-
* case (`createSetup()`).
|
|
50
|
+
* case (`createSetup()`). Pass `{ installPlugin: false }` for a non-plugin consumer
|
|
51
|
+
* that only needs a registered, empty vault (see {@link CreateSetupOptions.installPlugin}).
|
|
35
52
|
*
|
|
36
53
|
* @param options - Setup options.
|
|
37
54
|
* @returns The `setup` and `teardown` functions to re-export from a `globalSetup` module.
|
|
@@ -46,8 +63,8 @@ export declare function getTempVault(): TempVault;
|
|
|
46
63
|
/**
|
|
47
64
|
* Vitest global setup function (no pre-population).
|
|
48
65
|
*
|
|
49
|
-
* Copies the built plugin into a temporary vault, enables it via
|
|
50
|
-
* and provides `tempVaultPath` to tests.
|
|
66
|
+
* Copies the built plugin into a temporary vault, enables it via a renderer eval
|
|
67
|
+
* over the transport, and provides `tempVaultPath` to tests.
|
|
51
68
|
*
|
|
52
69
|
* @param project - The Vitest project.
|
|
53
70
|
* @returns A promise that resolves when setup completes.
|
|
@@ -20,7 +20,12 @@ function createSetup(options) {
|
|
|
20
20
|
const transportOptions = environmentOptions?.["obsidianTransport"];
|
|
21
21
|
const label = transportOptions?.type ?? "obsidian-cdp";
|
|
22
22
|
try {
|
|
23
|
-
setupResult = await coreSetup({
|
|
23
|
+
setupResult = await coreSetup({
|
|
24
|
+
enableCommunityPlugins: options?.enableCommunityPlugins,
|
|
25
|
+
installPlugin: options?.installPlugin,
|
|
26
|
+
populate: options?.populate?.(),
|
|
27
|
+
transportOptions
|
|
28
|
+
});
|
|
24
29
|
} catch (error) {
|
|
25
30
|
log(`[integration-setup:${label}] Setup failed (tests for this project will be skipped): ${errorToString(error)}`);
|
|
26
31
|
project.provide("setupError", errorToString(error));
|
|
@@ -50,4 +55,4 @@ export {
|
|
|
50
55
|
setup,
|
|
51
56
|
teardown
|
|
52
57
|
};
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3ZpdGVzdC9nbG9iYWwtc2V0dXAudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBWaXRlc3QgZ2xvYmFsIHNldHVwIGFuZCB0ZWFyZG93biBhZGFwdGVyLlxuICpcbiAqIERlbGVnYXRlcyB0byB0aGUgZnJhbWV3b3JrLWFnbm9zdGljIGNvcmUgYW5kIGJyaWRnZXMgY29udGV4dFxuICogdG8gdGVzdCB3b3JrZXJzIHZpYSBWaXRlc3QncyBgcHJvamVjdC5wcm92aWRlYCAvIGBpbmplY3RgLlxuICovXG5cbi8qIHY4IGlnbm9yZSBzdGFydCAtLSBJbnRlZ3JhdGlvbi10aW1lIHNldHVwIGNvdmVyZWQgYnkgaW50ZWdyYXRpb24gdGVzdHMsIG5vdCB1bml0IHRlc3RzLiAqL1xuXG5pbXBvcnQgdHlwZSB7IFRlc3RQcm9qZWN0IH0gZnJvbSAndml0ZXN0L25vZGUnO1xuXG5pbXBvcnQgeyBpbmplY3QgfSBmcm9tICd2aXRlc3QnO1xuXG5pbXBvcnQgdHlwZSB7IENvcmVTZXR1cFJlc3VsdCB9IGZyb20gJy4uL2dsb2JhbC1zZXR1cC1jb3JlLm1qcyc7XG5pbXBvcnQgdHlwZSB7IFBvcHVsYXRlRmlsZXNQYXJhbXMgfSBmcm9tICcuLi90ZW1wLXZhdWx0Lm1qcyc7XG5pbXBvcnQgdHlwZSB7IE9ic2lkaWFuVHJhbnNwb3J0T3B0aW9ucyB9IGZyb20gJy4uL3RyYW5zcG9ydC1vcHRpb25zLm1qcyc7XG5cbmltcG9ydCB7XG4gIHNldFRyYW5zcG9ydE9wdGlvbnNSZXNvbHZlcixcbiAgc2V0VmF1bHRQYXRoUmVzb2x2ZXJcbn0gZnJvbSAnLi4vY29udGV4dC1wcm92aWRlci5tanMnO1xuaW1wb3J0IHsgZXJyb3JUb1N0cmluZyB9IGZyb20gJy4uL2Vycm9yLXRvLXN0cmluZy5tanMnO1xuaW1wb3J0IHtcbiAgY29yZVNldHVwLFxuICBjb3JlVGVhcmRvd25cbn0gZnJvbSAnLi4vZ2xvYmFsLXNldHVwLWNvcmUubWpzJztcbmltcG9ydCB7IGxvZyB9IGZyb20gJy4uL2xvZy5tanMnO1xuaW1wb3J0IHsgVGVtcFZhdWx0IH0gZnJvbSAnLi4vdGVtcC12YXVsdC5tanMnO1xuXG5zZXRUcmFuc3BvcnRPcHRpb25zUmVzb2x2ZXIoKCkgPT4gaW5qZWN0KCdvYnNpZGlhblRyYW5zcG9ydCcpKTtcbnNldFZhdWx0UGF0aFJlc29sdmVyKCgpID0+
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3ZpdGVzdC9nbG9iYWwtc2V0dXAudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBWaXRlc3QgZ2xvYmFsIHNldHVwIGFuZCB0ZWFyZG93biBhZGFwdGVyLlxuICpcbiAqIERlbGVnYXRlcyB0byB0aGUgZnJhbWV3b3JrLWFnbm9zdGljIGNvcmUgYW5kIGJyaWRnZXMgY29udGV4dFxuICogdG8gdGVzdCB3b3JrZXJzIHZpYSBWaXRlc3QncyBgcHJvamVjdC5wcm92aWRlYCAvIGBpbmplY3RgLlxuICovXG5cbi8qIHY4IGlnbm9yZSBzdGFydCAtLSBJbnRlZ3JhdGlvbi10aW1lIHNldHVwIGNvdmVyZWQgYnkgaW50ZWdyYXRpb24gdGVzdHMsIG5vdCB1bml0IHRlc3RzLiAqL1xuXG5pbXBvcnQgdHlwZSB7IFRlc3RQcm9qZWN0IH0gZnJvbSAndml0ZXN0L25vZGUnO1xuXG5pbXBvcnQgeyBpbmplY3QgfSBmcm9tICd2aXRlc3QnO1xuXG5pbXBvcnQgdHlwZSB7IENvcmVTZXR1cFJlc3VsdCB9IGZyb20gJy4uL2dsb2JhbC1zZXR1cC1jb3JlLm1qcyc7XG5pbXBvcnQgdHlwZSB7IFBvcHVsYXRlRmlsZXNQYXJhbXMgfSBmcm9tICcuLi90ZW1wLXZhdWx0Lm1qcyc7XG5pbXBvcnQgdHlwZSB7IE9ic2lkaWFuVHJhbnNwb3J0T3B0aW9ucyB9IGZyb20gJy4uL3RyYW5zcG9ydC1vcHRpb25zLm1qcyc7XG5cbmltcG9ydCB7XG4gIHNldFRyYW5zcG9ydE9wdGlvbnNSZXNvbHZlcixcbiAgc2V0VmF1bHRQYXRoUmVzb2x2ZXJcbn0gZnJvbSAnLi4vY29udGV4dC1wcm92aWRlci5tanMnO1xuaW1wb3J0IHsgZXJyb3JUb1N0cmluZyB9IGZyb20gJy4uL2Vycm9yLXRvLXN0cmluZy5tanMnO1xuaW1wb3J0IHtcbiAgY29yZVNldHVwLFxuICBjb3JlVGVhcmRvd25cbn0gZnJvbSAnLi4vZ2xvYmFsLXNldHVwLWNvcmUubWpzJztcbmltcG9ydCB7IGxvZyB9IGZyb20gJy4uL2xvZy5tanMnO1xuaW1wb3J0IHsgVGVtcFZhdWx0IH0gZnJvbSAnLi4vdGVtcC12YXVsdC5tanMnO1xuXG5zZXRUcmFuc3BvcnRPcHRpb25zUmVzb2x2ZXIoKCkgPT4gaW5qZWN0KCdvYnNpZGlhblRyYW5zcG9ydCcpKTtcbnNldFZhdWx0UGF0aFJlc29sdmVyKCgpID0+IGluamVjdCgndGVtcFZhdWx0UGF0aCcpKTtcblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgY3JlYXRlU2V0dXB9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZVNldHVwT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBDb21tdW5pdHktcGx1Z2luIGlkcyB0byBlbmFibGUgaW4gdGhlIHZhdWx0IGluIGFkZGl0aW9uIHRvIHRoZSBwbHVnaW4tdW5kZXItdGVzdCxcbiAgICogYWZ0ZXIgaXQgaXMgZW5hYmxlZCAoc2VlIHtAbGluayBDb3JlU2V0dXBQYXJhbXMuZW5hYmxlQ29tbXVuaXR5UGx1Z2luc30pLiBTZWVkIGVhY2hcbiAgICogcGx1Z2luJ3MgYnVpbHQgZmlsZXMgdmlhIHtAbGluayBDcmVhdGVTZXR1cE9wdGlvbnMucG9wdWxhdGV9IChlLmcuIHdpdGggYGJ1aWxkRGVtb1ZhdWx0UG9wdWxhdGVgKVxuICAgKiBzbyB0aGUgZW5hYmxlIGZpbmRzIHRoZW0gb24gZGlzay5cbiAgICovXG4gIHJlYWRvbmx5IGVuYWJsZUNvbW11bml0eVBsdWdpbnM/OiByZWFkb25seSBzdHJpbmdbXTtcblxuICAvKipcbiAgICogV2hldGhlciB0byBpbnN0YWxsIGFuZCBlbmFibGUgdGhlIGJ1aWx0IHBsdWdpbiBpbiB0aGUgdGVtcCB2YXVsdC4gRGVmYXVsdHNcbiAgICogdG8gYHRydWVgLiBTZXQgdG8gYGZhbHNlYCBmb3IgYSAqKm5vbi1wbHVnaW4qKiBjb25zdW1lciB0aGF0IG9ubHkgbmVlZHMgYVxuICAgKiByZWdpc3RlcmVkLCBlbXB0eSB2YXVsdCB0byBgZXZhbEluT2JzaWRpYW5gIGFnYWluc3QgXHUyMDE0IHRoZSBvd25lZCBpbnN0YW5jZSBpc1xuICAgKiBzdGlsbCBsYXVuY2hlZCBhbmQgaXRzIGVuZHBvaW50IHB1Ymxpc2hlZCB0byB3b3JrZXJzLCBzbyByZS1leHBvcnRpbmdcbiAgICogYGNyZWF0ZVNldHVwKHsgaW5zdGFsbFBsdWdpbjogZmFsc2UgfSlgIHJldXNlcyB0aGUgc2FtZSBhdHRhY2ggd2lyaW5nIHdpdGggbm9cbiAgICogcGx1Z2luIGNvcHkvZW5hYmxlLiBTZWUge0BsaW5rIENvcmVTZXR1cFBhcmFtcy5pbnN0YWxsUGx1Z2lufS5cbiAgICovXG4gIHJlYWRvbmx5IGluc3RhbGxQbHVnaW4/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGZpbGVzL2ZvbGRlcnMgdG8gd3JpdGUgaW50byB0aGUgdmF1bHQgYmVmb3JlIE9ic2lkaWFuIG9wZW5zIGl0IChzZWVcbiAgICoge0BsaW5rIENvcmVTZXR1cFBhcmFtcy5wb3B1bGF0ZX0pLiBBIHRodW5rIHNvIGxhcmdlIGZpeHR1cmVzIGFyZSBidWlsdCBsYXppbHksXG4gICAqIG9uY2UsIGluIHRoZSBzZXR1cCBwcm9jZXNzLlxuICAgKi9cbiAgcG9wdWxhdGU/KHRoaXM6IHZvaWQpOiBQb3B1bGF0ZUZpbGVzUGFyYW1zO1xufVxuXG4vKipcbiAqIEEgVml0ZXN0IGBnbG9iYWxTZXR1cGAgbW9kdWxlJ3MgYHNldHVwYCAvIGB0ZWFyZG93bmAgcGFpci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWaXRlc3RHbG9iYWxTZXR1cCB7XG4gIHNldHVwKHRoaXM6IHZvaWQsIHByb2plY3Q6IFRlc3RQcm9qZWN0KTogUHJvbWlzZTx2b2lkPjtcbiAgdGVhcmRvd24odGhpczogdm9pZCk6IFByb21pc2U8dm9pZD47XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIFZpdGVzdCBnbG9iYWwgc2V0dXAvdGVhcmRvd24gcGFpciwgb3B0aW9uYWxseSBwcmUtcG9wdWxhdGluZyB0aGUgdmF1bHRcbiAqIGJlZm9yZSBPYnNpZGlhbiBvcGVucyBpdCBcdTIwMTQgdXNlIHRoaXMgZm9yIGEgZGVkaWNhdGVkIGxhcmdlLXZhdWx0L3BlcmZvcm1hbmNlXG4gKiBwcm9qZWN0LiBUaGUgcGxhaW4ge0BsaW5rIHNldHVwfSAvIHtAbGluayB0ZWFyZG93bn0gZXhwb3J0cyBhcmUgdGhlIG5vLXBvcHVsYXRlXG4gKiBjYXNlIChgY3JlYXRlU2V0dXAoKWApLiBQYXNzIGB7IGluc3RhbGxQbHVnaW46IGZhbHNlIH1gIGZvciBhIG5vbi1wbHVnaW4gY29uc3VtZXJcbiAqIHRoYXQgb25seSBuZWVkcyBhIHJlZ2lzdGVyZWQsIGVtcHR5IHZhdWx0IChzZWUge0BsaW5rIENyZWF0ZVNldHVwT3B0aW9ucy5pbnN0YWxsUGx1Z2lufSkuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBTZXR1cCBvcHRpb25zLlxuICogQHJldHVybnMgVGhlIGBzZXR1cGAgYW5kIGB0ZWFyZG93bmAgZnVuY3Rpb25zIHRvIHJlLWV4cG9ydCBmcm9tIGEgYGdsb2JhbFNldHVwYCBtb2R1bGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTZXR1cChvcHRpb25zPzogQ3JlYXRlU2V0dXBPcHRpb25zKTogVml0ZXN0R2xvYmFsU2V0dXAge1xuICBsZXQgc2V0dXBSZXN1bHQ6IENvcmVTZXR1cFJlc3VsdCB8IHVuZGVmaW5lZDtcblxuICByZXR1cm4geyBzZXR1cCwgdGVhcmRvd24gfTtcblxuICBhc3luYyBmdW5jdGlvbiBzZXR1cChwcm9qZWN0OiBUZXN0UHJvamVjdCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGVudmlyb25tZW50T3B0aW9ucyA9IHByb2plY3QuY29uZmlnLmVudmlyb25tZW50T3B0aW9ucyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZDtcbiAgICBjb25zdCB0cmFuc3BvcnRPcHRpb25zID0gZW52aXJvbm1lbnRPcHRpb25zPy5bJ29ic2lkaWFuVHJhbnNwb3J0J10gYXMgT2JzaWRpYW5UcmFuc3BvcnRPcHRpb25zIHwgdW5kZWZpbmVkO1xuICAgIGNvbnN0IGxhYmVsID0gdHJhbnNwb3J0T3B0aW9ucz8udHlwZSA/PyAnb2JzaWRpYW4tY2RwJztcblxuICAgIHRyeSB7XG4gICAgICBzZXR1cFJlc3VsdCA9IGF3YWl0IGNvcmVTZXR1cCh7XG4gICAgICAgIGVuYWJsZUNvbW11bml0eVBsdWdpbnM6IG9wdGlvbnM/LmVuYWJsZUNvbW11bml0eVBsdWdpbnMsXG4gICAgICAgIGluc3RhbGxQbHVnaW46IG9wdGlvbnM/Lmluc3RhbGxQbHVnaW4sXG4gICAgICAgIHBvcHVsYXRlOiBvcHRpb25zPy5wb3B1bGF0ZT8uKCksXG4gICAgICAgIHRyYW5zcG9ydE9wdGlvbnNcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgICAvLyBDYXRjaCBzZXR1cCBlcnJvcnMgc28gdGhhdCBvdGhlciBwcm9qZWN0cycgdGVzdHMgY2FuIHN0aWxsIHJ1bi5cbiAgICAgIC8vIEluZGl2aWR1YWwgdGVzdHMgaW4gdGhpcyBwcm9qZWN0IHdpbGwgZmFpbCB3aXRoIHRoZSBzdG9yZWQgZXJyb3JcbiAgICAgIC8vIFdoZW4gdGhleSB0cnkgdG8gaW5qZWN0IHRoZSB0ZW1wIHZhdWx0IHBhdGguXG4gICAgICBsb2coYFtpbnRlZ3JhdGlvbi1zZXR1cDoke2xhYmVsfV0gU2V0dXAgZmFpbGVkICh0ZXN0cyBmb3IgdGhpcyBwcm9qZWN0IHdpbGwgYmUgc2tpcHBlZCk6ICR7ZXJyb3JUb1N0cmluZyhlcnJvcil9YCk7XG4gICAgICBwcm9qZWN0LnByb3ZpZGUoJ3NldHVwRXJyb3InLCBlcnJvclRvU3RyaW5nKGVycm9yKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcHJvamVjdC5wcm92aWRlKCdvYnNpZGlhblRyYW5zcG9ydCcsIHNldHVwUmVzdWx0LnRyYW5zcG9ydE9wdGlvbnMpO1xuICAgIHByb2plY3QucHJvdmlkZSgndGVtcFZhdWx0UGF0aCcsIHNldHVwUmVzdWx0LnRlbXBWYXVsdC5wYXRoKTtcbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIHRlYXJkb3duKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IGNvcmVUZWFyZG93bihzZXR1cFJlc3VsdCk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSB0ZW1wb3JhcnkgdmF1bHQgcHJvdmlkZWQgYnkgdGhlIGdsb2JhbCBzZXR1cC5cbiAqXG4gKiBAcmV0dXJucyBUaGUgdGVtcG9yYXJ5IHZhdWx0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGVtcFZhdWx0KCk6IFRlbXBWYXVsdCB7XG4gIGNvbnN0IHRlbXBWYXVsdFBhdGggPSBpbmplY3QoJ3RlbXBWYXVsdFBhdGgnKTtcbiAgY29uc3Qgc2V0dXBFcnJvck1lc3NhZ2UgPSBpbmplY3QoJ3NldHVwRXJyb3InKTtcbiAgaWYgKHNldHVwRXJyb3JNZXNzYWdlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnRlZ3JhdGlvbiBzZXR1cCBmYWlsZWQgXHUyMDE0IGNhbm5vdCBnZXQgdGVtcCB2YXVsdDogJHtzZXR1cEVycm9yTWVzc2FnZX1gKTtcbiAgfVxuICByZXR1cm4gbmV3IFRlbXBWYXVsdCh0ZW1wVmF1bHRQYXRoKTtcbn1cblxuY29uc3QgZGVmYXVsdEdsb2JhbFNldHVwID0gY3JlYXRlU2V0dXAoKTtcblxuLyoqXG4gKiBWaXRlc3QgZ2xvYmFsIHNldHVwIGZ1bmN0aW9uIChubyBwcmUtcG9wdWxhdGlvbikuXG4gKlxuICogQ29waWVzIHRoZSBidWlsdCBwbHVnaW4gaW50byBhIHRlbXBvcmFyeSB2YXVsdCwgZW5hYmxlcyBpdCB2aWEgYSByZW5kZXJlciBldmFsXG4gKiBvdmVyIHRoZSB0cmFuc3BvcnQsIGFuZCBwcm92aWRlcyBgdGVtcFZhdWx0UGF0aGAgdG8gdGVzdHMuXG4gKlxuICogQHBhcmFtIHByb2plY3QgLSBUaGUgVml0ZXN0IHByb2plY3QuXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHNldHVwIGNvbXBsZXRlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IHNldHVwID0gZGVmYXVsdEdsb2JhbFNldHVwLnNldHVwO1xuXG4vKipcbiAqIFZpdGVzdCBnbG9iYWwgdGVhcmRvd24gZnVuY3Rpb24uXG4gKlxuICogUmVtb3ZlcyB0aGUgdGVtcG9yYXJ5IHZhdWx0IGNyZWF0ZWQgZHVyaW5nIHNldHVwLlxuICpcbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGVhcmRvd24gY29tcGxldGVzLlxuICovXG5leHBvcnQgY29uc3QgdGVhcmRvd24gPSBkZWZhdWx0R2xvYmFsU2V0dXAudGVhcmRvd247XG4iXSwKICAibWFwcGluZ3MiOiAiQUFhQSxTQUFTLGNBQWM7QUFNdkI7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUCxTQUFTLHFCQUFxQjtBQUM5QjtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQLFNBQVMsV0FBVztBQUNwQixTQUFTLGlCQUFpQjtBQUUxQiw0QkFBNEIsTUFBTSxPQUFPLG1CQUFtQixDQUFDO0FBQzdELHFCQUFxQixNQUFNLE9BQU8sZUFBZSxDQUFDO0FBa0QzQyxTQUFTLFlBQVksU0FBaUQ7QUFDM0UsTUFBSTtBQUVKLFNBQU8sRUFBRSxPQUFBQSxRQUFPLFVBQUFDLFVBQVM7QUFFekIsaUJBQWVELE9BQU0sU0FBcUM7QUFDeEQsVUFBTSxxQkFBcUIsUUFBUSxPQUFPO0FBQzFDLFVBQU0sbUJBQW1CLHFCQUFxQixtQkFBbUI7QUFDakUsVUFBTSxRQUFRLGtCQUFrQixRQUFRO0FBRXhDLFFBQUk7QUFDRixvQkFBYyxNQUFNLFVBQVU7QUFBQSxRQUM1Qix3QkFBd0IsU0FBUztBQUFBLFFBQ2pDLGVBQWUsU0FBUztBQUFBLFFBQ3hCLFVBQVUsU0FBUyxXQUFXO0FBQUEsUUFDOUI7QUFBQSxNQUNGLENBQUM7QUFBQSxJQUNILFNBQVMsT0FBZ0I7QUFJdkIsVUFBSSxzQkFBc0IsS0FBSyw0REFBNEQsY0FBYyxLQUFLLENBQUMsRUFBRTtBQUNqSCxjQUFRLFFBQVEsY0FBYyxjQUFjLEtBQUssQ0FBQztBQUNsRDtBQUFBLElBQ0Y7QUFFQSxZQUFRLFFBQVEscUJBQXFCLFlBQVksZ0JBQWdCO0FBQ2pFLFlBQVEsUUFBUSxpQkFBaUIsWUFBWSxVQUFVLElBQUk7QUFBQSxFQUM3RDtBQUVBLGlCQUFlQyxZQUEwQjtBQUN2QyxVQUFNLGFBQWEsV0FBVztBQUFBLEVBQ2hDO0FBQ0Y7QUFPTyxTQUFTLGVBQTBCO0FBQ3hDLFFBQU0sZ0JBQWdCLE9BQU8sZUFBZTtBQUM1QyxRQUFNLG9CQUFvQixPQUFPLFlBQVk7QUFDN0MsTUFBSSxtQkFBbUI7QUFDckIsVUFBTSxJQUFJLE1BQU0sMERBQXFELGlCQUFpQixFQUFFO0FBQUEsRUFDMUY7QUFDQSxTQUFPLElBQUksVUFBVSxhQUFhO0FBQ3BDO0FBRUEsTUFBTSxxQkFBcUIsWUFBWTtBQVdoQyxNQUFNLFFBQVEsbUJBQW1CO0FBU2pDLE1BQU0sV0FBVyxtQkFBbUI7IiwKICAibmFtZXMiOiBbInNldHVwIiwgInRlYXJkb3duIl0KfQo=
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "obsidian-integration-testing",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "9.1.0",
|
|
4
4
|
"description": "Simplifies integration testing of Obsidian plugins.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"obsidian",
|
|
@@ -30,7 +30,17 @@
|
|
|
30
30
|
"default": "./dist/lib/cjs/index.cjs"
|
|
31
31
|
}
|
|
32
32
|
},
|
|
33
|
-
"./jest-global-setup": {
|
|
33
|
+
"./jest-global-setup-no-plugin": {
|
|
34
|
+
"import": {
|
|
35
|
+
"types": "./dist/lib/esm/jest/global-setup-no-plugin.d.mts",
|
|
36
|
+
"default": "./dist/lib/esm/jest/global-setup-no-plugin.mjs"
|
|
37
|
+
},
|
|
38
|
+
"require": {
|
|
39
|
+
"types": "./dist/lib/cjs/jest/global-setup-no-plugin.d.cts",
|
|
40
|
+
"default": "./dist/lib/cjs/jest/global-setup-no-plugin.cjs"
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
"./jest-global-setup-plugin": {
|
|
34
44
|
"import": {
|
|
35
45
|
"types": "./dist/lib/esm/jest/global-setup.d.mts",
|
|
36
46
|
"default": "./dist/lib/esm/jest/global-setup.mjs"
|
|
@@ -40,7 +50,17 @@
|
|
|
40
50
|
"default": "./dist/lib/cjs/jest/global-setup.cjs"
|
|
41
51
|
}
|
|
42
52
|
},
|
|
43
|
-
"./jest-global-teardown": {
|
|
53
|
+
"./jest-global-teardown-no-plugin": {
|
|
54
|
+
"import": {
|
|
55
|
+
"types": "./dist/lib/esm/jest/global-teardown-no-plugin.d.mts",
|
|
56
|
+
"default": "./dist/lib/esm/jest/global-teardown-no-plugin.mjs"
|
|
57
|
+
},
|
|
58
|
+
"require": {
|
|
59
|
+
"types": "./dist/lib/cjs/jest/global-teardown-no-plugin.d.cts",
|
|
60
|
+
"default": "./dist/lib/cjs/jest/global-teardown-no-plugin.cjs"
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
"./jest-global-teardown-plugin": {
|
|
44
64
|
"import": {
|
|
45
65
|
"types": "./dist/lib/esm/jest/global-teardown.d.mts",
|
|
46
66
|
"default": "./dist/lib/esm/jest/global-teardown.mjs"
|
|
@@ -60,7 +80,17 @@
|
|
|
60
80
|
"default": "./dist/lib/cjs/jest/setup.cjs"
|
|
61
81
|
}
|
|
62
82
|
},
|
|
63
|
-
"./vitest-global-setup": {
|
|
83
|
+
"./vitest-global-setup-no-plugin": {
|
|
84
|
+
"import": {
|
|
85
|
+
"types": "./dist/lib/esm/vitest/global-setup-no-plugin.d.mts",
|
|
86
|
+
"default": "./dist/lib/esm/vitest/global-setup-no-plugin.mjs"
|
|
87
|
+
},
|
|
88
|
+
"require": {
|
|
89
|
+
"types": "./dist/lib/cjs/vitest/global-setup-no-plugin.d.cts",
|
|
90
|
+
"default": "./dist/lib/cjs/vitest/global-setup-no-plugin.cjs"
|
|
91
|
+
}
|
|
92
|
+
},
|
|
93
|
+
"./vitest-global-setup-plugin": {
|
|
64
94
|
"import": {
|
|
65
95
|
"types": "./dist/lib/esm/vitest/global-setup.d.mts",
|
|
66
96
|
"default": "./dist/lib/esm/vitest/global-setup.mjs"
|
|
@@ -162,8 +192,8 @@
|
|
|
162
192
|
"@types/markdown-it": "^14.1.2",
|
|
163
193
|
"@types/semver": "^7.7.1",
|
|
164
194
|
"@types/turndown": "^5.0.6",
|
|
165
|
-
"@typescript-eslint/rule-tester": "^8.
|
|
166
|
-
"@typescript-eslint/utils": "^8.
|
|
195
|
+
"@typescript-eslint/rule-tester": "^8.65.0",
|
|
196
|
+
"@typescript-eslint/utils": "^8.65.0",
|
|
167
197
|
"@vitest/coverage-v8": "^4.1.10",
|
|
168
198
|
"@vitest/runner": "4.1.0",
|
|
169
199
|
"@wdio/protocols": "9.27.0",
|
|
@@ -176,7 +206,7 @@
|
|
|
176
206
|
"eslint": "^10.7.0",
|
|
177
207
|
"eslint-import-resolver-typescript": "^4.4.5",
|
|
178
208
|
"eslint-plugin-import-x": "^4.17.1",
|
|
179
|
-
"eslint-plugin-jsdoc": "^63.0
|
|
209
|
+
"eslint-plugin-jsdoc": "^63.2.0",
|
|
180
210
|
"eslint-plugin-perfectionist": "^5.10.0",
|
|
181
211
|
"eslint-plugin-tsdoc": "^0.5.2",
|
|
182
212
|
"globals": "^17.7.0",
|
|
@@ -195,7 +225,7 @@
|
|
|
195
225
|
"ts-jest": "^29.4.11",
|
|
196
226
|
"type-fest": "^5.8.0",
|
|
197
227
|
"typescript": "6.0.3",
|
|
198
|
-
"typescript-eslint": "^8.
|
|
228
|
+
"typescript-eslint": "^8.65.0",
|
|
199
229
|
"vite": "^8.1.5",
|
|
200
230
|
"vitest": "^4.1.10"
|
|
201
231
|
},
|
|
Binary file
|