| Index: third_party/WebKit/LayoutTests/fast/harness/resources/results-test.js
|
| diff --git a/third_party/WebKit/LayoutTests/fast/harness/resources/results-test.js b/third_party/WebKit/LayoutTests/fast/harness/resources/results-test.js
|
| index 2d01864075b00a34b0f7c0bf585d3ae797a06f26..14593b946ac12add8e6f3885826950e3f7f6ad42 100644
|
| --- a/third_party/WebKit/LayoutTests/fast/harness/resources/results-test.js
|
| +++ b/third_party/WebKit/LayoutTests/fast/harness/resources/results-test.js
|
| @@ -60,14 +60,21 @@ function mockExpectation(expected, actual)
|
| };
|
| }
|
|
|
| +function currentTestName() {
|
| + var testName = 'TEST ' + g_testIndex;
|
| + if (g_testName)
|
| + testName += ' (' + g_testName + ')';
|
| + return testName;
|
| +}
|
| +
|
| function logPass(msg)
|
| {
|
| - g_log.push('TEST-' + g_testIndex + ': <span class="test-pass">' + msg + '</span>')
|
| + g_log.push('<span class="test-pass">' + msg + '</span>: ' + currentTestName())
|
| }
|
|
|
| function logFail(msg)
|
| {
|
| - g_log.push('TEST-' + g_testIndex + ': <span class="test-fail">' + msg + '</span>')
|
| + g_log.push('<span class="test-fail">' + msg + '</span>: ' + currentTestName())
|
| }
|
|
|
| function assertTrue(bool)
|
| @@ -78,11 +85,12 @@ function assertTrue(bool)
|
| logFail('FAIL');
|
| }
|
|
|
| -function runTest(results, assertions, opt_localStorageValue)
|
| +function runTest(results, assertions, opt_testName, opt_localStorageValue)
|
| {
|
| document.body.innerHTML = '';
|
| g_testIndex++;
|
| g_state = undefined;
|
| + g_testName = opt_testName || '';
|
| localStorage.setItem(OptionWriter._key, opt_localStorageValue || '');
|
|
|
| try {
|
| @@ -99,14 +107,14 @@ function runTest(results, assertions, opt_localStorageValue)
|
| }
|
| }
|
|
|
| -function runDefaultSingleRowTest(test, expected, actual, isExpected, textResults, imageResults)
|
| +function runDefaultSingleRowTest(test, expected, actual, isExpected, textResults, imageResults, opt_testName)
|
| {
|
| results = mockResults();
|
| results.tests[test] = mockExpectation(expected, actual);
|
| - runSingleRowTest(results, isExpected, textResults, imageResults);
|
| + runSingleRowTest(results, isExpected, textResults, imageResults, opt_testName);
|
| }
|
|
|
| -function runSingleRowTest(results, isExpected, textResults, imageResults)
|
| +function runSingleRowTest(results, isExpected, textResults, imageResults, opt_testName)
|
| {
|
| for (var key in results.tests)
|
| var test = key;
|
| @@ -123,7 +131,7 @@ function runSingleRowTest(results, isExpected, textResults, imageResults)
|
| assertTrue(document.querySelector('tbody td:nth-child(3)').textContent == imageResults);
|
| assertTrue(document.querySelector('tbody td:nth-child(4)').textContent == actual);
|
| assertTrue(document.querySelector('tbody td:nth-child(5)').textContent == expected);
|
| - });
|
| + }, opt_testName || 'single row test');
|
|
|
| }
|
|
|
| @@ -135,7 +143,7 @@ function runTests()
|
| runTest(results, function() {
|
| assertTrue(document.getElementById('image-results-header').textContent == '');
|
| assertTrue(document.getElementById('text-results-header').textContent != '');
|
| - });
|
| + }, 'text results header');
|
|
|
| results = mockResults();
|
| var subtree = results.tests['foo'] = {}
|
| @@ -149,7 +157,7 @@ function runTests()
|
| assertTrue(document.getElementsByClassName('result-link')[0].textContent == 'audio result');
|
| assertTrue(document.getElementsByClassName('result-link')[1].textContent == 'result');
|
| assertTrue(document.getElementsByClassName('result-link')[2].textContent == 'png result');
|
| - });
|
| + }, 'actual result links');
|
|
|
| results = mockResults();
|
| var subtree = results.tests['foo'] = {}
|
| @@ -158,7 +166,7 @@ function runTests()
|
| runTest(results, function() {
|
| assertTrue(document.getElementById('results-table'));
|
| assertTrue(document.querySelector('#stderr-table .result-link').textContent == 'stderr');
|
| - });
|
| + }, 'stderr link');
|
|
|
| results = mockResults();
|
| var subtree = results.tests['foo'] = {}
|
| @@ -186,7 +194,7 @@ function runTests()
|
| assertTrue(document.getElementById('crash-tests-table').textContent.indexOf('crash log') != -1);
|
| assertTrue(document.getElementById('timeout-tests-table'));
|
| assertTrue(document.getElementById('timeout-tests-table').textContent.indexOf('expected actual diff') != -1);
|
| - });
|
| + }, 'crash and timeout tests tables');
|
|
|
| function isExpanded(expandLink)
|
| {
|
| @@ -228,7 +236,7 @@ function runTests()
|
|
|
| collapseExpectations(expandLinks[1]);
|
| assertTrue(expandLinks[1].textContent == '+');
|
| - });
|
| + }, 'collapsing expectation rows');
|
|
|
| results = mockResults();
|
| var subtree = results.tests['foo'] = {}
|
| @@ -255,13 +263,13 @@ function runTests()
|
| expandAllExpectations();
|
| assertTrue(document.querySelectorAll('.results-row').length == 2);
|
| assertTrue(window.getComputedStyle(document.querySelectorAll('tbody')[0], null)['display'] != 'none');
|
| - });
|
| + }, 'expanding expectation rows');
|
|
|
| results = mockResults();
|
| results.tests['only-expected-fail.html'] = mockExpectation('TEXT', 'TEXT');
|
| runTest(results, function() {
|
| assertTrue(window.getComputedStyle(document.getElementById('results-table').parentNode, null)['display'] == 'none');
|
| - });
|
| + }, 'only one expected fail result');
|
|
|
| runDefaultSingleRowTest('bar-skip.html', 'TEXT', 'SKIP', true, '', '');
|
| runDefaultSingleRowTest('bar-flaky-fail.html', 'PASS FAIL', 'TEXT', true, 'expected actual diff pretty diff ', '');
|
| @@ -279,12 +287,12 @@ function runTests()
|
| results = mockResults();
|
| results.tests['bar-reftest.html'] = mockExpectation('PASS', 'IMAGE');
|
| results.tests['bar-reftest.html'].reftest_type = ['=='];
|
| - runSingleRowTest(results, false, '', 'ref html images diff ');
|
| + runSingleRowTest(results, false, '', 'ref html images diff ', 'match reftest single row test');
|
|
|
| results = mockResults();
|
| results.tests['bar-reftest-mismatch.html'] = mockExpectation('PASS', 'IMAGE');
|
| results.tests['bar-reftest-mismatch.html'].reftest_type = ['!='];
|
| - runSingleRowTest(results, false, '', 'ref mismatch html actual ');
|
| + runSingleRowTest(results, false, '', 'ref mismatch html actual ', 'mismatch reftest single row test');
|
|
|
| results = mockResults();
|
| results.tests['bar-reftest.html'] = mockExpectation('IMAGE', 'PASS');
|
| @@ -292,7 +300,7 @@ function runTests()
|
| results.pixel_tests_enabled = false;
|
| runTest(results, function() {
|
| assertTrue(document.querySelector('tbody td:nth-child(1)').textContent == 'bar-reftest.html \u2691');
|
| - });
|
| + }, 'match reftest');
|
|
|
| results = mockResults();
|
| results.tests['bar-reftest-mismatch.html'] = mockExpectation('IMAGE', 'PASS');
|
| @@ -300,7 +308,7 @@ function runTests()
|
| results.pixel_tests_enabled = false;
|
| runTest(results, function() {
|
| assertTrue(document.querySelector('tbody td:nth-child(1)').textContent == 'bar-reftest-mismatch.html \u2691');
|
| - });
|
| + }, 'mismatch reftest');
|
|
|
| results = mockResults();
|
| var subtree = results.tests['foo'] = {}
|
| @@ -309,7 +317,7 @@ function runTests()
|
| assertTrue(!document.getElementById('results-table'));
|
| assertTrue(document.getElementById('passes-table'));
|
| assertTrue(document.body.textContent.indexOf('foo/bar-flaky-pass.html') != -1);
|
| - });
|
| + }, 'expected flaky and passed');
|
|
|
| results = mockResults();
|
| var subtree = results.tests['foo'] = {}
|
| @@ -318,7 +326,7 @@ function runTests()
|
| assertTrue(!document.getElementById('results-table'));
|
| assertTrue(document.getElementById('flaky-tests-table'));
|
| assertTrue(document.body.textContent.indexOf('bar-flaky-fail.html') != -1);
|
| - });
|
| + }, 'expected flaky and image mismatch');
|
|
|
| results = mockResults();
|
| var subtree = results.tests['foo'] = {}
|
| @@ -328,7 +336,7 @@ function runTests()
|
| assertTrue(document.getElementById('flaky-tests-table'));
|
| assertTrue(document.body.textContent.indexOf('bar-flaky-expected.html') != -1);
|
| assertTrue(document.querySelector('tbody').className == 'expected');
|
| - });
|
| + }, 'expected flaky and text mismatch');
|
|
|
| results = mockResults();
|
| var subtree = results.tests['foo'] = {}
|
| @@ -339,14 +347,14 @@ function runTests()
|
| assertTrue(links[0].getClientRects().length == 2);
|
| assertTrue(links[1].getClientRects().length == 1);
|
| document.body.style.width = '';
|
| - });
|
| + }, 'long test name');
|
|
|
| results = mockResults();
|
| var subtree = results.tests['foo'] = {}
|
| subtree['bar.html'] = mockExpectation('TEXT', 'TEXT');
|
| runTest(results, function() {
|
| assertTrue(document.querySelector('tbody td:nth-child(2)').textContent.indexOf('pretty diff') != -1);
|
| - });
|
| + }, 'pretty diff link');
|
|
|
| results = mockResults();
|
| var subtree = results.tests['foo'] = {}
|
| @@ -371,7 +379,7 @@ function runTests()
|
| TableSorter.sortColumn(4);
|
| TableSorter.sortColumn(0);
|
| logPass('PASS');
|
| - });
|
| + }, 'TableSorter.sortColumn does not raise a JS error');
|
|
|
| results = mockResults();
|
| var subtree = results.tests['foo'] = {}
|
| @@ -390,7 +398,7 @@ function runTests()
|
| PixelZoomer.handleMouseMove(mockEvent);
|
| assertTrue(!!document.querySelector('.pixel-zoom-container'));
|
| assertTrue(document.querySelectorAll('.zoom-image-container').length == 3);
|
| - });
|
| + }, 'zoom image on hover');
|
|
|
| results = mockResults();
|
| var subtree = results.tests['fullscreen'] = {}
|
| @@ -399,7 +407,7 @@ function runTests()
|
| // Use a regexp to match windows and unix-style paths.
|
| var expectedRegExp = new RegExp('^file.*' + results.layout_tests_dir + '/fullscreen/full-screen-api.html$');
|
| assertTrue(expectedRegExp.exec(document.querySelector('tbody td:first-child a').href));
|
| - });
|
| + }, 'local test link');
|
|
|
| var oldShouldUseTracLinks = shouldUseTracLinks;
|
| shouldUseTracLinks = function() { return true; };
|
| @@ -410,7 +418,7 @@ function runTests()
|
| runTest(results, function() {
|
| var expectedHref = 'https://crrev.com/' + results.chromium_revision + '/third_party/WebKit/LayoutTests/fullscreen/full-screen-api.html';
|
| assertTrue(document.querySelector('tbody td:first-child a').href == expectedHref);
|
| - });
|
| + }, 'chromium revision link');
|
|
|
| results = mockResults();
|
| var subtree = results.tests['fullscreen'] = {}
|
| @@ -419,7 +427,7 @@ function runTests()
|
| runTest(results, function() {
|
| var expectedHref = 'https://chromium.googlesource.com/chromium/src/+/master/third_party/WebKit/LayoutTests/fullscreen/full-screen-api.html';
|
| assertTrue(document.querySelector('tbody td:first-child a').href == expectedHref);
|
| - });
|
| + }, 'googlesource test link');
|
|
|
| shouldUseTracLinks = oldShouldUseTracLinks;
|
|
|
| @@ -437,14 +445,14 @@ function runTests()
|
| document.getElementById('toggle-images').checked = true;
|
| updateTogglingImages();
|
| assertTrue(document.querySelector('tbody td:nth-child(3)').textContent == ' images diff ');
|
| - });
|
| + }, 'toggle images option');
|
|
|
| results = mockResults();
|
| results.tests['reading-options-from-localstorage.html'] = mockExpectation('IMAGE+TEXT', 'IMAGE+TEXT');
|
| runTest(results, function() {
|
| assertTrue(window.getComputedStyle(document.querySelector('tbody'), null)['display'] != 'none');
|
| assertTrue(document.querySelector('tbody td:nth-child(3)').textContent == 'expected actual diff ');
|
| - }, '{"toggle-images":false,"show-expected-failures":true}');
|
| + }, 'reading options from localstorage', '{"toggle-images":false,"show-expected-failures":true}');
|
|
|
| function enclosingNodeWithTagNameHasClassName(node, tagName, className) {
|
| while (node && (!node.tagName || node.localName != tagName))
|
| @@ -483,7 +491,7 @@ function runTests()
|
| assertTrue(testLinks[5].innerText == 'foo/expected-pass-or-fail-and-passed.html');
|
| assertTrue(enclosingNodeWithTagNameHasClassName(testLinks[5], 'tbody', 'expected'));
|
| assertTrue(!enclosingNodeWithTagNameHasClassName(testLinks[4], 'table', 'expected'));
|
| - });
|
| + }, 'class names 1');
|
|
|
| results = mockResults();
|
| var subtree = results.tests['foo'] = {}
|
| @@ -505,7 +513,7 @@ function runTests()
|
| assertTrue(testLinks[2].innerText == 'foo/expected-pass-or-fail-and-passed.html');
|
| assertTrue(enclosingNodeWithTagNameHasClassName(testLinks[2], 'tbody', 'expected'));
|
| assertTrue(enclosingNodeWithTagNameHasClassName(testLinks[2], 'div', 'expected'));
|
| - });
|
| + }, 'class names 2');
|
|
|
| results = mockResults();
|
| var subtree = results.tests['foo'] = {}
|
| @@ -519,7 +527,7 @@ function runTests()
|
| assertTrue(resultText.indexOf('crash.html') != -1);
|
| assertTrue(resultText.indexOf('flaky-fail.html') != -1);
|
| assertTrue(resultText.indexOf('crash.html') < resultText.indexOf('flaky-fail.html'));
|
| - });
|
| + }, 'crash and flaky fail test order');
|
|
|
| results = mockResults();
|
| var subtree = results.tests['foo'] = {}
|
| @@ -541,8 +549,7 @@ function runTests()
|
| document.getElementById('show-expected-failures').onchange();
|
| expandAllExpectations();
|
| assertTrue(visibleExpandLinks().length == 2);
|
| - });
|
| -
|
| + }, 'missing results table');
|
|
|
| results = mockResults();
|
| var subtree = results.tests['foo'] = {}
|
| @@ -558,7 +565,7 @@ function runTests()
|
| assertTrue(!testRows[1].classList.contains('current'));
|
| assertTrue(testRows[2].classList.contains('current'));
|
| }
|
| - });
|
| + }, 'keyboard shortcuts: prev');
|
|
|
| runTest(results, function() {
|
| if (window.eventSender) {
|
| @@ -568,7 +575,7 @@ function runTests()
|
| assertTrue(!testRows[1].classList.contains('current'));
|
| assertTrue(!testRows[2].classList.contains('current'));
|
| }
|
| - });
|
| + }, 'keyboard shortcuts: next');
|
|
|
| results = mockResults();
|
| var subtree = results.tests['foo'] = {}
|
| @@ -680,7 +687,7 @@ function runTests()
|
| eventSender.keyDown('f'); // flag
|
| assertTrue(flaggedTestsTextbox.innerText == '');
|
| }
|
| - });
|
| + }, 'keyboard shortcuts');
|
|
|
| results = mockResults();
|
| var subtree = results.tests['foo'] = {}
|
| @@ -714,7 +721,7 @@ function runTests()
|
| assertTrue(titles[3].textContent == 'Tests that timed out (1): [flag all] [unflag all]');
|
| assertTrue(titles[4].textContent == 'Tests that had stderr output (1): [flag all] [unflag all]');
|
| assertTrue(titles[5].textContent == 'Tests expected to fail but passed (1): [flag all] [unflag all]');
|
| - });
|
| + }, 'table titles 1');
|
|
|
| results = mockResults();
|
| var subtree = results.tests['foo'] = {}
|
| @@ -725,11 +732,11 @@ function runTests()
|
| runTest(results, function() {
|
| var titles = document.getElementsByTagName('h1');
|
| assertTrue(titles[0].textContent == 'Tests that failed text/pixel/audio diff (1): [flag all] [unflag all]');
|
| - assertTrue(titles[1].textContent =='Flaky tests (failed the first run and passed on retry) (1): [flag all] [unflag all]');
|
| + assertTrue(titles[1].textContent == 'Flaky tests (failed the first run and passed on retry) (1): [flag all] [unflag all]');
|
|
|
| assertTrue(document.querySelectorAll('#results-table tbody').length == 2);
|
| assertTrue(document.querySelectorAll('#flaky-tests-table tbody').length == 2);
|
| - });
|
| + }, 'table titles 2');
|
|
|
| results = mockResults();
|
| var subtree = results.tests['foo'] = {}
|
| @@ -749,7 +756,7 @@ function runTests()
|
|
|
| unflag(document.querySelector('.flag'));
|
| assertTrue(flaggedTestsTextbox.innerText == 'foo/bar1.html\nfoo/bar2.html');
|
| - });
|
| + }, 'flagging tests');
|
|
|
| results = mockResults();
|
| var subtree = results.tests['foo'] = {}
|
| @@ -759,7 +766,7 @@ function runTests()
|
| flagAll(document.querySelector('.flag-all'));
|
| var flaggedTestsTextbox = document.getElementById('flagged-tests');
|
| assertTrue(flaggedTestsTextbox.innerText == 'foo/bar.html\nfoo/bar1.html');
|
| - }, '{"use-newlines":true}');
|
| + }, 'flagged tests with newlines', '{"use-newlines":true}');
|
|
|
| results = mockResults();
|
| var subtree = results.tests['foo'] = {}
|
| @@ -769,14 +776,14 @@ function runTests()
|
| flagAll(document.querySelector('.flag-all'));
|
| var flaggedTestsTextbox = document.getElementById('flagged-tests');
|
| assertTrue(flaggedTestsTextbox.innerText == 'foo/bar.html foo/bar1.html');
|
| - }, '{"use-newlines":false}');
|
| + }, 'flagged tests with spaces', '{"use-newlines":false}');
|
|
|
| results = mockResults();
|
| results.tests['foo/bar-image.html'] = mockExpectation('PASS', 'TEXT IMAGE+TEXT');
|
| results.pixel_tests_enabled = false;
|
| runTest(results, function() {
|
| assertTrue(document.querySelector('tbody td:nth-child(3) a').getAttribute('href') == 'retries/foo/bar-image-diffs.html');
|
| - });
|
| + }, 'image diff links with IMAGE+TEXT result');
|
|
|
| results = mockResults();
|
| results.tests['foo/bar-image.html'] = mockExpectation('PASS', 'TEXT IMAGE');
|
| @@ -784,14 +791,14 @@ function runTests()
|
| runTest(results, function() {
|
| assertTrue(!document.getElementById('results-table'));
|
| assertTrue(document.querySelector('#flaky-tests-table td:nth-child(3) a').getAttribute('href') == 'retries/foo/bar-image-diffs.html');
|
| - });
|
| + }, 'image diff links flaky TEXT IMAGE result');
|
|
|
| results = mockResults();
|
| results.tests['foo'] = mockExpectation('PASS', 'TEXT');
|
| results.tests['foo'].has_repaint_overlay = true;
|
| runTest(results, function() {
|
| assertTrue(document.querySelector('tbody td:nth-child(2)').textContent.indexOf('overlay') != -1);
|
| - })
|
| + }, 'repaint overlay')
|
|
|
| document.body.innerHTML = '<pre>' + g_log.join('\n') + '</pre>';
|
| }
|
|
|