diff --git a/css/css-values/calc-infinity-nan-computed.html b/css/css-values/calc-infinity-nan-computed.html
new file mode 100644
index 00000000000000..7443ddb645c5de
--- /dev/null
+++ b/css/css-values/calc-infinity-nan-computed.html
@@ -0,0 +1,44 @@
+
+
+
+
+Infinity and NaN: calc() computed value.
+
+
+
+
+
+
+
+
+
+
+
diff --git a/css/support/computed-testcommon.js b/css/support/computed-testcommon.js
index 43851cb87fccb7..1db50b0c10702f 100644
--- a/css/support/computed-testcommon.js
+++ b/css/support/computed-testcommon.js
@@ -36,6 +36,23 @@ function test_computed_value(property, specified, computed, titleExtra) {
}, `Property ${property} value '${specified}'${titleExtra ? ' ' + titleExtra : ''}`);
}
+function test_computed_value_greater_or_lower_than(property, specified, expected, titleExtra) {
+ test(() => {
+ const target = document.getElementById('target');
+ assert_true(property in getComputedStyle(target), property + " doesn't seem to be supported in the computed style");
+ assert_true(CSS.supports(property, specified), "'" + specified + "' is a supported value for " + property + ".");
+ target.style[property] = '';
+ target.style[property] = specified;
+ let readValue = parseFloat(getComputedStyle(target)[property]);
+ assert_true(isFinite(readValue), specified + " expected finite value but got " + readValue)
+ assert_false(isNaN(readValue), specified + " expected finite value but got " + readValue)
+ if (expected > 0)
+ assert_greater_than_equal(readValue, expected, specified);
+ else
+ assert_less_than_equal(readValue, expected, specified);
+ }, `Property ${property} value '${specified}'${titleExtra ? ' ' + titleExtra : ''}`);
+}
+
function test_pseudo_computed_value(pseudo, property, specified, computed, titleExtra) {
if (!computed)
computed = specified;