diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
commit | 36d22d82aa202bb199967e9512281e9a53db42c9 (patch) | |
tree | 105e8c98ddea1c1e4784a60a5a6410fa416be2de /testing/web-platform/tests/tools/wave/www/newsession.html | |
parent | Initial commit. (diff) | |
download | firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.tar.xz firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.zip |
Adding upstream version 115.7.0esr.upstream/115.7.0esr
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'testing/web-platform/tests/tools/wave/www/newsession.html')
-rw-r--r-- | testing/web-platform/tests/tools/wave/www/newsession.html | 257 |
1 files changed, 257 insertions, 0 deletions
diff --git a/testing/web-platform/tests/tools/wave/www/newsession.html b/testing/web-platform/tests/tools/wave/www/newsession.html new file mode 100644 index 0000000000..0ff308c8b4 --- /dev/null +++ b/testing/web-platform/tests/tools/wave/www/newsession.html @@ -0,0 +1,257 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="UTF-8" /> + <title>New Session - Web Platform Test Runner</title> + <link rel="stylesheet" href="css/bulma-0.7.5/bulma.min.css" /> + <link rel="stylesheet" href="css/style.css" /> + <link rel="stylesheet" href="css/main.css" /> + <script src="lib/davidshimjs/qrcode.js"></script> + <script src="lib/keycodes.js"></script> + <script src="lib/wave-service.js"></script> + </head> + <body> + <section class="section"> + <div class="container site-header"> + <img src="res/wavelogo_2016.jpg" alt="WAVE Logo" class="site-logo" /> + <h1 class="title is-spaced">New Session</h1> + </div> + + <div class="container"> + <div id="content"> + <div id="qr-code"></div> + <br /> + <p> + Scan QR Code OR visit + <a + id="results-page-url" + style="font-weight: bold; color: #23d160;" + target="_blank" + ></a> + and follow instructions + </p> + <div id="button-wrapper"> + <button + id="start-button" + class="button is-large is-success tabbable" + > + Start + </button> + <button + id="results-button" + class="button is-large is-light tabbable" + > + View Result Page + </button> + </div> + + <div>(Alternatively to start the test you can just press Return)</div> + + <div id="details-wrapper"> + <h3 class="title is-5 is-spaced">Details</h3> + <div class="detail"> + <div>Token:</div> + <div id="token"></div> + </div> + <div class="detail"> + <div>User Agent:</div> + <div id="user-agent"></div> + </div> + <div class="detail"> + <div>Test Types:</div> + <div id="test-types"></div> + </div> + <div class="detail"> + <div>Total Test Files:</div> + <div id="total-tests"></div> + </div> + <div class="detail"> + <div>Reference Tokens:</div> + <div id="reference-tokens"></div> + </div> + <div class="detail"> + <div>Test Timeouts:</div> + <div id="test-timeout"></div> + </div> + <div class="detail"> + <div>Test Paths:</div> + <div id="test-path"></div> + </div> + </div> + </div> + </div> + </section> + + <script> + var HOSTNAME = location.hostname; + var PORT = location.port; + var PROTOCOL = location.protocol.replace(/:/, ""); + var QUERY = location.search.replace(/\?/, ""); + var match = QUERY.match(/token=([^&]+)/); + var TOKEN = match ? match[1] : null; + var RESUME = /[\?&]resume=/.test(location.search); + if (TOKEN) + document.cookie = "resume_token=" + TOKEN + "; expires=Fri, 31 Dec 9999 23:59:59 GMT"; + var selectedTabbable = -1; + + document.onload = function() { + if (RESUME) { + document.getElementById("start-button").innerHTML = "Resume"; + document.getElementById("new-button").style.display = "block"; + } + document.getElementById("results-page-url").innerHTML = + "http://" + location.host + WEB_ROOT + "overview.html"; + document.getElementById("results-page-url").href = + "http://" + location.host + WEB_ROOT + "overview.html"; + }; + + function displaySessionConfiguration(configuration) { + var userAgent = document.getElementById("user-agent"); + userAgent.innerText = configuration.userAgent; + var testPath = document.getElementById("test-path"); + for (var i = 0; i < configuration.tests.include.length; i++) { + var path = configuration.tests.include[i]; + testPath.innerText += path + "\n"; + } + var testTypes = document.getElementById("test-types"); + testTypes.innerText = configuration.types.join(", "); + var testTimeout = document.getElementById("test-timeout"); + for (var timeout in configuration.timeouts) { + testTimeout.innerText += + timeout + ": " + configuration.timeouts[timeout] / 1000 + "s\n"; + } + var referenceTokens = document.getElementById("reference-tokens"); + if (configuration.referenceTokens.length === 0) { + referenceTokens.innerText = "none"; + } else { + for (var i = 0; i < configuration.referenceTokens.length; i++) { + var token = configuration.referenceTokens[i]; + referenceTokens.innerText += token + "\n"; + } + } + } + + function displaySessionStatus(status) { + var testTypes = document.getElementById("total-tests"); + var count = 0; + for (var api in status.testFilesCount) { + count += status.testFilesCount[api]; + } + testTypes.innerText = count; + } + + function startTests() { + WaveService.startSession(token, function() { + WaveService.readNextTest(token, function(url) { + location.href = url; + }); + }); + } + + var resultsUrl = + "http://" + location.host + WEB_ROOT + "results.html" + location.search; + new QRCode(document.getElementById("qr-code"), resultsUrl); + + var resultsButton = document.getElementById("results-button"); + resultsButton.onclick = function() { + window.open(resultsUrl, "_blank"); + }; + + var startButton = document.getElementById("start-button"); + startButton.onclick = startTests; + + function removeClass(element, className) { + var elementClass = element.className; + var index = elementClass.indexOf(className); + if (index !== -1) { + element.className = elementClass.replace(className, ""); + } + } + + function addClass(element, className) { + element.className += " " + className; + } + + function skipFocus(steps) { + var tabbables = document.getElementsByClassName("tabbable"); + if (selectedTabbable === -1) { + selectedTabbable = 0; + } else { + removeClass(tabbables[selectedTabbable], "focused"); + selectedTabbable += steps; + } + + if (selectedTabbable >= tabbables.length) { + selectedTabbable = 0; + } + + if (selectedTabbable < 0) { + selectedTabbable = tabbables.length - 1; + } + + tabbables[selectedTabbable].focus(); + addClass(tabbables[selectedTabbable], "focused"); + } + + function focusNext() { + skipFocus(1); + } + + function focusPrevious() { + skipFocus(-1); + } + + document.onkeydown = function(event) { + event = event || window.event; + var charCode = + typeof event.which === "number" ? event.which : event.keyCode; + + if (ACTION_KEYS.indexOf(charCode) !== -1) { + event.preventDefault(); + if (selectedTabbable === -1) { + startTests(); + return; + } + var tabbables = document.getElementsByClassName("tabbable"); + var element = tabbables[selectedTabbable]; + if (element.type === "checkbox") { + element.checked = !element.checked; + } else { + element.click(); + } + } + + if (PREV_KEYS.indexOf(charCode) !== -1) { + focusPrevious(); + } + + if (NEXT_KEYS.indexOf(charCode) !== -1) { + focusNext(); + } + }; + + var match = location.search.match(/token=([^&]+)/); + var token = match[1]; + var tokenView = document.getElementById("token"); + tokenView.innerText = token; + + WaveService.readSession(token, displaySessionConfiguration); + WaveService.readSessionStatus(token, displaySessionStatus); + + if (window.localStorage) { + var storage = window.localStorage; + var state = JSON.parse(storage.getItem("wave")); + if (!state) { + state = {}; + } + if (!state.recent_sessions) { + state.recent_sessions = []; + } + if (state.recent_sessions.indexOf(token) === -1) { + state.recent_sessions.unshift(token); + } + storage.setItem("wave", JSON.stringify(state)); + } + </script> + </body> +</html> |