2012-11-02 13:03:09 +08:00
# grunt-contrib-jasmine [![Build Status](https://secure.travis-ci.org/gruntjs/grunt-contrib-jasmine.png?branch=master)](http://travis-ci.org/gruntjs/grunt-contrib-jasmine)
> Run jasmine specs headlessly through PhantomJS.
## Getting Started
2012-12-03 16:17:06 +08:00
If you haven't used [grunt][] before, be sure to check out the [Getting Started][] guide, as it explains how to create a [gruntfile][Getting Started] as well as install and use grunt plugins. Once you're familiar with that process, install this plugin with this command:
2012-11-02 13:03:09 +08:00
2012-12-03 16:17:06 +08:00
```shell
2012-11-02 13:03:09 +08:00
npm install grunt-contrib-jasmine --save-dev
```
[grunt]: http://gruntjs.com/
[Getting Started]: https://github.com/gruntjs/grunt/blob/devel/docs/getting_started.md
2012-12-03 16:17:06 +08:00
## Jasmine task
_Run this task with the `grunt jasmine` command._
2012-11-02 13:03:09 +08:00
2012-11-02 13:03:09 +08:00
### Overview
grunt-contrib-jasmine automatically builds and maintains your spec runner and runs your tests headlessly through
phantomjs
Substantial credit goes to [Camille Reynders ](http://creynders.be/ ) (@creynders) for the first decent implementation
of jasmine through grunt which served as motivation for all the future work.
#### Run specs locally or on an ad hoc server
Run your tests on your local filesystem or via a server task like [grunt-contrib-connect][].
#### AMD Support
2013-01-09 03:28:26 +08:00
Supports AMD tests via the [grunt-template-jasmine-requirejs ](https://github.com/jsoverson/grunt-template-jasmine-requirejs ) module
2012-11-02 13:03:09 +08:00
#### Customize your SpecRunner with your own template
2013-01-09 03:28:26 +08:00
Supply your templates that will be used to automatically build the SpecRunner.
2012-11-02 13:03:09 +08:00
2012-11-09 08:57:30 +08:00
#### Example application usage
2012-11-02 13:03:09 +08:00
2012-11-09 08:57:30 +08:00
- [Pivotal Labs' sample application ](https://github.com/jsoverson/grunt-contrib-jasmine-example )
2012-11-02 13:03:09 +08:00
[grunt-contrib-connect]: https://github.com/gruntjs/grunt-contrib-connect
2012-11-02 13:03:09 +08:00
### Options
2012-11-02 13:03:09 +08:00
#### src
Type: `String|Array`
*Minimatch* - This defines your source files. These are the files that you are testing.
2012-11-02 13:03:09 +08:00
2012-11-02 13:03:09 +08:00
#### options.specs
Type: `String|Array`
2012-11-02 13:03:09 +08:00
2012-11-02 13:03:09 +08:00
*Minimatch* - These are your Jasmine specs.
2012-11-02 13:03:09 +08:00
2012-11-02 13:03:09 +08:00
#### options.vendor
Type: `String|Array`
2012-11-02 13:03:09 +08:00
2012-11-02 13:03:09 +08:00
*Minimatch* - These are third party libraries, generally loaded before anything else happens in your tests. You'll likely add things
like jQuery and Backbone here.
2012-11-02 13:03:09 +08:00
2012-11-02 13:03:09 +08:00
#### options.helpers
Type: `String|Array`
2012-11-02 13:03:09 +08:00
2012-11-02 13:03:09 +08:00
*Minimatch* - These are non-source, non-spec helper files. In the default runner these are loaded after `vendor` files
2012-11-02 13:03:09 +08:00
2012-11-02 13:03:09 +08:00
#### options.outfile
Type: `String`
Default: `_SpecRunner.html`
2012-11-02 13:03:09 +08:00
2013-01-09 03:28:26 +08:00
This is the auto-generated specfile that phantomjs will use to run your tests.
This is automatically deleted upon normal runs
#### 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.
2012-11-02 13:03:09 +08:00
#### options.host
Type: `String`
Default: ''
This is the host you want phantomjs to connect against to run your tests.
e.g. if using an ad hoc server from within grunt
2012-11-02 13:03:09 +08:00
```js
2012-12-03 16:17:06 +08:00
host : 'http://127.0.0.1:8000/'
2012-11-02 13:03:09 +08:00
```
Or, using templates
```js
2012-12-03 16:17:06 +08:00
host : 'http://127.0.0.1:< %= connect.port %>/'
2012-11-02 13:03:09 +08:00
```
Not defining a host will mean your specs will be run from the local filesystem.
#### options.template
2013-01-09 03:28:26 +08:00
Type: `String` `Object`
Default: undefined
2012-11-02 13:03:09 +08:00
2013-01-09 03:28:26 +08:00
Specify a custom template used to generate your Spec Runner. Templates are parsed as underscore templates and provided
2012-11-02 13:03:09 +08:00
the expanded list of files needed to build a specrunner.
2013-01-09 03:28:26 +08:00
You can specify an object with a `process` method that will be called as a template function.
See the [Template API Documentation ](needs-wiki-link ) for more details.
2012-11-02 13:03:09 +08:00
#### options.templateOptions
Type: `Object`
Default: `{}`
These options will be passed to your template as an 'options' hash so that you can provide settings to your template.
2012-11-09 08:57:30 +08:00
### Flags
Name: `build`
2012-12-03 16:17:06 +08:00
Turn on this flag in order to rebuild the specrunner without deleting it. This is useful when troublshooting templates,
running in a browser, or as part of a watch chain e.g.
2012-11-09 08:57:30 +08:00
```js
2012-12-03 16:17:06 +08:00
watch: {
pivotal : {
files: ['src/**/*.js', 'specs/**/*.js'],
tasks: 'jasmine:pivotal:build'
2012-11-09 08:57:30 +08:00
}
2012-12-03 16:17:06 +08:00
}
2012-11-09 08:57:30 +08:00
```
2012-11-02 13:03:09 +08:00
2012-11-02 13:03:09 +08:00
#### Basic Use
2012-11-02 13:03:09 +08:00
Sample configuration to run Pivotal Labs' example Jasmine application.
```js
2012-12-03 16:17:06 +08:00
// Example configuration
grunt.initConfig({
jasmine: {
pivotal: {
src: 'src/**/*.js'
options: {
specs: 'spec/*Spec.js',
helpers: 'spec/*Helper.js'
}
2012-11-02 13:03:09 +08:00
}
}
}
```
#### Supplying a custom template
Supplying a custom template to the above example
```js
2012-12-03 16:17:06 +08:00
// Example configuration
grunt.initConfig({
jasmine: {
customTemplate: {
src: 'src/**/*.js',
options: {
specs: 'spec/*Spec.js',
helpers: 'spec/*Helper.js'
template: 'custom.tmpl'
}
2012-11-02 13:03:09 +08:00
}
}
}
```
#### Sample RequireJS usage
2013-01-09 03:28:26 +08:00
Please see the [grunt-template-jasmine-requirejs ](https://github.com/jsoverson/grunt-template-jasmine-requirejs )
2012-11-02 13:03:09 +08:00
2012-11-02 13:03:09 +08:00
## Release History
2013-01-09 03:28:26 +08:00
* 2013-01-07 v0.3.0 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-14 01:08:18 +08:00
* 2012-12-02 v0.2.0 Generalized requirejs template config Added loader plugin Tests for templates Updated jasmine to 1.3.0
2012-12-03 16:17:06 +08:00
* 2012-11-23 v0.1.2 Updated for new grunt/grunt-contrib apis
* 2012-11-06 v0.1.1 Fixed race condition in requirejs template
* 2012-11-06 v0.1.0 Ported grunt-jasmine-runner and grunt-jasmine-task to grunt-contrib
---
2012-11-02 13:03:09 +08:00
2012-12-03 16:17:06 +08:00
Task submitted by [Jarrod Overson ](http://jarrodoverson.com )
2012-11-02 13:03:09 +08:00
2013-01-09 03:28:26 +08:00
*This file was generated on Tue Jan 08 2013 11:28:08.*