Commit the right change.
[WebKit-https.git] / Websites / test-results / ChangeLog
1 2013-10-25  Ryosuke Niwa  <rniwa@webkit.org>
2
3         Commit the right change.
4
5         * public/index.html:
6
7 2013-10-25  Ryosuke Niwa  <rniwa@webkit.org>
8
9         The new flakiness dashboard should sort builder and test names
10         https://bugs.webkit.org/show_bug.cgi?id=123363
11
12         Reviewed by Simon Fraser.
13
14         Sort the forgotten builders in the menu.
15
16         * public/index.html:
17
18 2013-10-25  Ryosuke Niwa  <rniwa@webkit.org>
19
20         The new flakiness dashboard should sort builder and test names
21         https://bugs.webkit.org/show_bug.cgi?id=123363
22
23         Reviewed by Simon Fraser.
24
25         Sort builders and tests by their name in each pane.
26
27         * public/index.html:
28         (TestResultsView._populateTestPane): Lexicologically sort builders by their name.
29         (TestResultsView._sortObjectsByName): Added.
30         (TestResultsView._populateBuilderPane): Lexicologically sort builders by their name.
31
32 2013-10-25  Ryosuke Niwa  <rniwa@webkit.org>
33
34         Merge revision columns in flakiness dashboard
35         https://bugs.webkit.org/show_bug.cgi?id=123360
36
37         Reviewed by Simon Fraser.
38
39         Merge revision numbers into one cell separated by /, and clearly label them as "latest revisions".
40         Also add colors for missing & audio failures so that they won't be an empty cell.
41
42         * public/index.html:
43         (TestResultsView._createTestResultHeader): Create a single th for the list of repository names.
44         (TestResultsView._createTestResultRow): Use single td for all revision numbers.
45         * public/js/build.js:
46         (.this.formattedRevision): Don't prefix revision numbers with '@' when we're not in the tooltip.
47         * public/main.css:
48         (.resultsTable .AUDIO a): Added.
49         (.resultsTable .MISSING a): Added.
50
51 2013-10-25  Ryosuke Niwa  <rniwa@webkit.org>
52
53         One more build fix. Put each latest revision information in an actual td.
54
55         * public/index.html:
56
57 2013-10-25  Ryosuke Niwa  <rniwa@webkit.org>
58
59         Yet another set of build fixes.
60
61         1. Manually strip / from revisions JSON if there is any.
62         2. Suppress warnings from ob_end_flush.
63         3. Allow "+" in actual and expected results as used in "TEXT+IMAGE".
64
65         * public/api/report.php:
66         * public/include/test-results.php:
67
68 2013-10-25  Ryosuke Niwa  <rniwa@webkit.org>
69
70         Another build fix. Move .htaccess to public.
71
72         * .htaccess: Removed.
73         * public/.htaccess: Copied from .htaccess.
74
75 2013-10-25  Ryosuke Niwa  <rniwa@webkit.org>
76
77         It turns out that the current instruction only works on Mountain Lion.
78
79         Also fixed some typos.
80
81         * Install.md:
82
83 2013-10-24  Ryosuke Niwa  <rniwa@webkit.org>
84
85         Add an instruction on how to setup test-results app
86         https://bugs.webkit.org/show_bug.cgi?id=123321
87
88         Rubber-stamped by Stephanie Lewis.
89
90         Added Install.md and updated config.json accordingly.
91
92         Also moved init-database.sql out of public/include since it doesn't need to be accessible via httpd.
93
94         * Install.md: Added.
95         * config.json:
96         * init-database.sql: Moved from public/include/init-database.sql.
97
98 2013-10-24  Ryosuke Niwa  <rniwa@webkit.org>
99
100         Move everything except ChangeLog and config.json into public directory.
101         https://bugs.webkit.org/show_bug.cgi?id=123319
102
103         Rubber-stamped by Stephanie Lewis.
104
105         * admin: Removed.
106         * admin/admin.css: Removed.
107         * admin/builders.php: Removed.
108         * admin/index.php: Removed.
109         * admin/repositories.php: Removed.
110         * api: Removed.
111         * api/failing-tests.php: Removed.
112         * api/manifest.php: Removed.
113         * api/report.php: Removed.
114         * api/results.php: Removed.
115         * common.css: Removed.
116         * config.json: Copied from include/config.json.
117         * include: Removed.
118         * include/admin-footer.php: Removed.
119         * include/admin-header.php: Removed.
120         * include/config.json: Removed.
121         * include/db.php: Removed.
122         * include/init-database.sql: Removed.
123         * include/json-shared.php: Removed.
124         * include/test-results.php: Removed.
125         * index.html: Removed.
126         * js: Removed.
127         * js/autocompleter.js: Removed.
128         * js/build.js: Removed.
129         * js/dom.js: Removed.
130         * main.css: Removed.
131         * public: Added.
132         * public/admin: Copied from admin.
133         * public/api: Copied from api.
134         * public/common.css: Copied from common.css.
135         * public/include: Copied from include.
136         * public/include/config.json: Removed.
137         * public/include/db.php:
138         * public/index.html: Copied from index.html.
139         * public/js: Copied from js.
140         * public/main.css: Copied from main.css.
141
142 2013-10-24  Ryosuke Niwa  <rniwa@webkit.org>
143
144         Showing lists of flaky tests for a builder takes too long
145         https://bugs.webkit.org/show_bug.cgi?id=123311
146
147         Reviewed by Sam Weinig.
148
149         Generate JSONs for tests failing, flaky, or with wrong expectation at the time a builder reports results
150         instead when the frontend requests to those those results since it takes multiple seconds or minutes to
151         generate those JSON files.
152
153         * api/failing-tests.php: Moved and renamed to manually generate all JSON files for a given builder.
154         (main):
155
156         * api/report.php: Manually flush and end the request (to avoid blocking run-webkit-tests on the other side
157         for minutes), then generate JSONs for tests that are failing, are flaky, and have wrong expectations.
158
159         * api/results.php: Merge format_result_rows here since it's not used anywhere else.
160
161         * include/config.json: Added the path to the data directory into which JSON files are generated.
162
163         * include/db.php:
164         (configPath): Takes a relative path value from config.json, and resolves it.
165
166         * include/json-shared.php:
167         (echo_success): Extracted from exit_with_success.
168         (exit_with_success):
169
170         * include/test-results.php:
171         (add_builder): Extracted from add_build.
172         (add_build):
173         (ResultsJSONWriter): Extracted from api/failing-tests.php.
174         (ResultsJSONWriter.__construct):
175         (ResultsJSONWriter.start):
176         (ResultsJSONWriter.end):
177         (ResultsJSONWriter.add_results_for_test_if_matches):
178         (ResultsJSONWriter.pass_for_failure_type):
179         (FailingResultsJSONWriter): Extracted from index.html's TestResultsView._matchesFailureType.
180         (FailingResultsJSONWriter.__construct):
181         (FailingResultsJSONWriter.pass_for_failure_type):
182         (FlakyResultsJSONWriter): Ditto.
183         (FlakyResultsJSONWriter.__construct):
184         (FlakyResultsJSONWriter.pass_for_failure_type):
185         (WrongExpectationsResultsJSONWriter): Ditto.
186         (WrongExpectationsResultsJSONWriter.__construct):
187         (WrongExpectationsResultsJSONWriter.pass_for_failure_type):
188         (ResultsJSONGenerator): Ditto.
189         (ResultsJSONGenerator.__construct):
190         (ResultsJSONGenerator.generate):
191         (ResultsJSONGenerator.open_json_for_failure_type):
192         (ResultsJSONGenerator.write_jsons):
193
194         * index.html:
195         (TestResultsView):
196         (TestResultsView.setBuilders):
197         (TestResultsView._createResultCell): Add a hyperlink to results.html in the tooltip.
198         (TestResultsView.fetchFailingTestsForBuilder): Fetch the generated JSON files.
199
200 2013-10-23  Ryosuke Niwa  <rniwa@webkit.org>
201
202         Reverted erroneously committed changes from the previous commit.
203
204         * index.html:
205
206 2013-10-23  Ryosuke Niwa  <rniwa@webkit.org>
207
208         Clicking on a test name on the new flakiness dashboard should add a new test pane
209         https://bugs.webkit.org/show_bug.cgi?id=123194
210
211         Reviewed by Simon Fraser.
212
213         Added a new click handler on each test name inside the builder test view add a new test pane.
214         Moved the old trac link to a right-arrow inline SVG icon.
215
216         Also tweaked the style so that the builder test view looks different from other test panes.
217
218         * index.html:
219         (TestResultsView._urlFromTest): Extracted from TestResultsView._linkifiedTestName.
220         (TestResultsView._populateBuilderPane): Fetch the test when its name is clicked.
221         Added a circled right arrow for the old trac link.
222         * main.css: Tweaked the style to move the rounded border around the builder test view to be
223         around the form controls to clearly differentiate it from a regular test pane.
224
225 2013-10-22  Ryosuke Niwa  <rniwa@webkit.org>
226
227         New flakiness dashboard's test pane should show the latest WebKit revision for each builder
228         https://bugs.webkit.org/show_bug.cgi?id=123189
229
230         Reviewed by Simon Fraser.
231
232         * index.html:
233         (TestResultsView._populateTestPane): Call _createTestResultHeader and _createTestResultRow with
234         a list of repository information.
235         (TestResultsView._createTestResultHeader): Optionally creates headers for a list of repositories.
236         (TestResultsView._createTestResultRow): Add a hyperlinked revision information for each builder.
237         Also add a hyperlink to file a Bugzilla bug when there is no bug associated with the test already.
238         * js/build.js:
239         (Build.formattedRevision): Extracted from Build.formattedRevisions.
240         (Build.formattedRevisions):
241
242 2013-10-22  Ryosuke Niwa  <rniwa@webkit.org>
243
244         Make tables on the new flakiness dashboard sortable
245         https://bugs.webkit.org/show_bug.cgi?id=123141
246
247         Reviewed by Simon Fraser.
248
249         Use jquery.tablesorter.js to make test and builder tables sortable. The jquery plugin is already used by run-perf-tests.
250
251         * index.html:
252         (TestResultsView._populateTestPane): Add tablesorter to the class name and wrap tr's inside a tbody so that tablesorter
253         could sort them.
254         (TestResultsView._populateBuilderPane): Ditto.
255         * main.css:
256         (.resultsTable thead): Use cursor: pointer to signify the fact it's clickable.
257         (.resultsTable th): Don't repeat arrows.
258         (.resultsTable th.headerSortUp): Inline SVG up arrow.
259         (.resultsTable th.headerSortDown): Inline SVG down arrow.
260
261 2013-10-21  Ryosuke Niwa  <rniwa@webkit.org>
262
263         New flakiness dashboard should hyperlink test names, WebKit revisions, and bubbles
264         https://bugs.webkit.org/show_bug.cgi?id=123134
265
266         Reviewed by Stephanie Lewis.
267
268         Copied admin.css, admin-header.php, admin-footer.php, builders.php, repositories.php from WebKit Perf Monitor.
269         (Unfortunately WebKit Perf Monitor hasn't been committed into WebKit repository just yet.)
270
271         Updated various parts of index.html to linkify test names, build numbers, and bubbles (to results page).
272
273         * admin/admin.css: Added.
274         * admin/builders.php: Added.
275         * admin/index.php: Removed the duplicated code now that it uses admin-header.php.
276         * admin/repositories.php: Added.
277         * api/manifest.php: Use camelCase for blame_url and build_url to be consistent with other JSON properties.
278         Also exported testCategories from config so that we can linkify test names in the dashboard.
279         * include/admin-footer.php: Added.
280         * include/admin-header.php: Added.
281         * include/config.json: Added test categories. This avoids hard-coding the URL to trac in php/js.
282         * include/init-database.sql: Added name and build_url to builders table and category to tests.
283         * include/test-results.php: Assume the test category to be LayoutTest for now.
284
285         * index.html:
286         (TestResultsView): Initialize _builders, _slaves, _repositories, _testCategories as dictionaries as intended.
287         (TestResultsView.setTestCategories): Added.
288         (TestResultsView._createResultCell): Dynamically resolve URLs of results page and and build page.
289         (TestResultsView._populateTestPane): Linkify the test name. Unfortunately we don't have a test object anywhere.
290         We need to figure out a way to find the test object here eventually. For now, hard-coding "LayoutTest" works.
291         (TestResultsView._linkifiedTestName): Added.
292         (TestResultsView._createBuildsAndComputeSlownessOfResults): Takes builderId to set "builder" property on each
293         result object as it's used by Build class.
294         (TestResultsView._populateBuilderPane):
295         (fetchManigest):
296
297         * js/build.js:
298         (Build.buildUrl): Support $builderName so that we don't have to keep repeating builder names in the database.
299         (Build.revision): Don't access [0] if revisions[repositoryId] was undefined.
300
301 2013-10-21  Ryosuke Niwa  <rniwa@webkit.org>
302
303         New flakiness dashboard should align results by revision numbers
304         https://bugs.webkit.org/show_bug.cgi?id=123129
305
306         Reviewed by Tim Horton.
307
308         * include/config.json: Specify the default cache time to be 10 minutes.
309         * include/json-shared.php: Added Expires and Cache-Control headers. It's configurable via config.json.
310         * index.html:
311         (TestResultsView._createResultCell): Don't put '-' in a result cell without time.
312         (TestResultsView._populateTestPane): Create an array of build times ordered from the newest to the oldest.
313         Not that build.time() is the newest commit time among all repository for each result. e.g. if we had
314         both WebKit and Safari repository information in a given result, the newer of the two will be used.
315         (TestResultsView._createTestResultHeader): Added.
316         (TestResultsView._createBuildsAndComputeSlownessOfResults): Extracted from _createTestResultRow so
317         that _populateTestPane could use Build object before calling _createTestResultRow.
318         (TestResultsView._createTestResultRow): Takes buildTimes. Insert an empty cell for a build time if
319         the current row doesn't contain that a result for that build time.
320         (TestResultsView._populateBuilderPane):
321         * main.css: Tweaked the style so that bubbles are aligned vertically without '-'.
322         (.resultsTable):
323         (.resultsTable thead th):
324         (.resultsTable .resultCell):
325         (.resultsTable a):
326         (.resultsTable span a):
327
328 2013-10-21  Ryosuke Niwa  <rniwa@webkit.org>
329
330         New flakiness dashboard show test time, modifiers, and flaky tests
331         https://bugs.webkit.org/show_bug.cgi?id=123119
332
333         Reviewed by Tim Horton.
334
335         * api/failing-tests.php: Manually serialize each row in the results to avoid hitting the memory limit.
336         * include/db.php:
337         (Database::query): Added.
338         (Database::fetch_next_row): Added.
339         * include/init-database.sql: Added modifiers and time columns to results table.
340         * include/test-results.php:
341         (store_test_results): Update start_time and end_time to the union of the new interval and the existing interval.
342         (recursively_add_test_results): Handle empty $full_name to eliminate the loop over tests in store_test_results.
343         Also verify that each test name, expected and actual results conform to the specific format to prevent XSS.
344         Also use insert_row instead of select_or_insert_row to avoid issuing an unnecessary SQL query.
345         (format_result): Extracted from format_result_rows. Used in failing-tests.php.
346         * index.html:
347         (TestResultsView): Added _currentBuilderFailureType and _currentBuilderDays.
348         (TestResultsView._createResultCell): Show the test time and the expected result.
349         (TestResultsView._createTestResultRow): Compute the slowest run and also round time to tenth of second for time
350         less than 10s or second if it's more than 10s so that the test time will always be shown in two digits.
351         Also show the bug number and the latest expected result on the left columns after linkifying the bug numbers. 
352         (TestResultsView._matchesFailureType): Added. Determines whether results is of a particular failure type.
353         (TestResultsView._populateBuilderPane):
354         (TestResultsView.fetchFailingTestsForBuilder): Store the failure type such as flaky, wrongtestexpectations.
355         (TestResultsView.updateLocationHash):
356         (TestResultsView.loadTestsFromLocationHash):
357         (fetchManifest):
358         * js/dom.js:
359         (element): appendChild if an item is a Node. Otherwise, e.g. integer, create a text node out of toString() call.
360         * main.css: Updated styles.
361
362 2013-10-18  Ryosuke Niwa  <rniwa@webkit.org>
363
364         New flakiness dashboard should support showing the failing tests per builder
365         https://bugs.webkit.org/show_bug.cgi?id=123011
366
367         Reviewed by Timothy Hatcher.
368
369         Added the feature. Also did some refactoring to add this feature.
370
371         * ChangeLog: Added.
372         * api/failing-tests.php: Added.
373         * api/manifest.php: Removed the code to make maps by id. The work is now done in index.html.
374         * api/results.php:
375         * common.css: Added. Extracted from index.html.
376         * include/test-results.php: Extracted parse_revisions_array and format_result_rows from results.php.
377         * index.html:
378         * main.css: Added.
379         (TestResultsView.setAvailableTests): Added.
380         (TestResultsView.showTooltip): Fixed the code to compute x and y coordinates of the tooltip to take
381         scrolled positions into account.
382         (TestResultsView._createTestResultRow): Extracted from _populateTestPane.
383         (TestResultsView.fetchTest): Added the code to show "Loading..." in the pane while loading the JSON.
384         (TestResultsView.fetchTests): Respect the doNotUpdateHash flag.
385         (TestResultsView._populateBuilderPane): Added.
386         (TestResultsView.fetchFailingTestsForBuilder): Added.
387         (TestResultsView.updateLocationHash): Serialize builder & builderDays.
388         (TestResultsView.locationHashChanged): Don't delete existing test panes since that's now done in
389         loadTestsFromLocationHash.
390         (TestResultsView.loadTestsFromLocationHash): Take care of both 'tests' and 'builder' components.
391         (fetchManifest): Setup the UI to select a builder.
392