<!DOCTYPE html> <html id="add-form"> <head> <title>Rebaseline Queue: Edit</title> <script src="http://test-results.appspot.com/dashboards/builders.js"></script> <link rel="stylesheet" href="/static/styles.css" type="text/css"> </head> <body"> <div id="loading-indicator" class="status">Loading...</div> <form method="POST" id="form-template" style="display: none"> <table class="test-table"> <caption></caption> <thead> <th>Test</th> <th>Expected</th> <th>Actual</th> <th>Results</th> </thead> <tbody></tbody> <tbody> <tr> <td colspan="4" class="submit-row"> <input type="submit" value=""> </td> </tr> </tbody> </table> </form> <script> var TEST_RESULTS_SERVER = 'http://test-results.appspot.com/'; var BUILDER_TO_GROUP = {}; for (var builderGroupName in LAYOUT_TESTS_BUILDER_GROUPS) { for (var builderName in LAYOUT_TESTS_BUILDER_GROUPS[builderGroupName]) { BUILDER_TO_GROUP[builderName] = builderGroupName; } } // Extract template parameters var builderName = '{{ builder_name|escapejs }}'; var queuedTestNames = {{ queued_test_names|safe }}; function init() { var builderMaster = BUILDER_TO_MASTER[builderName]; var resultsUrl = TEST_RESULTS_SERVER + 'testfile?builder=' + builderName + '&master=' + builderMaster.name + '&testtype=layout-tests&name=full_results.json'; var script = document.createElement('script'); script.src = resultsUrl; document.getElementsByTagName('head')[0].appendChild(script); } function ADD_RESULTS(results) { var builderGroupName = BUILDER_TO_GROUP[builderName]; var tests = results.tests; var failingTests = []; var queuedTests = []; for (var test in tests) { var testResults = tests[test]; if (testResults.actual == testResults.expected || testResults.expected.split(' ').indexOf(testResults.actual) != -1 || testResults.actual == 'SKIP' || testResults.actual.indexOf('PASS') != -1 || (testResults.actual != 'PASS' && testResults.expected.indexOf('FAIL') != -1)) { continue; } testResults.name = test; if (queuedTestNames.indexOf(test) != -1) { queuedTests.push(testResults); queuedTestNames.splice(queuedTestNames.indexOf(test), 1); } else { failingTests.push(testResults); } } // If we have remaining queued tests that are currently not failing, // synthesize results for them. queuedTestNames.forEach(function(queuedTestName) { queuedTests.push({ name: queuedTestName, actual: 'UNKNOWN', expected: 'UNKNOWN' }); }); document.getElementById('loading-indicator').style.display = 'none'; renderTestResults( failingTests, 'add', 'Failing tests', 'Add to rebaseline queue', 'No failing tests.'); renderTestResults( queuedTests, 'remove', 'Queued tests', 'Remove from rebaseline queue', 'No queued tests.'); } function renderTestResults(testResults, formAction, title, submitLabel, emptyMessage) { if (testResults.length == 0) { var emptyNode = document.createElement('div'); emptyNode.className = 'status'; emptyNode.textContent = emptyMessage; document.body.appendChild(emptyNode); return; } var form = document.getElementById('form-template').cloneNode(true); form.action = '/builder/' + builderName + '/queue/' + formAction; form.style.display = ''; document.body.appendChild(form); var testsTable = form.querySelector('.test-table'); testsTable.querySelector('caption').textContent = title; testsTable.querySelector('input[type=submit]').value = submitLabel; testResults.sort(function(a, b) { return a.name < b.name ? -1 : (a.name > b.name ? 1 : 0); }); testResults.forEach(function(result) { var testRow = document.createElement('tr'); var testCell = document.createElement('td'); testRow.appendChild(testCell); var testCheckbox = document.createElement('input'); testCheckbox.type = 'checkbox'; testCheckbox.name = 'test'; testCheckbox.value = result.name; testCheckbox.id = result.name; testCell.appendChild(testCheckbox); var testName = document.createElement('label'); testName.textContent = result.name; testName.setAttribute('for', result.name); testCell.appendChild(testName); var expectedCell = document.createElement('td'); testRow.appendChild(expectedCell); expectedCell.textContent = result.expected; var actualCell = document.createElement('td'); testRow.appendChild(actualCell); actualCell.textContent = result.actual; var resultsCell = document.createElement('td'); testRow.appendChild(resultsCell); var resultsLink = document.createElement('a'); resultsLink.target = '_blank'; resultsLink.href = TEST_RESULTS_SERVER + 'dashboards/flakiness_dashboard.html#tests=' + result.name + '&group=' + builderGroupName; resultsLink.textContent = 'Flakiness dashboard'; resultsCell.appendChild(resultsLink); testsTable.tBodies[0].appendChild(testRow); }); } init(); </script> </body> </html>