-
Notifications
You must be signed in to change notification settings - Fork 3.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[selectors] Add tests related to script focus and :focus-visible
- Loading branch information
Showing
19 changed files
with
1,239 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
<!DOCTYPE html> | ||
<meta charset="utf-8" /> | ||
<title>CSS Test (Selectors): Script focus without any previous user interaction matches :focus-visible</title> | ||
<link rel="author" title="Manuel Rego Casasnovas" href="mailto:[email protected]"> | ||
<link rel="help" href="https://drafts.csswg.org/selectors-4/#the-focus-visible-pseudo" /> | ||
<script src="/resources/testharness.js"></script> | ||
<script src="/resources/testharnessreport.js"></script> | ||
<script src="/css/support/parsing-testcommon.js"></script> | ||
<style> | ||
#warning { | ||
display: none; | ||
background: red; | ||
} | ||
|
||
@supports not (selector(:focus-visible)) { | ||
#instructions { | ||
display: none; | ||
} | ||
|
||
#warning { | ||
display: block; | ||
} | ||
} | ||
|
||
:focus-visible { | ||
outline: solid thick green; | ||
} | ||
|
||
:focus:not(:focus-visible) { | ||
background-color: red; | ||
} | ||
</style> | ||
|
||
<p>This test checks that a script focus when the user hasn't interacted with the page yet, always matches <code>:focus-visible</code>.</p> | ||
<ol id="instructions"> | ||
<li>If the element that says "Focused" has a red background then the test result is FAILURE, if it has a green outline then the test result is SUCCESS.</li> | ||
</ol> | ||
<p id="warning">Your user-agent does not support <code>:focus-visible</code> pseudo-class, please SKIP this test.</p> | ||
|
||
<div id="target" tabindex="0">Focused</div> | ||
|
||
<script> | ||
// Check that :focus-visible is supported. | ||
test_valid_selector(':focus-visible'); | ||
|
||
async_test(function(t) { | ||
target.addEventListener("focus", t.step_func_done(function() { | ||
assert_equals(getComputedStyle(target).outlineColor, "rgb(0, 128, 0)", `outlineColor for ${target.tagName}#${target.id} should be green`); | ||
assert_not_equals(getComputedStyle(target).backgroundColor, "rgb(255, 0, 0)", `backgroundColor for ${target.tagName}#${target.id} should NOT be red`); | ||
})); | ||
}, "Script focus without any previous user interaction matches :focus-visible"); | ||
|
||
target.focus(); | ||
</script> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
<!DOCTYPE html> | ||
<meta charset="utf-8" /> | ||
<title>CSS Test (Selectors): Script focus after mouse click does NOT match :focus-visible</title> | ||
<link rel="author" title="Manuel Rego Casasnovas" href="mailto:[email protected]"> | ||
<link rel="help" href="https://drafts.csswg.org/selectors-4/#the-focus-visible-pseudo" /> | ||
<script src="/resources/testharness.js"></script> | ||
<script src="/resources/testharnessreport.js"></script> | ||
<script src="/resources/testdriver.js"></script> | ||
<script src="/resources/testdriver-vendor.js"></script> | ||
<script src="/css/support/parsing-testcommon.js"></script> | ||
<style> | ||
#warning { | ||
display: none; | ||
background: red; | ||
} | ||
|
||
@supports not (selector(:focus-visible)) { | ||
#instructions { | ||
display: none; | ||
} | ||
|
||
#warning { | ||
display: block; | ||
} | ||
} | ||
|
||
:focus-visible { | ||
outline: solid thick red; | ||
} | ||
|
||
:focus:not(:focus-visible) { | ||
background-color: lime; | ||
} | ||
</style> | ||
|
||
<p>This test checks that a script focus after a mouse click does NOT match <code>:focus-visible</code>.</p> | ||
<ol id="instructions"> | ||
<li>Click in some part of the page other than the element that says "Focused".</li> | ||
<li>If the element that says "Focused" has a red outline then the test result is FAILURE, if it has a green background then the test result is SUCCESS.</li> | ||
</ol> | ||
<p id="warning">Your user-agent does not support <code>:focus-visible</code> pseudo-class, please SKIP this test.</p> | ||
|
||
<div id="target" tabindex="0">Focused</div> | ||
|
||
<script> | ||
setup({ explicit_done: true }); | ||
|
||
// Check that :focus-visible is supported. | ||
test_valid_selector(':focus-visible'); | ||
|
||
document.addEventListener("click", () => { | ||
target.focus(); | ||
}); | ||
|
||
async_test(function(t) { | ||
target.addEventListener("focus", t.step_func_done(function() { | ||
assert_equals(getComputedStyle(target).backgroundColor, "rgb(0, 255, 0)", `backgroundColor for ${target.tagName}#${target.id} should be lime`); | ||
assert_not_equals(getComputedStyle(target).outlineColor, "rgb(255, 0, 0)", `outlineColor for ${target.tagName}#${target.id} should NOT be red`); | ||
})); | ||
|
||
test_driver.click(document.body).then(() => done()); | ||
}, "Script focus after mouse click does NOT match :focus-visible"); | ||
</script> | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
<!DOCTYPE html> | ||
<meta charset="utf-8" /> | ||
<title>CSS Test (Selectors): Script focus after blur after mouse click does NOT match :focus-visible</title> | ||
<link rel="author" title="Manuel Rego Casasnovas" href="mailto:[email protected]"> | ||
<link rel="help" href="https://drafts.csswg.org/selectors-4/#the-focus-visible-pseudo" /> | ||
<script src="/resources/testharness.js"></script> | ||
<script src="/resources/testharnessreport.js"></script> | ||
<script src="/resources/testdriver.js"></script> | ||
<script src="/resources/testdriver-vendor.js"></script> | ||
<script src="/css/support/parsing-testcommon.js"></script> | ||
<style> | ||
#warning { | ||
display: none; | ||
background: red; | ||
} | ||
|
||
@supports not (selector(:focus-visible)) { | ||
#instructions { | ||
display: none; | ||
} | ||
|
||
#warning { | ||
display: block; | ||
} | ||
} | ||
|
||
:focus-visible { | ||
outline: solid thick red; | ||
} | ||
|
||
:focus:not(:focus-visible) { | ||
background-color: lime; | ||
} | ||
</style> | ||
|
||
<p>This test checks that a script focus after blur after a mouse click does NOT match <code>:focus-visible</code>.</p> | ||
<ol id="instructions"> | ||
<li>Click in some part of the page other than the element that says "Focused".</li> | ||
<li>If the element that says "Focused" has a red outline then the test result is FAILURE, if it has a green background then the test result is SUCCESS.</li> | ||
</ol> | ||
<p id="warning">Your user-agent does not support <code>:focus-visible</code> pseudo-class, please SKIP this test.</p> | ||
|
||
<div id="target" tabindex="0">Focused</div> | ||
|
||
<script> | ||
setup({ explicit_done: true }); | ||
|
||
// Check that :focus-visible is supported. | ||
test_valid_selector(':focus-visible'); | ||
|
||
document.addEventListener("click", () => { | ||
document.activeElement.blur(); | ||
target.focus(); | ||
}); | ||
|
||
async_test(function(t) { | ||
target.addEventListener("focus", t.step_func_done(function() { | ||
assert_equals(getComputedStyle(target).backgroundColor, "rgb(0, 255, 0)", `backgroundColor for ${target.tagName}#${target.id} should be lime`); | ||
assert_not_equals(getComputedStyle(target).outlineColor, "rgb(255, 0, 0)", `outlineColor for ${target.tagName}#${target.id} should NOT be red`); | ||
})); | ||
|
||
test_driver.click(document.body).then(() => done()); | ||
}, "Script focus after blur after mouse click does NOT match :focus-visible"); | ||
</script> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,62 @@ | ||
<!DOCTYPE html> | ||
<meta charset="utf-8" /> | ||
<title>CSS Test (Selectors): Script focus after keyboard input does NOT match :focus-visible</title> | ||
<link rel="author" title="Manuel Rego Casasnovas" href="mailto:[email protected]"> | ||
<link rel="help" href="https://drafts.csswg.org/selectors-4/#the-focus-visible-pseudo" /> | ||
<script src="/resources/testharness.js"></script> | ||
<script src="/resources/testharnessreport.js"></script> | ||
<script src="/resources/testdriver.js"></script> | ||
<script src="/resources/testdriver-vendor.js"></script> | ||
<script src="/css/support/parsing-testcommon.js"></script> | ||
<style> | ||
#warning { | ||
display: none; | ||
background: red; | ||
} | ||
|
||
@supports not (selector(:focus-visible)) { | ||
#instructions { | ||
display: none; | ||
} | ||
|
||
#warning { | ||
display: block; | ||
} | ||
} | ||
|
||
:focus-visible { | ||
outline: solid thick red; | ||
} | ||
|
||
:focus:not(:focus-visible) { | ||
background-color: lime; | ||
} | ||
</style> | ||
|
||
<p>This test checks that a script focus after a keyboard input does NOT match <code>:focus-visible</code>.</p> | ||
<ol id="instructions"> | ||
<li>Type some letter with the keyboard without having done anything before.</li> | ||
<li>If the element that says "Focused" has a red outline then the test result is FAILURE, if it has a green background then the test result is SUCCESS.</li> | ||
</ol> | ||
<p id="warning">Your user-agent does not support <code>:focus-visible</code> pseudo-class, please SKIP this test.</p> | ||
|
||
<div id="target" tabindex="0">Focused</div> | ||
|
||
<script> | ||
// Check that :focus-visible is supported. | ||
test_valid_selector(':focus-visible'); | ||
|
||
document.addEventListener("keypress", () => { | ||
target.focus(); | ||
}); | ||
|
||
async_test(function(t) { | ||
target.addEventListener("focus", t.step_func_done(function() { | ||
assert_equals(getComputedStyle(target).backgroundColor, "rgb(0, 255, 0)", `backgroundColor for ${target.tagName}#${target.id} should be lime`); | ||
assert_not_equals(getComputedStyle(target).outlineColor, "rgb(255, 0, 0)", `outlineColor for ${target.tagName}#${target.id} should NOT be red`); | ||
})); | ||
|
||
test_driver.send_keys(document.body, "a"); | ||
}, "Script focus after keyboard event does NOT match :focus-visible"); | ||
</script> | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,63 @@ | ||
<!DOCTYPE html> | ||
<meta charset="utf-8" /> | ||
<title>CSS Test (Selectors): Script focus after blur after keyboard input does NOT match :focus-visible</title> | ||
<link rel="author" title="Manuel Rego Casasnovas" href="mailto:[email protected]"> | ||
<link rel="help" href="https://drafts.csswg.org/selectors-4/#the-focus-visible-pseudo" /> | ||
<script src="/resources/testharness.js"></script> | ||
<script src="/resources/testharnessreport.js"></script> | ||
<script src="/resources/testdriver.js"></script> | ||
<script src="/resources/testdriver-vendor.js"></script> | ||
<script src="/css/support/parsing-testcommon.js"></script> | ||
<style> | ||
#warning { | ||
display: none; | ||
background: red; | ||
} | ||
|
||
@supports not (selector(:focus-visible)) { | ||
#instructions { | ||
display: none; | ||
} | ||
|
||
#warning { | ||
display: block; | ||
} | ||
} | ||
|
||
:focus-visible { | ||
outline: solid thick red; | ||
} | ||
|
||
:focus:not(:focus-visible) { | ||
background-color: lime; | ||
} | ||
</style> | ||
|
||
<p>This test checks that a script focus after blur after a keyboard input does NOT match <code>:focus-visible</code>.</p> | ||
<ol id="instructions"> | ||
<li>Type some letter with the keyboard without having done anything before.</li> | ||
<li>If the element that says "Focused" has a red outline then the test result is FAILURE, if it has a green background then the test result is SUCCESS.</li> | ||
</ol> | ||
<p id="warning">Your user-agent does not support <code>:focus-visible</code> pseudo-class, please SKIP this test.</p> | ||
|
||
<div id="target" tabindex="0">Focused</div> | ||
|
||
<script> | ||
// Check that :focus-visible is supported. | ||
test_valid_selector(':focus-visible'); | ||
|
||
document.addEventListener("keypress", () => { | ||
document.activeElement.blur(); | ||
target.focus(); | ||
}); | ||
|
||
async_test(function(t) { | ||
target.addEventListener("focus", t.step_func_done(function() { | ||
assert_equals(getComputedStyle(target).backgroundColor, "rgb(0, 255, 0)", `backgroundColor for ${target.tagName}#${target.id} should be lime`); | ||
assert_not_equals(getComputedStyle(target).outlineColor, "rgb(255, 0, 0)", `outlineColor for ${target.tagName}#${target.id} should NOT be red`); | ||
})); | ||
|
||
test_driver.send_keys(document.body, "a"); | ||
}, "Script focus after blur after keyboard event does NOT match :focus-visible"); | ||
</script> | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,65 @@ | ||
<!DOCTYPE html> | ||
<meta charset="utf-8" /> | ||
<title>CSS Test (Selectors): Script focus after mouse click on a NOT focusable element does NOT match :focus-visible</title> | ||
<link rel="author" title="Manuel Rego Casasnovas" href="mailto:[email protected]"> | ||
<link rel="help" href="https://drafts.csswg.org/selectors-4/#the-focus-visible-pseudo" /> | ||
<script src="/resources/testharness.js"></script> | ||
<script src="/resources/testharnessreport.js"></script> | ||
<script src="/resources/testdriver.js"></script> | ||
<script src="/resources/testdriver-vendor.js"></script> | ||
<script src="/css/support/parsing-testcommon.js"></script> | ||
<style> | ||
#warning { | ||
display: none; | ||
background: red; | ||
} | ||
|
||
@supports not (selector(:focus-visible)) { | ||
#instructions { | ||
display: none; | ||
} | ||
|
||
#warning { | ||
display: block; | ||
} | ||
} | ||
|
||
:focus-visible { | ||
outline: solid thick red; | ||
} | ||
|
||
:focus:not(:focus-visible) { | ||
background-color: lime; | ||
} | ||
</style> | ||
|
||
<p>This test checks that a script focus after a mouse click on a NOT focusable element does NOT match <code>:focus-visible</code>.</p> | ||
<ol id="instructions"> | ||
<li>Click on the element that says "Click me".</li> | ||
<li>If the element that says "Focused" has a red outline then the test result is FAILURE, if it has a green background then the test result is SUCCESS.</li> | ||
</ol> | ||
<p id="warning">Your user-agent does not support <code>:focus-visible</code> pseudo-class, please SKIP this test.</p> | ||
|
||
<div id="initial">Click me</div> | ||
<div id="target" tabindex="0">Focused</div> | ||
|
||
<script> | ||
setup({ explicit_done: true }); | ||
|
||
// Check that :focus-visible is supported. | ||
test_valid_selector(':focus-visible'); | ||
|
||
initial.addEventListener("click", () => { | ||
target.focus(); | ||
}); | ||
|
||
async_test(function(t) { | ||
target.addEventListener("focus", t.step_func_done(function() { | ||
assert_equals(getComputedStyle(target).backgroundColor, "rgb(0, 255, 0)", `backgroundColor for ${target.tagName}#${target.id} should be lime`); | ||
assert_not_equals(getComputedStyle(target).outlineColor, "rgb(255, 0, 0)", `outlineColor for ${target.tagName}#${target.id} should NOT be red`); | ||
})); | ||
|
||
test_driver.click(initial).then(() => done()); | ||
}, "Script focus after mouse click on a NOT focusable element does NOT match :focus-visible"); | ||
</script> | ||
|
Oops, something went wrong.