obsidian-integration-testing 1.1.2 → 1.2.1

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 (84) hide show
  1. package/README.md +241 -14
  2. package/dist/lib/cjs/context-id.cjs +1 -1
  3. package/dist/lib/cjs/context-id.d.cts +1 -1
  4. package/dist/lib/cjs/enable-plugin.cjs +54 -0
  5. package/dist/lib/cjs/enable-plugin.d.cts +44 -0
  6. package/dist/lib/cjs/exec.cjs +4 -4
  7. package/dist/lib/cjs/exec.d.cts +8 -8
  8. package/dist/lib/cjs/function-expression.cjs +1 -1
  9. package/dist/lib/cjs/function-expression.d.cts +1 -1
  10. package/dist/lib/cjs/index.cjs +13 -1
  11. package/dist/lib/cjs/index.d.cts +9 -1
  12. package/dist/lib/cjs/integration-global-setup.cjs +29 -7
  13. package/dist/lib/cjs/integration-global-setup.d.cts +1 -6
  14. package/dist/lib/cjs/json-with-functions.cjs +1 -1
  15. package/dist/lib/cjs/json-with-functions.d.cts +1 -1
  16. package/dist/lib/cjs/noop.cjs +1 -1
  17. package/dist/lib/cjs/noop.d.cts +1 -1
  18. package/dist/lib/cjs/obsidian-cli.cjs +10 -76
  19. package/dist/lib/cjs/obsidian-cli.d.cts +9 -3
  20. package/dist/lib/cjs/obsidian-config.cjs +1 -1
  21. package/dist/lib/cjs/obsidian-config.d.cts +1 -1
  22. package/dist/lib/cjs/temp-vault.cjs +47 -5
  23. package/dist/lib/cjs/temp-vault.d.cts +19 -1
  24. package/dist/lib/cjs/transport-appium.cjs +242 -0
  25. package/dist/lib/cjs/transport-appium.d.cts +164 -0
  26. package/dist/lib/cjs/transport-desktop-cdp.cjs +398 -0
  27. package/dist/lib/cjs/transport-desktop-cdp.d.cts +158 -0
  28. package/dist/lib/cjs/transport-desktop-cli.cjs +230 -0
  29. package/dist/lib/cjs/transport-desktop-cli.d.cts +65 -0
  30. package/dist/lib/cjs/transport-factory.cjs +143 -0
  31. package/dist/lib/cjs/transport-factory.d.cts +25 -0
  32. package/dist/lib/cjs/transport-options.cjs +17 -0
  33. package/dist/lib/cjs/transport-options.d.cts +100 -0
  34. package/dist/lib/cjs/transport.cjs +17 -0
  35. package/dist/lib/cjs/transport.d.cts +86 -0
  36. package/dist/lib/cjs/type-guards.cjs +1 -1
  37. package/dist/lib/cjs/type-guards.d.cts +1 -1
  38. package/dist/lib/cjs/vault-registry.cjs +7 -56
  39. package/dist/lib/cjs/vault-registry.d.cts +3 -5
  40. package/dist/lib/esm/context-id.d.mts +1 -1
  41. package/dist/lib/esm/context-id.mjs +1 -1
  42. package/dist/lib/esm/enable-plugin.d.mts +44 -0
  43. package/dist/lib/esm/enable-plugin.mjs +30 -0
  44. package/dist/lib/esm/exec.d.mts +8 -8
  45. package/dist/lib/esm/exec.mjs +4 -4
  46. package/dist/lib/esm/function-expression.d.mts +1 -1
  47. package/dist/lib/esm/function-expression.mjs +1 -1
  48. package/dist/lib/esm/index.d.mts +9 -1
  49. package/dist/lib/esm/index.mjs +9 -1
  50. package/dist/lib/esm/integration-global-setup.d.mts +1 -6
  51. package/dist/lib/esm/integration-global-setup.mjs +29 -7
  52. package/dist/lib/esm/json-with-functions.d.mts +1 -1
  53. package/dist/lib/esm/json-with-functions.mjs +1 -1
  54. package/dist/lib/esm/noop.d.mts +1 -1
  55. package/dist/lib/esm/noop.mjs +1 -1
  56. package/dist/lib/esm/obsidian-cli.d.mts +9 -3
  57. package/dist/lib/esm/obsidian-cli.mjs +10 -80
  58. package/dist/lib/esm/obsidian-config.d.mts +1 -1
  59. package/dist/lib/esm/obsidian-config.mjs +1 -1
  60. package/dist/lib/esm/temp-vault.d.mts +19 -1
  61. package/dist/lib/esm/temp-vault.mjs +54 -7
  62. package/dist/lib/esm/transport-appium.d.mts +164 -0
  63. package/dist/lib/esm/transport-appium.mjs +218 -0
  64. package/dist/lib/esm/transport-desktop-cdp.d.mts +158 -0
  65. package/dist/lib/esm/transport-desktop-cdp.mjs +364 -0
  66. package/dist/lib/esm/transport-desktop-cli.d.mts +65 -0
  67. package/dist/lib/esm/transport-desktop-cli.mjs +199 -0
  68. package/dist/lib/esm/transport-factory.d.mts +25 -0
  69. package/dist/lib/esm/transport-factory.mjs +108 -0
  70. package/dist/lib/esm/transport-options.d.mts +100 -0
  71. package/dist/lib/esm/transport-options.mjs +1 -0
  72. package/dist/lib/esm/transport.d.mts +86 -0
  73. package/dist/lib/esm/transport.mjs +1 -0
  74. package/dist/lib/esm/type-guards.d.mts +1 -1
  75. package/dist/lib/esm/type-guards.mjs +1 -1
  76. package/dist/lib/esm/vault-registry.d.mts +3 -5
  77. package/dist/lib/esm/vault-registry.mjs +7 -56
  78. package/dist/obsidian-integration-testing-1.2.1.tgz +0 -0
  79. package/package.json +12 -2
  80. package/patches/@wdio+protocols+9.27.0.patch +12 -0
  81. package/patches/@wdio+types+9.27.0.patch +13 -0
  82. package/patches/urlpattern-polyfill+10.1.0.patch +13 -0
  83. package/scripts/postinstall.mjs +29 -0
  84. package/dist/obsidian-integration-testing-1.1.2.tgz +0 -0
@@ -1,64 +1,15 @@
1
- import { evalInObsidian } from "./obsidian-cli.mjs";
2
- const POLL_INTERVAL_MS = 500;
3
- const POLL_TIMEOUT_MS = 3e4;
4
- const CLOSE_DELAY_MS = 1e3;
1
+ import { inject } from "vitest";
2
+ import { getOrCreateTransport } from "./transport-factory.mjs";
5
3
  async function registerVault(vaultPath) {
6
- await evalInObsidian({
7
- args: { vaultPath },
8
- // eslint-disable-next-line no-shadow -- No actual shadowing as the function is executed externally.
9
- fn({ vaultPath: vaultPath2 }) {
10
- window.electron.ipcRenderer.sendSync("vault-open", vaultPath2, false);
11
- },
12
- shouldSkipPreflightChecks: true
13
- });
14
- const deadline = Date.now() + POLL_TIMEOUT_MS;
15
- while (Date.now() < deadline) {
16
- try {
17
- const basePath = await evalInObsidian({
18
- fn({ app }) {
19
- return app.vault.adapter.getBasePath();
20
- },
21
- shouldSkipPreflightChecks: true,
22
- vaultPath
23
- });
24
- if (basePath === vaultPath) {
25
- return;
26
- }
27
- } catch {
28
- }
29
- await new Promise((r) => {
30
- setTimeout(r, POLL_INTERVAL_MS);
31
- });
32
- }
33
- throw new Error(`Vault at ${vaultPath} did not become ready within ${String(POLL_TIMEOUT_MS)}ms`);
4
+ const transport = await getOrCreateTransport(inject("obsidianTransport"));
5
+ await transport.registerVault(vaultPath);
34
6
  }
35
7
  async function unregisterVault(vaultPath) {
36
- try {
37
- await evalInObsidian({
38
- fn() {
39
- setTimeout(() => {
40
- window.electron.remote?.getCurrentWindow().destroy();
41
- }, 0);
42
- },
43
- shouldSkipPreflightChecks: true,
44
- vaultPath
45
- });
46
- } catch {
47
- }
48
- await new Promise((r) => {
49
- setTimeout(r, CLOSE_DELAY_MS);
50
- });
51
- await evalInObsidian({
52
- args: { vaultPath },
53
- // eslint-disable-next-line no-shadow -- No actual shadowing as the function is executed externally.
54
- fn({ vaultPath: vaultPath2 }) {
55
- window.electron.ipcRenderer.sendSync("vault-remove", vaultPath2);
56
- },
57
- shouldSkipPreflightChecks: true
58
- });
8
+ const transport = await getOrCreateTransport(inject("obsidianTransport"));
9
+ await transport.unregisterVault(vaultPath);
59
10
  }
60
11
  export {
61
12
  registerVault,
62
13
  unregisterVault
63
14
  };
64
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3ZhdWx0LXJlZ2lzdHJ5LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKiB2OCBpZ25vcmUgc3RhcnQgLS0gSW50ZWdyYXRpb24tdGltZSBjb2RlIGNvdmVyZWQgYnkgaW50ZWdyYXRpb24gdGVzdHMsIG5vdCB1bml0IHRlc3RzLiAqL1xuXG4vKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIE1hbmFnZXMgdmF1bHQgcmVnaXN0cmF0aW9uIGluIHRoZSBydW5uaW5nIE9ic2lkaWFuIGluc3RhbmNlLlxuICovXG5cbmltcG9ydCB0eXBlIHsgRmlsZVN5c3RlbUFkYXB0ZXIgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7IGV2YWxJbk9ic2lkaWFuIH0gZnJvbSAnLi9vYnNpZGlhbi1jbGkubWpzJztcblxuY29uc3QgUE9MTF9JTlRFUlZBTF9NUyA9IDUwMDtcbmNvbnN0IFBPTExfVElNRU9VVF9NUyA9IDMwMDAwO1xuY29uc3QgQ0xPU0VfREVMQVlfTVMgPSAxMDAwO1xuXG5pbnRlcmZhY2UgRWxlY3Ryb24ge1xuICByZW1vdGU6IEVsZWN0cm9uUmVtb3RlO1xufVxuXG5pbnRlcmZhY2UgRWxlY3Ryb25SZW1vdGUge1xuICBnZXRDdXJyZW50V2luZG93KCk6IEdldEN1cnJlbnRXaW5kb3dSZXN1bHQ7XG59XG5cbmludGVyZmFjZSBHZXRDdXJyZW50V2luZG93UmVzdWx0IHtcbiAgZGVzdHJveSgpOiB2b2lkO1xufVxuXG4vKipcbiAqIFJlZ2lzdGVycyBhIHZhdWx0IHBhdGggaW4gdGhlIHJ1bm5pbmcgT2JzaWRpYW4gaW5zdGFuY2Ugc28gdGhlIENMSSBjYW4gdGFyZ2V0IGl0IHZpYSBgY3dkYC5cbiAqXG4gKiBVc2VzIHRoZSBgdmF1bHQtb3BlbmAgSVBDIHRvIHJlZ2lzdGVyIGFuZCBvcGVuIHRoZSB2YXVsdCwgdGhlbiBwb2xscyB1bnRpbFxuICogdGhlIHZhdWx0J3MgQ0xJIGlzIHJlYWR5IGFuZCBgZ2V0QmFzZVBhdGgoKWAgbWF0Y2hlcyBgdmF1bHRQYXRoYC5cbiAqXG4gKiBAcGFyYW0gdmF1bHRQYXRoIC0gVGhlIGFic29sdXRlIHBhdGggdG8gdGhlIHZhdWx0IGZvbGRlci5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlZ2lzdGVyVmF1bHQodmF1bHRQYXRoOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgLy8gT3BlbiB0aGUgdmF1bHQgdmlhIElQQy4gVGhlIHNlbmRTeW5jIHJldHVybiB2YWx1ZSBpcyB1bnJlbGlhYmxlXG4gIC8vIChDTEkgb3V0cHV0IG1heSBiZSBsb3N0IHdoZW4gdGhlIG5ldyB3aW5kb3cgb3BlbnMpLCBzbyB3ZSBpZ25vcmUgaXRcbiAgLy8gQW5kIHBvbGwgZm9yIHJlYWRpbmVzcyBpbnN0ZWFkLlxuICBhd2FpdCBldmFsSW5PYnNpZGlhbih7XG4gICAgYXJnczogeyB2YXVsdFBhdGggfSxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2hhZG93IC0tIE5vIGFjdHVhbCBzaGFkb3dpbmcgYXMgdGhlIGZ1bmN0aW9uIGlzIGV4ZWN1dGVkIGV4dGVybmFsbHkuXG4gICAgZm4oeyB2YXVsdFBhdGggfSk6IHZvaWQge1xuICAgICAgd2luZG93LmVsZWN0cm9uLmlwY1JlbmRlcmVyLnNlbmRTeW5jKCd2YXVsdC1vcGVuJywgdmF1bHRQYXRoLCBmYWxzZSk7XG4gICAgfSxcbiAgICBzaG91bGRTa2lwUHJlZmxpZ2h0Q2hlY2tzOiB0cnVlXG4gIH0pO1xuXG4gIC8vIFBvbGwgdW50aWwgdGhlIG5ldyB2YXVsdCdzIENMSSByZXNwb25kcyB3aXRoIHRoZSBjb3JyZWN0IGJhc2VQYXRoLlxuICBjb25zdCBkZWFkbGluZSA9IERhdGUubm93KCkgKyBQT0xMX1RJTUVPVVRfTVM7XG4gIHdoaWxlIChEYXRlLm5vdygpIDwgZGVhZGxpbmUpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgYmFzZVBhdGggPSBhd2FpdCBldmFsSW5PYnNpZGlhbih7XG4gICAgICAgIGZuKHsgYXBwIH0pOiBzdHJpbmcge1xuICAgICAgICAgIHJldHVybiAoYXBwLnZhdWx0LmFkYXB0ZXIgYXMgRmlsZVN5c3RlbUFkYXB0ZXIpLmdldEJhc2VQYXRoKCk7XG4gICAgICAgIH0sXG4gICAgICAgIHNob3VsZFNraXBQcmVmbGlnaHRDaGVja3M6IHRydWUsXG4gICAgICAgIHZhdWx0UGF0aFxuICAgICAgfSk7XG4gICAgICBpZiAoYmFzZVBhdGggPT09IHZhdWx0UGF0aCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyBWYXVsdCBub3QgcmVhZHkgeWV0LlxuICAgIH1cbiAgICBhd2FpdCBuZXcgUHJvbWlzZSgocikgPT4ge1xuICAgICAgc2V0VGltZW91dChyLCBQT0xMX0lOVEVSVkFMX01TKTtcbiAgICB9KTtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoYFZhdWx0IGF0ICR7dmF1bHRQYXRofSBkaWQgbm90IGJlY29tZSByZWFkeSB3aXRoaW4gJHtTdHJpbmcoUE9MTF9USU1FT1VUX01TKX1tc2ApO1xufVxuXG4vKipcbiAqIFVucmVnaXN0ZXJzIGEgdmF1bHQgcGF0aCBmcm9tIHRoZSBydW5uaW5nIE9ic2lkaWFuIGluc3RhbmNlLlxuICpcbiAqIFNjaGVkdWxlcyB0aGUgdmF1bHQgd2luZG93IHRvIGNsb3NlLCB3YWl0cyBmb3IgaXQsIHRoZW4gcmVtb3Zlc1xuICogdGhlIHZhdWx0IGZyb20gdGhlIHJlZ2lzdHJ5IHZpYSBgdmF1bHQtcmVtb3ZlYCBJUEMuXG4gKlxuICogQHBhcmFtIHZhdWx0UGF0aCAtIFRoZSBhYnNvbHV0ZSBwYXRoIHRvIHRoZSB2YXVsdCBmb2xkZXIuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB1bnJlZ2lzdGVyVmF1bHQodmF1bHRQYXRoOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgLy8gU2NoZWR1bGUgdGhlIHZhdWx0IHdpbmRvdyB0byBjbG9zZSBmcm9tIHdpdGhpbiBpdHMgb3duIGNvbnRleHQuXG4gIC8vIFVzZSBzZXRUaW1lb3V0IHNvIHRoZSBDTEkgcmVzcG9uc2UgaXMgc2VudCBiZWZvcmUgdGhlIHdpbmRvdyBjbG9zZXMuXG4gIHRyeSB7XG4gICAgYXdhaXQgZXZhbEluT2JzaWRpYW4oe1xuICAgICAgZm4oKTogdm9pZCB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICh3aW5kb3cuZWxlY3Ryb24gYXMgUGFydGlhbDxFbGVjdHJvbj4pLnJlbW90ZT8uZ2V0Q3VycmVudFdpbmRvdygpLmRlc3Ryb3koKTtcbiAgICAgICAgfSwgMCk7XG4gICAgICB9LFxuICAgICAgc2hvdWxkU2tpcFByZWZsaWdodENoZWNrczogdHJ1ZSxcbiAgICAgIHZhdWx0UGF0aFxuICAgIH0pO1xuICB9IGNhdGNoIHtcbiAgICAvLyBUaGUgd2luZG93IG1heSBoYXZlIGNsb3NlZCBiZWZvcmUgdGhlIHJlc3BvbnNlIHdhcyBzZW50IFx1MjAxNCB0aGF0J3MgT0suXG4gIH1cblxuICAvLyBXYWl0IGZvciB0aGUgd2luZG93IHRvIGFjdHVhbGx5IGNsb3NlLlxuICBhd2FpdCBuZXcgUHJvbWlzZSgocikgPT4ge1xuICAgIHNldFRpbWVvdXQociwgQ0xPU0VfREVMQVlfTVMpO1xuICB9KTtcblxuICAvLyBSZW1vdmUgZnJvbSB0aGUgcmVnaXN0cnkgKGZyb20gYW55IHJlbWFpbmluZyB2YXVsdCdzIGNvbnRleHQpLlxuICBhd2FpdCBldmFsSW5PYnNpZGlhbih7XG4gICAgYXJnczogeyB2YXVsdFBhdGggfSxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2hhZG93IC0tIE5vIGFjdHVhbCBzaGFkb3dpbmcgYXMgdGhlIGZ1bmN0aW9uIGlzIGV4ZWN1dGVkIGV4dGVybmFsbHkuXG4gICAgZm4oeyB2YXVsdFBhdGggfSk6IHZvaWQge1xuICAgICAgd2luZG93LmVsZWN0cm9uLmlwY1JlbmRlcmVyLnNlbmRTeW5jKCd2YXVsdC1yZW1vdmUnLCB2YXVsdFBhdGgpO1xuICAgIH0sXG4gICAgc2hvdWxkU2tpcFByZWZsaWdodENoZWNrczogdHJ1ZVxuICB9KTtcbn1cblxuLyogdjggaWdub3JlIHN0b3AgKi9cbiJdLAogICJtYXBwaW5ncyI6ICJBQVVBLFNBQVMsc0JBQXNCO0FBRS9CLE1BQU0sbUJBQW1CO0FBQ3pCLE1BQU0sa0JBQWtCO0FBQ3hCLE1BQU0saUJBQWlCO0FBc0J2QixlQUFzQixjQUFjLFdBQWtDO0FBSXBFLFFBQU0sZUFBZTtBQUFBLElBQ25CLE1BQU0sRUFBRSxVQUFVO0FBQUE7QUFBQSxJQUVsQixHQUFHLEVBQUUsV0FBQUEsV0FBVSxHQUFTO0FBQ3RCLGFBQU8sU0FBUyxZQUFZLFNBQVMsY0FBY0EsWUFBVyxLQUFLO0FBQUEsSUFDckU7QUFBQSxJQUNBLDJCQUEyQjtBQUFBLEVBQzdCLENBQUM7QUFHRCxRQUFNLFdBQVcsS0FBSyxJQUFJLElBQUk7QUFDOUIsU0FBTyxLQUFLLElBQUksSUFBSSxVQUFVO0FBQzVCLFFBQUk7QUFDRixZQUFNLFdBQVcsTUFBTSxlQUFlO0FBQUEsUUFDcEMsR0FBRyxFQUFFLElBQUksR0FBVztBQUNsQixpQkFBUSxJQUFJLE1BQU0sUUFBOEIsWUFBWTtBQUFBLFFBQzlEO0FBQUEsUUFDQSwyQkFBMkI7QUFBQSxRQUMzQjtBQUFBLE1BQ0YsQ0FBQztBQUNELFVBQUksYUFBYSxXQUFXO0FBQzFCO0FBQUEsTUFDRjtBQUFBLElBQ0YsUUFBUTtBQUFBLElBRVI7QUFDQSxVQUFNLElBQUksUUFBUSxDQUFDLE1BQU07QUFDdkIsaUJBQVcsR0FBRyxnQkFBZ0I7QUFBQSxJQUNoQyxDQUFDO0FBQUEsRUFDSDtBQUNBLFFBQU0sSUFBSSxNQUFNLFlBQVksU0FBUyxnQ0FBZ0MsT0FBTyxlQUFlLENBQUMsSUFBSTtBQUNsRztBQVVBLGVBQXNCLGdCQUFnQixXQUFrQztBQUd0RSxNQUFJO0FBQ0YsVUFBTSxlQUFlO0FBQUEsTUFDbkIsS0FBVztBQUNULG1CQUFXLE1BQU07QUFDZixVQUFDLE9BQU8sU0FBK0IsUUFBUSxpQkFBaUIsRUFBRSxRQUFRO0FBQUEsUUFDNUUsR0FBRyxDQUFDO0FBQUEsTUFDTjtBQUFBLE1BQ0EsMkJBQTJCO0FBQUEsTUFDM0I7QUFBQSxJQUNGLENBQUM7QUFBQSxFQUNILFFBQVE7QUFBQSxFQUVSO0FBR0EsUUFBTSxJQUFJLFFBQVEsQ0FBQyxNQUFNO0FBQ3ZCLGVBQVcsR0FBRyxjQUFjO0FBQUEsRUFDOUIsQ0FBQztBQUdELFFBQU0sZUFBZTtBQUFBLElBQ25CLE1BQU0sRUFBRSxVQUFVO0FBQUE7QUFBQSxJQUVsQixHQUFHLEVBQUUsV0FBQUEsV0FBVSxHQUFTO0FBQ3RCLGFBQU8sU0FBUyxZQUFZLFNBQVMsZ0JBQWdCQSxVQUFTO0FBQUEsSUFDaEU7QUFBQSxJQUNBLDJCQUEyQjtBQUFBLEVBQzdCLENBQUM7QUFDSDsiLAogICJuYW1lcyI6IFsidmF1bHRQYXRoIl0KfQo=
15
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3ZhdWx0LXJlZ2lzdHJ5LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKiB2OCBpZ25vcmUgc3RhcnQgLS0gSW50ZWdyYXRpb24tdGltZSBjb2RlIGNvdmVyZWQgYnkgaW50ZWdyYXRpb24gdGVzdHMsIG5vdCB1bml0IHRlc3RzLiAqL1xuXG4vKipcbiAqIEBmaWxlXG4gKlxuICogTWFuYWdlcyB2YXVsdCByZWdpc3RyYXRpb24gaW4gdGhlIHJ1bm5pbmcgT2JzaWRpYW4gaW5zdGFuY2UuXG4gKiBEZWxlZ2F0ZXMgdG8gdGhlIHRyYW5zcG9ydCByZXNvbHZlZCBmcm9tIHZpdGVzdC1wcm92aWRlZCBvcHRpb25zLlxuICovXG5cbmltcG9ydCB7IGluamVjdCB9IGZyb20gJ3ZpdGVzdCc7XG5cbmltcG9ydCB7IGdldE9yQ3JlYXRlVHJhbnNwb3J0IH0gZnJvbSAnLi90cmFuc3BvcnQtZmFjdG9yeS5tanMnO1xuXG4vKipcbiAqIFJlZ2lzdGVycyBhIHZhdWx0IHBhdGggaW4gdGhlIHJ1bm5pbmcgT2JzaWRpYW4gaW5zdGFuY2UuXG4gKlxuICogRGVsZWdhdGVzIHRvIHRoZSBhY3RpdmUgdHJhbnNwb3J0J3Mge0BsaW5rIE9ic2lkaWFuVHJhbnNwb3J0LnJlZ2lzdGVyVmF1bHR9LlxuICpcbiAqIEBwYXJhbSB2YXVsdFBhdGggLSBUaGUgYWJzb2x1dGUgcGF0aCB0byB0aGUgdmF1bHQgZm9sZGVyLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVnaXN0ZXJWYXVsdCh2YXVsdFBhdGg6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB0cmFuc3BvcnQgPSBhd2FpdCBnZXRPckNyZWF0ZVRyYW5zcG9ydChpbmplY3QoJ29ic2lkaWFuVHJhbnNwb3J0JykpO1xuICBhd2FpdCB0cmFuc3BvcnQucmVnaXN0ZXJWYXVsdCh2YXVsdFBhdGgpO1xufVxuXG4vKipcbiAqIFVucmVnaXN0ZXJzIGEgdmF1bHQgcGF0aCBmcm9tIHRoZSBydW5uaW5nIE9ic2lkaWFuIGluc3RhbmNlLlxuICpcbiAqIERlbGVnYXRlcyB0byB0aGUgYWN0aXZlIHRyYW5zcG9ydCdzIHtAbGluayBPYnNpZGlhblRyYW5zcG9ydC51bnJlZ2lzdGVyVmF1bHR9LlxuICpcbiAqIEBwYXJhbSB2YXVsdFBhdGggLSBUaGUgYWJzb2x1dGUgcGF0aCB0byB0aGUgdmF1bHQgZm9sZGVyLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdW5yZWdpc3RlclZhdWx0KHZhdWx0UGF0aDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHRyYW5zcG9ydCA9IGF3YWl0IGdldE9yQ3JlYXRlVHJhbnNwb3J0KGluamVjdCgnb2JzaWRpYW5UcmFuc3BvcnQnKSk7XG4gIGF3YWl0IHRyYW5zcG9ydC51bnJlZ2lzdGVyVmF1bHQodmF1bHRQYXRoKTtcbn1cblxuLyogdjggaWdub3JlIHN0b3AgKi9cbiJdLAogICJtYXBwaW5ncyI6ICJBQVNBLFNBQVMsY0FBYztBQUV2QixTQUFTLDRCQUE0QjtBQVNyQyxlQUFzQixjQUFjLFdBQWtDO0FBQ3BFLFFBQU0sWUFBWSxNQUFNLHFCQUFxQixPQUFPLG1CQUFtQixDQUFDO0FBQ3hFLFFBQU0sVUFBVSxjQUFjLFNBQVM7QUFDekM7QUFTQSxlQUFzQixnQkFBZ0IsV0FBa0M7QUFDdEUsUUFBTSxZQUFZLE1BQU0scUJBQXFCLE9BQU8sbUJBQW1CLENBQUM7QUFDeEUsUUFBTSxVQUFVLGdCQUFnQixTQUFTO0FBQzNDOyIsCiAgIm5hbWVzIjogW10KfQo=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "obsidian-integration-testing",
3
- "version": "1.1.2",
3
+ "version": "1.2.1",
4
4
  "description": "Simplifies integration testing of Obsidian plugins.",
5
5
  "keywords": [
6
6
  "obsidian",
@@ -49,7 +49,9 @@
49
49
  "**/package.json",
50
50
  "dist/",
51
51
  "LICENSE",
52
- "README.md"
52
+ "patches/",
53
+ "README.md",
54
+ "scripts/postinstall.mjs"
53
55
  ],
54
56
  "scripts": {
55
57
  "build": "jiti scripts/build.ts",
@@ -65,6 +67,7 @@
65
67
  "lint:fix": "jiti scripts/lint-fix.ts",
66
68
  "lint:md": "jiti scripts/lint-md.ts",
67
69
  "lint:md:fix": "jiti scripts/lint-md-fix.ts",
70
+ "postinstall": "node scripts/postinstall.mjs",
68
71
  "prepare": "jiti scripts/prepare.ts",
69
72
  "spellcheck": "jiti scripts/spellcheck.ts",
70
73
  "test": "jiti scripts/test.ts",
@@ -91,6 +94,8 @@
91
94
  "@typescript-eslint/utils": "latest",
92
95
  "@vitest/coverage-v8": "latest",
93
96
  "@vitest/runner": "4.1.0",
97
+ "@wdio/protocols": "9.27.0",
98
+ "@wdio/types": "9.27.0",
94
99
  "better-typescript-lib": "latest",
95
100
  "commitizen": "latest",
96
101
  "cspell": "latest",
@@ -113,10 +118,12 @@
113
118
  "nano-staged": "latest",
114
119
  "obsidian": "latest",
115
120
  "obsidian-typings": "obsidian-public-latest",
121
+ "puppeteer-core": "latest",
116
122
  "semver": "latest",
117
123
  "type-fest": "latest",
118
124
  "typescript": "latest",
119
125
  "typescript-eslint": "latest",
126
+ "urlpattern-polyfill": "10.1.0",
120
127
  "vitest": "latest"
121
128
  },
122
129
  "peerDependencies": {
@@ -128,5 +135,8 @@
128
135
  "@antfu/utils": "9.2.0",
129
136
  "eslint-plugin-import": "npm:eslint-plugin-import-x@latest",
130
137
  "type-fest": "latest"
138
+ },
139
+ "dependencies": {
140
+ "webdriverio": "^9.27.0"
131
141
  }
132
142
  }
@@ -0,0 +1,12 @@
1
+ diff --git a/node_modules/@wdio/protocols/tsconfig.json b/node_modules/@wdio/protocols/tsconfig.json
2
+ index 21e7b19..8dbebc0 100644
3
+ --- a/node_modules/@wdio/protocols/tsconfig.json
4
+ +++ b/node_modules/@wdio/protocols/tsconfig.json
5
+ @@ -1,7 +1,5 @@
6
+ {
7
+ - "extends": "../../tsconfig",
8
+ "compilerOptions": {
9
+ - "baseUrl": ".",
10
+ "outDir": "build",
11
+ "rootDir": "src",
12
+ "removeComments": false
@@ -0,0 +1,13 @@
1
+ diff --git a/node_modules/@wdio/types/build/Capabilities.d.ts b/node_modules/@wdio/types/build/Capabilities.d.ts
2
+ index 945fb98..e17332d 100644
3
+ --- a/node_modules/@wdio/types/build/Capabilities.d.ts
4
+ +++ b/node_modules/@wdio/types/build/Capabilities.d.ts
5
+ @@ -146,7 +146,7 @@ export interface WithRequestedCapabilities {
6
+ * })
7
+ * ```
8
+ */
9
+ - capabilities: RequestedStandaloneCapabilities;
10
+ + capabilities?: RequestedStandaloneCapabilities;
11
+ }
12
+ /**
13
+ * The `capabilities` property is a required property when defining a testrunner configuration.
@@ -0,0 +1,13 @@
1
+ diff --git a/node_modules/urlpattern-polyfill/dist/index.d.ts b/node_modules/urlpattern-polyfill/dist/index.d.ts
2
+ index 429e17c..534a0a1 100644
3
+ --- a/node_modules/urlpattern-polyfill/dist/index.d.ts
4
+ +++ b/node_modules/urlpattern-polyfill/dist/index.d.ts
5
+ @@ -2,8 +2,5 @@ import type * as Types from "./types.js";
6
+ export { URLPattern } from "./types.js";
7
+
8
+ declare global {
9
+ - class URLPattern extends Types.URLPattern {}
10
+ - type URLPatternInit = Types.URLPatternInit;
11
+ - type URLPatternResult = Types.URLPatternResult;
12
+ type URLPatternComponentResult = Types.URLPatternComponentResult;
13
+ }
@@ -0,0 +1,29 @@
1
+ import { spawnSync } from 'node:child_process';
2
+ import {
3
+ join,
4
+ relative
5
+ } from 'node:path/posix';
6
+ import {
7
+ cwd,
8
+ env
9
+ } from 'node:process';
10
+
11
+ const isGlobalInstall = env.npm_config_global === 'true';
12
+
13
+ if (isGlobalInstall) {
14
+ console.log('Global install detected, skipping patch-package...');
15
+ process.exit(0);
16
+ }
17
+
18
+ let pkgDir = cwd().replace(/\\/g, '/');
19
+ const patchDir = join(pkgDir, 'patches');
20
+ const relativePath = '/node_modules/obsidian-integration-testing';
21
+ if (pkgDir.endsWith(relativePath)) {
22
+ pkgDir = pkgDir.slice(0, -relativePath.length);
23
+ }
24
+
25
+ spawnSync(`npx patch-package --patch-dir "${relative(pkgDir, patchDir)}"`, {
26
+ shell: true,
27
+ stdio: 'inherit',
28
+ cwd: pkgDir
29
+ });