automation_model 1.0.600-dev → 1.0.600-stage
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 +130 -0
- package/lib/api.js +35 -21
- package/lib/api.js.map +1 -1
- package/lib/auto_page.d.ts +4 -2
- package/lib/auto_page.js +135 -7
- package/lib/auto_page.js.map +1 -1
- package/lib/browser_manager.js +53 -16
- package/lib/browser_manager.js.map +1 -1
- package/lib/bruno.d.ts +2 -0
- package/lib/bruno.js +374 -0
- package/lib/bruno.js.map +1 -0
- package/lib/command_common.d.ts +4 -4
- package/lib/command_common.js +34 -16
- package/lib/command_common.js.map +1 -1
- package/lib/error-messages.js +6 -0
- package/lib/error-messages.js.map +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/init_browser.d.ts +3 -2
- package/lib/init_browser.js +52 -12
- package/lib/init_browser.js.map +1 -1
- package/lib/locate_element.js +2 -2
- package/lib/locate_element.js.map +1 -1
- package/lib/network.d.ts +1 -1
- package/lib/network.js +5 -5
- package/lib/network.js.map +1 -1
- package/lib/stable_browser.d.ts +19 -1
- package/lib/stable_browser.js +643 -197
- package/lib/stable_browser.js.map +1 -1
- package/lib/table_helper.d.ts +19 -0
- package/lib/table_helper.js +116 -0
- package/lib/table_helper.js.map +1 -0
- package/lib/test_context.d.ts +3 -0
- package/lib/test_context.js +2 -0
- package/lib/test_context.js.map +1 -1
- package/lib/utils.d.ts +8 -4
- package/lib/utils.js +214 -19
- package/lib/utils.js.map +1 -1
- package/package.json +9 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser_manager.js","sourceRoot":"","sources":["../../src/browser_manager.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,OAAO,EACP,MAAM,GAKP,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,sCAAsC;AACtC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAM3C,MAAM,cAAc;IACC;IAAnB,YAAmB,WAAsB,EAAE;QAAxB,aAAQ,GAAR,QAAQ,CAAgB;IAAG,CAAC;IAE/C,KAAK,CAAC,QAAQ;QACZ,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACnE,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;IACrB,CAAC;IACD,KAAK,CAAC,YAAY,CAAC,OAAqC;QACtD,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;YACxC,
|
|
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
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
|
package/lib/bruno.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bruno.js","sourceRoot":"","sources":["../../src/bruno.ts"],"names":[],"mappings":"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"}
|
package/lib/command_common.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export declare function _preCommand(state: any,
|
|
2
|
-
export declare function _commandError(state: any, error: any,
|
|
3
|
-
export declare function _screenshot(state: any,
|
|
4
|
-
export declare function _commandFinally(state: any,
|
|
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
5
|
export declare function _validateSelectors(selectors: any): void;
|
|
6
6
|
export declare function _reportToWorld(world: any, properties: any): void;
|
package/lib/command_common.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { getHumanReadableErrorMessage } from "./error-messages.js";
|
|
2
2
|
import { LocatorLog } from "./locator_log.js";
|
|
3
|
-
import { _fixUsingParams, maskValue } from "./utils.js";
|
|
4
|
-
export async function _preCommand(state,
|
|
3
|
+
import { _fixUsingParams, maskValue, replaceWithLocalTestData } from "./utils.js";
|
|
4
|
+
export async function _preCommand(state, web) {
|
|
5
5
|
if (!state) {
|
|
6
6
|
return;
|
|
7
7
|
}
|
|
@@ -57,17 +57,17 @@ export async function _preCommand(state, stable) {
|
|
|
57
57
|
if (state.options && state.options.timeout) {
|
|
58
58
|
timeout = state.options.timeout;
|
|
59
59
|
}
|
|
60
|
-
state.element = await
|
|
60
|
+
state.element = await web._locate(state.selectors, state.info, state._params, timeout, allowDisabled);
|
|
61
61
|
}
|
|
62
62
|
if (state.scroll === true) {
|
|
63
|
-
await
|
|
63
|
+
await web.scrollIfNeeded(state.element, state.info);
|
|
64
64
|
}
|
|
65
65
|
if (state.screenshot === true) {
|
|
66
|
-
await _screenshot(state,
|
|
66
|
+
await _screenshot(state, web);
|
|
67
67
|
}
|
|
68
68
|
if (state.highlight === true) {
|
|
69
69
|
try {
|
|
70
|
-
await
|
|
70
|
+
await web._highlightElements(state.element);
|
|
71
71
|
}
|
|
72
72
|
catch (e) {
|
|
73
73
|
// ignore
|
|
@@ -75,24 +75,24 @@ export async function _preCommand(state, stable) {
|
|
|
75
75
|
}
|
|
76
76
|
state.info.failCause.operationFailed = true;
|
|
77
77
|
}
|
|
78
|
-
export async function _commandError(state, error,
|
|
78
|
+
export async function _commandError(state, error, web) {
|
|
79
79
|
if (!state.info) {
|
|
80
80
|
state.info = {};
|
|
81
81
|
}
|
|
82
82
|
if (!state.info.failCause) {
|
|
83
83
|
state.info.failCause = {};
|
|
84
84
|
}
|
|
85
|
-
|
|
85
|
+
web.logger.error(state.text + " failed");
|
|
86
86
|
if (error && error.message) {
|
|
87
|
-
|
|
87
|
+
web.logger.error(error.message);
|
|
88
88
|
}
|
|
89
89
|
if (state.info.locatorLog) {
|
|
90
90
|
const lines = state.info.locatorLog.toString().split("\n");
|
|
91
91
|
for (let line of lines) {
|
|
92
|
-
|
|
92
|
+
web.logger.error(line);
|
|
93
93
|
}
|
|
94
94
|
}
|
|
95
|
-
const { screenshotId, screenshotPath } = await
|
|
95
|
+
const { screenshotId, screenshotPath } = await web._screenShot(state.options, state.world, state.info);
|
|
96
96
|
state.screenshotId = screenshotId;
|
|
97
97
|
state.screenshotPath = screenshotPath;
|
|
98
98
|
state.info.screenshotPath = screenshotPath;
|
|
@@ -101,6 +101,7 @@ export async function _commandError(state, error, stable) {
|
|
|
101
101
|
const errorClassification = getHumanReadableErrorMessage(error, state.info);
|
|
102
102
|
state.info.errorType = errorClassification.errorType;
|
|
103
103
|
state.info.errorMessage = errorClassification.errorMessage;
|
|
104
|
+
state.info.errorStack = error.stack;
|
|
104
105
|
Object.assign(error, { info: state.info });
|
|
105
106
|
state.error = error;
|
|
106
107
|
state.commandError = true;
|
|
@@ -108,34 +109,50 @@ export async function _commandError(state, error, stable) {
|
|
|
108
109
|
throw error;
|
|
109
110
|
}
|
|
110
111
|
}
|
|
111
|
-
export async function _screenshot(state,
|
|
112
|
+
export async function _screenshot(state, web, specificElement) {
|
|
112
113
|
// let focusedElement = null;
|
|
113
114
|
// if (specificElement !== undefined) {
|
|
114
115
|
// focusedElement = specificElement;
|
|
115
116
|
// } else {
|
|
116
117
|
// focusedElement = state.element;
|
|
117
118
|
// }
|
|
118
|
-
// const { screenshotId, screenshotPath } = await
|
|
119
|
+
// const { screenshotId, screenshotPath } = await web._screenShot(
|
|
119
120
|
// state.options,
|
|
120
121
|
// state.world,
|
|
121
122
|
// state.info,
|
|
122
123
|
// focusedElement
|
|
123
124
|
// );
|
|
124
125
|
// ;
|
|
125
|
-
const { screenshotId, screenshotPath } = await
|
|
126
|
+
const { screenshotId, screenshotPath } = await web._screenShot(state.options, state.world, state.info);
|
|
126
127
|
state.screenshotId = screenshotId;
|
|
127
128
|
state.screenshotPath = screenshotPath;
|
|
128
129
|
}
|
|
129
|
-
export function _commandFinally(state,
|
|
130
|
+
export async function _commandFinally(state, web) {
|
|
130
131
|
if (state && !state.commandError === true) {
|
|
131
132
|
state.info.failCause = {};
|
|
132
133
|
}
|
|
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
|
+
}
|
|
134
150
|
const reportObject = {
|
|
135
151
|
element_name: state.selectors ? state.selectors.element_name : null,
|
|
136
152
|
type: state.type,
|
|
137
153
|
text: state.text,
|
|
138
|
-
|
|
154
|
+
_text: state._text,
|
|
155
|
+
value: state.originalValue ? maskValue(_value) : state.value,
|
|
139
156
|
screenshotId: state.screenshotId,
|
|
140
157
|
result: state.error
|
|
141
158
|
? {
|
|
@@ -143,6 +160,7 @@ export function _commandFinally(state, stable) {
|
|
|
143
160
|
startTime: state.startTime,
|
|
144
161
|
endTime: state.endTime,
|
|
145
162
|
message: state?.info?.errorMessage ?? state.error?.message,
|
|
163
|
+
stack: state.error?.stack,
|
|
146
164
|
}
|
|
147
165
|
: {
|
|
148
166
|
status: "PASSED",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command_common.js","sourceRoot":"","sources":["../../src/command_common.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"command_common.js","sourceRoot":"","sources":["../../src/command_common.ts"],"names":[],"mappings":"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"}
|
package/lib/error-messages.js
CHANGED
|
@@ -176,6 +176,12 @@ const classifyErrorFromInfo = (error, info) => {
|
|
|
176
176
|
errorMessage: failCause.lastError ?? `Found ${failCause.count} elements`,
|
|
177
177
|
};
|
|
178
178
|
}
|
|
179
|
+
if (failCause.assertionFailed) {
|
|
180
|
+
return {
|
|
181
|
+
errorType: "AssertionError",
|
|
182
|
+
errorMessage: failCause.lastError,
|
|
183
|
+
};
|
|
184
|
+
}
|
|
179
185
|
return {
|
|
180
186
|
errorType: "UnknownError",
|
|
181
187
|
errorMessage: error.message,
|