test to verify hanging on failed load of iframe
This commit is contained in:
parent
ea5334ec7e
commit
af73f349f8
28
Gruntfile.js
28
Gruntfile.js
@ -9,7 +9,22 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
module.exports = function(grunt) {
|
module.exports = function(grunt) {
|
||||||
|
|
||||||
grunt.initConfig({
|
grunt.initConfig({
|
||||||
|
|
||||||
|
connect: {
|
||||||
|
return500: {
|
||||||
|
options: {
|
||||||
|
port: 9000,
|
||||||
|
middleware: function(connect, options) {
|
||||||
|
return [function(req, res, next){
|
||||||
|
res.statusCode = 500;
|
||||||
|
res.end();
|
||||||
|
}];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
jshint: {
|
jshint: {
|
||||||
all: [
|
all: [
|
||||||
'Gruntfile.js',
|
'Gruntfile.js',
|
||||||
@ -45,8 +60,16 @@ module.exports = function(grunt) {
|
|||||||
consolidate: true
|
consolidate: true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
selfTest: {
|
||||||
|
options: {
|
||||||
|
specs:["test/selfTest/*.js"],
|
||||||
|
"--web-security": "no"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
nodeunit: {
|
nodeunit: {
|
||||||
tasks: ['test/*_test.js']
|
tasks: ['test/*_test.js']
|
||||||
}
|
}
|
||||||
@ -57,7 +80,8 @@ module.exports = function(grunt) {
|
|||||||
grunt.loadNpmTasks('grunt-contrib-jshint');
|
grunt.loadNpmTasks('grunt-contrib-jshint');
|
||||||
grunt.loadNpmTasks('grunt-contrib-nodeunit');
|
grunt.loadNpmTasks('grunt-contrib-nodeunit');
|
||||||
grunt.loadNpmTasks('grunt-contrib-internal');
|
grunt.loadNpmTasks('grunt-contrib-internal');
|
||||||
|
grunt.loadNpmTasks('grunt-contrib-connect');
|
||||||
|
|
||||||
grunt.registerTask('test', ['jshint', 'jasmine', 'nodeunit']);
|
grunt.registerTask('test', ['connect:return500', 'jasmine', 'nodeunit']);
|
||||||
grunt.registerTask('default', ['test', 'build-contrib']);
|
grunt.registerTask('default', ['jshint', 'test', 'build-contrib']);
|
||||||
};
|
};
|
||||||
|
@ -28,7 +28,7 @@
|
|||||||
"test": "grunt test"
|
"test": "grunt test"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"grunt-lib-phantomjs": "~0.2.0",
|
"grunt-lib-phantomjs": "git://github.com/HBehrens/grunt-lib-phantomjs.git#20f675c331893ee4b1a328ae7a1ce82d75099e50",
|
||||||
"rimraf": "~2.0.3"
|
"rimraf": "~2.0.3"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
32
test/selfTest/TaskSpec.js
Normal file
32
test/selfTest/TaskSpec.js
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
describe("Task", function() {
|
||||||
|
|
||||||
|
/*
|
||||||
|
when running this test with `grunt jasmine:selfTest -d` you got this output
|
||||||
|
|
||||||
|
[D] ["phantomjs","onLoadFinished","success"]
|
||||||
|
[D] ["phantomjs","onResourceRequested","http://httpbin.org/status/500"]
|
||||||
|
[D] ["phantomjs","onResourceReceived","http://httpbin.org/status/500"]
|
||||||
|
[D] ["phantomjs","onLoadFinished","fail"]
|
||||||
|
[D] ["phantomjs","fail.load","_SpecRunner.html"]
|
||||||
|
|
||||||
|
phantomjs.page.onLoadFinished seems to be called for iframes, too.
|
||||||
|
A failing onLoadFinished caused this grunt taks to hang.
|
||||||
|
Now, after removing the event handler, this following test should work as expected
|
||||||
|
*/
|
||||||
|
it("can handle fail on iframe", function(){
|
||||||
|
var waitedLongEnough;
|
||||||
|
runs(function(){
|
||||||
|
iframe = document.createElement("iframe");
|
||||||
|
iframe.src = "http://localhost:9000";
|
||||||
|
document.body.appendChild(iframe);
|
||||||
|
|
||||||
|
setTimeout(function(){waitedLongEnough=true;}, 50);
|
||||||
|
});
|
||||||
|
waitsFor(function(){
|
||||||
|
return waitedLongEnough;
|
||||||
|
});
|
||||||
|
runs(function(){
|
||||||
|
expect(true).toBeTruthy("without change in grunt-lib-phantomjs, jasmine would never reach this line");
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
Loading…
Reference in New Issue
Block a user