mirror of
https://github.com/servo/servo.git
synced 2025-10-10 13:30:20 +01:00
68 lines
2.6 KiB
JavaScript
68 lines
2.6 KiB
JavaScript
|
|
// Logs (appends) an HTML string to a logger element in a list format.
|
|
// An element in the document with id "logger" will be used as the log
|
|
// container.
|
|
function log(str) {
|
|
const entry = document.createElement('li');
|
|
entry.innerHTML = str;
|
|
const loggerElement = document.getElementById('logger');
|
|
loggerElement.appendChild(entry);
|
|
return entry;
|
|
}
|
|
|
|
// Common setup for window management tests. Performs some basic assertions, and
|
|
// then waits for a click on the `setUpButton` element (for manual tests).
|
|
// Example usage:
|
|
// promise_test(async setUpTest => {
|
|
// await setUpWindowManagement(setUpTest, setUpButton);
|
|
// ...
|
|
// });
|
|
async function setUpWindowManagement(setUpTest, setUpButton) {
|
|
assert_true(
|
|
'getScreenDetails' in self && 'isExtended' in screen,
|
|
`API not supported; use Chromium (not content_shell) and enable
|
|
chrome://flags/#enable-experimental-web-platform-features`);
|
|
if (!screen.isExtended)
|
|
log(`WARNING: Use multiple screens for full test coverage`);
|
|
if (window.location.href.startsWith('file'))
|
|
log(`WARNING: Run via 'wpt serve'; file URLs lack permission support`);
|
|
|
|
try { // Support manual testing where test_driver is not running.
|
|
await test_driver.set_permission({ name: 'window-management' }, 'granted');
|
|
} catch {
|
|
}
|
|
const setUpWatcher = new EventWatcher(setUpTest, setUpButton, ['click']);
|
|
const setUpClick = setUpWatcher.wait_for('click');
|
|
try { // Support manual testing where test_driver is not running.
|
|
await test_driver.click(setUpButton);
|
|
} catch {
|
|
}
|
|
await setUpClick;
|
|
setUpButton.disabled = true;
|
|
}
|
|
|
|
|
|
// Adds a button to the given `buttonContainer` element with the contents of
|
|
// `name`. Attaches an event watcher to the given test and waits for a signal
|
|
// from the test driver to click the button. If no test driver is available
|
|
// (manual testing) then awaits an actual click from the user instead. If
|
|
// `disableOnClick` is true, the button will also be disabled after it is
|
|
// clicked.
|
|
async function addTestTriggerButtonAndAwaitClick(buttonContainer, name, test) {
|
|
const button = document.createElement('button');
|
|
button.innerHTML = name;
|
|
const entry = document.createElement('li');
|
|
entry.appendChild(button);
|
|
buttonContainer.appendChild(entry);
|
|
const testWatcher = new EventWatcher(test, button, ['click']);
|
|
const buttonClick = testWatcher.wait_for('click');
|
|
// Disable the button when it is clicked.
|
|
button.onclick = function() {
|
|
button.disabled = true;
|
|
};
|
|
try { // Support manual testing where test_driver is not running.
|
|
await test_driver.click(button);
|
|
} catch {
|
|
}
|
|
await buttonClick;
|
|
}
|