/grunt-contrib-jasmine

Run jasmine specs headlessly through PhantomJS.

Primary LanguageJavaScriptMIT LicenseMIT

grunt-contrib-jasmine v0.6.1 Build Status

Run jasmine specs headlessly through PhantomJS.

Getting Started

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-contrib-jasmine --save-dev

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

grunt.loadNpmTasks('grunt-contrib-jasmine');

Jasmine task

Run this task with the grunt jasmine command.

Automatically builds and maintains your spec runner and runs your tests headlessly through PhantomJS.

Run specs locally or on a remote server

Run your tests on your local filesystem or via a server task like grunt-contrib-connect.

Customize your SpecRunner with templates

Use your own SpecRunner templates to customize how grunt-contrib-jasmine builds the SpecRunner. See the wiki for details and third party templates for examples.

AMD Support

Supports AMD tests via the grunt-template-jasmine-requirejs module

Third party templates

Options

src

Type: String|Array

Your source files. These are the files that you are testing.

options.specs

Type: String|Array

Your Jasmine specs.

options.vendor

Type: String|Array

Third party libraries like jQuery & generally anything loaded before source, specs, and helpers.

options.helpers

Type: String|Array

Non-source, non-spec helper files. In the default runner these are loaded after vendor files

options.styles

Type: String|Array

CSS files that get loaded after the jasmine.css

options.version

Type: String
Default: '2.0.0'

This is the jasmine-version which will be used. currently available versions are:

  • 2.0.0

Due to changes in Jasmine, pre-2.0 versions have been dropped and tracking will resume at 2.0.0

options.outfile

Type: String
Default: _SpecRunner.html

The auto-generated specfile that phantomjs will use to run your tests. Automatically deleted upon normal runs. Use the :build flag to generate a SpecRunner manually e.g. grunt jasmine:myTask:build

options.keepRunner

Type: Boolean
Default: false

Prevents the auto-generated specfile used to run your tests from being automatically deleted.

options.junit.path

Type: String
Default: undefined

Path to output JUnit xml

options.junit.consolidate

Type: Boolean
Default: false

Consolidate the JUnit XML so that there is one file per top level suite.

options.host

Type: String
Default: ''

The host you want PhantomJS to connect against to run your tests.

e.g. if using an ad hoc server from within grunt

host : 'http://127.0.0.1:8000/'

Without a host, your specs will be run from the local filesystem.

options.template

Type: String Object
Default: undefined

Custom template used to generate your Spec Runner. Parsed as underscore templates and provided the expanded list of files needed to build a specrunner.

You can specify an object with a process method that will be called as a template function. See the Template API Documentation for more details.

options.templateOptions

Type: Object
Default: {}

Options that will be passed to your template. Used to pass settings to the template.

Flags

Name: build

Turn on this flag in order to build a SpecRunner html file. This is useful when troubleshooting templates, running in a browser, or as part of a watch chain e.g.

watch: {
  pivotal : {
    files: ['src/**/*.js', 'specs/**/*.js'],
    tasks: 'jasmine:pivotal:build'
  }
}

Filtering specs

filename grunt jasmine --filter=foo will run spec files that have foo in their file name.

folder grunt jasmine --filter=/foo will run spec files within folders that have foo* in their name.

wildcard grunt jasmine --filter=/*-bar will run anything that is located in a folder *-bar

comma separated filters grunt jasmine --filter=foo,bar will run spec files that have foo or bar in their file name.

flags with space grunt jasmine --filter="foo bar" will run spec files that have foo bar in their file name. grunt jasmine --filter="/foo bar" will run spec files within folders that have foo bar* in their name.

Example application usage

Basic Use

Sample configuration to run Pivotal Labs' example Jasmine application.

// Example configuration
grunt.initConfig({
  jasmine: {
    pivotal: {
      src: 'src/**/*.js',
      options: {
        specs: 'spec/*Spec.js',
        helpers: 'spec/*Helper.js'
      }
    }
  }
});

Supplying a custom template

Supplying a custom template to the above example

// Example configuration
grunt.initConfig({
  jasmine: {
    customTemplate: {
      src: 'src/**/*.js',
      options: {
        specs: 'spec/*Spec.js',
        helpers: 'spec/*Helper.js',
        template: 'custom.tmpl'
      }
    }
  }
});

Sample RequireJS/NPM Template usage

// Example configuration
grunt.initConfig({
  jasmine: {
    yourTask: {
      src: 'src/**/*.js',
      options: {
        specs: 'spec/*Spec.js',
        template: require('grunt-template-jasmine-requirejs')
      }
    }
  }
});

NPM Templates are just node modules, so you can write and treat them as such.

Please see the grunt-template-jasmine-requirejs documentation for more information on the RequireJS template.

Release History

  • 2014-01-29   v0.6.0   Jasmine 2.0.0 support Improved logging support Various merges/bugfixes
  • 2013-08-02   v0.5.2   Fixed breakage with iframes /44 Added filter flag / 70 Fixed junit failure output /77
  • 2013-06-18   v0.5.1   Merged /69 grunt async not called when tests fail OR keepRunner is true
  • 2013-06-15   v0.5.0   updated rimraf made teardown async, added Function.prototype.bind polyfill breaking (templates) changed input options for getRelativeFileList breaking (usage) failing task on phantom error (SyntaxError, TypeError, et al)
  • 2013-04-03   v0.4.2   bumped grunt-lib-phantomjs to 0.3.0/1.9 (closes merged addressed
  • 2013-03-08   v0.4.0   bumped grunt-lib-phantomjs to 0.2.0/1.8 allowed spec/vendor/helper list to return non-matching files (e.g. for remote, http) merged merged
  • 2013-02-24   v0.3.3   Added better console output (via Gabor Kiss @Neverl)
  • 2013-02-17   v0.3.2   Ensure Gruntfile.js is included on npm.
  • 2013-02-15   v0.3.1   First official release for Grunt 0.4.0.
  • 2013-01-22   v0.3.1rc7   Exposed phantom and sendMessage to templates
  • 2013-01-22   v0.3.0rc7   Updated dependencies for grunt v0.4.0rc6/rc7
  • 2013-01-08   v0.3.0rc5   Updating to work with grunt v0.4.0rc5. Switching to this.filesSrc api. Added JUnit xml output (via Kelvin Luck @vitch) Passing console.log from browser to verbose grunt logging Support for templates as separate node modules Removed internal requirejs template (see grunt-template-jasmine-requirejs)
  • 2012-12-03   v0.2.0   Generalized requirejs template config Added loader plugin Tests for templates Updated jasmine to 1.3.0
  • 2012-11-24   v0.1.2   Updated for new grunt/grunt-contrib apis
  • 2012-11-07   v0.1.1   Fixed race condition in requirejs template
  • 2012-11-07   v0.1.0   Ported grunt-jasmine-runner and grunt-jasmine-task to grunt-contrib

Task submitted by Jarrod Overson

This file was generated on Thu Jan 30 2014 12:26:49.