blob: 0c1b746d2718aa37bb95c4c8235227975b8407f7 [file] [log] [blame] [edit]
<!DOCTYPE html>
<html>
<head>
<script src="../../http/tests/inspector/resources/inspector-test.js"></script>
<script>
function test()
{
let suite = InspectorTest.createAsyncSuite("CSSManager.overrideUserPreference");
function addTestCase({name, description, propertyName, expectedValue, preferenceName, preferenceValue})
{
suite.addTestCase({
name,
description,
async test() {
let documentNode = await WI.domManager.requestDocument();
let nodeId = await documentNode.querySelector("body");
let domNode = await WI.domManager.nodeForId(nodeId);
let domNodeStyles = WI.cssManager.stylesForNode(domNode);
InspectorTest.log(`Override preference ${preferenceName} to ${preferenceValue}`);
WI.cssManager.overrideUserPreference(preferenceName, preferenceValue);
await WI.cssManager.awaitEvent(WI.CSSManager.Event.OverriddenUserPreferencesDidChange);
await domNodeStyles.refreshIfNeeded();
let cssProperty = domNodeStyles.computedStyle.enabledProperties.find((cssProperty) => cssProperty.name === propertyName);
InspectorTest.assert(cssProperty, `Found CSS property with name '${propertyName}'.`);
InspectorTest.expectEqual(cssProperty.value, expectedValue, `${propertyName} value matches ${expectedValue}`);
InspectorTest.log(`Clear override for ${preferenceName}`);
WI.cssManager.overrideUserPreference(preferenceName);
await WI.cssManager.awaitEvent(WI.CSSManager.Event.OverriddenUserPreferencesDidChange);
},
});
}
addTestCase({
name: "Override PrefersReducedMotion: Reduce",
description: "Check that matched styles respect prefers reduced motion override.",
preferenceName: InspectorBackend.Enum.Page.UserPreferenceName.PrefersReducedMotion,
preferenceValue: InspectorBackend.Enum.Page.UserPreferenceValue.Reduce,
propertyName: "--test-prefers-reduced-motion",
expectedValue: "reduce",
});
addTestCase({
name: "Override PrefersContrast: More",
description: "Check that matched styles respect prefers contrast override.",
preferenceName: InspectorBackend.Enum.Page.UserPreferenceName.PrefersContrast,
preferenceValue: InspectorBackend.Enum.Page.UserPreferenceValue.More,
propertyName: "--test-prefers-contrast",
expectedValue: "more",
});
addTestCase({
name: "PrefersColorScheme.Dark",
description: "Check that matched styles respect color scheme overridden to dark.",
preferenceName: InspectorBackend.Enum.Page.UserPreferenceName.PrefersColorScheme,
preferenceValue: InspectorBackend.Enum.Page.UserPreferenceValue.Dark,
propertyName: "--test-prefers-color-scheme",
expectedValue: "dark",
});
suite.runTestCasesAndFinish();
}
</script>
</head>
<body onload="runTest()">
<p>Tests for matched styles when forcing media features with CSSManager.overrideUserPreference().</p>
<style>
body {
--test-prefers-reduced-motion: no-preference;
--test-prefers-contrast: no-preference;
--test-prefers-color-scheme: light;
}
@media (prefers-reduced-motion) {
body {
--test-prefers-reduced-motion: reduce;
}
}
@media (prefers-contrast) {
body {
--test-prefers-contrast: more;
}
}
@media (prefers-color-scheme: dark) {
body {
--test-prefers-color-scheme: dark;
}
}
</style>
</body>
</html>