forked from mykmelez/gecko
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Bug 1564707 [wpt PR 17439] - Add manual test for print(), a=testonly
Automatic update from web-platform-tests Add manual test for print() For whatwg/html#4690. -- wpt-commits: 8e53d2a89fe610b2ce480877c60bca88c949cf60 wpt-pr: 17439
- Loading branch information
Showing
1 changed file
with
93 additions
and
0 deletions.
There are no files selected for viewing
93 changes: 93 additions & 0 deletions
93
testing/web-platform/tests/html/webappapis/user-prompts/print-manual.html
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,93 @@ | ||
<!DOCTYPE html> | ||
<meta charset=utf-8> | ||
<title>Printing</title> | ||
<link rel=help href="https://html.spec.whatwg.org/#printing"> | ||
<script src="/resources/testharness.js"></script> | ||
<script src="/resources/testharnessreport.js"></script> | ||
<script> | ||
setup({explicit_timeout: true}) | ||
</script> | ||
|
||
<p>Click on the button below.</p> | ||
<p>If the browser offers to print the current page, dismiss the prompt to | ||
return to this page. The following should then appear in the box marked as | ||
"Output":</p> | ||
<pre> | ||
before calling print() | ||
beforeprint | ||
afterprint | ||
after calling print() | ||
</pre> | ||
<p>If no user dialog appears, either the above or the following should be | ||
printed in the box marked as "Output":</p> | ||
<pre> | ||
before calling print() | ||
after calling print() | ||
</pre> | ||
<p>The test passes if the above criteria are satisfied and "PASS" appears in a | ||
table below this paragraph. The test fails otherwise.</p> | ||
|
||
<button onclick="testBtn(this)">Click here!</button> | ||
<h3>Output</h3> | ||
<pre id=output></pre> | ||
|
||
<script> | ||
"use strict"; | ||
// This test is actually synchronous, but we use async_test()'s nice | ||
// infrastructure around t.step() to capture errors in event listeners. This is | ||
// necessary since it seems like in Chrome, exceptions in beforeprint/afterprint | ||
// event listeners are not propagated to error events. See | ||
// https://crbug.com/977828. | ||
const t = async_test(); | ||
const log = []; | ||
function out(str) { | ||
log.push(str); | ||
output.appendChild(document.createTextNode(str + "\n")); | ||
} | ||
function testBtn(btn) { | ||
btn.remove(); | ||
window.addEventListener("beforeprint", function (ev) { | ||
// t.step_func() does not preserve `this`, which we test below. | ||
t.step(() => { | ||
out("beforeprint"); | ||
assert_equals(ev.__proto__, Event.prototype); | ||
assert_equals(this, window); | ||
assert_equals(ev.target, window); | ||
assert_equals(ev.type, "beforeprint"); | ||
}); | ||
}); | ||
window.addEventListener("afterprint", function (ev) { | ||
// t.step_func() does not preserve `this`, which we test below. | ||
t.step(() => { | ||
out("afterprint"); | ||
assert_equals(ev.__proto__, Event.prototype); | ||
assert_equals(this, window); | ||
assert_equals(ev.target, window); | ||
assert_equals(ev.type, "afterprint"); | ||
}); | ||
}); | ||
out("before calling print()"); | ||
print(); | ||
out("after calling print()"); | ||
t.step(() => { | ||
try { | ||
assert_array_equals(log, [ | ||
"before calling print()", | ||
"beforeprint", | ||
"afterprint", | ||
"after calling print()", | ||
]); | ||
} catch (err) { | ||
try { | ||
assert_array_equals(log, [ | ||
"before calling print()", | ||
"after calling print()", | ||
]); | ||
} catch (err) { | ||
assert_unreached("Output does not match either possibility"); | ||
} | ||
} | ||
}); | ||
t.done(); | ||
} | ||
</script> |