A browser based plugin simulation tool to aid development and testing of Cordova applications.
Note that this is currently a work in progress / prototype! It still lacks a bunch of functionality, and may be quite buggy.
It is somewhat based on Apache Ripple™, but aims to improve it in the following ways:
- Separates the simulation UI from the app (to improve the debugging experience, and allow for using modern browser developer tools). This also protects the UI from a misbehaving app.
- Allows plugins to define their own simulation UI.
npm install -g cordova-simulate
From the command line anywhere within a Cordova project, enter the following:
simulate [<platform>] [--target=<browser>]
- platform is any Cordova platform that has been added to your project. Defaults to
- browser is the name of the browser to launch your app in. Can be any of the following:
safari. Defaults to
You can also
require('cordova-simulate') and launch a simulation via the API:
var simulate = require('cordova-simulate'); simulate(opts);
Where opts is an object with the following properties (all optional):
- platform - any Cordova platform that has been added to your project. Defaults to
- target - the name of the browser to launch your app in. Can be any of the following:
safari. Defaults to
- port - the desired port for the server to use. Defaults to
- dir - the directory to launch from (where it should look for a Cordova project). Defaults to cwd.
What it does
Cordova simulate will launch your app in the browser, and open a second browser window displaying UI that allows you to control how plugins in your application work.
This preview version currently includes built-in support for the following Cordova plugins:
It also allows for plugins to define their own UI. To add simulation support to a plugin, follow these steps:
- Clone the
cordova-simulategit repository (
git clone https://github.com/TimBarham/cordova-simulate.git), as it contains useful example code (see
- Add your plugin UI code to your plugin in
src/simulation. Follow the file naming conventions seen in the built-in plugins.