karma-iframes
Advanced tools
Comparing version
@@ -14,2 +14,6 @@ # Changelog | ||
### 1.2.2 | ||
* Serialize error objects so they can be passed to the parent context. | ||
## 1.1 | ||
@@ -16,0 +20,0 @@ |
@@ -7,3 +7,3 @@ let fs = require('fs'); | ||
let IFRAMES_ADAPTER = require.resolve('../static/iframes-adapter.js'); | ||
let REVERSE_CONTEXT = require.resolve('../static/reverse-context.js'); | ||
let REVERSE_CONTEXT = require.resolve('../static/reverse-context.js').split(path.sep).join('/'); | ||
@@ -10,0 +10,0 @@ let nonIncludedFiles = []; |
@@ -66,3 +66,3 @@ let path = require('path'); | ||
let filesPromise = createFilesPromise(fileList, emitter); | ||
function transform(files, chunk, req) { | ||
@@ -75,3 +75,3 @@ let basePath = injector.get('config.basePath'); | ||
let reverseContextFile = files.served.find((file) => { | ||
return (file.originalPath === REVERSE_CONTEXT) || (file.originalPath === (REVERSE_CONTEXT.split(path.sep).join('/'))); | ||
return file.originalPath === REVERSE_CONTEXT; | ||
}); | ||
@@ -78,0 +78,0 @@ if (!reverseContextFile.isUrl) { |
{ | ||
"name": "karma-iframes", | ||
"version": "1.2.1", | ||
"version": "1.2.2", | ||
"description": "Lets you run each test in a separate context, loaded as an iframe.", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
@@ -61,3 +61,13 @@ // jshint es3: false | ||
// Other message (log, error); send directly to karma | ||
karma[message].apply(karma, msg.data.slice(2)); | ||
var args = msg.data.slice(2) | ||
.map(arg => { | ||
if (typeof arg === 'object' && '@@_serializedErrorFromIFrame' in arg) { | ||
var newError = new Error(arg.message); | ||
newError.name = arg.name; | ||
newError.stack = arg.stack; | ||
return newError; | ||
} | ||
return arg; | ||
}); | ||
karma[message].apply(karma, args); | ||
} | ||
@@ -64,0 +74,0 @@ }; |
@@ -18,3 +18,3 @@ // Mock the __karma__ to be used inside the iframe | ||
start: UNIMPLEMENTED_START, | ||
setupContext | ||
setupContext: setupContext | ||
}; | ||
@@ -24,2 +24,12 @@ | ||
args.unshift('iframe-test-results', methodName); | ||
for (var i = 2, l = args.length; i < l; ++i) { | ||
if (args[i] instanceof Error) { | ||
args[i] = { | ||
'@@_serializedErrorFromIFrame': true, | ||
name: args[i].name, | ||
message: args[i].message, | ||
stack: args[i].stack | ||
}; | ||
} | ||
} | ||
window.parent.postMessage(args, window.location.origin); | ||
@@ -26,0 +36,0 @@ } |
66454
0.88%672
3.07%