grunt-cordova-jasmine

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

grunt-cordova-jasmine

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.

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');

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"
                }
            }
        }
    }
});

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

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

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

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

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

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

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

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

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

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

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

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

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.

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

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.

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.

The example folder contains a sample example which depicts how to use this plugin.

Released 01 November 2013

  • Initial release