@loadmill/executer 0.1.164 → 0.1.166
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/dist/ai-assertion/index.js +15 -53
- package/dist/ai-assertion/index.js.map +1 -1
- package/dist/ai-assertion/prompts.js +2 -2
- package/dist/ai-assertion/prompts.js.map +1 -1
- package/dist/asserter.js +9 -47
- package/dist/asserter.js.map +1 -1
- package/dist/block-request.d.ts +1 -1
- package/dist/block-request.js +12 -22
- package/dist/block-request.js.map +1 -1
- package/dist/cookies.d.ts +1 -1
- package/dist/cookies.js +6 -8
- package/dist/cookies.js.map +1 -1
- package/dist/env.d.ts +4 -0
- package/dist/env.js +8 -0
- package/dist/env.js.map +1 -0
- package/dist/errors.js +2 -16
- package/dist/errors.js.map +1 -1
- package/dist/extraction-combiner.js +5 -43
- package/dist/extraction-combiner.js.map +1 -1
- package/dist/failures.js +3 -13
- package/dist/failures.js.map +1 -1
- package/dist/grpc.js +15 -72
- package/dist/grpc.js.map +1 -1
- package/dist/iteration-stats.js +5 -7
- package/dist/iteration-stats.js.map +1 -1
- package/dist/mill-version.js +1 -1
- package/dist/mill-version.js.map +1 -1
- package/dist/parameter-pools.js +6 -44
- package/dist/parameter-pools.js.map +1 -1
- package/dist/performance.js +2 -4
- package/dist/performance.js.map +1 -1
- package/dist/post-script/post-script-executor.js +7 -25
- package/dist/post-script/post-script-executor.js.map +1 -1
- package/dist/post-sequence.js +17 -55
- package/dist/post-sequence.js.map +1 -1
- package/dist/redact-data.js +9 -11
- package/dist/redact-data.js.map +1 -1
- package/dist/request-sequence-result.js +2 -12
- package/dist/request-sequence-result.js.map +1 -1
- package/dist/res-keeper.d.ts +1 -1
- package/dist/res-keeper.js +3 -21
- package/dist/res-keeper.js.map +1 -1
- package/dist/sampler.js +13 -75
- package/dist/sampler.js.map +1 -1
- package/dist/sequence-executor-like.d.ts +4 -1
- package/dist/sequence.d.ts +3 -1
- package/dist/sequence.js +141 -204
- package/dist/sequence.js.map +1 -1
- package/dist/single-runner.d.ts +2 -0
- package/dist/single-runner.js +12 -81
- package/dist/single-runner.js.map +1 -1
- package/dist/step-handlers/code-step-handler.js +6 -41
- package/dist/step-handlers/code-step-handler.js.map +1 -1
- package/dist/step-handlers/extract-step-handler.js +6 -41
- package/dist/step-handlers/extract-step-handler.js.map +1 -1
- package/dist/step-handlers/playwright/constants.d.ts +4 -0
- package/dist/step-handlers/playwright/constants.js +15 -6
- package/dist/step-handlers/playwright/constants.js.map +1 -1
- package/dist/step-handlers/playwright/files-manager.d.ts +3 -0
- package/dist/step-handlers/playwright/files-manager.js +69 -34
- package/dist/step-handlers/playwright/files-manager.js.map +1 -1
- package/dist/step-handlers/playwright/index.d.ts +2 -1
- package/dist/step-handlers/playwright/index.js +16 -46
- package/dist/step-handlers/playwright/index.js.map +1 -1
- package/dist/step-handlers/playwright/transformer.d.ts +2 -1
- package/dist/step-handlers/playwright/transformer.js +9 -8
- package/dist/step-handlers/playwright/transformer.js.map +1 -1
- package/dist/step-handlers/playwright/types.d.ts +2 -0
- package/dist/step-handlers/playwright-step-handler.js +27 -65
- package/dist/step-handlers/playwright-step-handler.js.map +1 -1
- package/dist/step-handlers/request-step-handler.js +6 -41
- package/dist/step-handlers/request-step-handler.js.map +1 -1
- package/dist/step-handlers/wait-step-handler.js +11 -46
- package/dist/step-handlers/wait-step-handler.js.map +1 -1
- package/dist/step-handlers/web-socket-step-handler.js +18 -75
- package/dist/step-handlers/web-socket-step-handler.js.map +1 -1
- package/dist/test-run-event-emitter.js +2 -4
- package/dist/test-run-event-emitter.js.map +1 -1
- package/dist/types/playwright.d.ts +3 -0
- package/dist/types/playwright.js +3 -0
- package/dist/types/playwright.js.map +1 -0
- package/dist/utils.js +2 -20
- package/dist/utils.js.map +1 -1
- package/dist/ws.js +20 -58
- package/dist/ws.js.map +1 -1
- package/package.json +4 -3
|
@@ -1,31 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
-
}) : (function(o, m, k, k2) {
|
|
6
|
-
if (k2 === undefined) k2 = k;
|
|
7
|
-
o[k2] = m[k];
|
|
8
|
-
}));
|
|
9
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
-
}) : function(o, v) {
|
|
12
|
-
o["default"] = v;
|
|
13
|
-
});
|
|
14
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
-
if (mod && mod.__esModule) return mod;
|
|
16
|
-
var result = {};
|
|
17
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
-
__setModuleDefault(result, mod);
|
|
19
|
-
return result;
|
|
20
|
-
};
|
|
21
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
22
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
23
|
-
};
|
|
24
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
25
3
|
exports.PlaywrightFilesManager = void 0;
|
|
26
|
-
var
|
|
27
|
-
var
|
|
28
|
-
var
|
|
4
|
+
var tslib_1 = require("tslib");
|
|
5
|
+
var path = tslib_1.__importStar(require("path"));
|
|
6
|
+
var v4_1 = tslib_1.__importDefault(require("uuid/v4"));
|
|
7
|
+
var isEmpty_1 = tslib_1.__importDefault(require("lodash/isEmpty"));
|
|
8
|
+
var log_1 = tslib_1.__importDefault(require("@loadmill/universal/dist/log"));
|
|
29
9
|
var file_system_1 = require("@loadmill/core/dist/utils/file-system");
|
|
30
10
|
var constants_1 = require("./constants");
|
|
31
11
|
var PlaywrightFilesManager = /** @class */ (function () {
|
|
@@ -36,7 +16,7 @@ var PlaywrightFilesManager = /** @class */ (function () {
|
|
|
36
16
|
writable: true,
|
|
37
17
|
value: void 0
|
|
38
18
|
});
|
|
39
|
-
this.rootDir = path.join(constants_1.PLAYWRIGHT_FILES_DIR_PATH, v4_1.default());
|
|
19
|
+
this.rootDir = path.join(constants_1.PLAYWRIGHT_FILES_DIR_PATH, (0, v4_1.default)());
|
|
40
20
|
}
|
|
41
21
|
Object.defineProperty(PlaywrightFilesManager.prototype, "getRootDir", {
|
|
42
22
|
enumerable: false,
|
|
@@ -51,7 +31,7 @@ var PlaywrightFilesManager = /** @class */ (function () {
|
|
|
51
31
|
configurable: true,
|
|
52
32
|
writable: true,
|
|
53
33
|
value: function () {
|
|
54
|
-
file_system_1.deleteFolderFromDisk(this.rootDir);
|
|
34
|
+
(0, file_system_1.deleteFolderFromDisk)(this.rootDir);
|
|
55
35
|
}
|
|
56
36
|
});
|
|
57
37
|
Object.defineProperty(PlaywrightFilesManager.prototype, "getResultFilePath", {
|
|
@@ -67,7 +47,7 @@ var PlaywrightFilesManager = /** @class */ (function () {
|
|
|
67
47
|
configurable: true,
|
|
68
48
|
writable: true,
|
|
69
49
|
value: function () {
|
|
70
|
-
var content = file_system_1.readFileFromDisk(this.getResultFilePath());
|
|
50
|
+
var content = (0, file_system_1.readFileFromDisk)(this.getResultFilePath());
|
|
71
51
|
return content && JSON.parse(content);
|
|
72
52
|
}
|
|
73
53
|
});
|
|
@@ -84,7 +64,54 @@ var PlaywrightFilesManager = /** @class */ (function () {
|
|
|
84
64
|
configurable: true,
|
|
85
65
|
writable: true,
|
|
86
66
|
value: function () {
|
|
87
|
-
return file_system_1.readFileFromDisk(path.join(this.getResultHtmlDir(), constants_1.RESULT_HTML_FILE_NAME));
|
|
67
|
+
return (0, file_system_1.readFileFromDisk)(path.join(this.getResultHtmlDir(), constants_1.RESULT_HTML_FILE_NAME));
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
Object.defineProperty(PlaywrightFilesManager.prototype, "getResultHtmlAttachmentsDir", {
|
|
71
|
+
enumerable: false,
|
|
72
|
+
configurable: true,
|
|
73
|
+
writable: true,
|
|
74
|
+
value: function () {
|
|
75
|
+
return path.join(this.getResultHtmlDir(), constants_1.RESULT_HTML_ATTACHMENTS_DIR);
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
Object.defineProperty(PlaywrightFilesManager.prototype, "getHtmlReportAttachments", {
|
|
79
|
+
enumerable: false,
|
|
80
|
+
configurable: true,
|
|
81
|
+
writable: true,
|
|
82
|
+
value: function () {
|
|
83
|
+
var attachmentsDir = this.getResultHtmlAttachmentsDir();
|
|
84
|
+
var attachmentsFileNames = (0, file_system_1.readFolderFromDisk)(attachmentsDir) || [];
|
|
85
|
+
log_1.default.debug('Playwright step HTML report attachments', { attachmentsFileNames: attachmentsFileNames });
|
|
86
|
+
var validAttachmentsFileNames = attachmentsFileNames.filter(function (fileName) { return _isValidHtmlReportFileType(fileName); });
|
|
87
|
+
if ((0, isEmpty_1.default)(validAttachmentsFileNames)) {
|
|
88
|
+
return [];
|
|
89
|
+
}
|
|
90
|
+
var attachmentsTotalSize = 0;
|
|
91
|
+
var attachments = [];
|
|
92
|
+
for (var _i = 0, validAttachmentsFileNames_1 = validAttachmentsFileNames; _i < validAttachmentsFileNames_1.length; _i++) {
|
|
93
|
+
var fileName = validAttachmentsFileNames_1[_i];
|
|
94
|
+
var filePath = path.join(attachmentsDir, fileName);
|
|
95
|
+
var content = (0, file_system_1.readFileAsBufferFromDisk)(filePath);
|
|
96
|
+
if (!content) {
|
|
97
|
+
log_1.default.warn("Failed to read attachment file: ".concat(filePath));
|
|
98
|
+
continue;
|
|
99
|
+
}
|
|
100
|
+
var contentSize = content.length;
|
|
101
|
+
if (_isAttachmentsSizeLimitExceeded(attachmentsTotalSize, contentSize)) {
|
|
102
|
+
// TODO communicate better to the user- maybe create an image with a warning that will be displayed in the HTML report
|
|
103
|
+
log_1.default.warn('Attachmenet exceeds the maximum size for HTML report attachments and will not be included', {
|
|
104
|
+
fileName: fileName,
|
|
105
|
+
size: _formatSizeToMb(contentSize),
|
|
106
|
+
attachmentsTotalSize: _formatSizeToMb(attachmentsTotalSize),
|
|
107
|
+
maxSize: _formatSizeToMb(constants_1.MAX_ATTACHMENTS_SIZE_PER_STEP),
|
|
108
|
+
});
|
|
109
|
+
continue;
|
|
110
|
+
}
|
|
111
|
+
attachments.push({ fileName: fileName, content: content });
|
|
112
|
+
attachmentsTotalSize += contentSize;
|
|
113
|
+
}
|
|
114
|
+
return attachments;
|
|
88
115
|
}
|
|
89
116
|
});
|
|
90
117
|
Object.defineProperty(PlaywrightFilesManager.prototype, "getExtractedExecDataFilePath", {
|
|
@@ -100,7 +127,7 @@ var PlaywrightFilesManager = /** @class */ (function () {
|
|
|
100
127
|
configurable: true,
|
|
101
128
|
writable: true,
|
|
102
129
|
value: function () {
|
|
103
|
-
var content = file_system_1.readFileFromDisk(this.getExtractedExecDataFilePath());
|
|
130
|
+
var content = (0, file_system_1.readFileFromDisk)(this.getExtractedExecDataFilePath());
|
|
104
131
|
if (!content) {
|
|
105
132
|
throw new Error('Failed reading extracted execution data');
|
|
106
133
|
}
|
|
@@ -112,7 +139,7 @@ var PlaywrightFilesManager = /** @class */ (function () {
|
|
|
112
139
|
configurable: true,
|
|
113
140
|
writable: true,
|
|
114
141
|
value: function (step) {
|
|
115
|
-
var testFileName = "playwright-step."
|
|
142
|
+
var testFileName = "playwright-step.".concat(step.id, ".spec.ts");
|
|
116
143
|
return path.join(this.rootDir, constants_1.PLAYWRIGHT_TESTS_DIR, testFileName);
|
|
117
144
|
}
|
|
118
145
|
});
|
|
@@ -121,7 +148,7 @@ var PlaywrightFilesManager = /** @class */ (function () {
|
|
|
121
148
|
configurable: true,
|
|
122
149
|
writable: true,
|
|
123
150
|
value: function (step, content) {
|
|
124
|
-
file_system_1.writeFileToDisk(this.getTestFilePath(step), content);
|
|
151
|
+
(0, file_system_1.writeFileToDisk)(this.getTestFilePath(step), content);
|
|
125
152
|
}
|
|
126
153
|
});
|
|
127
154
|
Object.defineProperty(PlaywrightFilesManager.prototype, "getConfigFilePath", {
|
|
@@ -137,7 +164,7 @@ var PlaywrightFilesManager = /** @class */ (function () {
|
|
|
137
164
|
configurable: true,
|
|
138
165
|
writable: true,
|
|
139
166
|
value: function (content) {
|
|
140
|
-
file_system_1.writeFileToDisk(this.getConfigFilePath(), content);
|
|
167
|
+
(0, file_system_1.writeFileToDisk)(this.getConfigFilePath(), content);
|
|
141
168
|
}
|
|
142
169
|
});
|
|
143
170
|
Object.defineProperty(PlaywrightFilesManager.prototype, "waitForReportsGeneration", {
|
|
@@ -152,7 +179,7 @@ var PlaywrightFilesManager = /** @class */ (function () {
|
|
|
152
179
|
if (_this.getTestResult() && _this.getHtmlReport()) {
|
|
153
180
|
log_1.default.debug('Playwright step reports generated');
|
|
154
181
|
clearInterval(interval);
|
|
155
|
-
resolve();
|
|
182
|
+
resolve(void 0);
|
|
156
183
|
}
|
|
157
184
|
}, constants_1.REPORTS_GENERATION_INTERVAL_MS);
|
|
158
185
|
setTimeout(function () {
|
|
@@ -165,4 +192,12 @@ var PlaywrightFilesManager = /** @class */ (function () {
|
|
|
165
192
|
return PlaywrightFilesManager;
|
|
166
193
|
}());
|
|
167
194
|
exports.PlaywrightFilesManager = PlaywrightFilesManager;
|
|
195
|
+
var _isValidHtmlReportFileType = function (fileName) {
|
|
196
|
+
var ext = path.extname(fileName).toLowerCase();
|
|
197
|
+
return constants_1.validHtmlReportFileTypes.includes(ext);
|
|
198
|
+
};
|
|
199
|
+
var _isAttachmentsSizeLimitExceeded = function (totalSize, contentSize) {
|
|
200
|
+
return totalSize + contentSize > constants_1.MAX_ATTACHMENTS_SIZE_PER_STEP;
|
|
201
|
+
};
|
|
202
|
+
var _formatSizeToMb = function (size) { return (size / (1024 * 1024)).toFixed(2) + ' MB'; };
|
|
168
203
|
//# sourceMappingURL=files-manager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"files-manager.js","sourceRoot":"","sources":["../../../src/step-handlers/playwright/files-manager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"files-manager.js","sourceRoot":"","sources":["../../../src/step-handlers/playwright/files-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { PlaywrightStep } from '@loadmill/core/dist/playwright-step';
|
|
2
2
|
import { SequenceExecutorParameters } from '@loadmill/core/dist/parameters';
|
|
3
3
|
import { CookiesDetails } from '@loadmill/core/dist/conf/types';
|
|
4
|
+
import { PlaywrightOptions } from '../../types/playwright';
|
|
4
5
|
import { PlaywrightFilesManager } from './files-manager';
|
|
5
6
|
import { PlaywrightExecutionResult } from './types';
|
|
6
|
-
export declare const executePlaywrightStep: (step: PlaywrightStep, filesManager: PlaywrightFilesManager, params: SequenceExecutorParameters, cookies: CookiesDetails) => Promise<PlaywrightExecutionResult>;
|
|
7
|
+
export declare const executePlaywrightStep: (step: PlaywrightStep, filesManager: PlaywrightFilesManager, params: SequenceExecutorParameters, cookies: CookiesDetails, playwrightOptions: PlaywrightOptions) => Promise<PlaywrightExecutionResult>;
|
|
7
8
|
export declare const missingDepsErrMsg = "Playwright missing dependencies";
|
|
@@ -1,53 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
13
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
-
function step(op) {
|
|
16
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
-
while (_) try {
|
|
18
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
-
switch (op[0]) {
|
|
21
|
-
case 0: case 1: t = op; break;
|
|
22
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
-
default:
|
|
26
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
-
if (t[2]) _.ops.pop();
|
|
31
|
-
_.trys.pop(); continue;
|
|
32
|
-
}
|
|
33
|
-
op = body.call(thisArg, _);
|
|
34
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
-
}
|
|
37
|
-
};
|
|
38
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
3
|
exports.missingDepsErrMsg = exports.executePlaywrightStep = void 0;
|
|
4
|
+
var tslib_1 = require("tslib");
|
|
40
5
|
var child_process_1 = require("child_process");
|
|
6
|
+
var log_1 = tslib_1.__importDefault(require("@loadmill/universal/dist/log"));
|
|
41
7
|
var transformer_1 = require("./transformer");
|
|
42
|
-
var executePlaywrightStep = function (step, filesManager, params, cookies) { return __awaiter(void 0, void 0, void 0, function () {
|
|
8
|
+
var executePlaywrightStep = function (step, filesManager, params, cookies, playwrightOptions) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
43
9
|
var output;
|
|
44
|
-
return __generator(this, function (_a) {
|
|
10
|
+
return tslib_1.__generator(this, function (_a) {
|
|
45
11
|
switch (_a.label) {
|
|
46
12
|
case 0:
|
|
47
|
-
_generateAndSaveTestFiles(step, filesManager, params, cookies);
|
|
13
|
+
_generateAndSaveTestFiles(step, filesManager, params, cookies, playwrightOptions);
|
|
48
14
|
return [4 /*yield*/, _runPlaywrightTest(filesManager.getConfigFilePath(), filesManager.getRootDir())];
|
|
49
15
|
case 1:
|
|
50
16
|
output = (_a.sent()).output;
|
|
17
|
+
log_1.default.debug('Playwright step execution output:', output.join('\n'));
|
|
51
18
|
if (!_shouldWaitForReportsGeneration(output)) return [3 /*break*/, 3];
|
|
52
19
|
return [4 /*yield*/, filesManager.waitForReportsGeneration()];
|
|
53
20
|
case 2:
|
|
@@ -58,22 +25,23 @@ var executePlaywrightStep = function (step, filesManager, params, cookies) { ret
|
|
|
58
25
|
return [2 /*return*/, {
|
|
59
26
|
result: filesManager.getTestResult(),
|
|
60
27
|
htmlReport: filesManager.getHtmlReport(),
|
|
28
|
+
htmlReportAttachments: filesManager.getHtmlReportAttachments(),
|
|
61
29
|
}];
|
|
62
30
|
}
|
|
63
31
|
});
|
|
64
32
|
}); };
|
|
65
33
|
exports.executePlaywrightStep = executePlaywrightStep;
|
|
66
|
-
var _generateAndSaveTestFiles = function (step, filesManager, params, cookies) {
|
|
67
|
-
var configFile = transformer_1.generateConfigFile(filesManager);
|
|
34
|
+
var _generateAndSaveTestFiles = function (step, filesManager, params, cookies, playwrightOptions) {
|
|
35
|
+
var configFile = (0, transformer_1.generateConfigFile)(filesManager, playwrightOptions);
|
|
68
36
|
filesManager.writeConfigFile(configFile);
|
|
69
|
-
var testFile = transformer_1.generateTestFile(step, filesManager, params, cookies);
|
|
37
|
+
var testFile = (0, transformer_1.generateTestFile)(step, filesManager, params, cookies);
|
|
70
38
|
filesManager.writeTestFile(step, testFile);
|
|
71
39
|
};
|
|
72
|
-
var _runPlaywrightTest = function (configFilePath, executionDir) { return __awaiter(void 0, void 0, void 0, function () {
|
|
73
|
-
return __generator(this, function (_a) {
|
|
40
|
+
var _runPlaywrightTest = function (configFilePath, executionDir) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
41
|
+
return tslib_1.__generator(this, function (_a) {
|
|
74
42
|
return [2 /*return*/, new Promise(function (resolve, reject) {
|
|
75
43
|
var output = [];
|
|
76
|
-
var process = child_process_1.spawn('npx', ['@playwright/test', 'test', '--config', configFilePath], {
|
|
44
|
+
var process = (0, child_process_1.spawn)('npx', ['@playwright/test', 'test', '--config', configFilePath], {
|
|
77
45
|
stdio: ['ignore', 'pipe', 'pipe'],
|
|
78
46
|
cwd: executionDir,
|
|
79
47
|
});
|
|
@@ -84,9 +52,11 @@ var _runPlaywrightTest = function (configFilePath, executionDir) { return __awai
|
|
|
84
52
|
output.push(data.toString());
|
|
85
53
|
});
|
|
86
54
|
process.on('close', function (code) {
|
|
55
|
+
log_1.default.debug('Playwright test execution completed', { code: code });
|
|
87
56
|
resolve({ code: code, output: output });
|
|
88
57
|
});
|
|
89
58
|
process.on('error', function (error) {
|
|
59
|
+
log_1.default.debug('Error executing Playwright test', { error: error });
|
|
90
60
|
reject(error);
|
|
91
61
|
});
|
|
92
62
|
})];
|
|
@@ -114,7 +84,7 @@ var _isBrowsersNotInstalled = function (log) {
|
|
|
114
84
|
};
|
|
115
85
|
var browserNotInstalledErrMsg = 'Playwright couldn\'t find the required browser on this agent.';
|
|
116
86
|
var _throwMissingDepsError = function (message) {
|
|
117
|
-
throw new Error(exports.missingDepsErrMsg
|
|
87
|
+
throw new Error("".concat(exports.missingDepsErrMsg, "- ").concat(message));
|
|
118
88
|
};
|
|
119
89
|
exports.missingDepsErrMsg = 'Playwright missing dependencies';
|
|
120
90
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/step-handlers/playwright/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/step-handlers/playwright/index.ts"],"names":[],"mappings":";;;;AAAA,+CAAsC;AAEtC,6EAA+C;AAS/C,6CAAqE;AAE9D,IAAM,qBAAqB,GAAG,UACnC,IAAoB,EACpB,YAAoC,EACpC,MAAkC,EAClC,OAAuB,EACvB,iBAAoC;;;;;gBAEpC,yBAAyB,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAAC;gBAC/D,qBAAM,kBAAkB,CAAC,YAAY,CAAC,iBAAiB,EAAE,EAAE,YAAY,CAAC,UAAU,EAAE,CAAC,EAAA;;gBAAhG,MAAM,GAAK,CAAA,SAAqF,CAAA,OAA1F;gBACd,aAAG,CAAC,KAAK,CAAC,mCAAmC,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;qBAC9D,+BAA+B,CAAC,MAAM,CAAC,EAAvC,wBAAuC;gBACzC,qBAAM,YAAY,CAAC,wBAAwB,EAAE,EAAA;;gBAA7C,SAA6C,CAAC;;;gBAEhD,uBAAuB,CAAC,MAAM,CAAC,CAAC;gBAChC,sBAAO;wBACL,MAAM,EAAE,YAAY,CAAC,aAAa,EAAE;wBACpC,UAAU,EAAE,YAAY,CAAC,aAAa,EAAE;wBACxC,qBAAqB,EAAE,YAAY,CAAC,wBAAwB,EAAE;qBAC/D,EAAC;;;KACH,CAAC;AAnBW,QAAA,qBAAqB,yBAmBhC;AAEF,IAAM,yBAAyB,GAAG,UAChC,IAAoB,EACpB,YAAoC,EACpC,MAAkC,EAClC,OAAuB,EACvB,iBAAoC;IAEpC,IAAM,UAAU,GAAG,IAAA,gCAAkB,EAAC,YAAY,EAAE,iBAAiB,CAAC,CAAC;IACvE,YAAY,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;IAEzC,IAAM,QAAQ,GAAG,IAAA,8BAAgB,EAAC,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IACvE,YAAY,CAAC,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC7C,CAAC,CAAC;AAEF,IAAM,kBAAkB,GAAG,UACzB,cAAsB,EACtB,YAAoB;;QAEpB,sBAAO,IAAI,OAAO,CAAC,UAAC,OAAO,EAAE,MAAM;gBACjC,IAAM,MAAM,GAAa,EAAE,CAAC;gBAE5B,IAAM,OAAO,GAAG,IAAA,qBAAK,EAAC,KAAK,EAAE,CAAC,kBAAkB,EAAE,MAAM,EAAE,UAAU,EAAE,cAAc,CAAC,EAAE;oBACrF,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;oBACjC,GAAG,EAAE,YAAY;iBAClB,CAAC,CAAC;gBAEH,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,UAAC,IAAI;oBAC7B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAC/B,CAAC,CAAC,CAAC;gBAEH,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,UAAC,IAAI;oBAC7B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAC/B,CAAC,CAAC,CAAC;gBAEH,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,UAAC,IAAI;oBACvB,aAAG,CAAC,KAAK,CAAC,qCAAqC,EAAE,EAAE,IAAI,MAAA,EAAE,CAAC,CAAC;oBAC3D,OAAO,CAAC,EAAE,IAAI,MAAA,EAAE,MAAM,QAAA,EAAE,CAAC,CAAC;gBAC5B,CAAC,CAAC,CAAC;gBAEH,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,UAAC,KAAK;oBACxB,aAAG,CAAC,KAAK,CAAC,iCAAiC,EAAE,EAAE,KAAK,OAAA,EAAE,CAAC,CAAC;oBACxD,MAAM,CAAC,KAAK,CAAC,CAAC;gBAChB,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,EAAC;;KACJ,CAAC;AAEF,IAAM,+BAA+B,GAAG,UAAC,MAAgB;IACvD,OAAA,CAAC,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC;AAAvC,CAAuC,CAAC;AAE1C,IAAM,uBAAuB,GAAG,UAAC,MAAgB;IAC/C,MAAM,CAAC,OAAO,CAAC,UAAA,GAAG;QAChB,IAAI,yBAAyB,CAAC,GAAG,CAAC,EAAE;YAClC,sBAAsB,CAAC,4BAA4B,CAAC,CAAC;SACtD;aAAM,IAAI,uBAAuB,CAAC,GAAG,CAAC,EAAE;YACvC,sBAAsB,CAAC,yBAAyB,CAAC,CAAC;SACnD;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,IAAM,yBAAyB,GAAG,UAAC,GAAW;IAC5C,OAAA,GAAG,CAAC,QAAQ,CAAC,yCAAyC,CAAC;AAAvD,CAAuD,CAAC;AAE1D,IAAM,4BAA4B,GAAG,4CAA4C,CAAC;AAElF,IAAM,uBAAuB,GAAG,UAAC,GAAW;IAC1C,OAAA,GAAG,CAAC,QAAQ,CAAC,sDAAsD,CAAC;AAApE,CAAoE,CAAC;AAEvE,IAAM,yBAAyB,GAAG,+DAA+D,CAAC;AAElG,IAAM,sBAAsB,GAAG,UAAC,OAAe;IAC7C,MAAM,IAAI,KAAK,CAAC,UAAG,yBAAiB,eAAK,OAAO,CAAE,CAAC,CAAC;AACtD,CAAC,CAAC;AAEW,QAAA,iBAAiB,GAAG,iCAAiC,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { PlaywrightStep } from '@loadmill/core/dist/playwright-step';
|
|
2
2
|
import { SequenceExecutorParameters } from '@loadmill/core/dist/parameters';
|
|
3
3
|
import { CookiesDetails } from '@loadmill/core/dist/conf/types';
|
|
4
|
+
import { PlaywrightOptions } from '../../types/playwright';
|
|
4
5
|
import { PlaywrightFilesManager } from './files-manager';
|
|
5
6
|
export declare const generateTestFile: ({ description, postScript: userCode }: PlaywrightStep, filesManager: PlaywrightFilesManager, params: SequenceExecutorParameters, cookies: CookiesDetails) => string;
|
|
6
|
-
export declare const generateConfigFile: (filesManager: PlaywrightFilesManager) => string;
|
|
7
|
+
export declare const generateConfigFile: (filesManager: PlaywrightFilesManager, playwrightOptions: PlaywrightOptions) => string;
|
|
@@ -4,9 +4,10 @@ exports.generateConfigFile = exports.generateTestFile = void 0;
|
|
|
4
4
|
var constants_1 = require("@loadmill/universal/dist/ast/parser/constants");
|
|
5
5
|
var parameters_1 = require("@loadmill/core/dist/parameters");
|
|
6
6
|
var declared_parameters_in_code_1 = require("@loadmill/core/dist/parameters/declared-parameters/declared-parameters-in-code");
|
|
7
|
+
var constants_2 = require("./constants");
|
|
7
8
|
var generateTestFile = function (_a, filesManager, params, cookies) {
|
|
8
9
|
var description = _a.description, userCode = _a.postScript;
|
|
9
|
-
return "\n import fs from 'fs';\n import { test, expect } from '@playwright/test';\n\n "
|
|
10
|
+
return "\n import fs from 'fs';\n import { test, expect } from '@playwright/test';\n\n ".concat(_declareParams(params), "\n\n test('").concat(description || 'Playwright Step', "', async ({ page, context }, testInfo) => {\n ").concat(_injectCookies(cookies), "\n\n ").concat(userCode, "\n\n ").concat(_generateResolvedParams(params, (0, declared_parameters_in_code_1.getDeclaredParametersFromCode)(userCode, constants_1.PLAYWRIGHT_PARSE_OPTIONS)), "\n ").concat(_saveExtractedExecDataToDisk(filesManager), "\n });\n");
|
|
10
11
|
};
|
|
11
12
|
exports.generateTestFile = generateTestFile;
|
|
12
13
|
var _declareParams = function (params) {
|
|
@@ -17,14 +18,14 @@ var _declareParams = function (params) {
|
|
|
17
18
|
})
|
|
18
19
|
.map(function (_a) {
|
|
19
20
|
var key = _a[0], value = _a[1];
|
|
20
|
-
return (parameters_1.isBuiltInParamName(key) ? 'const' : 'let'
|
|
21
|
+
return "".concat((0, parameters_1.isBuiltInParamName)(key) ? 'const' : 'let', " ").concat(key, " = ").concat(JSON.stringify(value), ";");
|
|
21
22
|
})
|
|
22
23
|
.join('\n');
|
|
23
24
|
};
|
|
24
25
|
var RESERVED_KEYWORDS = ['test', 'expect', 'page', 'context', 'return'];
|
|
25
26
|
var _isReservedParam = function (paramName) { return RESERVED_KEYWORDS.includes(paramName); };
|
|
26
27
|
var _injectCookies = function (cookies) {
|
|
27
|
-
return "await context.addCookies("
|
|
28
|
+
return "await context.addCookies(".concat(_formatCookies(cookies), ");");
|
|
28
29
|
};
|
|
29
30
|
var _formatCookies = function (cookies) {
|
|
30
31
|
var existingCookies = [];
|
|
@@ -41,20 +42,20 @@ var _formatCookies = function (cookies) {
|
|
|
41
42
|
return JSON.stringify(existingCookies);
|
|
42
43
|
};
|
|
43
44
|
var paramsVariableName = '__loadmill_params_to_write';
|
|
44
|
-
var _generateResolvedParams = function (params, declaredVariables) { return "\n const "
|
|
45
|
+
var _generateResolvedParams = function (params, declaredVariables) { return "\n const ".concat(paramsVariableName, " = {};\n ").concat(_appendParams(params), "\n ").concat(_appendDeclaredVariables(declaredVariables), "\n"); };
|
|
45
46
|
var _appendParams = function (params) {
|
|
46
|
-
return Object.keys(params).map(function (key) { return paramsVariableName
|
|
47
|
+
return Object.keys(params).map(function (key) { return "".concat(paramsVariableName, ".").concat(key, " = ").concat(key, ";"); }).join('\n');
|
|
47
48
|
};
|
|
48
49
|
var _appendDeclaredVariables = function (declaredVariables) {
|
|
49
50
|
return declaredVariables.map(function (_a) {
|
|
50
51
|
var name = _a.name;
|
|
51
|
-
return paramsVariableName
|
|
52
|
+
return "".concat(paramsVariableName, ".").concat(name, " = ").concat(name, ";");
|
|
52
53
|
}).join('\n');
|
|
53
54
|
};
|
|
54
55
|
var _saveExtractedExecDataToDisk = function (filesManager) {
|
|
55
|
-
return "fs.writeFileSync('"
|
|
56
|
+
return "fs.writeFileSync('".concat(filesManager.getExtractedExecDataFilePath(), "', JSON.stringify({ params: ").concat(paramsVariableName, ", cookies: ").concat(_getCookies(), " }));");
|
|
56
57
|
};
|
|
57
58
|
var _getCookies = function () { return 'await context.cookies()'; };
|
|
58
|
-
var generateConfigFile = function (filesManager) { return "\n import { defineConfig, devices } from '@playwright/test';\n\n export default defineConfig({\n reporter: [\n ['json', { outputFile: '"
|
|
59
|
+
var generateConfigFile = function (filesManager, playwrightOptions) { return "\n import { defineConfig, devices } from '@playwright/test';\n\n export default defineConfig({\n reporter: [\n ['json', { outputFile: '".concat(filesManager.getResultFilePath(), "' }],\n ['html', {\n outputFolder: '").concat(filesManager.getResultHtmlDir(), "',\n open: 'never',\n attachmentsBaseURL: '").concat(constants_2.playwrightAttachmentsPath, "',\n }],\n ],\n use: {\n screenshot: '").concat(playwrightOptions.takeScreenshotPerTest ? 'on' : 'off', "',\n video: 'retain-on-failure',\n },\n projects: [\n {\n name: 'chromium',\n use: { ...devices['Desktop Chrome'] },\n },\n ],\n });\n"); };
|
|
59
60
|
exports.generateConfigFile = generateConfigFile;
|
|
60
61
|
//# sourceMappingURL=transformer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transformer.js","sourceRoot":"","sources":["../../../src/step-handlers/playwright/transformer.ts"],"names":[],"mappings":";;;AAGA,2EAAyF;AAEzF,6DAAgG;AAChG,8HAA+H;
|
|
1
|
+
{"version":3,"file":"transformer.js","sourceRoot":"","sources":["../../../src/step-handlers/playwright/transformer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { SequenceExecutorParameters } from '@loadmill/core/dist/parameters';
|
|
2
|
+
import { PlaywrightHTMLReportAttachment } from '@loadmill/core/dist/playwright-step/types';
|
|
2
3
|
import { Cookie } from '@playwright/test';
|
|
3
4
|
import { JSONReport } from '@playwright/test/reporter';
|
|
4
5
|
export declare type PlaywrightExecutionResult = {
|
|
5
6
|
result?: JSONReport;
|
|
6
7
|
htmlReport?: string;
|
|
8
|
+
htmlReportAttachments: PlaywrightHTMLReportAttachment[];
|
|
7
9
|
};
|
|
8
10
|
export declare type ExtractedExecData = {
|
|
9
11
|
params: SequenceExecutorParameters;
|
|
@@ -1,47 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
13
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
-
function step(op) {
|
|
16
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
-
while (_) try {
|
|
18
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
-
switch (op[0]) {
|
|
21
|
-
case 0: case 1: t = op; break;
|
|
22
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
-
default:
|
|
26
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
-
if (t[2]) _.ops.pop();
|
|
31
|
-
_.trys.pop(); continue;
|
|
32
|
-
}
|
|
33
|
-
op = body.call(thisArg, _);
|
|
34
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
-
}
|
|
37
|
-
};
|
|
38
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
39
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
40
|
-
};
|
|
41
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
3
|
exports.PlaywrightStepHandler = void 0;
|
|
43
|
-
var
|
|
44
|
-
var
|
|
4
|
+
var tslib_1 = require("tslib");
|
|
5
|
+
var strip_ansi_1 = tslib_1.__importDefault(require("strip-ansi"));
|
|
6
|
+
var log_1 = tslib_1.__importDefault(require("@loadmill/universal/dist/log"));
|
|
45
7
|
var type_guards_1 = require("@loadmill/core/dist/step/type-guards");
|
|
46
8
|
var performance_1 = require("../performance");
|
|
47
9
|
var cookies_1 = require("../cookies");
|
|
@@ -69,7 +31,7 @@ var PlaywrightStepHandler = /** @class */ (function () {
|
|
|
69
31
|
configurable: true,
|
|
70
32
|
writable: true,
|
|
71
33
|
value: function (step) {
|
|
72
|
-
return type_guards_1.isPlaywrightStep(step);
|
|
34
|
+
return (0, type_guards_1.isPlaywrightStep)(step);
|
|
73
35
|
}
|
|
74
36
|
});
|
|
75
37
|
Object.defineProperty(PlaywrightStepHandler.prototype, "execute", {
|
|
@@ -77,31 +39,31 @@ var PlaywrightStepHandler = /** @class */ (function () {
|
|
|
77
39
|
configurable: true,
|
|
78
40
|
writable: true,
|
|
79
41
|
value: function (playwrightStep, stepIndex) {
|
|
80
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
81
|
-
var requestStartTime, beforeTime,
|
|
82
|
-
return __generator(this, function (
|
|
83
|
-
switch (
|
|
42
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
43
|
+
var requestStartTime, beforeTime, _a, result, htmlReport, htmlReportAttachments, errMsg, _b, params, cookies, err_1;
|
|
44
|
+
return tslib_1.__generator(this, function (_c) {
|
|
45
|
+
switch (_c.label) {
|
|
84
46
|
case 0:
|
|
85
|
-
|
|
47
|
+
_c.trys.push([0, 2, 3, 4]);
|
|
86
48
|
requestStartTime = Date.now();
|
|
87
49
|
beforeTime = performance_1.isPerformance ? performance.now() : requestStartTime;
|
|
88
|
-
return [4 /*yield*/, playwright_1.executePlaywrightStep(playwrightStep, this.fileManager, this.context.parameters, this.context.getCurrentCookies())];
|
|
50
|
+
return [4 /*yield*/, (0, playwright_1.executePlaywrightStep)(playwrightStep, this.fileManager, this.context.parameters, this.context.getCurrentCookies(), this.context.playwrightOptions)];
|
|
89
51
|
case 1:
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
this.context.saveStdout(stepIndex, _getLogs(
|
|
93
|
-
errMsg = _getErrMsg(
|
|
52
|
+
_a = _c.sent(), result = _a.result, htmlReport = _a.htmlReport, htmlReportAttachments = _a.htmlReportAttachments;
|
|
53
|
+
htmlReport && this.context.setHtmlReport(stepIndex, htmlReport, htmlReportAttachments);
|
|
54
|
+
this.context.saveStdout(stepIndex, _getLogs(result));
|
|
55
|
+
errMsg = _getErrMsg(result);
|
|
94
56
|
if (errMsg) {
|
|
95
57
|
this.context.setPostParameters(stepIndex);
|
|
96
58
|
throw new errors_1.RequestFailuresError(errMsg);
|
|
97
59
|
}
|
|
98
|
-
|
|
60
|
+
_b = this.fileManager.getExtractedExecData(), params = _b.params, cookies = _b.cookies;
|
|
99
61
|
this.context.assignParameters(params);
|
|
100
62
|
this.context.setCookies(_formatCookies(cookies));
|
|
101
63
|
this.context.setTimeParams(requestStartTime, beforeTime);
|
|
102
64
|
return [2 /*return*/, {}];
|
|
103
65
|
case 2:
|
|
104
|
-
err_1 =
|
|
66
|
+
err_1 = _c.sent();
|
|
105
67
|
if (!(err_1 instanceof errors_1.RequestFailuresError)) {
|
|
106
68
|
log_1.default.error('Error executing Playwright step:', err_1);
|
|
107
69
|
}
|
|
@@ -121,8 +83,8 @@ var PlaywrightStepHandler = /** @class */ (function () {
|
|
|
121
83
|
configurable: true,
|
|
122
84
|
writable: true,
|
|
123
85
|
value: function (_step, index, _res) {
|
|
124
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
125
|
-
return __generator(this, function (_a) {
|
|
86
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
87
|
+
return tslib_1.__generator(this, function (_a) {
|
|
126
88
|
this.context.setPostParameters(index);
|
|
127
89
|
return [2 /*return*/, {}];
|
|
128
90
|
});
|
|
@@ -142,21 +104,21 @@ var _formatCookies = function (cookies) {
|
|
|
142
104
|
domain: domain,
|
|
143
105
|
path: path,
|
|
144
106
|
};
|
|
145
|
-
cookies_1.appendCookie(cookiesToSend, cookieDetails);
|
|
107
|
+
(0, cookies_1.appendCookie)(cookiesToSend, cookieDetails);
|
|
146
108
|
});
|
|
147
109
|
return cookiesToSend;
|
|
148
110
|
};
|
|
149
|
-
var _getErrMsg = function (
|
|
150
|
-
var _a, _b, _c, _d, _e, _f
|
|
151
|
-
var errMsg = ((
|
|
152
|
-
((
|
|
111
|
+
var _getErrMsg = function (result) {
|
|
112
|
+
var _a, _b, _c, _d, _e, _f;
|
|
113
|
+
var errMsg = ((_e = (_d = (_c = (_b = (_a = result === null || result === void 0 ? void 0 : result.suites[0]) === null || _a === void 0 ? void 0 : _a.specs[0]) === null || _b === void 0 ? void 0 : _b.tests[0]) === null || _c === void 0 ? void 0 : _c.results[0]) === null || _d === void 0 ? void 0 : _d.error) === null || _e === void 0 ? void 0 : _e.message) ||
|
|
114
|
+
((_f = result === null || result === void 0 ? void 0 : result.errors[0]) === null || _f === void 0 ? void 0 : _f.message);
|
|
153
115
|
if (errMsg) {
|
|
154
|
-
return strip_ansi_1.default(errMsg);
|
|
116
|
+
return (0, strip_ansi_1.default)(errMsg);
|
|
155
117
|
}
|
|
156
118
|
};
|
|
157
|
-
var _getLogs = function (
|
|
158
|
-
var _a, _b, _c, _d
|
|
159
|
-
return ((
|
|
119
|
+
var _getLogs = function (result) {
|
|
120
|
+
var _a, _b, _c, _d;
|
|
121
|
+
return ((_d = (_c = (_b = (_a = result === null || result === void 0 ? void 0 : result.suites[0]) === null || _a === void 0 ? void 0 : _a.specs[0]) === null || _b === void 0 ? void 0 : _b.tests[0]) === null || _c === void 0 ? void 0 : _c.results[0]) === null || _d === void 0 ? void 0 : _d.stdout.map(function (log) { return (0, strip_ansi_1.default)('text' in log ? log.text : log.buffer.toString()); })) || [];
|
|
160
122
|
};
|
|
161
123
|
var _handleMissingDepsError = function (err) {
|
|
162
124
|
if (err.message.startsWith(playwright_1.missingDepsErrMsg)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"playwright-step-handler.js","sourceRoot":"","sources":["../../src/step-handlers/playwright-step-handler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"playwright-step-handler.js","sourceRoot":"","sources":["../../src/step-handlers/playwright-step-handler.ts"],"names":[],"mappings":"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"}
|