grunt-jasmine-legacy

A Grunt task for running Jasmine v1.3 tests using RequireJS and PhantomJS

grunt-jasmine-legacy

A Grunt task for running Jasmine v1.3 tests using RequireJS and PhantomJS.

This plugin requires Grunt ~0.4.0

If you haven't used Grunt before, be sure to check out the Getting Started guide, as it explains how to create a Gruntfile as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:

npm install grunt-jasmine-legacy --save-dev

Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:

grunt.loadNpmTasks('grunt-jasmine-legacy,');

Why not use grunt-contrib-jasmine?

The grunt-contrib-jasmine task has dropped support for Jasmine v1.3. I created this task for a project with a large base of tests written using the Jasmine v1.3 API.

The grunt-jasmine-legacy task:

  • Uses a template to create an AMD spec runner
  • Executes the spec runner using PhantomJS
  • Reports the results using the PhantomJSReporter, which listens to events emitted by grunt-lib-phantomjs, and outputs test results to the console.
  • Saves the spec runner HTML file for further debugging, if needed (using the standard jasmine.HTMLReporter)
'jasmine-legacy': {
 
  // Each sub-task will have a specrunner created for it 
  // eg /tests/specrunner-myLib.html 
  myLib: {
    options: {
 
      // Location of require.config settings 
      amdConfigModules: [
        '../config-amd'
      ],
 
      // Additional AMD configuration 
      // to apply to the spec runner 
      amdConfig: {
        paths: {
          someRealObject: 'someMockObject'
        }
      },
 
      // Location of Jasmine specs to test 
      specs: [
        'tests/**/*.spec.js'
      ],
 
      // AMD modules required for all tests 
      libs: [
        'jasmine',
        'jasmine-console',
        'jasmine-html',
        'lib/myCustomJasmineMatchers',
        'sinon'
      ],
 
      // Files to not be included as test specs 
      exclude: [
        'tests/fixtures/**/*.js'
      ],
 
      // PhantomJS timeout (ms). Default is 3000 
      timeout: 10000
    }
  },
}