automation_model 1.0.623-dev → 1.0.623-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 +1 -1
- package/lib/auto_page.js +99 -28
- package/lib/auto_page.js.map +1 -1
- package/lib/browser_manager.js +70 -22
- package/lib/browser_manager.js.map +1 -1
- package/lib/bruno.d.ts +2 -0
- package/lib/bruno.js +381 -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/environment.d.ts +1 -0
- package/lib/environment.js +1 -0
- package/lib/environment.js.map +1 -1
- package/lib/file_checker.d.ts +1 -0
- package/lib/file_checker.js +61 -0
- package/lib/file_checker.js.map +1 -0
- package/lib/index.d.ts +2 -0
- package/lib/index.js +2 -0
- package/lib/index.js.map +1 -1
- package/lib/init_browser.d.ts +2 -2
- package/lib/init_browser.js +33 -27
- 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/snapshot_validation.d.ts +37 -0
- package/lib/snapshot_validation.js +246 -0
- package/lib/snapshot_validation.js.map +1 -0
- package/lib/stable_browser.d.ts +21 -1
- package/lib/stable_browser.js +654 -139
- 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 +2 -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 +220 -19
- package/lib/utils.js.map +1 -1
- package/package.json +7 -6
package/lib/browser_manager.js
CHANGED
|
@@ -2,6 +2,7 @@ import { chromium, firefox, webkit, } from "playwright";
|
|
|
2
2
|
import fs from "fs";
|
|
3
3
|
import path from "path";
|
|
4
4
|
import { fileURLToPath } from "url";
|
|
5
|
+
import crypto from "crypto";
|
|
5
6
|
// Get __filename and __dirname in ESM
|
|
6
7
|
const __filename = fileURLToPath(import.meta.url);
|
|
7
8
|
const __dirname = path.dirname(__filename);
|
|
@@ -21,7 +22,7 @@ class BrowserManager {
|
|
|
21
22
|
}
|
|
22
23
|
this.browsers = [];
|
|
23
24
|
}
|
|
24
|
-
if (browser) {
|
|
25
|
+
if (browser && !process.env.IGNORE_BROWSER_CLOSE) {
|
|
25
26
|
await browser.close();
|
|
26
27
|
for (let i = 0; i < this.browsers.length; i++) {
|
|
27
28
|
if (this.browsers[i].browser === browser || this.browsers[i] === browser) {
|
|
@@ -70,14 +71,23 @@ class Browser {
|
|
|
70
71
|
let viewport = null;
|
|
71
72
|
if (process.env.HEADLESS === "true") {
|
|
72
73
|
headless = true;
|
|
74
|
+
this.headless = true;
|
|
73
75
|
}
|
|
74
76
|
else if (process.env.HEADLESS === "false") {
|
|
75
77
|
headless = false;
|
|
78
|
+
this.headless = false;
|
|
76
79
|
}
|
|
77
80
|
if (process.env.VIEWPORT) {
|
|
78
81
|
let viewportParts = process.env.VIEWPORT.split(",");
|
|
79
82
|
viewport = { width: parseInt(viewportParts[0]), height: parseInt(viewportParts[1]) };
|
|
80
83
|
}
|
|
84
|
+
else if (!aiConfig.noViewport) {
|
|
85
|
+
viewport = { width: 1280, height: 800 };
|
|
86
|
+
}
|
|
87
|
+
const args = ["--ignore-https-errors", "--ignore-certificate-errors"];
|
|
88
|
+
if (process.env.CDP_LISTEN_PORT) {
|
|
89
|
+
args.push(`--remote-debugging-port=${process.env.CDP_LISTEN_PORT}`);
|
|
90
|
+
}
|
|
81
91
|
if (!extensionPath && userDataDirPath) {
|
|
82
92
|
this.context = await chromium.launchPersistentContext(userDataDirPath, {
|
|
83
93
|
headless: false,
|
|
@@ -105,7 +115,7 @@ class Browser {
|
|
|
105
115
|
this.browser = await firefox.launch({
|
|
106
116
|
headless: headless,
|
|
107
117
|
timeout: 0,
|
|
108
|
-
args
|
|
118
|
+
args,
|
|
109
119
|
//downloadsPath: downloadsPath,
|
|
110
120
|
});
|
|
111
121
|
}
|
|
@@ -113,7 +123,7 @@ class Browser {
|
|
|
113
123
|
this.browser = await webkit.launch({
|
|
114
124
|
headless: headless,
|
|
115
125
|
timeout: 0,
|
|
116
|
-
args
|
|
126
|
+
args,
|
|
117
127
|
//downloadsPath: downloadsPath,
|
|
118
128
|
});
|
|
119
129
|
}
|
|
@@ -122,19 +132,24 @@ class Browser {
|
|
|
122
132
|
this.browser = await chromium.launch({
|
|
123
133
|
headless: headless,
|
|
124
134
|
timeout: 0,
|
|
125
|
-
args
|
|
135
|
+
args,
|
|
126
136
|
channel: channel,
|
|
127
137
|
//downloadsPath: downloadsPath,
|
|
128
138
|
});
|
|
129
139
|
}
|
|
130
140
|
}
|
|
131
141
|
else {
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
142
|
+
if (process.env.CDP_CONNECT_URL) {
|
|
143
|
+
this.browser = await chromium.connectOverCDP(process.env.CDP_CONNECT_URL);
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
this.browser = await chromium.launch({
|
|
147
|
+
headless: headless,
|
|
148
|
+
timeout: 0,
|
|
149
|
+
args,
|
|
150
|
+
//downloadsPath: downloadsPath,
|
|
151
|
+
});
|
|
152
|
+
}
|
|
138
153
|
}
|
|
139
154
|
// downloadsPath
|
|
140
155
|
let contextOptions = {};
|
|
@@ -153,11 +168,21 @@ class Browser {
|
|
|
153
168
|
if (viewport) {
|
|
154
169
|
contextOptions.viewport = viewport;
|
|
155
170
|
}
|
|
171
|
+
else {
|
|
172
|
+
if (!this.headless) {
|
|
173
|
+
contextOptions.viewport = null;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
156
176
|
if (userAgent) {
|
|
157
177
|
contextOptions.userAgent = userAgent;
|
|
158
178
|
}
|
|
159
179
|
if (!this.context && this.browser) {
|
|
160
|
-
|
|
180
|
+
if (this.browser.contexts().length > 0) {
|
|
181
|
+
this.context = this.browser.contexts()[this.browser.contexts().length - 1];
|
|
182
|
+
}
|
|
183
|
+
else {
|
|
184
|
+
this.context = await this.browser.newContext(contextOptions);
|
|
185
|
+
}
|
|
161
186
|
}
|
|
162
187
|
}
|
|
163
188
|
if ((process.env.TRACE === "true" || aiConfig.trace === true) && this.context) {
|
|
@@ -170,21 +195,34 @@ class Browser {
|
|
|
170
195
|
this.traceFolder = traceFolder;
|
|
171
196
|
await this.context.tracing.start({ screenshots: true, snapshots: true });
|
|
172
197
|
}
|
|
198
|
+
function createGuid() {
|
|
199
|
+
return crypto.randomBytes(16).toString("hex");
|
|
200
|
+
}
|
|
201
|
+
const runtimeGuid = createGuid();
|
|
202
|
+
// Preprocesses any generated script to include the runtime guid.
|
|
203
|
+
function prepareGeneratedScript(source) {
|
|
204
|
+
return source
|
|
205
|
+
.replaceAll("$runtime_guid$", runtimeGuid)
|
|
206
|
+
.replace("kUtilityScriptIsUnderTest = false", `kUtilityScriptIsUnderTest = true`);
|
|
207
|
+
}
|
|
208
|
+
const options = {
|
|
209
|
+
sdkLanguage: "javascript",
|
|
210
|
+
testIdAttributeName: "blinq-test-id",
|
|
211
|
+
stableRafCount: 0,
|
|
212
|
+
browserName: this.browser?.browserType().name(),
|
|
213
|
+
inputFileRoleTextbox: false,
|
|
214
|
+
customEngines: [],
|
|
215
|
+
};
|
|
173
216
|
if (initScripts && this.context) {
|
|
174
217
|
if (initScripts.recorderCjs) {
|
|
175
218
|
await this.context.addInitScript({
|
|
176
219
|
content: `
|
|
177
220
|
(() => {
|
|
178
221
|
const module = {};
|
|
179
|
-
${initScripts.recorderCjs}
|
|
222
|
+
${prepareGeneratedScript(initScripts.recorderCjs)}
|
|
180
223
|
const sss = new (module.exports.InjectedScript())(
|
|
181
224
|
window,
|
|
182
|
-
|
|
183
|
-
"javascript",
|
|
184
|
-
[],
|
|
185
|
-
${0},
|
|
186
|
-
"${this.browser?.browserType().name()}",
|
|
187
|
-
[]
|
|
225
|
+
${JSON.stringify(options)},
|
|
188
226
|
);
|
|
189
227
|
})();`,
|
|
190
228
|
});
|
|
@@ -207,12 +245,22 @@ class Browser {
|
|
|
207
245
|
await this.context?.addInitScript({
|
|
208
246
|
content: axeMinJsContent,
|
|
209
247
|
});
|
|
210
|
-
this.
|
|
248
|
+
if (this.context && this.context.pages().length > 0) {
|
|
249
|
+
this.page = this.context.pages()[this.context.pages().length - 1];
|
|
250
|
+
}
|
|
251
|
+
else {
|
|
252
|
+
this.page = await this.context.newPage();
|
|
253
|
+
}
|
|
254
|
+
if (this.context) {
|
|
255
|
+
this.context.on("close", () => {
|
|
256
|
+
this.context.isClosed = true;
|
|
257
|
+
});
|
|
258
|
+
}
|
|
211
259
|
}
|
|
212
260
|
async close() {
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
261
|
+
if (process.env.IGNORE_BROWSER_CLOSE === "true") {
|
|
262
|
+
return;
|
|
263
|
+
}
|
|
216
264
|
if (this.browser !== null) {
|
|
217
265
|
await this.browser.close();
|
|
218
266
|
this.browser = null;
|
|
@@ -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;
|
|
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,381 @@
|
|
|
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 variables = [];
|
|
132
|
+
const regex = /bru\.setVar\("([^"]+)",/g;
|
|
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
|
+
const regex1 = /bru\.setEnvVar\("([^"]+)",/g;
|
|
141
|
+
while ((match = regex.exec(script)) !== null) {
|
|
142
|
+
// check if the variable is already in the list
|
|
143
|
+
if (!variables.includes(match[1])) {
|
|
144
|
+
variables.push(match[1]);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
// check if the variables are not empty
|
|
148
|
+
if (variables.length > 0) {
|
|
149
|
+
expectRuntime = true;
|
|
150
|
+
let scriptVariables = "const runtimeVariables = {};\n";
|
|
151
|
+
// iterate over the variables and create a script to extract them
|
|
152
|
+
for (const variable of variables) {
|
|
153
|
+
scriptVariables += ` runtimeVariables["${variable}"] = bru.getVar("${variable}");\n`;
|
|
154
|
+
}
|
|
155
|
+
const fsRqureExists = script.indexOf("fs = require('fs');") !== -1;
|
|
156
|
+
// check if the variable is not empty
|
|
157
|
+
// replace the script with the modified one
|
|
158
|
+
brunoFileContent = brunoFileContent.replace(script, `script:post-response {
|
|
159
|
+
${fsRqureExists ? "" : "const fs = require('fs')"};
|
|
160
|
+
// inject code to extract runtime variables
|
|
161
|
+
${script.substring(script.indexOf("{") + 1, script.lastIndexOf("}"))}
|
|
162
|
+
// write the runtime variables to a file
|
|
163
|
+
${scriptVariables}
|
|
164
|
+
fs.writeFileSync("${path.join(runtimeFolder, "runtime.json")}", JSON.stringify(runtimeVariables, null, 2));
|
|
165
|
+
}`);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
// write the bruno file to the runtime folder
|
|
169
|
+
const executeBruFile = path.join(runtimeFolder, `${requestName}.bru`);
|
|
170
|
+
const executeBruFileBackup = path.join(resultFolder, `${requestName}.bru`);
|
|
171
|
+
filesToDelete.push(executeBruFile);
|
|
172
|
+
fs.writeFileSync(executeBruFile, brunoFileContent);
|
|
173
|
+
fs.writeFileSync(executeBruFileBackup, brunoFileContent);
|
|
174
|
+
const outputFile = path.join(resultFolder, `bruno_${context.web.stepIndex ? context.web.stepIndex : 0}.json`);
|
|
175
|
+
if (fs.existsSync(outputFile)) {
|
|
176
|
+
// remove the file if it exists
|
|
177
|
+
fs.unlinkSync(outputFile);
|
|
178
|
+
}
|
|
179
|
+
// if the runtime.json file exists, remove it
|
|
180
|
+
const runtimeFile = path.join(runtimeFolder, "runtime.json");
|
|
181
|
+
filesToDelete.push(runtimeFile);
|
|
182
|
+
if (fs.existsSync(runtimeFile)) {
|
|
183
|
+
// remove the file if it exists
|
|
184
|
+
fs.unlinkSync(runtimeFile);
|
|
185
|
+
}
|
|
186
|
+
const commandOptions = {
|
|
187
|
+
cwd: runtimeFolder,
|
|
188
|
+
env: {
|
|
189
|
+
...process.env,
|
|
190
|
+
},
|
|
191
|
+
stdio: "pipe",
|
|
192
|
+
encoding: "utf-8",
|
|
193
|
+
};
|
|
194
|
+
const brunoFilePath = path.join(runtimeFolder, `${requestName}.bru`);
|
|
195
|
+
const args = ["bru", "run", "--reporter-json", outputFile];
|
|
196
|
+
// check if options.brunoArgs is defined
|
|
197
|
+
if (options.brunoArgs) {
|
|
198
|
+
// check if options.brunoArgs is an array
|
|
199
|
+
if (Array.isArray(options.brunoArgs)) {
|
|
200
|
+
// add the args to the command
|
|
201
|
+
args.push(...options.brunoArgs);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
args.push(brunoFilePath);
|
|
205
|
+
const { stdout, stderr } = await runCommand(args, commandOptions);
|
|
206
|
+
// check if the command was successful
|
|
207
|
+
if (!fs.existsSync(outputFile)) {
|
|
208
|
+
if (stderr) {
|
|
209
|
+
console.error(`Error executing Bruno request: ${stderr}`);
|
|
210
|
+
}
|
|
211
|
+
if (stdout) {
|
|
212
|
+
console.log(`Bruno request executed successfully: ${stdout}`);
|
|
213
|
+
}
|
|
214
|
+
throw new Error(`Bruno request failed: ${stderr}`);
|
|
215
|
+
}
|
|
216
|
+
// read the output file
|
|
217
|
+
const result = JSON.parse(fs.readFileSync(outputFile, "utf-8"));
|
|
218
|
+
if (world && world.attach) {
|
|
219
|
+
await world.attach(JSON.stringify(fs.readFileSync(outputFile, "utf-8")), "application/json+bruno");
|
|
220
|
+
}
|
|
221
|
+
if (context.reportFolder) {
|
|
222
|
+
// copy the output file to the report folder
|
|
223
|
+
const reportFile = path.join(context.reportFolder, `bruno_${context.web.stepIndex ? context.web.stepIndex : 0}.json`);
|
|
224
|
+
fs.copyFileSync(outputFile, reportFile);
|
|
225
|
+
}
|
|
226
|
+
// validate result: totlaRequests === passedRequests, totalAssertions === passedAssertions, totalTests === passedTests
|
|
227
|
+
/*
|
|
228
|
+
[
|
|
229
|
+
{
|
|
230
|
+
"iterationIndex": 0,
|
|
231
|
+
"summary": {
|
|
232
|
+
"totalRequests": 1,
|
|
233
|
+
"passedRequests": 1,
|
|
234
|
+
"failedRequests": 0,
|
|
235
|
+
"skippedRequests": 0,
|
|
236
|
+
"totalAssertions": 0,
|
|
237
|
+
"passedAssertions": 0,
|
|
238
|
+
"failedAssertions": 0,
|
|
239
|
+
"totalTests": 1,
|
|
240
|
+
"passedTests": 1,
|
|
241
|
+
"failedTests": 0
|
|
242
|
+
},
|
|
243
|
+
*/
|
|
244
|
+
if (result &&
|
|
245
|
+
result.length > 0 &&
|
|
246
|
+
result[0] &&
|
|
247
|
+
result[0].results &&
|
|
248
|
+
result[0].results.length > 0 &&
|
|
249
|
+
result[0].results[0].error) {
|
|
250
|
+
console.error(`Error executing Bruno request: ${result[0].results[0].error}`);
|
|
251
|
+
throw new Error(`Bruno request failed: ${result[0].results[0].error}`);
|
|
252
|
+
}
|
|
253
|
+
if (!result || !Array.isArray(result) || result.length === 0) {
|
|
254
|
+
throw new Error(`Bruno request failed: ${stderr}`);
|
|
255
|
+
}
|
|
256
|
+
const summary = result[0].summary;
|
|
257
|
+
if (summary.totalRequests !== summary.passedRequests) {
|
|
258
|
+
throw new Error(`Bruno request failed: ${stderr}`);
|
|
259
|
+
}
|
|
260
|
+
if (summary.totalAssertions !== summary.passedAssertions) {
|
|
261
|
+
let assertionError = "";
|
|
262
|
+
if (result[0].results && result[0].results.length > 0 && result[0].results[0].assertionResults) {
|
|
263
|
+
for (const assertion of result[0].results[0].assertionResults) {
|
|
264
|
+
if (assertion.error) {
|
|
265
|
+
assertionError += assertion.error + "\n";
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
throw new Error(`Bruno request failed: ${assertionError}`);
|
|
270
|
+
}
|
|
271
|
+
let testsError = "";
|
|
272
|
+
if (summary.totalTests !== summary.passedTests) {
|
|
273
|
+
testsError = "";
|
|
274
|
+
if (result[0].results && result[0].results.length > 0 && result[0].results[0].testResults) {
|
|
275
|
+
for (const testResult of result[0].results[0].testResults) {
|
|
276
|
+
if (testResult.error) {
|
|
277
|
+
testsError += testResult.error + "\n";
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
throw new Error(`Bruno tests failed: ${testsError}`);
|
|
282
|
+
}
|
|
283
|
+
console.log(requestName + " - request executed successfully");
|
|
284
|
+
console.log(`requests: ${summary.passedRequests}/${summary.totalRequests}`);
|
|
285
|
+
if (summary.totalAssertions > 0) {
|
|
286
|
+
console.log(`assertions: ${summary.passedAssertions}/${summary.totalAssertions}`);
|
|
287
|
+
}
|
|
288
|
+
if (summary.totalTests > 0) {
|
|
289
|
+
console.log(`tests: ${summary.passedTests}/${summary.totalTests}`);
|
|
290
|
+
}
|
|
291
|
+
if (!options.brunoScope) {
|
|
292
|
+
options.brunoScope = "bruno";
|
|
293
|
+
}
|
|
294
|
+
const data = {};
|
|
295
|
+
let scope = options.brunoScope;
|
|
296
|
+
data[scope] = result[0].results[0];
|
|
297
|
+
// check for vars:post-response {
|
|
298
|
+
const varsPostResponse = brunoFileContent.indexOf("vars:post-response {");
|
|
299
|
+
if (varsPostResponse !== -1) {
|
|
300
|
+
// need to search a new line follow by }
|
|
301
|
+
const varsEnd = brunoFileContent.indexOf("\n}", varsPostResponse);
|
|
302
|
+
// extract the script remove the open { and the close }
|
|
303
|
+
const script = brunoFileContent.substring(varsPostResponse + 20, varsEnd);
|
|
304
|
+
// the result loolks like this:
|
|
305
|
+
// aaaa: res.body.data.guid
|
|
306
|
+
// bbbb: res.body.data.guid2
|
|
307
|
+
const lines = script.split("\n");
|
|
308
|
+
for (const line of lines) {
|
|
309
|
+
const trimmedLine = line.trim();
|
|
310
|
+
if (trimmedLine.length === 0) {
|
|
311
|
+
continue;
|
|
312
|
+
}
|
|
313
|
+
// split the line by :
|
|
314
|
+
const parts = trimmedLine.split(":");
|
|
315
|
+
if (parts.length !== 2) {
|
|
316
|
+
continue;
|
|
317
|
+
}
|
|
318
|
+
const key = parts[0].trim();
|
|
319
|
+
let opath = parts[1].trim();
|
|
320
|
+
// check if the value is a variable
|
|
321
|
+
let path = opath.replace(/res\.body\./g, "response.data.").split(".");
|
|
322
|
+
const value = objectPath.get(result[0].results[0], path);
|
|
323
|
+
if (value) {
|
|
324
|
+
data[key] = value;
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
context.web.setTestData(data, world);
|
|
329
|
+
// if the expectRuntime is true, read the runtime.json file
|
|
330
|
+
if (expectRuntime) {
|
|
331
|
+
// check if the runtime.json file exists
|
|
332
|
+
if (fs.existsSync(runtimeFile)) {
|
|
333
|
+
// read the runtime.json file
|
|
334
|
+
const runtimeData = JSON.parse(fs.readFileSync(runtimeFile, "utf-8"));
|
|
335
|
+
// set test data
|
|
336
|
+
context.web.setTestData(runtimeData, world);
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
return result;
|
|
340
|
+
}
|
|
341
|
+
catch (error) {
|
|
342
|
+
await _commandError(state, error, context.web);
|
|
343
|
+
}
|
|
344
|
+
finally {
|
|
345
|
+
// delete the files to delete
|
|
346
|
+
for (const file of filesToDelete) {
|
|
347
|
+
if (fs.existsSync(file)) {
|
|
348
|
+
fs.unlinkSync(file);
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
await _commandFinally(state, context.web);
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
const runCommand = async (args, options) => {
|
|
355
|
+
return new Promise((resolve, reject) => {
|
|
356
|
+
const _cmd = process.platform === "win32" ? "npx.cmd" : "npx";
|
|
357
|
+
const _options = process.platform === "win32" ? { ...options, shell: true } : options;
|
|
358
|
+
const child = spawn(_cmd, args, _options);
|
|
359
|
+
let stdout = "";
|
|
360
|
+
let stderr = "";
|
|
361
|
+
child.stdout?.on("data", (data) => {
|
|
362
|
+
stdout += data.toString();
|
|
363
|
+
//process.stdout.write(data);
|
|
364
|
+
});
|
|
365
|
+
child.stderr?.on("data", (data) => {
|
|
366
|
+
stderr += data.toString();
|
|
367
|
+
process.stderr.write(data);
|
|
368
|
+
});
|
|
369
|
+
child.on("error", (err) => {
|
|
370
|
+
reject(err);
|
|
371
|
+
});
|
|
372
|
+
child.on("close", (code) => {
|
|
373
|
+
// if (code !== 0) {
|
|
374
|
+
// reject(new Error(`Process exited with code ${code}: ${stderr}`));
|
|
375
|
+
// } else {
|
|
376
|
+
resolve({ stdout, stderr });
|
|
377
|
+
//}
|
|
378
|
+
});
|
|
379
|
+
});
|
|
380
|
+
};
|
|
381
|
+
//# 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;
|