4 <title>Rebaseline Queue: Edit</title>
5 <script src="http://test-results.appspot.com/dashboards/builders.js"></script>
6 <link rel="stylesheet" href="/static/styles.css" type="text/css">
10 <div id="loading-indicator" class="status">Loading...</div>
12 <form method="POST" id="form-template" style="display: none">
13 <table class="test-table">
24 <td colspan="4" class="submit-row">
25 <input type="submit" value="">
33 var TEST_RESULTS_SERVER = 'http://test-results.appspot.com/';
34 var BUILDER_TO_GROUP = {};
35 for (var builderGroupName in LAYOUT_TESTS_BUILDER_GROUPS) {
36 for (var builderName in LAYOUT_TESTS_BUILDER_GROUPS[builderGroupName]) {
37 BUILDER_TO_GROUP[builderName] = builderGroupName;
41 // Extract template parameters
42 var builderName = '{{ builder_name|escapejs }}';
43 var queuedTestNames = {{ queued_test_names|safe }};
47 var builderMaster = BUILDER_TO_MASTER[builderName] || CHROMIUM_GPU_BUILDER_MASTER;
48 var resultsUrl = TEST_RESULTS_SERVER + 'testfile?builder=' + builderName +
49 '&master=' + builderMaster.name +
50 '&testtype=layout-tests&name=full_results.json';
52 var script = document.createElement('script');
53 script.src = resultsUrl;
54 document.getElementsByTagName('head')[0].appendChild(script);
57 function ADD_RESULTS(results)
59 var builderGroupName = BUILDER_TO_GROUP[builderName];
61 var failingTests = [];
63 function processTestResult(test, results) {
64 var actual = results.actual;
65 var expected = results.expected;
66 if (actual == expected ||
67 expected.split(' ').indexOf(actual) != -1 ||
69 actual.indexOf('PASS') != -1 ||
70 (expected.indexOf('FAIL') != -1 && actual.indexOf('TIMEOUT') == -1)) {
76 if (queuedTestNames.indexOf(test) != -1) {
77 queuedTests.push(results);
78 queuedTestNames.splice(queuedTestNames.indexOf(test), 1);
80 failingTests.push(results);
84 function gatherTests(path, testTree) {
85 if ('actual' in testTree) {
86 processTestResult(path, testTree);
91 for (var key in testTree) {
92 gatherTests(path + key, testTree[key]);
96 gatherTests('', results.tests);
98 // If we have remaining queued tests that are currently not failing,
99 // synthesize results for them.
100 queuedTestNames.forEach(function(queuedTestName) {
102 name: queuedTestName,
108 document.getElementById('loading-indicator').style.display = 'none';
114 'Add to rebaseline queue',
115 'No failing tests.');
120 'Remove from rebaseline queue',
124 function renderTestResults(testResults, formAction, title, submitLabel, emptyMessage)
126 if (testResults.length == 0) {
127 var emptyNode = document.createElement('div');
128 emptyNode.className = 'status';
129 emptyNode.textContent = emptyMessage;
130 document.body.appendChild(emptyNode);
134 var form = document.getElementById('form-template').cloneNode(true);
135 form.action = '/builder/' + builderName + '/queue/' + formAction;
136 form.style.display = '';
137 document.body.appendChild(form);
139 var testsTable = form.querySelector('.test-table');
140 testsTable.querySelector('caption').textContent = title;
141 testsTable.querySelector('input[type=submit]').value = submitLabel;
143 testResults.sort(function(a, b) {
144 return a.name < b.name ? -1 : (a.name > b.name ? 1 : 0);
147 testResults.forEach(function(result) {
148 var testRow = document.createElement('tr');
150 var testCell = document.createElement('td');
151 testRow.appendChild(testCell);
152 var testCheckbox = document.createElement('input');
153 testCheckbox.type = 'checkbox';
154 testCheckbox.name = 'test';
155 testCheckbox.value = result.name;
156 testCheckbox.id = result.name;
157 testCell.appendChild(testCheckbox);
159 var testName = document.createElement('label');
160 testName.textContent = result.name;
161 testName.setAttribute('for', result.name);
162 testCell.appendChild(testName);
164 var expectedCell = document.createElement('td');
165 testRow.appendChild(expectedCell);
166 expectedCell.textContent = result.expected;
168 var actualCell = document.createElement('td');
169 testRow.appendChild(actualCell);
170 actualCell.textContent = result.actual;
172 var resultsCell = document.createElement('td');
173 testRow.appendChild(resultsCell);
174 var resultsLink = document.createElement('a');
175 resultsLink.target = '_blank';
176 resultsLink.href = TEST_RESULTS_SERVER +
177 'dashboards/flakiness_dashboard.html#tests=' + result.name +
178 '&group=' + builderGroupName;
179 resultsLink.textContent = 'Flakiness dashboard';
180 resultsCell.appendChild(resultsLink);
182 testsTable.tBodies[0].appendChild(testRow);