Commit 981a543f authored by Becca Hughes's avatar Becca Hughes Committed by Commit Bot

[CSS Env Vars] Add some WPT tests

Adds some WPT tests to test env() with @supports as well
as fallback values.

BUG=825890

Change-Id: I071f5c2582f8056fe39b4a50ab62140d579c577d
Reviewed-on: https://chromium-review.googlesource.com/1111023Reviewed-by: default avatarRune Lillesveen <futhark@chromium.org>
Reviewed-by: default avatarMounir Lamouri <mlamouri@chromium.org>
Commit-Queue: Becca Hughes <beccahughes@chromium.org>
Cr-Commit-Position: refs/heads/master@{#569852}
parent eeed0e85
<!DOCTYPE html>
<html>
<head>
<link rel="help" href="https://drafts.csswg.org/css-env-1/">
<title>Test that CSS env vars work with @support</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<style>
@supports (background-color: env(test)) {
body { background-color: rgb(0, 128, 0); }
}
</style>
</head>
<body>
<script>
test(() => {
const style = window.getComputedStyle(document.body);
assert_equals(style.getPropertyValue("background-color"), "rgb(0, 128, 0)");
});
</script>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<link rel="help" href="https://drafts.csswg.org/css-env-1/">
<title>Test env() will work in custom properties</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<style>
body {
--my-width: env(test, 100px);
width: var(--my-width);
}
</style>
</head>
<body>
<script>
test(() => {
const style = window.getComputedStyle(document.body);
assert_equals(style.getPropertyValue("width"), "100px");
});
</script>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<link rel="help" href="https://drafts.csswg.org/css-env-1/">
<title>Test that nested var() fallback values work with CSS env vars</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<style>
body {
--main-bg-color: rgb(0, 128, 0);
background-color: env(test, var(--main-bg-color));
}
</style>
</head>
<body>
<script>
test(() => {
const style = window.getComputedStyle(document.body);
assert_equals(style.getPropertyValue("background-color"), "rgb(0, 128, 0)");
});
</script>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<link rel="help" href="https://drafts.csswg.org/css-env-1/">
<title>Test style seralization round tripping with CSS env vars</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
</head>
<body>
<script>
test(() => {
document.body.style.top = "env(test)";
assert_equals(document.body.style.getPropertyValue("top"), "env(test)");
document.body.style.setProperty("top", "env()");
assert_equals(document.body.style.getPropertyValue("top"), "env(test)");
});
</script>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<link rel="help" href="https://drafts.csswg.org/css-env-1/">
<title>Test that CSS env vars work with CSS.supports</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
</head>
<body>
<script>
test(() => {
assert_true(CSS.supports("background: env(test)"));
assert_true(CSS.supports("background", "env(test)"));
assert_false(CSS.supports("background", "env()"));
assert_false(CSS.supports("background", "env(test,)"));
});
</script>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<link rel="help" href="https://drafts.csswg.org/css-env-1/">
<title>Test env() syntax</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<style>
div { background-color: rgb(0, 128, 0); }
</style>
</head>
<body>
<script>
// This value is expected if the syntax is valid.
const envWorkingValue = "rgba(0, 0, 0, 0)";
// This value is expected if the syntax is invalid.
const pageDefaultValue = "rgb(0, 128, 0)";
// This value is used to test fallback values.
const blueValue = "rgb(0, 0, 255)";
const testCases = [
{ style: "", expectedPropertyValue: pageDefaultValue },
{ style: "background-color: env(test)", expectedPropertyValue: envWorkingValue },
{ style: "background-color: ENV(test)", expectedPropertyValue: envWorkingValue },
{ style: "background-color: env(test) !important", expectedPropertyValue: envWorkingValue },
{ style: "background-color: env(test, 10px)", expectedPropertyValue: envWorkingValue },
{ style: "background-color: env(test, blue)", expectedPropertyValue: blueValue },
{ style: "background-color: env(test, env(another))", expectedPropertyValue: envWorkingValue },
{ style: "background-color: env(test, env(another, blue))", expectedPropertyValue: blueValue },
{ style: "background-color: env(-test)", expectedPropertyValue: envWorkingValue },
{ style: "background-color: env(--test)", expectedPropertyValue: envWorkingValue },
{ style: "background-color: env(10px)", expectedPropertyValue: pageDefaultValue },
{ style: "background-color: env(env(test))", expectedPropertyValue: pageDefaultValue },
{ style: "background-color: env( test)", expectedPropertyValue: envWorkingValue },
{ style: "background-color: env(test )", expectedPropertyValue: envWorkingValue },
{ style: "background-color: env( test )", expectedPropertyValue: envWorkingValue },
{ style: "background-color: env(test /**/, blue)", expectedPropertyValue: blueValue },
{ style: "background-color: env(test, {})", expectedPropertyValue: envWorkingValue },
{ style: "background-color: env(test, {)", expectedPropertyValue: pageDefaultValue },
];
testCases.forEach((testcase) => {
test(() => {
const elem = document.createElement("div");
const style = window.getComputedStyle(elem);
document.body.appendChild(elem);
elem.style.cssText = testcase.style;
assert_equals(style.getPropertyValue("background-color"), testcase.expectedPropertyValue);
}, testcase.style + " " + testcase.expectedPropertyValue);
});
</script>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<link rel="help" href="https://drafts.csswg.org/css-env-1/">
<title>Test unknown env() names will override previous values</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
</head>
<body style="background-color: green; background-color: env(unknown);">
<script>
test(() => {
const style = window.getComputedStyle(document.body);
assert_equals(style.getPropertyValue("background-color"), "rgba(0, 0, 0, 0)");
});
</script>
</body>
</html>
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment