Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / LayoutTests / fast / harness / archived-results-dashboard.html
1 <!DOCTYPE html>
2 <style>
3 html {
4     height: 100%;
5 }
6 body {
7     margin: 0;
8     font-family: Helvetica, sans-serif;
9     font-size: 11pt;
10     display: -webkit-flex;
11     -webkit-flex-direction: column;
12     height: 100%;
13 }
14
15 body > * {
16     margin-left: 4px;
17     margin-top: 4px;
18 }
19
20 h1 {
21     font-size: 14pt;
22     margin-top: 1.5em;
23     text-align: center;
24     text-decoration: underline;
25 }
26
27 a {
28     text-decoration: none;
29 }
30
31 tr {
32     background-color: white;
33 }
34
35 tr:hover {
36     background-color: #999999;
37 }
38
39 td {
40     padding: 1px 4px;
41     valign: center;
42 }
43
44 td:hover .note{
45     display: block;
46 }
47
48 .test-pass {
49     background-color:rgb(0,255,0);
50 }
51
52 .test-fail {
53     background-color:rgb(255,0,0);
54 }
55
56 .test-skip {
57     background-color:rgb(255,255,255);
58 }
59 </style>
60 <script>
61 var g_state;
62 function globalState()
63 {
64     if (!g_state) {
65         g_state = {
66             results: {}
67         }
68     }
69     return g_state;
70 }
71
72 function ADD_RESULTS(input)
73 {
74     globalState().results = input;
75 }
76 </script>
77 <script src="archived_results.json"></script>
78 <script>
79 function processGlobalStateFor(testObject)
80 {
81     var table = document.getElementById('results-table');
82     var row = table.insertRow(-1);
83     var checkboxcell = row.insertCell(-1);
84     var checkbox = document.createElement("input");
85     checkbox.setAttribute('type','checkbox');
86     checkboxcell.appendChild(checkbox);
87     var cell = row.insertCell(-1);
88     cell.innerHTML = testObject.name;
89     for (var result in testObject.archived_results) {
90         var res = testObject.archived_results[result];        
91         var cell = row.insertCell(-1);
92         if( res == 'PASS')
93             cell.className = 'test-pass';
94         else if( res == 'SKIP')
95             cell.className = 'test-skip';
96         else
97             cell.className = 'test-fail';
98         var hrefElement = document.createElement("a");
99         hrefElement.href = globalState().results.result_links[result];
100         hrefElement.innerHTML = '&nbsp;&nbsp;';
101         cell.appendChild(hrefElement);
102     }
103
104
105 }
106 function forEachTest(handler, opt_tree, opt_prefix)
107 {
108     var tree = opt_tree || globalState().results.tests;
109     var prefix = opt_prefix || '';
110
111     for (var key in tree) {
112         var newPrefix = prefix ? (prefix + '/' + key) : key;
113         if ('archived_results' in tree[key]) {
114             var testObject = tree[key];
115             testObject.name = newPrefix;
116             handler(testObject);
117         } else
118             forEachTest(handler, tree[key], newPrefix);
119     }
120 }
121 function getTests()
122 {
123     var table = document.getElementById('results-table');
124     var testCount = table.rows.length;
125     var tests_list = {
126         tests : []
127     };
128     for(var i = 1; i < testCount; i++) {
129         var selected = table.rows[i].cells[0].getElementsByTagName("input")[0];
130         if(selected.checked) {
131             var test = table.rows[i].cells[1].innerHTML;
132             tests_list.tests.push(test);
133         }
134     }
135     return tests_list;
136 }
137 function rerun()
138 {
139     var log = document.getElementById('log');
140     log.innerHTML = 'Re running tests again';
141     var testList = getTests()
142     if (testList == '')
143         alert('Please select atlest one Test');
144     else {
145         xmlhttp = new XMLHttpRequest();
146         var url ='http://localhost:9630/';
147         xmlhttp.open('POST', url, true);
148         xmlhttp.onerror = function() {
149             alert('Server offline');
150         }
151         xmlhttp.setRequestHeader("Content-type", "application/json");
152         xmlhttp.onreadystatechange = function() {
153             if(xmlhttp.readyState > 0)
154                 document.body.innerHTML = xmlhttp.responseText;
155         }
156         xmlhttp.send(JSON.stringify(getTests()));
157     }
158 }
159 function checkalltests()
160 {
161     var value = document.getElementById("check_all").checked;
162     var table = document.getElementById("results-table");
163     var length = table.rows.length;
164     for (var i = 1; i < length; i++) {
165         var checkbox = table.rows[i].cells[0].getElementsByTagName("input")[0];
166             checkbox.checked = value;
167     }
168
169 }
170
171 function generatePage()
172 {
173     var count = globalState().results.result_links.length;
174     var tableHeader= '<div><table id=results-table><thead><tr>' +
175         '<th>' + '<input type="checkbox" name="checkall" id="check_all" onclick="checkalltests()"></input>' + ' Rerun'  + '</th>' +
176
177         '<th>Failing Tests ( Latest &#8594; Oldest )</th>';
178     for( var i = 0; i < count; i++)
179         tableHeader += '<th>'+ (i+1) +'</th>';
180     tableHeader += '</thead>';
181     document.body.innerHTML += tableHeader;
182     document.body.innerHTML += '</table></div>';
183
184     forEachTest(processGlobalStateFor);
185 }
186 </script>
187 <!-- To run the tests -->
188 <script src="resources/archived-results-dashboard-test.js"></script>
189 <body onload="generatePage()">
190     <h1>Dashboard</h1>
191     <p id=log></p>
192     <p><button onclick="rerun()">Re Run Tests</button></p>
193 </body>
194 </html>