diff options
author | ojan@chromium.org <ojan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-03-06 00:58:31 +0000 |
---|---|---|
committer | ojan@chromium.org <ojan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-03-06 00:58:31 +0000 |
commit | e7ed162a2d855f85477ed0a920c8085d5752cc09 (patch) | |
tree | a14d7c03707429bcd2f9b8f932f623686df5c145 | |
parent | d60677ca2916e3869a643b904f54b3b2c1f266cc (diff) | |
download | chromium_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
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) { |