@testomatio/reporter 2.3.7-beta.10-stack-artifacts → 2.3.7-beta.11-fix-vite

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/lib/bin/cli.js CHANGED
File without changes
File without changes
@@ -35,7 +35,7 @@ while (i < args.length) {
35
35
  newArgs[0] = 'start';
36
36
  }
37
37
  else if (arg === '--finish') {
38
- // Map --finish to finish command
38
+ // Map --finish to finish command
39
39
  newArgs[0] = 'finish';
40
40
  }
41
41
  else {
@@ -46,8 +46,8 @@ while (i < args.length) {
46
46
  }
47
47
  // Execute the main CLI with mapped arguments
48
48
  const child = (0, node_child_process_1.spawn)(process.execPath, [cliPath, ...newArgs], {
49
- stdio: 'inherit'
49
+ stdio: 'inherit',
50
50
  });
51
- child.on('exit', (code) => {
51
+ child.on('exit', code => {
52
52
  process.exit(code);
53
53
  });
File without changes
package/lib/client.js CHANGED
@@ -51,9 +51,7 @@ const node_url_1 = require("node:url");
51
51
  const uploader_js_1 = require("./uploader.js");
52
52
  const utils_js_1 = require("./utils/utils.js");
53
53
  const filesize_1 = require("filesize");
54
- const util_1 = require("util");
55
54
  const debug = (0, debug_1.default)('@testomatio/reporter:client');
56
- const stripColors = util_1.stripVTControlCharacters || ((str) => str?.replace(/\x1b\[[0-9;]*m/g, '') || '');
57
55
  // removed __dirname usage, because:
58
56
  // 1. replaced with ESM syntax (import.meta.url), but it throws an error on tsc compilation;
59
57
  // 2. got error "__dirname already defined" in compiles js code (cjs dir)
@@ -160,6 +158,17 @@ class Client {
160
158
  * @returns {Promise<PipeResult[]>}
161
159
  */
162
160
  async addTestRun(status, testData) {
161
+ if (!this.pipes || !this.pipes.length)
162
+ this.pipes = await (0, index_js_1.pipesFactory)(this.paramsForPipesFactory || {}, this.pipeStore);
163
+ // all pipes disabled, skipping
164
+ if (!this.pipes?.filter(p => p.isEnabled).length)
165
+ return [];
166
+ if (isTestShouldBeExculedFromReport(testData))
167
+ return [];
168
+ if (status === constants_js_1.STATUS.SKIPPED && process.env.TESTOMATIO_EXCLUDE_SKIPPED) {
169
+ debug('Skipping test from report', testData?.title);
170
+ return []; // do not log skipped tests
171
+ }
163
172
  if (!testData)
164
173
  testData = {
165
174
  title: 'Unknown test',
@@ -172,12 +181,9 @@ class Client {
172
181
  /**
173
182
  * @type {TestData}
174
183
  */
175
- const { rid, error = null, steps: originalSteps, title, suite_title, } = testData;
176
- const steps = originalSteps;
177
- const uploadedFiles = [];
178
- const stackArtifactsEnabled = (0, utils_js_1.transformEnvVarToBoolean)(process.env.TESTOMATIO_STACK_ARTIFACTS);
179
- const { time = 0, example = null, files = [], filesBuffers = [], code = null, file, suite_id, test_id, timestamp, links, manuallyAttachedArtifacts, overwrite, tags, } = testData;
184
+ const { rid, error = null, time = 0, example = null, files = [], filesBuffers = [], steps, code = null, title, file, suite_title, suite_id, test_id, timestamp, links, manuallyAttachedArtifacts, overwrite, tags, } = testData;
180
185
  let { message = '', meta = {} } = testData;
186
+ // stringify meta values and limit keys and values length to 255
181
187
  meta = Object.entries(meta)
182
188
  .filter(([, value]) => value !== null && value !== undefined)
183
189
  .reduce((acc, [key, value]) => {
@@ -185,36 +191,19 @@ class Client {
185
191
  acc[key] = value;
186
192
  return acc;
187
193
  }, {});
194
+ // Get links from storage using the test context
188
195
  const testContext = suite_title ? `${suite_title} ${title}` : title;
189
196
  let errorFormatted = '';
190
197
  if (error) {
191
198
  errorFormatted += this.formatError(error) || '';
192
199
  message = error?.message;
193
200
  }
194
- let fullLogs = this.formatLogs({ error: errorFormatted, steps, logs: testData.logs });
195
- if (stackArtifactsEnabled && status && (steps || testData.logs || error)) {
196
- const timestamp = +new Date;
197
- if (fullLogs && fullLogs.trim().length > 0) {
198
- uploadedFiles.push(this.uploader.uploadFileAsBuffer(Buffer.from(stripColors(fullLogs), 'utf8'), [this.runId, rid, `logs_${timestamp}.txt`]));
199
- }
200
- fullLogs = '';
201
- }
202
- if (!this.pipes || !this.pipes.length)
203
- this.pipes = await (0, index_js_1.pipesFactory)(this.paramsForPipesFactory || {}, this.pipeStore);
204
- if (!this.pipes?.filter(p => p.isEnabled).length) {
205
- if (uploadedFiles.length > 0) {
206
- await Promise.all(uploadedFiles);
207
- }
208
- return [];
209
- }
210
- if (isTestShouldBeExculedFromReport(testData))
211
- return [];
212
- if (status === constants_js_1.STATUS.SKIPPED && process.env.TESTOMATIO_EXCLUDE_SKIPPED) {
213
- debug('Skipping test from report', testData?.title);
214
- return [];
215
- }
201
+ // Attach logs
202
+ const fullLogs = this.formatLogs({ error: errorFormatted, steps, logs: testData.logs });
203
+ // add artifacts
216
204
  if (manuallyAttachedArtifacts?.length)
217
205
  files.push(...manuallyAttachedArtifacts);
206
+ const uploadedFiles = [];
218
207
  for (let f of files) {
219
208
  if (!f)
220
209
  continue; // f === null
@@ -296,7 +285,7 @@ class Client {
296
285
  const uploadedArtifacts = this.uploader.successfulUploads.map(file => ({
297
286
  relativePath: file.path.replace(process.cwd(), ''),
298
287
  link: file.link,
299
- sizePretty: file.size == null ? 'unknown' : (0, filesize_1.filesize)(file.size, { round: 0 }).toString(),
288
+ sizePretty: (0, filesize_1.filesize)(file.size, { round: 0 }).toString(),
300
289
  }));
301
290
  uploadedArtifacts.forEach(upload => {
302
291
  debug(`🟢Uploaded artifact`, `${upload.relativePath},`, 'size:', `${upload.sizePretty},`, 'link:', `${upload.link}`);
@@ -306,7 +295,7 @@ class Client {
306
295
  console.log(constants_js_1.APP_PREFIX, `🗄️ ${this.uploader.failedUploads.length} artifacts 🔴${picocolors_1.default.bold('failed')} to upload`);
307
296
  const failedUploads = this.uploader.failedUploads.map(file => ({
308
297
  relativePath: file.path.replace(process.cwd(), ''),
309
- sizePretty: file.size == null ? 'unknown' : (0, filesize_1.filesize)(file.size, { round: 0 }).toString(),
298
+ sizePretty: (0, filesize_1.filesize)(file.size, { round: 0 }).toString(),
310
299
  }));
311
300
  const pathPadding = Math.max(...failedUploads.map(upload => upload.relativePath.length)) + 1;
312
301
  failedUploads.forEach(upload => {
@@ -156,7 +156,7 @@ class TestomatioPipe {
156
156
  if (!this.isEnabled)
157
157
  return;
158
158
  if (this.batch.isEnabled && this.isEnabled)
159
- this.batch.intervalFunction = setInterval(this.#batchUpload, this.batch.intervalTime);
159
+ this.batch.intervalFunction = setInterval(() => this.#batchUpload(), this.batch.intervalTime);
160
160
  let buildUrl = process.env.BUILD_URL || process.env.CI_JOB_URL || process.env.CIRCLE_BUILD_URL;
161
161
  // GitHub Actions Url
162
162
  if (!buildUrl && process.env.GITHUB_RUN_ID) {
@@ -420,7 +420,7 @@ class TestomatioPipe {
420
420
  if (this.runUrl && this.proceed) {
421
421
  const notFinishedMessage = picocolors_1.default.yellow(picocolors_1.default.bold('Run was not finished because of $TESTOMATIO_PROCEED'));
422
422
  console.log(constants_js_1.APP_PREFIX, `📊 ${notFinishedMessage}. Report URL: ${picocolors_1.default.magenta(this.runUrl)}`);
423
- console.log(constants_js_1.APP_PREFIX, `🛬 Run to finish it: TESTOMATIO_RUN=${this.runId} npx start-test-run --finish`);
423
+ console.log(constants_js_1.APP_PREFIX, `🛬 Run to finish it: TESTOMATIO_RUN=${this.runId} npx @testomatio/reporter finish`);
424
424
  }
425
425
  if (this.hasUnmatchedTests) {
426
426
  console.log('');
package/lib/reporter.d.ts CHANGED
@@ -1,10 +1,3 @@
1
- export { Client };
2
- export const STATUS: {
3
- PASSED: string;
4
- FAILED: string;
5
- SKIPPED: string;
6
- FINISHED: string;
7
- };
8
1
  export const artifact: (data: string | {
9
2
  path: string;
10
3
  type: string;
@@ -87,7 +80,7 @@ export const label: (key: string, value?: string | null) => void;
87
80
  export const linkTest: (...testIds: string[]) => void;
88
81
  export const linkJira: (...jiraIds: string[]) => void;
89
82
  declare namespace _default {
90
- export let testomatioLogger: {
83
+ let testomatioLogger: {
91
84
  "__#13@#originalUserLogger": {
92
85
  assert(condition?: boolean, ...data: any[]): void;
93
86
  assert(value: any, message?: string, ...optionalParams: any[]): void;
@@ -155,13 +148,13 @@ declare namespace _default {
155
148
  }): void;
156
149
  prettyObjects: boolean;
157
150
  };
158
- export let artifact: (data: string | {
151
+ let artifact: (data: string | {
159
152
  path: string;
160
153
  type: string;
161
154
  name: string;
162
155
  }, context?: any) => void;
163
- export let log: (...args: any[]) => void;
164
- export let logger: {
156
+ let log: (...args: any[]) => void;
157
+ let logger: {
165
158
  "__#13@#originalUserLogger": {
166
159
  assert(condition?: boolean, ...data: any[]): void;
167
160
  assert(value: any, message?: string, ...optionalParams: any[]): void;
@@ -229,15 +222,13 @@ declare namespace _default {
229
222
  }): void;
230
223
  prettyObjects: boolean;
231
224
  };
232
- export let meta: (keyValue: {
225
+ let meta: (keyValue: {
233
226
  [key: string]: string;
234
227
  } | string, value?: string | null) => void;
235
- export let step: (message: string) => void;
236
- export let label: (key: string, value?: string | null) => void;
237
- export let linkTest: (...testIds: string[]) => void;
238
- export let linkJira: (...jiraIds: string[]) => void;
239
- export { Client as TestomatioClient };
240
- export { STATUS };
228
+ let step: (message: string) => void;
229
+ let label: (key: string, value?: string | null) => void;
230
+ let linkTest: (...testIds: string[]) => void;
231
+ let linkJira: (...jiraIds: string[]) => void;
241
232
  }
242
233
  export default _default;
243
234
  export type ArtifactFunction = typeof import("./reporter-functions.js").default.artifact;
@@ -246,4 +237,3 @@ export type LoggerService = typeof import("./services/index.js").services.logger
246
237
  export type MetaFunction = typeof import("./reporter-functions.js").default.keyValue;
247
238
  export type StepFunction = typeof import("./reporter-functions.js").default.step;
248
239
  export type LabelFunction = typeof import("./reporter-functions.js").default.label;
249
- import Client from './client.js';
package/lib/reporter.js CHANGED
@@ -1,48 +1,13 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
36
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
37
4
  };
38
5
  Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.linkJira = exports.linkTest = exports.label = exports.step = exports.meta = exports.logger = exports.log = exports.artifact = exports.STATUS = exports.Client = void 0;
40
- const client_js_1 = __importDefault(require("./client.js"));
41
- exports.Client = client_js_1.default;
42
- const TestomatioConstants = __importStar(require("./constants.js"));
6
+ exports.linkJira = exports.linkTest = exports.label = exports.step = exports.meta = exports.logger = exports.log = exports.artifact = void 0;
7
+ // import TestomatClient from './client.js';
8
+ // import * as TRConstants from './constants.js';
43
9
  const index_js_1 = require("./services/index.js");
44
10
  const reporter_functions_js_1 = __importDefault(require("./reporter-functions.js"));
45
- exports.STATUS = TestomatioConstants.STATUS;
46
11
  exports.artifact = reporter_functions_js_1.default.artifact;
47
12
  exports.log = reporter_functions_js_1.default.log;
48
13
  exports.logger = index_js_1.services.logger;
@@ -72,6 +37,6 @@ module.exports = {
72
37
  label: reporter_functions_js_1.default.label,
73
38
  linkTest: reporter_functions_js_1.default.linkTest,
74
39
  linkJira: reporter_functions_js_1.default.linkJira,
75
- TestomatioClient: client_js_1.default,
76
- STATUS: exports.STATUS,
40
+ // TestomatClient,
41
+ // TRConstants,
77
42
  };