Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
| 2 <head> | 2 <head> |
| 3 <title>Flaky tests</title> | 3 <title>Flaky Tests Dashboard</title> |
| 4 <meta charset="utf-8"> | 4 <meta charset="utf-8"> |
| 5 <link rel="stylesheet" href="/common.css"> | 5 <link rel="stylesheet" href="/common.css"> |
| 6 <style type="text/css"> | 6 <style type="text/css"> |
| 7 .truncated { | 7 .truncated { |
| 8 width: 300px; | 8 max-width: 500px; |
| 9 white-space: nowrap; | 9 white-space: nowrap; |
| 10 overflow: hidden; | 10 overflow: hidden; |
| 11 text-overflow: ellipsis; | 11 text-overflow: ellipsis; |
| 12 } | 12 } |
| 13 </style> | 13 </style> |
| 14 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js "></script> | |
| 15 <script> | |
| 16 /*parameters = { | |
| 17 'result_status': '{{ result_status_filter }}' == '-1' ? undefined : '{{ re sult_status_filter }}', | |
| 18 'triage': '{{ triage }}' == '1' ? undefined : '1', | |
| 19 };*/ | |
| 20 | |
| 21 function CreateUrl(parameters) { | |
| 22 var params = []; | |
| 23 for(var key in parameters) { | |
| 24 if (parameters[key] != undefined) { | |
| 25 params.push(key + '=' + parameters[key]) | |
| 26 } | |
| 27 } | |
| 28 | |
| 29 if (params.length == 0) { | |
| 30 return '/waterfall/list-flakes' | |
| 31 } else { | |
| 32 return '/waterfall/list-flakes?' + params.join('&'); | |
| 33 } | |
| 34 }; | |
| 35 | |
| 36 function requestFilteredResults(e) { | |
| 37 parameters = {} | |
| 38 if ('{{ triage }}') { | |
| 39 parameters['triage'] = '1' | |
| 40 parameters['start_date'] = $('#start_date').val() == 'mm/dd/yyyy' ? unde fined : $('#start_date').val(); | |
| 41 parameters['end_date'] = $('#end_date').val() == 'mm/dd/yyyy' ? undefine d : $('#end_date').val(); | |
| 42 } | |
| 43 parameters['master_name'] = $('#master_name').val(); | |
| 44 parameters['builder_name'] = $('#builder_name').val(); | |
| 45 parameters['build_number'] = $('#build_number').val(); | |
| 46 parameters['step_name'] = $('#step_name').val(); | |
| 47 parameters['test_name'] = $('#test_name').val(); | |
| 48 parameters['result_status'] = $('#result_status').val() == 'default' ? und efined : $('#result_status').val(); | |
| 49 | |
| 50 newUrl = CreateUrl(parameters); | |
| 51 window.location.replace(newUrl); | |
| 52 e.preventDefault(); | |
| 53 }; | |
| 54 | |
| 55 function handleResultStatusChanged(e) { | |
| 56 requestFilteredResults(e); | |
| 57 }; | |
| 58 | |
| 59 function handleFilterResults(e) { | |
| 60 requestFilteredResults(e); | |
| 61 }; | |
| 62 | |
| 63 $(document).ready(function() { | |
| 64 if ('{{ result_status_filter }}' != '-1') { | |
| 65 $('#result_status').val('{{ result_status_filter }}'); | |
| 66 } | |
| 67 $('#result_status').change(handleResultStatusChanged); | |
| 68 $('#filter_results').click(handleFilterResults); | |
| 69 }); | |
| 70 </script> | |
| 14 </head> | 71 </head> |
| 15 <body> | 72 <body> |
| 16 <h1> Flaky tests </h1> | 73 <h1>Flaky Tests</h1> |
| 74 <b>Filter by input parameters</b> | |
| 17 <form method="get" action="/waterfall/list-flakes"> | 75 <form method="get" action="/waterfall/list-flakes"> |
| 18 <table> | 76 <table> |
| 19 <tr> | 77 <tr> |
| 20 <td style="text-align:right">Master:</td> | 78 <td style="text-align:right">Master:</td> |
| 21 <td><input type="text" name="master_name" id="master_name" size="150" pl aceholder="chromium.mac"/></td> | 79 <td> |
| 80 <input type="text" name="master_name" id="master_name" size="100" valu e="{{ master_name_filter }}"placeholder="chromium.mac"/> | |
| 81 </td> | |
| 22 </tr> | 82 </tr> |
| 23 <tr> | 83 <tr> |
| 24 <td style="text-align:right">Builder:</td> | 84 <td style="text-align:right">Builder:</td> |
| 25 <td><input type="text" name="builder_name" id="builder_name" size="150" placeholder="Mac10.9 Tests"/></td> | 85 <td> |
| 86 <input type="text" name="builder_name" id="builder_name" size="100" va lue="{{ builder_name_filter }}"placeholder="Mac10.9 Tests"/> | |
| 87 </td> | |
| 26 </tr> | 88 </tr> |
| 27 <tr> | 89 <tr> |
| 28 <td style="text-align:right">Build Number:</td> | 90 <td style="text-align:right">Build Number:</td> |
| 29 <td><input type="text" name="build_number" id="build_number" size="150" placeholder="28133"/></td> | 91 <td> |
| 92 <input type="text" name="build_number" id="build_number" size="100" va lue="{{ build_number_filter }}" placeholder="28133"/> | |
| 93 </td> | |
| 30 </tr> | 94 </tr> |
| 31 <tr> | 95 <tr> |
| 32 <td style="text-align:right">Step:</td> | 96 <td style="text-align:right">Step:</td> |
| 33 <td><input type="text" name="step_name" id="step_name" size="150" placeh older="unit_tests on Mac-10.9"/></td> | 97 <td> |
| 98 <input type="text" name="step_name" id="step_name" size="100" value="{ { step_name_filter }}" placeholder="unit_tests on Mac-10.9"/> | |
| 99 </td> | |
| 34 </tr> | 100 </tr> |
| 35 <tr> | 101 <tr> |
| 36 <td style="text-align:right">Test:</td> | 102 <td style="text-align:right">Test:</td> |
| 37 <td><input type="text" name="test_name" id="test_name" size="150" placeh older="DesktopEngagementServiceTest.TestTimeoutDiscount"/></td> | 103 <td> |
| 104 <input type="text" name="test_name" id="test_name" size="100" value="{ { test_name_filter }}" placeholder="DesktopEngagementServiceTest.TestTimeoutDisc ount"/> | |
| 105 </td> | |
| 38 </tr> | 106 </tr> |
| 39 </table> | 107 </table> |
| 40 <input type="submit" value="Filter"> | 108 {% if triage %} |
|
chanli
2016/10/24 20:53:27
Nit: Add a <br> here
lijeffrey
2016/10/24 22:36:58
Done.
| |
| 109 <form> | |
| 110 Start Date | |
| 111 <input type="date" id="start_date" value={{ start_date }}></input> | |
| 112 End Date | |
| 113 <input type="date" id="end_date" value={{ end_date }}></input> | |
| 114 </form> | |
| 115 {% endif %} | |
| 116 <input type="submit" value="Filter" id="filter_results"> | |
| 117 <br> | |
| 41 </form> | 118 </form> |
| 42 <br><br><br> | 119 <br> |
| 43 <table> | 120 <b>Analysis Results</b> |
| 44 <thead> | 121 <table> |
| 45 <tr> | 122 <thead> |
| 46 <th>Request Time</th> | 123 <tr> |
| 47 <th>Master</th> | 124 <th></th> |
| 48 <th>Builder</th> | 125 <th>Analysis Request Time</th> |
| 49 <th>Build</th> | 126 <th>Build</th> |
| 50 <th style="width:100px">Step</th> | 127 <th>Step</th> |
| 51 <th style="width:300px">Test</th> | 128 <th>Test</th> |
| 52 <th>Status</th> | 129 <th>Status</th> |
| 53 <th>Suspected Build</th> | 130 <th>Suspected Build</th> |
| 54 <th>Graph</th> | 131 <th>Analysis</th> |
| 55 </tr> | 132 <th> |
| 56 </thead> | 133 <select id="result_status"> |
| 57 <tbody> | 134 <option value="default">Result Status</option> |
| 58 {% for master_flake_analysis in master_flake_analyses %} | 135 <option value="0">Correct - Found</option> |
| 59 <tr> | 136 <option value="10">Incorrect - Found</option> |
| 60 <td> {{master_flake_analysis.request_time or ''}} </td> | 137 <option value="20">Incorrect - Not Found</option> |
| 61 <td> {{master_flake_analysis.master_name}} </td> | 138 <option value="30">Untriaged - Found</option> |
| 62 <td> {{master_flake_analysis.builder_name}} </td> | 139 <option value="40">Untriaged - Not Found</option> |
| 63 <td> {{master_flake_analysis.build_number}} </td> | 140 <option value="50">Correct - Not Found</option> |
| 64 <td> <div title="{{master_flake_analysis.step_name}}" class="truncated">{{m aster_flake_analysis.step_name}}</div> </td> | 141 </select> |
| 65 <td> <div title="{{master_flake_analysis.test_name}}" class="truncated">{{m aster_flake_analysis.test_name}}</div> </td> | 142 </th> |
| 66 <td> {{master_flake_analysis.status}} </td> | 143 </tr> |
| 67 <td> {{master_flake_analysis.suspected_build or ''}} </td> | 144 </thead> |
| 68 <td> | 145 <tbody> |
| 69 <a href="/waterfall/check-flake?master_name={{master_flake_analysis.master _name}}&builder_name={{master_flake_analysis.builder_name}}&build_number={{maste r_flake_analysis.build_number}}&step_name={{master_flake_analysis.step_name}}&te st_name={{master_flake_analysis.test_name}}">Link</a> | 146 {% for master_flake_analysis in master_flake_analyses %} |
| 70 </td> | 147 <tr> |
| 71 </tr> | 148 <td>{{loop.index}}</td> |
| 72 {% endfor %} | 149 <td>{{ master_flake_analysis.request_time or '' }}</td> |
| 73 </tbody> | 150 <td> |
| 74 </table> | 151 {{ master_flake_analysis.master_name }}, {{ master_flake_analysis.buil der_name }}, {{ master_flake_analysis.build_number }} |
| 152 </td> | |
| 153 <td class="truncated">{{ master_flake_analysis.step_name }}</td> | |
| 154 <td class="truncated">{{ master_flake_analysis.test_name }}</td> | |
| 155 <td>{{ master_flake_analysis.status }}</td> | |
| 156 <td> | |
| 157 {% if master_flake_analysis.suspected_build %} | |
| 158 <a href="https://build.chromium.org/p/{{ master_flake_analysis.maste r_name }}/builders/{{ master_flake_analysis.builder_name }}/builds/{{ master_fla ke_analysis.suspected_build }}" target="_blank">{{ master_flake_analysis.suspect ed_build }} | |
| 159 </a> | |
| 160 {% endif %} | |
| 161 <td> | |
| 162 <a href="/waterfall/check-flake?master_name={{ master_flake_analysis.m aster_name }}&builder_name={{ master_flake_analysis.builder_name }}&build_number ={{master_flake_analysis.build_number}}&step_name={{ master_flake_analysis.step_ name }}&test_name={{ master_flake_analysis.test_name }}">Link</a> | |
| 163 </td> | |
| 164 <td>{{ master_flake_analysis.result_status }}</td> | |
| 165 </tr> | |
| 166 {% endfor %} | |
| 167 </tbody> | |
| 168 </table> | |
| 75 </body> | 169 </body> |
| OLD | NEW |