wpt / css / css-pseudo / first-line-allowed-properties.html

Status: FAIL | Duration: 91ms | Subtests: 0/112 | Open test on wpt.live | wpt.fyi

Data from commit:
a50cb89 wpt: run reference-named files which are themselves tests (#836) (2026-09-03)

SubtestStatusMessage
retrieve style ruleFAILcannot convert 'null' or 'undefined' to object
backgroundAttachment should be applied to first-line pseudo elements (display:block)FAILcannot convert 'null' or 'undefined' to object
backgroundBlendMode should be applied to first-line pseudo elements (display:block)FAILcannot convert 'null' or 'undefined' to object
backgroundClip should be applied to first-line pseudo elements (display:block)FAILcannot convert 'null' or 'undefined' to object
backgroundColor should be applied to first-line pseudo elements (display:block)FAILcannot convert 'null' or 'undefined' to object
backgroundImage should be applied to first-line pseudo elements (display:block)FAILcannot convert 'null' or 'undefined' to object
backgroundOrigin should be applied to first-line pseudo elements (display:block)FAILcannot convert 'null' or 'undefined' to object
backgroundPosition should be applied to first-line pseudo elements (display:block)FAILcannot convert 'null' or 'undefined' to object
backgroundRepeat should be applied to first-line pseudo elements (display:block)FAILcannot convert 'null' or 'undefined' to object
backgroundSize should be applied to first-line pseudo elements (display:block)FAILcannot convert 'null' or 'undefined' to object
color should be applied to first-line pseudo elements (display:block)FAILcannot convert 'null' or 'undefined' to object
fontFamily should be applied to first-line pseudo elements (display:block)FAILcannot convert 'null' or 'undefined' to object
fontFeatureSettings should be applied to first-line pseudo elements (display:block)FAILcannot convert 'null' or 'undefined' to object
fontKerning should be applied to first-line pseudo elements (display:block)FAILcannot convert 'null' or 'undefined' to object
fontSize should be applied to first-line pseudo elements (display:block)FAILcannot convert 'null' or 'undefined' to object
fontSizeAdjust should be applied to first-line pseudo elements (display:block)FAILcannot convert 'null' or 'undefined' to object
fontStyle should be applied to first-line pseudo elements (display:block)FAILcannot convert 'null' or 'undefined' to object
fontVariant should be applied to first-line pseudo elements (display:block)FAILcannot convert 'null' or 'undefined' to object
fontWeight should be applied to first-line pseudo elements (display:block)FAILcannot convert 'null' or 'undefined' to object
fontVariationSettings should be applied to first-line pseudo elements (display:block)FAILcannot convert 'null' or 'undefined' to object
letterSpacing should be applied to first-line pseudo elements (display:block)FAILcannot convert 'null' or 'undefined' to object
opacity should be applied to first-line pseudo elements (display:block)FAILcannot convert 'null' or 'undefined' to object
textDecoration should be applied to first-line pseudo elements (display:block)FAILcannot convert 'null' or 'undefined' to object
textJustify should be applied to first-line pseudo elements (display:block)FAILcannot convert 'null' or 'undefined' to object
textShadow should be applied to first-line pseudo elements (display:block)FAILcannot convert 'null' or 'undefined' to object
textTransform should be applied to first-line pseudo elements (display:block)FAILcannot convert 'null' or 'undefined' to object
textUnderlinePosition should be applied to first-line pseudo elements (display:block)FAILcannot convert 'null' or 'undefined' to object
verticalAlign should be applied to first-line pseudo elements (display:block)FAILcannot convert 'null' or 'undefined' to object
wordSpacing should be applied to first-line pseudo elements (display:block)FAILcannot convert 'null' or 'undefined' to object
border should not be applied to first-line pseudo elements (display:block)FAILcannot convert 'null' or 'undefined' to object
borderImage should not be applied to first-line pseudo elements (display:block)FAILcannot convert 'null' or 'undefined' to object
borderRadius should not be applied to first-line pseudo elements (display:block)FAILcannot convert 'null' or 'undefined' to object
margin should not be applied to first-line pseudo elements (display:block)FAILcannot convert 'null' or 'undefined' to object
padding should not be applied to first-line pseudo elements (display:block)FAILcannot convert 'null' or 'undefined' to object
position should not be applied to first-line pseudo elements (display:block)FAILcannot convert 'null' or 'undefined' to object
transition should not be applied to first-line pseudo elements (display:block)FAILcannot convert 'null' or 'undefined' to object
transform should not be applied to first-line pseudo elements (display:block)FAILcannot convert 'null' or 'undefined' to object
wordBreak should not be applied to first-line pseudo elements (display:block)FAILcannot convert 'null' or 'undefined' to object
backgroundAttachment should be applied to first-line pseudo elements (display:inline)FAILcannot convert 'null' or 'undefined' to object
backgroundBlendMode should be applied to first-line pseudo elements (display:inline)FAILcannot convert 'null' or 'undefined' to object
backgroundClip should be applied to first-line pseudo elements (display:inline)FAILcannot convert 'null' or 'undefined' to object
backgroundColor should be applied to first-line pseudo elements (display:inline)FAILcannot convert 'null' or 'undefined' to object
backgroundImage should be applied to first-line pseudo elements (display:inline)FAILcannot convert 'null' or 'undefined' to object
backgroundOrigin should be applied to first-line pseudo elements (display:inline)FAILcannot convert 'null' or 'undefined' to object
backgroundPosition should be applied to first-line pseudo elements (display:inline)FAILcannot convert 'null' or 'undefined' to object
backgroundRepeat should be applied to first-line pseudo elements (display:inline)FAILcannot convert 'null' or 'undefined' to object
backgroundSize should be applied to first-line pseudo elements (display:inline)FAILcannot convert 'null' or 'undefined' to object
color should be applied to first-line pseudo elements (display:inline)FAILcannot convert 'null' or 'undefined' to object
fontFamily should be applied to first-line pseudo elements (display:inline)FAILcannot convert 'null' or 'undefined' to object
fontFeatureSettings should be applied to first-line pseudo elements (display:inline)FAILcannot convert 'null' or 'undefined' to object
fontKerning should be applied to first-line pseudo elements (display:inline)FAILcannot convert 'null' or 'undefined' to object
fontSize should be applied to first-line pseudo elements (display:inline)FAILcannot convert 'null' or 'undefined' to object
fontSizeAdjust should be applied to first-line pseudo elements (display:inline)FAILcannot convert 'null' or 'undefined' to object
fontStyle should be applied to first-line pseudo elements (display:inline)FAILcannot convert 'null' or 'undefined' to object
fontVariant should be applied to first-line pseudo elements (display:inline)FAILcannot convert 'null' or 'undefined' to object
fontWeight should be applied to first-line pseudo elements (display:inline)FAILcannot convert 'null' or 'undefined' to object
fontVariationSettings should be applied to first-line pseudo elements (display:inline)FAILcannot convert 'null' or 'undefined' to object
letterSpacing should be applied to first-line pseudo elements (display:inline)FAILcannot convert 'null' or 'undefined' to object
opacity should be applied to first-line pseudo elements (display:inline)FAILcannot convert 'null' or 'undefined' to object
textDecoration should be applied to first-line pseudo elements (display:inline)FAILcannot convert 'null' or 'undefined' to object
textJustify should be applied to first-line pseudo elements (display:inline)FAILcannot convert 'null' or 'undefined' to object
textShadow should be applied to first-line pseudo elements (display:inline)FAILcannot convert 'null' or 'undefined' to object
textTransform should be applied to first-line pseudo elements (display:inline)FAILcannot convert 'null' or 'undefined' to object
textUnderlinePosition should be applied to first-line pseudo elements (display:inline)FAILcannot convert 'null' or 'undefined' to object
verticalAlign should be applied to first-line pseudo elements (display:inline)FAILcannot convert 'null' or 'undefined' to object
wordSpacing should be applied to first-line pseudo elements (display:inline)FAILcannot convert 'null' or 'undefined' to object
border should not be applied to first-line pseudo elements (display:inline)FAILcannot convert 'null' or 'undefined' to object
borderImage should not be applied to first-line pseudo elements (display:inline)FAILcannot convert 'null' or 'undefined' to object
borderRadius should not be applied to first-line pseudo elements (display:inline)FAILcannot convert 'null' or 'undefined' to object
margin should not be applied to first-line pseudo elements (display:inline)FAILcannot convert 'null' or 'undefined' to object
padding should not be applied to first-line pseudo elements (display:inline)FAILcannot convert 'null' or 'undefined' to object
position should not be applied to first-line pseudo elements (display:inline)FAILcannot convert 'null' or 'undefined' to object
transition should not be applied to first-line pseudo elements (display:inline)FAILcannot convert 'null' or 'undefined' to object
transform should not be applied to first-line pseudo elements (display:inline)FAILcannot convert 'null' or 'undefined' to object
wordBreak should not be applied to first-line pseudo elements (display:inline)FAILcannot convert 'null' or 'undefined' to object
backgroundAttachment should be applied to first-line pseudo elements (display:flex)FAILcannot convert 'null' or 'undefined' to object
backgroundBlendMode should be applied to first-line pseudo elements (display:flex)FAILcannot convert 'null' or 'undefined' to object
backgroundClip should be applied to first-line pseudo elements (display:flex)FAILcannot convert 'null' or 'undefined' to object
backgroundColor should be applied to first-line pseudo elements (display:flex)FAILcannot convert 'null' or 'undefined' to object
backgroundImage should be applied to first-line pseudo elements (display:flex)FAILcannot convert 'null' or 'undefined' to object
backgroundOrigin should be applied to first-line pseudo elements (display:flex)FAILcannot convert 'null' or 'undefined' to object
backgroundPosition should be applied to first-line pseudo elements (display:flex)FAILcannot convert 'null' or 'undefined' to object
backgroundRepeat should be applied to first-line pseudo elements (display:flex)FAILcannot convert 'null' or 'undefined' to object
backgroundSize should be applied to first-line pseudo elements (display:flex)FAILcannot convert 'null' or 'undefined' to object
color should be applied to first-line pseudo elements (display:flex)FAILcannot convert 'null' or 'undefined' to object
fontFamily should be applied to first-line pseudo elements (display:flex)FAILcannot convert 'null' or 'undefined' to object
fontFeatureSettings should be applied to first-line pseudo elements (display:flex)FAILcannot convert 'null' or 'undefined' to object
fontKerning should be applied to first-line pseudo elements (display:flex)FAILcannot convert 'null' or 'undefined' to object
fontSize should be applied to first-line pseudo elements (display:flex)FAILcannot convert 'null' or 'undefined' to object
fontSizeAdjust should be applied to first-line pseudo elements (display:flex)FAILcannot convert 'null' or 'undefined' to object
fontStyle should be applied to first-line pseudo elements (display:flex)FAILcannot convert 'null' or 'undefined' to object
fontVariant should be applied to first-line pseudo elements (display:flex)FAILcannot convert 'null' or 'undefined' to object
fontWeight should be applied to first-line pseudo elements (display:flex)FAILcannot convert 'null' or 'undefined' to object
fontVariationSettings should be applied to first-line pseudo elements (display:flex)FAILcannot convert 'null' or 'undefined' to object
letterSpacing should be applied to first-line pseudo elements (display:flex)FAILcannot convert 'null' or 'undefined' to object
opacity should be applied to first-line pseudo elements (display:flex)FAILcannot convert 'null' or 'undefined' to object
textDecoration should be applied to first-line pseudo elements (display:flex)FAILcannot convert 'null' or 'undefined' to object
textJustify should be applied to first-line pseudo elements (display:flex)FAILcannot convert 'null' or 'undefined' to object
textShadow should be applied to first-line pseudo elements (display:flex)FAILcannot convert 'null' or 'undefined' to object
textTransform should be applied to first-line pseudo elements (display:flex)FAILcannot convert 'null' or 'undefined' to object
textUnderlinePosition should be applied to first-line pseudo elements (display:flex)FAILcannot convert 'null' or 'undefined' to object
verticalAlign should be applied to first-line pseudo elements (display:flex)FAILcannot convert 'null' or 'undefined' to object
wordSpacing should be applied to first-line pseudo elements (display:flex)FAILcannot convert 'null' or 'undefined' to object
border should not be applied to first-line pseudo elements (display:flex)FAILcannot convert 'null' or 'undefined' to object
borderImage should not be applied to first-line pseudo elements (display:flex)FAILcannot convert 'null' or 'undefined' to object
borderRadius should not be applied to first-line pseudo elements (display:flex)FAILcannot convert 'null' or 'undefined' to object
margin should not be applied to first-line pseudo elements (display:flex)FAILcannot convert 'null' or 'undefined' to object
padding should not be applied to first-line pseudo elements (display:flex)FAILcannot convert 'null' or 'undefined' to object
position should not be applied to first-line pseudo elements (display:flex)FAILcannot convert 'null' or 'undefined' to object
transition should not be applied to first-line pseudo elements (display:flex)FAILcannot convert 'null' or 'undefined' to object
transform should not be applied to first-line pseudo elements (display:flex)FAILcannot convert 'null' or 'undefined' to object
wordBreak should not be applied to first-line pseudo elements (display:flex)FAILcannot convert 'null' or 'undefined' to object

/css/css-pseudo/first-line-allowed-properties.html

<!DOCTYPE html>
<title>CSS Test: Properties allowed on ::first-line pseudo elements</title>
<link rel="help" href="https://drafts.csswg.org/css-pseudo-4/#first-line-styling">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<style>
  #target::first-line {}
  #target { visibility: hidden; }
</style>
<div id="target">text</div>
<script>
  let style;
  const target = document.querySelector("#target");
  const defaultComputedStyle = getComputedStyle(target);

  test(() => {
    var styleRule = document.styleSheets[0].cssRules[0];
    assert_equals(styleRule.selectorText, "#target::first-line", "make sure we have the correct style rule");
    style = styleRule.style;
  }, "retrieve style rule");

  const validProperties = {
    backgroundAttachment: "fixed",
    backgroundBlendMode: "hue",
    backgroundClip: "padding-box",
    backgroundColor: "rgb(10, 20, 30)",
    backgroundImage: "linear-gradient(rgb(0, 0, 0), rgb(255, 255, 255))",
    backgroundOrigin: "border-box",
    backgroundPosition: "50% 50%",
    backgroundRepeat: "no-repeat",
    backgroundSize: "10px 20px",
    color: "rgba(10, 20, 30, 0.4)",
    fontFamily: "sans-serif",
    fontFeatureSettings: '"vert" 2',
    fontKerning: "none",
    fontSize: "30px",
    fontSizeAdjust: "0.5",
    fontStyle: "italic",
    fontVariant: "small-caps",
    fontWeight: "900",
    fontVariationSettings: '"XHGT" 0.7',
    letterSpacing: "12px",
    opacity: "0.5",
    textDecoration: "overline wavy rgb(10, 20, 30)",
    textJustify: "none",
    textShadow: "rgb(10, 20, 30) 10px 20px 30px",
    textTransform: "capitalize",
    textUnderlinePosition: "under",
    verticalAlign: "12%",
    wordSpacing: "12px"
  };

  // The css-pseudo-4 specification says only certain properties _apply_,
  // which is different from computed values, but browsers implement this
  // interoperably. Also, the inheritance section saying properties not in
  // the list that apply to ::first-line are inherited from the non-pseudo
  // parent instead, is also an indication this is the intent of the spec.
  //
  // Similarly, there was a resolution for highlight pseudos along the same
  // lines:
  // https://github.com/w3c/csswg-drafts/issues/7591
  const invalidProperties = {
    border: "40px dotted rgb(10, 20, 30)",
    borderImage: "linear-gradient(rgb(0, 0, 0), rgb(255, 255, 255)) 10% / 20 / 30px repeat",
    borderRadius: "10px 20px",
    margin: "10px 20px 30px 40px",
    padding: "10px 20px 30px 40px",
    position: "absolute",
    transition: "transform 1s",
    transform: "rotate(45deg)",
    wordBreak: "break-all"
  };

  function testFirstLineProperty(property, rule, expected, reason) {
    test(function() {
      style[property] = "";
      style[property] = rule;
      assert_equals(getComputedStyle(target, "::first-line")[property], expected);
      style[property] = "";
    }, reason);
  }

  for (let property in validProperties) {
    testFirstLineProperty(property, validProperties[property], validProperties[property],
                          property + " should be applied to first-line pseudo elements (display:block)");
  }

  for (let property in invalidProperties) {
    testFirstLineProperty(property, invalidProperties[property], defaultComputedStyle[property],
                          property + " should not be applied to first-line pseudo elements (display:block)");
  }

  target.style.display = "inline";

  for (let property in validProperties) {
    testFirstLineProperty(property, validProperties[property], validProperties[property],
                          property + " should be applied to first-line pseudo elements (display:inline)");
  }

  for (let property in invalidProperties) {
    testFirstLineProperty(property, invalidProperties[property], defaultComputedStyle[property],
                          property + " should not be applied to first-line pseudo elements (display:inline)");
  }

  target.style.display = "flex";

  for (let property in validProperties) {
    testFirstLineProperty(property, validProperties[property], validProperties[property],
                          property + " should be applied to first-line pseudo elements (display:flex)");
  }

  for (let property in invalidProperties) {
    testFirstLineProperty(property, invalidProperties[property], defaultComputedStyle[property],
                          property + " should not be applied to first-line pseudo elements (display:flex)");
  }
</script>