feat: updates

This commit is contained in:
lohxt1
2024-12-18 18:57:23 +05:30
parent f871bc0fa2
commit f72d643e02
9 changed files with 254 additions and 25 deletions

View File

@ -13,6 +13,14 @@ class Bru {
this.requestVariables = requestVariables || {};
this.globalEnvironmentVariables = globalEnvironmentVariables || {};
this.collectionPath = collectionPath;
this.runner = {
skipRequest: () => {
this.skipRequest = true;
},
stopExecution: () => {
this.stopExecution = true;
},
};
}
_interpolate = (str) => {

View File

@ -408,6 +408,8 @@ class AssertRuntime {
}
}
request.assertionResults = assertionResults;
return assertionResults;
}
}

View File

@ -45,7 +45,8 @@ class ScriptRuntime {
collectionPath,
onConsoleLog,
processEnvVars,
scriptingConfig
scriptingConfig,
runRequestByItemPathname
) {
const globalEnvironmentVariables = request?.globalEnvironmentVariables || {};
const collectionVariables = request?.collectionVariables || {};
@ -92,6 +93,10 @@ class ScriptRuntime {
};
}
if(runRequestByItemPathname) {
context.bru.runRequest = runRequestByItemPathname;
}
if (this.runtime === 'quickjs') {
await executeQuickJsVmAsync({
script: script,
@ -104,7 +109,9 @@ class ScriptRuntime {
envVariables: cleanJson(envVariables),
runtimeVariables: cleanJson(runtimeVariables),
globalEnvironmentVariables: cleanJson(globalEnvironmentVariables),
nextRequestName: bru.nextRequest
nextRequestName: bru.nextRequest,
skipRequest: bru.skipRequest,
stopExecution: bru.stopExecution
};
}
@ -152,7 +159,9 @@ class ScriptRuntime {
envVariables: cleanJson(envVariables),
runtimeVariables: cleanJson(runtimeVariables),
globalEnvironmentVariables: cleanJson(globalEnvironmentVariables),
nextRequestName: bru.nextRequest
nextRequestName: bru.nextRequest,
skipRequest: bru.skipRequest,
stopExecution: bru.stopExecution
};
}
@ -165,7 +174,8 @@ class ScriptRuntime {
collectionPath,
onConsoleLog,
processEnvVars,
scriptingConfig
scriptingConfig,
runRequestByItemPathname
) {
const globalEnvironmentVariables = request?.globalEnvironmentVariables || {};
const collectionVariables = request?.collectionVariables || {};
@ -209,6 +219,10 @@ class ScriptRuntime {
};
}
if(runRequestByItemPathname) {
context.bru.runRequest = runRequestByItemPathname;
}
if (this.runtime === 'quickjs') {
await executeQuickJsVmAsync({
script: script,
@ -221,7 +235,9 @@ class ScriptRuntime {
envVariables: cleanJson(envVariables),
runtimeVariables: cleanJson(runtimeVariables),
globalEnvironmentVariables: cleanJson(globalEnvironmentVariables),
nextRequestName: bru.nextRequest
nextRequestName: bru.nextRequest,
skipRequest: bru.skipRequest,
stopExecution: bru.stopExecution
};
}
@ -269,7 +285,9 @@ class ScriptRuntime {
envVariables: cleanJson(envVariables),
runtimeVariables: cleanJson(runtimeVariables),
globalEnvironmentVariables: cleanJson(globalEnvironmentVariables),
nextRequestName: bru.nextRequest
nextRequestName: bru.nextRequest,
skipRequest: bru.skipRequest,
stopExecution: bru.stopExecution
};
}
}

View File

@ -46,12 +46,14 @@ class TestRuntime {
collectionPath,
onConsoleLog,
processEnvVars,
scriptingConfig
scriptingConfig,
runRequestByItemPathname
) {
const globalEnvironmentVariables = request?.globalEnvironmentVariables || {};
const collectionVariables = request?.collectionVariables || {};
const folderVariables = request?.folderVariables || {};
const requestVariables = request?.requestVariables || {};
const assertionResults = request?.assertionResults || [];
const bru = new Bru(envVariables, runtimeVariables, processEnvVars, collectionPath, collectionVariables, folderVariables, requestVariables, globalEnvironmentVariables);
const req = new BrunoRequest(request);
const res = new BrunoResponse(response);
@ -75,6 +77,7 @@ class TestRuntime {
}
const __brunoTestResults = new TestResults();
const test = Test(__brunoTestResults, chai);
if (!testsFile || !testsFile.length) {
@ -88,6 +91,14 @@ class TestRuntime {
};
}
bru.getTestResults = async () => {
let results = __brunoTestResults.getResults();
return results;
}
bru.getAssertionResults = async () => {
return assertionResults
}
const context = {
test,
bru,
@ -113,6 +124,10 @@ class TestRuntime {
};
}
if(runRequestByItemPathname) {
context.bru.runRequest = runRequestByItemPathname;
}
if (this.runtime === 'quickjs') {
await executeQuickJsVmAsync({
script: testsFile,

View File

@ -1,3 +1,4 @@
const { cleanJson } = require('../../../utils');
const { marshallToVm } = require('../utils');
const addBruShimToContext = (vm, bru) => {
@ -123,6 +124,70 @@ const addBruShimToContext = (vm, bru) => {
vm.setProp(bruObject, 'getCollectionVar', getCollectionVar);
getCollectionVar.dispose();
let getTestResults = vm.newFunction('getTestResults', () => {
const promise = vm.newPromise();
bru.getTestResults()
.then((results) => {
promise.resolve(marshallToVm(cleanJson(results), vm));
})
.catch((err) => {
promise.resolve(
marshallToVm(
cleanJson({
message: err.message
}),
vm
)
);
});
promise.settled.then(vm.runtime.executePendingJobs);
return promise.handle;
});
getTestResults.consume((handle) => vm.setProp(bruObject, 'getTestResults', handle));
let getAssertionResults = vm.newFunction('getAssertionResults', () => {
const promise = vm.newPromise();
bru.getAssertionResults()
.then((results) => {
promise.resolve(marshallToVm(cleanJson(results), vm));
})
.catch((err) => {
promise.resolve(
marshallToVm(
cleanJson({
message: err.message
}),
vm
)
);
});
promise.settled.then(vm.runtime.executePendingJobs);
return promise.handle;
});
getAssertionResults.consume((handle) => vm.setProp(bruObject, 'getAssertionResults', handle));
let runRequestHandle = vm.newFunction('runRequest', (args) => {
const promise = vm.newPromise();
bru.runRequest(vm.dump(args))
.then((response) => {
const { status, headers, data, dataBuffer, size } = response || {};
promise.resolve(marshallToVm(cleanJson({ status, headers, data, dataBuffer, size }), vm));
})
.catch((err) => {
promise.resolve(
marshallToVm(
cleanJson({
message: err.message
}),
vm
)
);
});
promise.settled.then(vm.runtime.executePendingJobs);
return promise.handle;
});
runRequestHandle.consume((handle) => vm.setProp(bruObject, 'runRequest', handle));
const sleep = vm.newFunction('sleep', (timer) => {
const t = vm.getString(timer);
const promise = vm.newPromise();