Merge pull request #6 from jpchase/CB-7459-part2
CB-7459 Add header to show number of enabled plugin tests
diff --git a/www/assets/main.css b/www/assets/main.css
index fe47a1e..7665448 100644
--- a/www/assets/main.css
+++ b/www/assets/main.css
@@ -123,11 +123,10 @@
}
#test-enablers-container {
- margin: 10px 0px;
+ margin: 10px 5px;
}
#test-expander {
- margin: 5px;
text-decoration: underline;
}
diff --git a/www/main.js b/www/main.js
index a2412b0..01049e9 100644
--- a/www/main.js
+++ b/www/main.js
@@ -157,19 +157,22 @@
var enablerList = createEnablerList();
// Iterate over all the registered test modules
- Object.keys(cdvtests.tests).forEach(function(api) {
- var testModule = cdvtests.tests[api];
-
- if (!testModule.hasOwnProperty('defineAutoTests'))
- return;
-
+ var enabled = 0;
+ var total = iterateAutoTests(cdvtests, function(api, testModule) {
// For "standard" plugins remove the common/repetitive bits of
// the api key, for use as the title. For third-party plugins, the full
// api will be used as the title
var title = api.replace(/org\.apache\.cordova\./i, '').replace(/\.tests.tests/i, '');
createEnablerCheckbox(api, title, testModule.getEnabled(), enablerList.id, toggleTestHandler);
+
+ if (testModule.getEnabled()) {
+ enabled++;
+ }
});
+
+ updateTotalTestCount(total);
+ updateEnabledTestCount(enabled);
}
/******************************************************************************/
@@ -180,14 +183,33 @@
var enablerContainer = document.createElement('div');
enablerContainer.id = 'test-enablers-container';
+ // Create header to show count of enabled/total tests
+ var header = document.createElement('h3');
+
+ var headerPrefix = document.createTextNode('Running ');
+
+ var enabledCount = document.createElement('span');
+ enabledCount.id = 'test-enabled-count';
+ enabledCount.innerText = '?/';
+
+ var totalCount = document.createElement('span');
+ totalCount.id = 'test-total-count';
+ totalCount.setAttribute('count', 0);
+ totalCount.innerText = '?';
+
+ var headerSuffix = document.createTextNode(' plugin tests');
+
+ // Create widget to show/hide list
var expander = document.createElement('span');
expander.id = 'test-expander';
expander.innerText = 'Show/hide tests to be run';
expander.onclick = toggleEnablerVisibility;
+ // Create list to contain checkboxes for each test
var enablerList = document.createElement('div');
enablerList.id = "test-list";
+ // Create select/deselect all buttons (in button bar)
var checkButtonBar = document.createElement('ul');
checkButtonBar.classList.add('topcoat-button-bar');
@@ -215,6 +237,12 @@
enablerList.appendChild(checkButtonBar);
+ header.appendChild(headerPrefix);
+ header.appendChild(enabledCount);
+ header.appendChild(totalCount);
+ header.appendChild(headerSuffix);
+
+ enablerContainer.appendChild(header);
enablerContainer.appendChild(expander);
enablerContainer.appendChild(enablerList);
@@ -225,6 +253,43 @@
/******************************************************************************/
+function updateTotalTestCount(totalCount) {
+ var label = document.getElementById('test-total-count');
+
+ label.setAttribute('count', totalCount);
+ label.innerText = totalCount;
+}
+
+/******************************************************************************/
+
+function updateEnabledTestCount(enabledCount) {
+
+ var enabledLabel = document.getElementById('test-enabled-count');
+
+ if (!enabledCount) {
+ // Determine how many tests are currently enabled
+ var cdvtests = cordova.require('org.apache.cordova.test-framework.cdvtests');
+ var enabled = 0;
+ iterateAutoTests(cdvtests, function(api, testModule) {
+ if (testModule.getEnabled()) {
+ enabled++;
+ }
+ });
+ enabledCount = enabled;
+ }
+
+ // Compare enabled count vs the total to show if all tests are to be run
+ var totalCount = document.getElementById('test-total-count').getAttribute('count');
+
+ if (enabledCount == totalCount) {
+ enabledLabel.innerText = 'All ';
+ } else {
+ enabledLabel.innerText = enabledCount + '/';
+ }
+}
+
+/******************************************************************************/
+
function toggleSelected(containerId, newCheckedValue) {
var container = document.getElementById(containerId);
@@ -235,7 +300,9 @@
cbs[i].checked = newCheckedValue;
toggleTestEnabled(cbs[i]);
}
- }
+ }
+
+ updateEnabledTestCount(newCheckedValue ? cbs.length : 0);
}
/******************************************************************************/
@@ -287,6 +354,7 @@
var checkbox = event.target;
toggleTestEnabled(checkbox);
+ updateEnabledTestCount();
}
/******************************************************************************/
@@ -298,6 +366,29 @@
/******************************************************************************/
+function iterateAutoTests(cdvtests, callback) {
+
+ var testNames = Object.keys(cdvtests.tests);
+
+ var validCount = 0;
+
+ // Iterate over all the registered test modules
+ testNames.forEach(function(api) {
+ var testModule = cdvtests.tests[api];
+
+ if (!testModule.hasOwnProperty('defineAutoTests')) {
+ return;
+ }
+
+ validCount++;
+ callback(api, testModule);
+ });
+
+ return validCount;
+}
+
+/******************************************************************************/
+
function runAutoTests() {
setTitle('Auto Tests');