1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130
|
<!DOCTYPE html>
<title>CSSOM: CSSPageRule tests</title>
<link rel="help" href="https://drafts.csswg.org/cssom/#the-csspagerule-interface" />
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<style>
@page {}
</style>
<script>
const sheet = document.styleSheets[0];
const rule = sheet.cssRules[0];
test(() => {
assert_true(!!rule);
assert_equals(rule.type, CSSRule.PAGE_RULE);
}, "Sanity checks");
test(() => {
assert_equals(rule.selectorText, "");
}, "Page selector is initially the empty string");
test(() => {
assert_equals(rule.cssText, "@page { }");
}, "Page selector 'cssText' is initially the @page { }");
test(() => {
rule.selectorText = ":left";
assert_equals(rule.selectorText, ":left");
}, "Set selectorText to :left pseudo page");
test(() => {
rule.selectorText = ":left";
assert_equals(rule.cssText, "@page :left { }");
}, "Set cssText to :left pseudo page");
test(() => {
rule.selectorText = "named";
assert_equals(rule.selectorText, "named");
}, "Set selectorText to named page");
test(() => {
rule.selectorText = "named";
assert_equals(rule.cssText, "@page named { }");
}, "Set cssText to named page");
test(() => {
rule.selectorText = "named:first";
assert_equals(rule.selectorText, "named:first");
}, "Set selectorText to named page with :first pseudo page");
test(() => {
rule.selectorText = "named:first";
assert_equals(rule.cssText, "@page named:first { }");
}, "Set cssText to named page with :first pseudo page");
test(() => {
rule.selectorText = "named:First";
assert_equals(rule.selectorText, "named:first");
}, "Set selectorText to named page with case insensitive :first pseudo page");
test(() => {
rule.selectorText = "named:First";
assert_equals(rule.cssText, "@page named:first { }");
}, "Set cssText to named page with case insensitive :first pseudo page");
test(() => {
rule.selectorText = "named:first:first";
assert_equals(rule.selectorText, "named:first:first");
}, "Set selectorText to named page with two :first pseudo page");
test(() => {
rule.selectorText = "named:first:first";
assert_equals(rule.cssText, "@page named:first:first { }");
}, "Set cssText to named page with two :first pseudo page");
test(() => {
rule.selectorText = "named:first:left:right:first";
assert_equals(rule.selectorText, "named:first:left:right:first");
}, "Set selectorText to named page with pseudo pages of " +
":first, :left, :right, :first in order.");
test(() => {
rule.selectorText = "named:first:left:right:first";
assert_equals(rule.cssText, "@page named:first:left:right:first { }");
}, "Set cssText to named page with pseudo pages of " +
":first, :left, :right, :first in order.");
test(() => {
rule.selectorText = "";
rule.selectorText = "named :first";
assert_equals(rule.selectorText, "");
}, "Cannot set selectorText to named page with pseudo, whitespace between");
test(() => {
rule.selectorText = "";
rule.selectorText = "named :first";
assert_equals(rule.cssText, "@page { }");
}, "Cannot set cssText to named page with pseudo, whitespace between - return default @page { }");
test(() => {
rule.selectorText = "";
rule.selectorText = ":first :left";
assert_equals(rule.selectorText, "");
}, "Cannot set selectorText to two pseudos, whitespace between");
test(() => {
rule.selectorText = "";
rule.selectorText = ":first :left";
assert_equals(rule.cssText, "@page { }");
}, "Cannot set cssText to two pseudos, whitespace between - return default @page { }");
test(() => {
rule.selectorText = "";
rule.selectorText = ":notapagepseudo";
assert_equals(rule.selectorText, "");
}, "Cannot set selectorText to invalid pseudo page");
test(() => {
rule.selectorText = "";
rule.selectorText = ":notapagepseudo";
assert_equals(rule.cssText, "@page { }");
}, "Cannot set cssText to invalid pseudo page - return default @page { }");
test(() => {
assert_equals(rule.parentStyleSheet, sheet);
sheet.deleteRule(0);
assert_equals(rule.parentStyleSheet, null);
rule.selectorText = "pagename";
}, "Set selectorText to named page after rule was removed");
</script>
|