// Copyright (C) 2013 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: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // * 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. // * Neither the name of Google Inc. nor the names of its // contributors may be used to endorse or promote products derived from // this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT // OWNER OR 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. module('overview'); test('getFlakyData', 2, function() { var testTypes = ['MockTestType']; var failureMap = { 'T': 'TIMEOUT', 'C': 'CRASH', 'P': 'PASS' } var resultsByTestType = { 'MockTestType': { 'MockBuilder1': { 'tests': { 'TestSuite.NotFlaky': { 'results': [[1, 'T'], [1, 'C']] }, 'TestSuite.Flaky': { 'results': [[1, 'T'], [1, 'C'], [1, 'T']] }, 'TestSuite.VeryFlaky': { 'results': [[1, 'T'], [1, 'C'], [1, 'T'], [1, 'C'], [1, 'T'], [1, 'C'], [1, 'T']] } }, 'num_failures_by_type': { 'PASS': [10, 12], 'CRASH': [1, 0] }, 'failure_map': failureMap } } }; var flipCountThreshold = 1; deepEqual(overview._getFlakyData(testTypes, resultsByTestType, flipCountThreshold), { 'MockTestType': { "flakyBelowThreshold": { "TestSuite.Flaky": true, "TestSuite.VeryFlaky": true }, 'flaky': { 'TestSuite.Flaky': true, 'TestSuite.VeryFlaky': true }, 'testCount': 11 } }) flipCountThreshold = 5; deepEqual(overview._getFlakyData(testTypes, resultsByTestType, flipCountThreshold), { 'MockTestType': { "flakyBelowThreshold": { "TestSuite.VeryFlaky": true }, 'flaky': { "TestSuite.Flaky": true, 'TestSuite.VeryFlaky': true }, 'testCount': 11 } }) }); test('htmlForFlakyTests', 6, function() { var flakyData = { 'browser_tests': { 'testCount': 0, "flakyBelowThreshold": {}, 'flaky': {} }, 'layout-tests': { 'testCount': 4, "flakyBelowThreshold": { 'css3/foo.html': true, 'css3/bar.html': true }, 'flaky': { 'css3/foo.html': true, 'css3/bar.html': true } } } var container = document.createElement('div'); container.innerHTML = overview._htmlForFlakyTests(flakyData, 'MockGroup'); // There should only be one row other than the header since browser_tests // have testCount of 0. ok(!container.querySelectorAll('tr')[2]); var firstRow = container.querySelectorAll('tr')[1]; equal(firstRow.querySelector('td:nth-child(1)').textContent, 'layout-tests'); equal(firstRow.querySelector('td:nth-child(1) a').hash, '#group=MockGroup&testType=layout-tests&tests=css3/foo.html,css3/bar.html'); equal(firstRow.querySelector('td:nth-child(2)').textContent, '2 / 4'); equal(firstRow.querySelector('td:nth-child(3)').textContent, '50%'); equal(firstRow.querySelector('td:nth-child(4)').innerHTML, '
'); }); test('handleValidHashParameter', 5, function() { var historyInstance = new history.History(); ok(overview.handleValidHashParameter(historyInstance, 'flipCount', "5")) ok(overview.handleValidHashParameter(historyInstance, 'flipCount', 5)) ok(!overview.handleValidHashParameter(historyInstance, 'flipCount', "notanumber")) ok(!overview.handleValidHashParameter(historyInstance, 'flipCount', "5notanumber")) ok(!overview.handleValidHashParameter(historyInstance, 'randomKey', "5")) }); test('navbar', 3, function() { var flipCount = 5; var container = document.createElement('div'); container.innerHTML = overview._htmlForNavBar(flipCount); ok(container.querySelector('select')); var sliderContainer = container.querySelector('#flip-slider-container'); ok(sliderContainer); var range = sliderContainer.querySelector('input'); equal(range.value, "5"); });