summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorojan@chromium.org <ojan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-03-06 00:58:31 +0000
committerojan@chromium.org <ojan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-03-06 00:58:31 +0000
commite7ed162a2d855f85477ed0a920c8085d5752cc09 (patch)
treea14d7c03707429bcd2f9b8f932f623686df5c145
parentd60677ca2916e3869a643b904f54b3b2c1f266cc (diff)
downloadchromium_src-e7ed162a2d855f85477ed0a920c8085d5752cc09.zip
chromium_src-e7ed162a2d855f85477ed0a920c8085d5752cc09.tar.gz
chromium_src-e7ed162a2d855f85477ed0a920c8085d5752cc09.tar.bz2
Add support for non-webkit tests to the test dashboards.
Review URL: http://codereview.chromium.org/669217 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@40804 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--webkit/tools/layout_tests/dashboards/aggregate_results.html22
-rw-r--r--webkit/tools/layout_tests/dashboards/dashboard_base.js182
-rw-r--r--webkit/tools/layout_tests/flakiness_dashboard.html187
3 files changed, 253 insertions, 138 deletions
diff --git a/webkit/tools/layout_tests/dashboards/aggregate_results.html b/webkit/tools/layout_tests/dashboards/aggregate_results.html
index 8b1710c..0b22755 100644
--- a/webkit/tools/layout_tests/dashboards/aggregate_results.html
+++ b/webkit/tools/layout_tests/dashboards/aggregate_results.html
@@ -32,7 +32,7 @@
// Methods and objects from dashboard_base.js to override.
//////////////////////////////////////////////////////////////////////////////
function generatePage() {
- var html = '';
+ var html = getHTMLForTestTypeSwitcher() + '<br>';
for (var builder in builders) {
html += getHTMLForBuilder(builder);
}
@@ -48,14 +48,18 @@
// around and just assume all keys have the same number of builders for a
// given builder.
var numColumns = results[ALL_FIXABLE_COUNT_KEY].length;
- return '<div class=container><h2>' + builder + '</h2>' +
+ var html = '<div class=container><h2>' + builder + '</h2>' +
getHTMLForSummaryTable(results, numColumns) +
getHTMLForTestType(results, FIXABLE_COUNTS_KEY, FIXABLE_DESCRIPTION,
- numColumns) +
- getHTMLForTestType(results, DEFERRED_COUNTS_KEY, DEFERRED_DESCRIPTION,
- numColumns) +
- getHTMLForTestType(results, WONTFIX_COUNTS_KEY, WONTFIX_DESCRIPTION,
- numColumns) + '</div>';
+ numColumns);
+ if (isLayoutTestResults()) {
+ html +=
+ getHTMLForTestType(results, DEFERRED_COUNTS_KEY,
+ DEFERRED_DESCRIPTION, numColumns) +
+ getHTMLForTestType(results, WONTFIX_COUNTS_KEY, WONTFIX_DESCRIPTION,
+ numColumns);
+ }
+ return html + '</div>';
}
function getHTMLForRevisionRows(results, numColumns) {
@@ -93,7 +97,7 @@
var valuesForEachRow = {};
for (var i = 0; i < numColumns; i++) {
- for (var expectation in EXPECTATIONS_MAP) {
+ for (var expectation in getExpectationsMap()) {
if (expectation in counts[i]) {
var count = counts[i][expectation];
@@ -106,7 +110,7 @@
}
for (var expectation in valuesForEachRow) {
- html += getHTMLForTableRow(EXPECTATIONS_MAP[expectation],
+ html += getHTMLForTableRow(getExpectationsMap()[expectation],
valuesForEachRow[expectation]);
}
diff --git a/webkit/tools/layout_tests/dashboards/dashboard_base.js b/webkit/tools/layout_tests/dashboards/dashboard_base.js
index 832500e..9c77b71 100644
--- a/webkit/tools/layout_tests/dashboards/dashboard_base.js
+++ b/webkit/tools/layout_tests/dashboards/dashboard_base.js
@@ -35,19 +35,23 @@ var defaultStateValues = {};
//////////////////////////////////////////////////////////////////////////////
// CONSTANTS
//////////////////////////////////////////////////////////////////////////////
-var EXPECTATIONS_MAP = {
- 'T': 'TIMEOUT',
- 'C': 'CRASH',
+var BASE_EXPECTATIONS_MAP_ = {
'P': 'PASS',
'F': 'TEXT',
+ 'N': 'NO DATA',
+ 'X': 'SKIP'
+};
+
+var LAYOUT_TEST_EXPECTATIONS_MAP_ = {
+ 'T': 'TIMEOUT',
+ 'C': 'CRASH',
'I': 'IMAGE',
'Z': 'IMAGE+TEXT',
// We used to glob a bunch of expectations into "O" as OTHER. Expectations
// are more precise now though and it just means MISSING.
- 'O': 'MISSING',
- 'N': 'NO DATA',
- 'X': 'SKIP'
+ 'O': 'MISSING'
};
+LAYOUT_TEST_EXPECTATIONS_MAP_.__proto__ = BASE_EXPECTATIONS_MAP_;
// Keys in the JSON files.
var WONTFIX_COUNTS_KEY = 'wontfixCounts';
@@ -61,6 +65,11 @@ var ALL_FIXABLE_COUNT_KEY = 'allFixableCount';
var CHROME_REVISIONS_KEY = 'chromeRevision';
var WEBKIT_REVISIONS_KEY = 'webkitRevision';
+var TEST_TYPES = ['app_unittests', 'courgette_unittests', 'googleurl_unittests',
+ 'installer_util_unittests', 'ipc_tests', 'layout_test_results',
+ 'media_unittests', 'mini_installer_test', 'printing_unittests',
+ 'sync_unit_tests', 'ui_tests', 'unit_tests'];
+
/**
* @return {boolean} Whether the value represents a failing result.
*/
@@ -88,7 +97,7 @@ function handleValidHashParameterWrapper(key, value) {
case 'testType':
validateParameter(currentState, key, value,
function() {
- return isValidName(value);
+ return TEST_TYPES.indexOf(value) != -1;
});
return true;
@@ -156,10 +165,6 @@ function endsWidth(a, b) {
return a.lastIndexOf(b) == a.length - b.length;
}
-function isValidName(str) {
- return str.match(/[A-Za-z0-9\-\_,]/);
-}
-
function trimString(str) {
return str.replace(/^\s+|\s+$/g, '');
}
@@ -230,47 +235,85 @@ var oldState;
// Parse cross-dashboard parameters before using them.
parseParameters();
-var builders, builderBase;
+function isLayoutTestResults() {
+ return currentState.testType == 'layout_test_results';
+}
+
+var defaultBuilderName, builders, builderBase;
if (currentState.buildDir) {
// If buildDir is set, point to the results.json and expectations.json in the
// local tree. Useful for debugging changes to the python JSON generator.
+ defaultBuilderName = 'DUMMY_BUILDER_NAME';
builders = {'DUMMY_BUILDER_NAME': ''};
var loc = document.location.toString();
var offset = loc.indexOf('webkit/');
builderBase = loc.substr(loc, offset + 7) + currentState.buildDir + "/";
} else {
- // Map of builderName (the name shown in the waterfall)
- // to builderPath (the path used in the builder's URL)
- // TODO(ojan): Make this switch based off of the testType.
- if (currentState.useWebKitCanary) {
- builders = {
- 'Webkit (webkit.org)': 'webkit-rel-webkit-org',
- 'Webkit Linux (webkit.org)': 'webkit-rel-linux-webkit-org',
- 'Webkit Mac (webkit.org)': 'webkit-rel-mac-webkit-org'
- };
- } else if (currentState.useV8Canary) {
- builders = {
- 'Webkit (V8-Latest)': 'webkit-rel-v8',
- 'Webkit Mac (V8-Latest)': 'webkit-rel-mac-v8',
- 'Webkit Linux (V8-Latest)': 'webkit-rel-linux-v8'
- }
- } else {
- builders = {
- 'Webkit': 'webkit-rel',
- 'Webkit (dbg)(1)': 'webkit-dbg-1',
- 'Webkit (dbg)(2)': 'webkit-dbg-2',
- 'Webkit (dbg)(3)': 'webkit-dbg-3',
- 'Webkit Linux': 'webkit-rel-linux',
- 'Webkit Linux (dbg)(1)': 'webkit-dbg-linux-1',
- 'Webkit Linux (dbg)(2)': 'webkit-dbg-linux-2',
- 'Webkit Linux (dbg)(3)': 'webkit-dbg-linux-3',
- 'Webkit Mac10.5': 'webkit-rel-mac5',
- 'Webkit Mac10.5 (dbg)(1)': 'webkit-dbg-mac5-1',
- 'Webkit Mac10.5 (dbg)(2)': 'webkit-dbg-mac5-2',
- 'Webkit Mac10.5 (dbg)(3)': 'webkit-dbg-mac5-3'
- };
- }
builderBase = 'http://build.chromium.org/buildbot/';
+
+ switch (currentState.testType) {
+ case 'layout_test_results':
+ defaultBuilderName = 'Webkit';
+ // Map of builderName (the name shown in the waterfall)
+ // to builderPath (the path used in the builder's URL)
+ // TODO(ojan): Make this switch based off of the testType.
+ if (currentState.useWebKitCanary) {
+ builders = {
+ 'Webkit (webkit.org)': 'webkit-rel-webkit-org',
+ 'Webkit Linux (webkit.org)': 'webkit-rel-linux-webkit-org',
+ 'Webkit Mac (webkit.org)': 'webkit-rel-mac-webkit-org'
+ };
+ } else if (currentState.useV8Canary) {
+ builders = {
+ 'Webkit (V8-Latest)': 'webkit-rel-v8',
+ 'Webkit Mac (V8-Latest)': 'webkit-rel-mac-v8',
+ 'Webkit Linux (V8-Latest)': 'webkit-rel-linux-v8'
+ }
+ } else {
+ builders = {
+ 'Webkit': 'webkit-rel',
+ 'Webkit (dbg)(1)': 'webkit-dbg-1',
+ 'Webkit (dbg)(2)': 'webkit-dbg-2',
+ 'Webkit (dbg)(3)': 'webkit-dbg-3',
+ 'Webkit Linux': 'webkit-rel-linux',
+ 'Webkit Linux (dbg)(1)': 'webkit-dbg-linux-1',
+ 'Webkit Linux (dbg)(2)': 'webkit-dbg-linux-2',
+ 'Webkit Linux (dbg)(3)': 'webkit-dbg-linux-3',
+ 'Webkit Mac10.5': 'webkit-rel-mac5',
+ 'Webkit Mac10.5 (dbg)(1)': 'webkit-dbg-mac5-1',
+ 'Webkit Mac10.5 (dbg)(2)': 'webkit-dbg-mac5-2',
+ 'Webkit Mac10.5 (dbg)(3)': 'webkit-dbg-mac5-3'
+ };
+ }
+
+ break;
+
+ case 'app_unittests':
+ case 'courgette_unittests':
+ case 'googleurl_unittests':
+ case 'installer_util_unittests':
+ case 'ipc_tests':
+ case 'media_unittests':
+ case 'mini_installer_test':
+ case 'printing_unittests':
+ case 'sync_unit_tests':
+ case 'ui_tests':
+ case 'unit_tests':
+ defaultBuilderName = 'XP Tests';
+ builders = {
+ // TODO(ojan): Uncomment this and add more builders.
+ // This builder current has bogus data (the builderName in the JSON
+ // files points to "Vista Tests" or "XP Tests" instead of "Chromium XP"
+ // 'Chromium XP': 'chromium-tests',
+ 'Vista Tests': 'chromium-rel-vista-tests',
+ 'XP Tests': 'chromium-rel-xp-tests'
+ }
+
+ break;
+
+ default:
+ console.log('invalid testType paramenter');
+ }
}
// Append JSON script elements.
@@ -286,15 +329,25 @@ function ADD_RESULTS(builds) {
}
function getPathToBuilderResultsFile(builderName) {
- return builderBase + currentState['testType'] + '/' +
- builders[builderName] + '/';
+ var rootPath, subPath;
+ if (isLayoutTestResults()) {
+ rootPath = currentState.testType;
+ subPath = '';
+ } else {
+ rootPath = 'gtest_results';
+ subPath = currentState.testType + '/';
+ }
+ return builderBase + rootPath + '/' + builders[builderName] + '/' + subPath;
}
-var expectationsLoaded = false;
-function ADD_EXPECTATIONS(expectations) {
- expectationsLoaded = true;
- expectationsByTest = expectations;
- handleResourceLoad();
+// Only webkit tests have a sense of test expectations.
+var waitingOnExpectations = isLayoutTestResults();
+if (waitingOnExpectations) {
+ function ADD_EXPECTATIONS(expectations) {
+ waitingOnExpectations = false;
+ expectationsByTest = expectations;
+ handleResourceLoad();
+ }
}
function appendJSONScriptElements() {
@@ -310,7 +363,10 @@ function appendJSONScriptElements() {
}
// Grab expectations file from any builder.
- appendScript(getPathToBuilderResultsFile(builderName) + 'expectations.json');
+ if (waitingOnExpectations) {
+ appendScript(getPathToBuilderResultsFile(builderName) +
+ 'expectations.json');
+ }
}
var hasDoneInitialPageGeneration = false;
@@ -323,7 +379,7 @@ function handleResourceLoad() {
}
function handleLocationChange() {
- if (!expectationsLoaded)
+ if (waitingOnExpectations)
return;
for (var build in builders) {
@@ -437,6 +493,28 @@ function getKeys(obj) {
return res;
}
+/**
+ * Returns the appropriate expectatiosn map for the current testType.
+ */
+function getExpectationsMap() {
+ return isLayoutTestResults() ? LAYOUT_TEST_EXPECTATIONS_MAP_ :
+ BASE_EXPECTATIONS_MAP_;
+}
+
+/**
+ * Returns the HTML for the select element to switch to different testTypes.
+ */
+function getHTMLForTestTypeSwitcher() {
+ var html = '<select onchange="setQueryParameter(\'testType\',' +
+ 'this[this.selectedIndex].innerHTML);window.location.reload()">';
+
+ TEST_TYPES.forEach(function(elem) {
+ html += '<option' + (elem == currentState.testType ? ' selected' : '') +
+ '>' + elem + '</option>';
+ });
+ return html + '</select>';
+}
+
appendJSONScriptElements();
document.addEventListener('mousedown', function(e) {
diff --git a/webkit/tools/layout_tests/flakiness_dashboard.html b/webkit/tools/layout_tests/flakiness_dashboard.html
index 9269551..df2bb5a 100644
--- a/webkit/tools/layout_tests/flakiness_dashboard.html
+++ b/webkit/tools/layout_tests/flakiness_dashboard.html
@@ -282,8 +282,10 @@
'MAC': 'ALL'
};
var BUILD_TYPES = {'DEBUG': 'DBG', 'RELEASE': 'RELEASE'};
- var BASE_TABLE_HEADERS = ['bugs', 'modifiers', 'expectations', 'missing',
- 'extra', 'slowest run', '% fail', 'flakiness (numbers are runtimes in seconds)'];
+ var BASE_TABLE_HEADERS = ['slowest run', '% fail',
+ 'flakiness (numbers are runtimes in seconds)'];
+ var LAYOUT_TEST_TABLE_HEADERS = ['bugs', 'modifiers', 'expectations',
+ 'missing', 'extra'].concat(BASE_TABLE_HEADERS);
var MIN_SECONDS_FOR_SLOW_TEST = 4;
var MIN_SECONDS_FOR_SLOW_TEST_DEBUG = 2 * MIN_SECONDS_FOR_SLOW_TEST;
var FAIL_RESULTS = ['IMAGE', 'IMAGE+TEXT', 'TEXT', 'SIMPLIFIED', 'MISSING'];
@@ -386,18 +388,18 @@
defaultStateValues = {
sortOrder: BACKWARD,
sortColumn: 'flakiness',
- showCorrectExpectations: false,
- showWrongExpectations: false,
showExpectations: false,
showFlaky: true,
showLargeExpectations: false,
legacyExpectationsSemantics: true,
- showWontFixSkip: false,
- showSlow: false,
- showSkipped: false,
+ showCorrectExpectations: !isLayoutTestResults(),
+ showWrongExpectations: !isLayoutTestResults(),
+ showWontFixSkip: !isLayoutTestResults(),
+ showSlow: !isLayoutTestResults(),
+ showSkipped: !isLayoutTestResults(),
expectationsUpdate: false,
updateIndex: 0,
- builder: 'Webkit'
+ builder: defaultBuilderName
};
//////////////////////////////////////////////////////////////////////////////
@@ -449,7 +451,9 @@
}
function getMaxResults() {
- if (currentState.expectationsUpdate ||
+ // Max results is just a way of making the page performant. For now, the
+ // non layout test results pages are fast even showing max results.
+ if (!isLayoutTestResults() || currentState.expectationsUpdate ||
currentState.tests && !currentState.maxResults) {
return 750;
}
@@ -500,7 +504,7 @@
if (result == 'N')
return '';
- return EXPECTATIONS_MAP[result];
+ return getExpectationsMap()[result];
}
// Map of all tests to true values. This is just so we can have the list of
@@ -1135,8 +1139,8 @@
extraExpectations.push('SLOW');
}
- resultsForTest.meetsExpectations =
- !missingExpectations.length && !extraExpectations.length;
+ resultsForTest.meetsExpectations = !isLayoutTestResults() ||
+ (!missingExpectations.length && !extraExpectations.length);
resultsForTest.missing = missingExpectations.sort().join(' ');
resultsForTest.extra = extraExpectations.sort().join(' ');
}
@@ -1199,7 +1203,7 @@
'</li>';
var chromeRevision = resultsByBuilder[builder].chromeRevision[index];
- if (chromeRevision) {
+ if (chromeRevision && isLayoutTestResults()) {
html += '<li><a href="' + TEST_RESULTS_BASE_PATH + builders[builder] +
'/' + chromeRevision + '/layout-test-results.zip' +
'">layout-test-results.zip</a></li>';
@@ -1375,20 +1379,23 @@
'<span class="link" onclick="showPopupForTest(event, \'' + test.test +
'\');selectContents(this);return false;">' + test.test + '</span>';
- return '<tr class="' +
+ var html = '<tr class="' +
(test.meetsExpectations ? '' : 'wrong-expectations') +
- // TODO(ojan): If a test is a chrome/ or a pending/ test, point to
- // src.chromium.org instead of trac.webkit.org.
- '"><td class=test-link>' + testCellHTML +
- '</td><td class=options-container>' +
- (test.bugsHTML ? test.bugsHTML : getCreateBugHTML(test)) +
- '</td><td class=options-container>' + test.modifiersHTML +
- '</td><td class=options-container>' + test.expectationsHTML +
- '</td><td>' + test.missing +
- '</td><td>' + test.extra +
- '</td><td>' + (test.slowestTime ? test.slowestTime + 's' : '') +
- '</td><td>' + test.percentFailed +
- '</td>' + getHtmlForTestResults(test) + '</tr>';
+ '"><td class=test-link>' + testCellHTML;
+
+ if (isLayoutTestResults()) {
+ html += '</td><td class=options-container>' +
+ (test.bugsHTML ? test.bugsHTML : getCreateBugHTML(test)) +
+ '</td><td class=options-container>' + test.modifiersHTML +
+ '</td><td class=options-container>' + test.expectationsHTML +
+ '</td><td>' + test.missing +
+ '</td><td>' + test.extra;
+ }
+
+ return html +
+ '</td><td>' + (test.slowestTime ? test.slowestTime + 's' : '') +
+ '</td><td>' + test.percentFailed +
+ '</td>' + getHtmlForTestResults(test) + '</tr>';
}
function getSortColumnFromTableHeader(headerText) {
@@ -1630,10 +1637,14 @@
var testResults = testToResultsMap[test];
var html = '';
if (testResults && testResults.length) {
- var tracURL = TEST_URL_BASE_PATH + test
- html += getLinkHTMLToOpenWindow(tracURL, tracURL) +
- '<div><b>If a builder is not listed, that means the builder does ' +
- 'not run that test or all runs of the test passed.</b></div>';
+ if (isLayoutTestResults()) {
+ var tracURL = TEST_URL_BASE_PATH + test
+ html += getLinkHTMLToOpenWindow(tracURL, tracURL);
+ }
+
+ html +='<div><b>If a builder is not listed, that means the builder ' +
+ 'does not run that test (e.g. it is skipped) or all runs of the ' +
+ 'test passed.</b></div>';
for (var j = 0; j < testResults.length; j++) {
html += getHTMLForSingleTestRow(testResults[j], true);
@@ -1649,11 +1660,16 @@
html += '<div class="not-found">Test not found. Either it does ' +
'not exist, is skipped or passes on all platforms.</div>';
}
- return html + '<div class=expectations test=' + test + '><div>' +
- getLinkHTMLToToggleState('showExpectations', 'expectations') + ' | ' +
- getLinkHTMLToToggleState('showLargeExpectations', 'large thumbnails') +
- ' | <b>Only shows actual results/diffs from the most recent *failure*' +
- ' on each bot.</b></div></div>';
+
+ if (isLayoutTestResults()) {
+ html += '<div class=expectations test=' + test + '><div>' +
+ getLinkHTMLToToggleState('showExpectations', 'expectations') + ' | ' +
+ getLinkHTMLToToggleState('showLargeExpectations',
+ 'large thumbnails') +
+ ' | <b>Only shows actual results/diffs from the most recent' +
+ ' *failure* on each bot.</b></div></div>';
+ }
+ return html;
}
function getExpectationsContainer(expectationsContainers, parentContainer,
@@ -2014,7 +2030,8 @@
}
function getHTMLForNavBar(opt_builderName) {
- var html = '<div id=builders>';
+ var html = '<div id=builders>' + getHTMLForTestTypeSwitcher();
+
for (var builder in builders) {
var className = builder == opt_builderName ? 'current-builder' : 'link';
html += '<span class=' + className + ' id="' + builder +
@@ -2022,20 +2039,24 @@
builder + '</span>';
}
- return html + '</div>' +
+ html += '</div>' +
'<form id=tests-form ' +
- 'onsubmit="setState(\'tests\', tests.value);return false;"><div>' +
- getHTMLForCanaryLink('Main builders', false, false) +
- getHTMLForCanaryLink('WebKit.org Canary', true, false) +
- getHTMLForCanaryLink('V8 Canary', false, true) +
- '<span class=link ' +
- 'onclick="setState(\'tests\', \'allIncorrectExpectations\')">' +
- 'All incorrect expectations</span> | '+
- '<span class=link ' +
- 'onclick="setState(\'tests\', \'allSlowTests\')">All SLOW' +
- '</span> | <span class=link ' +
- 'onclick="setState(\'tests\', \'allNeedSlowTests\')">All need ' +
- 'SLOW</span> | Show tests on all platforms: </div><input name=tests ' +
+ 'onsubmit="setState(\'tests\', tests.value);return false;"><div>';
+
+ if (isLayoutTestResults()) {
+ html += getHTMLForCanaryLink('Main builders', false, false) +
+ getHTMLForCanaryLink('WebKit.org Canary', true, false) +
+ getHTMLForCanaryLink('V8 Canary', false, true) +
+ '<span class=link ' +
+ 'onclick="setState(\'tests\', \'allIncorrectExpectations\')">' +
+ 'All incorrect expectations</span> | '+
+ '<span class=link ' +
+ 'onclick="setState(\'tests\', \'allSlowTests\')">All SLOW' +
+ '</span> | <span class=link ' +
+ 'onclick="setState(\'tests\', \'allNeedSlowTests\')">All need ' +
+ 'SLOW</span> | ';
+ }
+ return html + 'Show tests on all platforms: </div><input name=tests ' +
'placeholder="Comma or space-separated list of tests or partial ' +
'paths to show test results across all builders, e.g., ' +
'foo/bar.html,foo/baz,domstorage" ' +
@@ -2066,19 +2087,23 @@
var testsHTML = tableRowsHTML ? getHTMLForTestTable(tableRowsHTML) :
'<div>No tests. Try showing tests with correct expectations.</div>';
- var html = getHTMLForNavBar(builderName) +
- getHTMLForTestsWithExpectationsButNoFailures(builderName) +
- '<h2>Failing tests</h2><div>' +
- getLinkHTMLToToggleState('showWontFixSkip', 'WONTFIX/SKIP') +
- ' | ' +
- getLinkHTMLToToggleState('showCorrectExpectations',
- 'tests with correct expectations') + ' | ' +
- getLinkHTMLToToggleState('showWrongExpectations',
- 'tests with wrong expectations') + ' | ' +
- getLinkHTMLToToggleState('showFlaky', 'flaky') + ' | ' +
- getLinkHTMLToToggleState('showSlow', 'slow') + ' | ' +
- 'All columns are sortable. | ' +
- 'Flakiness reader order is newer --> older runs.</div>' +
+ var html = getHTMLForNavBar(builderName);
+
+ if (isLayoutTestResults()) {
+ html += getHTMLForTestsWithExpectationsButNoFailures(builderName) +
+ '<h2>Failing tests</h2>' +
+ getLinkHTMLToToggleState('showWontFixSkip', 'WONTFIX/SKIP') +
+ ' | ' +
+ getLinkHTMLToToggleState('showCorrectExpectations',
+ 'tests with correct expectations') + ' | ' +
+ getLinkHTMLToToggleState('showWrongExpectations',
+ 'tests with wrong expectations') + ' | ' +
+ getLinkHTMLToToggleState('showFlaky', 'flaky') + ' | ' +
+ getLinkHTMLToToggleState('showSlow', 'slow');
+ }
+
+ html += ' | All columns are sortable. | ' +
+ 'Flakiness reader order is newer --> older runs.<br>' +
testsHTML;
appendHTML(html);
@@ -2102,7 +2127,9 @@
}
function createTableHeadersArray(firstColumnHeader) {
- tableHeaders = [firstColumnHeader].concat(BASE_TABLE_HEADERS);
+ var baseHeaders = isLayoutTestResults() ? LAYOUT_TEST_TABLE_HEADERS :
+ BASE_TABLE_HEADERS;
+ tableHeaders = [firstColumnHeader].concat(baseHeaders);
}
/**
@@ -2200,25 +2227,31 @@
document.body.appendChild(legend);
}
- var innerHTML = '<div id=legend-toggle onclick="hideLegend()">Hide ' +
+ var html = '<div id=legend-toggle onclick="hideLegend()">Hide ' +
'legend [type esc]</div><div>Number of flaky tests listed next to ' +
'each builder</div><div id=legend-contents>';
- for (var expectation in EXPECTATIONS_MAP) {
- innerHTML += '<div class=' + expectation + '>' +
- EXPECTATIONS_MAP[expectation] + '</div>';
+ for (var expectation in getExpectationsMap()) {
+ html += '<div class=' + expectation + '>' +
+ getExpectationsMap()[expectation] + '</div>';
}
- innerHTML += '<div class=wrong-expectations>WRONG EXPECTATIONS</div>' +
- '<div class=merge>WEBKIT MERGE</div></div><br style="clear:both">' +
- '</div><h3>Test expectatons fallback order.</h3>';
- for (var platform in fallbacksMap) {
- innerHTML += '<div class=fallback-header>' + platform + '</div>' +
- htmlForFallbackHelp(fallbacksMap[platform]);
+ html += '<div class=merge>WEBKIT MERGE</div>';
+ if (isLayoutTestResults()) {
+ html += '<div class=wrong-expectations>WRONG EXPECTATIONS</div>' +
+ '</div><br style="clear:both">' +
+ '</div><h3>Test expectatons fallback order.</h3>';
+
+ for (var platform in fallbacksMap) {
+ html += '<div class=fallback-header>' + platform + '</div>' +
+ htmlForFallbackHelp(fallbacksMap[platform]);
+ }
+ html += '<div>TIMES:</div>' +
+ getHtmlForSlowTimes(MIN_SECONDS_FOR_SLOW_TEST) +
+ '<div>DEBUG TIMES:</div>' +
+ getHtmlForSlowTimes(MIN_SECONDS_FOR_SLOW_TEST_DEBUG);
}
- legend.innerHTML = innerHTML + '<div>TIMES:</div>' +
- getHtmlForSlowTimes(MIN_SECONDS_FOR_SLOW_TEST) +
- '<div>DEBUG TIMES:</div>' +
- getHtmlForSlowTimes(MIN_SECONDS_FOR_SLOW_TEST_DEBUG);
+
+ legend.innerHTML = html;
}
function getHtmlForSlowTimes(minTime) {