@interopio/iocd-cli 1.0.2 → 1.0.3

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/changelog.md CHANGED
@@ -5,6 +5,13 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [1.0.3](https://github.com/InteropIO/iocd-cli/compare/iocd-cli-v1.0.2...iocd-cli-v1.0.3) (2026-08-19)
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * **test:** prepare seed before running generated tests ([#97](https://github.com/InteropIO/iocd-cli/issues/97)) ([4baded9](https://github.com/InteropIO/iocd-cli/commit/4baded957c1e4afeb73d15cf98db9e2afd1f3464))
14
+
8
15
  ## [1.0.2](https://github.com/InteropIO/iocd-cli/compare/iocd-cli-v1.0.1...iocd-cli-v1.0.2) (2026-08-18)
9
16
 
10
17
 
@@ -4,6 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.startDevMode = startDevMode;
7
+ exports.prepareIocdForDev = prepareIocdForDev;
7
8
  const modifications_service_1 = require("./modifications/modifications.service");
8
9
  const child_process_1 = require("child_process");
9
10
  const logger_1 = require("../utils/logger");
@@ -15,6 +16,10 @@ const license_file_service_1 = require("./license-file.service");
15
16
  const logger = logger_1.Logger.getInstance("dev.service");
16
17
  async function startDevMode(extraArgs) {
17
18
  logger.info("Will start io.cd in dev mode....");
19
+ await prepareIocdForDev();
20
+ await launchIocdComponent(extraArgs);
21
+ }
22
+ async function prepareIocdForDev() {
18
23
  (0, ensure_iocd_exists_1.ensureIOCDComponentExists)();
19
24
  // some applications have base modifications
20
25
  await app_service_1.default.copyBaseModifications();
@@ -24,7 +29,6 @@ async function startDevMode(extraArgs) {
24
29
  await license_file_service_1.LicenseFileService.copyLicenseFile();
25
30
  // sign ioconnect desktop if MacOS
26
31
  await signIocdAppIfMacOs();
27
- await launchIocdComponent(extraArgs);
28
32
  }
29
33
  async function signIocdAppIfMacOs() {
30
34
  // Code signing is only needed on macOS
@@ -1 +1 @@
1
- {"version":3,"file":"dev.service.js","sourceRoot":"","sources":["../../src/services/dev.service.ts"],"names":[],"mappings":";;;;;AAWA,oCAkBC;AA7BD,iFAA2E;AAC3E,iDAAoD;AACpD,4CAAyC;AACzC,wCAA0C;AAC1C,2BAAgC;AAChC,oEAAwE;AACxE,gEAAuC;AACvC,iEAA4D;AAE5D,MAAM,MAAM,GAAG,eAAM,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;AAE1C,KAAK,UAAU,YAAY,CAAC,SAAmB;IACpD,MAAM,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;IAEhD,IAAA,8CAAyB,GAAE,CAAC;IAE5B,4CAA4C;IAC5C,MAAM,qBAAU,CAAC,qBAAqB,EAAE,CAAC;IAEzC,qCAAqC;IACrC,MAAM,IAAA,0CAAkB,EAAC,KAAK,CAAC,CAAC;IAEhC,qDAAqD;IACrD,MAAM,yCAAkB,CAAC,eAAe,EAAE,CAAC;IAE3C,kCAAkC;IAClC,MAAM,kBAAkB,EAAE,CAAC;IAE3B,MAAM,mBAAmB,CAAC,SAAS,CAAC,CAAC;AACvC,CAAC;AAED,KAAK,UAAU,kBAAkB;IAC/B,uCAAuC;IACvC,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAClC,MAAM,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;QACrD,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,MAAM,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAE7D,MAAM,aAAa,GAAG,gBAAS,CAAC,oBAAoB,EAAE,CAAC;QACvD,MAAM,CAAC,KAAK,CAAC,kBAAkB,EAAE,aAAa,CAAC,CAAC;QAEhD,MAAM,cAAc,CAAC,aAAa,CAAC,CAAC;QAEpC,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;IACzC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,wBAAwB,KAAK,EAAE,CAAC,CAAC;QAC9C,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,KAAK,UAAU,mBAAmB,CAAC,SAAmB;IACpD,MAAM,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;IAE/C,IAAI,CAAC;QACH,IAAI,cAAc,GAAG,gBAAS,CAAC,cAAc,EAAE,CAAC;QAChD,IAAI,CAAC,IAAA,eAAU,EAAC,cAAc,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,iCAAiC,cAAc,EAAE,CAAC,CAAC;QACrE,CAAC;QAED,IAAI,eAAe,GAAG,uBAAuB,cAAc,EAAE,CAAC;QAC9D,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC;YACtB,eAAe,IAAI,oBAAoB,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/D,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QAE9B,IAAA,yBAAS,EAAC,cAAc,EAAE,SAAS,EAAE;YACnC,KAAK,EAAE,SAAS;YAChB,GAAG,EAAE,gBAAS,CAAC,eAAe,CAAC,MAAM,CAAC;SACvC,CAAC,CAAC;QAEH,MAAM,CAAC,gBAAgB,EAAE,CAAC;IAC5B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,gDAAgD,EAAE,KAAK,CAAC,CAAC;QACtE,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,cAAc,CAAC,OAAe;IAC3C,IAAI,CAAC;QACH,MAAM,CAAC,KAAK,CAAC,WAAW,OAAO,KAAK,CAAC,CAAC;QAEtC,uEAAuE;QACvE,uCAAuC;QACvC,0CAA0C;QAC1C,gDAAgD;QAChD,MAAM,OAAO,GAAG,qCAAqC,OAAO,GAAG,CAAC;QAEhE,MAAM,CAAC,KAAK,CAAC,cAAc,OAAO,EAAE,CAAC,CAAC;QACtC,IAAA,wBAAQ,EAAC,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QAErC,MAAM,CAAC,KAAK,CAAC,uBAAuB,OAAO,EAAE,CAAC,CAAC;IACjD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,kBAAkB,OAAO,KAAK,KAAK,EAAE,CAAC,CAAC;QACpD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"dev.service.js","sourceRoot":"","sources":["../../src/services/dev.service.ts"],"names":[],"mappings":"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"}
@@ -39,18 +39,32 @@ const fs = __importStar(require("fs"));
39
39
  const path = __importStar(require("path"));
40
40
  const path_1 = require("../utils/path");
41
41
  const child_process_1 = require("child_process");
42
- const license_file_service_1 = require("./license-file.service");
42
+ const license_service_1 = require("./license.service");
43
43
  /**
44
44
  * TestService handles running automated tests for the io.Connect Desktop application.
45
45
  *
46
46
  * This service:
47
47
  * - Locates the tests directory in the project
48
48
  * - Ensures node_modules are installed in the tests directory
49
+ * - Prepares the in-place component with the seed's dev modifications
49
50
  * - Sets the BINARY_PATH environment variable to point to the built executable
51
+ * - Passes the seed license to the test process through IOCD_LICENSE_KEY
50
52
  * - Runs the test script defined in the tests package.json
51
53
  */
52
54
  class TestService {
53
55
  logger = logger_1.Logger.getInstance("test.service");
56
+ prepareIocd;
57
+ getLicenseKey;
58
+ constructor(options = {}) {
59
+ this.prepareIocd =
60
+ options.prepareIocd ??
61
+ (async () => {
62
+ const { prepareIocdForDev } = await import("./dev.service.js");
63
+ await prepareIocdForDev();
64
+ });
65
+ this.getLicenseKey =
66
+ options.getLicenseKey ?? (() => new license_service_1.LicenseService().getLicenseKey());
67
+ }
54
68
  /**
55
69
  * Run tests for the io.Connect Desktop application
56
70
  */
@@ -64,19 +78,17 @@ class TestService {
64
78
  this.logger.debug(`Tests directory: ${testsDir}`);
65
79
  // Check if node_modules exists, if not run npm install
66
80
  await this.ensureNodeModulesInstalled(testsDir);
81
+ // Prepare the in-place component exactly as dev mode does before launching it.
82
+ await this.prepareIocd();
67
83
  // Get the binary path based on platform
68
84
  const binaryPath = path_1.PathUtils.getIOCDExePath();
69
85
  this.logger.info(`Binary path: ${binaryPath}`);
70
86
  // Verify binary exists
71
87
  if (!fs.existsSync(binaryPath)) {
72
- throw new Error(`Binary not found at ${binaryPath}. Please run 'iocd dev' first to create the executable.`);
88
+ throw new Error(`Binary not found at ${binaryPath} after dev preparation. Run 'iocd setup' to reinstall the configured component.`);
73
89
  }
74
- // copy license file to binary directory if it exists
75
- await license_file_service_1.LicenseFileService.copyLicenseFile(true);
76
90
  // Run the test script
77
- await this.runTestScript(testsDir, binaryPath, args);
78
- // remove license file after tests (as tests ignore the copy setting)
79
- await license_file_service_1.LicenseFileService.removeLicenseFile();
91
+ await this.runTestScript(testsDir, binaryPath, args, this.getLicenseKey());
80
92
  }
81
93
  /**
82
94
  * Ensure node_modules are installed in the tests directory
@@ -122,7 +134,7 @@ class TestService {
122
134
  /**
123
135
  * Run the test script in the tests directory
124
136
  */
125
- async runTestScript(testsDir, binaryPath, args = []) {
137
+ async runTestScript(testsDir, binaryPath, args = [], licenseKey) {
126
138
  this.logger.info("Running tests...");
127
139
  return new Promise((resolve, reject) => {
128
140
  const npmCommand = process.platform === "win32" ? "npm.cmd" : "npm";
@@ -134,6 +146,7 @@ class TestService {
134
146
  env: {
135
147
  ...process.env,
136
148
  BINARY_PATH: binaryPath,
149
+ ...(licenseKey ? { IOCD_LICENSE_KEY: licenseKey } : {}),
137
150
  },
138
151
  });
139
152
  child.on("close", code => {
@@ -1 +1 @@
1
- {"version":3,"file":"test.service.js","sourceRoot":"","sources":["../../src/services/test.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"test.service.js","sourceRoot":"","sources":["../../src/services/test.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4CAAyC;AACzC,uCAAyB;AACzB,2CAA6B;AAC7B,wCAA0C;AAC1C,iDAAsC;AACtC,uDAAmD;AAOnD;;;;;;;;;;GAUG;AACH,MAAa,WAAW;IACd,MAAM,GAAG,eAAM,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IAC5C,WAAW,CAAsB;IACjC,aAAa,CAA2B;IAEhD,YAAY,UAA8B,EAAE;QAC1C,IAAI,CAAC,WAAW;YACd,OAAO,CAAC,WAAW;gBACnB,CAAC,KAAK,IAAI,EAAE;oBACV,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;oBAC/D,MAAM,iBAAiB,EAAE,CAAC;gBAC5B,CAAC,CAAC,CAAC;QACL,IAAI,CAAC,aAAa;YAChB,OAAO,CAAC,aAAa,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,gCAAc,EAAE,CAAC,aAAa,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAC,OAAiB,EAAE;QAChC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QAE/C,uBAAuB;QACvB,MAAM,QAAQ,GAAG,gBAAS,CAAC,WAAW,EAAE,CAAC;QAEzC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CACb,wCAAwC,QAAQ,2BAA2B,CAC5E,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,QAAQ,EAAE,CAAC,CAAC;QAElD,uDAAuD;QACvD,MAAM,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,CAAC;QAEhD,+EAA+E;QAC/E,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QAEzB,wCAAwC;QACxC,MAAM,UAAU,GAAG,gBAAS,CAAC,cAAc,EAAE,CAAC;QAC9C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,UAAU,EAAE,CAAC,CAAC;QAE/C,uBAAuB;QACvB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CACb,uBAAuB,UAAU,iFAAiF,CACnH,CAAC;QACJ,CAAC;QAED,sBAAsB;QACtB,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;IAC7E,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,0BAA0B,CAAC,QAAgB;QACvD,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;QAC5D,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;QAE5D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,6CAA6C,QAAQ,EAAE,CAAC,CAAC;QAC3E,CAAC;QAED,IAAI,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;YACpE,OAAO;QACT,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;QAClE,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QACnC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;IAC1D,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,aAAa,CAAC,GAAW;QACrC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;YACpE,MAAM,KAAK,GAAG,IAAA,qBAAK,EAAC,UAAU,EAAE,CAAC,SAAS,CAAC,EAAE;gBAC3C,GAAG;gBACH,KAAK,EAAE,SAAS;gBAChB,KAAK,EAAE,IAAI;aACZ,CAAC,CAAC;YAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE;gBACvB,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;oBACf,OAAO,EAAE,CAAC;gBACZ,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,IAAI,KAAK,CAAC,gCAAgC,IAAI,EAAE,CAAC,CAAC,CAAC;gBAC5D,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE;gBACtB,MAAM,CAAC,GAAG,CAAC,CAAC;YACd,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,aAAa,CACzB,QAAgB,EAChB,UAAkB,EAClB,OAAiB,EAAE,EACnB,UAAmB;QAEnB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAErC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;YACpE,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YACrE,MAAM,KAAK,GAAG,IAAA,qBAAK,EAAC,UAAU,EAAE,OAAO,EAAE;gBACvC,GAAG,EAAE,QAAQ;gBACb,KAAK,EAAE,SAAS;gBAChB,KAAK,EAAE,IAAI;gBACX,GAAG,EAAE;oBACH,GAAG,OAAO,CAAC,GAAG;oBACd,WAAW,EAAE,UAAU;oBACvB,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACxD;aACF,CAAC,CAAC;YAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE;gBACvB,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;oBACf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;oBACjD,OAAO,EAAE,CAAC;gBACZ,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,IAAI,KAAK,CAAC,0BAA0B,IAAI,EAAE,CAAC,CAAC,CAAC;gBACtD,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE;gBACtB,MAAM,CAAC,GAAG,CAAC,CAAC;YACd,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AA3ID,kCA2IC"}
@@ -17,11 +17,12 @@ The config the platform runs with is three layers, each deep-merged over the pre
17
17
  | Layer | Owner | Where |
18
18
  |-------|-------|-------|
19
19
  | Default `system.json` | io.Connect Desktop | inside the installed `iocd` component |
20
- | Seed modifications | the seed | `modifications/**/iocd/config/system.json.merge` — dev *and* packed build |
20
+ | Seed modifications | the seed | `modifications/base/` plus `modifications/dev/` for tests; packed builds use `modifications/build/` |
21
21
  | Test overrides | the test package | `config/system.json`, merged on top for the test process only |
22
22
 
23
23
  **Keep the test layer minimal.** Whatever the seed configures is already in effect during a test
24
- run — don't restate it. Override only what makes the run isolated and reproducible: the fixture app
24
+ run because `iocd test` prepares the component in dev mode — don't restate it. Override only what
25
+ makes the run isolated and reproducible: the fixture app
25
26
  store, `folders.userData`, log/crash output locations, and similar plumbing. Changing platform
26
27
  behavior here (window mode, Channels, gateway, auth, themes) means the tests no longer exercise the
27
28
  platform the seed ships — you'd be testing something else. Behavior changes belong in
@@ -11,7 +11,7 @@ over copying internal IOCD selectors into a spec.
11
11
 
12
12
  ## Current Generated Version
13
13
 
14
- The generated test package currently pins `@interopio/wdio-iocd-service@1.0.0-next.3`. Its
14
+ The generated test package currently pins `@interopio/wdio-iocd-service@1.0.0-next.4`. Its
15
15
  `@interopio/wdio-iocd-service/models` subpath exports:
16
16
 
17
17
  | Area | Models and types |
@@ -2,18 +2,17 @@
2
2
 
3
3
  ## Missing platform executable
4
4
 
5
- Ensure the configured `iocd` component is installed: run `npm run setup`, or start the seed once with
6
- `npm run dev` and close it before `npm test` (the service starts its own instance).
7
-
8
- If `iocd test` searches for an executable named after the seed's `productName`, but the installed
9
- component still has its default `io.Connect Desktop` name, run `npm run dev` once. Development
10
- preparation applies the seed branding and creates the executable path that the test command expects;
11
- close that development instance before rerunning the tests.
5
+ Ensure the configured `iocd` component is installed by running `npm run setup`. `iocd test`
6
+ automatically performs the same bundle preparation as `iocd dev`: it generates application-owned
7
+ base modifications, applies the seed's base and dev modifications, copies the configured output
8
+ license when enabled, and signs the macOS bundle before resolving the executable. It does not launch
9
+ a separate development instance.
12
10
 
13
11
  ## License prompt or failure
14
12
 
15
- Run from the seed root through `npm test` so the CLI can use `config/iocd.license.key`. In CI, supply
16
- the license via secrets. Never hard-code a license in a spec or fixture.
13
+ Run from the seed root through `npm test` so the CLI can read `config/iocd.license.key` and forward it
14
+ to the test platform as `IOCD_LICENSE_KEY`. In CI, supply the license via secrets. Never hard-code a
15
+ license in a spec or fixture.
17
16
 
18
17
  ## Startup timeout
19
18
 
@@ -10,7 +10,7 @@
10
10
  "license": "MIT",
11
11
  "devDependencies": {
12
12
  "@interopio/desktop": "^6.21.0",
13
- "@interopio/wdio-iocd-service": "1.0.0-next.3",
13
+ "@interopio/wdio-iocd-service": "1.0.0-next.4",
14
14
  "@interopio/workspaces-api": "^4.5.0",
15
15
  "@types/chai": "^5.2.3",
16
16
  "@types/mocha": "^10.0.10",
@@ -1141,9 +1141,9 @@
1141
1141
  }
1142
1142
  },
1143
1143
  "node_modules/@interopio/wdio-iocd-service": {
1144
- "version": "1.0.0-next.3",
1145
- "resolved": "https://registry.npmjs.org/@interopio/wdio-iocd-service/-/wdio-iocd-service-1.0.0-next.3.tgz",
1146
- "integrity": "sha512-BR4yqnf888cp9IRiSusCXPPn5v1eJhdTQPSrv6CIth1NBVx9XH08UexopNcgLl8dqh6NCeEWbXoAivuTFFQ4bg==",
1144
+ "version": "1.0.0-next.4",
1145
+ "resolved": "https://registry.npmjs.org/@interopio/wdio-iocd-service/-/wdio-iocd-service-1.0.0-next.4.tgz",
1146
+ "integrity": "sha512-l91dDhUdqYt9l49jAu6CTKjge8T12LnMODG2VrTqDk9ffSyGIvxK3gCsqtV3US7wRcCCbFHrStepaZhSrL9BSw==",
1147
1147
  "dev": true,
1148
1148
  "license": "MIT",
1149
1149
  "dependencies": {
@@ -10,7 +10,7 @@
10
10
  },
11
11
  "devDependencies": {
12
12
  "@interopio/desktop": "^6.21.0",
13
- "@interopio/wdio-iocd-service": "1.0.0-next.3",
13
+ "@interopio/wdio-iocd-service": "1.0.0-next.4",
14
14
  "@interopio/workspaces-api": "^4.5.0",
15
15
  "@types/chai": "^5.2.3",
16
16
  "@types/mocha": "^10.0.10",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@interopio/iocd-cli",
3
- "version": "1.0.2",
3
+ "version": "1.0.3",
4
4
  "description": "CLI tool for setting up, building and packaging io.Connect Desktop platforms",
5
5
  "engines": {
6
6
  "node": ">=22.0.0",