| /* |
| * Copyright (C) 2011 Google Inc. All rights reserved. |
| * |
| * Redistribution and use in source and binary forms, with or without |
| * modification, are permitted provided that the following conditions |
| * are met: |
| * 1. Redistributions of source code must retain the above copyright |
| * notice, this list of conditions and the following disclaimer. |
| * 2. Redistributions in binary form must reproduce the above copyright |
| * notice, this list of conditions and the following disclaimer in the |
| * documentation and/or other materials provided with the distribution. |
| * |
| * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' |
| * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, |
| * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR |
| * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS |
| * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
| * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
| * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
| * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
| * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
| * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF |
| * THE POSSIBILITY OF SUCH DAMAGE. |
| */ |
| |
| (function () { |
| |
| module('ui.notifications'); |
| |
| test('Notification', 5, function() { |
| var notification = new ui.notifications.Notification(); |
| equal(notification.tagName, 'LI'); |
| equal(notification.innerHTML, '<div class="how"></div><div class="what"></div>'); |
| equal(notification.index(), 0); |
| notification.setIndex(1); |
| equal(notification.index(), 1); |
| // FIXME: Really need to figure out how to mock/test animated removal. |
| ok(notification.dismiss); |
| }); |
| |
| test('Stream', 11, function() { |
| var stream = new ui.notifications.Stream(); |
| equal(stream.tagName, 'OL'); |
| equal(stream.className, 'notifications'); |
| equal(stream.childElementCount, 0); |
| |
| var notification; |
| |
| notification = new ui.notifications.Info('-o-matic'); |
| notification.setIndex(2); |
| stream.add(notification); |
| equal(stream.childElementCount, 1); |
| equal(stream.textContent, '-o-matic'); |
| |
| notification = new ui.notifications.Info('garden'); |
| notification.setIndex(3); |
| stream.add(notification); |
| equal(stream.childElementCount, 2); |
| equal(stream.textContent, 'garden-o-matic'); |
| |
| notification = new ui.notifications.Info(' is '); |
| notification.setIndex(1); |
| stream.add(notification); |
| equal(stream.childElementCount, 3); |
| equal(stream.textContent, 'garden-o-matic is '); |
| |
| notification = new ui.notifications.Info('awesome!'); |
| stream.add(notification); |
| equal(stream.childElementCount, 4); |
| equal(stream.textContent, 'garden-o-matic is awesome!'); |
| }); |
| |
| test('Info', 2, function() { |
| var info = new ui.notifications.Info('info'); |
| equal(info.tagName, 'LI'); |
| equal(info.innerHTML, '<div class="how"></div><div class="what">info</div>'); |
| }); |
| |
| test('FailingTestGroup', 2, function() { |
| var failingTest = new ui.notifications.FailingTestGroup('test', ['test.html']); |
| equal(failingTest.tagName, 'LI'); |
| equal(failingTest.innerHTML, '<a href="http://webkit-test-results.webkit.org/dashboards/flakiness_dashboard.html#tests=test.html" target="_blank">test</a>'); |
| }); |
| |
| test('SuspiciousCommit', 2, function() { |
| var suspiciousCommit = new ui.notifications.SuspiciousCommit({revision: 1, summary: "summary", author: "author", reviewer: "reviewer"}); |
| equal(suspiciousCommit.tagName, 'LI'); |
| equal(suspiciousCommit.innerHTML, |
| '<div class="description">' + |
| '<a href="http://trac.webkit.org/changeset/1" target="_blank">1</a>' + |
| '<span>' + |
| '<span class="summary">summary</span>' + |
| '<span class="author">author</span>' + |
| '<span class="reviewer">reviewer</span>' + |
| '</span>' + |
| '</div>'); |
| }); |
| |
| test('FailingTestsSummary', 12, function() { |
| var testFailures = new ui.notifications.FailingTestsSummary(); |
| equal(testFailures.tagName, 'LI'); |
| equal(testFailures.innerHTML, |
| '<div class="how">' + |
| '<time class="relative"></time>' + |
| '<table class="failures">' + |
| '<thead><tr><td>type</td><td>release</td><td>debug</td></tr></thead>' + |
| '<tbody><tr class="BUILDING" style="display: none; "><td><span>BUILDING</span></td><td></td><td></td></tr></tbody>' + |
| '</table>' + |
| '</div>' + |
| '<div class="what">' + |
| '<div class="problem">' + |
| '<ul class="effects"></ul>' + |
| '<ul class="actions">' + |
| '<li><button class="action default" title="Examine these failures in detail.">Examine</button></li>' + |
| '<li><button class="action">Rebaseline</button></li>' + |
| '</ul>' + |
| '</div>' + |
| '<ul class="causes"></ul>' + |
| '</div>'); |
| testFailures.addFailureAnalysis({testName: 'test', resultNodesByBuilder: {}}); |
| equal(testFailures.index(), 0); |
| equal(testFailures.innerHTML, |
| '<div class="how">' + |
| '<time class="relative"></time>' + |
| '<table class="failures">' + |
| '<thead><tr><td>type</td><td>release</td><td>debug</td></tr></thead>' + |
| '<tbody><tr class="BUILDING" style="display: none; "><td><span>BUILDING</span></td><td></td><td></td></tr></tbody>' + |
| '</table>' + |
| '</div>' + |
| '<div class="what">' + |
| '<div class="problem">' + |
| '<ul class="effects">' + |
| '<li><a href="http://webkit-test-results.webkit.org/dashboards/flakiness_dashboard.html#tests=test" target="_blank">test</a></li>' + |
| '</ul>' + |
| '<ul class="actions">' + |
| '<li><button class="action default" title="Examine these failures in detail.">Examine</button></li>' + |
| '<li><button class="action">Rebaseline</button></li>' + |
| '</ul>' + |
| '</div>' + |
| '<ul class="causes"></ul>' + |
| '</div>'); |
| ok(testFailures.containsFailureAnalysis({testName: 'test'})); |
| ok(!testFailures.containsFailureAnalysis({testName: 'foo'})); |
| testFailures.addFailureAnalysis({testName: 'test'}); |
| equal(testFailures.innerHTML, |
| '<div class="how">' + |
| '<time class="relative"></time>' + |
| '<table class="failures">' + |
| '<thead><tr><td>type</td><td>release</td><td>debug</td></tr></thead>' + |
| '<tbody><tr class="BUILDING" style="display: none; "><td><span>BUILDING</span></td><td></td><td></td></tr></tbody>' + |
| '</table>' + |
| '</div>' + |
| '<div class="what">' + |
| '<div class="problem">' + |
| '<ul class="effects">' + |
| '<li><a href="http://webkit-test-results.webkit.org/dashboards/flakiness_dashboard.html#tests=test" target="_blank">test</a></li>' + |
| '</ul>' + |
| '<ul class="actions">' + |
| '<li><button class="action default" title="Examine these failures in detail.">Examine</button></li>' + |
| '<li><button class="action">Rebaseline</button></li>' + |
| '</ul>' + |
| '</div>' + |
| '<ul class="causes"></ul>' + |
| '</div>'); |
| deepEqual(testFailures.testNameList(), ['test']); |
| var time = new Date(); |
| time.setMinutes(time.getMinutes() - 10); |
| testFailures.addCommitData({revision: 1, time: time, summary: "summary", author: "author", reviewer: "reviewer"}); |
| equal(testFailures.index(), time.getTime()); |
| equal(testFailures.innerHTML, |
| '<div class="how">' + |
| '<time class="relative">10 minutes ago</time>' + |
| '<table class="failures">' + |
| '<thead><tr><td>type</td><td>release</td><td>debug</td></tr></thead>' + |
| '<tbody><tr class="BUILDING" style="display: none; "><td><span>BUILDING</span></td><td></td><td></td></tr></tbody>' + |
| '</table>' + |
| '</div>' + |
| '<div class="what">' + |
| '<div class="problem">' + |
| '<ul class="effects">' + |
| '<li><a href="http://webkit-test-results.webkit.org/dashboards/flakiness_dashboard.html#tests=test" target="_blank">test</a></li>' + |
| '</ul>' + |
| '<ul class="actions">' + |
| '<li><button class="action default" title="Examine these failures in detail.">Examine</button></li>' + |
| '<li><button class="action">Rebaseline</button></li>' + |
| '</ul>' + |
| '</div>' + |
| '<ul class="causes">' + |
| '<li>' + |
| '<div class="description">' + |
| '<a href="http://trac.webkit.org/changeset/1" target="_blank">1</a>' + |
| '<span>' + |
| '<span class="summary">summary</span>' + |
| '<span class="author">author</span>' + |
| '<span class="reviewer">reviewer</span>' + |
| '</span>' + |
| '</div>' + |
| '</li>' + |
| '</ul>' + |
| '</div>'); |
| |
| testFailures.addFailureAnalysis({testName: 'foo', resultNodesByBuilder: {'Webkit Linux (dbg)': { actual: 'TEXT'}}}); |
| equal(testFailures.innerHTML, |
| '<div class="how">' + |
| '<time class="relative">10 minutes ago</time>' + |
| '<table class="failures">' + |
| '<thead><tr><td>type</td><td>release</td><td>debug</td></tr></thead>' + |
| '<tbody>' + |
| '<tr class="TEXT">' + |
| '<td><span>TEXT</span></td>' + |
| '<td></td>' + |
| '<td><a class="failing-builder" target="_blank" href="http://build.chromium.org/p/chromium.webkit/waterfall?builder=Webkit+Linux+(dbg)"><span class="version">lucid</span><span class="architecture">64-bit</span></a></td>' + |
| '</tr>' + |
| '<tr class="BUILDING" style="display: none; "><td><span>BUILDING</span></td><td></td><td></td></tr>' + |
| '</tbody>' + |
| '</table>' + |
| '</div>' + |
| '<div class="what">' + |
| '<div class="problem">' + |
| '<ul class="effects">' + |
| '<li><a href="http://webkit-test-results.webkit.org/dashboards/flakiness_dashboard.html#tests=foo" target="_blank">foo</a></li>' + |
| '<li><a href="http://webkit-test-results.webkit.org/dashboards/flakiness_dashboard.html#tests=test" target="_blank">test</a></li>' + |
| '</ul>' + |
| '<ul class="actions">' + |
| '<li><button class="action default" title="Examine these failures in detail.">Examine</button></li>' + |
| '<li><button class="action">Rebaseline</button></li>' + |
| '</ul>' + |
| '</div>' + |
| '<ul class="causes">' + |
| '<li>' + |
| '<div class="description">' + |
| '<a href="http://trac.webkit.org/changeset/1" target="_blank">1</a>' + |
| '<span>' + |
| '<span class="summary">summary</span>' + |
| '<span class="author">author</span>' + |
| '<span class="reviewer">reviewer</span>' + |
| '</span>' + |
| '</div>' + |
| '</li>' + |
| '</ul>' + |
| '</div>'); |
| |
| testFailures.updateBuilderResults({'Webkit Mac10.6': { actual: 'BUILDING'}}); |
| equal(testFailures.innerHTML, |
| '<div class="how">' + |
| '<time class="relative">10 minutes ago</time>' + |
| '<table class="failures">' + |
| '<thead><tr><td>type</td><td>release</td><td>debug</td></tr></thead>' + |
| '<tbody>' + |
| '<tr class="TEXT">' + |
| '<td><span>TEXT</span></td>' + |
| '<td></td>' + |
| '<td><a class="failing-builder" target="_blank" href="http://build.chromium.org/p/chromium.webkit/waterfall?builder=Webkit+Linux+(dbg)"><span class="version">lucid</span><span class="architecture">64-bit</span></a></td>' + |
| '</tr>' + |
| '<tr class="BUILDING" style="">' + |
| '<td><span>BUILDING</span></td>' + |
| '<td><a class="failing-builder" target="_blank" href="http://build.chromium.org/p/chromium.webkit/waterfall?builder=Webkit+Mac10.6"><span class="version">snowleopard</span></a></td>' + |
| '<td></td>' + |
| '</tr>' + |
| '</tbody>' + |
| '</table>' + |
| '</div>' + |
| '<div class="what">' + |
| '<div class="problem">' + |
| '<ul class="effects">' + |
| '<li><a href="http://webkit-test-results.webkit.org/dashboards/flakiness_dashboard.html#tests=foo" target="_blank">foo</a></li>' + |
| '<li><a href="http://webkit-test-results.webkit.org/dashboards/flakiness_dashboard.html#tests=test" target="_blank">test</a></li>' + |
| '</ul>' + |
| '<ul class="actions">' + |
| '<li><button class="action default" title="Examine these failures in detail.">Examine</button></li>' + |
| '<li><button class="action">Rebaseline</button></li>' + |
| '</ul>' + |
| '</div>' + |
| '<ul class="causes">' + |
| '<li>' + |
| '<div class="description">' + |
| '<a href="http://trac.webkit.org/changeset/1" target="_blank">1</a>' + |
| '<span>' + |
| '<span class="summary">summary</span>' + |
| '<span class="author">author</span>' + |
| '<span class="reviewer">reviewer</span>' + |
| '</span>' + |
| '</div>' + |
| '</li>' + |
| '</ul>' + |
| '</div>'); |
| }); |
| |
| test('FailingTestsSummary (grouping)', 1, function() { |
| var testFailures = new ui.notifications.FailingTestsSummary(); |
| testFailures.addFailureAnalysis({testName: 'path/to/test1.html', resultNodesByBuilder: {}}); |
| testFailures.addFailureAnalysis({testName: 'path/to/test2.html', resultNodesByBuilder: {}}); |
| testFailures.addFailureAnalysis({testName: 'path/to/test3.html', resultNodesByBuilder: {}}); |
| testFailures.addFailureAnalysis({testName: 'path/to/test4.html', resultNodesByBuilder: {}}); |
| testFailures.addFailureAnalysis({testName: 'path/another/test.html', resultNodesByBuilder: {}}); |
| equal(testFailures.innerHTML, |
| '<div class="how">' + |
| '<time class="relative"></time>' + |
| '<table class="failures">' + |
| '<thead><tr><td>type</td><td>release</td><td>debug</td></tr></thead>' + |
| '<tbody><tr class="BUILDING" style="display: none; "><td><span>BUILDING</span></td><td></td><td></td></tr></tbody>' + |
| '</table>' + |
| '</div>' + |
| '<div class="what">' + |
| '<div class="problem">' + |
| '<ul class="effects">' + |
| '<li><a href="http://webkit-test-results.webkit.org/dashboards/flakiness_dashboard.html#tests=path%2Fto%2Ftest1.html%2Cpath%2Fto%2Ftest2.html%2Cpath%2Fto%2Ftest3.html%2Cpath%2Fto%2Ftest4.html" target="_blank">path/to (4 tests)</a></li>' + |
| '<li><a href="http://webkit-test-results.webkit.org/dashboards/flakiness_dashboard.html#tests=path%2Fanother%2Ftest.html" target="_blank">path/another/test.html</a></li>' + |
| '</ul>' + |
| '<ul class="actions">' + |
| '<li><button class="action default" title="Examine these failures in detail.">Examine</button></li>' + |
| '<li><button class="action">Rebaseline</button></li>' + |
| '</ul>' + |
| '</div>' + |
| '<ul class="causes"></ul>' + |
| '</div>'); |
| }); |
| |
| test('BuildersFailing', 1, function() { |
| var builderFailing = new ui.notifications.BuildersFailing('Disasterifying'); |
| builderFailing.setFailingBuilders({'Webkit Linux': ['compile'], 'Webkit Win7': ['webkit_tests', 'update']}); |
| equal(builderFailing.innerHTML, |
| '<div class="how">' + |
| '<time class="relative"></time>' + |
| '</div>' + |
| '<div class="what">' + |
| '<div class="problem">Disasterifying:' + |
| '<ul class="effects">' + |
| '<li class="builder"><a class="failing-builder" target="_blank" href="http://build.chromium.org/p/chromium.webkit/waterfall?builder=Webkit+Linux"><span class="version">lucid</span><span class="architecture">64-bit</span><span class="failures"> compile</span></a></li>' + |
| '<li class="builder"><a class="failing-builder" target="_blank" href="http://build.chromium.org/p/chromium.webkit/waterfall?builder=Webkit+Win7"><span class="version">win7</span><span class="failures"> webkit_tests, update</span></a></li>' + |
| '</ul>' + |
| '</div>' + |
| '<ul class="causes"></ul>' + |
| '</div>'); |
| }); |
| |
| }()); |