sealights-webdriverio-plugin 0.1.28 → 0.1.29

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 CHANGED
@@ -22,11 +22,7 @@ Add the service to your config. WDIO resolves services by name only for packages
22
22
  // wdio.conf.js
23
23
  const SealightsService = require('sealights-webdriverio-plugin');
24
24
  const { launcher: SealightsLauncher } = require('sealights-webdriverio-plugin');
25
- // OR
26
- const {
27
- service: SealightsService,
28
- launcher: SealightsLauncher,
29
- } = require('sealights-webdriverio-plugin');
25
+ const sealightsLauncher = new SealightsLauncher();
30
26
 
31
27
  exports.config = {
32
28
  framework: 'mocha',
@@ -35,9 +31,12 @@ exports.config = {
35
31
  [SealightsService],
36
32
  // ...other services
37
33
  ],
38
- // Ensure the launcher runs to fetch exclusions before workers start
34
+ // Retain one launcher: it owns the execution across both lifecycle hooks.
39
35
  onPrepare: async () => {
40
- await new SealightsLauncher().onPrepare();
36
+ await sealightsLauncher.onPrepare();
37
+ },
38
+ onComplete: async () => {
39
+ await sealightsLauncher.onComplete();
41
40
  },
42
41
  };
43
42
  ```
@@ -51,11 +50,16 @@ import {
51
50
  launcher as SealightsLauncher,
52
51
  } from 'sealights-webdriverio-plugin';
53
52
 
53
+ const sealightsLauncher = new SealightsLauncher();
54
+
54
55
  export const config = {
55
56
  framework: 'mocha',
56
57
  services: [[SealightsService]],
57
58
  onPrepare: async () => {
58
- await new SealightsLauncher().onPrepare();
59
+ await sealightsLauncher.onPrepare();
60
+ },
61
+ onComplete: async () => {
62
+ await sealightsLauncher.onComplete();
59
63
  },
60
64
  };
61
65
  ```
@@ -70,15 +74,25 @@ import {
70
74
  launcher as SealightsLauncher,
71
75
  } from 'sealights-webdriverio-plugin';
72
76
 
77
+ const sealightsLauncher = new SealightsLauncher();
78
+
73
79
  export const config: Config = {
74
80
  framework: 'mocha',
75
81
  services: [[SealightsService]],
76
82
  onPrepare: async () => {
77
- await new SealightsLauncher().onPrepare();
83
+ await sealightsLauncher.onPrepare();
84
+ },
85
+ onComplete: async () => {
86
+ await sealightsLauncher.onComplete();
78
87
  },
79
88
  };
80
89
  ```
81
90
 
91
+ The launcher is required because it owns the single SeaLights execution. It opens
92
+ that execution before fetching exclusions, persists the shared state for workers
93
+ to reuse, and closes the same execution in `onComplete`. Always retain one
94
+ launcher instance for both lifecycle hooks.
95
+
82
96
  ## Alternative: Manual Hooks (no WDIO service)
83
97
 
84
98
  If you prefer not to use WDIO services, import and attach the hooks directly:
@@ -90,6 +104,11 @@ const hooks = registerSealightsWdioHooks();
90
104
  exports.config = { framework: 'mocha', ...hooks };
91
105
  ```
92
106
 
107
+ `registerSealightsWdioHooks()` returns the complete lifecycle: launcher
108
+ `onPrepare`/`onComplete` hooks and worker `before`/`beforeTest`/`afterTest`/`after`
109
+ hooks. One launcher instance is shared by its two hooks, and one service instance
110
+ is shared by all worker hooks.
111
+
93
112
  ## Advanced: Referencing a built file path
94
113
 
95
114
  You can reference the built entry file explicitly, though this is not recommended as it relies on internal package
@@ -131,7 +150,7 @@ All Sealights parameters use the `--sl-` prefix:
131
150
  | `--sl-proxy` | Proxy server configuration | No |
132
151
  | `--sl-enableRemoteAgent` | Presence-only switch. When provided, WDIO disables the Browser Agent and collects component coverage via the remote agent (default: disabled) | No |
133
152
  | `--sl-testProjectId` | Test project ID differentiates between different test stages with the same test stage name of different teams/products/etc. | No |
134
- | `--sl-prID` | Identifies PR pipeline executions, allowing them to be distinguished from eachother and from other executions of the same test-stage. | No |
153
+ | `--sl-prID` | Identifies PR pipeline executions, allowing them to be distinguished from eachother and from other executions of the same test-stage. | No |
135
154
 
136
155
  Environment variable equivalents:
137
156
 
@@ -154,8 +173,13 @@ Environment variable equivalents:
154
173
 
155
174
  ## How It Works
156
175
 
157
- - Launcher (`onPrepare`): fetches excluded tests once and writes to `.sl/.wdio-excluded-tests.json`.
158
- - Worker (`before`): starts execution and loads exclusions (falls back to fetching if file missing).
176
+ - Launcher (`onPrepare`): opens the single execution, writes it to
177
+ `.sl/.wdio-execution.json`, then fetches excluded tests once and writes them to
178
+ `.sl/.wdio-excluded-tests.json`.
179
+ - Worker (`before`): reuses the launcher-owned execution from the state file and
180
+ loads exclusions. If execution state is missing or invalid, SeaLights is
181
+ strictly disabled for that worker; the worker does not start a replacement
182
+ execution or fetch exclusions.
159
183
  - Before each test: sends `startTest`.
160
184
  - Optional remote-agent mode: when enabled, the service disables the Browser Agent in the AUT and later collects/sends
161
185
  component coverage.
@@ -163,23 +187,32 @@ Environment variable equivalents:
163
187
  while reporting it as skipped.
164
188
  - After each test: sends `endTest` with result and duration. In remote-agent mode, component coverage (if present) is
165
189
  sent via the agent.
166
- - After all: ends execution and stops agent.
190
+ - Worker (`after`): stops only its worker-local agent.
191
+ - Launcher (`onComplete`): explicitly ends the single execution, then stops the
192
+ launcher agent and removes shared state. If execution closure fails, the
193
+ launcher logs the error, stops the agent, and still removes local state files.
167
194
 
168
195
  ## Cucumber with WDIO
169
196
 
170
197
  When `framework: 'cucumber'` is detected, this plugin no-ops and logs guidance.
171
198
  Use [sealights-cucumber-plugin](https://www.npmjs.com/package/sealights-cucumber-plugin) instead.
172
199
 
173
- ## Exclusions File
200
+ ## Shared State Files
174
201
 
175
- - Path: `.sl/.wdio-excluded-tests.json`
176
- - Produced by the launcher and consumed by workers. If missing, workers fall back to fetching from SeaLights.
202
+ - Execution path: `.sl/.wdio-execution.json`
203
+ - Exclusions path: `.sl/.wdio-excluded-tests.json`
204
+ - Both files are produced by the launcher after the execution opens and consumed
205
+ by workers. Missing or invalid execution state strictly disables SeaLights in
206
+ that worker so workers cannot create duplicate executions. The launcher removes
207
+ both files during teardown after attempting to end the execution.
177
208
 
178
209
  ## Troubleshooting
179
210
 
180
211
  - Service name not found: pass the module directly as shown above, or publish a wrapper named `wdio-sealights-service`.
181
212
  - No coverage: ensure your app under test is instrumented with Sealights.
182
- - Exclusions missing: verify `.sl/.wdio-excluded-tests.json` is produced; ensure launcher ran.
213
+ - Shared state missing: verify `.sl/.wdio-execution.json` and
214
+ `.sl/.wdio-excluded-tests.json` are produced; ensure the same retained launcher
215
+ instance is wired to both `onPrepare` and `onComplete`.
183
216
  - Browser hangs during beforeEach: leave remote-agent mode disabled (default), or explicitly disable it by removing
184
217
  `--sl-enableRemoteAgent`/`SL_ENABLEREMOTEAGENT`.
185
218
  - Cucumber events duplicated: remove the WDIO service and configure `sealights-cucumber-plugin` via
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sealights-webdriverio-plugin",
3
- "version": "0.1.28",
3
+ "version": "0.1.29",
4
4
  "description": "WebdriverIO plugin for Sealights integration",
5
5
  "main": "tsOutputs/src/index.js",
6
6
  "types": "tsOutputs/src/index.d.ts",
@@ -28,8 +28,8 @@
28
28
  },
29
29
  "dependencies": {
30
30
  "istanbul-lib-coverage": "^3.2.2",
31
- "slnodejs": "6.2.24",
32
- "sealights-plugins-common": "2.0.137"
31
+ "slnodejs": "6.2.34",
32
+ "sealights-plugins-common": "2.0.139"
33
33
  },
34
34
  "files": [
35
35
  "tsOutputs/src"
@@ -2,10 +2,12 @@ import { SealightsWdioService } from './service';
2
2
  export { SealightsWdioService as service } from './service';
3
3
  export { SealightsWdioLauncher as launcher } from './launcher';
4
4
  export declare function registerSealightsWdioHooks(): {
5
+ onPrepare: () => Promise<void>;
5
6
  before: () => Promise<void>;
6
7
  beforeTest: (...args: any[]) => Promise<void>;
7
8
  afterTest: (...args: any[]) => Promise<void>;
8
9
  after: () => Promise<void>;
10
+ onComplete: () => Promise<void>;
9
11
  };
10
12
  export { version } from './version';
11
13
  export default SealightsWdioService;
@@ -3,17 +3,21 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.version = exports.launcher = exports.service = void 0;
4
4
  exports.registerSealightsWdioHooks = registerSealightsWdioHooks;
5
5
  const service_1 = require("./service");
6
+ const launcher_1 = require("./launcher");
6
7
  var service_2 = require("./service");
7
8
  Object.defineProperty(exports, "service", { enumerable: true, get: function () { return service_2.SealightsWdioService; } });
8
- var launcher_1 = require("./launcher");
9
- Object.defineProperty(exports, "launcher", { enumerable: true, get: function () { return launcher_1.SealightsWdioLauncher; } });
9
+ var launcher_2 = require("./launcher");
10
+ Object.defineProperty(exports, "launcher", { enumerable: true, get: function () { return launcher_2.SealightsWdioLauncher; } });
10
11
  function registerSealightsWdioHooks() {
12
+ const launcher = new launcher_1.SealightsWdioLauncher();
11
13
  const service = new service_1.SealightsWdioService();
12
14
  return {
15
+ onPrepare: () => launcher.onPrepare?.(),
13
16
  before: () => service.before?.(),
14
17
  beforeTest: (...args) => service.beforeTest?.(...args),
15
18
  afterTest: (...args) => service.afterTest?.(...args),
16
19
  after: () => service.after?.(),
20
+ onComplete: () => launcher.onComplete?.(),
17
21
  };
18
22
  }
19
23
  var version_1 = require("./version");
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAOA,gEAUC;AAjBD,uCAAiD;AAEjD,qCAA4D;AAAnD,kGAAA,oBAAoB,OAAW;AAExC,uCAA+D;AAAtD,oGAAA,qBAAqB,OAAY;AAG1C,SAAgB,0BAA0B;IACxC,MAAM,OAAO,GAAG,IAAI,8BAAoB,EAAE,CAAC;IAC3C,OAAO;QACL,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE;QAChC,UAAU,EAAE,CAAC,GAAG,IAAW,EAAE,EAAE,CAC7B,OAAO,CAAC,UAAU,EAAE,CAAC,GAAI,IAAwB,CAAC;QACpD,SAAS,EAAE,CAAC,GAAG,IAAW,EAAE,EAAE,CAC5B,OAAO,CAAC,SAAS,EAAE,CAAC,GAAI,IAA6B,CAAC;QACxD,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE;KAC/B,CAAC;AACJ,CAAC;AAED,qCAAoC;AAA3B,kGAAA,OAAO,OAAA;AAGhB,kBAAe,8BAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAQA,gEAaC;AArBD,uCAAiD;AACjD,yCAAmD;AAEnD,qCAA4D;AAAnD,kGAAA,oBAAoB,OAAW;AAExC,uCAA+D;AAAtD,oGAAA,qBAAqB,OAAY;AAG1C,SAAgB,0BAA0B;IACxC,MAAM,QAAQ,GAAG,IAAI,gCAAqB,EAAE,CAAC;IAC7C,MAAM,OAAO,GAAG,IAAI,8BAAoB,EAAE,CAAC;IAC3C,OAAO;QACL,SAAS,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE;QACvC,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE;QAChC,UAAU,EAAE,CAAC,GAAG,IAAW,EAAE,EAAE,CAC7B,OAAO,CAAC,UAAU,EAAE,CAAC,GAAI,IAAwB,CAAC;QACpD,SAAS,EAAE,CAAC,GAAG,IAAW,EAAE,EAAE,CAC5B,OAAO,CAAC,SAAS,EAAE,CAAC,GAAI,IAA6B,CAAC;QACxD,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE;QAC9B,UAAU,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE;KAC1C,CAAC;AACJ,CAAC;AAED,qCAAoC;AAA3B,kGAAA,OAAO,OAAA;AAGhB,kBAAe,8BAAoB,CAAC"}
@@ -1,6 +1,10 @@
1
1
  export declare class SealightsWdioLauncher {
2
2
  private instance;
3
+ private execution;
4
+ private removeStateFiles;
5
+ private shutdown;
3
6
  private writeExclusions;
4
7
  private getExcludedTests;
5
8
  onPrepare(): Promise<void>;
9
+ onComplete(): Promise<void>;
6
10
  }
@@ -5,24 +5,58 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.SealightsWdioLauncher = void 0;
7
7
  const fs_1 = __importDefault(require("fs"));
8
- const path_1 = __importDefault(require("path"));
9
8
  const sealights_plugins_common_1 = require("sealights-plugins-common");
10
9
  const config_1 = require("./config");
11
10
  const exclusions_1 = require("./utils/exclusions");
11
+ const execution_1 = require("./utils/execution");
12
12
  const version_1 = require("./version");
13
13
  const timing_1 = require("./utils/timing");
14
14
  const TAGS = [{ name: 'webdriverio-plugin', version: version_1.version }];
15
15
  class SealightsWdioLauncher {
16
16
  constructor() {
17
17
  this.instance = null;
18
+ this.execution = null;
18
19
  }
19
- writeExclusions(excluded, testSelectionStatus) {
20
+ async removeStateFiles(tolerateErrors = true) {
21
+ let cleanupError;
22
+ try {
23
+ await (0, execution_1.removeExecutionFile)();
24
+ }
25
+ catch (error) {
26
+ cleanupError = error;
27
+ (0, sealights_plugins_common_1.getLogger)().error(`[SEALIGHTS][WDIO] Failed to remove execution state: ${error?.message || error}`);
28
+ }
29
+ try {
30
+ await fs_1.default.promises.rm(exclusions_1.DEFAULT_EXCLUSIONS_PATH, { force: true });
31
+ }
32
+ catch (error) {
33
+ (0, sealights_plugins_common_1.getLogger)().error(`[SEALIGHTS][WDIO] Failed to remove exclusions state at ${exclusions_1.DEFAULT_EXCLUSIONS_PATH}: ${error?.message || error}`);
34
+ cleanupError ||= error;
35
+ }
36
+ if (cleanupError && !tolerateErrors) {
37
+ throw cleanupError;
38
+ }
39
+ }
40
+ async shutdown(shouldEndExecution = true) {
41
+ if (!this.instance) {
42
+ return;
43
+ }
44
+ if (!shouldEndExecution) {
45
+ this.instance.setIsStartingExecution(false);
46
+ await this.instance.tryStopAgent();
47
+ return;
48
+ }
49
+ const executionEnded = await this.instance.tryEndExecution();
50
+ if (!executionEnded) {
51
+ (0, sealights_plugins_common_1.getLogger)().error(`[SEALIGHTS][WDIO] Failed to end execution. Stopping agent and cleaning up local state.`);
52
+ }
53
+ this.instance.setIsStartingExecution(false);
54
+ await this.instance.tryStopAgent();
55
+ this.execution = null;
56
+ }
57
+ async writeExclusions(excluded, testSelectionStatus) {
20
58
  (0, sealights_plugins_common_1.getLogger)().debug('SealightsWdioLauncher writeExclusions: start');
21
- const outPath = exclusions_1.DEFAULT_EXCLUSIONS_PATH;
22
- const dir = path_1.default.dirname(outPath);
23
- fs_1.default.mkdirSync(dir, { recursive: true });
24
- const payload = { excluded, testSelectionStatus };
25
- fs_1.default.writeFileSync(outPath, JSON.stringify(payload), 'utf-8');
59
+ await (0, exclusions_1.writeExclusionsAndStatusToFile)({ excluded, testSelectionStatus }, exclusions_1.DEFAULT_EXCLUSIONS_PATH);
26
60
  (0, sealights_plugins_common_1.getLogger)().debug('SealightsWdioLauncher writeExclusions: done');
27
61
  }
28
62
  async getExcludedTests() {
@@ -42,18 +76,57 @@ class SealightsWdioLauncher {
42
76
  }
43
77
  async onPrepare() {
44
78
  (0, sealights_plugins_common_1.getLogger)().debug('SealightsWdioLauncher onPrepare');
79
+ let executionOpened = false;
45
80
  try {
81
+ await this.removeStateFiles(false);
46
82
  const provider = await (0, config_1.buildSlConfigProvider)();
47
83
  this.instance = await sealights_plugins_common_1.SealightsIntegration.getInstance(provider, false, TAGS);
84
+ this.instance.setIsStartingExecution(true);
85
+ const execution = await this.instance.startExecution();
86
+ const executionId = execution
87
+ ?.executionId;
88
+ if (typeof executionId === 'string' && executionId.trim().length > 0) {
89
+ executionOpened = true;
90
+ }
91
+ const missingExecutionFields = (0, execution_1.getMissingExecutionFields)(execution);
92
+ if (missingExecutionFields.length > 0) {
93
+ throw new Error(`startExecution returned invalid execution data; missing or empty required fields: ` +
94
+ missingExecutionFields.join(', '));
95
+ }
96
+ this.execution = execution;
97
+ await (0, execution_1.writeExecution)(execution);
48
98
  const excluded = await this.getExcludedTests();
49
99
  const status = this.instance?.agent?.testRecommendationHandler
50
100
  ?.eventsProcess?.testSelectionStatus;
51
- this.writeExclusions(excluded, status);
101
+ await this.writeExclusions(excluded, status);
52
102
  (0, sealights_plugins_common_1.getLogger)().lifecycle(`[SEALIGHTS][WDIO] Wrote exclusions to ${exclusions_1.DEFAULT_EXCLUSIONS_PATH}`);
53
103
  }
54
104
  catch (e) {
55
- (0, sealights_plugins_common_1.getLogger)().error(`[SEALIGHTS][WDIO] onPrepare (launcher) failed to write exclusions: ${e?.message || e}`);
105
+ await this.shutdown(executionOpened);
106
+ await this.removeStateFiles();
107
+ const recoveryMessage = executionOpened
108
+ ? 'The agent was stopped and launcher state was removed after the startup failure.'
109
+ : 'The failure occurred before an execution was opened; launcher state was removed.';
110
+ (0, sealights_plugins_common_1.getLogger)().error(`[SEALIGHTS][WDIO] onPrepare (launcher) failed: ${e?.message || e}. ` +
111
+ `${recoveryMessage} Check agent connectivity and write permissions before retrying.`);
112
+ }
113
+ }
114
+ async onComplete() {
115
+ (0, sealights_plugins_common_1.getLogger)().debug('SealightsWdioLauncher onComplete');
116
+ if (!this.instance) {
117
+ return;
118
+ }
119
+ const canEndExecution = Boolean(this.execution?.executionId);
120
+ try {
121
+ if (this.execution) {
122
+ this.instance.setExecution(this.execution);
123
+ }
124
+ await this.shutdown(canEndExecution);
125
+ }
126
+ catch (error) {
127
+ (0, sealights_plugins_common_1.getLogger)().error(`[SEALIGHTS][WDIO] onComplete (launcher) failed: ${error?.message || error}`);
56
128
  }
129
+ await this.removeStateFiles();
57
130
  }
58
131
  }
59
132
  exports.SealightsWdioLauncher = SealightsWdioLauncher;
@@ -1 +1 @@
1
- {"version":3,"file":"launcher.js","sourceRoot":"","sources":["../../src/launcher.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAoB;AACpB,gDAAwB;AAExB,uEAA2E;AAE3E,qCAAiD;AACjD,mDAA6D;AAC7D,uCAAoC;AACpC,2CAAuC;AAEvC,MAAM,IAAI,GAAe,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAP,iBAAO,EAAE,CAAC,CAAC;AAEnE,MAAa,qBAAqB;IAAlC;QACU,aAAQ,GAAgC,IAAI,CAAC;IAwDvD,CAAC;IAtDS,eAAe,CACrB,QAAiC,EACjC,mBAA2B;QAE3B,IAAA,oCAAS,GAAE,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAClE,MAAM,OAAO,GAAG,oCAAuB,CAAC;QACxC,MAAM,GAAG,GAAG,cAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAClC,YAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACvC,MAAM,OAAO,GAAQ,EAAE,QAAQ,EAAE,mBAAmB,EAAE,CAAC;QACvD,YAAE,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;QAC5D,IAAA,oCAAS,GAAE,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACnE,CAAC;IAEO,KAAK,CAAC,gBAAgB;QAC5B,IAAA,oCAAS,GAAE,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;QACnE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAC7D,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;YAClC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE;YAChC,IAAA,cAAK,EAAC,KAAK,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;gBACjC,IAAA,oCAAS,GAAE,CAAC,KAAK,CACf,6FAA6F,CAC9F,CAAC;gBACF,OAAO,QAAQ,CAAC;YAClB,CAAC,CAAC;SACH,CAAC,CAAC;QACH,IAAA,oCAAS,GAAE,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAClE,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,SAAS;QACb,IAAA,oCAAS,GAAE,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACrD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAA,8BAAqB,GAAE,CAAC;YAC/C,IAAI,CAAC,QAAQ,GAAG,MAAM,+CAAoB,CAAC,WAAW,CACpD,QAAQ,EACR,KAAK,EACL,IAAI,CACL,CAAC;YACF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAE/C,MAAM,MAAM,GAAI,IAAI,CAAC,QAAgB,EAAE,KAAK,EAAE,yBAAyB;gBACrE,EAAE,aAAa,EAAE,mBAAmB,CAAC;YACvC,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YACvC,IAAA,oCAAS,GAAE,CAAC,SAAS,CACnB,yCAAyC,oCAAuB,EAAE,CACnE,CAAC;QACJ,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,IAAA,oCAAS,GAAE,CAAC,KAAK,CACf,sEAAsE,CAAC,EAAE,OAAO,IAAI,CAAC,EAAE,CACxF,CAAC;QACJ,CAAC;IACH,CAAC;CACF;AAzDD,sDAyDC"}
1
+ {"version":3,"file":"launcher.js","sourceRoot":"","sources":["../../src/launcher.ts"],"names":[],"mappings":"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"}
@@ -15,6 +15,7 @@ const exclusions_1 = require("./utils/exclusions");
15
15
  const version_1 = require("./version");
16
16
  const results_1 = require("./utils/results");
17
17
  const timing_1 = require("./utils/timing");
18
+ const execution_1 = require("./utils/execution");
18
19
  const SL_TAGS = [{ name: 'webdriverio-plugin', version: version_1.version }];
19
20
  class SealightsWdioService {
20
21
  constructor(serviceOptions) {
@@ -75,7 +76,20 @@ class SealightsWdioService {
75
76
  this.enableRemoteAgent = Object.prototype.hasOwnProperty.call(cfg, 'enableremoteagent');
76
77
  (0, sealights_plugins_common_1.getLogger)().debug(`SealightsWdioService before: enableRemoteAgent=${this.enableRemoteAgent}`);
77
78
  this.instance = await sealights_plugins_common_1.SealightsIntegration.getInstance(provider, false, SL_TAGS);
78
- await this.instance.startExecution();
79
+ this.instance.setIsStartingExecution(false);
80
+ const execution = await (0, execution_1.readExecution)();
81
+ if (!execution) {
82
+ (0, sealights_plugins_common_1.getLogger)().lifecycle('[SEALIGHTS][WDIO] The shared execution state is unavailable or invalid. SeaLights is disabled for this worker; stopping the worker-local agent without closing the launcher-owned execution.');
83
+ try {
84
+ await this.instance.stopAgent();
85
+ }
86
+ catch (e) {
87
+ (0, sealights_plugins_common_1.getLogger)().error(`[SEALIGHTS][WDIO] Failed to stop agent while disabling worker: ${e?.message || e}`);
88
+ }
89
+ this.instance = null;
90
+ return;
91
+ }
92
+ this.instance.setExecution(execution);
79
93
  await this.loadExclusions();
80
94
  (0, sealights_plugins_common_1.getLogger)().debug('SealightsWdioService before: done');
81
95
  }
@@ -187,12 +201,6 @@ class SealightsWdioService {
187
201
  }
188
202
  async after() {
189
203
  (0, sealights_plugins_common_1.getLogger)().debug('SealightsWdioService after: start');
190
- try {
191
- await this.instance.endExecution();
192
- }
193
- catch (e) {
194
- (0, sealights_plugins_common_1.getLogger)().error(`[SEALIGHTS][WDIO] Failed to end execution: ${e?.message || e}`);
195
- }
196
204
  try {
197
205
  await this.instance.stopAgent();
198
206
  }
@@ -1 +1 @@
1
- {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/service.ts"],"names":[],"mappings":";;;;;;;;;AA8TA,wCAoBC;AAED,4CAoBC;AAxWD,uEAMkC;AAGlC,qCAAiD;AACjD,mDAAqE;AACrE,uCAAoC;AACpC,6CAAiE;AAGjE,2CAAuC;AACvC,iDAAkD;AAElD,MAAM,OAAO,GAAe,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAP,iBAAO,EAAE,CAAC,CAAC;AAEtE,MAAa,oBAAoB;IAM/B,YACU,cAEP;QAFO,mBAAc,GAAd,cAAc,CAErB;QARK,wBAAmB,GAAG,KAAK,CAAC;QAC5B,aAAQ,GAAgC,IAAI,CAAC;QAC7C,aAAQ,GAAmC,IAAI,CAAC;QAChD,sBAAiB,GAAY,KAAK,CAAC;QAOzC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,cAAc,EAAE,SAAS,KAAK,UAAU,CAAC;IAC3E,CAAC;IAEO,2BAA2B,CAAC,MAAe;QACjD,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,IAAA,oCAAS,GAAE,CAAC,KAAK,CACf,6KAA6K,CAC9K,CAAC;gBACF,OAAO;YACT,CAAC;YACD,MAAM,KAAK,GAAI,IAAI,CAAC,QAAgB,EAAE,KAAK,CAAC;YAC5C,IAAI,KAAK,EAAE,yBAAyB,EAAE,aAAa,EAAE,CAAC;gBACpD,IAAA,oCAAS,GAAE,CAAC,KAAK,CACf,2EAA2E,MAAM,EAAE,CACpF,CAAC;gBACF,KAAK,CAAC,yBAAyB,CAAC,aAAa,CAAC,mBAAmB;oBAC/D,MAAM,CAAC;YACX,CAAC;QACH,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,IAAA,oCAAS,GAAE,CAAC,KAAK,CACf,yEAAyE,CAAC,EAAE,OAAO,IAAI,CAAC,EAAE,CAC3F,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,cAAc;QAC1B,IAAA,oCAAS,GAAE,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;QACjE,MAAM,wBAAwB,GAAG,MAAM,IAAA,4CAA+B,GAAE,CAAC;QACzE,IAAI,wBAAwB,EAAE,CAAC;YAC7B,IAAI,CAAC,QAAQ,GAAG,wBAAwB,CAAC,QAAQ,CAAC;YAClD,IAAI,CAAC,2BAA2B,CAC9B,wBAAwB,CAAC,mBAAmB,CAC7C,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,MAAM,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAC1C,CAAC;QACD,IAAA,oCAAS,GAAE,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACzE,CAAC;IAEO,KAAK,CAAC,0BAA0B;QACtC,IAAA,oCAAS,GAAE,CAAC,KAAK,CACf,yDAAyD,CAC1D,CAAC;QACF,IAAI,CAAC;YACH,IAAI,CAAC,QAAQ,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;gBACjC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE;gBAChC,IAAA,cAAK,EAAC,KAAK,EAAE,EAAE,CAAC;aACjB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,IAAA,oCAAS,GAAE,CAAC,KAAK,CACf,6DAA6D,CAAC,EAAE,OAAO,IAAI,CAAC,EAAE,CAC/E,CAAC;YACF,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QACrB,CAAC;QACD,IAAA,oCAAS,GAAE,CAAC,KAAK,CACf,+DAA+D,CAChE,CAAC;IACJ,CAAC;IAIK,AAAN,KAAK,CAAC,MAAM;QACV,IAAA,oCAAS,GAAE,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;QAExD,MAAM,QAAQ,GAAG,MAAM,IAAA,8BAAqB,GAAE,CAAC;QAC/C,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,CAExC,CAAC;QACF,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAC3D,GAAG,EACH,mBAAmB,CACpB,CAAC;QACF,IAAA,oCAAS,GAAE,CAAC,KAAK,CACf,kDAAkD,IAAI,CAAC,iBAAiB,EAAE,CAC3E,CAAC;QAEF,IAAI,CAAC,QAAQ,GAAG,MAAM,+CAAoB,CAAC,WAAW,CACpD,QAAQ,EACR,KAAK,EACL,OAAO,CACR,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;QAE5C,MAAM,SAAS,GAAG,MAAM,IAAA,yBAAa,GAAE,CAAC;QACxC,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,IAAA,oCAAS,GAAE,CAAC,SAAS,CACnB,8LAA8L,CAC/L,CAAC;YACF,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;YAClC,CAAC;YAAC,OAAO,CAAM,EAAE,CAAC;gBAChB,IAAA,oCAAS,GAAE,CAAC,KAAK,CACf,kEAAkE,CAAC,EAAE,OAAO,IAAI,CAAC,EAAE,CACpF,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QACtC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAE5B,IAAA,oCAAS,GAAE,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACzD,CAAC;IAIK,AAAN,KAAK,CAAC,UAAU,CAAC,IAAgB,EAAE,OAAY,EAAE,OAAY;QAC3D,IAAA,oCAAS,GAAE,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAG5D,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,MAAM,WAAW,GAAG,OAAO,IAAK,UAAkB,CAAC,OAAO,CAAC;gBAC3D,IAAI,WAAW,IAAI,OAAO,WAAW,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;oBAC7D,MAAM,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE;wBAC5B,MAAc,CAAC,YAAY,CAAC,GAAI,MAAc,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;wBACnE,MAAc,CAAC,YAAY,CAAC,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC;oBACtD,CAAC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;YAET,CAAC;QACH,CAAC;QAED,MAAM,KAAK,GAAc,IAAA,yBAAe,EAAC,IAAI,CAAC,CAAC;QAC/C,IAAA,oCAAS,GAAE,CAAC,KAAK,CACf,2CAA2C,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CACnE,CAAC;QACF,IAAI,CAAC;YACH,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,IAAA,oCAAS,GAAE,CAAC,KAAK,CACf,+CAA+C,CAAC,EAAE,OAAO,IAAI,CAAC,EAAE,CACjE,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YAGhC,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAiB,IAAA,uBAAa,EAAC;oBAC3C,IAAI;oBACJ,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE;oBACtC,QAAQ,EAAE,EAAE;iBACb,CAAC,CAAC;gBACH,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAC/B,IAAsB,CAAC,cAAc,GAAG,IAAI,CAAC;YAChD,CAAC;YAAC,OAAO,CAAM,EAAE,CAAC;gBAChB,IAAA,oCAAS,GAAE,CAAC,KAAK,CACf,8DAA8D,CAAC,EAAE,OAAO,IAAI,CAAC,EAAE,CAChF,CAAC;YACJ,CAAC;YAED,IAAA,oCAAS,GAAE,CAAC,SAAS,CACnB,+DAA+D,KAAK,CAAC,IAAI,EAAE,CAC5E,CAAC;YACF,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,CAAC;QAED,IAAA,oCAAS,GAAE,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC7D,CAAC;IAIK,AAAN,KAAK,CAAC,SAAS,CAAC,IAAgB,EAAE,QAAa,EAAE,MAAW,EAAE,OAAY;QACxE,IAAA,oCAAS,GAAE,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAG3D,IAAK,IAAsB,CAAC,cAAc,EAAE,CAAC;YAC3C,IAAA,oCAAS,GAAE,CAAC,KAAK,CACf,oEAAoE,CACrE,CAAC;YACF,OAAO;QACT,CAAC;QAGD,IAAI,kBAAkB,GAEX,IAAI,CAAC;QAChB,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,MAAM,WAAW,GAAG,OAAO,IAAK,UAAkB,CAAC,OAAO,CAAC;gBAC3D,IAAI,WAAW,IAAI,OAAO,WAAW,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;oBAE7D,MAAM,UAAU,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE;wBAIhD,MAAM,oBAAoB,GAAG,qBAAqB,CAAC;wBAEnD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAC9C,GAAG,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CACnC,CAAC;wBAEF,MAAM,qBAAqB,GAGrB,IAAI,CAAC,GAAG,CAAC,CAAC,oBAAoB,EAAE,EAAE;4BACtC,MAAM,aAAa,GAAG,oBAAoB,CAAC,OAAO,CAChD,oBAAoB,EACpB,EAAE,CACH,CAAC;4BACF,MAAM,gBAAgB,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;4BACtD,OAAO;gCACL,cAAc,EAAE,aAAa;gCAC7B,QAAQ,EAAE,gBAAgB;6BAC3B,CAAC;wBACJ,CAAC,CAAC,CAAC;wBAEH,OAAO,qBAAqB,CAAC;oBAC/B,CAAC,CAAC,CAAC;oBACH,kBAAkB,GAAG,IAAA,qDAA0B,EAAC,UAAU,CAAC,CAAC;gBAC9D,CAAC;YACH,CAAC;YAAC,OAAO,CAAM,EAAE,CAAC;gBAChB,IAAA,oCAAS,GAAE,CAAC,KAAK,CACf,4DAA4D,CAAC,EAAE,OAAO,IAAI,CAAC,EAAE,CAC9E,CAAC;gBACF,kBAAkB,GAAG,IAAI,CAAC;YAC5B,CAAC;QACH,CAAC;QAED,MAAM,QAAQ,GAAiB,IAAA,uBAAa,EAAC;YAC3C,IAAI;YACJ,MAAM;YACN,QAAQ,EAAE,EAAE;SACb,CAAC,CAAC;QAEH,IAAA,oCAAS,GAAE,CAAC,KAAK,CACf,6CAA6C,IAAI,CAAC,SAAS,CAAC;YAC1D,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,SAAS,EAAE,QAAQ,CAAC,SAAS;YAC7B,QAAQ,EAAE,QAAQ,CAAC,QAAQ;YAC3B,MAAM,EAAE,QAAQ,CAAC,MAAM;SACxB,CAAC,EAAE,CACL,CAAC;QAEF,IAAI,CAAC;YACH,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAClC,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,IAAA,oCAAS,GAAE,CAAC,KAAK,CACf,6CAA6C,CAAC,EAAE,OAAO,IAAI,CAAC,EAAE,CAC/D,CAAC;QACJ,CAAC;QAGD,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,IAAI,kBAAkB,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACxD,MAAM,KAAK,GAAI,IAAI,CAAC,QAAgB,EAAE,KAAK,CAAC;oBAC5C,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,0BAA0B,KAAK,UAAU,EAAE,CAAC;wBACpE,MAAM,KAAK,CAAC,0BAA0B,CACpC,QAAQ,CAAC,IAAI,EACb,kBAAkB,CACnB,CAAC;wBACF,IAAA,oCAAS,GAAE,CAAC,KAAK,CACf,gEAAgE,kBAAkB,CAAC,MAAM,aAAa,CACvG,CAAC;oBACJ,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,OAAO,CAAM,EAAE,CAAC;gBAChB,IAAA,oCAAS,GAAE,CAAC,KAAK,CACf,yDAAyD,CAAC,EAAE,OAAO,IAAI,CAAC,EAAE,CAC3E,CAAC;YACJ,CAAC;QACH,CAAC;QACD,IAAA,oCAAS,GAAE,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC5D,CAAC;IAIK,AAAN,KAAK,CAAC,KAAK;QACT,IAAA,oCAAS,GAAE,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;QAEvD,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;QAClC,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,IAAA,oCAAS,GAAE,CAAC,KAAK,CACf,2CAA2C,CAAC,EAAE,OAAO,IAAI,CAAC,EAAE,CAC7D,CAAC;QACJ,CAAC;QACD,IAAA,oCAAS,GAAE,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACxD,CAAC;CACF;AAxSD,oDAwSC;AA9NO;IADL,cAAc,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;kDA2C7B;AAIK;IAFL,cAAc,EAAE;IAChB,gBAAgB,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;sDAuD/B;AAIK;IAFL,cAAc,EAAE;IAChB,gBAAgB,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;qDAuG/B;AAIK;IAFL,cAAc,EAAE;IAChB,gBAAgB,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;iDAY/B;AAGH,SAAgB,cAAc,CAAC,UAA6B,EAAE;IAC5D,OAAO,UACL,OAAY,EACZ,YAAoB,EACpB,UAA8B;QAE9B,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC;QAClC,UAAU,CAAC,KAAK,GAAG,UAAU,GAAG,IAAW;YACzC,IAAK,IAAY,CAAC,mBAAmB,EAAE,CAAC;gBACtC,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;oBAChB,IAAA,oCAAS,GAAE,CAAC,SAAS,CACnB,mHAAmH,CACpH,CAAC;gBACJ,CAAC;gBACD,OAAO;YACT,CAAC;YACD,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACpC,CAAC,CAAC;QACF,OAAO,UAAU,CAAC;IACpB,CAAC,CAAC;AACJ,CAAC;AAED,SAAgB,gBAAgB,CAAC,UAA6B,EAAE;IAC9D,OAAO,UACL,OAAY,EACZ,YAAoB,EACpB,UAA8B;QAE9B,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC;QAClC,UAAU,CAAC,KAAK,GAAG,UAAU,GAAG,IAAW;YACzC,IAAI,CAAE,IAAY,CAAC,QAAQ,EAAE,CAAC;gBAC5B,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;oBAChB,IAAA,oCAAS,GAAE,CAAC,KAAK,CACf,qJAAqJ,CACtJ,CAAC;gBACJ,CAAC;gBACD,OAAO;YACT,CAAC;YACD,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACpC,CAAC,CAAC;QACF,OAAO,UAAU,CAAC;IACpB,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function atomicWriteJSON(filePath: string, data: unknown): Promise<void>;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.atomicWriteJSON = atomicWriteJSON;
7
+ const fs_1 = require("fs");
8
+ const path_1 = __importDefault(require("path"));
9
+ async function atomicWriteJSON(filePath, data) {
10
+ const directory = path_1.default.dirname(filePath);
11
+ const temporaryPath = path_1.default.join(directory, `.${path_1.default.basename(filePath)}.${process.pid}.${Date.now()}.${Math.random()
12
+ .toString(16)
13
+ .slice(2)}.tmp`);
14
+ await fs_1.promises.mkdir(directory, { recursive: true });
15
+ try {
16
+ await fs_1.promises.writeFile(temporaryPath, JSON.stringify(data), 'utf-8');
17
+ await fs_1.promises.rename(temporaryPath, filePath);
18
+ }
19
+ catch (error) {
20
+ await fs_1.promises.rm(temporaryPath, { force: true }).catch(() => undefined);
21
+ throw error;
22
+ }
23
+ }
24
+ //# sourceMappingURL=atomic-write.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"atomic-write.js","sourceRoot":"","sources":["../../../src/utils/atomic-write.ts"],"names":[],"mappings":";;;;;AAGA,0CAqBC;AAxBD,2BAAoC;AACpC,gDAAwB;AAEjB,KAAK,UAAU,eAAe,CACnC,QAAgB,EAChB,IAAa;IAEb,MAAM,SAAS,GAAG,cAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACzC,MAAM,aAAa,GAAG,cAAI,CAAC,IAAI,CAC7B,SAAS,EACT,IAAI,cAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE;SACtE,QAAQ,CAAC,EAAE,CAAC;SACZ,KAAK,CAAC,CAAC,CAAC,MAAM,CAClB,CAAC;IAEF,MAAM,aAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE/C,IAAI,CAAC;QACH,MAAM,aAAE,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;QACjE,MAAM,aAAE,CAAC,MAAM,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;IAC3C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,aAAE,CAAC,EAAE,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACnE,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -1,3 +1,4 @@
1
1
  import { IWdioExclusionsFile } from '../types';
2
2
  export declare const DEFAULT_EXCLUSIONS_PATH: string;
3
+ export declare function writeExclusionsAndStatusToFile(exclusions: IWdioExclusionsFile, filePath?: string): Promise<void>;
3
4
  export declare function readExclusionsAndStatusFromFile(filePath?: string): Promise<IWdioExclusionsFile | null>;
@@ -4,11 +4,16 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.DEFAULT_EXCLUSIONS_PATH = void 0;
7
+ exports.writeExclusionsAndStatusToFile = writeExclusionsAndStatusToFile;
7
8
  exports.readExclusionsAndStatusFromFile = readExclusionsAndStatusFromFile;
8
9
  const fs_1 = require("fs");
9
10
  const path_1 = __importDefault(require("path"));
10
11
  const sealights_plugins_common_1 = require("sealights-plugins-common");
12
+ const atomic_write_1 = require("./atomic-write");
11
13
  exports.DEFAULT_EXCLUSIONS_PATH = path_1.default.resolve(process.cwd(), '.sl/.wdio-excluded-tests.json');
14
+ async function writeExclusionsAndStatusToFile(exclusions, filePath = exports.DEFAULT_EXCLUSIONS_PATH) {
15
+ await (0, atomic_write_1.atomicWriteJSON)(filePath, exclusions);
16
+ }
12
17
  async function readExclusionsAndStatusFromFile(filePath = exports.DEFAULT_EXCLUSIONS_PATH) {
13
18
  try {
14
19
  const buffer = await fs_1.promises.readFile(filePath, 'utf-8');
@@ -1 +1 @@
1
- {"version":3,"file":"exclusions.js","sourceRoot":"","sources":["../../../src/utils/exclusions.ts"],"names":[],"mappings":";;;;;;AAWA,0EAcC;AAzBD,2BAAoC;AACpC,gDAAwB;AAExB,uEAAqD;AAGxC,QAAA,uBAAuB,GAAG,cAAI,CAAC,OAAO,CACjD,OAAO,CAAC,GAAG,EAAE,EACb,+BAA+B,CAChC,CAAC;AAEK,KAAK,UAAU,+BAA+B,CACnD,WAAmB,+BAAuB;IAE1C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,aAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAClC,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YACzC,OAAO,MAA6B,CAAC;QACvC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,IAAA,oCAAS,GAAE,CAAC,KAAK,CAAC,kCAAkC,KAAK,EAAE,CAAC,CAAC;QAC7D,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"exclusions.js","sourceRoot":"","sources":["../../../src/utils/exclusions.ts"],"names":[],"mappings":";;;;;;AAaA,wEAKC;AAED,0EAcC;AAlCD,2BAAoC;AACpC,gDAAwB;AAExB,uEAAqD;AAGrD,iDAAiD;AAEpC,QAAA,uBAAuB,GAAG,cAAI,CAAC,OAAO,CACjD,OAAO,CAAC,GAAG,EAAE,EACb,+BAA+B,CAChC,CAAC;AAEK,KAAK,UAAU,8BAA8B,CAClD,UAA+B,EAC/B,WAAmB,+BAAuB;IAE1C,MAAM,IAAA,8BAAe,EAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;AAC9C,CAAC;AAEM,KAAK,UAAU,+BAA+B,CACnD,WAAmB,+BAAuB;IAE1C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,aAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAClC,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YACzC,OAAO,MAA6B,CAAC;QACvC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,IAAA,oCAAS,GAAE,CAAC,KAAK,CAAC,kCAAkC,KAAK,EAAE,CAAC,CAAC;QAC7D,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { IExecutionData } from 'slnodejs';
2
+ export declare const DEFAULT_EXECUTION_PATH: string;
3
+ export declare function getMissingExecutionFields(value: unknown): Array<keyof IExecutionData>;
4
+ export declare function writeExecution(execution: IExecutionData, filePath?: string): Promise<void>;
5
+ export declare function readExecution(filePath?: string): Promise<IExecutionData | null>;
6
+ export declare function removeExecutionFile(filePath?: string): Promise<void>;
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.DEFAULT_EXECUTION_PATH = void 0;
7
+ exports.getMissingExecutionFields = getMissingExecutionFields;
8
+ exports.writeExecution = writeExecution;
9
+ exports.readExecution = readExecution;
10
+ exports.removeExecutionFile = removeExecutionFile;
11
+ const fs_1 = require("fs");
12
+ const path_1 = __importDefault(require("path"));
13
+ const sealights_plugins_common_1 = require("sealights-plugins-common");
14
+ const atomic_write_1 = require("./atomic-write");
15
+ exports.DEFAULT_EXECUTION_PATH = path_1.default.resolve(process.cwd(), '.sl/.wdio-execution.json');
16
+ const REQUIRED_EXECUTION_FIELDS = [
17
+ 'executionId',
18
+ 'appName',
19
+ 'branchName',
20
+ 'buildName',
21
+ 'buildSessionId',
22
+ 'testStage',
23
+ 'status',
24
+ ];
25
+ function getMissingExecutionFields(value) {
26
+ if (!value || typeof value !== 'object') {
27
+ return [...REQUIRED_EXECUTION_FIELDS];
28
+ }
29
+ const execution = value;
30
+ return REQUIRED_EXECUTION_FIELDS.filter((field) => {
31
+ const fieldValue = execution[field];
32
+ return typeof fieldValue !== 'string' || fieldValue.trim().length === 0;
33
+ });
34
+ }
35
+ async function writeExecution(execution, filePath = exports.DEFAULT_EXECUTION_PATH) {
36
+ await (0, atomic_write_1.atomicWriteJSON)(filePath, execution);
37
+ }
38
+ async function readExecution(filePath = exports.DEFAULT_EXECUTION_PATH) {
39
+ let contents;
40
+ try {
41
+ contents = await fs_1.promises.readFile(filePath, 'utf-8');
42
+ }
43
+ catch (error) {
44
+ const reason = error?.code === 'ENOENT' ? 'the file is missing' : String(error);
45
+ (0, sealights_plugins_common_1.getLogger)().error(`Unable to read shared execution state at '${filePath}': ${reason}. ` +
46
+ 'Ensure the WebdriverIO launcher onPrepare hook completed successfully.');
47
+ return null;
48
+ }
49
+ let parsed;
50
+ try {
51
+ parsed = JSON.parse(contents);
52
+ }
53
+ catch (error) {
54
+ (0, sealights_plugins_common_1.getLogger)().error(`Unable to read shared execution state at '${filePath}': malformed JSON (${error}). ` +
55
+ 'Remove the file and rerun the WebdriverIO launcher.');
56
+ return null;
57
+ }
58
+ const missingFields = getMissingExecutionFields(parsed);
59
+ if (missingFields.length > 0) {
60
+ (0, sealights_plugins_common_1.getLogger)().error(`Unable to read shared execution state at '${filePath}': missing or empty required fields: ` +
61
+ `${missingFields.join(', ')}. Rerun the WebdriverIO launcher to recreate the file.`);
62
+ return null;
63
+ }
64
+ return parsed;
65
+ }
66
+ async function removeExecutionFile(filePath = exports.DEFAULT_EXECUTION_PATH) {
67
+ await fs_1.promises.rm(filePath, { force: true });
68
+ }
69
+ //# sourceMappingURL=execution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execution.js","sourceRoot":"","sources":["../../../src/utils/execution.ts"],"names":[],"mappings":";;;;;;AAuBA,8DAYC;AAED,wCAKC;AAED,sCAqCC;AAED,kDAIC;AAvFD,2BAAoC;AACpC,gDAAwB;AAExB,uEAAqD;AAGrD,iDAAiD;AAEpC,QAAA,sBAAsB,GAAG,cAAI,CAAC,OAAO,CAChD,OAAO,CAAC,GAAG,EAAE,EACb,0BAA0B,CAC3B,CAAC;AAEF,MAAM,yBAAyB,GAAgC;IAC7D,aAAa;IACb,SAAS;IACT,YAAY;IACZ,WAAW;IACX,gBAAgB;IAChB,WAAW;IACX,QAAQ;CACT,CAAC;AAEF,SAAgB,yBAAyB,CACvC,KAAc;IAEd,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACxC,OAAO,CAAC,GAAG,yBAAyB,CAAC,CAAC;IACxC,CAAC;IAED,MAAM,SAAS,GAAG,KAAgC,CAAC;IACnD,OAAO,yBAAyB,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;QAChD,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;QACpC,OAAO,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;AACL,CAAC;AAEM,KAAK,UAAU,cAAc,CAClC,SAAyB,EACzB,WAAmB,8BAAsB;IAEzC,MAAM,IAAA,8BAAe,EAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;AAC7C,CAAC;AAEM,KAAK,UAAU,aAAa,CACjC,WAAmB,8BAAsB;IAEzC,IAAI,QAAgB,CAAC;IACrB,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,aAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAClD,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,MAAM,MAAM,GACV,KAAK,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACnE,IAAA,oCAAS,GAAE,CAAC,KAAK,CACf,6CAA6C,QAAQ,MAAM,MAAM,IAAI;YACnE,wEAAwE,CAC3E,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAA,oCAAS,GAAE,CAAC,KAAK,CACf,6CAA6C,QAAQ,sBAAsB,KAAK,KAAK;YACnF,qDAAqD,CACxD,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,aAAa,GAAG,yBAAyB,CAAC,MAAM,CAAC,CAAC;IACxD,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,IAAA,oCAAS,GAAE,CAAC,KAAK,CACf,6CAA6C,QAAQ,uCAAuC;YAC1F,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,wDAAwD,CACtF,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,MAAwB,CAAC;AAClC,CAAC;AAEM,KAAK,UAAU,mBAAmB,CACvC,WAAmB,8BAAsB;IAEzC,MAAM,aAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AACzC,CAAC"}
@@ -1 +1 @@
1
- export declare const version = "0.1.28";
1
+ export declare const version = "0.1.29";
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.version = void 0;
4
- exports.version = "0.1.28";
4
+ exports.version = "0.1.29";
5
5
  //# sourceMappingURL=version.js.map