Bug 1452967 [wpt PR 10365] - [css-typed-om] Add support for fill & stroke properties., a=testonly
authorDarren Shen <shend@chromium.org>
Thu, 19 Apr 2018 13:43:53 +0000
changeset 468405 062a73352e12dec4b69140bcbf1e174fd6f74931
parent 468404 7ff5a534bfc627f53198db6b5d882beb3eb80926
child 468406 5c94ad2ad926e8dbf472c760533edb58ca9cb9cc
push id9165
push userasasaki@mozilla.com
push dateThu, 26 Apr 2018 21:04:54 +0000
treeherdermozilla-beta@064c3804de2e [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewerstestonly
bugs1452967, 10365, 820299, 998454, 549499
milestone61.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1452967 [wpt PR 10365] - [css-typed-om] Add support for fill & stroke properties., a=testonly Automatic update from web-platform-tests[css-typed-om] Add support for fill & stroke properties. Some failures: - fill & stroke shorthands do not seem to follow spec (it should be list valued) - fill-opacity & stroke-opacity do not clamp their values (ComputedStyle should clamp values, like opacity). - fill-color is not implemented. Bug: 820299 Change-Id: I0879e353cd22291aa8a34f2a10895809b43d8aa5 Reviewed-on: https://chromium-review.googlesource.com/998454 Reviewed-by: nainar <nainar@chromium.org> Commit-Queue: Darren Shen <shend@chromium.org> Cr-Commit-Position: refs/heads/master@{#549499} -- wpt-commits: d577e28a3e8db5d31b0e35ab3dcbd33304c1680f wpt-pr: 10365 wpt-commits: d577e28a3e8db5d31b0e35ab3dcbd33304c1680f wpt-pr: 10365
testing/web-platform/meta/MANIFEST.json
testing/web-platform/tests/css/css-typed-om/the-stylepropertymap/properties/fill-color.html
testing/web-platform/tests/css/css-typed-om/the-stylepropertymap/properties/fill-opacity.html
testing/web-platform/tests/css/css-typed-om/the-stylepropertymap/properties/fill-rule.html
testing/web-platform/tests/css/css-typed-om/the-stylepropertymap/properties/fill.html
testing/web-platform/tests/css/css-typed-om/the-stylepropertymap/properties/stroke-dasharray.html
testing/web-platform/tests/css/css-typed-om/the-stylepropertymap/properties/stroke-dashoffset.html
testing/web-platform/tests/css/css-typed-om/the-stylepropertymap/properties/stroke-linecap.html
testing/web-platform/tests/css/css-typed-om/the-stylepropertymap/properties/stroke-linejoin.html
testing/web-platform/tests/css/css-typed-om/the-stylepropertymap/properties/stroke-miterlimit.html
testing/web-platform/tests/css/css-typed-om/the-stylepropertymap/properties/stroke-opacity.html
testing/web-platform/tests/css/css-typed-om/the-stylepropertymap/properties/stroke-width.html
testing/web-platform/tests/css/css-typed-om/the-stylepropertymap/properties/stroke.html
--- a/testing/web-platform/meta/MANIFEST.json
+++ b/testing/web-platform/meta/MANIFEST.json
@@ -319068,16 +319068,40 @@
     ]
    ],
    "css/css-typed-om/the-stylepropertymap/properties/empty-cells.html": [
     [
      "/css/css-typed-om/the-stylepropertymap/properties/empty-cells.html",
      {}
     ]
    ],
+   "css/css-typed-om/the-stylepropertymap/properties/fill-color.html": [
+    [
+     "/css/css-typed-om/the-stylepropertymap/properties/fill-color.html",
+     {}
+    ]
+   ],
+   "css/css-typed-om/the-stylepropertymap/properties/fill-opacity.html": [
+    [
+     "/css/css-typed-om/the-stylepropertymap/properties/fill-opacity.html",
+     {}
+    ]
+   ],
+   "css/css-typed-om/the-stylepropertymap/properties/fill-rule.html": [
+    [
+     "/css/css-typed-om/the-stylepropertymap/properties/fill-rule.html",
+     {}
+    ]
+   ],
+   "css/css-typed-om/the-stylepropertymap/properties/fill.html": [
+    [
+     "/css/css-typed-om/the-stylepropertymap/properties/fill.html",
+     {}
+    ]
+   ],
    "css/css-typed-om/the-stylepropertymap/properties/flex-basis.html": [
     [
      "/css/css-typed-om/the-stylepropertymap/properties/flex-basis.html",
      {}
     ]
    ],
    "css/css-typed-om/the-stylepropertymap/properties/flex-direction.html": [
     [
@@ -319512,16 +319536,64 @@
     ]
    ],
    "css/css-typed-om/the-stylepropertymap/properties/shape-outside.html": [
     [
      "/css/css-typed-om/the-stylepropertymap/properties/shape-outside.html",
      {}
     ]
    ],
+   "css/css-typed-om/the-stylepropertymap/properties/stroke-dasharray.html": [
+    [
+     "/css/css-typed-om/the-stylepropertymap/properties/stroke-dasharray.html",
+     {}
+    ]
+   ],
+   "css/css-typed-om/the-stylepropertymap/properties/stroke-dashoffset.html": [
+    [
+     "/css/css-typed-om/the-stylepropertymap/properties/stroke-dashoffset.html",
+     {}
+    ]
+   ],
+   "css/css-typed-om/the-stylepropertymap/properties/stroke-linecap.html": [
+    [
+     "/css/css-typed-om/the-stylepropertymap/properties/stroke-linecap.html",
+     {}
+    ]
+   ],
+   "css/css-typed-om/the-stylepropertymap/properties/stroke-linejoin.html": [
+    [
+     "/css/css-typed-om/the-stylepropertymap/properties/stroke-linejoin.html",
+     {}
+    ]
+   ],
+   "css/css-typed-om/the-stylepropertymap/properties/stroke-miterlimit.html": [
+    [
+     "/css/css-typed-om/the-stylepropertymap/properties/stroke-miterlimit.html",
+     {}
+    ]
+   ],
+   "css/css-typed-om/the-stylepropertymap/properties/stroke-opacity.html": [
+    [
+     "/css/css-typed-om/the-stylepropertymap/properties/stroke-opacity.html",
+     {}
+    ]
+   ],
+   "css/css-typed-om/the-stylepropertymap/properties/stroke-width.html": [
+    [
+     "/css/css-typed-om/the-stylepropertymap/properties/stroke-width.html",
+     {}
+    ]
+   ],
+   "css/css-typed-om/the-stylepropertymap/properties/stroke.html": [
+    [
+     "/css/css-typed-om/the-stylepropertymap/properties/stroke.html",
+     {}
+    ]
+   ],
    "css/css-typed-om/the-stylepropertymap/properties/table-layout.html": [
     [
      "/css/css-typed-om/the-stylepropertymap/properties/table-layout.html",
      {}
     ]
    ],
    "css/css-typed-om/the-stylepropertymap/properties/text-align-last.html": [
     [
@@ -525649,16 +525721,32 @@
   "css/css-typed-om/the-stylepropertymap/properties/display.html": [
    "26ba44d8d5146b9d606a1668659ee16876b371c5",
    "testharness"
   ],
   "css/css-typed-om/the-stylepropertymap/properties/empty-cells.html": [
    "d7424e7fb7c27cfa31fb0e40ee9045129ed96c03",
    "testharness"
   ],
+  "css/css-typed-om/the-stylepropertymap/properties/fill-color.html": [
+   "9792c30707b9871b541fc2a5a6e2efffc5266b31",
+   "testharness"
+  ],
+  "css/css-typed-om/the-stylepropertymap/properties/fill-opacity.html": [
+   "bcdbc55b099562c6449c9b095fa37ad95bde41cb",
+   "testharness"
+  ],
+  "css/css-typed-om/the-stylepropertymap/properties/fill-rule.html": [
+   "35bb9208558e038369ee543c3d9590db328e2dad",
+   "testharness"
+  ],
+  "css/css-typed-om/the-stylepropertymap/properties/fill.html": [
+   "3009ff7b3a817f92c78d66e0482857c82a0ce202",
+   "testharness"
+  ],
   "css/css-typed-om/the-stylepropertymap/properties/flex-basis.html": [
    "87f3eed7306a43a312c95fd8b525fcd5d3e167cc",
    "testharness"
   ],
   "css/css-typed-om/the-stylepropertymap/properties/flex-direction.html": [
    "a27187c16080fe2daacd1c0a99657773a2b8c2d0",
    "testharness"
   ],
@@ -525949,16 +526037,48 @@
   "css/css-typed-om/the-stylepropertymap/properties/scroll-padding.html": [
    "d37d336e4695e5055706a7822572b81b943fdbd4",
    "testharness"
   ],
   "css/css-typed-om/the-stylepropertymap/properties/shape-outside.html": [
    "3189c7b3903d30f31836ea845aebecf599198c79",
    "testharness"
   ],
+  "css/css-typed-om/the-stylepropertymap/properties/stroke-dasharray.html": [
+   "5869084f1ea9acb9a2ebb8aa3aecf1635dad0e2a",
+   "testharness"
+  ],
+  "css/css-typed-om/the-stylepropertymap/properties/stroke-dashoffset.html": [
+   "d352d871150c457fc40d3167f599cf8e19d44059",
+   "testharness"
+  ],
+  "css/css-typed-om/the-stylepropertymap/properties/stroke-linecap.html": [
+   "840c2316724bc89393a528f54a7fb2a7f88a975c",
+   "testharness"
+  ],
+  "css/css-typed-om/the-stylepropertymap/properties/stroke-linejoin.html": [
+   "cdb4fd178e378a707f9982d862e11f4a8ed9517c",
+   "testharness"
+  ],
+  "css/css-typed-om/the-stylepropertymap/properties/stroke-miterlimit.html": [
+   "ecee806cfc5a5b9b6b17e722134b6ede7cd8eb9f",
+   "testharness"
+  ],
+  "css/css-typed-om/the-stylepropertymap/properties/stroke-opacity.html": [
+   "b75becab8ce2f1fc54db8ee7b0016f3d42358e99",
+   "testharness"
+  ],
+  "css/css-typed-om/the-stylepropertymap/properties/stroke-width.html": [
+   "da0dd5f0927edb751a376d791e123d482979c375",
+   "testharness"
+  ],
+  "css/css-typed-om/the-stylepropertymap/properties/stroke.html": [
+   "bc7e4ca86e93b8e44b1b985d4a97b5303d26dad9",
+   "testharness"
+  ],
   "css/css-typed-om/the-stylepropertymap/properties/table-layout.html": [
    "e56449111778ad18152a42d54fc88097950f15f0",
    "testharness"
   ],
   "css/css-typed-om/the-stylepropertymap/properties/text-align-last.html": [
    "108445e8afbb9f4166067878e54109a7edc98035",
    "testharness"
   ],
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/css/css-typed-om/the-stylepropertymap/properties/fill-color.html
@@ -0,0 +1,30 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'fill-color' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('fill-color', [
+  {
+    syntax: 'currentcolor',
+    // computes to a <color>, which is not supported in level 1
+    computed: (_, result) => assert_class_string(result, 'CSSStyleValue')
+  }
+]);
+
+// <color>s are not supported in level 1
+runUnsupportedPropertyTests('fill-color', [
+  'red', '#bbff00', 'rgb(255, 255, 128)', 'hsl(50, 33%, 25%)',
+  'transparent'
+]);
+
+</script>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/css/css-typed-om/the-stylepropertymap/properties/fill-opacity.html
@@ -0,0 +1,34 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'fill-opacity' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+function assert_is_equal_with_clamping(input, result) {
+  const number = input.to('number');
+
+  if (number.value < 0)
+    assert_style_value_equals(result, new CSSUnitValue(0, 'number'));
+  else if (number.value > 1)
+    assert_style_value_equals(result, new CSSUnitValue(1, 'number'));
+  else
+    assert_style_value_equals(result, input);
+}
+
+runPropertyTests('fill-opacity', [
+  {
+    syntax: '<number>',
+    computed: assert_is_equal_with_clamping
+  },
+]);
+
+</script>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/css/css-typed-om/the-stylepropertymap/properties/fill-rule.html
@@ -0,0 +1,21 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'fill-rule' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runListValuedPropertyTests('fill-rule', [
+  { syntax: 'nonzero' },
+  { syntax: 'evenodd' },
+]);
+
+</script>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/css/css-typed-om/the-stylepropertymap/properties/fill.html
@@ -0,0 +1,21 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'fill' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runUnsupportedPropertyTests('fill', [
+  'black',
+  'red gray',
+]);
+
+</script>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/css/css-typed-om/the-stylepropertymap/properties/stroke-dasharray.html
@@ -0,0 +1,24 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'stroke-dasharray' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('stroke-dasharray', [
+  { syntax: 'none' }
+]);
+
+runUnsupportedPropertyTests('stroke-dasharray', [
+  '5% 1em 2%',
+]);
+
+</script>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/css/css-typed-om/the-stylepropertymap/properties/stroke-dashoffset.html
@@ -0,0 +1,21 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'stroke-dashoffset' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('stroke-dashoffset', [
+  { syntax: '<length>' },
+  { syntax: '<percentage>' }
+]);
+
+</script>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/css/css-typed-om/the-stylepropertymap/properties/stroke-linecap.html
@@ -0,0 +1,22 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'stroke-linecap' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('stroke-linecap', [
+  { syntax: 'butt' },
+  { syntax: 'round' },
+  { syntax: 'square' },
+]);
+
+</script>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/css/css-typed-om/the-stylepropertymap/properties/stroke-linejoin.html
@@ -0,0 +1,29 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'stroke-linejoin' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('stroke-linejoin', [
+  { syntax: 'crop' },
+  { syntax: 'arcs' },
+  { syntax: 'miter' },
+  { syntax: 'bevel' },
+  { syntax: 'round' },
+  { syntax: 'stupid' },
+]);
+
+runUnsupportedPropertyTests('stroke-linejoin', [
+  'crop bevel', 'round arcs'
+]);
+
+</script>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/css/css-typed-om/the-stylepropertymap/properties/stroke-miterlimit.html
@@ -0,0 +1,20 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'stroke-miterlimit' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('stroke-miterlimit', [
+  { syntax: '<number>' },
+]);
+
+</script>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/css/css-typed-om/the-stylepropertymap/properties/stroke-opacity.html
@@ -0,0 +1,34 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'stroke-opacity' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+function assert_is_equal_with_clamping(input, result) {
+  const number = input.to('number');
+
+  if (number.value < 0)
+    assert_style_value_equals(result, new CSSUnitValue(0, 'number'));
+  else if (number.value > 1)
+    assert_style_value_equals(result, new CSSUnitValue(1, 'number'));
+  else
+    assert_style_value_equals(result, input);
+}
+
+runPropertyTests('stroke-opacity', [
+  {
+    syntax: '<number>',
+    computed: assert_is_equal_with_clamping
+  },
+]);
+
+</script>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/css/css-typed-om/the-stylepropertymap/properties/stroke-width.html
@@ -0,0 +1,27 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'stroke-width' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runListValuedPropertyTests('stroke-width', [
+  {
+    syntax: '<length>',
+    specified: assert_is_equal_with_range_handling
+  },
+  {
+    syntax: '<percentage>',
+    specified: assert_is_equal_with_range_handling
+  },
+]);
+
+</script>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/css/css-typed-om/the-stylepropertymap/properties/stroke.html
@@ -0,0 +1,21 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'stroke' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runUnsupportedPropertyTests('stroke', [
+  'black',
+  'red gray',
+]);
+
+</script>