4 Copyright (c) 2013 The Chromium Authors. All rights reserved.
5 Use of this source code is governed by a BSD-style license that can be
6 found in the LICENSE file.
9 <title>TVCM Tests: loading...</title>
10 <script src="/tvcm/__init__.js"></script>
11 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
12 <link rel="shortcut icon" href="data:image/x-icon;base64," type="image/x-icon">
15 box-sizing: border-box;
21 body > x-base-interactive-test-runner {
30 tvcm.require('tvcm.unittest');
31 tvcm.require('tvcm.unittest.interactive_test_runner');
36 // The test runner no-ops pushState so keep it around.
37 var realWindowHistoryPushState = window.history.pushState.bind(
40 function stateToSearchString(defaultState, state) {
42 for (var k in state) {
43 if (state[k] === defaultState[k])
49 } else if (v === false) {
51 } else if (v === '') {
58 return parts.join('&');
61 function stateFromSearchString(string) {
63 string.split('&').forEach(function(part) {
66 var kv = part.split('=');
83 function loadAndRunTests() {
84 var state = stateFromSearchString(
85 window.location.search.substring(1));
89 if (state.testSuiteName) {
90 suiteNamesToLoad = [];
91 suiteNamesToLoad.push(state.testSuiteName);
94 var loader = new tvcm.unittest.SuiteLoader(suiteNamesToLoad);
95 return loader.allSuitesLoadedPromise.then(
97 runTests(loader, state);
100 tvcm.showPanic('Module loading failure', err);
104 function updateTitle(state) {
105 var testFilterString = state.testFilterString || '';
106 var testSuiteName = state.testSuiteName || '';
109 if (testSuiteName && testFilterString.length) {
110 title = testFilterString + ' in ' + testSuiteName;
111 } else if (testSuiteName) {
112 title = testSuiteName;
113 } else if (testFilterString) {
114 title = testFilterString + ' in all tests';
116 title = 'All TVCM Tests';
119 if (state.shortFormat)
121 document.title = title;
122 var runner = document.querySelector('x-base-interactive-test-runner');
124 runner.title = title;
127 function runTests(loader, state) {
128 var runner = new tvcm.unittest.InteractiveTestRunner();
129 runner.testLinks = loader.testLinks;
130 runner.allTests = loader.getAllTests();
131 document.body.appendChild(runner);
133 runner.setState(state);
136 runner.addEventListener('statechange', function() {
137 var state = runner.getState();
138 var stateString = stateToSearchString(runner.getDefaultState(),
140 if (window.location.search.substring(1) == stateString)
145 if (stateString.length > 0)
146 stateURL = window.location.pathname + '?' + stateString;
148 stateURL = window.location.pathname;
149 realWindowHistoryPushState(state, document.title, stateURL);
152 window.addEventListener('popstate', function(state) {
153 runner.setState(state, true);
156 runner.getHRefForTestCase = function(testCase) {
157 var state = runner.getState();
158 state.testSuiteName = testCase.suite.name;
159 state.testFilterString = testCase.name;
160 state.shortFormat = false;
162 var stateString = stateToSearchString(runner.getDefaultState(),
164 if (stateString.length > 0)
165 return window.location.pathname + '?' + stateString;
167 return window.location.pathname;
171 window.addEventListener('load', loadAndRunTests);