Gruntfile.js 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. /**
  2. * This file is used to test only Handsontable End-to-End tests.
  3. */
  4. var JasmineReporter = require('jasmine-terminal-reporter');
  5. module.exports = function(grunt) {
  6. grunt.initConfig({});
  7. grunt.registerTask('test-handsontable', ['phantomjs-handsontable']);
  8. grunt.registerTask('test-walkontable', ['phantomjs-walkontable']);
  9. grunt.registerTask('phantomjs-handsontable', function() {
  10. spawnPhantomJS('test/E2ERunner.html', this.async());
  11. });
  12. grunt.registerTask('phantomjs-walkontable', function() {
  13. spawnPhantomJS('src/3rdparty/walkontable/test/SpecRunner.html', this.async());
  14. });
  15. function spawnPhantomJS(url, done) {
  16. var phantomjs = require('grunt-lib-phantomjs').init(grunt);
  17. var reporter = new JasmineReporter({
  18. colors: 1,
  19. cleanStack: 1,
  20. verbosity: 4,
  21. listStyle: 'flat',
  22. activity: true,
  23. });
  24. var errorCount = 0;
  25. // jasmine-reporter handlers.
  26. phantomjs.on('jasmine.jasmineStarted', function(msg) {
  27. reporter.jasmineStarted.apply(reporter, arguments);
  28. });
  29. phantomjs.on('jasmine.specStarted', function(msg) {
  30. reporter.specStarted && reporter.specStarted.apply(reporter, arguments);
  31. });
  32. phantomjs.on('jasmine.suiteStarted', function(msg) {
  33. reporter.suiteStarted.apply(reporter, arguments);
  34. });
  35. phantomjs.on('jasmine.jasmineDone', function(msg) {
  36. reporter.jasmineDone.apply(reporter, arguments);
  37. phantomjs.halt();
  38. });
  39. phantomjs.on('jasmine.suiteDone', function(msg) {
  40. reporter.suiteDone.apply(reporter, arguments);
  41. });
  42. phantomjs.on('jasmine.specDone', function(msg) {
  43. if (msg.failedExpectations.length) {
  44. errorCount += msg.failedExpectations.length;
  45. }
  46. reporter.specDone.apply(reporter, arguments);
  47. });
  48. // Built-in error handlers.
  49. phantomjs.on('fail.load', function(url) {
  50. grunt.warn('PhantomJS unable to load URL.', 90);
  51. phantomjs.halt();
  52. });
  53. phantomjs.on('fail.timeout', function() {
  54. grunt.warn('PhantomJS timed out.', 90);
  55. phantomjs.halt();
  56. });
  57. phantomjs.on('error.onError', function(string) {
  58. grunt.log.error('Error caught from PhantomJS.');
  59. grunt.warn(string);
  60. phantomjs.halt();
  61. });
  62. phantomjs.spawn(url, {
  63. options: {
  64. timeout: 10000,
  65. page: {
  66. viewportSize: {width: 1200, height: 1000},
  67. },
  68. },
  69. done: function(err) {
  70. done(err || errorCount === 0);
  71. }
  72. });
  73. }
  74. };