blob: 21a0f0200696d73fe736d9f19147139c497dfbf7 [file] [log] [blame]
<!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>