Home | History | Annotate | Download | only in scripts
      1 /*
      2  * Copyright (C) 2011 Google Inc. All rights reserved.
      3  *
      4  * Redistribution and use in source and binary forms, with or without
      5  * modification, are permitted provided that the following conditions
      6  * are met:
      7  * 1. Redistributions of source code must retain the above copyright
      8  *    notice, this list of conditions and the following disclaimer.
      9  * 2. Redistributions in binary form must reproduce the above copyright
     10  *    notice, this list of conditions and the following disclaimer in the
     11  *    documentation and/or other materials provided with the distribution.
     12  *
     13  * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
     14  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
     15  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     16  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
     17  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
     18  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
     19  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
     20  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
     21  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
     22  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
     23  * THE POSSIBILITY OF SUCH DAMAGE.
     24  */
     25 
     26 (function () {
     27 
     28 module("ui");
     29 
     30 var kExampleResultsByTest = {
     31     "scrollbars/custom-scrollbar-with-incomplete-style.html": {
     32         "Mock Builder": {
     33             "expected": "IMAGE",
     34             "actual": "CRASH"
     35         },
     36         "Mock Linux": {
     37             "expected": "TEXT",
     38             "actual": "CRASH"
     39         }
     40     },
     41     "userscripts/another-test.html": {
     42         "Mock Builder": {
     43             "expected": "PASS",
     44             "actual": "TEXT"
     45         }
     46     }
     47 }
     48 
     49 test("ui.onebar", 3, function() {
     50     if (window.location.hash) {
     51         window.location.hash = '';
     52     }
     53 
     54     onebar = new ui.onebar();
     55     onebar.attach();
     56     equal(onebar.innerHTML,
     57         '<ul class="ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all">' +
     58             '<li class="ui-state-default ui-corner-top ui-tabs-selected ui-state-active"><a href="#unexpected">Unexpected Failures</a></li>' +
     59             '<li class="ui-state-default ui-corner-top"><a href="#expected">Expected Failures</a></li>' +
     60             '<li class="ui-state-default ui-corner-top ui-state-disabled"><a href="#results">Results</a></li>' +
     61             '<li class="ui-state-default ui-corner-top"><a href="#perf">perf</a></li>' +
     62         '</ul>' +
     63         '<div id="unexpected" class="ui-tabs-panel ui-widget-content ui-corner-bottom"></div>' +
     64         '<div id="expected" class="ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide"></div>' +
     65         '<div id="results" class="ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide"></div>' +
     66         '<div id="perf" class="ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide"></div>');
     67 
     68     onebar.select('expected');
     69     equal(window.location.hash, '#expected');
     70     onebar.select('unexpected');
     71     equal(window.location.hash, '#unexpected');
     72 
     73     $(onebar).detach();
     74 });
     75 
     76 test("results.ResultsGrid", 1, function() {
     77     var grid = new ui.results.ResultsGrid()
     78     grid.addResults([
     79         'http://example.com/layout-test-results/foo-bar-diff.txt',
     80         'http://example.com/layout-test-results/foo-bar-expected.png',
     81         'http://example.com/layout-test-results/foo-bar-actual.png',
     82         'http://example.com/layout-test-results/foo-bar-diff.png',
     83     ]);
     84     equal(grid.innerHTML,
     85         '<table class="comparison">' +
     86             '<thead>' +
     87                 '<tr>' +
     88                     '<th>Expected</th>' +
     89                     '<th>Actual</th>' +
     90                     '<th>Diff</th>' +
     91                 '</tr>' +
     92             '</thead>' +
     93             '<tbody>' +
     94                 '<tr>' +
     95                     '<td class="expected result-container"><img class="image-result" src="http://example.com/layout-test-results/foo-bar-expected.png"></td>' +
     96                     '<td class="actual result-container"><img class="image-result" src="http://example.com/layout-test-results/foo-bar-actual.png"></td>' +
     97                     '<td class="diff result-container"><img class="image-result" src="http://example.com/layout-test-results/foo-bar-diff.png"></td>' +
     98                 '</tr>' +
     99             '</tbody>' +
    100         '</table>' +
    101         '<table class="comparison">' +
    102             '<thead>' +
    103                 '<tr>' +
    104                     '<th>Expected</th>' +
    105                     '<th>Actual</th>' +
    106                     '<th>Diff</th>' +
    107                 '</tr>' +
    108             '</thead>' +
    109             '<tbody>' +
    110                 '<tr>' +
    111                     '<td class="expected result-container"></td>' +
    112                     '<td class="actual result-container"></td>' +
    113                     '<td class="diff result-container"><iframe class="text-result" src="http://example.com/layout-test-results/foo-bar-diff.txt"></iframe></td>' +
    114                 '</tr>' +
    115             '</tbody>' +
    116         '</table>');
    117 });
    118 
    119 test("results.ResultsGrid (crashlog)", 1, function() {
    120     var grid = new ui.results.ResultsGrid()
    121     grid.addResults(['http://example.com/layout-test-results/foo-bar-crash-log.txt']);
    122     equal(grid.innerHTML, '<iframe class="text-result" src="http://example.com/layout-test-results/foo-bar-crash-log.txt"></iframe>');
    123 });
    124 
    125 test("results.ResultsGrid (empty)", 1, function() {
    126     var grid = new ui.results.ResultsGrid()
    127     grid.addResults([]);
    128     equal(grid.innerHTML, 'No results to display.');
    129 });
    130 
    131 test("time", 6, function() {
    132     var time = new ui.RelativeTime();
    133     equal(time.tagName, 'TIME');
    134     equal(time.className, 'relative');
    135     deepEqual(Object.getOwnPropertyNames(time.__proto__).sort(), [
    136         'date',
    137         'init',
    138         'setDate',
    139         'update',
    140     ]);
    141     equal(time.outerHTML, '<time class="relative"></time>');
    142     var tenMinutesAgo = new Date();
    143     tenMinutesAgo.setMinutes(tenMinutesAgo.getMinutes() - 10);
    144     time.setDate(tenMinutesAgo);
    145     equal(time.outerHTML, '<time class="relative">10 minutes ago</time>');
    146     equal(time.date().getTime(), tenMinutesAgo.getTime());
    147 });
    148 
    149 test("StatusArea", 3, function() {
    150     var statusArea = new ui.StatusArea();
    151     var id = statusArea.newId();
    152     statusArea.addMessage(id, 'First Message');
    153     statusArea.addMessage(id, 'Second Message');
    154     equal(statusArea.outerHTML,
    155         '<div class="status processing" style="visibility: visible;">' +
    156             '<ul class="actions"><li><button class="action">Close</button></li></ul>' +
    157             '<progress class="process-text">Processing...</progress>' +
    158             '<div id="status-content-1" class="status-content">' +
    159                 '<div class="message">First Message</div>' +
    160                 '<div class="message">Second Message</div>' +
    161             '</div>' +
    162         '</div>');
    163 
    164     var secondStatusArea = new ui.StatusArea();
    165     var secondId = secondStatusArea.newId();
    166     secondStatusArea.addMessage(secondId, 'First Message second id');
    167 
    168     equal(statusArea.outerHTML,
    169         '<div class="status processing" style="visibility: visible;">' +
    170             '<ul class="actions"><li><button class="action">Close</button></li></ul>' +
    171             '<progress class="process-text">Processing...</progress>' +
    172             '<div id="status-content-1" class="status-content">' +
    173                 '<div class="message">First Message</div>' +
    174                 '<div class="message">Second Message</div>' +
    175             '</div>' +
    176             '<div id="status-content-2" class="status-content">' +
    177                 '<div class="message">First Message second id</div>' +
    178             '</div>' +
    179         '</div>');
    180 
    181     statusArea.addFinalMessage(id, 'Final Message 1');
    182     statusArea.addFinalMessage(secondId, 'Final Message 2');
    183 
    184     equal(statusArea.outerHTML,
    185         '<div class="status" style="visibility: visible;">' +
    186             '<ul class="actions"><li><button class="action">Close</button></li></ul>' +
    187             '<progress class="process-text">Processing...</progress>' +
    188             '<div id="status-content-1" class="status-content">' +
    189                 '<div class="message">First Message</div>' +
    190                 '<div class="message">Second Message</div>' +
    191                 '<div class="message">Final Message 1</div>' +
    192             '</div>' +
    193             '<div id="status-content-2" class="status-content">' +
    194                 '<div class="message">First Message second id</div>' +
    195                 '<div class="message">Final Message 2</div>' +
    196             '</div>' +
    197         '</div>');
    198 
    199     statusArea.close();
    200 });
    201 
    202 })();
    203