From 0238dffe71db4ac44692d861247d63b0b2f2c9e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?D=C3=A1vid=20Szab=C3=B3?= Date: Wed, 31 Aug 2016 14:11:29 +0200 Subject: [PATCH] Update CasperJS and refactor tests --- .travis.yml | 2 +- Gruntfile.js | 31 ++++++++------- karma.conf.js | 3 ++ package.json | 5 ++- test/casperjs/DrawingTest.js | 66 +++++++++++++++++--------------- test/casperjs/SmokeTest.js | 32 +++++++++------- test/casperjs/TravisTestSuite.js | 4 +- 7 files changed, 78 insertions(+), 65 deletions(-) diff --git a/.travis.yml b/.travis.yml index 39bd5eae..49128ec3 100644 --- a/.travis.yml +++ b/.travis.yml @@ -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: diff --git a/Gruntfile.js b/Gruntfile.js index 8e3ea6f0..a9a8d1d4 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -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']); diff --git a/karma.conf.js b/karma.conf.js index 4292a77f..a54f4be0 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -8,6 +8,9 @@ module.exports = function(config) { var piskelScripts = require('./src/piskel-script-list.js').scripts.map(mapToSrcFolder); 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({ diff --git a/package.json b/package.json index db59a3a1..17a4f61d 100644 --- a/package.json +++ b/package.json @@ -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", diff --git a/test/casperjs/DrawingTest.js b/test/casperjs/DrawingTest.js index 59fa9364..5563fff3 100644 --- a/test/casperjs/DrawingTest.js +++ b/test/casperjs/DrawingTest.js @@ -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); + }); })(); \ No newline at end of file diff --git a/test/casperjs/SmokeTest.js b/test/casperjs/SmokeTest.js index 2bc25ab1..2c3b1b29 100644 --- a/test/casperjs/SmokeTest.js +++ b/test/casperjs/SmokeTest.js @@ -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(); - }); \ No newline at end of file + this.waitForSelector('#drawing-canvas-container canvas', function() { + test.assertExists('#drawing-canvas-container canvas', 'Check if drawing canvas element is created'); + }); + }) + .run(function () { + test.done(); + }); +}); \ No newline at end of file diff --git a/test/casperjs/TravisTestSuite.js b/test/casperjs/TravisTestSuite.js index eec0f7f2..bb4c077c 100644 --- a/test/casperjs/TravisTestSuite.js +++ b/test/casperjs/TravisTestSuite.js @@ -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' ]; \ No newline at end of file