simon.fraser@apple.com | ecc87ce | 2010-09-28 03:03:33 +0000 | [diff] [blame] | 1 | <!-- |
| 2 | /* |
| 3 | * Copyright (C) 2010 Apple Inc. All rights reserved. |
| 4 | * |
| 5 | * Redistribution and use in source and binary forms, with or without |
| 6 | * modification, are permitted provided that the following conditions |
| 7 | * are met: |
| 8 | * 1. Redistributions of source code must retain the above copyright |
| 9 | * notice, this list of conditions and the following disclaimer. |
| 10 | * 2. Redistributions in binary form must reproduce the above copyright |
| 11 | * notice, this list of conditions and the following disclaimer in the |
| 12 | * documentation and/or other materials provided with the distribution. |
| 13 | * |
| 14 | * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' |
| 15 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, |
| 16 | * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR |
| 17 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS |
| 18 | * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
| 19 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
| 20 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
| 21 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
| 22 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
| 23 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF |
| 24 | * THE POSSIBILITY OF SUCH DAMAGE. |
| 25 | */ |
| 26 | --> |
| 27 | |
| 28 | <!DOCTYPE html> |
| 29 | <html> |
| 30 | <head> |
| 31 | <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> |
| 32 | <title>CSS 2.1 Test Harness</title> |
| 33 | <link rel="stylesheet" href="harness.css" type="text/css" media="screen" charset="utf-8"> |
| 34 | |
| 35 | <script src="http://code.jquery.com/jquery-1.4.2.min.js" type="text/javascript" charset="utf-8"></script> |
| 36 | <script src="harness.js" type="text/javascript" charset="utf-8"></script> |
| 37 | |
| 38 | <script type="text/javascript" charset="utf-8"> |
| 39 | var gTestSuite; |
| 40 | function setupTests() |
| 41 | { |
| 42 | gTestSuite = new TestSuite(); |
| 43 | } |
| 44 | |
| 45 | window.addEventListener('load', setupTests, false); |
| 46 | |
| 47 | function skipTest() |
| 48 | { |
| 49 | gTestSuite.skipTest(document.getElementById('skip-reason').value); |
| 50 | } |
| 51 | |
| 52 | function invalidTest() |
| 53 | { |
| 54 | gTestSuite.invalidTest(); |
| 55 | } |
| 56 | |
| 57 | function failTest() |
| 58 | { |
| 59 | gTestSuite.failTest(); |
| 60 | } |
| 61 | |
| 62 | function passTest() |
| 63 | { |
| 64 | gTestSuite.passTest(); |
| 65 | } |
simon.fraser@apple.com | 150d08d | 2010-10-01 03:55:48 +0000 | [diff] [blame] | 66 | |
| 67 | function goToNextUntested() |
| 68 | { |
| 69 | gTestSuite.goToNextIncompleteTest(); |
| 70 | } |
simon.fraser@apple.com | ecc87ce | 2010-09-28 03:03:33 +0000 | [diff] [blame] | 71 | |
simon.fraser@apple.com | 7b9c783 | 2010-10-03 05:32:18 +0000 | [diff] [blame] | 72 | function goToTest() |
| 73 | { |
| 74 | var testName = prompt('Go to test:', ''); |
| 75 | |
| 76 | // This accepts any of the following: |
| 77 | // at-charset-010 |
| 78 | // at-charset-010.xht |
| 79 | // xhtml1/at-charset-010 |
| 80 | // xhtml1/at-charset-010.xht |
| 81 | // and will choose the format if specified. |
| 82 | if (!gTestSuite.goToTestByName(testName)) |
| 83 | alert('Failed to find test ' + testName); |
| 84 | } |
| 85 | |
simon.fraser@apple.com | ecc87ce | 2010-09-28 03:03:33 +0000 | [diff] [blame] | 86 | function formatChanged() |
| 87 | { |
| 88 | var newFormat; |
| 89 | if (document.harness.format.html4.checked) |
| 90 | newFormat = 'html4'; |
| 91 | else |
| 92 | newFormat = 'xhtml1'; |
| 93 | gTestSuite.formatChanged(newFormat); |
| 94 | } |
| 95 | |
| 96 | function testSelected() |
| 97 | { |
| 98 | var list = document.getElementById('test-list') |
simon.fraser@apple.com | 433c4cf7 | 2010-09-28 16:49:00 +0000 | [diff] [blame] | 99 | if (list.selectedIndex >= 0) |
| 100 | gTestSuite.goToTestIndex(list.selectedIndex); |
| 101 | else |
| 102 | gTestSuite.clearTest(); |
simon.fraser@apple.com | ecc87ce | 2010-09-28 03:03:33 +0000 | [diff] [blame] | 103 | } |
| 104 | |
| 105 | function resultsPopupChanged(popup) |
| 106 | { |
| 107 | gTestSuite.resultsPopupChanged(popup.selectedIndex); |
| 108 | } |
| 109 | |
| 110 | function doExport() |
| 111 | { |
| 112 | gTestSuite.exportResults(document.getElementById('results-popup').selectedIndex); |
| 113 | } |
simon.fraser@apple.com | 8439d21 | 2010-09-30 04:14:42 +0000 | [diff] [blame] | 114 | |
| 115 | function printTestIframe() |
| 116 | { |
| 117 | var testFrame = document.getElementById('test-frame'); |
| 118 | testFrame.contentWindow.print(); |
| 119 | } |
simon.fraser@apple.com | ecc87ce | 2010-09-28 03:03:33 +0000 | [diff] [blame] | 120 | |
simon.fraser@apple.com | 5a58f14 | 2010-10-02 06:01:29 +0000 | [diff] [blame] | 121 | var gOverlayConfirmCallback; |
| 122 | function showOverlay(overlayConfirmCallback) |
simon.fraser@apple.com | ecc87ce | 2010-09-28 03:03:33 +0000 | [diff] [blame] | 123 | { |
simon.fraser@apple.com | 5a58f14 | 2010-10-02 06:01:29 +0000 | [diff] [blame] | 124 | document.getElementById('overlay-data').value = ''; |
| 125 | gOverlayConfirmCallback = overlayConfirmCallback; |
| 126 | $('#overlay').addClass('visible'); |
| 127 | } |
simon.fraser@apple.com | ecc87ce | 2010-09-28 03:03:33 +0000 | [diff] [blame] | 128 | |
simon.fraser@apple.com | 5a58f14 | 2010-10-02 06:01:29 +0000 | [diff] [blame] | 129 | function overlayCancel() |
| 130 | { |
| 131 | $('#overlay').removeClass('visible'); |
simon.fraser@apple.com | ecc87ce | 2010-09-28 03:03:33 +0000 | [diff] [blame] | 132 | } |
| 133 | |
simon.fraser@apple.com | 5a58f14 | 2010-10-02 06:01:29 +0000 | [diff] [blame] | 134 | function overlayConfirm() |
| 135 | { |
| 136 | var data = document.getElementById('overlay-data').value; |
| 137 | gOverlayConfirmCallback(data); |
| 138 | $('#overlay').removeClass('visible'); |
| 139 | } |
| 140 | |
| 141 | function doImport() |
| 142 | { |
| 143 | document.getElementById('overlay-action').innerText = 'Enter results to import (in the same format as the exported results):'; |
| 144 | showOverlay(function(data) { |
| 145 | gTestSuite.importResults(data); |
| 146 | }); |
| 147 | } |
| 148 | |
| 149 | function doClear() |
| 150 | { |
| 151 | document.getElementById('overlay-action').innerText = 'Enter list of tests for which to clear results (so they can be re-tested):'; |
| 152 | showOverlay(function(data) { |
| 153 | gTestSuite.clearResults(data); |
| 154 | }); |
| 155 | } |
simon.fraser@apple.com | ecc87ce | 2010-09-28 03:03:33 +0000 | [diff] [blame] | 156 | </script> |
| 157 | |
| 158 | </head> |
| 159 | <body> |
| 160 | |
| 161 | <div class="controls"> |
| 162 | <form name="harness" onsubmit="return false;"> |
| 163 | <select id="chapters"> |
| 164 | <option>Test category</option> |
| 165 | </select> |
| 166 | <div class="progress"> |
| 167 | <div><span id="test-index">1</span> of <span id="chapter-test-count">200</span> unique tests</div> |
| 168 | </div> |
| 169 | <div class="details"> |
simon.fraser@apple.com | 150d08d | 2010-10-01 03:55:48 +0000 | [diff] [blame] | 170 | <div class="name"> |
simon.fraser@apple.com | ecc87ce | 2010-09-28 03:03:33 +0000 | [diff] [blame] | 171 | <div class="test-type"> |
| 172 | <input type="radio" name="format" id="html4" onchange="formatChanged()" checked><label for="html4">HTML4</label><br> |
| 173 | <input type="radio" name="format" id="xhtml1" onchange="formatChanged()"><label for="xhtml1">XHTML1</label> |
| 174 | </div> |
simon.fraser@apple.com | 150d08d | 2010-10-01 03:55:48 +0000 | [diff] [blame] | 175 | <button onclick="goToNextUntested()" accesskey="n"><strong>N</strong>ext Untested</button> |
simon.fraser@apple.com | 7b9c783 | 2010-10-03 05:32:18 +0000 | [diff] [blame] | 176 | <button onclick="goToTest()" accesskey="g">Go to Test...</button> |
simon.fraser@apple.com | ecc87ce | 2010-09-28 03:03:33 +0000 | [diff] [blame] | 177 | </div> |
| 178 | </div> |
| 179 | |
| 180 | <div> |
| 181 | <select id="test-list" size="40" onchange="testSelected()"></select> |
| 182 | </div> |
| 183 | </form> |
| 184 | </div> |
| 185 | |
| 186 | <div class="actions"> |
| 187 | <span>Skip reason:</span> <input type="text" id="skip-reason" size="50"> |
simon.fraser@apple.com | 8439d21 | 2010-09-30 04:14:42 +0000 | [diff] [blame] | 188 | <button onclick="skipTest()" accesskey="s"><strong>S</strong>kip</button> |
| 189 | <div class="note">Use <i>Control-Option-letter</i> to<br> trigger buttons via the keyboard.</div> |
simon.fraser@apple.com | ecc87ce | 2010-09-28 03:03:33 +0000 | [diff] [blame] | 190 | <div class="action-buttons"> |
| 191 | <button onclick="invalidTest()" accesskey="i">Invalid</button> |
simon.fraser@apple.com | 8439d21 | 2010-09-30 04:14:42 +0000 | [diff] [blame] | 192 | <button onclick="failTest()" accesskey="f"><strong>F</strong>ail</button> |
| 193 | <button onclick="passTest()" accesskey="p"><strong>P</strong>ass</button> |
simon.fraser@apple.com | ecc87ce | 2010-09-28 03:03:33 +0000 | [diff] [blame] | 194 | </div> |
| 195 | </div> |
| 196 | <div id="test-content"> |
| 197 | <div class="info"> |
| 198 | <div class="title">Title: <span id="test-title"></span></div> |
| 199 | <div class="url">URL: <span id="test-url"></span></div> |
| 200 | <div class="assertion">Assertion: <span id="test-assertion"></span></div> |
simon.fraser@apple.com | 8439d21 | 2010-09-30 04:14:42 +0000 | [diff] [blame] | 201 | <div class="flags">Flags: <span id="test-flags"></span> |
| 202 | <span id="warning">This test must be run over HTTP.</span> |
| 203 | <button id="print-button" onclick="printTestIframe()">Print Preview</button> |
| 204 | </div> |
simon.fraser@apple.com | ecc87ce | 2010-09-28 03:03:33 +0000 | [diff] [blame] | 205 | </div> |
| 206 | |
| 207 | <div id="test-wrapper" class="frame-wrapper"> |
| 208 | <h2>Test</h2> |
| 209 | <iframe id="test-frame"></iframe> |
| 210 | </div> |
| 211 | <div id="ref-wrapper" class="frame-wrapper"> |
| 212 | <h2>Reference</h2> |
| 213 | <iframe id="ref-frame"></iframe> |
| 214 | </div> |
| 215 | </div> |
| 216 | |
| 217 | <div class="results"> |
simon.fraser@apple.com | 5a58f14 | 2010-10-02 06:01:29 +0000 | [diff] [blame] | 218 | |
simon.fraser@apple.com | ecc87ce | 2010-09-28 03:03:33 +0000 | [diff] [blame] | 219 | <div class="output-options"> |
| 220 | <p>Show results for:</p> |
| 221 | <select id="results-popup" onchange="resultsPopupChanged(this)"> |
| 222 | </select> |
simon.fraser@apple.com | 5a58f14 | 2010-10-02 06:01:29 +0000 | [diff] [blame] | 223 | <div> |
| 224 | <button id="export-button" onclick="doExport()">Export...</button> |
| 225 | </div> |
| 226 | |
| 227 | <div class="custom"> |
| 228 | <button id="import-button" onclick="doImport()">Import...</button> |
| 229 | <button id="import-button" onclick="doClear()">Clear Results...</button> |
| 230 | </div> |
simon.fraser@apple.com | ecc87ce | 2010-09-28 03:03:33 +0000 | [diff] [blame] | 231 | </div> |
simon.fraser@apple.com | 5a58f14 | 2010-10-02 06:01:29 +0000 | [diff] [blame] | 232 | |
simon.fraser@apple.com | ecc87ce | 2010-09-28 03:03:33 +0000 | [diff] [blame] | 233 | <div id="output"></div> |
| 234 | <div class="summary"> |
| 235 | <table> |
| 236 | <tr> |
| 237 | <th></th><th>Passed</th><th>Failed</th><th>Skipped</th><th>Invalid</th><th>Tested</th><th>Total</th><th>% done</th> |
| 238 | </tr> |
| 239 | <tr> |
| 240 | <td class="label">HTML4:</td><td id="h-passed"></td><td id="h-failed"></td><td id="h-skipped"></td><td id="h-invalid"></td><td id="h-tested"></td><td id="h-total"></td><td id="h-percent"></td> |
| 241 | </tr> |
| 242 | <tr> |
| 243 | <td class="label">XHTML1:</td><td id="x-passed"></td><td id="x-failed"></td><td id="x-skipped"></td><td id="x-invalid"></td><td id="x-tested"></td><td id="x-total"></td><td id="x-percent"></td> |
| 244 | </tr> |
| 245 | </table> |
| 246 | </div> |
| 247 | </div> |
| 248 | |
simon.fraser@apple.com | 5a58f14 | 2010-10-02 06:01:29 +0000 | [diff] [blame] | 249 | <div id="overlay"> |
| 250 | |
| 251 | <div class="overlay-contents"> |
| 252 | <p id="overlay-action"></p> |
| 253 | <textarea id="overlay-data"></textarea> |
| 254 | <p class="note">Pasting many lines of text here can be very slow in Safari 5. You can quit Safari and use a <a href="http://nightly.webkit.org/" title="WebKit Nightly Builds">WebKit nightly build</a> for importing or clearing.</p> |
| 255 | <div class="buttons"> |
| 256 | <button onclick="overlayCancel()">Cancel</button><button onclick="overlayConfirm()">OK</button> |
| 257 | </div> |
| 258 | </div> |
| 259 | |
| 260 | </div> |
simon.fraser@apple.com | ecc87ce | 2010-09-28 03:03:33 +0000 | [diff] [blame] | 261 | </body> |
| 262 | </html> |