blob: 4dd546f33a5555933b9327323a4b2d457f24d369 [file] [log] [blame]
/*
* 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.results');
asyncTest('FlakinessData', 1, function() {
var dashboard = new ui.results.FlakinessData();
dashboard.addEventListener('load', function() {
// setTimeout to be after the FlakinessData's load handler.
setTimeout(function() {
window.postMessage({command: 'heightChanged', height: 15}, '*');
// setTimeout to be after the postMessage has been handled.
setTimeout(function() {
equals(dashboard.offsetHeight, 15);
dashboard.remove();
start();
}, 0);
}, 0);
});
document.body.appendChild(dashboard);
});
var kExampleResultsByTest = {
"scrollbars/custom-scrollbar-with-incomplete-style.html": {
"Mock Builder": {
"expected": "IMAGE",
"actual": "CRASH"
},
"Mock Linux": {
"expected": "TEXT",
"actual": "CRASH"
}
},
"userscripts/another-test.html": {
"Mock Builder": {
"expected": "PASS",
"actual": "TEXT"
}
}
};
var kExampleReftestResults = {
"reftest.html": {
"Mock Builder": {
"expected": "PASS",
"actual": "IMAGE",
"reftest_type": ["=="]
}
},
"mismatch-reftest.html": {
"Mock Builder": {
"expected": "PASS",
"actual": "IMAGE",
"reftest_type": ["!="]
}
}
};
var kExampleResultsWithTimeoutByTest = {
"fast/not-fast-test.html": {
"Mock Builder": {
"expected": "PASS",
"actual": "TIMEOUT"
}
}
};
var kExampleGreaterThanFourResultsByTest = {
"scrollbars/custom-scrollbar-with-incomplete-style.html": {
"Mock Linux": {
"expected": "TEXT",
"actual": "CRASH"
}
},
"scrollbars/1.html": {
"Mock Linux": {
"expected": "TEXT",
"actual": "CRASH"
}
},
"scrollbars/2.html": {
"Mock Linux": {
"expected": "TEXT",
"actual": "CRASH"
}
},
"scrollbars/3.html": {
"Mock Linux": {
"expected": "TEXT",
"actual": "CRASH"
}
},
"userscripts/another-test.html": {
"Mock Builder": {
"expected": "PASS",
"actual": "TEXT"
}
}
};
test('View', 18, function() {
var delegate = {
fetchResultsURLs: function(failureInfo, callback) { return; }
};
var view = new ui.results.View(delegate);
view.setResultsByTest(kExampleResultsByTest);
view.firstResult();
var testSelector = view.querySelector('.test-selector');
var topPanel = testSelector.querySelector('.top-panel');
equals(topPanel.childNodes[0], topPanel.querySelector('.active'));;
equals($($('.builder-selector', view)[0]).tabs('option', 'selected'), 0);
view.nextResult();
equals(topPanel.childNodes[0], topPanel.querySelector('.active'));;
equals($($('.builder-selector', view)[0]).tabs('option', 'selected'), 1);
equals(view.currentTestName(), 'scrollbars/custom-scrollbar-with-incomplete-style.html');
view.nextResult();
equals(topPanel.childNodes[1], topPanel.querySelector('.active'));;
equals($($('.builder-selector', view)[0]).tabs('option', 'selected'), 0);
equals(view.currentTestName(), 'userscripts/another-test.html');
view.previousResult();
equals(topPanel.childNodes[0], topPanel.querySelector('.active'));;
equals($($('.builder-selector', view)[0]).tabs('option', 'selected'), 1);
view.nextTest();
equals(topPanel.childNodes[1], topPanel.querySelector('.active'));;
equals($($('.builder-selector', view)[0]).tabs('option', 'selected'), 0);
equals(view.currentTestName(), 'userscripts/another-test.html');
view.previousTest();
equals(topPanel.childNodes[0], topPanel.querySelector('.active'));;
equals($($('.builder-selector', view)[0]).tabs('option', 'selected'), 1);
equals(view.currentTestName(), 'scrollbars/custom-scrollbar-with-incomplete-style.html');
ok(!testSelector.querySelector('.resize-handle'));
equals(topPanel.style.minHeight, '');
});
test('View with more than four tests', 2, function() {
var delegate = {
fetchResultsURLs: function(failureInfo, callback) { return; }
};
var view = new ui.results.View(delegate);
view.setResultsByTest(kExampleGreaterThanFourResultsByTest);
var testSelector = view.querySelector('.test-selector');
var topPanel = testSelector.querySelector('.top-panel');
ok(testSelector.querySelector('.resize-handle'));
equals(topPanel.style.minHeight, '100px');
});
test('View with reftests', 2, function() {
var delegate = {
fetchResultsURLs: function(failureInfo, callback) { return; }
};
var view = new ui.results.View(delegate);
view.setResultsByTest(kExampleReftestResults);
view.firstResult();
equals($('.non-action-button', view).length, 1);
equals($('.action', view).length, 0);
});
test('View of timeouts', 1, function() {
var delegate = {
fetchResultsURLs: function(failureInfo, callback) { callback([]); }
};
var view = new ui.results.View(delegate);
view.setResultsByTest(kExampleResultsWithTimeoutByTest);
view.firstResult();
equals($('.results-grid', view).html(), 'No results to display.');
});
})();