You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by mm...@apache.org on 2014/05/05 17:01:47 UTC

[04/51] [abbrv] [partial] Moving test-harness out of app and into plugin

http://git-wip-us.apache.org/repos/asf/cordova-labs/blob/15d2581d/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/dev/build/styleguide.css
----------------------------------------------------------------------
diff --git a/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/dev/build/styleguide.css b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/dev/build/styleguide.css
new file mode 100755
index 0000000..bcbf2a8
--- /dev/null
+++ b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/dev/build/styleguide.css
@@ -0,0 +1,495 @@
+/*!
+Copyright 2012 Adobe Systems Inc.;
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+/* Styleguide CSS here pls ------------------------------------------------------------------------------- */
+
+html {
+    height: 100%;
+    width: 100%;
+    position: absolute;
+}
+
+body { 
+    color: #444;
+    font: 14px "source-sans-pro", "source", helvetica, arial, sans-serif;
+    line-height: 21px;
+    margin: 0;
+    padding: 0;
+    -webkit-font-smoothing: subpixel-antialiased;
+}
+
+.guides {
+/*	border: 1px solid red;*/
+}
+
+.space {
+	height: 90px;
+}
+
+#container {
+	min-width: 600px;
+}
+
+#test-container {
+	padding: 0 120px 30px 30px ;
+}
+
+h1,h2,h3,h4,h5,h6 {
+	color: #000;
+	font-family: "source-l", helvetica, arial, sans-serif;
+	font-weight: normal;
+	margin: 0;
+}
+
+h4 {
+	border-bottom: 1px solid #d7d7d7;
+	font-size: 30px;
+	margin: 20px 0;
+}
+
+h5 {
+	font-size: 21px;
+}
+
+h4 span {
+	background: #fff;
+	padding: 0 7px 0 0;
+	position: relative;
+	bottom: -10px;
+}
+
+.tabular {
+	border: 1px solid rgba(0,0,0,0.09);
+    border-spacing: 0;
+	margin: 14px 0;
+}
+
+th, td, .tabular td.var {
+	border-bottom: 1px solid #eee;
+	font-size: 15px;
+	font-weight: normal;
+	padding: 5px 10px;
+	text-align: left;
+}
+
+th {
+	white-space: nowrap;
+}
+
+.tabular tr:last-child td {
+	border: none;
+}
+
+.tabular td {
+	font-size: 12px;
+	padding: 10px;
+}
+
+.images {
+	width: 100% !important;
+}
+
+.images td,
+.images th {
+	border-right: 1px solid #eee !important;
+	padding: 18px;
+	text-align: center;
+	vertical-align: top;
+}
+
+.images th {
+	padding: 9px;
+}
+
+.images tr:last-child td,
+.images tr th:last-child  {
+	border-right: none !important;
+}
+
+.images img {
+	width: 300px;
+}
+
+header {
+	background: #3a3f42 url("../img/bg_dark.png") repeat-x;
+	bottom: 0;
+	cursor: default;
+	left: 0;
+	overflow-y: scroll;
+	padding: 0 0 30px 0;
+	position: absolute;
+	top: 0;
+	width: 220px;
+}
+
+#main {
+	bottom: 0;
+	left: 220px;
+	margin: 0;
+	overflow-y: scroll;
+	padding: 0 100px 60px 40px;
+	position: absolute;
+	right: 0;
+	top: 0;
+}
+
+header hgroup {
+	padding: 15px;
+}
+
+header hgroup {
+	border-bottom: 1px solid rgba(0,0,0,0.36);
+    box-shadow: 0px 1px 0px rgba(255,255,255,0.11);
+}
+
+header h1 {
+	color: #fff;
+	font-size: 18px;
+	text-shadow: 0 -1px 0 #000;
+}
+
+header h2 {
+	color: #c7c7c7;
+	font-size: 12px;
+	text-shadow: 0 -1px 0 #000;
+}
+
+header h3 {
+	color: #A4B4B7;
+	font-size: 14px;
+	text-shadow: 0 -1px 0 #000;
+	margin: 15px 0 5px 15px;
+}
+
+header ul {
+	list-style: none;
+	margin: 0;
+	padding: 0;
+	width: 100%;
+}
+
+header a {
+	box-sizing: border-box;
+	border-top: 1px solid rgba(0,0,0,0);
+	border-bottom: 1px solid rgba(0,0,0,0); 
+	color: #bbb;
+	display: block;
+	font-size: 14px;
+	height: 24px;
+	line-height: 24px;
+	padding: 0 15px 0 30px;
+	text-shadow: 0 1px 0 #000;
+}
+
+header a:link,
+header a:visited {
+	color: #c7c7c7;
+	text-decoration: none;
+}
+
+header .selected {
+	background: rgba(112,112,112,0.24);
+	border-top: 1px solid rgba(0,0,0,0);
+	border-bottom: 1px solid rgba(0,0,0,0);
+	color: #fff !important;
+}
+
+
+header a:hover {
+	background: rgba(112,112,112,0.24);
+	border-top: 1px solid rgba(0,0,0,0);
+	border-bottom: 1px solid rgba(0,0,0,0);
+	color: #fff !important;
+}
+
+header a:focus {
+    border: 1px solid #0940fd;
+    -webkit-box-shadow: 0 0 4px #0088ff;
+    box-shadow: 0 0 4px #0088ff;
+    outline: none;
+    margin-left: 4px;
+    margin-right: 4px;
+    padding: 0 10px 0 25px;
+    background: rgba(112,112,112,0.24);
+    color: #fff !important;   
+}
+
+header a:active {
+	background: rgba(0,0,0,0.24);
+	border-top: 1px solid rgba(0,0,0,0.2);
+	border-bottom: 1px solid rgba(255,255,255,0.15);
+	color: #fff;
+}
+
+h4:target span {
+  -webkit-animation: highlight 5s ease;  
+  -moz-animation: highlight 5s ease;    
+}
+
+	@-webkit-keyframes highlight {
+	  0% { color: #0083E8; 	text-shadow: 0 0 4px rgba(0,136,255,.69); }
+	  100% { color: #000; text-shadow: none; }
+	}
+
+.preview {
+    border-spacing: 0;
+    width: auto;
+}
+
+.preview td {
+	padding: 15px 30px;
+	-webkit-touch-callout: none;
+	-webkit-user-select: none;
+	-khtml-user-select: none;
+	-moz-user-select: none;
+	-ms-user-select: none;
+	user-select: none;	
+}
+
+.bg-light {
+	background: #f8f8f8;
+	border: 1px solid rgba(0,0,0,0.09);
+	font-size: 12px;
+}
+
+.fonts.tabular {
+	width: 100%;
+}
+
+.fonts.tabular th.bg-white {
+	border-bottom: 1px solid rgba(0,0,0,0.09);
+}
+
+.fonts.tabular th.bg-lightgray {
+	border-bottom: 1px solid #bdbdbd;
+}
+
+.fonts.tabular th.bg-slategray {
+	border-bottom: 1px solid #5c6061;
+}
+
+.fonts.tabular td {
+	vertical-align: top;
+	width: 33%;
+}
+
+
+/* Selection ------------------------------------------------------------------------------- */
+
+::selection {
+    background: #e0f0fa;
+    color: #000;
+}
+
+header {
+	-webkit-touch-callout: none;
+	-webkit-user-select: none;
+	-khtml-user-select: none;
+	-moz-user-select: none;
+	-ms-user-select: none;
+	user-select: none;
+}
+
+/* Scrollbars ------------------------------------------------------------------------------- */
+
+::-webkit-scrollbar {
+	height: 8px;
+    width: 8px;
+}
+ 
+::-webkit-scrollbar-track {
+	background: rgba(0,0,0,0.1);
+	box-shadow: inset 0 0 6px rgba(0,0,0,0); 
+    -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0); 
+    border-radius: 4px;
+    -webkit-border-radius: 4px;
+}
+ 
+::-webkit-scrollbar-thumb {
+	border-radius: 4px;
+	-webkit-border-radius: 4px;
+    border: 1px solid rgba(255,255,255,0.15);
+    background: rgba(0,0,0,0.3);
+    box-shadow: inset 0 0 6px rgba(0,0,0,0); 
+    -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0); 
+}
+
+::-webkit-scrollbar-thumb:window-inactive {
+    background: rgba(0,0,0,0.1); 
+}
+
+
+/* Scrollbars ------------------------------------------------------------------------------- */
+
+
+/* Container */
+.modal {
+	/* Overlay page content */
+	position: fixed;
+	top: 0;
+	left: 0;
+	right: 0;
+	bottom: 0;
+	background: rgba(0,0,0,0.6);
+	z-index: 10000;
+
+	/* Transition opacity on open */
+	-webkit-transition: opacity 200ms ease-in;
+	transition: opacity 200ms ease-in;
+
+	/* Hide for now */
+	opacity: 0;
+	pointer-events: none;
+
+	-webkit-touch-callout: none;
+	-webkit-user-select: none;
+	-khtml-user-select: none;
+	-moz-user-select: none;
+	-ms-user-select: none;
+	user-select: none;	
+}
+
+/* Show modal */
+.modal:target {
+	opacity: 1;
+	pointer-events: auto;
+}
+
+/* Hide modal */
+.modal:active {
+	opacity: 0;
+}
+
+/* Content */
+.modal > div {
+	width: 65%;
+	background: #fff;
+	position: relative;
+	margin: 10% auto;
+
+	/* Default minimise animation */
+	-webkit-animation: minimise 500ms linear;
+
+	/* Prettify */
+	padding: 12px 15px;
+	border-radius: 4px;
+	box-shadow: 0 15px 36px rgba(0,0,0,0.6);
+	background: #fff;
+	text-shadow: 0 1px 0 #fff;
+}
+
+/* Override animation on modal open */
+.modal:target > div {
+	-webkit-animation-name: bounce;
+	-moz-animation-name: bounce;
+}
+
+.modal h1 {
+	font-size: 24px;
+	padding: 0 0 10px;
+}
+
+@-webkit-keyframes bounce {
+	0% {
+		-webkit-transform: scale3d(1,1,1);
+	}
+	55% {
+		-webkit-transform: scale3d(1,1,1);
+	}
+	100% {
+		-webkit-transform: scale3d(1,1,1);
+	}
+/*	0% {
+		-webkit-transform: scale3d(0.1,0.1,1);
+		box-shadow: 0 3px 20px rgba(0,0,0,0.9);
+	}
+	55% {
+		-webkit-transform: scale3d(1,1,1);
+		box-shadow: 0 10px 20px rgba(0,0,0,0);
+	}
+	75% {
+		-webkit-transform: scale3d(0.95,0.95,1);
+		box-shadow: 0 0 20px rgba(0,0,0,0.9);
+	}
+	100% {
+		-webkit-transform: scale3d(1,1,1);
+		box-shadow: 0 3px 20px rgba(0,0,0,0.9);
+	}
+*/
+}
+
+@-webkit-keyframes minimise {
+	0% {
+		-webkit-transform: scale3d(1,1,1);
+	}
+	100% {
+		-webkit-transform: scale3d(0.1,0.1,1);
+	}
+}
+
+/* Modal close link */
+.modal a[href="#close"] {
+	position: absolute;
+	right: 0;
+	top: 0;
+	color: transparent;
+}
+
+/* Reset native styles */
+	.modal a[href="#close"]:focus {
+	outline: none;
+}
+
+/* Create close button */
+.modal a[href="#close"]:after {
+	content: url("../img/close_modal.png");
+	display: block;
+
+	/* Position */
+	position: absolute;
+	right: 15px;
+	top: 15px;
+
+	/* Style */
+	font-size: 12px;
+	text-decoration: none;
+	text-shadow: none;
+	text-align: center;
+	font-weight: bold;
+	background: #fff;
+}
+
+.modal a[href="#close"]:focus:after,
+.modal a[href="#close"]:hover:after {
+
+}
+
+.modal a[href="#close"]:focus:after {
+	outline: 1px solid #000;
+}
+
+.modal a[href="#close"] {
+	text-shadow: none !important;
+}
+
+/* Open modal */
+a.openmodal {
+	display: block;
+	text-align: center;
+}
+
+a.openmodal:hover,
+a.openmodal:focus {
+
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-labs/blob/15d2581d/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/dev/build/styleguide.js
----------------------------------------------------------------------
diff --git a/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/dev/build/styleguide.js b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/dev/build/styleguide.js
new file mode 100755
index 0000000..67f89bf
--- /dev/null
+++ b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/dev/build/styleguide.js
@@ -0,0 +1,10 @@
+if (!document.querySelector('override')) {
+	var head  = document.querySelector('head');
+	var link  = document.createElement('link');
+	link.id   = 'override';
+	link.rel  = 'stylesheet';
+	link.type = 'text/css';
+	link.href = '../../release/css/' + location.href.split('/').pop().split('.')[0] + '.css';
+	link.media = 'all';
+	head.appendChild(link);
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-labs/blob/15d2581d/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/dev/tasks/checkchromiumsrc.js
----------------------------------------------------------------------
diff --git a/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/dev/tasks/checkchromiumsrc.js b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/dev/tasks/checkchromiumsrc.js
new file mode 100755
index 0000000..6c472dd
--- /dev/null
+++ b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/dev/tasks/checkchromiumsrc.js
@@ -0,0 +1,13 @@
+var chromiumSrc = process.env.CHROMIUM_SRC;
+
+module.exports = function(grunt) {
+
+    grunt.registerTask('check_chromium_src', "Internal task to store CHROMIUM_SRC env var into chromiumSrc", function() {
+        if (!chromiumSrc) {
+            grunt.fail.warn("Please set the CHROMIUM_SRC env var to the root of your chromium sources(ends in /src)");
+        } else {
+            grunt.log.writeln("CHROMIUM_SRC points to " + chromiumSrc.cyan);
+        }
+    });
+
+}

http://git-wip-us.apache.org/repos/asf/cordova-labs/blob/15d2581d/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/dev/tasks/telemetrygentest.js
----------------------------------------------------------------------
diff --git a/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/dev/tasks/telemetrygentest.js b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/dev/tasks/telemetrygentest.js
new file mode 100755
index 0000000..2b0bb0c
--- /dev/null
+++ b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/dev/tasks/telemetrygentest.js
@@ -0,0 +1,98 @@
+var fs   = require("fs"),
+    jade = require("jade"),
+    path = require("path");
+
+module.exports = function (grunt) {
+
+    var TELEMETRY_DIR = 'dev/test/perf/telemetry/perf/page_sets/',
+        MASTER_JADE   = 'topcoat_telemetry.jade';
+
+    grunt.registerTask('perf', 'Generates performance test', function (platform, theme) {
+
+        var perfJades = findAllPerfJadeFileInSrc();
+
+        var targetPlatform = platform || 'mobile',
+            targetTheme    = theme    || 'light';
+
+        var targetCSS = prepareCSS(targetPlatform, targetTheme);
+
+        var jadeCompileData = {};
+
+        grunt.util._.forEach(perfJades, function (jadePath) {
+
+            var jadeFileName = path.basename(jadePath).split('.')[0];
+
+            prepareJadeCompileData(jadeCompileData, jadePath,
+                jadeFileName, targetPlatform, targetTheme, targetCSS);
+
+            createTelemetryJSON(jadeFileName);
+        });
+        batchCompileJade(jadeCompileData);
+    });
+
+    var findAllPerfJadeFileInSrc = function () {
+
+        var jades = grunt.file.expand('node_modules/topcoat-*/test/perf/topcoat_*.jade')
+                    .concat('node_modules/topcoat-checkbox/test/perf/checkbox-test.jade');
+
+        if (jades.length === 0){
+            throw new Error("ERROR: No jade file is found in src/../test/perf/");
+        }
+
+        return jades;
+    };
+
+    var prepareCSS = function(platform, theme) {
+
+        return "release/css/topcoat-" + platform + "-" + theme + ".min.css";
+    };
+
+    var prepareJadeCompileData = function (jadeCompileData, jadePath,
+                                           caseName, platform, theme, css) {
+
+        var jadeContent = fs.readFileSync(jadePath, "utf8"),
+            getHtml = jade.compile(jadeContent);
+
+        jadeCompileData[caseName] = {
+            options: {
+                data: {
+                    platform: platform,
+                    theme: theme,
+                    css: css,
+                    name: caseName,
+                    componentHTML: getHtml()
+                }
+            },
+            src:  TELEMETRY_DIR + "topcoat/" + MASTER_JADE,
+            dest: TELEMETRY_DIR + "topcoat/" + caseName + ".test.html"
+        };
+    };
+
+    var createTelemetryJSON = function (caseName) {
+
+        var jsonContent = {
+            "description": "Test",
+            "archive_data_file": "../data/topcoat_buttons.json",
+            "pages": [
+                {
+                    "url": "file:///topcoat/" + caseName + ".test.html",
+                    "smoothness": {
+                        "action": "scrolling_action"
+                    }
+                }
+            ]
+        };
+
+        var jsonFilePATH = TELEMETRY_DIR + caseName + '.test.json';
+
+        fs.writeFileSync(
+            jsonFilePATH,
+            JSON.stringify(jsonContent, null, 4),
+            'utf8');
+    };
+
+    var batchCompileJade = function(data){
+        grunt.config('jade', data);
+        grunt.task.run('jade');
+    };
+};

http://git-wip-us.apache.org/repos/asf/cordova-labs/blob/15d2581d/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/dev/tasks/telemetrysubmit.js
----------------------------------------------------------------------
diff --git a/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/dev/tasks/telemetrysubmit.js b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/dev/tasks/telemetrysubmit.js
new file mode 100755
index 0000000..f9f6fb2
--- /dev/null
+++ b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/dev/tasks/telemetrysubmit.js
@@ -0,0 +1,101 @@
+module.exports = function(grunt) {
+
+    grunt.registerTask('telemetry-submit', 'Submit telemetry test results', function(gitCWD) {
+
+        var exec = require("child_process").exec,
+            commandToBeExecuted = 'git log --pretty=format:"%H %ci" | head -n 1',
+            done = this.async();
+
+        var part1 = {
+            properties: {
+                path: {
+                    message: 'Path to telemetry output file',
+                    required: true
+                },
+                device: {
+                    message: 'Device on which the test ran',
+                    required: true
+                }
+            }
+        };
+
+        var part2 = {
+            properties: {
+                test: {
+                    message: 'What is the name of the test?',
+                    required: true,
+                    default: ''
+                },
+                type: {
+                    message: 'Is it a test (nightly) ?',
+                    required: true,
+                    default: 'Yes'
+                }
+            }
+        };
+
+        exec(commandToBeExecuted, { cwd: gitCWD }, function(error, stdout, stderr) {
+            if (error) {
+                grunt.log.error('Error');
+                console.log(error);
+                done();
+            } else {
+
+                var path = grunt.option('path')
+                ,   device = grunt.option('device')
+                ,   test = grunt.option('test')
+                // use env variables to overwrite the location
+                // where the test results end up, for CI example
+                ,   host = process.env.TOPCOAT_BENCHMARK_SERVER
+                ,   port = process.env.TOPCOAT_BENCHMARK_PORT
+                ,   type = grunt.option('type')
+                ,   date = grunt.option('date')
+                ,   snapshot
+                ,   submitData = require('../test/perf/telemetry/lib/submitData')
+                ,   fileName = require('../test/perf/telemetry/lib/extractFileName')
+                ,   prompt = require('prompt')
+                ;
+
+                if (!path || !test || !device) {
+                    // Dummy test to see if it was called without arguments
+                    // in this case we request the user for data
+
+                    prompt.start();
+                    prompt.get(part1, function (err, result) {
+                        var options = result;
+
+                        part2.properties.test.default = fileName(result.path);
+
+                        prompt.get(part2, function (err, result) {
+                            for (var i in result)
+                                options[i] = result[i];
+
+                            if (options.type.match(/y/gi))
+                                options.date = 'snapshot ' + new Date().toISOString();
+                            else
+                                options.date = stdout;
+
+                            submitData(options.date, options.path, {
+                                device: options.device,
+                                test: options.test
+                            }, {
+                                host : host,
+                                port : port
+                            });
+                        });
+                    });
+                } else {
+                    // This is in case for automated tasks that submits the data
+                    submitData(stdout, path, {
+                        device: device,
+                        test: test
+                    }, {
+                        host : host,
+                        port : port
+                    });
+                }
+            }
+        });
+
+    });
+};
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-labs/blob/15d2581d/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/dev/test/perf/telemetry/README.md
----------------------------------------------------------------------
diff --git a/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/dev/test/perf/telemetry/README.md b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/dev/test/perf/telemetry/README.md
new file mode 100755
index 0000000..0fc795e
--- /dev/null
+++ b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/dev/test/perf/telemetry/README.md
@@ -0,0 +1,79 @@
+Performance tests based on chromium telemetry (see https://github.com/topcoat/topcoat/wiki/Measuring-performance for details)
+
+# Preparing to run the tests
+A few steps are required before you can run the telemetry tests. 
+
+First of all, you need to download chromium source code locally, as described on http://www.chromium.org/developers/how-tos/get-the-code. No need to compile, just download it. 
+Then export the location for the 'src' folder in the CHROMIUM_SRC environment variable, like in
+```
+export CHROMIUM_SRC = /Users/cataling/work/chromium/home/src_tarball/tarball/chromium/src/
+```
+
+Then you need to manually patch a little bit two of the benchmark files (the patches are just one liners, it they get bigger we'll just duplicate the benchmarks in topcoat). Locate the files named `loading_benchmark.py` and `smoothness_benchmark.py` in `$CHROMIUM_SRC/tools/perf/perf_tools`. Inside, look for the method `MeasurePage`, and find an appropriate place to paste `results.Add("UserAgent", "", tab.EvaluateJavaScript("navigator.userAgent"));`. This makes the benchmarks include the user agent string as part of their output, and we need this info to submit the results to the server. 
+
+NOTE: we should make a patch for these modifications
+
+Next you can prepare the telemetry tests:
+```
+grunt telemetry
+```
+This does few things: 
+* it generates html snippets based on grunt template from test/perf/topcoat-*.test.jade of each of Topcoat component. So make sure you build Topcoat first, by ```grunt default```, so that Topcoat components are downloaded into the src folder;
+* then it uses that html snippet to generate the actual test file from topcoat/test/perf /telemetry/perf/page_sets/topcoat/topcoat_telemetry.jade;
+* last, it copies those test files to the right location in chromium telemetry tests. 
+
+# Running performance tests locally
+You can run a telemetry test with:
+```
+cd $CHROMIUM_SRC/tools/perf
+./run_multipage_benchmarks --browser=system loading_benchmark page_sets/topcoat_buttons-base.test.json -o /tmp/loading_benchmark_topcoat_buttons-base.txt
+./run_multipage_benchmarks --browser=system smoothness_benchmark page_sets/topcoat_buttons-base.test.json -o /tmp/smoothness_benchmark_topcoat_buttons-base.txt
+``` 
+We store the benchmark output in a file - the next script will take this output and push it to the server
+
+For steps of running performance tests on Android:
+https://github.com/topcoat/topcoat/wiki/Running-TopCoat-Performance-Test-on-Android
+
+# Pushing benchmark results to the server
+
+There is a grunt task that automates the process `$ grunt telemetry-submit --path=test_results.txt --type=sha|snapshot [--device] [--test]`
+
+Device is an optional parameter and sets the device on which the test ran.
+For `type snapshot` you have to send in a date param as well. You have to use: `date -u +"%Y-%m-%dT%H:%M:%SZ"`
+
+Type is either `sha` or `snapshot`.
+
+ * `sha` is for running the tests on a stable version (in black)
+ * `snapshot` is for running custom nightly builds of topcoat (in red)
+ * ![x axis perf view](http://i.imgur.com/DrKxFlI.png)
+
+Test is an optional parameter and it overrides the default test name ( which is the name of the file from path ).
+
+There is a `settings.js` file located under `/test/perf/telemetry/lib/` where you can change the address where to submit. It is currently set for http://bench.topcoat.io/v2/benchmark
+
+If you set an `TOPCOAT_BENCHMARK_SERVER` and `TOPCOAT_BENCHMARK_PORT` env variables you can override the default settings.
+
+You can view the results at http://bench.topcoat.io
+
+# Running all tests
+There's also a handy script to run all the performance tests and push the results on the server. 
+It's located at `https://github.com/topcoat/topcoat/blob/master/test/perf/telemetry/bin/runAll.py`.
+Check out the script for details on how to run it.
+ 
+# Adding a new performance test
+Before adding new tests, you should make yourself comfortable with the chromium telemetry framework and running telemetry tests in chrome.
+
+Topcoat performance tests are located in `test/perf/telemetry/perf/page_sets` (the folder convention matches the one from chromium telemetry tests). When building telemetry with `grunt telemetry` this folder is copied over `page_sets` in chromium src. There is one .json file that describes each test, its structure is as required by chromium telemetry framework. You will need to add a new json file to describe your test - just start from an existing ones. 
+
+The files for the tests are located under the `topcoat` folder. You can either add html file directly, or use jade. Jade files are converted to html when you run `grunt telemetry`. The html files will be generated under `page_sets` in chromium src. Currently, if you're adding a jade file you need to manually add it to `Gruntfile.js` (just look up where topcoat_buttons.jade is added). If future we'll get rid of this.
+
+Inside the test files (html or jade) you can reference the topcoat assets (css, fonts, images) under "./release/". The whole `./release` folder under topcoat root and all the components are copied there by `grunt telemetry`.
+
+In the json file you can reference the test file to load using `file:///topcoat/` URLs. Use .html here even if you use .jade for tests - you want to reference the generated html file, not the jade template. When running the tests, telemetry will instantiate a local HTTP server and rewrite the URLs, they will not be loaded with the file protocol. 
+
+From telemetry we're currently using loading and smoothness benchmarks. The runAll.sh script currently runs these two benchmarks on all the .json tests under page_sets. 
+
+Note 1: runAll.py uses CEF ([chromium embedding framework](https://code.google.com/p/chromiumembedded/)) to run the tests on desktop (Win and Mac) by default. This is because the target for TopCoat are web applications, not web sites, and CEF is the preferred way to develop web applications on desktop. 
+We're currently using a custom CEF build because telemetry does not work in CEF by default. A patch has been submitted to CEF upstream (https://code.google.com/p/chromiumembedded/issues/detail?id=917&sort=-id) to fix this. 
+
+Note 2: part of this will probably change when we switch to the new components/themes architecture.

http://git-wip-us.apache.org/repos/asf/cordova-labs/blob/15d2581d/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/dev/test/perf/telemetry/bin/runAll.py
----------------------------------------------------------------------
diff --git a/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/dev/test/perf/telemetry/bin/runAll.py b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/dev/test/perf/telemetry/bin/runAll.py
new file mode 100755
index 0000000..3dd8aba
--- /dev/null
+++ b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/dev/test/perf/telemetry/bin/runAll.py
@@ -0,0 +1,200 @@
+# Copyright 2012 Adobe Systems Inc.;
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+
+# Runs all the telemetry tests and pushes results to the server
+#
+# Make sure to run in from its folder!
+#
+# Env vars used:
+#  - TestHelper.CHROMIUM_SRC: path to chromium src
+#  - DEVICE_NAME: a label to identify the machine running the tests when submitting results
+#  - CEF_HOME: path to CEF binaries (needed only if USE_CEF is set to True)
+#  - USE_CEF: if run with CEF, set this to 'True'
+#
+
+import os
+import sys
+import shutil
+import subprocess
+import glob
+import platform
+import shutil
+
+
+class TestHelper():
+    GRUNT        = "grunt"
+    RESULTS_DIR  = "/tmp/topcoat-telemetry"
+    BROWSER	     = "system"
+    BROWSER_EXEC = None
+    SUBMIT_TYPE  = "SHA"
+    
+    CHROMIUM_SRC = os.environ.get("CHROMIUM_SRC")
+    DEVICE_NAME  = os.environ.get("DEVICE_NAME")
+    CEF_HOME     = os.environ.get("CEF_HOME")
+    USE_CEF      = os.environ.get("USE_CEF")
+    
+    @staticmethod
+    def init(targetPlatform, targetTheme):
+        TestHelper._checkEnvVars()
+        TestHelper._prepareProperties()
+        TestHelper._prepareResultsDir()
+        TestHelper._cleanTelemetryTests()
+        TestHelper._prepareTelemetryTests(targetPlatform, targetTheme)
+    
+    @staticmethod
+    def _getPlatform():
+        p = platform.platform().lower()
+        if p.find('windows') != -1: return "Win"
+        if p.find('darwin')  != -1: return "Mac"
+        if p.find('linux')   != -1: return "Lin"
+    
+    @staticmethod
+    def _checkEnvVars():
+        if not TestHelper.DEVICE_NAME:
+            raise RuntimeError("Please set DEVICE_NAME env var (no spaces allowed yet)")
+        
+        if not TestHelper.CHROMIUM_SRC:
+            raise RuntimeError("Please set CHROMIUM_SRC env var.")
+        
+        if not TestHelper.USE_CEF:
+            raise RuntimeError("Please set USE_CEF env var.")
+        
+        if (TestHelper.USE_CEF == 'True') and (not TestHelper.CEF_HOME):
+            raise RuntimeError("Please set CEF_HOME if you set USE_CEF to True")
+    
+    @staticmethod
+    def _prepareProperties():
+        p = TestHelper._getPlatform()
+        
+        if p == "Win":
+            TestHelper.GRUNT = "grunt.cmd"
+            TestHelper.RESULTS_DIR = "C:\\tmp\\topcoat-telemetry"
+            TestHelper.BROWSER = "exact"
+            TestHelper.BROWSER_EXEC = "%s\\app\\cefclient.exe" % TestHelper.CEF_HOME
+        
+        if p == "Mac":
+            if TestHelper.USE_CEF:
+                TestHelper.BROWSER = "exact"
+                TestHelper.BROWSER_EXEC = "%s/app/cefclient.app/Contents/MacOS/cefclient" % TestHelper.CEF_HOME
+        
+        if p == "Lin":
+            TestHelper.BROWSER = "android-chrome-beta"
+    
+    @staticmethod
+    def _prepareResultsDir():
+        print "runAll.py: Preparing results dir %s" % TestHelper.RESULTS_DIR
+        if os.path.isdir(TestHelper.RESULTS_DIR):
+            shutil.rmtree(TestHelper.RESULTS_DIR)
+        os.makedirs(TestHelper.RESULTS_DIR)
+    
+    @staticmethod
+    def _prepareTelemetryTests(targetPlatform, targetTheme):
+        print "runAll.py: Preparing telemetry tests"
+        subprocess.check_call([TestHelper.GRUNT, 'telemetry:'+targetPlatform+':'+targetTheme])
+
+    @staticmethod
+    def _cleanTelemetryTests():
+        print "runAll.py: clean up CHROMIUM_SRC/tools/perf/page_sets/topcoat"
+        path = TestHelper.CHROMIUM_SRC + "tools/perf/page_sets/topcoat"
+        if os.path.exists(path):
+            shutil.rmtree(path)
+    
+    @staticmethod
+    def runTests(user_defined_test_list, how_many_rounds_to_run_the_test):
+        print "runAll.py: Running telemetry tests, results in %s" % TestHelper.RESULTS_DIR
+        
+        telemetry_tests = ["loading_benchmark", "smoothness_benchmark"]
+
+        if user_defined_test_list and len(user_defined_test_list) != 0:
+            topcoat_test_files = user_defined_test_list
+        else:
+            topcoat_test_files = glob.glob(os.getcwd() + "/../perf/page_sets/*.json")
+
+        def genCmd():
+            cmd = [
+                   "python",
+                   TestHelper.CHROMIUM_SRC + "/tools/perf/run_multipage_benchmarks",
+                   "--browser=" + TestHelper.BROWSER,
+                   telemetry_test,
+                   TestHelper.CHROMIUM_SRC + "tools/perf/page_sets/%s" % topcoat_test_file,
+                   "-o", TestHelper.RESULTS_DIR + "/%s_%s-%s.txt" % (telemetry_test, topcoat_test_name, test_round)
+                   ]
+            if TestHelper.BROWSER_EXEC:
+                cmd.insert(3, "--browser-executable=" + TestHelper.BROWSER_EXEC)
+            return cmd
+
+        for tf in topcoat_test_files:
+            topcoat_test_file = tf.split(os.sep)[-1]
+            topcoat_test_name = topcoat_test_file.split(".")[0]
+            print "runAll.py: Running tests for %s" % topcoat_test_name
+
+            for telemetry_test in telemetry_tests:
+                for test_round in range(how_many_rounds_to_run_the_test):
+					cmd = genCmd()
+					subprocess.check_call(cmd)
+    
+    @staticmethod
+    def submitResults(git_cwd):
+        print "runAll.py: Pushing telemetry data to the server"
+        result_files = glob.glob(TestHelper.RESULTS_DIR + "/*.txt")
+        for rf in result_files:
+			subprocess.check_call([
+                             TestHelper.GRUNT,
+                             "telemetry-submit:" + git_cwd,
+                             "--path="   + rf,
+                             "--device=" + TestHelper.DEVICE_NAME,
+                             "--test="   + rf.split(os.sep)[-1][:-6],
+                             "--type="   + TestHelper.SUBMIT_TYPE
+                             ])
+
+
+if __name__ == "__main__":
+
+    # Usage:
+	# ./python runAll.py --platform=VALUE --theme=VALUE [--gitCWD=VALUE] [--test=VALUE] [--round=VALUE]
+    #	--platform= desktop or mobile
+	#	--theme= light or dark
+	#	[optional] --gitCWD=PATH_WHERE_YOU_WANT_TO_RUN_GIT_LOG, e.g. src/skins/button
+	#	[optional] --test=ONE_OR_MORE_TESTS_YOU_WANT_TO_RUN, e.g. topcoat_button.test.json
+	#	[optional] --test=HOW_MANY_ROUNDS_TO_RUN_THE_TEST, default is 1.
+
+    platfrm = theme = git_cwd = test_list = None
+    test_round = 1
+
+    args = sys.argv[1:]
+
+    for arg in args:
+        arg_key, arg_val = arg.split('=')
+        if arg_key == '--platform':
+            platfrm = arg_val
+        elif arg_key == '--theme':
+            theme = arg_val
+        elif arg_key == '--gitCWD':
+            git_cwd = arg_val
+        elif arg_key == '--test':
+            test_list = arg_val.split(',')
+        elif arg_key == '--round':
+            test_round = int(arg_val)
+        else:
+            print "%s is not recognized."
+
+    if not platform or not theme:
+        raise RuntimeError("ERROR: --platform and --theme must be set.")
+
+    if not git_cwd:
+        git_cwd = ''
+
+    TestHelper.init(platfrm, theme)
+    TestHelper.runTests(test_list, test_round)
+    TestHelper.submitResults(git_cwd)
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-labs/blob/15d2581d/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/dev/test/perf/telemetry/bin/runAll.sh
----------------------------------------------------------------------
diff --git a/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/dev/test/perf/telemetry/bin/runAll.sh b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/dev/test/perf/telemetry/bin/runAll.sh
new file mode 100755
index 0000000..aa088c0
--- /dev/null
+++ b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/dev/test/perf/telemetry/bin/runAll.sh
@@ -0,0 +1,105 @@
+#!/bin/sh
+# Copyright 2012 Adobe Systems Inc.;
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+# 
+# http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+
+# Runs all the telemetry tests and pushes results to the server
+#
+# Make sure to run in from its folder!
+#
+# Env vars used: 
+#  - CHROMIUM_SRC: path to chromium src
+#  - DEVICE_NAME: a label to identify the machine running the tests when submitting results
+#  - CEF_HOME: path to CEF binaries (needed only if USE_CEF is set to True)
+#
+
+RESULTS_DIR=/tmp/topcoat-telemetry
+USE_CEF=true
+
+function checkEnvVars() {
+    if [ -z "$DEVICE_NAME" ] 
+    then
+        echo "Please set DEVICE_NAME env var (no spaces allowed yet)"
+        exit 1
+    fi
+
+    if [ -z "$CHROMIUM_SRC" ]
+    then
+        echo "Please set CHROMIUM_SRC env var"
+        exit 1
+    fi
+    
+    if ($USE_CEF) 
+    then
+        if [ -z "$CEF_HOME" ] 
+        then
+            echo "You need to set CEF_HOME if yout set USE_CEF to True"
+            exit 1
+        fi
+    fi    
+}
+
+function prepareResultsDir() {
+    echo "runAll.sh: Preparing results dir $RESULTS_DIR"
+    rm -rf $RESULTS_DIR
+    mkdir $RESULTS_DIR    
+}
+
+function prepareTelemetryTests() {
+    echo "runAll.sh: Preparing telemetry tests"
+    grunt telemetry    
+}
+
+function runTests() {
+    echo "runAll.sh: Running telemetry tests, resuls in $RESULTS_DIR"
+
+    if ($USE_CEF)
+    then
+        browserParams="--browser=exact --browser-executable=$CEF_HOME/app/cefclient.app/Contents/MacOS/cefclient" 
+    else
+        browserParams="--browser=system"
+    fi
+
+    testFiles=$(ls ../perf/page_sets/*.json);
+
+    currentDir=`pwd`
+    cd $CHROMIUM_SRC/tools/perf
+
+    for test in $testFiles
+    do
+        testFileBaseName=$(basename $test) #ends with .json
+        testName=$(echo $testFileBaseName | cut -d '.' -f 1)
+        echo "runAll.sh: Running tests for $testName"
+        ./run_multipage_benchmarks $browserParams loading_benchmark page_sets/$testFileBaseName -o $RESULTS_DIR/loading_benchmark_$testName.txt
+        ./run_multipage_benchmarks $browserParams smoothness_benchmark page_sets/$testFileBaseName -o $RESULTS_DIR/smoothness_benchmark_$testName.txt
+    done
+    
+    cd $currentDir
+}
+
+function submitResults() {
+    echo "runAll.sh: Pushing telemetry data to the server"
+
+    for resultFile in $RESULTS_DIR/* 
+    do
+        grunt telemetry-submit --path=$resultFile --device $DEVICE_NAME   
+    done    
+}
+
+
+checkEnvVars
+prepareResultsDir
+prepareTelemetryTests
+runTests
+submitResults
+

http://git-wip-us.apache.org/repos/asf/cordova-labs/blob/15d2581d/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/dev/test/perf/telemetry/lib/csvToJSON.js
----------------------------------------------------------------------
diff --git a/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/dev/test/perf/telemetry/lib/csvToJSON.js b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/dev/test/perf/telemetry/lib/csvToJSON.js
new file mode 100755
index 0000000..b5d0594
--- /dev/null
+++ b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/dev/test/perf/telemetry/lib/csvToJSON.js
@@ -0,0 +1,56 @@
+/*
+Copyright 2012 Adobe Systems Inc.;
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+"use strict";
+
+var parseCSV = function(file, cb) {
+
+	var fs     = require('fs')
+	, filename = file
+	, csv      = require('csv')
+	; 
+
+	var header = [];
+	var values = [];
+	var json   = {};
+
+	csv()
+	.from.stream(fs.createReadStream(file))
+    .transform(function(row, index){
+        //in case there are blank lines in between key & value on Win7
+        if (row[0] == ""){
+            return null;
+        }else{
+            return row;
+        }
+    })
+	.on('record', function(row,index){
+		if (index === 0)
+			header.push(row);
+		else
+			values.push(row);
+	})
+	.on('end', function(count){
+		header[0].forEach(function (h, idx) {
+			json[h] = values[0][idx];
+		});
+		cb(json);
+	})
+	.on('error', function(error){
+		console.log(error.message);
+	});
+};
+
+module.exports = parseCSV;
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-labs/blob/15d2581d/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/dev/test/perf/telemetry/lib/extractFileName.js
----------------------------------------------------------------------
diff --git a/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/dev/test/perf/telemetry/lib/extractFileName.js b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/dev/test/perf/telemetry/lib/extractFileName.js
new file mode 100755
index 0000000..f3446e5
--- /dev/null
+++ b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/dev/test/perf/telemetry/lib/extractFileName.js
@@ -0,0 +1,12 @@
+var extractFileName = function (path) {
+    if (path.split('/').length > 1) {
+        sep = '/';
+    } else if (path.split('\\').length > 1) {
+        sep = '\\';
+    } else {
+        throw new Error('ERROR: the separator in test result file path is neither "/" nor "\\".');
+    }
+    return path.split(sep).pop().split('.')[0];
+};
+
+module.exports = extractFileName;
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-labs/blob/15d2581d/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/dev/test/perf/telemetry/lib/settings.js
----------------------------------------------------------------------
diff --git a/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/dev/test/perf/telemetry/lib/settings.js b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/dev/test/perf/telemetry/lib/settings.js
new file mode 100755
index 0000000..b701064
--- /dev/null
+++ b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/dev/test/perf/telemetry/lib/settings.js
@@ -0,0 +1,31 @@
+/*
+Copyright 2012 Adobe Systems Inc.;
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+function settings (contentLength) {
+	var post_options = {
+		host: 'localhost',
+		port: '3000',
+		path: '/v2/benchmark',
+		method: 'POST',
+		headers: {
+			'Content-Type': 'application/x-www-form-urlencoded',
+			'Content-Length': contentLength
+		}
+	};
+
+	return post_options;
+}
+
+module.exports = settings;

http://git-wip-us.apache.org/repos/asf/cordova-labs/blob/15d2581d/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/dev/test/perf/telemetry/lib/submitData.js
----------------------------------------------------------------------
diff --git a/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/dev/test/perf/telemetry/lib/submitData.js b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/dev/test/perf/telemetry/lib/submitData.js
new file mode 100755
index 0000000..d3f732d
--- /dev/null
+++ b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/dev/test/perf/telemetry/lib/submitData.js
@@ -0,0 +1,61 @@
+/*
+Copyright 2012 Adobe Systems Inc.;
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+var submitData = function (stdout, path, args, destination) {
+	var querystring = require('querystring');
+	var http        = require('http');
+	var fs          = require('fs');
+	var parse       = require('./csvToJSON');
+	var postOptions = require('./settings');
+	var fileName	= require('./extractFileName.js');
+
+	var post_data = {};
+	console.log(path);
+	parse(path, function (j) {
+		post_data = {
+			resultName : j
+		};
+
+		var version = stdout.split(' ');
+
+		post_data.commit = version.shift();
+		post_data.date   = version.join(' ');
+		post_data.test   = args.test || fileName(path);
+		post_data.device = args.device || 'device?';
+		post_data = querystring.stringify({data : JSON.stringify(post_data)});
+		post_options = postOptions(post_data.length);
+		if (destination.host && destination.port) {
+			var location = destination.host.split('/');
+
+			post_options.host = location.shift();
+			post_options.port = destination.port;
+		}
+		// Set up the request
+		var post_req = http.request(post_options, function(res) {
+			res.setEncoding('utf8');
+			res.on('data', function(chunk) {
+				console.log(chunk);
+			});
+		});
+
+		// post the data
+		post_req.write(post_data);
+		post_req.end();
+
+	});
+
+};
+
+module.exports = submitData;
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-labs/blob/15d2581d/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/dev/test/perf/telemetry/perf/page_sets/topcoat/topcoat_telemetry.jade
----------------------------------------------------------------------
diff --git a/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/dev/test/perf/telemetry/perf/page_sets/topcoat/topcoat_telemetry.jade b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/dev/test/perf/telemetry/perf/page_sets/topcoat/topcoat_telemetry.jade
new file mode 100755
index 0000000..c38b00f
--- /dev/null
+++ b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/dev/test/perf/telemetry/perf/page_sets/topcoat/topcoat_telemetry.jade
@@ -0,0 +1,17 @@
+repeats = 200
+
+doctype 5
+html
+    head
+        meta(charset="utf-8")
+        meta(name="format-detection", content="telephone=no")
+        meta(name="viewport", content="user-scalable=no, initial-scale=1, maximum-scale=1, width=device-width, height=device-width, target-densitydpi=device-dpi")
+
+        title #{name} test
+        |<link rel="stylesheet" type="text/css" href="#{css}">
+
+    body
+        -while (repeats > 0)
+            -var repeats = repeats - 1
+            p
+                | !{componentHTML}

http://git-wip-us.apache.org/repos/asf/cordova-labs/blob/15d2581d/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/font/LICENSE.txt
----------------------------------------------------------------------
diff --git a/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/font/LICENSE.txt b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/font/LICENSE.txt
new file mode 100755
index 0000000..d154618
--- /dev/null
+++ b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/font/LICENSE.txt
@@ -0,0 +1,93 @@
+Copyright 2010, 2012 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries.
+
+This Font Software is licensed under the SIL Open Font License, Version 1.1.
+
+This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL
+
+
+-----------------------------------------------------------
+SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
+-----------------------------------------------------------
+
+PREAMBLE
+The goals of the Open Font License (OFL) are to stimulate worldwide
+development of collaborative font projects, to support the font creation
+efforts of academic and linguistic communities, and to provide a free and
+open framework in which fonts may be shared and improved in partnership
+with others.
+
+The OFL allows the licensed fonts to be used, studied, modified and
+redistributed freely as long as they are not sold by themselves. The
+fonts, including any derivative works, can be bundled, embedded, 
+redistributed and/or sold with any software provided that any reserved
+names are not used by derivative works. The fonts and derivatives,
+however, cannot be released under any other type of license. The
+requirement for fonts to remain under this license does not apply
+to any document created using the fonts or their derivatives.
+
+DEFINITIONS
+"Font Software" refers to the set of files released by the Copyright
+Holder(s) under this license and clearly marked as such. This may
+include source files, build scripts and documentation.
+
+"Reserved Font Name" refers to any names specified as such after the
+copyright statement(s).
+
+"Original Version" refers to the collection of Font Software components as
+distributed by the Copyright Holder(s).
+
+"Modified Version" refers to any derivative made by adding to, deleting,
+or substituting -- in part or in whole -- any of the components of the
+Original Version, by changing formats or by porting the Font Software to a
+new environment.
+
+"Author" refers to any designer, engineer, programmer, technical
+writer or other person who contributed to the Font Software.
+
+PERMISSION & CONDITIONS
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the Font Software, to use, study, copy, merge, embed, modify,
+redistribute, and sell modified and unmodified copies of the Font
+Software, subject to the following conditions:
+
+1) Neither the Font Software nor any of its individual components,
+in Original or Modified Versions, may be sold by itself.
+
+2) Original or Modified Versions of the Font Software may be bundled,
+redistributed and/or sold with any software, provided that each copy
+contains the above copyright notice and this license. These can be
+included either as stand-alone text files, human-readable headers or
+in the appropriate machine-readable metadata fields within text or
+binary files as long as those fields can be easily viewed by the user.
+
+3) No Modified Version of the Font Software may use the Reserved Font
+Name(s) unless explicit written permission is granted by the corresponding
+Copyright Holder. This restriction only applies to the primary font name as
+presented to the users.
+
+4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
+Software shall not be used to promote, endorse or advertise any
+Modified Version, except to acknowledge the contribution(s) of the
+Copyright Holder(s) and the Author(s) or with their explicit written
+permission.
+
+5) The Font Software, modified or unmodified, in part or in whole,
+must be distributed entirely under this license, and must not be
+distributed under any other license. The requirement for fonts to
+remain under this license does not apply to any document created
+using the Font Software.
+
+TERMINATION
+This license becomes null and void if any of the above conditions are
+not met.
+
+DISCLAIMER
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
+DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
+OTHER DEALINGS IN THE FONT SOFTWARE.

http://git-wip-us.apache.org/repos/asf/cordova-labs/blob/15d2581d/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/font/SourceCodePro-Black.otf
----------------------------------------------------------------------
diff --git a/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/font/SourceCodePro-Black.otf b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/font/SourceCodePro-Black.otf
new file mode 100755
index 0000000..ba47f3d
Binary files /dev/null and b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/font/SourceCodePro-Black.otf differ

http://git-wip-us.apache.org/repos/asf/cordova-labs/blob/15d2581d/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/font/SourceCodePro-Bold.otf
----------------------------------------------------------------------
diff --git a/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/font/SourceCodePro-Bold.otf b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/font/SourceCodePro-Bold.otf
new file mode 100755
index 0000000..b8a2f57
Binary files /dev/null and b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/font/SourceCodePro-Bold.otf differ

http://git-wip-us.apache.org/repos/asf/cordova-labs/blob/15d2581d/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/font/SourceCodePro-ExtraLight.otf
----------------------------------------------------------------------
diff --git a/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/font/SourceCodePro-ExtraLight.otf b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/font/SourceCodePro-ExtraLight.otf
new file mode 100755
index 0000000..5cb8e5f
Binary files /dev/null and b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/font/SourceCodePro-ExtraLight.otf differ

http://git-wip-us.apache.org/repos/asf/cordova-labs/blob/15d2581d/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/font/SourceCodePro-Light.otf
----------------------------------------------------------------------
diff --git a/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/font/SourceCodePro-Light.otf b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/font/SourceCodePro-Light.otf
new file mode 100755
index 0000000..e3c0a74
Binary files /dev/null and b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/font/SourceCodePro-Light.otf differ

http://git-wip-us.apache.org/repos/asf/cordova-labs/blob/15d2581d/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/font/SourceCodePro-Regular.otf
----------------------------------------------------------------------
diff --git a/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/font/SourceCodePro-Regular.otf b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/font/SourceCodePro-Regular.otf
new file mode 100755
index 0000000..40208be
Binary files /dev/null and b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/font/SourceCodePro-Regular.otf differ

http://git-wip-us.apache.org/repos/asf/cordova-labs/blob/15d2581d/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/font/SourceCodePro-Semibold.otf
----------------------------------------------------------------------
diff --git a/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/font/SourceCodePro-Semibold.otf b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/font/SourceCodePro-Semibold.otf
new file mode 100755
index 0000000..65b82d1
Binary files /dev/null and b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/font/SourceCodePro-Semibold.otf differ

http://git-wip-us.apache.org/repos/asf/cordova-labs/blob/15d2581d/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/font/SourceSansPro-Black.otf
----------------------------------------------------------------------
diff --git a/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/font/SourceSansPro-Black.otf b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/font/SourceSansPro-Black.otf
new file mode 100755
index 0000000..13338c2
Binary files /dev/null and b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/font/SourceSansPro-Black.otf differ

http://git-wip-us.apache.org/repos/asf/cordova-labs/blob/15d2581d/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/font/SourceSansPro-BlackIt.otf
----------------------------------------------------------------------
diff --git a/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/font/SourceSansPro-BlackIt.otf b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/font/SourceSansPro-BlackIt.otf
new file mode 100755
index 0000000..f5a7490
Binary files /dev/null and b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/font/SourceSansPro-BlackIt.otf differ

http://git-wip-us.apache.org/repos/asf/cordova-labs/blob/15d2581d/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/font/SourceSansPro-Bold.otf
----------------------------------------------------------------------
diff --git a/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/font/SourceSansPro-Bold.otf b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/font/SourceSansPro-Bold.otf
new file mode 100755
index 0000000..8998f3d
Binary files /dev/null and b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/font/SourceSansPro-Bold.otf differ

http://git-wip-us.apache.org/repos/asf/cordova-labs/blob/15d2581d/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/font/SourceSansPro-BoldIt.otf
----------------------------------------------------------------------
diff --git a/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/font/SourceSansPro-BoldIt.otf b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/font/SourceSansPro-BoldIt.otf
new file mode 100755
index 0000000..071d0c3
Binary files /dev/null and b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/font/SourceSansPro-BoldIt.otf differ

http://git-wip-us.apache.org/repos/asf/cordova-labs/blob/15d2581d/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/font/SourceSansPro-ExtraLight.otf
----------------------------------------------------------------------
diff --git a/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/font/SourceSansPro-ExtraLight.otf b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/font/SourceSansPro-ExtraLight.otf
new file mode 100755
index 0000000..43e0c69
Binary files /dev/null and b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/font/SourceSansPro-ExtraLight.otf differ

http://git-wip-us.apache.org/repos/asf/cordova-labs/blob/15d2581d/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/font/SourceSansPro-ExtraLightIt.otf
----------------------------------------------------------------------
diff --git a/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/font/SourceSansPro-ExtraLightIt.otf b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/font/SourceSansPro-ExtraLightIt.otf
new file mode 100755
index 0000000..01ac876
Binary files /dev/null and b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/font/SourceSansPro-ExtraLightIt.otf differ

http://git-wip-us.apache.org/repos/asf/cordova-labs/blob/15d2581d/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/font/SourceSansPro-It.otf
----------------------------------------------------------------------
diff --git a/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/font/SourceSansPro-It.otf b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/font/SourceSansPro-It.otf
new file mode 100755
index 0000000..51577d6
Binary files /dev/null and b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/font/SourceSansPro-It.otf differ

http://git-wip-us.apache.org/repos/asf/cordova-labs/blob/15d2581d/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/font/SourceSansPro-Light.otf
----------------------------------------------------------------------
diff --git a/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/font/SourceSansPro-Light.otf b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/font/SourceSansPro-Light.otf
new file mode 100755
index 0000000..9d8fb28
Binary files /dev/null and b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/font/SourceSansPro-Light.otf differ

http://git-wip-us.apache.org/repos/asf/cordova-labs/blob/15d2581d/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/font/SourceSansPro-LightIt.otf
----------------------------------------------------------------------
diff --git a/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/font/SourceSansPro-LightIt.otf b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/font/SourceSansPro-LightIt.otf
new file mode 100755
index 0000000..e03c41c
Binary files /dev/null and b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/font/SourceSansPro-LightIt.otf differ

http://git-wip-us.apache.org/repos/asf/cordova-labs/blob/15d2581d/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/font/SourceSansPro-Regular.otf
----------------------------------------------------------------------
diff --git a/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/font/SourceSansPro-Regular.otf b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/font/SourceSansPro-Regular.otf
new file mode 100755
index 0000000..7b6fa55
Binary files /dev/null and b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/font/SourceSansPro-Regular.otf differ

http://git-wip-us.apache.org/repos/asf/cordova-labs/blob/15d2581d/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/font/SourceSansPro-Semibold.otf
----------------------------------------------------------------------
diff --git a/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/font/SourceSansPro-Semibold.otf b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/font/SourceSansPro-Semibold.otf
new file mode 100755
index 0000000..6b39aa4
Binary files /dev/null and b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/font/SourceSansPro-Semibold.otf differ

http://git-wip-us.apache.org/repos/asf/cordova-labs/blob/15d2581d/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/font/SourceSansPro-SemiboldIt.otf
----------------------------------------------------------------------
diff --git a/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/font/SourceSansPro-SemiboldIt.otf b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/font/SourceSansPro-SemiboldIt.otf
new file mode 100755
index 0000000..8a668e4
Binary files /dev/null and b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/font/SourceSansPro-SemiboldIt.otf differ

http://git-wip-us.apache.org/repos/asf/cordova-labs/blob/15d2581d/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/img/avatar.png
----------------------------------------------------------------------
diff --git a/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/img/avatar.png b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/img/avatar.png
new file mode 100755
index 0000000..c3a1306
Binary files /dev/null and b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/img/avatar.png differ

http://git-wip-us.apache.org/repos/asf/cordova-labs/blob/15d2581d/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/img/bg_dark.png
----------------------------------------------------------------------
diff --git a/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/img/bg_dark.png b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/img/bg_dark.png
new file mode 100755
index 0000000..e44a7c4
Binary files /dev/null and b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/img/bg_dark.png differ

http://git-wip-us.apache.org/repos/asf/cordova-labs/blob/15d2581d/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/img/breadcrumb.png
----------------------------------------------------------------------
diff --git a/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/img/breadcrumb.png b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/img/breadcrumb.png
new file mode 100755
index 0000000..b2cf4f3
Binary files /dev/null and b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/img/breadcrumb.png differ

http://git-wip-us.apache.org/repos/asf/cordova-labs/blob/15d2581d/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/img/checkbox_checked.png
----------------------------------------------------------------------
diff --git a/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/img/checkbox_checked.png b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/img/checkbox_checked.png
new file mode 100755
index 0000000..daaa1a8
Binary files /dev/null and b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/img/checkbox_checked.png differ

http://git-wip-us.apache.org/repos/asf/cordova-labs/blob/15d2581d/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/img/checkbox_checked_dark.png
----------------------------------------------------------------------
diff --git a/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/img/checkbox_checked_dark.png b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/img/checkbox_checked_dark.png
new file mode 100755
index 0000000..777ddcf
Binary files /dev/null and b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/img/checkbox_checked_dark.png differ

http://git-wip-us.apache.org/repos/asf/cordova-labs/blob/15d2581d/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/img/checkbox_unchecked.png
----------------------------------------------------------------------
diff --git a/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/img/checkbox_unchecked.png b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/img/checkbox_unchecked.png
new file mode 100755
index 0000000..4ef08dd
Binary files /dev/null and b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/img/checkbox_unchecked.png differ

http://git-wip-us.apache.org/repos/asf/cordova-labs/blob/15d2581d/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/img/checkbox_unchecked_dark.png
----------------------------------------------------------------------
diff --git a/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/img/checkbox_unchecked_dark.png b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/img/checkbox_unchecked_dark.png
new file mode 100755
index 0000000..3f5e6c9
Binary files /dev/null and b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/img/checkbox_unchecked_dark.png differ

http://git-wip-us.apache.org/repos/asf/cordova-labs/blob/15d2581d/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/img/checkmark_bw.svg
----------------------------------------------------------------------
diff --git a/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/img/checkmark_bw.svg b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/img/checkmark_bw.svg
new file mode 100755
index 0000000..f737096
--- /dev/null
+++ b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/img/checkmark_bw.svg
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.0.4, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd" [
+	<!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
+	<!ENTITY ns_extend "http://ns.adobe.com/Extensibility/1.0/">
+	<!ENTITY ns_ai "http://ns.adobe.com/AdobeIllustrator/10.0/">
+	<!ENTITY ns_graphs "http://ns.adobe.com/Graphs/1.0/">
+]>
+<svg version="1.1" baseProfile="tiny" id="Layer_1" xmlns:x="&ns_extend;" xmlns:i="&ns_ai;" xmlns:graph="&ns_graphs;"
+	 xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+	 x="0px" y="0px" width="42px" height="42px" viewBox="0 0 42 42" xml:space="preserve">
+<path d="M38.512,7.65l-2.398-1.93c-1.182-0.95-1.87-0.939-2.881,0.311L15.803,27.54l-8.11-6.739c-1.12-0.94-1.82-0.89-2.74,0.26
+	l-1.85,2.41c-0.94,1.182-0.82,1.852,0.29,2.78l11.56,9.562c1.19,1,1.86,0.897,2.78-0.222l21.08-25.061
+	C39.803,9.341,39.742,8.63,38.512,7.65z"/>
+</svg>

http://git-wip-us.apache.org/repos/asf/cordova-labs/blob/15d2581d/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/img/dark-combo-box-bg.png
----------------------------------------------------------------------
diff --git a/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/img/dark-combo-box-bg.png b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/img/dark-combo-box-bg.png
new file mode 100755
index 0000000..9a4e92d
Binary files /dev/null and b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/img/dark-combo-box-bg.png differ

http://git-wip-us.apache.org/repos/asf/cordova-labs/blob/15d2581d/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/img/dark-combo-box-bg2x.png
----------------------------------------------------------------------
diff --git a/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/img/dark-combo-box-bg2x.png b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/img/dark-combo-box-bg2x.png
new file mode 100755
index 0000000..7ab0c5a
Binary files /dev/null and b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/img/dark-combo-box-bg2x.png differ

http://git-wip-us.apache.org/repos/asf/cordova-labs/blob/15d2581d/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/img/dark-grips.png
----------------------------------------------------------------------
diff --git a/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/img/dark-grips.png b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/img/dark-grips.png
new file mode 100755
index 0000000..c52325d
Binary files /dev/null and b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/img/dark-grips.png differ

http://git-wip-us.apache.org/repos/asf/cordova-labs/blob/15d2581d/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/img/dark-sprites2x.png
----------------------------------------------------------------------
diff --git a/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/img/dark-sprites2x.png b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/img/dark-sprites2x.png
new file mode 100755
index 0000000..f9a875b
Binary files /dev/null and b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/img/dark-sprites2x.png differ

http://git-wip-us.apache.org/repos/asf/cordova-labs/blob/15d2581d/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/img/dialog-zone-bg.png
----------------------------------------------------------------------
diff --git a/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/img/dialog-zone-bg.png b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/img/dialog-zone-bg.png
new file mode 100755
index 0000000..6dd0ff8
Binary files /dev/null and b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/img/dialog-zone-bg.png differ

http://git-wip-us.apache.org/repos/asf/cordova-labs/blob/15d2581d/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/img/drop-down-triangle-dark.png
----------------------------------------------------------------------
diff --git a/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/img/drop-down-triangle-dark.png b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/img/drop-down-triangle-dark.png
new file mode 100755
index 0000000..9af2042
Binary files /dev/null and b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/img/drop-down-triangle-dark.png differ

http://git-wip-us.apache.org/repos/asf/cordova-labs/blob/15d2581d/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/img/drop-down-triangle.png
----------------------------------------------------------------------
diff --git a/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/img/drop-down-triangle.png b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/img/drop-down-triangle.png
new file mode 100755
index 0000000..cb1c968
Binary files /dev/null and b/cordova-plugin-test-framework/www/assets/topcoat-0.7.5/img/drop-down-triangle.png differ