Update CasperJS and refactor tests

This commit is contained in:
Dávid Szabó 2016-08-31 14:11:29 +02:00
parent 52eaa8b170
commit 0238dffe71
7 changed files with 78 additions and 65 deletions

View File

@ -6,7 +6,7 @@ before_install:
- npm install -g grunt-cli
- git clone git://github.com/n1k0/casperjs.git ~/casperjs
- cd ~/casperjs
- git checkout tags/1.0.2
- git checkout tags/1.1.3
- export PATH=$PATH:`pwd`/bin
- cd -
before_script:

View File

@ -39,19 +39,18 @@ module.exports = function(grunt) {
var tests = prefixPaths(testPaths, "test/casperjs/");
return {
filesSrc : tests,
files : {src: tests},
options : {
args : {
baseUrl : 'http://' + host + ':' + PORT.TEST,
mode : DEV_MODE,
delay : delay
},
async : false,
direct : false,
logLevel : 'info',
printCommand : false,
printFilePaths : true
}
casperjsOptions: [
'--baseUrl=http://' + host + ':' + PORT.TEST,
'--mode=' + DEV_MODE,
'--delay=' + delay,
'--verbose=false',
'--log-level=info',
'--print-command=false',
'--print-file-paths=true',
]
},
};
};
@ -282,7 +281,7 @@ module.exports = function(grunt) {
}
},
ghost : {
casperjs : {
'travis' : getCasperConfig('TravisTestSuite.js', 10000, hostname),
'local' : getCasperConfig('LocalTestSuite.js', 50, hostname)
},
@ -320,10 +319,10 @@ module.exports = function(grunt) {
grunt.registerTask('unit-test', ['karma']);
// Validate & Test
grunt.registerTask('test-travis', ['lint', 'unit-test', 'build-dev', 'connect:test', 'ghost:travis']);
grunt.registerTask('test-travis', ['lint', 'unit-test', 'build-dev', 'connect:test', 'casperjs:travis']);
// Validate & Test (faster version) will NOT work on travis !!
grunt.registerTask('test-local', ['lint', 'unit-test', 'build-dev', 'connect:test', 'ghost:local']);
grunt.registerTask('test-local-nolint', ['unit-test', 'build-dev', 'connect:test', 'ghost:local']);
grunt.registerTask('test-local', ['lint', 'unit-test', 'build-dev', 'connect:test', 'casperjs:local']);
grunt.registerTask('test-local-nolint', ['unit-test', 'build-dev', 'connect:test', 'casperjs:local']);
grunt.registerTask('test', ['test-travis']);
grunt.registerTask('precommit', ['test-local']);

View File

@ -9,6 +9,9 @@ module.exports = function(config) {
piskelScripts.push('test/js/testutils/**/*.js');
piskelScripts.push('test/js/**/*.js');
// Polyfill for Object.assign (missing in PhantomJS)
piskelScripts.push('./node_modules/phantomjs-polyfill-object-assign/object-assign-polyfill.js');
config.set({
// base path that will be used to resolve all patterns (eg. files, exclude)

View File

@ -29,6 +29,7 @@
"devDependencies": {
"dateformat": "1.0.11",
"grunt": "^0.4.5",
"grunt-casperjs": "^2.2.1",
"grunt-contrib-clean": "1.0.0",
"grunt-contrib-concat": "1.0.1",
"grunt-contrib-connect": "1.0.2",
@ -36,7 +37,6 @@
"grunt-contrib-jshint": "1.0.0",
"grunt-contrib-uglify": "1.0.1",
"grunt-contrib-watch": "1.0.0",
"grunt-ghost": "1.1.0",
"grunt-include-replace": "4.0.1",
"grunt-jscs": "2.8.0",
"grunt-karma": "1.0.0",
@ -51,7 +51,8 @@
"karma-jasmine": "1.0.2",
"karma-phantomjs-launcher": "0.2.3",
"load-grunt-tasks": "3.5.0",
"phantomjs": "1.9.19"
"phantomjs": "1.9.19",
"phantomjs-polyfill-object-assign": "0.0.2"
},
"window": {
"title": "Piskel",

View File

@ -1,42 +1,48 @@
(function () {
var tests = require('./test/drawing/DrawingTests.casper.js').tests;
var tests = require('../drawing/DrawingTests.casper.js').tests;
// Polyfill for Object.assign (missing in PhantomJS)
casper.options.clientScripts.push('./node_modules/phantomjs-polyfill-object-assign/object-assign-polyfill.js');
var baseUrl = casper.cli.get('baseUrl')+"?debug";
var resultSelector = '#drawing-test-result';
casper.start();
var runTest = function (index) {
var test = 'drawing/tests/' + tests[index];
casper.test.begin('Drawing Tests', tests.length, function(test) {
casper.start();
casper.open(baseUrl + "&test-run=" + test);
var runTest = function (index) {
var currentTest = 'drawing/tests/' + tests[index];
casper.then(function () {
this.echo('Running test : ' + test);
this.wait(casper.cli.get('delay'));
});
casper.open(baseUrl + "&test-run=" + currentTest);
casper.then(function () {
this.echo('... Waiting for test result : ' + resultSelector);
this.waitForSelector(resultSelector, function () {
// then
var result = this.getHTML(resultSelector);
this.echo('... Test finished : ' + result);
this.test.assertEquals(result, 'OK');
}, function () {
// onTimeout
this.test.fail('Test timed out');
}, 60*1000);
})
.run(function () {
if (tests[index+1]) {
runTest(index+1);
} else {
this.test.done();
}
});
};
casper.then(function () {
this.echo('Running test : ' + currentTest);
this.wait(casper.cli.get('delay'));
});
runTest(0);
casper.then(function () {
this.echo('... Waiting for test result : ' + resultSelector);
this.waitForSelector(resultSelector, function () {
// then
var result = this.getHTML(resultSelector);
this.echo('... Test finished : ' + result);
test.assertEquals(result, 'OK');
}, function () {
// onTimeout
test.fail('Test timed out');
}, 15*1000);
})
.run(function () {
if (tests[index+1]) {
runTest(index+1);
} else {
test.done();
}
});
};
runTest(0);
});
})();

View File

@ -1,15 +1,19 @@
casper
.start(casper.cli.get('baseUrl')+"?debug")
.then(function () {
this.wait(casper.cli.get('delay'));
})
.then(function () {
this.echo(casper.cli.get('baseUrl')+"?debug");
// If there was a JS error after the page load, casper won't perform asserts
this.test.assertExists('html', 'Casper JS cannot assert DOM elements. A JS error has probably occured.');
casper.test.begin('Smoke Test', 2, function(test) {
casper
.start(casper.cli.get('baseUrl')+"/?debug")
.then(function () {
this.wait(casper.cli.get('delay'));
})
.then(function () {
this.echo(casper.cli.get('baseUrl')+"/?debug");
// If there was a JS error after the page load, casper won't perform asserts
test.assertExists('html', 'Casper JS cannot assert DOM elements. A JS error has probably occured.');
this.test.assertExists('#drawing-canvas-container canvas', 'Check if drawing canvas element is created');
})
.run(function () {
this.test.done();
});
this.waitForSelector('#drawing-canvas-container canvas', function() {
test.assertExists('#drawing-canvas-container canvas', 'Check if drawing canvas element is created');
});
})
.run(function () {
test.done();
});
});

View File

@ -1,4 +1,4 @@
(typeof exports != "undefined" ? exports : pskl_exports).tests = [
// did not manage to successfully run drawing tests on travis yet ...
'SmokeTest.js'
'SmokeTest.js',
'DrawingTest.js'
];