grunt-cordova-jasmine

Automate Jasmine test suite execution for Cordova plugins inside emulators/devices

npm install grunt-cordova-jasmine
3 downloads in the last week
7 downloads in the last month

grunt-cordova-jasmine

Build Status NPM version

This project contains a Grunt plugin which automates Jasmine Test Suite execution for Apache Cordova plugins. Currently only the Android part is implemented.

You can find a relevant video which depicts the execution procedure here.

Getting Started

This plugin assumes that Android SDK, Ant and Git are already configured in the execution environment.

The plugin requires Grunt ~0.4.1

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

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

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

execute-jasmine-suite task

This task configures the Cordova libraries, sets the given Cordova version, creates a Cordova project, installs the given plugin and executes the configured Jasmine test suite inside emulators and devices. You can execute the task by using:

execute-jasmine-suite:jasmine-suite-1 where jasmine-suite-1 is the jasmine id as shown below

grunt.initConfig({
    grunt_cordova_jasmine: {
        jasmine: [{
            id: "jasmine-suite-1",
            project: {
                android: {
                    targetDir: "./temp/projects/cordova-android",
                    name: "CordovaAndroid",
                    package_name: "org.example.cordova.android",
                    sdk: 'android-18',
                    cordova_version: "3.0.0"
                }
            },
            plugin_test: {
                targetDir: "./temp/plugins",
                testsDir: "./tests",
                testsuite: "index.html",
                plugin: '../aerogear-pushplugin-cordova'
            },
            platforms: ["android"],
            device_ids: {
                android: [/*"emulator-5554", "emulator-5558"*/]
            }
        }],
        cordova_libs: {
            android: {
                path: '',
                git: {
                    url: "https://github.com/tolis-e/cordova-android.git",
                    targetDir: "./temp/cordova-libraries"
                }
            }
        }
    }
});

Gruntfile Configuration

jasmine.id

Type: String
Description: A custom identifier which helps the plugin to read the correct configuration from the Gruntfile
Usage: [required]

jasmine.project.android.targetDir

Type: String
Description: Specifies the directory of the new Cordova Android project which is created by the plugin
Usage: [required]

jasmine.project.android.name

Type: String
Description: Specifies the main activity name
Usage: [required]

jasmine.project.android.package_name

Type: String Description: Specifies the project's package
Usage: [required]

jasmine.project.android.sdk

Type: String
Description: Specifies the target SDK
Usage: [optional]

jasmine.project.android.cordova_version

Type: String
Description: Specifies the Cordova version
Usage: [optional]
This plugin has been tested for Cordova versions >=3.0.0

jasmine.plugin_test.targetDir

Type: String
Description: Specifies the directory to hold the fetched plugin
Usage: [required]

jasmine.plugin_test.testsDir

Type: String
Description: Specifies the directory which contains all the test resources (Jasmine Test Suite, JS libraries etc)
Usage: [required]

jasmine.plugin_test.testsuite

Type: String
Description: Specifies the Jasmine Test Suite which will be executed inside the emulators/devices
Usage: [required]

jasmine.plugin_test.plugin

Type: String
Description: Local path of the plugin which is under testing or the Cordova plugin's registry id
Usage: [required]

jasmine.cordova_libs.android.path

Type: String
Description: Local path of the cordova-android library
Usage: [optional]
If this setting is not provided, the cordova-android library will be cloned from GitHub

jasmine.cordova_libs.android.git.url

Type: String
Description: GitHub URL of the repository which holds the cordova-android library
Usage: [optional]

jasmine.cordova_libs.android.git.targetDir

Type: String Description: The directory to hold the cloned cordova-android repository
Usage: [optional]

If cordova_libs_android_path is defined, then cordova_libs.git.url && cordova_libs.git.targetDir settings are ignored. If all settings are empty then the proccess stops with a failure status.

jasmine.platforms

Type: Array
Description: Specifies the target platforms
Currently only android is supported

jasmine.device_ids.android

Type: Array
Description: Specifies the emulator/device serial numbers in which the Jasmine Suite should be executed.
If it is empty, the tests will be executed inside all the available emulators/devices recognized during the process execution.

Important Notes

The plugin expects that the Jasmine Test Suite contains the Jasmine HTML reporter.

<script type="text/javascript" src="whatever/HtmlReporter.js"></script>

or

<script type="text/javascript" src="whatever/jasmine-html.js"></script>

The Html reporter name should match one of the following regular expressions:

jasmine([^>]*)html([^>]*)js or HtmlReporter([^>]*)js

In addition the plugin searches for a Jasmine addReporter and adds a custom reporter after this line.

Note that when selecting a specific cordova version, the framework app of cordova-android requires a specific target sdk to be installed. Make sure that this target sdk is installed in your environment. In the example which is shipped with the project, the cordova version is set to be 3.0.0. This means that you must have android target sdk android-17 installed in your environment, since cordova-android version 3.0.0 requires the target sdk android-17.

Example

The example folder contains a sample example which depicts how to use this plugin. This example is running on Travis CI

Release History

0.1.0

Released 01 November 2013

  • Initial release
npm loves you