Paramedic • noun provides advanced levels of care at the point of illness or injury, including out of hospital treatment, and diagnostic services
cordova-paramedic
is a tool to automate execution of Cordova plugins tests (via cordova-plugin-test-framework
).
You can use Paramedic to build and run a Cordova app with plugin tests, run these tests on local and remote emulators on Sauce Labs, and report the results. It can be used on a local or Continuous Integration environment.
Cordova Paramedic is currently used to automatically run all plugin tests on CI.
(See this workshop instructions for some additional explanation.)
A full Paramedic run will:
cordova create
cordova plugin add %local_path%
(e.g. cordova plugin add ../cordova-plugin-inappbrowser
):../cordova-plugin-inappbrowser
)../cordova-plugin-inappbrowser/tests
)cordova-plugin-test-framework
(from npm)paramedic-plugin
cdvtests/index.html
(provided by cordova-plugin-test-framework
and the plugin tests)cordova platform add ...
cordova requirements ...
*wkwebview*
is installedskipBuster
skipBuster
as well) every 2.5 secondsios_webkit_debug_proxy
) npm install appium
) and start Appium server Using npmjs registry version:
npm install -g cordova-paramedic
Using GitHub version:
npm install -g github:apache/cordova-paramedic
or
git clone https://github.com/apache/cordova-paramedic
If cloning from GitHub, you will need to run npm link
inside the checkout repository.
Alternativly, replace all occurences of cordova-paramedic
with the command:
cordova-paramedic/main.js
for Linux or macOSnode cordova-paramedic/main.js
for WindowsParamedic parameters can be passed via command line arguments or separate configuration file:
By Command Line Arguments:
cordova-paramedic --platform PLATFORM --plugin PATH <other parameters>
By Configuration File:
cordova-paramedic --config ./sample-config/.paramedic.config.js
Some common use cases of Paramedic:
Run without any parameters to get a list of supported parameters:
cordova-paramedic
Test your current plugin on an Android emulator:
cordova-paramedic --platform android --plugin ./
Test your current plugin on a specific Android device (ID via adb devices -l
):
cordova-paramedic --platform android --plugin ./ --target 02e7f7e9215da7f8 --useTunnel
Test your current plugin on an Android 7.0 emulator on Sauce Labs:
cordova-paramedic --config conf/pr/android-7.0 --plugin ./
--platform
(required)Specifies target Cordova platform (could refer to local directory, npm or git)
cordova-paramedic --platform ios --plugin cordova-plugin-inappbrowser cordova-paramedic --platform ios@4.0 --plugin cordova-plugin-inappbrowser cordova-paramedic --platform ios@../cordova-ios --plugin cordova-plugin-inappbrowser cordova-paramedic --platform ios@https://github.com/apache/cordova-ios.git#4.1.0 --plugin cordova-plugin-inappbrowser
--plugin
(required)Specifies test plugin, you may specify multiple --plugin
flags and they will all be installed and tested together. You can refer to absolute path, npm registry or git repo. If the plugin requires variables to install, you can specify them along with its name.
cordova-paramedic --platform ios --plugin cordova-plugin-inappbrowser cordova-paramedic --platform ios --plugin 'azure-mobile-engagement-cordova --variable AZME_IOS_CONNECTION_STRING=Endpoint=0;AppId=0;SdkKey=0' cordova-paramedic --platform ios --plugin https://github.com/apache/cordova-plugin-inappbrowser // several plugins cordova-paramedic --platform ios --plugin cordova-plugin-inappbrowser --plugin cordova-plugin-contacts
--verbose
(optional)Verbose mode. Display more information output
cordova-paramedic --platform ios --plugin cordova-plugin-inappbrowser --verbose
--cli
(optional)A path to Cordova CLI. Useful when you're testing against locally installed Cordova version.
cordova-paramedic --platform android --plugin cordova-plugin-device --cli ./cordova-cli/bin/cordova
--justbuild
(optional)Just builds the project, without running the tests.
cordova-paramedic --platform ios --plugin cordova-plugin-inappbrowser --justbuild
--target
(optional)For Android: The device ID (from adb devices -l
) of a device the tests should be run on.
cordova-paramedic --platform android --plugin cordova-plugin-contacts --target 02e7f7e9215da7f8
For iOS: A string that is used to pick the device (from the cordova run --list --emulator
output) the tests should be run on.
cordova-paramedic --platform ios --plugin cordova-plugin-contacts --target "iPhone-8"
--useTunnel
(optional)Use a tunnel (via localtunnel
) instead of local address (default is false). Useful when testing on real devices and don't want to specify external IP address (see --externalServerUrl
below) of paramedic server.
cordova-paramedic --platform ios --plugin cordova-plugin-inappbrowser --useTunnel
--externalServerUrl
(optional)Useful when testing on real device (--device
parameter) so that tests results from device could be posted back to paramedic server.
cordova-paramedic --platform ios --plugin cordova-plugin-inappbrowser --externalServerUrl http://10.0.8.254
--port
(optional)Port to use for posting results from emulator back to paramedic server (default is from 8008
). You can also specify a range using --startport
and endport
and paramedic will select the first available.
cordova-paramedic --platform ios --plugin cordova-plugin-inappbrowser --port 8010 cordova-paramedic --platform ios --plugin cordova-plugin-inappbrowser --startport 8000 endport 8020
--timeout
(optional)Time in millisecs to wait for tests to pass|fail (defaults to 10 minutes).
cordova-paramedic --platform ios --plugin cordova-plugin-inappbrowser --timeout 30000
--outputDir
(optional)Directory location to store test results in junit format and the device logs
cordova-paramedic --platform ios --plugin cordova-plugin-inappbrowser --outputDir /Users/sampleuser/testresults
--cleanUpAfterRun
(optional)Flag to indicate the sample application folder must be deleted.
cordova-paramedic --platform ios --plugin cordova-plugin-inappbrowser --cleanUpAfterRun
--logMins
(optional)Windows only parameter to indicate the duration for which the device logs to be fetched.
cordova-paramedic --platform windows --plugin cordova-plugin-inappbrowser --logMins 15
--tccDb
(optional)iOS only parameter. The path to the sample TCC DB file, with permissions, to be copied to the simulator.
cordova-paramedic --platform ios --plugin cordova-plugin-contacts --tccDbPath tcc.db
--args
(optional)Add additional parameters to the cordova build
and cordova run
commands.
cordova-paramedic --platform ios --plugin cordova-plugin-contacts --args=--buildFlag='-UseModernBuildSystem=0'
--shouldUseSauce
(optional)Run tests on Sauce Labs. You'll need to specify Sauce Labs username and access key using either --sauceUser
and --sauceKey
arguments or SAUCE_USERNAME
and SAUCE_ACCESS_KEY
environment variables.
--sauceUser
(optional)Sauce Labs username. Alternatively set via the SAUCE_USERNAME
environment variable.
--sauceKey
(optional)Sauce Labs access key. Alternatively set via the SAUCE_ACCESS_KEY
environment variable.
cordova-paramedic --platform ios --plugin cordova-plugin-contacts --shouldUseSauce --sauceUser ***** --sauceKey ***** --buildName "paramedic-test-01"
--buildName
(optional)Build name to show on Sauce Labs dashboard. If omitted, will use “Paramedic sauce test” and a timestamp.
--sauceDeviceName
(optional)Name of the Sauce Labs emulator or browser. For example, “iPhone Simulator” or “firefox”. Please refer to the Sauce Labs platforms list to see available device names.
--saucePlatformVersion
(optional)Platform version of the Sauce Labs emulator OS, or version of the browser (if testing browser
platform). For example, “9.3” or “54.0”. Please refer to the Sauce Labs platforms list to see available platform versions.
--sauceAppiumVersion
(optional)Appium version to use when running on Sauce Labs. For example, “1.5.3”.
cordova-paramedic --platform ios --plugin cordova-plugin-contacts --shouldUseSauce --sauceUser ***** --sauceKey ***** --sauceDeviceName 'iPad Simulator" --saucePlatformVersion 9.1 --appiumVersion 1.5.2
Configuration file is used when no parameters are passed to cordova-paramedic
call or explicitly specified via --config
parameter:
cordova-paramedic <- paramedic will attempt to find .paramedic.config.js in working directory cordova-paramedic --config ./sample-config/.paramedic.config.js
Example configuration file is showed below.
module.exports = { // "externalServerUrl": "http://10.0.8.254", "useTunnel": true, "plugins": [ "https://github.com/apache/cordova-plugin-inappbrowser" ], "platform": "windows", "action": "run", "args": "--archs=x64 -- --appx=uap" }
More configuration file examples could be found in sample-config
folder.
You can also use cordova-paramedic
as a module directly:
var paramedic = require('cordova-paramedic'); paramedic.run(config);
For Paramedic to work correctly for Windows apps you'll need to allow the loopback for “HelloCordova” app using Windows Loopback Exemption Manager (download).