<!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(() => {
    rule.selectorText = ":left";
    assert_equals(rule.selectorText, ":left");
  }, "Set selectorText to :left pseudo page");

  test(() => {
    rule.selectorText = "named";
    assert_equals(rule.selectorText, "named");
  }, "Set selectorText to named page");

  test(() => {
    rule.selectorText = "named:first";
    assert_equals(rule.selectorText, "named:first");
  }, "Set selectorText to named page with :first pseudo 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>
