automation_model 1.0.435-dev → 1.0.435

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/README.md +130 -0
  2. package/lib/api.d.ts +43 -1
  3. package/lib/api.js +241 -41
  4. package/lib/api.js.map +1 -1
  5. package/lib/auto_page.d.ts +5 -2
  6. package/lib/auto_page.js +177 -46
  7. package/lib/auto_page.js.map +1 -1
  8. package/lib/browser_manager.d.ts +7 -3
  9. package/lib/browser_manager.js +158 -51
  10. package/lib/browser_manager.js.map +1 -1
  11. package/lib/bruno.d.ts +2 -0
  12. package/lib/bruno.js +374 -0
  13. package/lib/bruno.js.map +1 -0
  14. package/lib/command_common.d.ts +6 -0
  15. package/lib/command_common.js +198 -0
  16. package/lib/command_common.js.map +1 -0
  17. package/lib/environment.d.ts +3 -0
  18. package/lib/environment.js +5 -2
  19. package/lib/environment.js.map +1 -1
  20. package/lib/error-messages.d.ts +6 -0
  21. package/lib/error-messages.js +206 -0
  22. package/lib/error-messages.js.map +1 -0
  23. package/lib/generation_scripts.d.ts +4 -0
  24. package/lib/generation_scripts.js +2 -0
  25. package/lib/generation_scripts.js.map +1 -0
  26. package/lib/index.d.ts +2 -0
  27. package/lib/index.js +2 -0
  28. package/lib/index.js.map +1 -1
  29. package/lib/init_browser.d.ts +5 -2
  30. package/lib/init_browser.js +124 -7
  31. package/lib/init_browser.js.map +1 -1
  32. package/lib/locate_element.d.ts +7 -0
  33. package/lib/locate_element.js +215 -0
  34. package/lib/locate_element.js.map +1 -0
  35. package/lib/locator.d.ts +36 -0
  36. package/lib/locator.js +165 -0
  37. package/lib/locator.js.map +1 -1
  38. package/lib/locator_log.d.ts +26 -0
  39. package/lib/locator_log.js +69 -0
  40. package/lib/locator_log.js.map +1 -0
  41. package/lib/network.d.ts +3 -0
  42. package/lib/network.js +183 -0
  43. package/lib/network.js.map +1 -0
  44. package/lib/scripts/axe.mini.js +12 -0
  45. package/lib/stable_browser.d.ts +103 -36
  46. package/lib/stable_browser.js +1767 -1246
  47. package/lib/stable_browser.js.map +1 -1
  48. package/lib/table.d.ts +13 -0
  49. package/lib/table.js +187 -0
  50. package/lib/table.js.map +1 -0
  51. package/lib/table_helper.d.ts +19 -0
  52. package/lib/table_helper.js +116 -0
  53. package/lib/table_helper.js.map +1 -0
  54. package/lib/test_context.d.ts +6 -0
  55. package/lib/test_context.js +14 -10
  56. package/lib/test_context.js.map +1 -1
  57. package/lib/utils.d.ts +22 -2
  58. package/lib/utils.js +669 -11
  59. package/lib/utils.js.map +1 -1
  60. package/package.json +14 -8
@@ -1 +1 @@
1
- {"version":3,"file":"browser_manager.js","sourceRoot":"","sources":["../../src/browser_manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"browser_manager.js","sourceRoot":"","sources":["../../src/browser_manager.ts"],"names":[],"mappings":"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"}
package/lib/bruno.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export declare function loadBrunoParams(context: any, environmentName: any): Promise<void>;
2
+ export declare function executeBrunoRequest(requestName: string, options: any, context: any, world: any): Promise<any[] | undefined>;
package/lib/bruno.js ADDED
@@ -0,0 +1,374 @@
1
+ import path from "path";
2
+ import fs from "fs";
3
+ import { spawn } from "child_process";
4
+ import { _commandError, _commandFinally, _preCommand } from "./command_common.js";
5
+ import { Types } from "./stable_browser.js";
6
+ //@ts-ignore
7
+ import { bruToEnvJsonV2 } from "@usebruno/lang";
8
+ import objectPath from "object-path";
9
+ import { replaceWithLocalTestData } from "./utils.js";
10
+ export async function loadBrunoParams(context, environmentName) {
11
+ // check if bruno/environment folder exists
12
+ // if exists find an environment that matches the current environment
13
+ const brunoEnvironmentsFolder = path.join(process.cwd(), "bruno", "environments");
14
+ if (!fs.existsSync(brunoEnvironmentsFolder)) {
15
+ return;
16
+ }
17
+ const envFiles = fs.readdirSync(brunoEnvironmentsFolder);
18
+ for (const envFile of envFiles) {
19
+ if (envFile.endsWith(".bru")) {
20
+ //rename it to end with .bruEnv
21
+ fs.renameSync(path.join(brunoEnvironmentsFolder, envFile), path.join(brunoEnvironmentsFolder, envFile.replace(".bru", ".bruEnv")));
22
+ }
23
+ }
24
+ const envFile = path.join(brunoEnvironmentsFolder, `${environmentName}.bruEnv`);
25
+ if (!fs.existsSync(envFile)) {
26
+ return;
27
+ }
28
+ const envFileContent = fs.readFileSync(envFile, "utf-8");
29
+ try {
30
+ const envJson = bruToEnvJsonV2(envFileContent);
31
+ if (!envJson) {
32
+ return;
33
+ }
34
+ const variables = envJson.variables;
35
+ for (const variable of variables) {
36
+ if (variable.enabled && variable.value) {
37
+ context.web.setTestData({ [variable.name]: variable.value }, context.web);
38
+ }
39
+ }
40
+ }
41
+ catch (e) {
42
+ console.error("Error parsing Bruno environment file", e);
43
+ }
44
+ }
45
+ export async function executeBrunoRequest(requestName, options, context, world) {
46
+ if (!options) {
47
+ options = {};
48
+ }
49
+ const state = {
50
+ locate: false,
51
+ scroll: false,
52
+ screenshot: false,
53
+ highlight: false,
54
+ throwError: true,
55
+ operation: "bruno",
56
+ text: "bruno " + requestName,
57
+ _text: "bruno " + requestName,
58
+ options: options,
59
+ type: Types.BRUNO,
60
+ world: world,
61
+ };
62
+ await _preCommand(state, context.web);
63
+ const filesToDelete = [];
64
+ try {
65
+ let brunoFolder = options.brunoFolder || path.join(process.cwd(), "bruno");
66
+ if (!brunoFolder) {
67
+ throw new Error("brunoFolder is not defined, place your bruno folder in the current working directory.");
68
+ }
69
+ // generate a temporary folder .tmp under the project root
70
+ const resultFolder = path.join(process.cwd(), ".tmp");
71
+ if (!fs.existsSync(resultFolder)) {
72
+ fs.mkdirSync(resultFolder);
73
+ }
74
+ const runtimeFolder = process.cwd();
75
+ // link node_modules to the runtime folder
76
+ //const nodeModulesFolder = path.join(process.cwd(), "node_modules");
77
+ // if (fs.existsSync(nodeModulesFolder)) {
78
+ // // check if the node_modules folder exists
79
+ // const runtimeNodeModulesFolder = path.join(runtimeFolder, "node_modules");
80
+ // if (!fs.existsSync(runtimeNodeModulesFolder)) {
81
+ // // create a symbolic link to the node_modules folder
82
+ // fs.symlinkSync(nodeModulesFolder, runtimeNodeModulesFolder, "dir");
83
+ // }
84
+ // }
85
+ // identify the bruno file
86
+ const brunoFile = path.join(brunoFolder, `${requestName}.bru`);
87
+ // check if the bruno file exists
88
+ if (!fs.existsSync(brunoFile)) {
89
+ throw new Error(`Bruno file not found: ${brunoFile}`);
90
+ }
91
+ const brunoConfigFile = path.join(brunoFolder, "bruno.json");
92
+ let brunoConfig = {
93
+ version: "1",
94
+ name: "blinq",
95
+ type: "collection",
96
+ ignore: ["node_modules", ".git"],
97
+ };
98
+ // check if the bruno config file exists and copy it to the runtime folder
99
+ if (fs.existsSync(brunoConfigFile)) {
100
+ // read the bruno config file
101
+ brunoConfig = JSON.parse(fs.readFileSync(brunoConfigFile, "utf-8"));
102
+ if (!brunoConfig.scripts) {
103
+ brunoConfig.scripts = {
104
+ filesystemAccess: {
105
+ allow: true,
106
+ },
107
+ };
108
+ }
109
+ }
110
+ const brunoConfigFileName = path.join(runtimeFolder, "bruno.json");
111
+ const brunoConfigFileBackup = path.join(resultFolder, "bruno.json");
112
+ filesToDelete.push(brunoConfigFileName);
113
+ fs.writeFileSync(brunoConfigFileName, JSON.stringify(brunoConfig, null, 2));
114
+ fs.writeFileSync(brunoConfigFileBackup, JSON.stringify(brunoConfig, null, 2));
115
+ let expectRuntime = false;
116
+ // read the bruno file
117
+ let brunoFileContent = fs.readFileSync(brunoFile, "utf-8");
118
+ // populate runtime variables
119
+ //brunoFileContent = await context.web._replaceWithLocalData(brunoFileContent, world);
120
+ brunoFileContent = await replaceWithLocalTestData(brunoFileContent, world, true, true, context, context.web, false);
121
+ // inject code to extract runtime variables
122
+ // first find the script:post-response
123
+ const scriptPostResponse = brunoFileContent.indexOf("script:post-response {");
124
+ if (scriptPostResponse !== -1) {
125
+ // need to search a new line follow by }
126
+ // find the end of the script
127
+ const scriptEnd = brunoFileContent.indexOf("\n}", scriptPostResponse);
128
+ // extract the script
129
+ const script = brunoFileContent.substring(scriptPostResponse, scriptEnd + 2);
130
+ // extract all the variables key names: bru.setVar("key", value)
131
+ const regex = /bru\.setVar\("([^"]+)",/g;
132
+ const variables = [];
133
+ let match;
134
+ while ((match = regex.exec(script)) !== null) {
135
+ // check if the variable is already in the list
136
+ if (!variables.includes(match[1])) {
137
+ variables.push(match[1]);
138
+ }
139
+ }
140
+ // check if the variables are not empty
141
+ if (variables.length > 0) {
142
+ expectRuntime = true;
143
+ let scriptVariables = "const runtimeVariables = {};\n";
144
+ // iterate over the variables and create a script to extract them
145
+ for (const variable of variables) {
146
+ scriptVariables += ` runtimeVariables["${variable}"] = bru.getVar("${variable}");\n`;
147
+ }
148
+ const fsRqureExists = script.indexOf("fs = require('fs');") !== -1;
149
+ // check if the variable is not empty
150
+ // replace the script with the modified one
151
+ brunoFileContent = brunoFileContent.replace(script, `script:post-response {
152
+ ${fsRqureExists ? "" : "const fs = require('fs')"};
153
+ // inject code to extract runtime variables
154
+ ${script.substring(script.indexOf("{") + 1, script.lastIndexOf("}"))}
155
+ // write the runtime variables to a file
156
+ ${scriptVariables}
157
+ fs.writeFileSync("${path.join(runtimeFolder, "runtime.json")}", JSON.stringify(runtimeVariables, null, 2));
158
+ }`);
159
+ }
160
+ }
161
+ // write the bruno file to the runtime folder
162
+ const executeBruFile = path.join(runtimeFolder, `${requestName}.bru`);
163
+ const executeBruFileBackup = path.join(resultFolder, `${requestName}.bru`);
164
+ filesToDelete.push(executeBruFile);
165
+ fs.writeFileSync(executeBruFile, brunoFileContent);
166
+ fs.writeFileSync(executeBruFileBackup, brunoFileContent);
167
+ const outputFile = path.join(resultFolder, `bruno_${context.web.stepIndex ? context.web.stepIndex : 0}.json`);
168
+ if (fs.existsSync(outputFile)) {
169
+ // remove the file if it exists
170
+ fs.unlinkSync(outputFile);
171
+ }
172
+ // if the runtime.json file exists, remove it
173
+ const runtimeFile = path.join(runtimeFolder, "runtime.json");
174
+ filesToDelete.push(runtimeFile);
175
+ if (fs.existsSync(runtimeFile)) {
176
+ // remove the file if it exists
177
+ fs.unlinkSync(runtimeFile);
178
+ }
179
+ const commandOptions = {
180
+ cwd: runtimeFolder,
181
+ env: {
182
+ ...process.env,
183
+ },
184
+ stdio: "pipe",
185
+ encoding: "utf-8",
186
+ };
187
+ const brunoFilePath = path.join(runtimeFolder, `${requestName}.bru`);
188
+ const args = ["bru", "run", "--reporter-json", outputFile];
189
+ // check if options.brunoArgs is defined
190
+ if (options.brunoArgs) {
191
+ // check if options.brunoArgs is an array
192
+ if (Array.isArray(options.brunoArgs)) {
193
+ // add the args to the command
194
+ args.push(...options.brunoArgs);
195
+ }
196
+ }
197
+ args.push(brunoFilePath);
198
+ const { stdout, stderr } = await runCommand(args, commandOptions);
199
+ // check if the command was successful
200
+ if (!fs.existsSync(outputFile)) {
201
+ if (stderr) {
202
+ console.error(`Error executing Bruno request: ${stderr}`);
203
+ }
204
+ if (stdout) {
205
+ console.log(`Bruno request executed successfully: ${stdout}`);
206
+ }
207
+ throw new Error(`Bruno request failed: ${stderr}`);
208
+ }
209
+ // read the output file
210
+ const result = JSON.parse(fs.readFileSync(outputFile, "utf-8"));
211
+ if (world && world.attach) {
212
+ await world.attach(JSON.stringify(fs.readFileSync(outputFile, "utf-8")), "application/json+bruno");
213
+ }
214
+ if (context.reportFolder) {
215
+ // copy the output file to the report folder
216
+ const reportFile = path.join(context.reportFolder, `bruno_${context.web.stepIndex ? context.web.stepIndex : 0}.json`);
217
+ fs.copyFileSync(outputFile, reportFile);
218
+ }
219
+ // validate result: totlaRequests === passedRequests, totalAssertions === passedAssertions, totalTests === passedTests
220
+ /*
221
+ [
222
+ {
223
+ "iterationIndex": 0,
224
+ "summary": {
225
+ "totalRequests": 1,
226
+ "passedRequests": 1,
227
+ "failedRequests": 0,
228
+ "skippedRequests": 0,
229
+ "totalAssertions": 0,
230
+ "passedAssertions": 0,
231
+ "failedAssertions": 0,
232
+ "totalTests": 1,
233
+ "passedTests": 1,
234
+ "failedTests": 0
235
+ },
236
+ */
237
+ if (result &&
238
+ result.length > 0 &&
239
+ result[0] &&
240
+ result[0].results &&
241
+ result[0].results.length > 0 &&
242
+ result[0].results[0].error) {
243
+ console.error(`Error executing Bruno request: ${result[0].results[0].error}`);
244
+ throw new Error(`Bruno request failed: ${result[0].results[0].error}`);
245
+ }
246
+ if (!result || !Array.isArray(result) || result.length === 0) {
247
+ throw new Error(`Bruno request failed: ${stderr}`);
248
+ }
249
+ const summary = result[0].summary;
250
+ if (summary.totalRequests !== summary.passedRequests) {
251
+ throw new Error(`Bruno request failed: ${stderr}`);
252
+ }
253
+ if (summary.totalAssertions !== summary.passedAssertions) {
254
+ let assertionError = "";
255
+ if (result[0].results && result[0].results.length > 0 && result[0].results[0].assertionResults) {
256
+ for (const assertion of result[0].results[0].assertionResults) {
257
+ if (assertion.error) {
258
+ assertionError += assertion.error + "\n";
259
+ }
260
+ }
261
+ }
262
+ throw new Error(`Bruno request failed: ${assertionError}`);
263
+ }
264
+ let testsError = "";
265
+ if (summary.totalTests !== summary.passedTests) {
266
+ testsError = "";
267
+ if (result[0].results && result[0].results.length > 0 && result[0].results[0].testResults) {
268
+ for (const testResult of result[0].results[0].testResults) {
269
+ if (testResult.error) {
270
+ testsError += testResult.error + "\n";
271
+ }
272
+ }
273
+ }
274
+ throw new Error(`Bruno tests failed: ${testsError}`);
275
+ }
276
+ console.log(requestName + " - request executed successfully");
277
+ console.log(`requests: ${summary.passedRequests}/${summary.totalRequests}`);
278
+ if (summary.totalAssertions > 0) {
279
+ console.log(`assertions: ${summary.passedAssertions}/${summary.totalAssertions}`);
280
+ }
281
+ if (summary.totalTests > 0) {
282
+ console.log(`tests: ${summary.passedTests}/${summary.totalTests}`);
283
+ }
284
+ if (!options.brunoScope) {
285
+ options.brunoScope = "bruno";
286
+ }
287
+ const data = {};
288
+ let scope = options.brunoScope;
289
+ data[scope] = result[0].results[0];
290
+ // check for vars:post-response {
291
+ const varsPostResponse = brunoFileContent.indexOf("vars:post-response {");
292
+ if (varsPostResponse !== -1) {
293
+ // need to search a new line follow by }
294
+ const varsEnd = brunoFileContent.indexOf("\n}", varsPostResponse);
295
+ // extract the script remove the open { and the close }
296
+ const script = brunoFileContent.substring(varsPostResponse + 20, varsEnd);
297
+ // the result loolks like this:
298
+ // aaaa: res.body.data.guid
299
+ // bbbb: res.body.data.guid2
300
+ const lines = script.split("\n");
301
+ for (const line of lines) {
302
+ const trimmedLine = line.trim();
303
+ if (trimmedLine.length === 0) {
304
+ continue;
305
+ }
306
+ // split the line by :
307
+ const parts = trimmedLine.split(":");
308
+ if (parts.length !== 2) {
309
+ continue;
310
+ }
311
+ const key = parts[0].trim();
312
+ let opath = parts[1].trim();
313
+ // check if the value is a variable
314
+ let path = opath.replace(/res\.body\./g, "response.data.").split(".");
315
+ const value = objectPath.get(result[0].results[0], path);
316
+ if (value) {
317
+ data[key] = value;
318
+ }
319
+ }
320
+ }
321
+ context.web.setTestData(data, world);
322
+ // if the expectRuntime is true, read the runtime.json file
323
+ if (expectRuntime) {
324
+ // check if the runtime.json file exists
325
+ if (fs.existsSync(runtimeFile)) {
326
+ // read the runtime.json file
327
+ const runtimeData = JSON.parse(fs.readFileSync(runtimeFile, "utf-8"));
328
+ // set test data
329
+ context.web.setTestData(runtimeData, world);
330
+ }
331
+ }
332
+ return result;
333
+ }
334
+ catch (error) {
335
+ await _commandError(state, error, context.web);
336
+ }
337
+ finally {
338
+ // delete the files to delete
339
+ for (const file of filesToDelete) {
340
+ if (fs.existsSync(file)) {
341
+ fs.unlinkSync(file);
342
+ }
343
+ }
344
+ await _commandFinally(state, context.web);
345
+ }
346
+ }
347
+ const runCommand = async (args, options) => {
348
+ return new Promise((resolve, reject) => {
349
+ const _cmd = process.platform === "win32" ? "npx.cmd" : "npx";
350
+ const _options = process.platform === "win32" ? { ...options, shell: true } : options;
351
+ const child = spawn(_cmd, args, _options);
352
+ let stdout = "";
353
+ let stderr = "";
354
+ child.stdout?.on("data", (data) => {
355
+ stdout += data.toString();
356
+ //process.stdout.write(data);
357
+ });
358
+ child.stderr?.on("data", (data) => {
359
+ stderr += data.toString();
360
+ process.stderr.write(data);
361
+ });
362
+ child.on("error", (err) => {
363
+ reject(err);
364
+ });
365
+ child.on("close", (code) => {
366
+ // if (code !== 0) {
367
+ // reject(new Error(`Process exited with code ${code}: ${stderr}`));
368
+ // } else {
369
+ resolve({ stdout, stderr });
370
+ //}
371
+ });
372
+ });
373
+ };
374
+ //# sourceMappingURL=bruno.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bruno.js","sourceRoot":"","sources":["../../src/bruno.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export declare function _preCommand(state: any, web: any): Promise<void>;
2
+ export declare function _commandError(state: any, error: any, web: any): Promise<void>;
3
+ export declare function _screenshot(state: any, web: any, specificElement?: any): Promise<void>;
4
+ export declare function _commandFinally(state: any, web: any): Promise<void>;
5
+ export declare function _validateSelectors(selectors: any): void;
6
+ export declare function _reportToWorld(world: any, properties: any): void;
@@ -0,0 +1,198 @@
1
+ import { getHumanReadableErrorMessage } from "./error-messages.js";
2
+ import { LocatorLog } from "./locator_log.js";
3
+ import { _fixUsingParams, maskValue, replaceWithLocalTestData } from "./utils.js";
4
+ export async function _preCommand(state, web) {
5
+ if (!state) {
6
+ return;
7
+ }
8
+ let allowDisabled = false;
9
+ if (state.allowDisabled) {
10
+ allowDisabled = true;
11
+ }
12
+ if (state.locate !== false) {
13
+ state.locate = true;
14
+ }
15
+ if (state.scroll !== false) {
16
+ state.scroll = true;
17
+ }
18
+ if (state.screenshot !== false) {
19
+ state.screenshot = true;
20
+ }
21
+ if (state.highlight !== false) {
22
+ state.highlight = true;
23
+ }
24
+ if (state.throwError !== false) {
25
+ state.throwError = true;
26
+ }
27
+ state.info = {};
28
+ if (state.value) {
29
+ state.value = _fixUsingParams(state.value, state._params);
30
+ state.info.value = state.value;
31
+ }
32
+ if (state.attribute) {
33
+ state.info.attribute = state.attribute;
34
+ }
35
+ if (state.selectors) {
36
+ _validateSelectors(state.selectors);
37
+ const originalSelectors = state.selectors;
38
+ state.selectors = JSON.parse(JSON.stringify(state.selectors));
39
+ if (originalSelectors.frame) {
40
+ state.selectors.frame = originalSelectors.frame;
41
+ }
42
+ }
43
+ state.startTime = Date.now();
44
+ state.info.selectors = state.selectors;
45
+ state.info.log = state.log ? state.log : "";
46
+ if (state.selectors) {
47
+ state.info.locatorLog = new LocatorLog();
48
+ state.info.locatorLog.mission = state.info.log.trim();
49
+ }
50
+ state.info.operation = state.operation;
51
+ state.info.failCause = {};
52
+ state.error = null;
53
+ state.screenshotId = null;
54
+ state.screenshotPath = null;
55
+ if (state.locate === true) {
56
+ let timeout = null;
57
+ if (state.options && state.options.timeout) {
58
+ timeout = state.options.timeout;
59
+ }
60
+ state.element = await web._locate(state.selectors, state.info, state._params, timeout, allowDisabled);
61
+ }
62
+ if (state.scroll === true) {
63
+ await web.scrollIfNeeded(state.element, state.info);
64
+ }
65
+ if (state.screenshot === true) {
66
+ await _screenshot(state, web);
67
+ }
68
+ if (state.highlight === true) {
69
+ try {
70
+ await web._highlightElements(state.element);
71
+ }
72
+ catch (e) {
73
+ // ignore
74
+ }
75
+ }
76
+ state.info.failCause.operationFailed = true;
77
+ }
78
+ export async function _commandError(state, error, web) {
79
+ if (!state.info) {
80
+ state.info = {};
81
+ }
82
+ if (!state.info.failCause) {
83
+ state.info.failCause = {};
84
+ }
85
+ web.logger.error(state.text + " failed");
86
+ if (error && error.message) {
87
+ web.logger.error(error.message);
88
+ }
89
+ if (state.info.locatorLog) {
90
+ const lines = state.info.locatorLog.toString().split("\n");
91
+ for (let line of lines) {
92
+ web.logger.error(line);
93
+ }
94
+ }
95
+ const { screenshotId, screenshotPath } = await web._screenShot(state.options, state.world, state.info);
96
+ state.screenshotId = screenshotId;
97
+ state.screenshotPath = screenshotPath;
98
+ state.info.screenshotPath = screenshotPath;
99
+ // state.info.failCause.error = error;
100
+ state.info.failCause.fail = true;
101
+ const errorClassification = getHumanReadableErrorMessage(error, state.info);
102
+ state.info.errorType = errorClassification.errorType;
103
+ state.info.errorMessage = errorClassification.errorMessage;
104
+ state.info.errorStack = error.stack;
105
+ Object.assign(error, { info: state.info });
106
+ state.error = error;
107
+ state.commandError = true;
108
+ if (state.throwError) {
109
+ throw error;
110
+ }
111
+ }
112
+ export async function _screenshot(state, web, specificElement) {
113
+ // let focusedElement = null;
114
+ // if (specificElement !== undefined) {
115
+ // focusedElement = specificElement;
116
+ // } else {
117
+ // focusedElement = state.element;
118
+ // }
119
+ // const { screenshotId, screenshotPath } = await web._screenShot(
120
+ // state.options,
121
+ // state.world,
122
+ // state.info,
123
+ // focusedElement
124
+ // );
125
+ // ;
126
+ const { screenshotId, screenshotPath } = await web._screenShot(state.options, state.world, state.info);
127
+ state.screenshotId = screenshotId;
128
+ state.screenshotPath = screenshotPath;
129
+ }
130
+ export async function _commandFinally(state, web) {
131
+ if (state && !state.commandError === true) {
132
+ state.info.failCause = {};
133
+ }
134
+ state.endTime = Date.now();
135
+ let _value = "";
136
+ if (state.originalValue) {
137
+ try {
138
+ if (state.originalValue.startsWith("{{") && state.originalValue.endsWith("}}")) {
139
+ _value = (await replaceWithLocalTestData(state.originalValue, state.world, false, true, web.context, web));
140
+ }
141
+ else {
142
+ _value = state.originalValue;
143
+ }
144
+ }
145
+ catch (e) {
146
+ console.error("Error replacing test data value", e);
147
+ _value = state.originalValue;
148
+ }
149
+ }
150
+ const reportObject = {
151
+ element_name: state.selectors ? state.selectors.element_name : null,
152
+ type: state.type,
153
+ text: state.text,
154
+ _text: state._text,
155
+ value: state.originalValue ? maskValue(_value) : state.value,
156
+ screenshotId: state.screenshotId,
157
+ result: state.error
158
+ ? {
159
+ status: "FAILED",
160
+ startTime: state.startTime,
161
+ endTime: state.endTime,
162
+ message: state?.info?.errorMessage ?? state.error?.message,
163
+ stack: state.error?.stack,
164
+ }
165
+ : {
166
+ status: "PASSED",
167
+ startTime: state.startTime,
168
+ endTime: state.endTime,
169
+ },
170
+ info: state.info,
171
+ locatorLog: state.info.locatorLog ? state.info.locatorLog.toString() : null,
172
+ };
173
+ if (state.originalValue && state.info) {
174
+ state.info.value = maskValue(state.originalValue);
175
+ }
176
+ _reportToWorld(state.world, reportObject);
177
+ }
178
+ export function _validateSelectors(selectors) {
179
+ if (!selectors) {
180
+ throw new Error("selectors is null");
181
+ }
182
+ if (!selectors.locators) {
183
+ throw new Error("selectors.locators is null");
184
+ }
185
+ if (!Array.isArray(selectors.locators)) {
186
+ throw new Error("selectors.locators expected to be array");
187
+ }
188
+ if (selectors.locators.length === 0) {
189
+ throw new Error("selectors.locators expected to be non empty array");
190
+ }
191
+ }
192
+ export function _reportToWorld(world, properties) {
193
+ if (!world || !world.attach) {
194
+ return;
195
+ }
196
+ world.attach(JSON.stringify(properties), { mediaType: "application/json" });
197
+ }
198
+ //# sourceMappingURL=command_common.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command_common.js","sourceRoot":"","sources":["../../src/command_common.ts"],"names":[],"mappings":"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"}