This document describes how to test a release of a Apache Cordova component before and while the “Creating a Release” process.
The code of the component you want to test should be in a folder with the name of the component (e.g. cordova-plugin-vibration
, cordova-cli
, cordova-ios
etc.):
a) Before the release was actually made: The component should be checked out via git. b) While the release is in the “Vote” stage and you now want to make sure the archive is good to be able to vote for it: Download the .tgz
source code artifact linked in the [VOTE]
email on the dev mailing list. Unpack the archive, and move the content of package
into a folder named after the component, then run npm install
to install the dependencies.
npm test
: All packages define a test
command that should pass locally.Create a new app, add the plugin, its tests subplugin, and cordova-plugin-test-framework
that allows running those tests:
cd .. cordova create pluginTestApp cd pluginTestApp cordova plugin add ../cordova-plugin-vibration cordova plugin add ../cordova-plugin-vibration/tests cordova plugin add cordova-plugin-test-framework sed -i -e 's/index.html/cdvtests\/index.html/g' config.xml # change `config.xml` to contain `<content src="cdvtests/index.html" />` cordova platform add android cordova run android
This should start a grey-ish app with “Auto Tests” and “Manual Tests” buttons. You should run both and see if they succeed.
Historically the release process documentation also advised developers to use cordova-mobile-spec
to create an app that includes the Plugin Tests. As this is error prone and doesn't give additional insight to the Plugin Tests, it is not recommended any more and only included here for completeness.
node cordova-mobile-spec/createmobilespec/createmobilespec.js --android --global --plugins="cordova-plugin-vibration"
This should start a black-ish app with a “Plugin tests” button. When clicking it you end up in a screen with “Auto Tests” and “Manual Tests” buttons. You should run both and see if all/most/the expected ones succeed.
Plugin Tests most probably do not cover all functionality of a plugin, especially Preferences that can be set via config.xml
or functionality that was just added to the plugin. Check the RELEASENOTES.md
file to find out about such functionality and
cd .. cordova create pluginTestAppManual cd pluginTestAppManual cordova plugin add ../cordova-plugin-vibration # Implement the functionality in `www/index.html` cordova platform add android cordova run android
TODO
The following commands all assume to be run in a folder that includes the platform you are testing, e.g. cordova-android
. It should also contain a checkout of cordova-mobile-spec
.
Create and run a cordova-mobile-spec
project:
./cordova-mobile-spec/createmobilespec/createmobilespec.js --android --forceplugins (cd mobilespec && cordova run android --device) (cd mobilespec && cordova run android --emulator)
TODO Instructions on how to use the actual mobilespec tests that do not come from the plugins
This should start a black-ish app with a “Plugin tests” button. When clicking it you end up in a screen with “Auto Tests” and “Manual Tests” buttons. You should run both and see if all/most/the expected ones succeed.
Create a hello world app using cordova
:
cordova create ./androidTest org.apache.cordova.test androidTest (cd androidTest && cordova platform add ../cordova-android) (cd androidTest && cordova run android --device) (cd androidTest && cordova run android --emulator)
This should create an app showing the Cordova logo, “Apache Cordova” and a green “Device is ready” box.
/bin
scriptsRun your platform's ./bin/create
script and run the resulting project:
./cordova-android/bin/create ./androidTest2 org.apache.cordova.test2 androidTest2 (cd androidTest2 && ./cordova/build) (cd androidTest2 && ./cordova/run --device) (cd androidTest2 && ./cordova/run --emulator)
This should create an app showing a white screen.
Ensure the generated project files also build through the appropriate platform IDE.
The output from ./cordova/version
should show the correct platform version.
cordova-lib
testsTODO Some kind of tests (maybe via plugins) that test if the cordova.js functionality works as expected
TODO Simpler way to add all plugins, their test plugins and cordova-plugin-test-framework
to a new app created with the platform so that one can run the automated and manual tests (as a replacement for “Platform + Plugins via Mobilespec”)
TODO https://github.com/apache/cordova-coho/blob/master/docs/tools-release-process.md#test
TODO https://github.com/apache/cordova-coho/blob/master/docs/tools-release-process.md#test TODO https://github.com/apache/cordova-coho/blob/master/docs/coho-release-process.md#test