<!DOCTYPE html>
<title>CSS Selectors Test: :placeholder-shown matching</title>
<link rel="help" href="https://drafts.csswg.org/selectors/#placeholder">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<style>
:not(:placeholder-shown) + #t1,
:placeholder-shown + #t2,
:placeholder-shown + #t3,
:placeholder-shown + #t4,
:not(:placeholder-shown) + #t5,
:not(:placeholder-shown) + #t6,
:not(:placeholder-shown) + #t7 {
color: green;
}
</style>
<input type="text"><span id="t1">Should be green</span>
<input type="text" placeholder><span id="t2">Should be green</span>
<input type="text" placeholder=""><span id="t3">Should be green</span>
<input type="text" placeholder="placeholder"><span id="t4">Should be green</span>
<input type="text" placeholder value="value"><span id="t5">Should be green</span>
<input type="text" placeholder="" value="value"><span id="t6">Should be green</span>
<input type="text" placeholder="placeholder" value="value"><span id="t7">Should be green</span>
<script>
const green = "rgb(0, 128, 0)";
test(() => assert_equals(getComputedStyle(t1).color, green,
"No placeholder attribute"));
test(() => assert_equals(getComputedStyle(t2).color, green,
"Placeholder attribute without value"));
test(() => assert_equals(getComputedStyle(t3).color, green,
"Placeholder attribute - empty string"));
test(() => assert_equals(getComputedStyle(t4).color, green,
"Placeholder attribute - non-empty string"));
test(() => assert_equals(getComputedStyle(t5).color, green,
"Placeholder attribute without value - input text"));
test(() => assert_equals(getComputedStyle(t6).color, green,
"Placeholder attribute - empty string - input text"));
test(() => assert_equals(getComputedStyle(t7).color, green,
"Placeholder attribute - non-empty string - input text"));
</script>