<!DOCTYPE html>
<meta charset="utf-8">
<title>CSS Pseudo-Elements Test: Supported properties in ::marker</title>
<link rel="help" href="https://drafts.csswg.org/css-pseudo-4/#marker-pseudo">
<link rel="help" href="https://drafts.csswg.org/css-lists/#list-style-position">
<link rel="author" title="Oriol Brufau" href="mailto:obrufau@igalia.com">
<meta name="assert" content="This test checks the computed 'display' value of ::marker pseudo-elements." />
<style>
.inside {
  list-style-position: inside;
}
.color::marker {
  color: blue;
}
.string {
  list-style-type: "string";
}
.content::marker {
  content: "content";
}
</style>
<div id="log"></div>
<ol class="inside">
  <li class="default">item</li>
  <li class="color">item</li>
  <li class="string">item</li>
  <li class="content">item</li>
</ol>
<ol class="outside">
  <li class="default">item</li>
  <li class="color">item</li>
  <li class="string">item</li>
  <li class="content">item</li>
</ol>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/css/support/computed-testcommon.js"></script>
<script>
const inside = document.querySelectorAll(".inside > li");
for (const target of inside) {
  const {display} = getComputedStyle(target, "::marker");
  test(() => {
    assert_equals(display, "inline", "Inside markers should be inline");
  }, `Computed 'display' for inside ::marker, variant ${target.className}`);
}

const outside = document.querySelectorAll(".outside > li");
const firstDisplay = getComputedStyle(outside[0], "::marker").display;
for (const target of outside) {
  const {display} = getComputedStyle(target, "::marker");
  test(() => {
    assert_in_array(display, ["inline-block", "block"], "Outside markers should be block containers");
    assert_equals(display, firstDisplay, "The 'display' value shouldn't vary");
  }, `Computed 'display' for outside ::marker, variant ${target.className}`);
}
</script>
