siesta-lite
Version:
Stress-free JavaScript unit testing and functional testing tool, works in NodeJS and browsers
57 lines (41 loc) • 2.02 kB
JavaScript
/*
Siesta 5.6.1
Copyright(c) 2009-2022 Bryntum AB
https://bryntum.com/contact
https://bryntum.com/products/siesta/license
*/
Singleton('Siesta.Project.Browser.Automation.ScriptExecutor', {
has : {
currentScriptExecution : null
},
methods : {
// trying to prevent any possibility of the mess with the script
acceptScriptChunk : function (scriptId, maxMessageSize, chunk, index, isLast) {
var currentScriptExecution = this.currentScriptExecution
if (currentScriptExecution) {
if (currentScriptExecution.id != scriptId) throw new Error("Another execution in progress")
if (currentScriptExecution.maxMessageSize != maxMessageSize) throw new Error("`maxMessageSize` has changed")
} else {
if (index) throw new Error("Starting from non-zero chunk")
this.currentScriptExecution = currentScriptExecution = new Siesta.Project.Browser.Automation.ScriptExecution({
id : scriptId,
maxMessageSize : maxMessageSize
})
}
currentScriptExecution.addChunk(chunk, index)
if (isLast) {
currentScriptExecution.execute()
return this.retrieveScriptResult(scriptId, 0)
} else {
return "Chunk received successfully"
}
},
retrieveScriptResult : function (scriptId, index) {
var currentScriptExecution = this.currentScriptExecution
if (!currentScriptExecution) throw new Error("No current script execution")
var res = currentScriptExecution.getPartialResult(scriptId, index)
if (currentScriptExecution.isDestroyed) this.currentScriptExecution = null
return res
}
}
})