From 7171ac288902829d6239e39c947a8c876f94b2a8 Mon Sep 17 00:00:00 2001 From: Lea Verou Date: Thu, 2 Feb 2012 12:45:23 +0200 Subject: [PATCH 001/668] Initial import --- CNAME | 1 + README.md | 7 + csstest.js | 354 +++++++++++++++++++++++++++++++++++++++++++ index.html | 58 +++++++ style.css | 268 ++++++++++++++++++++++++++++++++ supports.js | 128 ++++++++++++++++ tests.js | 428 ++++++++++++++++++++++++++++++++++++++++++++++++++++ utopia.js | 237 +++++++++++++++++++++++++++++ 8 files changed, 1481 insertions(+) create mode 100644 CNAME create mode 100644 README.md create mode 100644 csstest.js create mode 100644 index.html create mode 100644 style.css create mode 100644 supports.js create mode 100644 tests.js create mode 100644 utopia.js diff --git a/CNAME b/CNAME new file mode 100644 index 00000000..d2daa6d2 --- /dev/null +++ b/CNAME @@ -0,0 +1 @@ +css3test.com \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 00000000..6045a789 --- /dev/null +++ b/README.md @@ -0,0 +1,7 @@ +# How to add tests + +Go to `tests.js`. Follow the current structure. Please only add tests from specs that are reasonably stable. +They don't have to be a CR, just not too much in Flux. + +- Don't add specs when there are NO implementations of ANYTHING in the spec. +- Don't add tests that already exist, just with different values. E.g. if `calc(1px + 2px)` is a testcase, adding `calc(2px + 2px)` won't help. \ No newline at end of file diff --git a/csstest.js b/csstest.js new file mode 100644 index 00000000..5ae48b7e --- /dev/null +++ b/csstest.js @@ -0,0 +1,354 @@ +var Score = function(parent) { + this.passed = this.total = + this.passedTests = this.totalTests = 0; + + this.parent = parent || null; +}; + +Score.prototype = { + update: function(data) { + if(!data.total) { return; } + + this.passedTests += data.passed; + this.totalTests += data.total; + + this.total++; + this.passed += data.passed / data.total; + + if(this.parent) { + this.parent.update(data); + } + }, + + toString: function() { + return Math.round(100 * this.passed / this.total) + '%'; + } +}; + +var mainScore = new Score(), _bTestResults = {}; + +var Test = function (tests, spec, title) { + this.tests = tests; + this.id = spec; + this.title = title; + + this.score = new Score(mainScore); + + var + h1 = $u.element.create({ + tag: 'h1', + contents: [ + this.title, + $u.element.create({ + tag: 'a', + properties: { + href: 'http://w3.org/TR/' + this.id, + target: '_blank', + textContent: 'TR', + className: 'spec-link' + } + }), + $u.element.create({ + tag: 'a', + properties: { + href: 'http://dev.w3.org/csswg/' + this.id, + target: '_blank', + textContent: 'DEV', + className: 'spec-link' + } + }) + ] + }), valuesSection; + + // Wrapper section + this.section = $u.element.create({ + tag: 'section', + properties: { + id: this.id, + className: 'tests' + }, + contents: [h1] + }); + + // Perform tests + for(var id in Test.groups) { + this.group(id, Test.groups[id]); + } + + // Display score for this spec + $u.element.create({ + tag: 'span', + contents: this.score + '', + properties: { + className: 'score' + }, + inside: h1 + }); + + all.appendChild(this.section); + + // Add to list of tested specs + $u.element.create({ + tag: 'li', + properties: { + className: passclass({ passed: this.score.passed, total: this.score.total }), + title: this.score + ' passed' + }, + contents: [ + $u.element.create({ + tag: 'a', + prop: { + href: '#' + spec + }, + contents: title + }) + ], + inside: specsTested + }); +} + +Test.prototype = { + group: function(what, testCallback) { + var thisSection, theseTests = this.tests[what]; + + for(var feature in theseTests) { + if(feature === 'properties') { + continue; + } + + thisSection = thisSection || $u.element.create({ + tag: 'section', + properties: { + className: 'tests ' + what + }, + contents: $u.element.create({ + tag: 'h1', + contents: what + }), + inside: this.section + }); + + var dl = document.createElement('dl'), + dt = $u.element.create({ + tag: 'dt', + prop: { + textContent: feature, + tabIndex: '0' + }, + inside: dl + }); + + var passed = 0, tests = theseTests[feature]; + + tests = tests instanceof Array? tests : [tests]; + + for(var i=0, test; test = tests[i++];) { + var results = testCallback(test, feature, theseTests); + + if(typeof results === 'object') { + var success = results.success, + note = results.note; + } + else { var success = +!!results } + + passed += +success; + + $u.element.create({ + tag: 'dd', + prop: { + innerHTML: test + (note? '' + note + '' : ''), + className: passclass({passed: Math.round(success * 10000), total: 10000 }) + }, + inside: dl + }); + } + + this.score.update({passed: passed, total: tests.length }); + + dt.className = passclass({ passed: passed, total: tests.length }); + + thisSection.appendChild(dl); + + // Add to browserscope + _bTestResults[this.id + ' / ' + feature] = 100 * Math.round(passed / tests.length); + } + } +} + +Test.groups = { + 'values': function(test, label, tests) { + var properties = tests.properties, + failed = []; + + for(var j=0, property; property = properties[j++];) { + if(!Supports.property(property)) { + properties.splice(--j, 1); + continue; + } + + if(!Supports.value(property, test)) { + failed.push(property); + } + } + + success = 1 - failed.length / properties.length; + + return { + success: success, + note: success > 0 && success < 1? 'Failed in: ' + failed.join(', ') : '' + } + }, + + 'properties': function(value, property) { + return Supports.value(property, value); + }, + + 'selectors': function(test) { + return Supports.selector(test); + }, + + '@rules': function(test) { + return Supports.atrule(test); + }, + + 'Media queries': function(test) { + return Supports.mq(test); + } +}; + +function passclass(info) { + var success; + + if('passed' in info) { + success = info.passed / info.total; + } + else if('failed' in info) { + success = 1 - info.failed / info.total; + } + + if (success === 1) { return 'pass' } + if (success === 0) { return 'epic-fail' } + + var classes = [ + 'fail', + 'buggy', + 'very-buggy', + 'slightly-buggy', + 'almost-pass', + ]; + + var index = Math.round(success * (classes.length - 1)); + + return classes[index]; +} + +document.onclick = function(evt) { + var target = evt.target; + + if(/^dt$/i.test(target.nodeName)) { + evt.stopPropagation(); + + var dl = target.parentNode; + + dl.className = dl.className === 'open'? '' : 'open'; + } +} + +Array.prototype.and = function(arr2, separator) { + separator = separator || ' '; + + var ret = []; + + for(var j=0; j + + + + +CSS browser support tests + + + + + + + + +

The CSS3 test

+ +
+
+

Your browser scores 0%

+

Determined by passing tests out of total for features

+
+ +
+
+ + + + + + + + + + + + \ No newline at end of file diff --git a/style.css b/style.css new file mode 100644 index 00000000..0672f78f --- /dev/null +++ b/style.css @@ -0,0 +1,268 @@ +body { + max-width: 60em; + padding: 1em; + margin: auto; + background: url(http://dabblet.com/img/noise.png) hsl(24, 20%, 95%); + font: 100%/1.5 sans-serif; + text-shadow: 0 1px white; +} + +a { + color: hsl(200, 10%, 20%); + font-weight: bold; + text-decoration: none; +} + +h1, h2 { + margin: 1em 0 .5em; + font-weight: normal; + line-height: 1; +} + + body > section section section h1 { + font-size: 200%; + } + + section section section section h1 { + color: hsla(200, 10%, 20%, .5); + font-size: 120%; + font-weight: bold; + text-transform: capitalize; + } + + h1 > .score { + float: right; + font-weight: bold; + } + + h1 > .spec-link { + display: inline-block; + padding: .3em .4em; + margin: 0 0 0 .3em; + font-size: 50%; + background: hsl(200, 10%, 20%); + color: white; + border-radius: .3em; + vertical-align: middle; + text-shadow: 0 .1em .1em black; + } + + h1 > .spec-link:hover { + background: #f06; + } + +body > h1 { + position: fixed; + left: 0; + top: 0; + padding: .5em 1em; + background: hsl(200, 10%, 20%); + box-shadow: -2px 2px 10px rgba(0,0,0,.5); + color: white; + font-size: 150%; + font-weight: bold; + text-transform: uppercase; + text-shadow: 0 .1em .1em black; + + -webkit-transform: rotate(-90deg) translateX(-100%); + -webkit-transform-origin: top left; + -moz-transform: rotate(-90deg) translateX(-100%); + -moz-transform-origin: top left; + -ms-transform: rotate(-90deg) translateX(-100%); + -ms-transform-origin: top left; + -o-transform: rotate(-90deg) translateX(-100%); + -o-transform-origin: top left; + transform: rotate(-90deg) translateX(-100%); + transform-origin: top left; +} + +#mark img { + position: fixed; + left: 10px; + top: 230px; + width: 50px; + border-radius: 50%; + box-shadow: 2px 2px 10px rgba(0,0,0,.5); + + -webkit-transform: rotate(-15deg); + -moz-transform: rotate(-15deg); + -ms-transform: rotate(-15deg); + -o-transform: rotate(-15deg); + transform: rotate(-15deg); +} + +#tests { + float: left; + width: 65%; + margin-right: 2em; +} + + #tests hgroup { + text-align: center; + } + + #tests > hgroup > h1 { + font-size: 250%; + } + + #tests h1 > strong { + display: block; + margin-top: .1em; + font-size: 500%; + line-height: .7; + } + + #tests h2 { + font-size: 80%; + } + +dl { + margin: .3em 0; + font: 100% Monaco, Consolas, monospace; +} + + dl dl { + margin:0; + } + +dt, dd[class] { + padding: .5em; + background: gray; + color: white; + border-radius: .3em; + text-shadow: 0 -.05em .1em rgba(0,0,0,.5); +} + +dt { + cursor: pointer; +} + +dd { + margin: .3em 0 .3em 2em; + font-size: 90%; +} + + dd dd { + border: 1px solid white; + } + + dd small { + display: block; + opacity: .8; + } + +dl .pass, +#specsTested li.pass:before { + background-color: #490; +} + +dl .almost-pass, +#specsTested li.almost-pass:before { + background-color: #8c0; +} + +dl .slightly-buggy, +#specsTested li.slightly-buggy:before { + background-color: #bb0; +} + +dl .buggy, +#specsTested li.buggy:before { + background-color: #e80; +} + +dl .very-buggy, +#specsTested li.very-buggy:before { + background-color: #e40; +} + +dl .fail, +#specsTested li.fail:before { + background-color: #e20; +} + +dl .epic-fail, +#specsTested li.epic-fail:before { + background-color: #b00; +} + +dt:before { + content: '▶'; + display: inline-block; + margin-right: .5em; + font-size: 60%; + opacity: .5; +} + +dl.open > dt:before { + content: '▼'; +} + +dl > dd { + display: none; +} + +dl.open > dd { + display: block; +} + +aside { + font-size: 85%; +} + + aside section { + margin-left: 65%; + } + + aside .caution p { + padding: 1em; + margin-left: 2em; + background: hsl(200, 10%, 20%); + color: white; + text-shadow: 0 -.1em .2em black; + } + + aside h1 { + font-size: 150%; + } + + aside ul { + margin: .5em 0; + padding: 0 0 0 2em; + } + + aside li { + list-style: none; + padding: .3em 0; + border-bottom: 2px dotted rgba(0,0,0,.25); + border-top: 2px dotted white; + } + + aside li:first-child { + border-top: none; + } + + aside li:last-child { + border-bottom: none; + } + + #specsTested li:before { + content: ''; + display: inline-block; + width: 1.2em; + height: 1.2em; + margin-right: .5em; + border-radius: 50%; + box-shadow: 0 2px white; + } + +footer { + margin-left: 65%; +} + + footer > p { + margin-left: 2em; + padding: 1em 0; + border-top: 1px solid hsl(200, 10%, 20%); + text-align: center; + } \ No newline at end of file diff --git a/supports.js b/supports.js new file mode 100644 index 00000000..92611cff --- /dev/null +++ b/supports.js @@ -0,0 +1,128 @@ +(function(){ + +/** + * Setup dummy elements + */ +var dummy = document.createElement('_'), + inline = dummy.style, + style = document.createElement('style'); + +document.documentElement.appendChild(style); +dummy.setAttribute('data-foo', 'bar'); +dummy.setAttribute('data-px', '1px'); + +var _ = window.Supports = { + prefixes: ['', '-moz-', '-webkit-', '-o-', '-ms-', 'ms-', '-khtml-'], + + property: function(property) { + if(property.charAt(0) === '-') { + return camelCase(property) in inline? property : false; + } + + if(!_.property.cached) { + _.property.cached = {}; + } + else if(_.property.cached[property]) { + return _.property.cached[property]; + } + + for(var i=0; i<_.prefixes.length; i++) { + var prefixed = _.prefixes[i] + property; + + if(camelCase(prefixed) in inline) { + return _.property.cached[property] = prefixed; + } + } + + return _.property.cached[property] = false; + }, + + value: function(property, value) { + property = _.property(property); + + if(!property) { return false; } + + property = camelCase(property); + + inline.cssText = ''; + inline[property] = ''; + + for(var i=0; i<_.prefixes.length; i++) { + var prefixed = _.prefixes[i] + value; + + try { + inline[property] = prefixed; + } catch(e) {} + + if(inline.length > 0) { + return prefixed; + } + } + + return false; + }, + + selector: function(selector) { + if(!_.selector.cached) { + _.selector.cached = {}; + } + else if(_.selector.cached[selector]) { + return _.selector.cached[selector]; + } + + for(var i=0; i<_.prefixes.length; i++) { + var prefixed = selector.replace(/^(:+)/, '$1' + _.prefixes[i]); + + try { + document.querySelector(prefixed); + return _.selector.cached[selector] = prefixed; + } + catch (e) {} + } + + return _.selector.cached[selector] = false; + }, + + atrule: function(atrule) { + if(!_.atrule.cached) { + _.atrule.cached = {}; + } + else if(_.selector.cached[atrule]) { + return _.atrule.cached[atrule]; + } + + for(var i=0; i<_.prefixes.length; i++) { + var prefixed = atrule.replace(/^@/, '@' + _.prefixes[i]); + + style.textContent = prefixed + '{}'; // Safari 4 has issues with style.innerHTML + + if(style.sheet.cssRules.length > 0) { + return _.atrule.cached[atrule] = prefixed; + } + } + + + + return _.atrule.cached[atrule] = false; + }, + + mq: function(mq) { + if(window.matchMedia) { + return matchMedia(mq).media !== 'invalid'; + } + else { + style.textContent = '@media ' + mq + '{ foo {} }'; + + return style.sheet.cssRules.length > 0? mq : false; + } + } +}; + +/** + * Private + */ +function camelCase (str) { + return str.replace(/-([a-z])/g, function($0, $1) { return $1.toUpperCase(); }).replace('-',''); +} + +})(); \ No newline at end of file diff --git a/tests.js b/tests.js new file mode 100644 index 00000000..8c059551 --- /dev/null +++ b/tests.js @@ -0,0 +1,428 @@ +window.Specs = { + "css3-background": { + "title": "Backgrounds and Borders", + "properties": { + "background-repeat": ["space", "round"].concat(["repeat", "space", "round", "no-repeat"].times(2)), + "background-attachment": "local", + "background-position": ["bottom 10px right 20px", "bottom 10px right", "top right 10px"], + "background-clip": ["border-box", "padding-box", "content-box"], + "background-origin": ["border-box", "padding-box", "content-box"], + "background-size": ["auto", "cover", "contain", "10px", "50%", "10px auto", "auto 10%", "50em 50%"], + "background": [ + "url(foo.png), url(bar.svg)", + "top left / 50% 60%", + "border-box", + "border-box padding-box", + "url(foo.png) bottom right / cover padding-box content-box" + ], + "border-radius": ["10px", "50%", "10px / 20px", "2px 4px 8px 16px"], + "border-image-source": ["none", "url(foo.png)"], + "border-image-slice": ['10', '30%'].times(1, 4).concat(["fill 30%", "fill 10", "fill 2 4 8% 16%", "30% fill", "10 fill", "2 4 8% 16% fill"]), + "border-image-width": ["10px", "5%", "28", "auto", "10px 10px", "5% 10px", "28 10px", "auto 10px", "10px 5%", "5% 5%", "28 5%", "auto 5%", "10px 28", "5% 28", "28 28", "auto 28", "10px auto", "5% auto", "28 auto", "auto auto", "10px 10% 10", "5% 10px 20 auto"], + "border-image-outset": ["10px", "20", "10px 20", "10px 20px", "20 30", "2px 3px 4", "1 2px 3px 4"], + "border-image-repeat": ["stretch", "repeat", "round", "space"].times(1, 2), + "border-image": [ + "url(foo.png) 10", "url(foo.png) 10%", "url(foo.png) 10% fill", + "url(foo.png) 10 round", "url(foo.png) 10 stretch repeat", + "url(foo.png) 10 / 10px", "url(foo.png) 10 / 10px / 10%", + "url(foo.png) fill 10 / 10px / 10%", "url(foo.png) fill 10 / 10px / 10% space" + ], + "box-decoration-break": ["slice", "clone"], + "box-shadow": [ + "1px 1px", "0 0 black", "1px 2px 3px black", "1px 2px 3px 4px black", + "inset 1px 1px", "1px 2px 3px 4px black inset" + ] + } + }, + + "css3-images": { + "title": "Image Values and Replaced Content", + "values": { + "properties": [ + "background-image", + "list-style-image", + "foo", + "border-image", + "cursor", + "content" + + ], + "linear-gradient": [ + "linear-gradient(white, black)", + "linear-gradient(to right, white, black)", + "linear-gradient(45deg, white, black)", + "linear-gradient(white 50%, black)", + "linear-gradient(white 5px, black)", + "linear-gradient(white, #f06, black)", + "linear-gradient(currentColor, black)" + ], + "radial-gradient": [ + "radial-gradient(white, black)", + "radial-gradient(circle, white, black)", + "radial-gradient(ellipse, white, black)", + "radial-gradient(closest-corner, white, black)", + "radial-gradient(circle closest-corner, white, black)", + "radial-gradient(farthest-side, white, black)", + "radial-gradient(circle farthest-side, white, black)", + "radial-gradient(50%, white, black)", + "radial-gradient(60% 60%, white, black)"/*, + "radial-gradient(at 60% 60%, white, black)", + "radial-gradient(30% 30% at 20% 20%, white, black)", + "radial-gradient(5em circle at top left, yellow, blue)", + "radial-gradient(circle farthest-side at top left, white, black)"*/ + ], + "repeating-linear-gradient": "repeating-linear-gradient(white, black)", + "repeating-radial-gradient": "repeating-radial-gradient(white, black)", + "image()": [ + "image('sprites.png#xywh=10,30,60,20')", + "image('wavy.svg', 'wavy.png' , 'wavy.gif')", + "image('dark.png', black)", "image(green)" + ], + "element()": "element(#foo)" + }, + "properties": { + "object-fit": ["fill", "contain", "cover", "none", "scale-down"], + "object-position": ["50% 50%", "center", "top right", "bottom 10px right 20px"], + "image-resolution": ["from-image", "from-image snap", "snap from-image", "1dppx", "300dpi", "from-image 300dpi", "300dpi from-image", "300dpi from-image snap"], + "image-orientation": ["0deg", "90deg", "45deg", "1turn", "100grad"] + } + }, + + "css3-selectors": { + "title": "Selectors", + "selectors": { + "Sibling combinator": "foo ~ bar", + "::before": "::before", + "::after": "::after", + "::first-letter": "::first-letter", + "::first-line": "::first-line", + "[att^=val]": ["[att^=val]", "[att^=\"val\"]"], + "[att*=val]": ["[att*=val]", "[att*=\"val\"]"], + "[att$=val]": ["[att$=val]", "[att$=\"val\"]"], + "Namespaces": ["*|html", "[*|attr]", "[*|attr=val]", "*|html[*|attr]"], + ":target": ":target", + ":enabled": ":enabled", + ":disabled": ":disabled", + ":checked": ":checked", + ":indeterminate": ":indeterminate", + ":root": ":root", + ":nth-child": [ + ":nth-child(even)", ":nth-child(odd)", + ":nth-child(n)", ":nth-child(-n)", ":nth-child(0n)", + ":nth-child(1)", ":nth-child(-1)", ":nth-child(0)", + ":nth-child(n+1)",":nth-child(3n+1)", ":nth-child(3n + 1)", + ":nth-child(-n+1)", ":nth-child(-n-1)", ":nth-child(3n-1)" + ], + ":nth-last-child": [ + ":nth-last-child(even)", ":nth-last-child(odd)", + ":nth-last-child(n)", ":nth-last-child(-n)", ":nth-last-child(0n)", + ":nth-last-child(1)", ":nth-last-child(-1)", ":nth-last-child(0)", + ":nth-last-child(n+1)",":nth-last-child(3n+1)", ":nth-last-child(3n + 1)", + ":nth-last-child(-n+1)", ":nth-last-child(-n-1)", ":nth-last-child(3n-1)" + ], + ":nth-of-type": [ + ":nth-of-type(even)", ":nth-of-type(odd)", + ":nth-of-type(n)", ":nth-of-type(-n)", ":nth-of-type(0n)", + ":nth-of-type(1)", ":nth-of-type(-1)", ":nth-of-type(0)", + ":nth-of-type(n+1)",":nth-of-type(3n+1)", ":nth-of-type(3n + 1)", + ":nth-of-type(-n+1)", ":nth-of-type(-n-1)", ":nth-of-type(3n-1)" + ], + ":nth-last-of-type": [ + ":nth-last-of-type(even)", ":nth-last-of-type(odd)", + ":nth-last-of-type(n)", ":nth-last-of-type(-n)", ":nth-last-of-type(0n)", + ":nth-last-of-type(1)", ":nth-last-of-type(-1)", ":nth-last-of-type(0)", + ":nth-last-of-type(n+1)",":nth-last-of-type(3n+1)", ":nth-last-of-type(3n + 1)", + ":nth-last-of-type(-n+1)", ":nth-last-of-type(-n-1)", ":nth-last-of-type(3n-1)" + ], + ":last-child": ":last-child", + ":only-child": ":only-child", + ":first-of-type": ":first-of-type", + ":last-of-type": ":last-of-type", + ":only-of-type": ":only-of-type", + ":empty": ":empty", + ":not()": [":not(*)", ":not(element)", ":not(.class):not(#id):not([attr]):not(:link)"], + } + }, + + "css3-mediaqueries": { + "title": "Media Queries", + "Media queries": { + "width": ["(width:10px)", "(min-width:10px)", "(max-width:10px)"], + "height": ["(height:10px)", "(min-height:10px)", "(max-height:10px)"], + "device-width": ["(device-width:10px)", "(device-min-width:10px)", "(device-max-width:10px)"], + "device-height": ["(device-height:10px)", "(device-min-height:10px)", "(device-max-height:10px)"], + "orientation": ["(orientation:portrait)", "(orientation:landscape)"], + "aspect-ratio": [ + "(aspect-ratio:3/4)", "(aspect-ratio:3 /4)", "(aspect-ratio:3/ 4)", + "(min-aspect-ratio:3/4)", "(max-aspect-ratio:3/4)" + ], + "device-aspect-ratio": [ + "(device-aspect-ratio:3/4)", "(device-aspect-ratio:3 /4)", "(device-aspect-ratio:3/ 4)", + "(min-device-aspect-ratio:3/4)", "(max-device-aspect-ratio:3/4)" + ], + "color": [ + "(color)", "(color: 0)", "(color: 1)", "(color: 100)", + "(min-color: 2)", "(max-color: 3)" + ], + "color-index": [ + "(color-index)", "(color-index: 0)", "(color-index: 1)", "(color-index: 100)", + "(min-color-index: 2)", "(max-color-index: 3)" + ], + "monochrome": [ + "(monochrome)", "(monochrome: 0)", "(monochrome: 1)", "(monochrome: 100)", + "(min-monochrome: 2)", "(max-monochrome: 3)" + ], + "resolution": [ + "(resolution: 300dpi)", "(resolution: 120dpcm)", + "(min-resolution: 300dpi)", "(min-resolution: 120dpcm)", + "(max-resolution: 300dpi)", "(max-resolution: 120dpcm)" + ], + "scan": ["(scan: progressive)", "(scan: interlace)"], + "grid": ["(grid)", "(grid: 0)", "(grid:-0)", "(grid: 1)"] + } + }, + + "css3-ui": { + "title": "Basic User Interface", + "properties": { + "content": "icon", + "icon": ["auto", "url(foo.png)", "url(foo.png), url(foo.gif)"], + "box-sizing": ["border-box", "padding-box", "content-box"], + "outline-offset": ["-5px", "0", "5px"], + "resize": ["none", "both", "horizontal", "vertical"], + "text-overflow": ["clip", "ellipsis", "'foo'"].times(1, 2), + "cursor": [ + "url(foo.png) 2 2", "default", "none", "context-menu", "cell", "vertical-text", "alias", "copy", "no-drop", "not-allowed", + "ew-resize", "ns-resize", "nesw-resize", "nwse-resize", "col-resize", "row-resize", "all-scroll", "zoom-in", "zoom-out" + ], + "nav-index": ["auto", "1", "10"], + "nav-up": ["auto", "#foo", "#foo current", "#foo root"], + "nav-right": ["auto", "#foo", "#foo current", "#foo root"], + "nav-down": ["auto", "#foo", "#foo current", "#foo root"], + "nav-left": ["auto", "#foo", "#foo current", "#foo root"], + "ime-mode": ["auto", "normal", "active", "inactive", "disabled"] + }, + "selectors": { + ":indeterminate": ":indeterminate", + ":default": ":default", + ":valid": ":valid", + ":invalid": ":invalid", + ":in-range": ":in-range", + ":out-of-range": ":out-of-range", + ":required": ":required", + ":optional": ":optional", + ":read-only": ":read-only", + ":read-write": ":read-write", + "::value": "::value", + "::choices": "::choices", + "::repeat-item": "::repeat-item", + "::repeat-index": "::repeat-index" + } + }, + + "css3-transitions": { + "title": "Transitions", + "properties": { + "transition-property": ["none", "all", "width", "width, height"], + "transition-duration": ["0s", "1s", "100ms"], + "transition-timing-function": [ + "ease", "linear", "ease-in", "ease-out", "ease-in-out", + "cubic-bezier(.5, .5, .5, .5)", + "cubic-bezier(.5, 1.5, .5, -2.5)", + "step-start", "step-end", "steps(3, start)", "steps(5, end)" + ], + "transition-delay": ["1s", "-1s"], + "transition": "1s 2s width linear" + } + }, + + "css3-animations": { + "title": "Animations", + "properties": { + "animation-name": ["foo", "foo, bar"], + "animation-duration": ["0s", "1s", "100ms"], + "animation-timing-function": [ + "ease", "linear", "ease-in", "ease-out", "ease-in-out", + "cubic-bezier(.5, .5, .5, .5)", + "cubic-bezier(.5, 1.5, .5, -2.5)", + "step-start", "step-end", "steps(3, start)", "steps(5, end)" + ], + "animation-iteration-count": ["infinite", "8", "4.35"], + "animation-direction": ["normal", "alternate"], + "animation-play-state": ["running", "paused"], + "animation-delay": ["1s", "-1s"], + "animation-fill-mode": ["none", "forwards", "backwards", "both"], + "animation": "foo 1s 2s infinite linear alternate both" + }, + "@rules": { + "@keyframes": "@keyframes foo" + } + }, + + "css3-2d-transforms": { + "title": "2D Transforms", + "properties": { + "transform": [ + "none", + "translate(5px)", "translate(5px, 10px)", "translateY(5px)", "translateX(5px)", "translateY(5%)", "translateX(5%)", + "scale(2)", "scale(2, -1)", "scaleX(2)", "scaleY(2)", + "rotate(45deg)", "skewX(45deg)", "skewY(45deg)", + "matrix(1,-.2,0,1,0,0)" + ], + "transform-origin": ["top left", "50% 100%", "right 10px bottom 20px"] + } + }, + + "css3-3d-transforms": { + "title": "3D Transforms", + "properties": { + "transform-style": ["flat", "preserve-3d"], + "perspective": ["none", "0", "600px"], + "perspective-origin": ["top left", "50% 100%", "right 10px bottom 20px"], + "backface-visibility": ["visible", "hidden"], + "transform": [ + "matrix3d(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)", "translateZ(5px)", + "scale3d(1, 0, -1)", "scaleZ(1.5)", + "rotate3d(1, 1, 1, 45deg)", "rotateZ(-45deg)", + "perspective(600)" + ] + } + }, + + "css3-text": { + "title": "Text", + "properties": { + "text-transform": ["full-width", "full-size-kana"], + "text-space-collapse": ["collapse", "preserve", "preserve-breaks"], + "tab-size": ["4", "1em"], + "line-break": ["auto", "loose", "normal", "strict"], + "word-break": ["normal", "keep-all", "break-all"], + "hyphens": ["auto", "manual", "none"], + "text-wrap": ["normal", "none", "avoid"], + "overflow-wrap": ["normal", "break-word"], + "text-align": ["start", "end", "'a'", "match-parent", "start end"], + "text-align-last": ["auto", "start", "end", "left", "right", "center", "justify"], + "text-justify": ["auto", "none", "inter-word", "inter-ideograph", "inter-cluster", "distribute", "kashida"], + "word-spacing": ["50%", "1em .5em", "1em .5em 2em", "normal 1em 2em"], + "letter-spacing": ["50%", "1em .5em", "1em .5em 2em", "normal 1em 2em"], + "text-indent": ["1em hanging", "1em each-line", "1em hanging each-line"], + "hanging-punctuation": ["none", "first", "last", "force-end", "allow-end", "first last"], + "text-decoration-line": ["none", "underline", "overline", "line-through", "underline overline"], + "text-decoration-color": "white", + "text-decoration-style": ["solid", "double", "dotted", "dashed", "wavy"], + "text-decoration": "underline dotted green", + "text-decoration-skip": ["none", "objects", "spaces", "ink", "edges", "objects edges"], + "text-underline-position": ["auto", "alphabetic","below", "left", "below right"], + "text-emphasis-style": ["none", "filled", "open dot", "circle", "double-circle", "triangle", "sesame", "'foo'"], + "text-emphasis-color": "green", + "text-emphasis": "open dot green", + "text-emphasis-position": ["above right", "below left"], + "text-shadow": ["1px 1px", "0 0 black", "1px 2px 3px black"] + } + }, + + "css3-fonts": { + "title": "Fonts", + "properties": { + "font-stretch": ["normal", "ultra-condensed", "extra-condensed", "condensed", "semi-condensed", "semi-expanded", "expanded", "extra-expanded", "ultra-expanded"], + "font-size-adjust": ["none", ".5"], + "font-synthesis": ["none", "weight", "style", "weight style", "style weight"], + "font-kerning": ["auto", "normal", "none"], + "font-variant-position": ["normal", "sub", "super"], + "font-variant-ligatures": [ + "normal", + "common-ligatures", "no-common-ligatures", + "discretionary-ligatures", "no-discretionary-ligatures", + "historical-ligatures", "no-historical-ligatures", + "common-ligatures discretionary-ligatures historical-ligatures" + ], + "font-variant-caps": ["normal", "small-caps", "all-small-caps", "petite-caps", "all-petite-caps", "titling-caps", "unicase"], + "font-variant-numeric": [ + "normal", + "lining-nums", "oldstyle-nums", + "proportional-nums", "tabular-nums", + "diagonal-fractions", "stacked-fractions", + "ordinal", "slashed-zero", + "lining-nums proportional-nums diagonal-fractions", + "oldstyle-nums tabular-nums stacked-fractions ordinal slashed-zero", + "slashed-zero ordinal tabular-nums stacked-fractions oldstyle-nums" + ], + "font-variant-alternates": [ + "normal", + "contextual", "no-contextual", + "historical-forms", + "contextual historical-forms" + // TODO add tests for functions + ], + "font-variant-east-asian": [ + "normal", + "jis78", "jis83", "jis90", "jis04", "simplified", "traditional", + "full-width", "proportional-width", + "ruby", "simplified full-width ruby" + ], + "font-variant": "sub lining-nums contextual ruby" + }, + "@rules": { + "@font-face": "@font-face", + "@font-feature-values": "@font-feature-values Jupiter Sans" + } + }, + + "css3-color": { + "title": "Color", + "values": { + "properties": [ + "color", + "background-color", + "border-color", + "text-decoration-color", + "column-rule-color" + ], + "rgba": 'rgba(0,0,0,.5)', + "hsl": 'hsl(0,0%,0%)', + "hsla": 'hsla(0,0%,0%,.5)', + "transparent": "transparent", + "currentColor": "currentColor" + }, + "properties": { + "opacity": ["-5", "0", ".5", "1", "2"] + } + }, + + "css3-multicol": { + "title": "Multi-column Layout", + "properties": { + "column-width": ["10em", "auto"], + "column-count": ["2", "auto"], + "columns": ["10em 2", "auto 2", "10em auto", "auto auto", "2 10em", "auto 10em", "2 auto"], + "column-gap": ["1em", "normal"], + "column-rule-color": "red", + "column-rule-style": ["none", "solid", "dotted"], + "column-rule-width": "1px", + "column-rule": ["transparent", "1px solid black"], + "break-before": ["auto", "always", "avoid", "left", "right", "page", "column", "avoid-page", "avoid-column"], + "break-after": ["auto", "always", "avoid", "left", "right", "page", "column", "avoid-page", "avoid-column"], + "break-inside": ["auto", "avoid", "avoid-page", "avoid-column"], + "column-span": ["none", "all"], + "column-fill": ["auto", "balance"] + } + }, + + "css3-values": { + "title": "Values and Units", + "values": { + "properties": [ + "width", + "padding", + "border-width" + ], + "rem": "5rem", + "ch": "5ch", + "vh": "5vh", + "vw": "5vw", + "attr()": "attr(data-px)", + "calc()": ["calc(1px+2px)", "calc(5px*2)", "calc(5px/2)", "calc(100%/3 - 2*1em - 2*1px)", "calc(attr(data-px)*2)"], + "cycle()": "cycle(1px, 2x)" + } + } +}; \ No newline at end of file diff --git a/utopia.js b/utopia.js new file mode 100644 index 00000000..04c7c690 --- /dev/null +++ b/utopia.js @@ -0,0 +1,237 @@ +/** + * Utopia: A JavaScript util library that assumes modern standards support and doesn't fix any browser bugs + * @author Lea Verou (http://lea.verou.me) + * @version 0.2 + */ + +function $(expr, con) { return (con || document).querySelector(expr); } +function $$(expr, con) { return Array.prototype.slice.call((con || document).querySelectorAll(expr)); } + +// Make each ID a global variable +// Many browsers do this anyway (it’s in the HTML5 spec), so it ensures consistency +$$('[id]').forEach(function(element) { window[element.id] = element; }); + +(function(){ + +var _ = window.Utopia = { + /** + * Returns the [[Class]] of an object in lowercase (eg. array, date, regexp, string etc) + * Caution: Results for DOM elements and collections aren't reliable. + * @param {Object} obj + * + * @return {String} + */ + type: function(obj) { + if(obj === null) { return 'null'; } + + if(obj === undefined) { return 'undefined'; } + + var ret = Object.prototype.toString.call(obj).match(/^\[object\s+(.*?)\]$/)[1]; + + ret = ret? ret.toLowerCase() : ''; + + if(ret == 'number' && isNaN(obj)) { + return 'NaN'; + } + + return ret; + }, + + /** + * Iterate over the properties of an object. Checks whether the properties actually belong to it. + * Can be stopped if the function explicitly returns a value that isn't null, undefined or NaN. + * + * @param obj {Object} The object to iterate over + * @param func {Function} The function used in the iteration. Can accept 2 parameters: one of the + * value of the object and one for its name. + * @param context {Object} Context for the above function. Default is the object being iterated. + * + * @return {Object} Null or the return value of func, if it broke the loop at some point. + */ + each: function(obj, func, context) { + if(!_.type(func) == 'function') { + throw Error('The second argument in Utopia.each() must be a function'); + }; + + context = context || obj; + + for (var i in obj) { + if(obj.hasOwnProperty && obj.hasOwnProperty(i)) { + var ret = func.call(context, obj[i], i); + + if(!!ret || ret === 0 || ret === '') { + return ret; + } + } + } + + return null; + }, + + /** + * Copies the properties of one object onto another. + * + * @return {Object} destination object + */ + merge: function(objects) { + var ret = {}; + + for(var i=0; i Date: Thu, 2 Feb 2012 13:36:51 +0200 Subject: [PATCH 002/668] Last minute fixes --- csstest.js | 2 +- index.html | 12 ++++++++++++ style.css | 41 +++++++++++++++++++++++++++++++++++++++-- 3 files changed, 52 insertions(+), 3 deletions(-) diff --git a/csstest.js b/csstest.js index 5ae48b7e..b952d28f 100644 --- a/csstest.js +++ b/csstest.js @@ -170,7 +170,7 @@ Test.prototype = { thisSection.appendChild(dl); // Add to browserscope - _bTestResults[this.id + ' / ' + feature] = 100 * Math.round(passed / tests.length); + _bTestResults[this.id + ' / ' + feature.replace(/[,=]/g, '')] = Math.round(100 * passed / tests.length); } } } diff --git a/index.html b/index.html index a581cf88..713f5276 100644 --- a/index.html +++ b/index.html @@ -12,6 +12,10 @@ + + + +

The CSS3 test

@@ -30,6 +34,14 @@

Determined by passing tests out of

Time taken:

+ +
+ +
+ via Ad Packs + +
+

Specs tested:

    diff --git a/style.css b/style.css index 0672f78f..f49e5ad1 100644 --- a/style.css +++ b/style.css @@ -211,7 +211,7 @@ aside { } aside section { - margin-left: 65%; + margin-left: 66%; } aside .caution p { @@ -265,4 +265,41 @@ footer { padding: 1em 0; border-top: 1px solid hsl(200, 10%, 20%); text-align: center; - } \ No newline at end of file + } + +/* Ad packs */ +.bsa_it_ad { + padding:10px !important; + font: inherit !important; + overflow: hidden; +} + + .bsa_it_i { + display:block; + float:none; + margin: 0 10px 5px 0 !important; + } + + .bsa_it_ad img { + padding:0; + border:none; + } + + .bsa_it_ad .bsa_it_t { + padding:1px 0 0 0; + } + + .bsa_it_d { + font-size: 70% !important; + } + +.bsa_it_p { + display: none !important; +} + +#bsap_aplink { + display:block; + font-size:10px; + margin:12px 15px 0; + text-align:right; +} From c2d7b9f3cd4ee5e89659d238eb97aba39e90e5c3 Mon Sep 17 00:00:00 2001 From: Lea Verou Date: Thu, 2 Feb 2012 13:47:22 +0200 Subject: [PATCH 003/668] Last minute fixes --- csstest.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/csstest.js b/csstest.js index b952d28f..e879d542 100644 --- a/csstest.js +++ b/csstest.js @@ -21,7 +21,11 @@ Score.prototype = { }, toString: function() { - return Math.round(100 * this.passed / this.total) + '%'; + return this.percent() + '%'; + }, + + percent: function() { + return Math.round(100 * this.passed / this.total); } }; @@ -337,6 +341,8 @@ onload = function() { // Send to Browserscope var testKey = 'agt1YS1wcm9maWxlcnINCxIEVGVzdBjk97ENDA'; + + _bTestResults['Overall'] = mainScore.percent(); $u.element.create({ tag: 'script', From 66d0d561a553ace5b733f3d80d89feac60552e81 Mon Sep 17 00:00:00 2001 From: Lea Verou Date: Thu, 2 Feb 2012 13:53:58 +0200 Subject: [PATCH 004/668] Last minute fixes --- csstest.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/csstest.js b/csstest.js index e879d542..e7368fae 100644 --- a/csstest.js +++ b/csstest.js @@ -340,7 +340,7 @@ onload = function() { timeTaken.textContent = +new Date - timeBefore + 'ms'; // Send to Browserscope - var testKey = 'agt1YS1wcm9maWxlcnINCxIEVGVzdBjk97ENDA'; + var testKey = 'agt1YS1wcm9maWxlcnINCxIEVGVzdBidzawNDA'; _bTestResults['Overall'] = mainScore.percent(); From 22be48d42a1dba59826d9431c37cecc086819d74 Mon Sep 17 00:00:00 2001 From: Lea Verou Date: Thu, 2 Feb 2012 13:56:48 +0200 Subject: [PATCH 005/668] Last minute fixes --- style.css | 1 + 1 file changed, 1 insertion(+) diff --git a/style.css b/style.css index f49e5ad1..3ddb9b91 100644 --- a/style.css +++ b/style.css @@ -252,6 +252,7 @@ aside { width: 1.2em; height: 1.2em; margin-right: .5em; + vertical-align: -.2em; border-radius: 50%; box-shadow: 0 2px white; } From c8b75d0fddb7e34b050ab4ea8cc23c37f8d2f788 Mon Sep 17 00:00:00 2001 From: Lea Verou Date: Thu, 2 Feb 2012 14:10:21 +0200 Subject: [PATCH 006/668] Last minute fixes --- csstest.js | 2 +- index.html | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/csstest.js b/csstest.js index e7368fae..05c52266 100644 --- a/csstest.js +++ b/csstest.js @@ -347,7 +347,7 @@ onload = function() { $u.element.create({ tag: 'script', properties: { - src: 'http://www.browserscope.org/user/beacon/' + testKey + src: '//www.browserscope.org/user/beacon/' + testKey }, inside: $('head') }); diff --git a/index.html b/index.html index 713f5276..17e9e8bb 100644 --- a/index.html +++ b/index.html @@ -3,7 +3,7 @@ -CSS browser support tests +The CSS3 Test @@ -58,7 +58,9 @@

    Cheaters

    From afeb61578e4a87f57d47be48ffdad0c8cba56d21 Mon Sep 17 00:00:00 2001 From: Lea Verou Date: Thu, 2 Feb 2012 14:14:36 +0200 Subject: [PATCH 007/668] Last minute fixes --- tests.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests.js b/tests.js index 8c059551..7f19d942 100644 --- a/tests.js +++ b/tests.js @@ -421,7 +421,7 @@ window.Specs = { "vh": "5vh", "vw": "5vw", "attr()": "attr(data-px)", - "calc()": ["calc(1px+2px)", "calc(5px*2)", "calc(5px/2)", "calc(100%/3 - 2*1em - 2*1px)", "calc(attr(data-px)*2)"], + "calc()": ["calc(1px + 2px)", "calc(5px*2)", "calc(5px/2)", "calc(100%/3 - 2*1em - 2*1px)", "calc(attr(data-px)*2)"], "cycle()": "cycle(1px, 2x)" } } From 6f89440133776f50281261e8c0dbadc66a9ecdf2 Mon Sep 17 00:00:00 2001 From: Lea Verou Date: Thu, 2 Feb 2012 16:05:47 +0200 Subject: [PATCH 008/668] Added Donate link --- index.html | 5 +++-- style.css | 2 ++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/index.html b/index.html index 17e9e8bb..6a33bdad 100644 --- a/index.html +++ b/index.html @@ -59,8 +59,9 @@

    Cheaters

    diff --git a/style.css b/style.css index 3ddb9b91..f6d6ead8 100644 --- a/style.css +++ b/style.css @@ -259,6 +259,8 @@ aside { footer { margin-left: 65%; + font-size: 85%; + word-spacing: -1px; } footer > p { From 6bb476b0f64de9d79b7132331ff4654c50734a69 Mon Sep 17 00:00:00 2001 From: Oli Studholme Date: Fri, 3 Feb 2012 00:26:18 +0900 Subject: [PATCH 009/668] Extra tests for CSS3 Transitions, Animations and Transforms * transitions - negative duration (treated as 0s) * animations - negative duration (treated as 0s) * 2d-transforms - extra values for transform-origin, and transform (skew and matrix (FF3.5-9 required px for transform values, FF10 accepts spec's unitless numbers), multivalue transform) * 3d-transforms - extra values for perspective-origin, transform-origin, and transform (translate, matrix with unitless transform values, multivalue transform), perspective() to px --- tests.js | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/tests.js b/tests.js index 7f19d942..6c63c18d 100644 --- a/tests.js +++ b/tests.js @@ -224,7 +224,7 @@ window.Specs = { "title": "Transitions", "properties": { "transition-property": ["none", "all", "width", "width, height"], - "transition-duration": ["0s", "1s", "100ms"], + "transition-duration": ["0s", "1s", "100ms", "-1s"], "transition-timing-function": [ "ease", "linear", "ease-in", "ease-out", "ease-in-out", "cubic-bezier(.5, .5, .5, .5)", @@ -240,7 +240,7 @@ window.Specs = { "title": "Animations", "properties": { "animation-name": ["foo", "foo, bar"], - "animation-duration": ["0s", "1s", "100ms"], + "animation-duration": ["0s", "1s", "100ms", "-1s"], "animation-timing-function": [ "ease", "linear", "ease-in", "ease-out", "ease-in-out", "cubic-bezier(.5, .5, .5, .5)", @@ -265,11 +265,13 @@ window.Specs = { "transform": [ "none", "translate(5px)", "translate(5px, 10px)", "translateY(5px)", "translateX(5px)", "translateY(5%)", "translateX(5%)", - "scale(2)", "scale(2, -1)", "scaleX(2)", "scaleY(2)", - "rotate(45deg)", "skewX(45deg)", "skewY(45deg)", - "matrix(1,-.2,0,1,0,0)" + "scale(2)", "scale(2, -1)", "scaleX(2)", "scaleY(2.5)", + "rotate(45deg)", + "skew(45deg)", "skew(45deg, 15deg)", "skewX(45deg)", "skewY(45deg)", + "matrix(1,-.2,0,1,0,0)", "matrix(1,-.2,0,1,10,10)", + "translate(50px, -24px) rotate(180deg) scale(.5) skew(0, 22.5deg)" ], - "transform-origin": ["top left", "50% 100%", "right 10px bottom 20px"] + "transform-origin": ["10px", "top", "top left", "50% 100%", "left 0%", "right 10px bottom 20px"] } }, @@ -278,13 +280,16 @@ window.Specs = { "properties": { "transform-style": ["flat", "preserve-3d"], "perspective": ["none", "0", "600px"], - "perspective-origin": ["top left", "50% 100%", "right 10px bottom 20px"], + "perspective-origin": ["10px", "top", "top left", "50% 100%", "left 0%" "right 10px bottom 20px"], + "transform-origin": ["10px", "top", "top left", "50% 100%", "left 0%", "left 0% 10px"], "backface-visibility": ["visible", "hidden"], "transform": [ - "matrix3d(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)", "translateZ(5px)", + "translate(0, 0, 5px)", "translateZ(5px)", "scale3d(1, 0, -1)", "scaleZ(1.5)", - "rotate3d(1, 1, 1, 45deg)", "rotateZ(-45deg)", - "perspective(600)" + "rotate3d(1, 1, 1, 45deg)", "rotateX(-45deg)", "rotateY(-45deg)", "rotateZ(-45deg)", + "matrix3d(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)", "matrix3d(0,0,0,0,0,0,0,0,0,0,1,0,10,10,0,1)", + "translate(50px, -24px, 5px) rotate3d(1, 2, 3, 180deg) scale3d(-1, 0, .5)", + "perspective(600px)" ] } }, From d35c3d57ebf77d2ebeafb7889c1a4810813d3ea1 Mon Sep 17 00:00:00 2001 From: Oli Studholme Date: Fri, 3 Feb 2012 00:36:55 +0900 Subject: [PATCH 010/668] kittehs in code, sorry --- tests.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests.js b/tests.js index 6c63c18d..c0985b5d 100644 --- a/tests.js +++ b/tests.js @@ -280,7 +280,7 @@ window.Specs = { "properties": { "transform-style": ["flat", "preserve-3d"], "perspective": ["none", "0", "600px"], - "perspective-origin": ["10px", "top", "top left", "50% 100%", "left 0%" "right 10px bottom 20px"], + "perspective-origin": ["10px", "top", "top left", "50% 100%", "left 0%", "right 10px bottom 20px"], "transform-origin": ["10px", "top", "top left", "50% 100%", "left 0%", "left 0% 10px"], "backface-visibility": ["visible", "hidden"], "transform": [ From d532a18c360afa749555eebbf6eea456166ac223 Mon Sep 17 00:00:00 2001 From: Oli Studholme Date: Fri, 3 Feb 2012 00:48:05 +0900 Subject: [PATCH 011/668] Puttin the 3d in translate3d --- tests.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests.js b/tests.js index c0985b5d..0eab6a6e 100644 --- a/tests.js +++ b/tests.js @@ -284,11 +284,11 @@ window.Specs = { "transform-origin": ["10px", "top", "top left", "50% 100%", "left 0%", "left 0% 10px"], "backface-visibility": ["visible", "hidden"], "transform": [ - "translate(0, 0, 5px)", "translateZ(5px)", + "translate3d(0, 0, 5px)", "translateZ(5px)", "scale3d(1, 0, -1)", "scaleZ(1.5)", "rotate3d(1, 1, 1, 45deg)", "rotateX(-45deg)", "rotateY(-45deg)", "rotateZ(-45deg)", "matrix3d(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)", "matrix3d(0,0,0,0,0,0,0,0,0,0,1,0,10,10,0,1)", - "translate(50px, -24px, 5px) rotate3d(1, 2, 3, 180deg) scale3d(-1, 0, .5)", + "translate3d(50px, -24px, 5px) rotate3d(1, 2, 3, 180deg) scale3d(-1, 0, .5)", "perspective(600px)" ] } From 0adfa28a72eff92b3c6b9d7fbfb4ed01e603bae7 Mon Sep 17 00:00:00 2001 From: Oli Studholme Date: Fri, 3 Feb 2012 01:16:45 +0900 Subject: [PATCH 012/668] Extra values - vmin, max(), min(), negative calc() --- tests.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/tests.js b/tests.js index 0eab6a6e..ebe33dd1 100644 --- a/tests.js +++ b/tests.js @@ -423,10 +423,13 @@ window.Specs = { ], "rem": "5rem", "ch": "5ch", - "vh": "5vh", "vw": "5vw", + "vh": "5vh", + "vmin": "5vmin", "attr()": "attr(data-px)", - "calc()": ["calc(1px + 2px)", "calc(5px*2)", "calc(5px/2)", "calc(100%/3 - 2*1em - 2*1px)", "calc(attr(data-px)*2)"], + "calc()": ["calc(1px + 2px)", "calc(5px*2)", "calc(5px/2)", "calc(100%/3 - 2*1em - 2*1px)", "calc(attr(data-px)*2)", "calc(5px - 10px)"], + "min()": ["min(10px, 3em)", "min(10% + 20px, 300px)"], + "max()": ["max(30px, 3em)", "max(10% + 20px, 300px)"], "cycle()": "cycle(1px, 2x)" } } From e14e5c6f284a01d0a4ded129e2a407eb8e272728 Mon Sep 17 00:00:00 2001 From: Han Lin Yap Date: Thu, 2 Feb 2012 20:17:38 +0100 Subject: [PATCH 013/668] Fix "border-image fail" bug --- supports.js | 1 + 1 file changed, 1 insertion(+) diff --git a/supports.js b/supports.js index 92611cff..2591daa8 100644 --- a/supports.js +++ b/supports.js @@ -10,6 +10,7 @@ var dummy = document.createElement('_'), document.documentElement.appendChild(style); dummy.setAttribute('data-foo', 'bar'); dummy.setAttribute('data-px', '1px'); +document.documentElement.appendChild(dummy); var _ = window.Supports = { prefixes: ['', '-moz-', '-webkit-', '-o-', '-ms-', 'ms-', '-khtml-'], From 2be622bc742d19e23ace9e64ed999725f655dbca Mon Sep 17 00:00:00 2001 From: Lea Verou Date: Thu, 2 Feb 2012 22:29:39 +0200 Subject: [PATCH 014/668] Warning clarification --- index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.html b/index.html index 6a33bdad..e42397df 100644 --- a/index.html +++ b/index.html @@ -30,7 +30,7 @@

    Determined by passing tests out of

    Caution: - This test checks which CSS3 features the browser recognizes, whether they are implemented correctly or not.

    + This test checks which CSS3 features the browser recognizes, not whether they are implemented correctly.

    Time taken:

    From 44b6fde65c71f78e4897e370c29934a3da53832f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Zugmeyer?= Date: Thu, 2 Feb 2012 23:19:04 +0100 Subject: [PATCH 015/668] Quick JS code review. * try to avoid defining a same variable multiple times * creating functions in a loop is a performance killer * avoid arguments.callee, the function name is more explicit and smaller * unary '!' operator has precedence over == * if you fear that an object has no hasOwnProperty method, use the Object.prototype's one * small typo in Utopia.event.bind for the fourth argument --- csstest.js | 22 ++++++++++++---------- utopia.js | 14 ++++++++------ 2 files changed, 20 insertions(+), 16 deletions(-) diff --git a/csstest.js b/csstest.js index 05c52266..ca6e518e 100644 --- a/csstest.js +++ b/csstest.js @@ -147,13 +147,14 @@ Test.prototype = { tests = tests instanceof Array? tests : [tests]; for(var i=0, test; test = tests[i++];) { - var results = testCallback(test, feature, theseTests); + var results = testCallback(test, feature, theseTests), + success, note; if(typeof results === 'object') { - var success = results.success, - note = results.note; + success = results.success; + note = results.note; } - else { var success = +!!results } + else { success = +!!results } passed += +success; @@ -261,12 +262,13 @@ document.onclick = function(evt) { Array.prototype.and = function(arr2, separator) { separator = separator || ' '; - var ret = []; + var ret = [], + map = function(val) { + return val + separator + arr2[j] + }; for(var j=0; j Date: Fri, 3 Feb 2012 10:57:52 +0200 Subject: [PATCH 016/668] Added overall score for each spec --- csstest.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/csstest.js b/csstest.js index 05c52266..b0c96454 100644 --- a/csstest.js +++ b/csstest.js @@ -79,6 +79,9 @@ var Test = function (tests, spec, title) { this.group(id, Test.groups[id]); } + // Add overall spec score to BrowserScope + _bTestResults[this.id] = mainScore.percent(); + // Display score for this spec $u.element.create({ tag: 'span', From 2d8a0584ca933dc0c8eacbe0923e85a5170a645f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Zugmeyer?= Date: Sun, 5 Feb 2012 16:49:02 +0100 Subject: [PATCH 017/668] Reverted arguments.callee change --- csstest.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/csstest.js b/csstest.js index ca6e518e..05b07fb1 100644 --- a/csstest.js +++ b/csstest.js @@ -314,7 +314,7 @@ onload = function() { specs.push(spec); } - (function checkIfDone() { + (function() { if(specs.length) { // Get spec id var spec = specs.shift(); @@ -333,7 +333,7 @@ onload = function() { total.textContent = mainScore.total; // Schedule next test - setTimeout(checkIfDone, 50) + setTimeout(arguments.callee, 50) } else { // Done! From 1003b4e2469c35bbcb29efd0434a8e9fb0856bf0 Mon Sep 17 00:00:00 2001 From: Estelle Weyl Date: Mon, 6 Feb 2012 20:27:20 -0800 Subject: [PATCH 018/668] image("arrow.png" ltr) --- tests.js | 1 + 1 file changed, 1 insertion(+) diff --git a/tests.js b/tests.js index ebe33dd1..739c7d30 100644 --- a/tests.js +++ b/tests.js @@ -76,6 +76,7 @@ window.Specs = { "image()": [ "image('sprites.png#xywh=10,30,60,20')", "image('wavy.svg', 'wavy.png' , 'wavy.gif')", + "image('arrow.png' ltr)", "image('dark.png', black)", "image(green)" ], "element()": "element(#foo)" From e62ae36716b42d33922b21a0f5b93bf75665e526 Mon Sep 17 00:00:00 2001 From: Lea Verou Date: Thu, 9 Feb 2012 20:22:43 +0200 Subject: [PATCH 019/668] Merged css3-2d-transforms and css3-3d-transforms into css3-transforms --- tests.js | 28 +++++++++------------------- 1 file changed, 9 insertions(+), 19 deletions(-) diff --git a/tests.js b/tests.js index 739c7d30..6ef1afd6 100644 --- a/tests.js +++ b/tests.js @@ -41,7 +41,6 @@ window.Specs = { "properties": [ "background-image", "list-style-image", - "foo", "border-image", "cursor", "content" @@ -260,8 +259,8 @@ window.Specs = { } }, - "css3-2d-transforms": { - "title": "2D Transforms", + "css3-transforms": { + "title": "Transforms", "properties": { "transform": [ "none", @@ -270,28 +269,19 @@ window.Specs = { "rotate(45deg)", "skew(45deg)", "skew(45deg, 15deg)", "skewX(45deg)", "skewY(45deg)", "matrix(1,-.2,0,1,0,0)", "matrix(1,-.2,0,1,10,10)", - "translate(50px, -24px) rotate(180deg) scale(.5) skew(0, 22.5deg)" - ], - "transform-origin": ["10px", "top", "top left", "50% 100%", "left 0%", "right 10px bottom 20px"] - } - }, - - "css3-3d-transforms": { - "title": "3D Transforms", - "properties": { - "transform-style": ["flat", "preserve-3d"], - "perspective": ["none", "0", "600px"], - "perspective-origin": ["10px", "top", "top left", "50% 100%", "left 0%", "right 10px bottom 20px"], - "transform-origin": ["10px", "top", "top left", "50% 100%", "left 0%", "left 0% 10px"], - "backface-visibility": ["visible", "hidden"], - "transform": [ + "translate(50px, -24px) rotate(180deg) scale(.5) skew(0, 22.5deg)", "translate3d(0, 0, 5px)", "translateZ(5px)", "scale3d(1, 0, -1)", "scaleZ(1.5)", "rotate3d(1, 1, 1, 45deg)", "rotateX(-45deg)", "rotateY(-45deg)", "rotateZ(-45deg)", "matrix3d(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)", "matrix3d(0,0,0,0,0,0,0,0,0,0,1,0,10,10,0,1)", "translate3d(50px, -24px, 5px) rotate3d(1, 2, 3, 180deg) scale3d(-1, 0, .5)", "perspective(600px)" - ] + ], + "transform-origin": ["10px", "top", "top left", "50% 100%", "left 0%", "right 10px bottom 20px"], + "transform-style": ["flat", "preserve-3d"], + "perspective": ["none", "0", "600px"], + "perspective-origin": ["10px", "top", "top left", "50% 100%", "left 0%", "right 10px bottom 20px"], + "backface-visibility": ["visible", "hidden"], } }, From 69785d6d26dc7207b8664e64b07a9026d4959b44 Mon Sep 17 00:00:00 2001 From: rasamassen Date: Fri, 10 Feb 2012 11:26:13 -0600 Subject: [PATCH 020/668] Add support for writing-modes --- tests.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/tests.js b/tests.js index 6ef1afd6..e412709b 100644 --- a/tests.js +++ b/tests.js @@ -364,6 +364,19 @@ window.Specs = { } }, + "css3-writing-modes": { + "title": "Writing Modes", + "properties": { + "direction": ["ltr", "rtl"], + "unicode-bidi": ["normal", "embed", "isolate", "bidi-override", "plaintext"], + "writing-mode": ["horizontal-tb", "vertical-rl", "vertical-lr"], + "text-orientation": ["upright-right", "upright", "sideways-right", "sideways-left", "sideways", "use-glyph-orientation"], + "caption-side": ["before", "after"], + "text-combine-horizontal": ["none", "all", "digits 2", "ascii-digits 2", "alpha 2", "latin 2", "alphanumeric 2"], + "text-combine-mode": ["auto", "compress", "no-compress", "use-glyphs"] + } + }, + "css3-color": { "title": "Color", "values": { From fd0c5772e3a2dae1a7ee7847908f0512f46cc52c Mon Sep 17 00:00:00 2001 From: rasamassen Date: Fri, 10 Feb 2012 13:07:39 -0600 Subject: [PATCH 021/668] Remove CSS2.1 properties / values. --- tests.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tests.js b/tests.js index e412709b..0b08e14c 100644 --- a/tests.js +++ b/tests.js @@ -367,8 +367,7 @@ window.Specs = { "css3-writing-modes": { "title": "Writing Modes", "properties": { - "direction": ["ltr", "rtl"], - "unicode-bidi": ["normal", "embed", "isolate", "bidi-override", "plaintext"], + "unicode-bidi": ["isolate", "plaintext"], "writing-mode": ["horizontal-tb", "vertical-rl", "vertical-lr"], "text-orientation": ["upright-right", "upright", "sideways-right", "sideways-left", "sideways", "use-glyph-orientation"], "caption-side": ["before", "after"], From 8b91e0d0c222ac50a94f615e2fa0e0e0f451bdc2 Mon Sep 17 00:00:00 2001 From: Lea Verou Date: Wed, 22 Feb 2012 06:50:00 +0200 Subject: [PATCH 022/668] Made media query tests more accurate. Now besides being parsed, they also need to actually match --- csstest.js | 4 +++- supports.js | 29 +++++++++++++++++++++++++++++ tests.js | 48 ++++++++++++++++++++++++++++-------------------- 3 files changed, 60 insertions(+), 21 deletions(-) diff --git a/csstest.js b/csstest.js index d30cad9c..4bb5ceba 100644 --- a/csstest.js +++ b/csstest.js @@ -220,7 +220,9 @@ Test.groups = { }, 'Media queries': function(test) { - return Supports.mq(test); + var matches = matchMedia(test); + + return matches.media !== 'invalid' && matches.matches; } }; diff --git a/supports.js b/supports.js index 2591daa8..8a071f0a 100644 --- a/supports.js +++ b/supports.js @@ -1,3 +1,32 @@ +/*! matchMedia() polyfill - Test a CSS media type/query in JS. +Authors & copyright (c) 2012: Scott Jehl, Paul Irish, Nicholas Zakas. Dual MIT/BSD license */ +window.matchMedia = window.matchMedia || (function(doc, undefined){ + + var bool, + docElem = doc.documentElement, + refNode = docElem.firstElementChild || docElem.firstChild, + // fakeBody required for + fakeBody = doc.createElement('body'), + div = doc.createElement('div'); + + div.id = 'mq-test-1'; + div.style.cssText = "position:absolute;top:-100em"; + fakeBody.appendChild(div); + + return function(q){ + + div.innerHTML = '­'; + + docElem.insertBefore(fakeBody, refNode); + bool = div.offsetWidth == 42; + docElem.removeChild(fakeBody); + + return { matches: bool, media: q }; + }; + +})(document); + + (function(){ /** diff --git a/tests.js b/tests.js index 0b08e14c..63bb55c9 100644 --- a/tests.js +++ b/tests.js @@ -144,41 +144,49 @@ window.Specs = { } }, + /* + * Note: the following media queries must be true in supporting UAs! + */ "css3-mediaqueries": { "title": "Media Queries", "Media queries": { - "width": ["(width:10px)", "(min-width:10px)", "(max-width:10px)"], - "height": ["(height:10px)", "(min-height:10px)", "(max-height:10px)"], - "device-width": ["(device-width:10px)", "(device-min-width:10px)", "(device-max-width:10px)"], - "device-height": ["(device-height:10px)", "(device-min-height:10px)", "(device-max-height:10px)"], - "orientation": ["(orientation:portrait)", "(orientation:landscape)"], + "negation": ["not print", "(not width:1px)"], + "width": ["(width)", "(min-width:1px)", "(max-width:1000000px)"], + "height": ["(height)", "(min-height:1px)", "(max-height:1000000px)"], + "device-width": ["(device-width)", "(min-device-width:1px)", "(max-device-width:1000000px)"], + "device-height": ["(device-height)", "(min-device-height:1px)", "(max-device-height:1000000px)"], + "orientation": "(orientation:portrait), (orientation:landscape)", "aspect-ratio": [ - "(aspect-ratio:3/4)", "(aspect-ratio:3 /4)", "(aspect-ratio:3/ 4)", - "(min-aspect-ratio:3/4)", "(max-aspect-ratio:3/4)" + "(aspect-ratio)", + "(min-aspect-ratio:1/1000000)", + "(min-aspect-ratio:1 / 1000000)", + "(max-aspect-ratio:1000000/1)", ], "device-aspect-ratio": [ - "(device-aspect-ratio:3/4)", "(device-aspect-ratio:3 /4)", "(device-aspect-ratio:3/ 4)", - "(min-device-aspect-ratio:3/4)", "(max-device-aspect-ratio:3/4)" + "(device-aspect-ratio)", + "(min-device-aspect-ratio:1/1000000)", + "(min-device-aspect-ratio:1 / 1000000)", + "(max-device-aspect-ratio:1000000/1)", ], "color": [ - "(color)", "(color: 0)", "(color: 1)", "(color: 100)", - "(min-color: 2)", "(max-color: 3)" + "(color)", "(min-color: 0)", "(max-color: 100)" ], "color-index": [ - "(color-index)", "(color-index: 0)", "(color-index: 1)", "(color-index: 100)", - "(min-color-index: 2)", "(max-color-index: 3)" + "all, (color-index)", + "(min-color-index: 0)", + "(max-color-index: 10000000)" ], "monochrome": [ - "(monochrome)", "(monochrome: 0)", "(monochrome: 1)", "(monochrome: 100)", - "(min-monochrome: 2)", "(max-monochrome: 3)" + "all, (monochrome)", "(min-monochrome: 0)", "(max-monochrome: 10000)" ], "resolution": [ - "(resolution: 300dpi)", "(resolution: 120dpcm)", - "(min-resolution: 300dpi)", "(min-resolution: 120dpcm)", - "(max-resolution: 300dpi)", "(max-resolution: 120dpcm)" + "(resolution)", + "(min-resolution: 1dpi)", + "(max-resolution: 1000000dpi)", + "(max-resolution: 1000000dpcm)" ], - "scan": ["(scan: progressive)", "(scan: interlace)"], - "grid": ["(grid)", "(grid: 0)", "(grid:-0)", "(grid: 1)"] + "scan": ["not tv, (scan: progressive)", "not tv, (scan: interlace)"], + "grid": ["all, (grid)", "(grid: 0), (grid: 1)"] } }, From 4529638e81f0639b4910e41f1e12556ac74d8d16 Mon Sep 17 00:00:00 2001 From: rasamassen Date: Wed, 22 Feb 2012 13:18:11 -0600 Subject: [PATCH 023/668] Add marquee, speech, flexbox, and page --- tests.js | 81 +++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 80 insertions(+), 1 deletion(-) diff --git a/tests.js b/tests.js index 63bb55c9..799ff41c 100644 --- a/tests.js +++ b/tests.js @@ -443,5 +443,84 @@ window.Specs = { "max()": ["max(30px, 3em)", "max(10% + 20px, 300px)"], "cycle()": "cycle(1px, 2x)" } - } + }, + + "css3-marquee": { + "title": "Marquee", + "properties": { + "overflow-style": ["auto", "marquee-line", "marquee-block"], + "marquee-style": ["scroll", "slide", "alternate"], + "marquee-play-count": ["0", "1", "infinite"], + "marquee-direction": ["forward", "reverse"], + "marquee-speed": ["slow", "normal", "fast"], + "text-combine-mode": ["auto", "compress", "no-compress", "use-glyphs"] + } + }, + + "css3-speech": { + "title": "Speech", + "properties": { + "voice-volume": ["silent", "x-soft", "soft", "medium", "loud", "x-loud", "-6dB", "0", "6db"], + "voice-balance": ["left", "center", "right", "leftwards", "rightwards", "-100", "0", "100"], + "speak": ["auto"], + "speak-as": ["normal", "spell-out", "digits", "literal-punctuation", "no-punctuation"], + "pause-before": ["none", "x-weak", "weak", "medium", "strong", "x-strong"], + "pause-after": ["none", "x-weak", "weak", "medium", "strong", "x-strong"], + "pause": ["none", "x-weak", "weak", "medium", "strong", "x-strong"], + "rest-before": ["none", "x-weak", "weak", "medium", "strong", "x-strong", "+3s", "250ms"], + "rest-after": ["none", "x-weak", "weak", "medium", "strong", "x-strong", "+3s", "250ms"], + "rest": ["none", "x-weak", "weak", "medium", "strong", "x-strong", "+3s", "250ms"], + "cue-before": ["-6dB", "0", "6db"], + "cue-after": ["-6dB", "0", "6db"], + "cue": ["-6dB", "0", "6db"], + "voice-family": ["preserve"], + "voice-rate": ["normal", "x-slow", "slow", "medium", "fast", "x-fast", "0", "100%"], + "voice-pitch": ["absolute", "x-low", "low", "medium", "high", "x-high", "0", "100%", "-100%", "250Hz", "+250Hz", "-20Hz", "-3.5st", "3.5st"], + "voice-range": ["absolute", "x-low", "low", "medium", "high", "x-high", "0", "100%", "-100%", "250Hz", "+250Hz", "-20Hz", "-3.5st", "3.5st"], + "voice-stress": ["normal", "strong", "moderate", "none", "reduced "], + "voice-duration": ["auto", "+3s", "250ms"] + } + }, + + "css3-flexbox": { + "title": "Flexible Box Layout", + "properties": { + "display": ["flexbox", "inline-flexbox"], + "flex-flow": ["row", "row-reverse", "column", "column-reverse", "wrap", "wrap-reverse"], + "flex-order": ["0", "1"], + "flex-pack": ["start", "end", "center", "justify"], + "flex-align": ["start", "end", "center", "baseline", "stretch"], + "flex-line-pack": ["start", "end", "center", "justify"] + } + }, + + "css3-page": { + "title": "Paged Media", + "properties": { + "size": ["auto", "portrait", "landscape", "8.5in 11in", "A4", "legal"], + "page": ["auto", "foo"], + "image-orientation": ["auto", "0", "90deg", "-1deg"], + "fit": ["fill", "hidden", "meet", "slice"], + "fit-position": ["0 0", "14% 84%", "2cm 2cm", "top", "center", "bottom", "left", "center", "right", "auto", "bottom left"] + }, + "@rules": { + "@page": "@page foo", + "@top-left-corner": "@top-left-corner", + "@top-left": "@top-left", + "@top-center": "@top-center", + "@top-right": "@top-right", + "@top-right-corner": "@top-right-corner", + "@bottom-left-corner": "@bottom-left-corner", + "@bottom-left": "@bottom-left", + "@bottom-center": "@bottom-center", + "@bottom-right": "@bottom-right", + "@bottom-right-corner": "@bottom-right-corner", + "@left-top": "@left-top", + "@left-middle": "@left-middle", + "@right-bottom": "@right-bottom", + "@right-top": "@right-top", + "@right-middle": "@right-middle", + "@right-bottom": "@right-bottom" + } + }, }; \ No newline at end of file From 4de0b637a7bb8094227e561d75df6e6eeca225ad Mon Sep 17 00:00:00 2001 From: rasamassen Date: Wed, 22 Feb 2012 13:21:40 -0600 Subject: [PATCH 024/668] Update tests.js --- tests.js | 32 +------------------------------- 1 file changed, 1 insertion(+), 31 deletions(-) diff --git a/tests.js b/tests.js index 799ff41c..d5ec7451 100644 --- a/tests.js +++ b/tests.js @@ -492,35 +492,5 @@ window.Specs = { "flex-align": ["start", "end", "center", "baseline", "stretch"], "flex-line-pack": ["start", "end", "center", "justify"] } - }, - - "css3-page": { - "title": "Paged Media", - "properties": { - "size": ["auto", "portrait", "landscape", "8.5in 11in", "A4", "legal"], - "page": ["auto", "foo"], - "image-orientation": ["auto", "0", "90deg", "-1deg"], - "fit": ["fill", "hidden", "meet", "slice"], - "fit-position": ["0 0", "14% 84%", "2cm 2cm", "top", "center", "bottom", "left", "center", "right", "auto", "bottom left"] - }, - "@rules": { - "@page": "@page foo", - "@top-left-corner": "@top-left-corner", - "@top-left": "@top-left", - "@top-center": "@top-center", - "@top-right": "@top-right", - "@top-right-corner": "@top-right-corner", - "@bottom-left-corner": "@bottom-left-corner", - "@bottom-left": "@bottom-left", - "@bottom-center": "@bottom-center", - "@bottom-right": "@bottom-right", - "@bottom-right-corner": "@bottom-right-corner", - "@left-top": "@left-top", - "@left-middle": "@left-middle", - "@right-bottom": "@right-bottom", - "@right-top": "@right-top", - "@right-middle": "@right-middle", - "@right-bottom": "@right-bottom" - } - }, + } }; \ No newline at end of file From 77d5036f71e5acb9494a9c022c4c28492dc3ec8b Mon Sep 17 00:00:00 2001 From: rasamassen Date: Wed, 22 Feb 2012 21:54:23 -0600 Subject: [PATCH 025/668] Remove marquee --- tests.js | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/tests.js b/tests.js index d5ec7451..d2582743 100644 --- a/tests.js +++ b/tests.js @@ -445,18 +445,6 @@ window.Specs = { } }, - "css3-marquee": { - "title": "Marquee", - "properties": { - "overflow-style": ["auto", "marquee-line", "marquee-block"], - "marquee-style": ["scroll", "slide", "alternate"], - "marquee-play-count": ["0", "1", "infinite"], - "marquee-direction": ["forward", "reverse"], - "marquee-speed": ["slow", "normal", "fast"], - "text-combine-mode": ["auto", "compress", "no-compress", "use-glyphs"] - } - }, - "css3-speech": { "title": "Speech", "properties": { From b19c48929c263c7a551e2182a8597756dc9c573c Mon Sep 17 00:00:00 2001 From: Lea Verou Date: Tue, 13 Mar 2012 23:18:39 -0500 Subject: [PATCH 026/668] Added 2 tests --- tests.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests.js b/tests.js index 63bb55c9..63477f69 100644 --- a/tests.js +++ b/tests.js @@ -410,7 +410,7 @@ window.Specs = { "properties": { "column-width": ["10em", "auto"], "column-count": ["2", "auto"], - "columns": ["10em 2", "auto 2", "10em auto", "auto auto", "2 10em", "auto 10em", "2 auto"], + "columns": ["100px", "3", "10em 2", "auto 2", "10em auto", "auto auto", "2 10em", "auto 10em", "2 auto"], "column-gap": ["1em", "normal"], "column-rule-color": "red", "column-rule-style": ["none", "solid", "dotted"], From 2fe1229ef9c90bd27ab4021203f6d20e5a5a47d8 Mon Sep 17 00:00:00 2001 From: Lea Verou Date: Tue, 13 Mar 2012 23:20:31 -0500 Subject: [PATCH 027/668] Fixed #15 --- index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.html b/index.html index e42397df..48fe48c8 100644 --- a/index.html +++ b/index.html @@ -59,7 +59,7 @@

    Cheaters

    From ed844bf40b5fd6055308957c47de5a610ec79b64 Mon Sep 17 00:00:00 2001 From: Lea Verou Date: Thu, 26 Apr 2012 11:49:08 +0200 Subject: [PATCH 028/668] Added new values for animation-direction: reverse and alternate-reverse --- tests.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests.js b/tests.js index 1fdf23af..cbe32dc3 100644 --- a/tests.js +++ b/tests.js @@ -256,7 +256,7 @@ window.Specs = { "step-start", "step-end", "steps(3, start)", "steps(5, end)" ], "animation-iteration-count": ["infinite", "8", "4.35"], - "animation-direction": ["normal", "alternate"], + "animation-direction": ["normal", "alternate", "reverse", "alternate-reverse"], "animation-play-state": ["running", "paused"], "animation-delay": ["1s", "-1s"], "animation-fill-mode": ["none", "forwards", "backwards", "both"], From 2b02ad72e234394d617a74015af2b6cae5cd471b Mon Sep 17 00:00:00 2001 From: rasamassen Date: Wed, 2 May 2012 12:14:08 -0500 Subject: [PATCH 029/668] Removed Image Values and Replaced Content element() test and image() test using ltr per http://www.w3.org/TR/css3-images/#changes Closed issue #16 Changed writing-mode test for "upright-right" to "mixed-right" per http://www.w3.org/TR/css3-writing-modes/#recent-changes --- tests.js | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/tests.js b/tests.js index cbe32dc3..749fd993 100644 --- a/tests.js +++ b/tests.js @@ -75,10 +75,8 @@ window.Specs = { "image()": [ "image('sprites.png#xywh=10,30,60,20')", "image('wavy.svg', 'wavy.png' , 'wavy.gif')", - "image('arrow.png' ltr)", "image('dark.png', black)", "image(green)" ], - "element()": "element(#foo)" }, "properties": { "object-fit": ["fill", "contain", "cover", "none", "scale-down"], @@ -377,9 +375,9 @@ window.Specs = { "properties": { "unicode-bidi": ["isolate", "plaintext"], "writing-mode": ["horizontal-tb", "vertical-rl", "vertical-lr"], - "text-orientation": ["upright-right", "upright", "sideways-right", "sideways-left", "sideways", "use-glyph-orientation"], + "text-orientation": ["mixed-right", "upright", "sideways-right", "sideways-left", "sideways", "use-glyph-orientation"], "caption-side": ["before", "after"], - "text-combine-horizontal": ["none", "all", "digits 2", "ascii-digits 2", "alpha 2", "latin 2", "alphanumeric 2"], + "text-combine-horizontal": ["none", "all", "numeric 2", "digits 2", "alpha 2", "latin 2", "alphanumeric 2"], "text-combine-mode": ["auto", "compress", "no-compress", "use-glyphs"] } }, @@ -439,8 +437,6 @@ window.Specs = { "vmin": "5vmin", "attr()": "attr(data-px)", "calc()": ["calc(1px + 2px)", "calc(5px*2)", "calc(5px/2)", "calc(100%/3 - 2*1em - 2*1px)", "calc(attr(data-px)*2)", "calc(5px - 10px)"], - "min()": ["min(10px, 3em)", "min(10% + 20px, 300px)"], - "max()": ["max(30px, 3em)", "max(10% + 20px, 300px)"], "cycle()": "cycle(1px, 2x)" } }, From d6e88743d70c516abd49abcdc0eb4ced81bc9b65 Mon Sep 17 00:00:00 2001 From: Lea Verou Date: Wed, 23 May 2012 18:26:53 -0700 Subject: [PATCH 030/668] Update tests.js --- tests.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests.js b/tests.js index 749fd993..71919e65 100644 --- a/tests.js +++ b/tests.js @@ -469,7 +469,7 @@ window.Specs = { "css3-flexbox": { "title": "Flexible Box Layout", "properties": { - "display": ["flexbox", "inline-flexbox"], + "display": ["flex", "inline-flex"], "flex-flow": ["row", "row-reverse", "column", "column-reverse", "wrap", "wrap-reverse"], "flex-order": ["0", "1"], "flex-pack": ["start", "end", "center", "justify"], From 592c30cbdc4f77dd5a9eae97287fa646e0615973 Mon Sep 17 00:00:00 2001 From: Alexis Menard Date: Mon, 4 Jun 2012 14:23:59 -0300 Subject: [PATCH 031/668] According to http://dev.w3.org/csswg/css3-flexbox/ various flexbox properties has been renamed. This patch updates them. --- tests.js | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/tests.js b/tests.js index 71919e65..f4c8e04d 100644 --- a/tests.js +++ b/tests.js @@ -471,10 +471,11 @@ window.Specs = { "properties": { "display": ["flex", "inline-flex"], "flex-flow": ["row", "row-reverse", "column", "column-reverse", "wrap", "wrap-reverse"], - "flex-order": ["0", "1"], - "flex-pack": ["start", "end", "center", "justify"], - "flex-align": ["start", "end", "center", "baseline", "stretch"], - "flex-line-pack": ["start", "end", "center", "justify"] + "order": ["0", "1"], + "justify-content": ["flex-start", "flex-end", "center", "space-between", "space-around"], + "align-content": ["flex-start", "flex-end", "center", "space-between", "space-around", "stretch"], + "align-items": ["flex-start", "flex-end", "center", "baseline", "stretch"], + "align-self": ["flex-start", "flex-end", "center", "baseline", "stretch", "auto"] } } -}; \ No newline at end of file +}; From dec5655c2fc993f508b5642abdca39957a6d4c97 Mon Sep 17 00:00:00 2001 From: rasamassen Date: Sat, 30 Jun 2012 10:12:47 -0500 Subject: [PATCH 032/668] Close Issue 23 --- style.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/style.css b/style.css index f6d6ead8..000fed84 100644 --- a/style.css +++ b/style.css @@ -20,7 +20,7 @@ h1, h2 { } body > section section section h1 { - font-size: 200%; + font-size: 180%; } section section section section h1 { From b79f1ef519efb49f216bd9524141731cbd74447c Mon Sep 17 00:00:00 2001 From: rasamassen Date: Sat, 30 Jun 2012 10:13:59 -0500 Subject: [PATCH 033/668] =?UTF-8?q?http://dev.w3.org/csswg/css3-text/#chan?= =?UTF-8?q?ges=20Dropped=20the=20=E2=80=98text-wrap=E2=80=99=20and=20?= =?UTF-8?q?=E2=80=98text-space-collapse=E2=80=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/tests.js b/tests.js index f4c8e04d..2f380590 100644 --- a/tests.js +++ b/tests.js @@ -295,12 +295,10 @@ window.Specs = { "title": "Text", "properties": { "text-transform": ["full-width", "full-size-kana"], - "text-space-collapse": ["collapse", "preserve", "preserve-breaks"], "tab-size": ["4", "1em"], "line-break": ["auto", "loose", "normal", "strict"], "word-break": ["normal", "keep-all", "break-all"], "hyphens": ["auto", "manual", "none"], - "text-wrap": ["normal", "none", "avoid"], "overflow-wrap": ["normal", "break-word"], "text-align": ["start", "end", "'a'", "match-parent", "start end"], "text-align-last": ["auto", "start", "end", "left", "right", "center", "justify"], From f633dbcb0dadd62cd31c1c558fee7571a1737dbd Mon Sep 17 00:00:00 2001 From: rasamassen Date: Sat, 30 Jun 2012 10:17:09 -0500 Subject: [PATCH 034/668] http://dev.w3.org/csswg/css3-values/#toggle cycle() is now toggle() --- tests.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests.js b/tests.js index 2f380590..b51216e3 100644 --- a/tests.js +++ b/tests.js @@ -435,7 +435,7 @@ window.Specs = { "vmin": "5vmin", "attr()": "attr(data-px)", "calc()": ["calc(1px + 2px)", "calc(5px*2)", "calc(5px/2)", "calc(100%/3 - 2*1em - 2*1px)", "calc(attr(data-px)*2)", "calc(5px - 10px)"], - "cycle()": "cycle(1px, 2x)" + "toggle()": "toggle(1px, 2px)" } }, From b9a636f1ba4d992a06531e6285794ed0dc62dc3f Mon Sep 17 00:00:00 2001 From: rasamassen Date: Sat, 30 Jun 2012 10:23:53 -0500 Subject: [PATCH 035/668] http://dev.w3.org/csswg/css3-flexbox/#changes Major changes to flexbox --- tests.js | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/tests.js b/tests.js index b51216e3..326537dc 100644 --- a/tests.js +++ b/tests.js @@ -467,13 +467,21 @@ window.Specs = { "css3-flexbox": { "title": "Flexible Box Layout", "properties": { - "display": ["flex", "inline-flex"], - "flex-flow": ["row", "row-reverse", "column", "column-reverse", "wrap", "wrap-reverse"], - "order": ["0", "1"], - "justify-content": ["flex-start", "flex-end", "center", "space-between", "space-around"], "align-content": ["flex-start", "flex-end", "center", "space-between", "space-around", "stretch"], "align-items": ["flex-start", "flex-end", "center", "baseline", "stretch"], "align-self": ["flex-start", "flex-end", "center", "baseline", "stretch", "auto"] + "display": ["flex", "inline-flex"], + "flex": ["none","5 7 10%"], + "flex-basis": ["auto","1px"], + "flex-direction": ["row","row-reverse","column","column-reverse"], + "flex-flow": ["row", "row-reverse", "column", "column-reverse", "wrap", "wrap-reverse"], + "flex-grow": ["0","5"], + "flex-shrink": ["1","10"], + "flex-wrap": ["nowrap", "wrap", "wrap-reverse"], + "justify-content": ["flex-start", "flex-end", "center", "space-between", "space-around"], + "min-height": ["auto"], + "min-width": ["auto"], + "order": ["0", "1"], } } }; From 72a02be62510623e307adf571fe7c714717411f4 Mon Sep 17 00:00:00 2001 From: rasamassen Date: Sat, 30 Jun 2012 10:31:22 -0500 Subject: [PATCH 036/668] Fixed order of "buggy" and "very-buggy" --- csstest.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/csstest.js b/csstest.js index 4bb5ceba..5839f68c 100644 --- a/csstest.js +++ b/csstest.js @@ -241,8 +241,8 @@ function passclass(info) { var classes = [ 'fail', - 'buggy', 'very-buggy', + 'buggy', 'slightly-buggy', 'almost-pass', ]; From 3f1f80f19165d15571c8aa2d728de37d3f9d466c Mon Sep 17 00:00:00 2001 From: rasamassen Date: Sat, 30 Jun 2012 10:40:39 -0500 Subject: [PATCH 037/668] Missing comma --- tests.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests.js b/tests.js index 326537dc..a24bd5bc 100644 --- a/tests.js +++ b/tests.js @@ -469,7 +469,7 @@ window.Specs = { "properties": { "align-content": ["flex-start", "flex-end", "center", "space-between", "space-around", "stretch"], "align-items": ["flex-start", "flex-end", "center", "baseline", "stretch"], - "align-self": ["flex-start", "flex-end", "center", "baseline", "stretch", "auto"] + "align-self": ["flex-start", "flex-end", "center", "baseline", "stretch", "auto"], "display": ["flex", "inline-flex"], "flex": ["none","5 7 10%"], "flex-basis": ["auto","1px"], From 5007cea391c8fa077aedf10bfcc480608288dbfb Mon Sep 17 00:00:00 2001 From: Peter Gasston Date: Wed, 25 Jul 2012 12:47:15 +0100 Subject: [PATCH 038/668] Added emoticons to remove reliance on colour --- style.css | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/style.css b/style.css index 000fed84..48663110 100644 --- a/style.css +++ b/style.css @@ -131,6 +131,7 @@ dt, dd[class] { color: white; border-radius: .3em; text-shadow: 0 -.05em .1em rgba(0,0,0,.5); + position: relative; } dt { @@ -206,6 +207,23 @@ dl.open > dd { display: block; } +dt:after, +dd[class]:after { + letter-spacing: -3px; + line-height: 35px; + position: absolute; + right: 10px; + top: 0; +} + +.buggy:after { content: ':|'; } + +.epic-fail:after { content: '>:('; } + +.pass:after { content: ':)'; } + +.very-buggy:after { content: ':('; } + aside { font-size: 85%; } From d86f8b95ce4baaf834f425f425e82b7558e6d204 Mon Sep 17 00:00:00 2001 From: Peter Gasston Date: Wed, 25 Jul 2012 13:12:25 +0100 Subject: [PATCH 039/668] Added slighgtly-buggy state, altered letter-spacing --- style.css | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/style.css b/style.css index 48663110..54af6bca 100644 --- a/style.css +++ b/style.css @@ -209,7 +209,7 @@ dl.open > dd { dt:after, dd[class]:after { - letter-spacing: -3px; + letter-spacing: -2px; line-height: 35px; position: absolute; right: 10px; @@ -220,7 +220,9 @@ dd[class]:after { .epic-fail:after { content: '>:('; } -.pass:after { content: ':)'; } +.pass:after { content: ':D'; } + +.slightly-buggy:after { content: ':)'; } .very-buggy:after { content: ':('; } From 249715198612e77c30efbda4aa7d5769a87a4c95 Mon Sep 17 00:00:00 2001 From: Peter Gasston Date: Fri, 27 Jul 2012 00:47:18 +0100 Subject: [PATCH 040/668] Updated styling; added missing states --- style.css | 33 ++++++++++++++++++++++++++++----- 1 file changed, 28 insertions(+), 5 deletions(-) diff --git a/style.css b/style.css index 54af6bca..ecaf48c2 100644 --- a/style.css +++ b/style.css @@ -207,24 +207,43 @@ dl.open > dd { display: block; } +/* Emoticons */ + +dt:after, +dd[class]:after, +#specsTested li:after { + opacity: 0.75; + position: absolute; + top: 0; +} + dt:after, dd[class]:after { letter-spacing: -2px; line-height: 35px; - position: absolute; right: 10px; - top: 0; } -.buggy:after { content: ':|'; } +#specsTested li:after { + line-height: 29px; + right: 0; +} + +.almost-pass:after { content: ':)'; } + +.buggy:after { content: ':('; } .epic-fail:after { content: '>:('; } +.fail:after { content: ':′('; } + .pass:after { content: ':D'; } -.slightly-buggy:after { content: ':)'; } +.slightly-buggy:after { content: ':|'; } -.very-buggy:after { content: ':('; } +.very-buggy:after { content: ':o'; } + +/* End emoticons */ aside { font-size: 85%; @@ -266,6 +285,10 @@ aside { border-bottom: none; } + #specsTested li { + position: relative; + } + #specsTested li:before { content: ''; display: inline-block; From 19d757e88bc07dde404fd5c3bb4e25b1e44d8a24 Mon Sep 17 00:00:00 2001 From: Peter Gasston Date: Fri, 27 Jul 2012 01:00:06 +0100 Subject: [PATCH 041/668] Updated angry emoticon --- style.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/style.css b/style.css index ecaf48c2..e9648067 100644 --- a/style.css +++ b/style.css @@ -233,7 +233,7 @@ dd[class]:after { .buggy:after { content: ':('; } -.epic-fail:after { content: '>:('; } +.epic-fail:after { content: '›:('; } .fail:after { content: ':′('; } From 66d92e05163c3d95660904c1265b249ab785e195 Mon Sep 17 00:00:00 2001 From: Peter Gasston Date: Fri, 27 Jul 2012 01:12:20 +0100 Subject: [PATCH 042/668] Sidebar emoticons use Monaco/Consolas --- style.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/style.css b/style.css index e9648067..00924d67 100644 --- a/style.css +++ b/style.css @@ -225,7 +225,7 @@ dd[class]:after { } #specsTested li:after { - line-height: 29px; + font: 83.3%/29px Monaco, Consolas, monospace; right: 0; } From 44554fc0945b261b3a22b58d6ebb0d8c669db46b Mon Sep 17 00:00:00 2001 From: Christian Oliff Date: Mon, 30 Jul 2012 17:31:57 +0900 Subject: [PATCH 043/668] Added favicon.ico A quick and simple favicon.ico based on the nice design at css3test.com, just the curly brackets on pink background. Icon will automatically display in all versions of Opera, Firefox, IE, Chrome, Safari etc. The icon is 32x32 pixels which is used in IE10 and all other browsers auto-scale the icon down to 16x16. Just drop it in the root folder. --- favicon.ico | Bin 0 -> 766 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 favicon.ico diff --git a/favicon.ico b/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..7fda0a8af6683a0bd077e1d0d07694e7af657705 GIT binary patch literal 766 zcmchVy-Gtt5QUE-SlDEU#KIq~b}Uoq~HgGyBc%&Rk{}7_u*)&zK#-+c1y=uwcrYR!tuFQMa}1 zSX3rNq9KX>IpSiEc(@^2cZ7o27UFn`I9(&omAF13ZWE&OM0~t69A;O02K!Mp@J5o< zbTMh#M*8MUk){@9#sfAg5?P)jZ>2mLxhz?q?8`x8$z-NOI? literal 0 HcmV?d00001 From 129de331986b0157b5945060abda4ea3b96ec4bf Mon Sep 17 00:00:00 2001 From: Peter Kavanagh Date: Sun, 26 Aug 2012 11:16:13 +1000 Subject: [PATCH 044/668] "full-size-kana" value removed from text-transform --- tests.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests.js b/tests.js index a24bd5bc..144e6e79 100644 --- a/tests.js +++ b/tests.js @@ -294,7 +294,7 @@ window.Specs = { "css3-text": { "title": "Text", "properties": { - "text-transform": ["full-width", "full-size-kana"], + "text-transform": ["full-width"], "tab-size": ["4", "1em"], "line-break": ["auto", "loose", "normal", "strict"], "word-break": ["normal", "keep-all", "break-all"], From c83683370b4c86dbe8e8f52a6406a72d52da656a Mon Sep 17 00:00:00 2001 From: Peter Kavanagh Date: Sun, 26 Aug 2012 11:58:29 +1000 Subject: [PATCH 045/668] Bring css3-fonts up-to-date with the latest spec. --- tests.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/tests.js b/tests.js index 144e6e79..ff163066 100644 --- a/tests.js +++ b/tests.js @@ -330,7 +330,7 @@ window.Specs = { "font-kerning": ["auto", "normal", "none"], "font-variant-position": ["normal", "sub", "super"], "font-variant-ligatures": [ - "normal", + "normal", "none", "common-ligatures", "no-common-ligatures", "discretionary-ligatures", "no-discretionary-ligatures", "historical-ligatures", "no-historical-ligatures", @@ -360,7 +360,10 @@ window.Specs = { "full-width", "proportional-width", "ruby", "simplified full-width ruby" ], - "font-variant": "sub lining-nums contextual ruby" + "font-variant": "sub lining-nums contextual ruby", + "font-feature-settings": ["normal", "'c2sc'", "'smcp' on", "'liga' off", "'smcp', 'swsh' 2"], + "font-language-override": ["normal", "'SRB'"], + "unicode-range": ["U+416", "U+0-7F", "U+A5, U+4E00-9FFF", "U+30??"] }, "@rules": { "@font-face": "@font-face", From 176158e9b3904034e9cfb3dca3a0a3d728e1d387 Mon Sep 17 00:00:00 2001 From: Peter Kavanagh Date: Sun, 26 Aug 2012 12:04:49 +1000 Subject: [PATCH 046/668] Just some housekeeping --- tests.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests.js b/tests.js index ff163066..a7b2d7c0 100644 --- a/tests.js +++ b/tests.js @@ -17,7 +17,7 @@ window.Specs = { ], "border-radius": ["10px", "50%", "10px / 20px", "2px 4px 8px 16px"], "border-image-source": ["none", "url(foo.png)"], - "border-image-slice": ['10', '30%'].times(1, 4).concat(["fill 30%", "fill 10", "fill 2 4 8% 16%", "30% fill", "10 fill", "2 4 8% 16% fill"]), + "border-image-slice": ["10", "30%"].times(1, 4).concat(["fill 30%", "fill 10", "fill 2 4 8% 16%", "30% fill", "10 fill", "2 4 8% 16% fill"]), "border-image-width": ["10px", "5%", "28", "auto", "10px 10px", "5% 10px", "28 10px", "auto 10px", "10px 5%", "5% 5%", "28 5%", "auto 5%", "10px 28", "5% 28", "28 28", "auto 28", "10px auto", "5% auto", "28 auto", "auto auto", "10px 10% 10", "5% 10px 20 auto"], "border-image-outset": ["10px", "20", "10px 20", "10px 20px", "20 30", "2px 3px 4", "1 2px 3px 4"], "border-image-repeat": ["stretch", "repeat", "round", "space"].times(1, 2), @@ -393,9 +393,9 @@ window.Specs = { "text-decoration-color", "column-rule-color" ], - "rgba": 'rgba(0,0,0,.5)', - "hsl": 'hsl(0,0%,0%)', - "hsla": 'hsla(0,0%,0%,.5)', + "rgba": "rgba(0,0,0,.5)", + "hsl": "hsl(0,0%,0%)", + "hsla": "hsla(0,0%,0%,.5)", "transparent": "transparent", "currentColor": "currentColor" }, From 550349ae167db7c732b8ce46248f4d7d1c189775 Mon Sep 17 00:00:00 2001 From: Peter Kavanagh Date: Sat, 1 Sep 2012 01:40:56 +1000 Subject: [PATCH 047/668] CSS3 Values & Units Module Spec Updates --- tests.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests.js b/tests.js index a7b2d7c0..263572f7 100644 --- a/tests.js +++ b/tests.js @@ -436,7 +436,8 @@ window.Specs = { "vw": "5vw", "vh": "5vh", "vmin": "5vmin", - "attr()": "attr(data-px)", + "vmax": "5vmax", + "attr()": ["attr(data-px)", "attr(data-px px)", "attr(data-px px, initial)"], "calc()": ["calc(1px + 2px)", "calc(5px*2)", "calc(5px/2)", "calc(100%/3 - 2*1em - 2*1px)", "calc(attr(data-px)*2)", "calc(5px - 10px)"], "toggle()": "toggle(1px, 2px)" } From 37495ea4ef6efdf27816939833180cd6ef03b370 Mon Sep 17 00:00:00 2001 From: Peter Kavanagh Date: Sat, 1 Sep 2012 02:11:56 +1000 Subject: [PATCH 048/668] Add test for radians --- tests.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests.js b/tests.js index 263572f7..a4a8bd0a 100644 --- a/tests.js +++ b/tests.js @@ -82,7 +82,7 @@ window.Specs = { "object-fit": ["fill", "contain", "cover", "none", "scale-down"], "object-position": ["50% 50%", "center", "top right", "bottom 10px right 20px"], "image-resolution": ["from-image", "from-image snap", "snap from-image", "1dppx", "300dpi", "from-image 300dpi", "300dpi from-image", "300dpi from-image snap"], - "image-orientation": ["0deg", "90deg", "45deg", "1turn", "100grad"] + "image-orientation": ["0deg", "90deg", "45deg", "1turn", "100grad", "2rad"] } }, From 0687cd116730ee60eb89a1719b6fd8ffaa460307 Mon Sep 17 00:00:00 2001 From: Peter Kavanagh Date: Sat, 1 Sep 2012 02:20:28 +1000 Subject: [PATCH 049/668] Add in missing test for kilohertz unit --- tests.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests.js b/tests.js index a4a8bd0a..42a2806c 100644 --- a/tests.js +++ b/tests.js @@ -461,8 +461,8 @@ window.Specs = { "cue": ["-6dB", "0", "6db"], "voice-family": ["preserve"], "voice-rate": ["normal", "x-slow", "slow", "medium", "fast", "x-fast", "0", "100%"], - "voice-pitch": ["absolute", "x-low", "low", "medium", "high", "x-high", "0", "100%", "-100%", "250Hz", "+250Hz", "-20Hz", "-3.5st", "3.5st"], - "voice-range": ["absolute", "x-low", "low", "medium", "high", "x-high", "0", "100%", "-100%", "250Hz", "+250Hz", "-20Hz", "-3.5st", "3.5st"], + "voice-pitch": ["absolute", "x-low", "low", "medium", "high", "x-high", "0", "100%", "-100%", "250Hz", "+250Hz", "-20Hz", ".2kHz", "-3.5st", "3.5st"], + "voice-range": ["absolute", "x-low", "low", "medium", "high", "x-high", "0", "100%", "-100%", "250Hz", "+250Hz", "-20Hz", ".2kHz", "-3.5st", "3.5st"], "voice-stress": ["normal", "strong", "moderate", "none", "reduced "], "voice-duration": ["auto", "+3s", "250ms"] } From c3a88cad25141b39451112e0aa2cc08be35d21a1 Mon Sep 17 00:00:00 2001 From: Syoichi Tsuyuhara Date: Tue, 9 Oct 2012 15:43:11 +0900 Subject: [PATCH 050/668] Remove transition-duration and animation-duration's "-1s" tests --- tests.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests.js b/tests.js index 42a2806c..ec22b590 100644 --- a/tests.js +++ b/tests.js @@ -230,7 +230,7 @@ window.Specs = { "title": "Transitions", "properties": { "transition-property": ["none", "all", "width", "width, height"], - "transition-duration": ["0s", "1s", "100ms", "-1s"], + "transition-duration": ["0s", "1s", "100ms"], "transition-timing-function": [ "ease", "linear", "ease-in", "ease-out", "ease-in-out", "cubic-bezier(.5, .5, .5, .5)", @@ -246,7 +246,7 @@ window.Specs = { "title": "Animations", "properties": { "animation-name": ["foo", "foo, bar"], - "animation-duration": ["0s", "1s", "100ms", "-1s"], + "animation-duration": ["0s", "1s", "100ms"], "animation-timing-function": [ "ease", "linear", "ease-in", "ease-out", "ease-in-out", "cubic-bezier(.5, .5, .5, .5)", From 76aafa49596b38a7580394020f40b46b5d35f3a5 Mon Sep 17 00:00:00 2001 From: Syoichi Tsuyuhara Date: Sun, 11 Nov 2012 18:53:55 +0900 Subject: [PATCH 051/668] Fix bug that border-image test is incorrect --- tests.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests.js b/tests.js index ec22b590..eabf3f06 100644 --- a/tests.js +++ b/tests.js @@ -24,8 +24,8 @@ window.Specs = { "border-image": [ "url(foo.png) 10", "url(foo.png) 10%", "url(foo.png) 10% fill", "url(foo.png) 10 round", "url(foo.png) 10 stretch repeat", - "url(foo.png) 10 / 10px", "url(foo.png) 10 / 10px / 10%", - "url(foo.png) fill 10 / 10px / 10%", "url(foo.png) fill 10 / 10px / 10% space" + "url(foo.png) 10 / 10px", "url(foo.png) 10 / 10% / 10px", + "url(foo.png) fill 10 / 10% / 10px", "url(foo.png) fill 10 / 10% / 10px space" ], "box-decoration-break": ["slice", "clone"], "box-shadow": [ From d9dcd987a37f29a4eb65bfddd6a3fe255f8bd4b1 Mon Sep 17 00:00:00 2001 From: Syoichi Tsuyuhara Date: Sun, 11 Nov 2012 19:50:57 +0900 Subject: [PATCH 052/668] Fix bug that Media Queries's "not" keyword test is incorrect --- tests.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests.js b/tests.js index eabf3f06..cece361c 100644 --- a/tests.js +++ b/tests.js @@ -148,7 +148,7 @@ window.Specs = { "css3-mediaqueries": { "title": "Media Queries", "Media queries": { - "negation": ["not print", "(not width:1px)"], + "negation": ["not print", "not all and (width:1px)"], "width": ["(width)", "(min-width:1px)", "(max-width:1000000px)"], "height": ["(height)", "(min-height:1px)", "(max-height:1000000px)"], "device-width": ["(device-width)", "(min-device-width:1px)", "(max-device-width:1000000px)"], From bf2088fa0c962f50a2517c2f1a1050cce5a2976f Mon Sep 17 00:00:00 2001 From: Syoichi Tsuyuhara Date: Sun, 11 Nov 2012 20:08:16 +0900 Subject: [PATCH 053/668] Fix bug that cursor test is incorrect --- tests.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests.js b/tests.js index cece361c..c341a9a3 100644 --- a/tests.js +++ b/tests.js @@ -198,7 +198,7 @@ window.Specs = { "resize": ["none", "both", "horizontal", "vertical"], "text-overflow": ["clip", "ellipsis", "'foo'"].times(1, 2), "cursor": [ - "url(foo.png) 2 2", "default", "none", "context-menu", "cell", "vertical-text", "alias", "copy", "no-drop", "not-allowed", + "url(foo.png) 2 2, auto", "default", "none", "context-menu", "cell", "vertical-text", "alias", "copy", "no-drop", "not-allowed", "ew-resize", "ns-resize", "nesw-resize", "nwse-resize", "col-resize", "row-resize", "all-scroll", "zoom-in", "zoom-out" ], "nav-index": ["auto", "1", "10"], From d228adbedc40092617405ea5677b2c2030d26d29 Mon Sep 17 00:00:00 2001 From: Syoichi Tsuyuhara Date: Sun, 11 Nov 2012 20:41:43 +0900 Subject: [PATCH 054/668] Update Text -add support for Text Decoration Text Decoration is a spec that separates from Text. --- tests.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/tests.js b/tests.js index c341a9a3..ff323a80 100644 --- a/tests.js +++ b/tests.js @@ -306,7 +306,13 @@ window.Specs = { "word-spacing": ["50%", "1em .5em", "1em .5em 2em", "normal 1em 2em"], "letter-spacing": ["50%", "1em .5em", "1em .5em 2em", "normal 1em 2em"], "text-indent": ["1em hanging", "1em each-line", "1em hanging each-line"], - "hanging-punctuation": ["none", "first", "last", "force-end", "allow-end", "first last"], + "hanging-punctuation": ["none", "first", "last", "force-end", "allow-end", "first last"] + } + }, + + "css-text-decor-3": { + "title": "Text Decoration", + "properties": { "text-decoration-line": ["none", "underline", "overline", "line-through", "underline overline"], "text-decoration-color": "white", "text-decoration-style": ["solid", "double", "dotted", "dashed", "wavy"], From e0a9104cccfcc5e17cc37567de8bf8523c5e51b4 Mon Sep 17 00:00:00 2001 From: Syoichi Tsuyuhara Date: Sun, 11 Nov 2012 21:09:47 +0900 Subject: [PATCH 055/668] Update Text Decoration -text-decoration-skip: add "box-decoration" -text-underline-position: change "below" to "under" -text-emphasis-position: change "above" and "below" to "over" and "under" --- tests.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests.js b/tests.js index ff323a80..74ead7ad 100644 --- a/tests.js +++ b/tests.js @@ -317,12 +317,12 @@ window.Specs = { "text-decoration-color": "white", "text-decoration-style": ["solid", "double", "dotted", "dashed", "wavy"], "text-decoration": "underline dotted green", - "text-decoration-skip": ["none", "objects", "spaces", "ink", "edges", "objects edges"], - "text-underline-position": ["auto", "alphabetic","below", "left", "below right"], + "text-decoration-skip": ["none", "objects", "spaces", "ink", "edges", "box-decoration", "objects edges"], + "text-underline-position": ["auto", "alphabetic","under", "left", "under right"], "text-emphasis-style": ["none", "filled", "open dot", "circle", "double-circle", "triangle", "sesame", "'foo'"], "text-emphasis-color": "green", "text-emphasis": "open dot green", - "text-emphasis-position": ["above right", "below left"], + "text-emphasis-position": ["over right", "under left"], "text-shadow": ["1px 1px", "0 0 black", "1px 2px 3px black"] } }, From f6db3cf8fa7a78e474dd6e0777894cd60fdf98b0 Mon Sep 17 00:00:00 2001 From: Syoichi Tsuyuhara Date: Sun, 11 Nov 2012 21:55:24 +0900 Subject: [PATCH 056/668] Update Fonts -font-variant-ligatures: add "contextual" and "no-contextual" -font-variant-alternates: remove "contextual" and "no-contextual" -font-variant: add "none" --- tests.js | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/tests.js b/tests.js index 74ead7ad..4d506501 100644 --- a/tests.js +++ b/tests.js @@ -340,7 +340,8 @@ window.Specs = { "common-ligatures", "no-common-ligatures", "discretionary-ligatures", "no-discretionary-ligatures", "historical-ligatures", "no-historical-ligatures", - "common-ligatures discretionary-ligatures historical-ligatures" + "contextual", "no-contextual", + "common-ligatures discretionary-ligatures historical-ligatures contextual" ], "font-variant-caps": ["normal", "small-caps", "all-small-caps", "petite-caps", "all-petite-caps", "titling-caps", "unicase"], "font-variant-numeric": [ @@ -355,9 +356,7 @@ window.Specs = { ], "font-variant-alternates": [ "normal", - "contextual", "no-contextual", - "historical-forms", - "contextual historical-forms" + "historical-forms" // TODO add tests for functions ], "font-variant-east-asian": [ @@ -366,7 +365,7 @@ window.Specs = { "full-width", "proportional-width", "ruby", "simplified full-width ruby" ], - "font-variant": "sub lining-nums contextual ruby", + "font-variant": ["none", "sub lining-nums contextual ruby"], "font-feature-settings": ["normal", "'c2sc'", "'smcp' on", "'liga' off", "'smcp', 'swsh' 2"], "font-language-override": ["normal", "'SRB'"], "unicode-range": ["U+416", "U+0-7F", "U+A5, U+4E00-9FFF", "U+30??"] From 12a4bdb23672e4d6b9fd1a9e16b8618aa8646b68 Mon Sep 17 00:00:00 2001 From: Syoichi Tsuyuhara Date: Sun, 11 Nov 2012 22:16:17 +0900 Subject: [PATCH 057/668] Update Writing Modes -unicode-bidi: add "isolate-override" -text-orientation: change "mixed-right" to "mixed" -text-combine-horizontal: remove "numeric 2", "digits 2", "alpha 2", "latin 2", "alphanumeric 2" -remove text-combine-mode --- tests.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/tests.js b/tests.js index 4d506501..e94047d4 100644 --- a/tests.js +++ b/tests.js @@ -379,12 +379,11 @@ window.Specs = { "css3-writing-modes": { "title": "Writing Modes", "properties": { - "unicode-bidi": ["isolate", "plaintext"], + "unicode-bidi": ["isolate", "isolate-override", "plaintext"], "writing-mode": ["horizontal-tb", "vertical-rl", "vertical-lr"], - "text-orientation": ["mixed-right", "upright", "sideways-right", "sideways-left", "sideways", "use-glyph-orientation"], + "text-orientation": ["mixed", "upright", "sideways-right", "sideways-left", "sideways", "use-glyph-orientation"], "caption-side": ["before", "after"], - "text-combine-horizontal": ["none", "all", "numeric 2", "digits 2", "alpha 2", "latin 2", "alphanumeric 2"], - "text-combine-mode": ["auto", "compress", "no-compress", "use-glyphs"] + "text-combine-horizontal": ["none", "all"] } }, From 8a97d3a0a5de7c49966eb783fce323b13cbfbd5d Mon Sep 17 00:00:00 2001 From: Syoichi Tsuyuhara Date: Sun, 11 Nov 2012 23:04:35 +0900 Subject: [PATCH 058/668] Remove border-width from properties of Values and Units border-width property doesn't accept a value containing the percentage, like "calc(100%/3 - 2*1em - 2*1px)". --- tests.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tests.js b/tests.js index e94047d4..f4472bdb 100644 --- a/tests.js +++ b/tests.js @@ -432,8 +432,7 @@ window.Specs = { "values": { "properties": [ "width", - "padding", - "border-width" + "padding" ], "rem": "5rem", "ch": "5ch", From 380b8c5c4c5f30b8a92d2c4c669d88b747d3f65b Mon Sep 17 00:00:00 2001 From: Daniel Holbert Date: Fri, 29 Mar 2013 14:03:51 -0700 Subject: [PATCH 059/668] Remove check for "min-width:auto"/"min-height:auto" as part of flexbox section, since these values were recently removed from the flexbox spec. --- tests.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/tests.js b/tests.js index f4472bdb..42bbb967 100644 --- a/tests.js +++ b/tests.js @@ -486,8 +486,6 @@ window.Specs = { "flex-shrink": ["1","10"], "flex-wrap": ["nowrap", "wrap", "wrap-reverse"], "justify-content": ["flex-start", "flex-end", "center", "space-between", "space-around"], - "min-height": ["auto"], - "min-width": ["auto"], "order": ["0", "1"], } } From ae56aa70d23af0d4dab9fbaa00ea41dd2a74d852 Mon Sep 17 00:00:00 2001 From: Christoph Date: Sat, 1 Jun 2013 12:07:57 +0300 Subject: [PATCH 060/668] Add test for CSS3 all http://www.w3.org/TR/css3-cascade/#all-shorthand --- tests.js | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/tests.js b/tests.js index 42bbb967..8a066406 100644 --- a/tests.js +++ b/tests.js @@ -460,7 +460,7 @@ window.Specs = { "rest-after": ["none", "x-weak", "weak", "medium", "strong", "x-strong", "+3s", "250ms"], "rest": ["none", "x-weak", "weak", "medium", "strong", "x-strong", "+3s", "250ms"], "cue-before": ["-6dB", "0", "6db"], - "cue-after": ["-6dB", "0", "6db"], + "cue"-after": ["-6dB", "0", "6db"], "cue": ["-6dB", "0", "6db"], "voice-family": ["preserve"], "voice-rate": ["normal", "x-slow", "slow", "medium", "fast", "x-fast", "0", "100%"], @@ -486,7 +486,14 @@ window.Specs = { "flex-shrink": ["1","10"], "flex-wrap": ["nowrap", "wrap", "wrap-reverse"], "justify-content": ["flex-start", "flex-end", "center", "space-between", "space-around"], - "order": ["0", "1"], + "order": ["0", "1"] + } + }, + + "css3-cascade": { + "title": "Resetting All Properties", + "properties": { + "all": ["initial", "inherit", "default"] } } }; From 3bacbcf79835935bd1a1d3df69985f321eb96b22 Mon Sep 17 00:00:00 2001 From: Christoph Date: Mon, 10 Jun 2013 10:16:57 +0300 Subject: [PATCH 061/668] Update tests.js remove extra " --- tests.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests.js b/tests.js index 8a066406..af75a19e 100644 --- a/tests.js +++ b/tests.js @@ -460,7 +460,7 @@ window.Specs = { "rest-after": ["none", "x-weak", "weak", "medium", "strong", "x-strong", "+3s", "250ms"], "rest": ["none", "x-weak", "weak", "medium", "strong", "x-strong", "+3s", "250ms"], "cue-before": ["-6dB", "0", "6db"], - "cue"-after": ["-6dB", "0", "6db"], + "cue-after": ["-6dB", "0", "6db"], "cue": ["-6dB", "0", "6db"], "voice-family": ["preserve"], "voice-rate": ["normal", "x-slow", "slow", "medium", "fast", "x-fast", "0", "100%"], From 2473a5604068ea49fffd4fef00f7c460df4e4d4a Mon Sep 17 00:00:00 2001 From: Christoph Date: Mon, 19 Aug 2013 11:23:10 +0200 Subject: [PATCH 062/668] updated "all" property to newest version of spec Currently in "last call" status now so it shouldn't change anymore. http://www.w3.org/TR/2013/WD-css-cascade-3-20130730/#all --- tests.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests.js b/tests.js index af75a19e..077a77bf 100644 --- a/tests.js +++ b/tests.js @@ -493,7 +493,7 @@ window.Specs = { "css3-cascade": { "title": "Resetting All Properties", "properties": { - "all": ["initial", "inherit", "default"] + "all": ["initial", "inherit", "unset"] } } }; From d654bbe4602bc48a1dc0868850a4abab084656dd Mon Sep 17 00:00:00 2001 From: deepj Date: Sun, 8 Sep 2013 17:29:15 +0200 Subject: [PATCH 063/668] Update Writing Modes module according the latest editor's draft http://dev.w3.org/csswg/css-writing-modes-3/ --- tests.js | 43 ++++++++++++++++++++++--------------------- 1 file changed, 22 insertions(+), 21 deletions(-) diff --git a/tests.js b/tests.js index 077a77bf..ce9a166e 100644 --- a/tests.js +++ b/tests.js @@ -22,7 +22,7 @@ window.Specs = { "border-image-outset": ["10px", "20", "10px 20", "10px 20px", "20 30", "2px 3px 4", "1 2px 3px 4"], "border-image-repeat": ["stretch", "repeat", "round", "space"].times(1, 2), "border-image": [ - "url(foo.png) 10", "url(foo.png) 10%", "url(foo.png) 10% fill", + "url(foo.png) 10", "url(foo.png) 10%", "url(foo.png) 10% fill", "url(foo.png) 10 round", "url(foo.png) 10 stretch repeat", "url(foo.png) 10 / 10px", "url(foo.png) 10 / 10% / 10px", "url(foo.png) fill 10 / 10% / 10px", "url(foo.png) fill 10 / 10% / 10px space" @@ -34,7 +34,7 @@ window.Specs = { ] } }, - + "css3-images": { "title": "Image Values and Replaced Content", "values": { @@ -44,7 +44,7 @@ window.Specs = { "border-image", "cursor", "content" - + ], "linear-gradient": [ "linear-gradient(white, black)", @@ -85,7 +85,7 @@ window.Specs = { "image-orientation": ["0deg", "90deg", "45deg", "1turn", "100grad", "2rad"] } }, - + "css3-selectors": { "title": "Selectors", "selectors": { @@ -141,7 +141,7 @@ window.Specs = { ":not()": [":not(*)", ":not(element)", ":not(.class):not(#id):not([attr]):not(:link)"], } }, - + /* * Note: the following media queries must be true in supporting UAs! */ @@ -187,7 +187,7 @@ window.Specs = { "grid": ["all, (grid)", "(grid: 0), (grid: 1)"] } }, - + "css3-ui": { "title": "Basic User Interface", "properties": { @@ -225,7 +225,7 @@ window.Specs = { "::repeat-index": "::repeat-index" } }, - + "css3-transitions": { "title": "Transitions", "properties": { @@ -241,7 +241,7 @@ window.Specs = { "transition": "1s 2s width linear" } }, - + "css3-animations": { "title": "Animations", "properties": { @@ -264,7 +264,7 @@ window.Specs = { "@keyframes": "@keyframes foo" } }, - + "css3-transforms": { "title": "Transforms", "properties": { @@ -290,7 +290,7 @@ window.Specs = { "backface-visibility": ["visible", "hidden"], } }, - + "css3-text": { "title": "Text", "properties": { @@ -326,7 +326,7 @@ window.Specs = { "text-shadow": ["1px 1px", "0 0 black", "1px 2px 3px black"] } }, - + "css3-fonts": { "title": "Fonts", "properties": { @@ -375,18 +375,19 @@ window.Specs = { "@font-feature-values": "@font-feature-values Jupiter Sans" } }, - + "css3-writing-modes": { "title": "Writing Modes", "properties": { - "unicode-bidi": ["isolate", "isolate-override", "plaintext"], + "direction": ["ltr", "rtl"], + "unicode-bidi": ["normal", "embed", "isolate", "bidi-override", "isolate-override", "plaintext"], "writing-mode": ["horizontal-tb", "vertical-rl", "vertical-lr"], "text-orientation": ["mixed", "upright", "sideways-right", "sideways-left", "sideways", "use-glyph-orientation"], - "caption-side": ["before", "after"], - "text-combine-horizontal": ["none", "all"] + "caption-side": ["block-start", "block-end"], + "text-combine-horizontal": ["none", "all", "digits 2"] } }, - + "css3-color": { "title": "Color", "values": { @@ -407,7 +408,7 @@ window.Specs = { "opacity": ["-5", "0", ".5", "1", "2"] } }, - + "css3-multicol": { "title": "Multi-column Layout", "properties": { @@ -426,7 +427,7 @@ window.Specs = { "column-fill": ["auto", "balance"] } }, - + "css3-values": { "title": "Values and Units", "values": { @@ -445,7 +446,7 @@ window.Specs = { "toggle()": "toggle(1px, 2px)" } }, - + "css3-speech": { "title": "Speech", "properties": { @@ -470,7 +471,7 @@ window.Specs = { "voice-duration": ["auto", "+3s", "250ms"] } }, - + "css3-flexbox": { "title": "Flexible Box Layout", "properties": { @@ -489,7 +490,7 @@ window.Specs = { "order": ["0", "1"] } }, - + "css3-cascade": { "title": "Resetting All Properties", "properties": { From d95098205af3e74589ebdd95a9d1ef4c85035d3a Mon Sep 17 00:00:00 2001 From: deepj Date: Sun, 8 Sep 2013 19:06:22 +0200 Subject: [PATCH 064/668] Add missing testing dpcm value to image-resolution test --- tests.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tests.js b/tests.js index ce9a166e..154aaa1a 100644 --- a/tests.js +++ b/tests.js @@ -44,7 +44,6 @@ window.Specs = { "border-image", "cursor", "content" - ], "linear-gradient": [ "linear-gradient(white, black)", @@ -81,7 +80,7 @@ window.Specs = { "properties": { "object-fit": ["fill", "contain", "cover", "none", "scale-down"], "object-position": ["50% 50%", "center", "top right", "bottom 10px right 20px"], - "image-resolution": ["from-image", "from-image snap", "snap from-image", "1dppx", "300dpi", "from-image 300dpi", "300dpi from-image", "300dpi from-image snap"], + "image-resolution": ["from-image", "from-image snap", "snap from-image", "1dppx", "1dpcm", "300dpi", "from-image 300dpi", "300dpi from-image", "300dpi from-image snap"], "image-orientation": ["0deg", "90deg", "45deg", "1turn", "100grad", "2rad"] } }, From cf544df131aa751264add4f667b82ebeb0a4ba49 Mon Sep 17 00:00:00 2001 From: deepj Date: Sun, 8 Sep 2013 00:25:45 +0200 Subject: [PATCH 065/668] Add missing CSS 3 Regions Module --- tests.js | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/tests.js b/tests.js index 154aaa1a..334e8d5e 100644 --- a/tests.js +++ b/tests.js @@ -446,6 +446,17 @@ window.Specs = { } }, + "css3-regions": { + "title": "Regions", + "properties": { + "break-after": ["region",], + "break-before": ["region"], + "flow-from": ["none", "named-flow"], + "flow-into": ["none", "named-flow"], + "region-fragment": ["auto", "break"] + } + }, + "css3-speech": { "title": "Speech", "properties": { From 0e107d8f9f7d892835b1128110cedcb880274da7 Mon Sep 17 00:00:00 2001 From: deepj Date: Sun, 8 Sep 2013 17:35:42 +0200 Subject: [PATCH 066/668] Fix typo in break-after test in CSS 3 Regions Module --- tests.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests.js b/tests.js index 334e8d5e..3fc83a26 100644 --- a/tests.js +++ b/tests.js @@ -449,7 +449,7 @@ window.Specs = { "css3-regions": { "title": "Regions", "properties": { - "break-after": ["region",], + "break-after": ["region"], "break-before": ["region"], "flow-from": ["none", "named-flow"], "flow-into": ["none", "named-flow"], From fd32fabae566de71c357a7fa7a640f5bf295efde Mon Sep 17 00:00:00 2001 From: deepj Date: Sun, 8 Sep 2013 20:12:26 +0200 Subject: [PATCH 067/668] Update CSS 3 Text Decoration module - mirror improvements in tests - 'alphabetic' value is not longer valid in 'text-underline-position' property according to the specification --- tests.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests.js b/tests.js index 3fc83a26..1a7ebf67 100644 --- a/tests.js +++ b/tests.js @@ -317,12 +317,12 @@ window.Specs = { "text-decoration-style": ["solid", "double", "dotted", "dashed", "wavy"], "text-decoration": "underline dotted green", "text-decoration-skip": ["none", "objects", "spaces", "ink", "edges", "box-decoration", "objects edges"], - "text-underline-position": ["auto", "alphabetic","under", "left", "under right"], - "text-emphasis-style": ["none", "filled", "open dot", "circle", "double-circle", "triangle", "sesame", "'foo'"], + "text-underline-position": ["auto", "under", "left", "right", "under left", "under right"], + "text-emphasis-style": ["none", "filled", "open", "dot", "circle", "double-circle", "triangle", "sesame", "open dot", "'foo'"], "text-emphasis-color": "green", "text-emphasis": "open dot green", - "text-emphasis-position": ["over right", "under left"], - "text-shadow": ["1px 1px", "0 0 black", "1px 2px 3px black"] + "text-emphasis-position": ["over left", "over right", "under left", "under right"], + "text-shadow": ["none", "1px 1px", "0 0 black", "1px 2px 3px black"] } }, From fd9df72e230293f70d3f85ca3cbdf050923d1255 Mon Sep 17 00:00:00 2001 From: deepj Date: Sun, 8 Sep 2013 20:55:37 +0200 Subject: [PATCH 068/668] Update CSS 3 Text Module - add missing word-wrap property - remove invalid values in several properties according to the latest editor's draft --- tests.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tests.js b/tests.js index 1a7ebf67..271d7d2b 100644 --- a/tests.js +++ b/tests.js @@ -299,9 +299,10 @@ window.Specs = { "word-break": ["normal", "keep-all", "break-all"], "hyphens": ["auto", "manual", "none"], "overflow-wrap": ["normal", "break-word"], - "text-align": ["start", "end", "'a'", "match-parent", "start end"], + "word-wrap": ["normal", "break-word"], + "text-align": ["start", "end", "match-parent", "start end"], "text-align-last": ["auto", "start", "end", "left", "right", "center", "justify"], - "text-justify": ["auto", "none", "inter-word", "inter-ideograph", "inter-cluster", "distribute", "kashida"], + "text-justify": ["auto", "none", "inter-word", "distribute"], "word-spacing": ["50%", "1em .5em", "1em .5em 2em", "normal 1em 2em"], "letter-spacing": ["50%", "1em .5em", "1em .5em 2em", "normal 1em 2em"], "text-indent": ["1em hanging", "1em each-line", "1em hanging each-line"], From fb99f80dd71f7b11b990db7dae4e211f2e91162b Mon Sep 17 00:00:00 2001 From: deepj Date: Sun, 8 Sep 2013 22:40:41 +0200 Subject: [PATCH 069/668] Add missing CSS 3 Grid Layout Module --- tests.js | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/tests.js b/tests.js index 271d7d2b..04f417e1 100644 --- a/tests.js +++ b/tests.js @@ -502,6 +502,29 @@ window.Specs = { } }, + "css3-grid-layout": { + "title": "Grid Layout", + "properties": { + "display": ["grid", "inline-grid"], + "grid-template-columns": ["none", "subgrid", "auto", "100px", "1fr", "100px 1fr auto", "repeat(2, 100px 1fr)", "100px, 1fr, 100px, 1fr, 100px", "100px 1fr max-content minmax(min-content, 1fr)", "10px (col-start) 250px (col-end)"], + "grid-template-rows": ["none", "subgrid", "auto", "100px", "1fr", "100px 1fr auto", "repeat(2, 100px 1fr)", "100px, 1fr, 100px, 1fr, 100px", "100px 1fr max-content minmax(min-content, 1fr)", "10px (row-start) 250px (row-end)"], + "grid-template-areas": ["none", "articles", "nav articles"], + "grid-template": ["none", "auto 1fr auto / auto 1fr", "auto 1fr auto / (row-start) 'a a a' (row-end)"], + "grid-auto-columns": ["auto", "1fr", "100px", "max-content", "minmax(min-content, 1fr)"], + "grid-auto-rows": ["auto", "1fr", "100px", "min-content", "minmax(min-content, 1fr)"], + "grid-auto-flow": ["none", "rows", "colums"], + "grid-auto-position": ["1 / 1"], + "grid": ["columns 1fr / auto"], + "grid-row-start": ["auto", "4", "'C'", "'C' 2", "span 'C'", 'span 1'], + "grid-column-start": ["auto", "4", "'C'", "'C' 2", "span 'C'", 'span 1'], + "grid-row-end": ["auto", "4", "'C'", "'C' 2", "span 'C'", 'span 1'], + "grid-column-end": ["auto", "4", "'C'", "'C' 2", "span 'C'", 'span 1'], + "grid-column": ["auto", "1", "-1", "1 / 1", "1 / -1", "auto / auto", "2 / span 2"], + "grid-row": ["auto", "1", "-1", "1 / 1", "1 / -1", "auto / auto", "2 / span 2"], + "grid-area": ["1 / 1", "1 / span 1", "span / 10 / -1"] + } + }, + "css3-cascade": { "title": "Resetting All Properties", "properties": { From 38f3ff3c3fbb28d87591cfdf6bf2d7771071d38b Mon Sep 17 00:00:00 2001 From: deepj Date: Sun, 8 Sep 2013 22:54:04 +0200 Subject: [PATCH 070/668] Fix transform-origin and perspective-origin tests --- tests.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests.js b/tests.js index 04f417e1..7f451bdb 100644 --- a/tests.js +++ b/tests.js @@ -282,10 +282,10 @@ window.Specs = { "translate3d(50px, -24px, 5px) rotate3d(1, 2, 3, 180deg) scale3d(-1, 0, .5)", "perspective(600px)" ], - "transform-origin": ["10px", "top", "top left", "50% 100%", "left 0%", "right 10px bottom 20px"], + "transform-origin": ["10px", "top", "top left", "50% 100%", "left 0%", "left 50% 0"], "transform-style": ["flat", "preserve-3d"], "perspective": ["none", "0", "600px"], - "perspective-origin": ["10px", "top", "top left", "50% 100%", "left 0%", "right 10px bottom 20px"], + "perspective-origin": ["10px", "top", "top left", "50% 100%", "left 0%"], "backface-visibility": ["visible", "hidden"], } }, From 52eaa0e60cb3b248bf5967ba2e095ec9aedd4669 Mon Sep 17 00:00:00 2001 From: deepj Date: Mon, 9 Sep 2013 00:03:29 +0200 Subject: [PATCH 071/668] Perspective property supports only positive lengths Zero doesn't belong to positive numbers --- tests.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests.js b/tests.js index 7f451bdb..098e10b1 100644 --- a/tests.js +++ b/tests.js @@ -284,7 +284,7 @@ window.Specs = { ], "transform-origin": ["10px", "top", "top left", "50% 100%", "left 0%", "left 50% 0"], "transform-style": ["flat", "preserve-3d"], - "perspective": ["none", "0", "600px"], + "perspective": ["none", "600px"], "perspective-origin": ["10px", "top", "top left", "50% 100%", "left 0%"], "backface-visibility": ["visible", "hidden"], } From 76a95db1983c5b4d9e64c9bd5a0f718121043269 Mon Sep 17 00:00:00 2001 From: DasBlub Date: Sun, 20 Oct 2013 16:34:31 +0200 Subject: [PATCH 072/668] Make index.html pass the W3C HTML5 validator - hgroup has been removed from the HTML5 spec: http://lists.w3.org/Archives/Public/public-html-admin/2013Apr/0003.html - An img element must have an alt attribute - "&" has to be escaped as & (this includes "&" in URLs!) - Escape Unicode character --- index.html | 10 +++++----- style.css | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/index.html b/index.html index 48fe48c8..812dfff3 100644 --- a/index.html +++ b/index.html @@ -19,10 +19,10 @@

    The CSS3 test

    -
    +

    Your browser scores 0%

    Determined by passing tests out of total for features

    -
    +
    @@ -57,11 +57,11 @@

    Cheaters

    diff --git a/style.css b/style.css index 00924d67..2e2507bd 100644 --- a/style.css +++ b/style.css @@ -97,11 +97,11 @@ body > h1 { margin-right: 2em; } - #tests hgroup { + #tests #hgroup { text-align: center; } - #tests > hgroup > h1 { + #tests > #hgroup > h1 { font-size: 250%; } From 9f00ed89bcbd3f300817a6ef37f0e21408de9611 Mon Sep 17 00:00:00 2001 From: deepj Date: Fri, 14 Feb 2014 02:48:49 +0100 Subject: [PATCH 073/668] Add CSS3 Box Alignment Module --- tests.js | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/tests.js b/tests.js index 098e10b1..6f6b7695 100644 --- a/tests.js +++ b/tests.js @@ -486,9 +486,9 @@ window.Specs = { "css3-flexbox": { "title": "Flexible Box Layout", "properties": { - "align-content": ["flex-start", "flex-end", "center", "space-between", "space-around", "stretch"], - "align-items": ["flex-start", "flex-end", "center", "baseline", "stretch"], - "align-self": ["flex-start", "flex-end", "center", "baseline", "stretch", "auto"], + "align-content": ["flex-start", "flex-end", "space-between", "space-around"], + "align-items": ["flex-start", "flex-end"], + "align-self": ["flex-start", "flex-end"], "display": ["flex", "inline-flex"], "flex": ["none","5 7 10%"], "flex-basis": ["auto","1px"], @@ -497,7 +497,7 @@ window.Specs = { "flex-grow": ["0","5"], "flex-shrink": ["1","10"], "flex-wrap": ["nowrap", "wrap", "wrap-reverse"], - "justify-content": ["flex-start", "flex-end", "center", "space-between", "space-around"], + "justify-content": ["flex-start", "flex-end", "space-between", "space-around"], "order": ["0", "1"] } }, @@ -525,6 +525,18 @@ window.Specs = { } }, + "css3-align": { + "title": "Box Alignment", + "properties": { + "align-self": ["auto", "stretch", "baseline", "center", "start", "end", "self-start", "self-end", "left", "right", "true", "safe", "start true", "start safe"], + "align-items": ["auto", "stretch", "baseline", "center", "start", "end", "self-start", "self-end", "left", "right", "true", "safe", "start true", "start safe"], + "align-content": ["auto", "baseline", "center", "start", "end", "self-start", "self-end", "left", "right", "start start", "start flex-end", "start start self-end", "start start safe", "start start self-end safe"], + "justify-self": ["auto", "stretch", "baseline", "center", "start", "end", "self-start", "self-end", "left", "right", "true", "safe", "start true", "start safe", "self-start true", "self-end safe"], + "justify-items": ["auto", "stretch", "baseline", "center", "start", "end", "self-start", "self-end", "left", "right", "true", "safe", "start true", "start safe", "self-start true", "self-end safe", "legacy", "legacy left", "legacy right", "legacy center"], + "justify-content": ["auto", "baseline", "center", "start", "end", "self-start", "self-end", "left", "right", "start start", "start self-end", "start start self-end", "start start safe", "start start self-end safe"] + } + }, + "css3-cascade": { "title": "Resetting All Properties", "properties": { From 94658078c06f2b5bf7a14f5f8e1a1a8f8992a18e Mon Sep 17 00:00:00 2001 From: deepj Date: Fri, 14 Feb 2014 16:40:48 +0100 Subject: [PATCH 074/668] Add Compositing and Blending Module --- tests.js | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/tests.js b/tests.js index 098e10b1..d7fbaeb5 100644 --- a/tests.js +++ b/tests.js @@ -530,5 +530,14 @@ window.Specs = { "properties": { "all": ["initial", "inherit", "unset"] } - } + }, + + "compositing": { + "title": "Compositing and Blending", + "properties": { + "mix-blend-mode": ["normal", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "hue", "saturation", "color", "luminosity"], + "isolation": ["auto", "isolate"], + "background-blend-mode": ["normal", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "hue", "saturation", "color", "luminosity", "normal, multiply"] + } + } }; From b003ee198b48b45396704db001235bb2a5a8081a Mon Sep 17 00:00:00 2001 From: deepj Date: Fri, 14 Feb 2014 20:24:34 +0100 Subject: [PATCH 075/668] Add Masking Module --- tests.js | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/tests.js b/tests.js index 098e10b1..8373c092 100644 --- a/tests.js +++ b/tests.js @@ -530,5 +530,28 @@ window.Specs = { "properties": { "all": ["initial", "inherit", "unset"] } - } + }, + + "css-masking": { + "title": "Masking", + "properties": { + "clip-path": ["url('#clip')", "rectangle", "inset-rectangle", "circle", "ellipse", "border-box", "padding-box", "content-box", "margin-box", "fill", "stroke", "view-box", "none"], + "mask-image": ["none", "linear-gradient(black 0%, transparent 100%)", "url(image.png)"], + "mask-type": ["alpha", "luminance", "auto"], + "mask-repeat": ["repeat-x", "repeat-y"].concat(["repeat", "space", "round", "no-repeat"].times(1, 2)), + "mask-position": ["center", "left 50%", "bottom 10px right 20px", "bottom 10px right", "top right 10px"], + "mask-clip": ["border-box", "padding-box", "content-box", "margin-box", "fill", "stroke", "view-box", "no-clip"], + "mask-origin": ["border-box", "padding-box", "content-box", "margin-box", "fill", "stroke", "view-box"], + "mask-size": ["auto", "10px", "cover", "contain", "10px", "50%", "10px auto", "auto 10%", "50em 50%"], + "mask": ["top", "space", "url(image.png#')", "url(image.png') luminance", "url(image.png') luminance top space"], + "mask-box-source": ["none", "url(image.png#mask)"], + "mask-box-slice": ["0 fill", "50% fill", "1.1 fill", "0 1 fill", "0 1 2 fill", "0 1 2 3 fill"], + "mask-box-width": ["auto", "10px", "50%", "1", "1.0", "auto 1", "auto 1 50%", "auto 1 50% 1.1"], + "mask-box-outset": ["0", "1.1", "0 1", "0 1 2", "0 1 2 3"], + "mask-box-repeat": ["stretch", "repeat", "round", "space"].times(1,2), + "mask-box": ["url(image.png)", "url(image.png) 10px", "url(image.png#mask) space", "url(image.png) 1 fill", "url(image.png) 1 fill 10px", "url(image.png) 1 fill 10px", "url(image.png#mask) 1 fill 10px 2"], + "mask-source-type": ["luminance", "alpha"] + } + } + }; From 04f3a7ccfb62ca44cf5560aaf68bc1140c20f67a Mon Sep 17 00:00:00 2001 From: Lea Verou Date: Fri, 21 Feb 2014 19:03:13 +0200 Subject: [PATCH 076/668] Update paypal email --- index.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/index.html b/index.html index 812dfff3..2b524a06 100644 --- a/index.html +++ b/index.html @@ -61,7 +61,7 @@

    Cheaters

    Results ✿ Handcrafted by Lea Verou - ✿ Donate

    + ✿ Donate

    @@ -70,4 +70,4 @@

    Cheaters

    - \ No newline at end of file + From 8e56303d65bdab603d781fe7254f3d674f4bfd53 Mon Sep 17 00:00:00 2001 From: deepj Date: Sat, 22 Feb 2014 17:28:24 +0100 Subject: [PATCH 077/668] Clean up some mess from Masking test --- tests.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests.js b/tests.js index ddcf7aa1..b87ca5e8 100644 --- a/tests.js +++ b/tests.js @@ -555,13 +555,13 @@ window.Specs = { "mask-clip": ["border-box", "padding-box", "content-box", "margin-box", "fill", "stroke", "view-box", "no-clip"], "mask-origin": ["border-box", "padding-box", "content-box", "margin-box", "fill", "stroke", "view-box"], "mask-size": ["auto", "10px", "cover", "contain", "10px", "50%", "10px auto", "auto 10%", "50em 50%"], - "mask": ["top", "space", "url(image.png#')", "url(image.png') luminance", "url(image.png') luminance top space"], - "mask-box-source": ["none", "url(image.png#mask)"], + "mask": ["top", "space", "url(image.png')", "url(image.png') luminance", "url(image.png') luminance top space"], + "mask-box-source": ["none", "url(image.png)"], "mask-box-slice": ["0 fill", "50% fill", "1.1 fill", "0 1 fill", "0 1 2 fill", "0 1 2 3 fill"], "mask-box-width": ["auto", "10px", "50%", "1", "1.0", "auto 1", "auto 1 50%", "auto 1 50% 1.1"], "mask-box-outset": ["0", "1.1", "0 1", "0 1 2", "0 1 2 3"], "mask-box-repeat": ["stretch", "repeat", "round", "space"].times(1,2), - "mask-box": ["url(image.png)", "url(image.png) 10px", "url(image.png#mask) space", "url(image.png) 1 fill", "url(image.png) 1 fill 10px", "url(image.png) 1 fill 10px", "url(image.png#mask) 1 fill 10px 2"], + "mask-box": ["url(image.png)", "url(image.png) 10px", "url(image.png) space", "url(image.png) 1 fill", "url(image.png) 1 fill 10px", "url(image.png) 1 fill 10px", "url(image.png) 1 fill 10px 2"], "mask-source-type": ["luminance", "alpha"] } }, From 174fc99127670f0179306ed3547357eccaf2d80b Mon Sep 17 00:00:00 2001 From: deepj Date: Sun, 23 Feb 2014 22:51:30 +0100 Subject: [PATCH 078/668] Add missing CSS 3 Conditional Rules Module --- tests.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/tests.js b/tests.js index b87ca5e8..8e2f027f 100644 --- a/tests.js +++ b/tests.js @@ -544,6 +544,20 @@ window.Specs = { } }, + "css3-conditional": { + "title": "Conditional Rules", + "@rules": { + "@support": [ + "@supports (color: green)", + "@supports not (foo: bar)", + "@supports (color: green) or (color: red)", + "@supports (color: green) and (color: red)", + "@supports (color: green) and (not (foo: bar))", + "@supports (color: green) or (not (foo: bar))" + ] + } + }, + "css-masking": { "title": "Masking", "properties": { From 017bcfebe573421783d28b71fe1232b20b0d9565 Mon Sep 17 00:00:00 2001 From: deepj Date: Mon, 24 Feb 2014 01:07:30 +0100 Subject: [PATCH 079/668] Fix #17 --- style.css | 50 ++++++++++++++++++++++++++------------------------ 1 file changed, 26 insertions(+), 24 deletions(-) diff --git a/style.css b/style.css index 2e2507bd..25009b55 100644 --- a/style.css +++ b/style.css @@ -22,19 +22,19 @@ h1, h2 { body > section section section h1 { font-size: 180%; } - + section section section section h1 { color: hsla(200, 10%, 20%, .5); font-size: 120%; font-weight: bold; text-transform: capitalize; } - + h1 > .score { float: right; font-weight: bold; } - + h1 > .spec-link { display: inline-block; padding: .3em .4em; @@ -46,7 +46,7 @@ h1, h2 { vertical-align: middle; text-shadow: 0 .1em .1em black; } - + h1 > .spec-link:hover { background: #f06; } @@ -63,7 +63,8 @@ body > h1 { font-weight: bold; text-transform: uppercase; text-shadow: 0 .1em .1em black; - + z-index: 1; + -webkit-transform: rotate(-90deg) translateX(-100%); -webkit-transform-origin: top left; -moz-transform: rotate(-90deg) translateX(-100%); @@ -83,7 +84,8 @@ body > h1 { width: 50px; border-radius: 50%; box-shadow: 2px 2px 10px rgba(0,0,0,.5); - + z-index: 2; + -webkit-transform: rotate(-15deg); -moz-transform: rotate(-15deg); -ms-transform: rotate(-15deg); @@ -100,18 +102,18 @@ body > h1 { #tests #hgroup { text-align: center; } - + #tests > #hgroup > h1 { font-size: 250%; } - + #tests h1 > strong { display: block; margin-top: .1em; font-size: 500%; line-height: .7; } - + #tests h2 { font-size: 80%; } @@ -146,12 +148,12 @@ dd { dd dd { border: 1px solid white; } - + dd small { display: block; opacity: .8; } - + dl .pass, #specsTested li.pass:before { background-color: #490; @@ -252,7 +254,7 @@ aside { aside section { margin-left: 66%; } - + aside .caution p { padding: 1em; margin-left: 2em; @@ -260,31 +262,31 @@ aside { color: white; text-shadow: 0 -.1em .2em black; } - + aside h1 { font-size: 150%; } - + aside ul { margin: .5em 0; padding: 0 0 0 2em; } - + aside li { list-style: none; padding: .3em 0; border-bottom: 2px dotted rgba(0,0,0,.25); border-top: 2px dotted white; } - + aside li:first-child { border-top: none; } - + aside li:last-child { border-bottom: none; } - + #specsTested li { position: relative; } @@ -299,7 +301,7 @@ aside { border-radius: 50%; box-shadow: 0 2px white; } - + footer { margin-left: 65%; font-size: 85%; @@ -312,7 +314,7 @@ footer { border-top: 1px solid hsl(200, 10%, 20%); text-align: center; } - + /* Ad packs */ .bsa_it_ad { padding:10px !important; @@ -325,20 +327,20 @@ footer { float:none; margin: 0 10px 5px 0 !important; } - + .bsa_it_ad img { padding:0; border:none; } - + .bsa_it_ad .bsa_it_t { padding:1px 0 0 0; } - + .bsa_it_d { font-size: 70% !important; } - + .bsa_it_p { display: none !important; } From 5fa7dc50c49ffff65fc1cc84a741f29a13f1ebc9 Mon Sep 17 00:00:00 2001 From: deepj Date: Mon, 24 Feb 2014 00:54:16 +0100 Subject: [PATCH 080/668] Add Shapes Module Level 1 --- tests.js | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/tests.js b/tests.js index 8e2f027f..dce5058f 100644 --- a/tests.js +++ b/tests.js @@ -578,7 +578,7 @@ window.Specs = { "mask-box": ["url(image.png)", "url(image.png) 10px", "url(image.png) space", "url(image.png) 1 fill", "url(image.png) 1 fill 10px", "url(image.png) 1 fill 10px", "url(image.png) 1 fill 10px 2"], "mask-source-type": ["luminance", "alpha"] } - }, + }, "compositing": { "title": "Compositing and Blending", @@ -587,6 +587,15 @@ window.Specs = { "isolation": ["auto", "isolate"], "background-blend-mode": ["normal", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "hue", "saturation", "color", "luminosity", "normal, multiply"] } - } + }, + + "css-shapes": { + "title": "Shapes", + "properties": { + "shape-outside": ["none", "inset(10% round 10% 40% 10% 40%)", "ellipse(at top 50% left 20%)", "circle(at right 5% top)", "polygon(100% 0, 100% 100%, 0 100%)", "margin-box", "border-box", "padding-box", "content-box", "inset(10% round 10% 40% 10% 40%) margin-box", "ellipse(at top 50% left 20%) margin-box", "circle(at right 5% top) margin-box", "polygon(100% 0, 100% 100%, 0 100%) margin-box", "attr(src url)", "url(image.png)"], + "shape-image-threshold": ["0", "1", "0.0", "0.1"], + "shape-margin": ["0", "10px", "50%"] + } + } }; From c90a810cbc757d3a8c799deceee935b31dd9bec7 Mon Sep 17 00:00:00 2001 From: deepj Date: Mon, 24 Feb 2014 03:49:33 +0100 Subject: [PATCH 081/668] Add Filter Effects Module Level 1 --- tests.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tests.js b/tests.js index dce5058f..14df4d4a 100644 --- a/tests.js +++ b/tests.js @@ -596,6 +596,13 @@ window.Specs = { "shape-image-threshold": ["0", "1", "0.0", "0.1"], "shape-margin": ["0", "10px", "50%"] } + }, + + "filter-effects": { + "title": "Filter Effects", + "properties": { + "filter": ["none", "url(#id)", "url(image.svg#id)", "blur(5px)", "brightness(0.5)", "contrast(150%)", "drop-shadow(15px 15px 15px black)", "grayscale(50%)", "hue-rotate(50deg)", "invert(50%)", "opacity(50%)", "sepia(50%)", "saturate(150%)", "grayscale(100%) sepia(100%)"], + } } }; From 480e21aff5309d4911331a7e2de3550c8c486811 Mon Sep 17 00:00:00 2001 From: deepj Date: Tue, 25 Feb 2014 14:55:34 +0100 Subject: [PATCH 082/668] Add touch-action CSS property from W3C Pointer Events specification --- tests.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tests.js b/tests.js index 14df4d4a..4707bcb2 100644 --- a/tests.js +++ b/tests.js @@ -603,6 +603,13 @@ window.Specs = { "properties": { "filter": ["none", "url(#id)", "url(image.svg#id)", "blur(5px)", "brightness(0.5)", "contrast(150%)", "drop-shadow(15px 15px 15px black)", "grayscale(50%)", "hue-rotate(50deg)", "invert(50%)", "opacity(50%)", "sepia(50%)", "saturate(150%)", "grayscale(100%) sepia(100%)"], } + }, + + "pointerevents": { + "title": "Pointer Events", + "properties": { + "touch-action": ["auto", "none", "pan-x", "pan-y"] + } } }; From d3fecd3126faa98e565f7ba5282c8da7a3daa284 Mon Sep 17 00:00:00 2001 From: deepj Date: Wed, 26 Feb 2014 09:10:06 +0100 Subject: [PATCH 083/668] Add Fragmentation Module Level 3 --- tests.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/tests.js b/tests.js index 4707bcb2..19b8053a 100644 --- a/tests.js +++ b/tests.js @@ -610,6 +610,16 @@ window.Specs = { "properties": { "touch-action": ["auto", "none", "pan-x", "pan-y"] } - } + }, + "css3-break": { + "title": "Fragmentation", + "properties": { + "break-after": ["any", "recto", "verso"], + "break-before": ["any", "recto", "verso"], + "break-inside": ["avoid-region"], + "orphans": ["1", "2"], + "widows": ["1", "2"] + } + } }; From 3d86f174cde5977fb943a0b43f6bc38d50745341 Mon Sep 17 00:00:00 2001 From: Merih Akar Date: Thu, 27 Feb 2014 18:14:23 +0200 Subject: [PATCH 084/668] test the usage of viewport percentage units inside css calc function --- tests.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests.js b/tests.js index 19b8053a..c4324b21 100644 --- a/tests.js +++ b/tests.js @@ -442,7 +442,7 @@ window.Specs = { "vmin": "5vmin", "vmax": "5vmax", "attr()": ["attr(data-px)", "attr(data-px px)", "attr(data-px px, initial)"], - "calc()": ["calc(1px + 2px)", "calc(5px*2)", "calc(5px/2)", "calc(100%/3 - 2*1em - 2*1px)", "calc(attr(data-px)*2)", "calc(5px - 10px)"], + "calc()": ["calc(1px + 2px)", "calc(5px*2)", "calc(5px/2)", "calc(100%/3 - 2*1em - 2*1px)", "calc(attr(data-px)*2)", "calc(5px - 10px)", "calc(1vw - 1px)"], "toggle()": "toggle(1px, 2px)" } }, From 70c199716a8159205dd93fd47c5222a43b607049 Mon Sep 17 00:00:00 2001 From: Merih Akar Date: Tue, 6 May 2014 12:22:35 +0300 Subject: [PATCH 085/668] test the simultaneous usage of pan-x and pan-y for touch-action, test manipulation value of touch-action --- tests.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests.js b/tests.js index c4324b21..f019a8bb 100644 --- a/tests.js +++ b/tests.js @@ -608,7 +608,7 @@ window.Specs = { "pointerevents": { "title": "Pointer Events", "properties": { - "touch-action": ["auto", "none", "pan-x", "pan-y"] + "touch-action": ["auto", "none", "pan-x", "pan-y", "pan-x pan-y", "manipulation"] } }, From 45998ed59e79ff2e122b89a2a053fe2ba6abd510 Mon Sep 17 00:00:00 2001 From: Lea Verou Date: Mon, 19 May 2014 12:17:49 -0400 Subject: [PATCH 086/668] Updated AdPacks code --- index.html | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/index.html b/index.html index 2b524a06..4bbb076e 100644 --- a/index.html +++ b/index.html @@ -12,10 +12,6 @@ - - - -

    The CSS3 test

    @@ -37,8 +33,7 @@

    Determined by passing tests out of -
    - via Ad Packs +

    From bb2be690cda34440e2c2328218d5eba54c5009da Mon Sep 17 00:00:00 2001 From: Lea Verou Date: Sat, 28 Jun 2014 18:03:50 +0300 Subject: [PATCH 087/668] Updated AdPacks code --- index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.html b/index.html index 4bbb076e..43d19f49 100644 --- a/index.html +++ b/index.html @@ -33,7 +33,7 @@

    Determined by passing tests out of - +

    From ce7822397827d73adb2be1cf111be15cb3ac4dff Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Tue, 15 Jul 2014 14:26:25 +0200 Subject: [PATCH 088/668] Removed the tests for multiple values for 'word-spacing' and all tests for 'letter-spacing' --- tests.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tests.js b/tests.js index f019a8bb..54908a20 100644 --- a/tests.js +++ b/tests.js @@ -303,8 +303,7 @@ window.Specs = { "text-align": ["start", "end", "match-parent", "start end"], "text-align-last": ["auto", "start", "end", "left", "right", "center", "justify"], "text-justify": ["auto", "none", "inter-word", "distribute"], - "word-spacing": ["50%", "1em .5em", "1em .5em 2em", "normal 1em 2em"], - "letter-spacing": ["50%", "1em .5em", "1em .5em 2em", "normal 1em 2em"], + "word-spacing": ["50%"], "text-indent": ["1em hanging", "1em each-line", "1em hanging each-line"], "hanging-punctuation": ["none", "first", "last", "force-end", "allow-end", "first last"] } From b1f97f9df80d5b4dae962161b112619a18212040 Mon Sep 17 00:00:00 2001 From: Dirk Schulze Date: Tue, 15 Jul 2014 16:30:46 +0200 Subject: [PATCH 089/668] Update tests to reflect last changes to CSS Masking Level 1. --- tests.js | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/tests.js b/tests.js index f019a8bb..ff4add84 100644 --- a/tests.js +++ b/tests.js @@ -561,22 +561,24 @@ window.Specs = { "css-masking": { "title": "Masking", "properties": { - "clip-path": ["url('#clip')", "rectangle", "inset-rectangle", "circle", "ellipse", "border-box", "padding-box", "content-box", "margin-box", "fill", "stroke", "view-box", "none"], + "clip-path": ["url('#clip')", "inset(50%)", "circle()", "ellipse()", "polygon(0 10px, 30px 0)", "circle() border-box", "border-box", "padding-box", "content-box", "margin-box", "fill-box", "stroke-box", "view-box", "none"], + "clip-rule": ["nonzero", "evenodd"], "mask-image": ["none", "linear-gradient(black 0%, transparent 100%)", "url(image.png)"], - "mask-type": ["alpha", "luminance", "auto"], + "mask-mode": ["alpha", "luminance", "auto"], "mask-repeat": ["repeat-x", "repeat-y"].concat(["repeat", "space", "round", "no-repeat"].times(1, 2)), "mask-position": ["center", "left 50%", "bottom 10px right 20px", "bottom 10px right", "top right 10px"], "mask-clip": ["border-box", "padding-box", "content-box", "margin-box", "fill", "stroke", "view-box", "no-clip"], "mask-origin": ["border-box", "padding-box", "content-box", "margin-box", "fill", "stroke", "view-box"], "mask-size": ["auto", "10px", "cover", "contain", "10px", "50%", "10px auto", "auto 10%", "50em 50%"], + "mask-composite": ["add", "subtract", "intersect", "exclude"], "mask": ["top", "space", "url(image.png')", "url(image.png') luminance", "url(image.png') luminance top space"], - "mask-box-source": ["none", "url(image.png)"], - "mask-box-slice": ["0 fill", "50% fill", "1.1 fill", "0 1 fill", "0 1 2 fill", "0 1 2 3 fill"], - "mask-box-width": ["auto", "10px", "50%", "1", "1.0", "auto 1", "auto 1 50%", "auto 1 50% 1.1"], - "mask-box-outset": ["0", "1.1", "0 1", "0 1 2", "0 1 2 3"], - "mask-box-repeat": ["stretch", "repeat", "round", "space"].times(1,2), - "mask-box": ["url(image.png)", "url(image.png) 10px", "url(image.png) space", "url(image.png) 1 fill", "url(image.png) 1 fill 10px", "url(image.png) 1 fill 10px", "url(image.png) 1 fill 10px 2"], - "mask-source-type": ["luminance", "alpha"] + "mask-border-source": ["none", "url(image.png)"], + "mask-border-slice": ["0 fill", "50% fill", "1.1 fill", "0 1 fill", "0 1 2 fill", "0 1 2 3 fill"], + "mask-border-width": ["auto", "10px", "50%", "1", "1.0", "auto 1", "auto 1 50%", "auto 1 50% 1.1"], + "mask-border-outset": ["0", "1.1", "0 1", "0 1 2", "0 1 2 3"], + "mask-border-repeat": ["stretch", "repeat", "round", "space"].times(1,2), + "mask-border": ["url(image.png)", "url(image.png) 10px", "url(image.png) space", "url(image.png) 1 fill", "url(image.png) 1 fill 10px", "url(image.png) 1 fill 10px", "url(image.png) 1 fill 10px 2"], + "mask-type": ["luminance", "alpha"] } }, From 9b5f6ca62ae94c6544c982b3f2ba81cff0ff88fc Mon Sep 17 00:00:00 2001 From: Arnaud Bienner Date: Wed, 16 Jul 2014 23:25:45 +0200 Subject: [PATCH 090/668] Add test for new 'position: sticky'. Probably worth to add other tests to this new section later. --- tests.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/tests.js b/tests.js index da06385a..efec5102 100644 --- a/tests.js +++ b/tests.js @@ -622,5 +622,13 @@ window.Specs = { "orphans": ["1", "2"], "widows": ["1", "2"] } - } + }, + + "css3-positioning": { + "title": "Positioning", + "properties": { + "position": ["sticky"] + } + }, + }; From 6d00cba0803ebdf7313ae03c5826e0f6f505b0b5 Mon Sep 17 00:00:00 2001 From: Arnaud Bienner Date: Wed, 16 Jul 2014 23:33:22 +0200 Subject: [PATCH 091/668] Minor change --- tests.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tests.js b/tests.js index efec5102..6a5ef65b 100644 --- a/tests.js +++ b/tests.js @@ -629,6 +629,5 @@ window.Specs = { "properties": { "position": ["sticky"] } - }, - + } }; From ef138d89fcad27204cd2c2f9e2e8c4eb286842c2 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Fri, 18 Jul 2014 09:43:49 +0200 Subject: [PATCH 092/668] Moved the test for 'box-decoration-break' to the Fragmentation module --- tests.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests.js b/tests.js index 54908a20..93838081 100644 --- a/tests.js +++ b/tests.js @@ -27,7 +27,6 @@ window.Specs = { "url(foo.png) 10 / 10px", "url(foo.png) 10 / 10% / 10px", "url(foo.png) fill 10 / 10% / 10px", "url(foo.png) fill 10 / 10% / 10px space" ], - "box-decoration-break": ["slice", "clone"], "box-shadow": [ "1px 1px", "0 0 black", "1px 2px 3px black", "1px 2px 3px 4px black", "inset 1px 1px", "1px 2px 3px 4px black inset" @@ -617,6 +616,7 @@ window.Specs = { "break-after": ["any", "recto", "verso"], "break-before": ["any", "recto", "verso"], "break-inside": ["avoid-region"], + "box-decoration-break": ["slice", "clone"], "orphans": ["1", "2"], "widows": ["1", "2"] } From 06921134042e13ac7fd09dfd59fac512b588507e Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Fri, 18 Jul 2014 09:51:41 +0200 Subject: [PATCH 093/668] Fixed indentation --- tests.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests.js b/tests.js index 93838081..736a7e30 100644 --- a/tests.js +++ b/tests.js @@ -616,7 +616,7 @@ window.Specs = { "break-after": ["any", "recto", "verso"], "break-before": ["any", "recto", "verso"], "break-inside": ["avoid-region"], - "box-decoration-break": ["slice", "clone"], + "box-decoration-break": ["slice", "clone"], "orphans": ["1", "2"], "widows": ["1", "2"] } From ce63aa738a9e0800ba3a6f98ea2b070c6d56368a Mon Sep 17 00:00:00 2001 From: J0WI Date: Tue, 19 Aug 2014 21:44:24 +0200 Subject: [PATCH 094/668] Flexbox spec change Spec change: http://lists.w3.org/Archives/Public/www-style/2014Jul/0008.html Implemented in Firefox 34: https://bugzilla.mozilla.org/show_bug.cgi?id=1032922 --- tests.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests.js b/tests.js index 1848d33d..993c1bcc 100644 --- a/tests.js +++ b/tests.js @@ -488,8 +488,8 @@ window.Specs = { "align-items": ["flex-start", "flex-end"], "align-self": ["flex-start", "flex-end"], "display": ["flex", "inline-flex"], - "flex": ["none","5 7 10%"], - "flex-basis": ["auto","1px"], + "flex": ["none", "5 7 10%"], + "flex-basis": ["auto", "main-size", "1px"], "flex-direction": ["row","row-reverse","column","column-reverse"], "flex-flow": ["row", "row-reverse", "column", "column-reverse", "wrap", "wrap-reverse"], "flex-grow": ["0","5"], From c5d219a70286ed9ee650c4fe6afa4747dd72694d Mon Sep 17 00:00:00 2001 From: Merih Akar Date: Mon, 10 Nov 2014 00:50:30 +0100 Subject: [PATCH 095/668] Add CSS Will Change Module Level 1 --- tests.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/tests.js b/tests.js index 993c1bcc..3ebf9303 100644 --- a/tests.js +++ b/tests.js @@ -629,5 +629,12 @@ window.Specs = { "properties": { "position": ["sticky"] } - } + }, + + "css-will-change": { + "title": "Will Change", + "properties": { + "will-change": ["scroll-position", "contents", "transform", "top, left"] + } + } }; From 65d5ee5c298425b17f199b0b19c8f689932940a3 Mon Sep 17 00:00:00 2001 From: Zefling Date: Tue, 16 Dec 2014 23:59:10 +0100 Subject: [PATCH 096/668] Update tests.js Add Ruby module --- tests.js | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/tests.js b/tests.js index 3ebf9303..c4aeb6b0 100644 --- a/tests.js +++ b/tests.js @@ -631,10 +631,20 @@ window.Specs = { } }, - "css-will-change": { - "title": "Will Change", - "properties": { - "will-change": ["scroll-position", "contents", "transform", "top, left"] - } - } + "css-will-change": { + "title": "Will Change", + "properties": { + "will-change": ["scroll-position", "contents", "transform", "top, left"] + } + }, + + "css-ruby-1": { + "title": "Ruby", + "properties": { + "display": ["ruby", "ruby-base", "ruby-text", "ruby-base-container", "ruby-text-containe"], + "ruby-position" : ["over", "under", "inter-character", "right", "left", "over right"], + "ruby-merge" : ["separate", "collapse", "auto"], + "ruby-align" : ["start", "center", "space-between", "space-around"] + } + } }; From ac9c6749332ed39fef572a250045a86eb59edfb9 Mon Sep 17 00:00:00 2001 From: Zefling Date: Wed, 17 Dec 2014 00:21:49 +0100 Subject: [PATCH 097/668] Update tests.js Sorry small mistake my part, it is missing an "r" --- tests.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests.js b/tests.js index c4aeb6b0..f4c2ba03 100644 --- a/tests.js +++ b/tests.js @@ -641,7 +641,7 @@ window.Specs = { "css-ruby-1": { "title": "Ruby", "properties": { - "display": ["ruby", "ruby-base", "ruby-text", "ruby-base-container", "ruby-text-containe"], + "display": ["ruby", "ruby-base", "ruby-text", "ruby-base-container", "ruby-text-container"], "ruby-position" : ["over", "under", "inter-character", "right", "left", "over right"], "ruby-merge" : ["separate", "collapse", "auto"], "ruby-align" : ["start", "center", "space-between", "space-around"] From 391e899a8317f4f4e2ba0c17c16f539f79b252ca Mon Sep 17 00:00:00 2001 From: Zefling Date: Mon, 19 Jan 2015 01:10:20 +0100 Subject: [PATCH 098/668] Update tests.js Little grammar error on ruby --- tests.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests.js b/tests.js index f4c2ba03..64e91037 100644 --- a/tests.js +++ b/tests.js @@ -642,7 +642,7 @@ window.Specs = { "title": "Ruby", "properties": { "display": ["ruby", "ruby-base", "ruby-text", "ruby-base-container", "ruby-text-container"], - "ruby-position" : ["over", "under", "inter-character", "right", "left", "over right"], + "ruby-position" : ["over right", "under right", "inter-character right", "over left"], "ruby-merge" : ["separate", "collapse", "auto"], "ruby-align" : ["start", "center", "space-between", "space-around"] } From 74948a7ca6c5c8bba8c65369ba414a8e7fa5b5e5 Mon Sep 17 00:00:00 2001 From: Zefling Date: Wed, 21 Jan 2015 22:16:02 +0100 Subject: [PATCH 099/668] Update tests.js Add Scroll Snap Points with tests based on the last Mozilla patch : https://bugzilla.mozilla.org/attachment.cgi?id=8552060&action=diff --- tests.js | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/tests.js b/tests.js index 64e91037..89b02cbe 100644 --- a/tests.js +++ b/tests.js @@ -646,5 +646,18 @@ window.Specs = { "ruby-merge" : ["separate", "collapse", "auto"], "ruby-align" : ["start", "center", "space-between", "space-around"] } - } + }, + + "css-snappoints": { + "title": "Scroll Snap Points", + "properties": { + "scroll-snap-type": ["none", "mandatory", "proximity"], + "scroll-snap-type-x": ["none", "mandatory", "proximity"], + "scroll-snap-type-y": ["none", "mandatory", "proximity"], + "scroll-snap-points-x": ["none", "repeat(100%)", "repeat(120px), repeat(calc(3*25px))"], + "scroll-snap-points-y": ["none", "repeat(100%)", "repeat(120px), repeat(calc(3*25px))"], + "scroll-snap-destination": ["0px 0px", "25% 25%", "6px 5px", "20% 3em", "0 0", "0in 1in", "top", "right", "top left", "top right", "center", "calc(2px)", "calc(50%)", "calc(3*25px)", "calc(3*25px) 5px", "5px calc(3*25px)", "calc(20%) calc(3*25px)", "calc(25px*3)", "calc(3*25px + 50%)"], + "scroll-snap-coordinate": ["none", "25% 25%", "6px 5px", "20% 3em", "0 0", "0in 1in", "top", "right", "top left", "top right", "center", "calc(2px)", "calc(50%)", "calc(3*25px)", "calc(3*25px) 5px", "5px calc(3*25px)", "calc(20%) calc(3*25px)", "calc(25px*3)", "calc(3*25px + 50%)", "calc(20%) calc(3*25px), center"], + } + }, }; From 8f038a54ac3ef1302b00955c8c9f396237e83080 Mon Sep 17 00:00:00 2001 From: Zefling Date: Wed, 21 Jan 2015 22:20:26 +0100 Subject: [PATCH 100/668] Update tests.js Little error --- tests.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests.js b/tests.js index 89b02cbe..3ad41ade 100644 --- a/tests.js +++ b/tests.js @@ -657,7 +657,7 @@ window.Specs = { "scroll-snap-points-x": ["none", "repeat(100%)", "repeat(120px), repeat(calc(3*25px))"], "scroll-snap-points-y": ["none", "repeat(100%)", "repeat(120px), repeat(calc(3*25px))"], "scroll-snap-destination": ["0px 0px", "25% 25%", "6px 5px", "20% 3em", "0 0", "0in 1in", "top", "right", "top left", "top right", "center", "calc(2px)", "calc(50%)", "calc(3*25px)", "calc(3*25px) 5px", "5px calc(3*25px)", "calc(20%) calc(3*25px)", "calc(25px*3)", "calc(3*25px + 50%)"], - "scroll-snap-coordinate": ["none", "25% 25%", "6px 5px", "20% 3em", "0 0", "0in 1in", "top", "right", "top left", "top right", "center", "calc(2px)", "calc(50%)", "calc(3*25px)", "calc(3*25px) 5px", "5px calc(3*25px)", "calc(20%) calc(3*25px)", "calc(25px*3)", "calc(3*25px + 50%)", "calc(20%) calc(3*25px), center"], + "scroll-snap-coordinate": ["none", "25% 25%", "6px 5px", "20% 3em", "0 0", "0in 1in", "top", "right", "top left", "top right", "center", "calc(2px)", "calc(50%)", "calc(3*25px)", "calc(3*25px) 5px", "5px calc(3*25px)", "calc(20%) calc(3*25px)", "calc(25px*3)", "calc(3*25px + 50%)", "calc(20%) calc(3*25px), center"], } - }, + } }; From 183954dcd10fdc58d07866fa8ab0ae7b03e85eab Mon Sep 17 00:00:00 2001 From: Zefling Date: Mon, 26 Jan 2015 00:35:17 +0100 Subject: [PATCH 101/668] CSS Ruby update Update remove "right" and "left" : http://dev.w3.org/csswg/css-ruby-1/#propdef-ruby-position --- tests.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests.js b/tests.js index 3ad41ade..886cea40 100644 --- a/tests.js +++ b/tests.js @@ -642,7 +642,7 @@ window.Specs = { "title": "Ruby", "properties": { "display": ["ruby", "ruby-base", "ruby-text", "ruby-base-container", "ruby-text-container"], - "ruby-position" : ["over right", "under right", "inter-character right", "over left"], + "ruby-position" : ["over", "under", "inter-character"], "ruby-merge" : ["separate", "collapse", "auto"], "ruby-align" : ["start", "center", "space-between", "space-around"] } From 884272fa83b82ee196116572826616bfcc5cf60b Mon Sep 17 00:00:00 2001 From: SebastianZ Date: Sat, 7 Feb 2015 22:16:07 +0100 Subject: [PATCH 102/668] Added support for CSS Logical Properties Level 1 (issue #88) --- tests.js | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 51 insertions(+), 2 deletions(-) diff --git a/tests.js b/tests.js index 886cea40..6989f3b6 100644 --- a/tests.js +++ b/tests.js @@ -507,7 +507,7 @@ window.Specs = { "grid-template-columns": ["none", "subgrid", "auto", "100px", "1fr", "100px 1fr auto", "repeat(2, 100px 1fr)", "100px, 1fr, 100px, 1fr, 100px", "100px 1fr max-content minmax(min-content, 1fr)", "10px (col-start) 250px (col-end)"], "grid-template-rows": ["none", "subgrid", "auto", "100px", "1fr", "100px 1fr auto", "repeat(2, 100px 1fr)", "100px, 1fr, 100px, 1fr, 100px", "100px 1fr max-content minmax(min-content, 1fr)", "10px (row-start) 250px (row-end)"], "grid-template-areas": ["none", "articles", "nav articles"], - "grid-template": ["none", "auto 1fr auto / auto 1fr", "auto 1fr auto / (row-start) 'a a a' (row-end)"], + "grid-template": ["none", "auto 1fr auto / auto 1fr", "auto 1fr auto / (row-start) 'a a a' (row-end)"], "grid-auto-columns": ["auto", "1fr", "100px", "max-content", "minmax(min-content, 1fr)"], "grid-auto-rows": ["auto", "1fr", "100px", "min-content", "minmax(min-content, 1fr)"], "grid-auto-flow": ["none", "rows", "colums"], @@ -644,7 +644,7 @@ window.Specs = { "display": ["ruby", "ruby-base", "ruby-text", "ruby-base-container", "ruby-text-container"], "ruby-position" : ["over", "under", "inter-character"], "ruby-merge" : ["separate", "collapse", "auto"], - "ruby-align" : ["start", "center", "space-between", "space-around"] + "ruby-align" : ["start", "center", "space-between", "space-around"] } }, @@ -659,5 +659,54 @@ window.Specs = { "scroll-snap-destination": ["0px 0px", "25% 25%", "6px 5px", "20% 3em", "0 0", "0in 1in", "top", "right", "top left", "top right", "center", "calc(2px)", "calc(50%)", "calc(3*25px)", "calc(3*25px) 5px", "5px calc(3*25px)", "calc(20%) calc(3*25px)", "calc(25px*3)", "calc(3*25px + 50%)"], "scroll-snap-coordinate": ["none", "25% 25%", "6px 5px", "20% 3em", "0 0", "0in 1in", "top", "right", "top left", "top right", "center", "calc(2px)", "calc(50%)", "calc(3*25px)", "calc(3*25px) 5px", "5px calc(3*25px)", "calc(20%) calc(3*25px)", "calc(25px*3)", "calc(3*25px + 50%)", "calc(20%) calc(3*25px), center"], } + }, + + "css-logical-properties": { + "title": "Logical Properties", + "properties": { + "caption-side": ["block-start", "block-end", "inline-start", "inline-end"], + "float": ["inline-start", "inline-end"], + "clear": ["inline-start", "inline-end"], + "text-align": ["start", "end"], + "resize": ["block", "inline"], + "block-size": ["100px"], + "inline-size": ["100px"], + "min-block-size": ["100px"], + "min-inline-size": ["100px"], + "max-block-size": ["100px"], + "max-inline-size": ["100px"], + "margin-block-start": ["10px"], + "margin-block-end": ["10px"], + "margin-inline-start": ["10px"], + "margin-inline-end": ["10px"], + "offset-block-start": ["10px"], + "offset-block-end": ["10px"], + "offset-inline-start": ["10px"], + "offset-inline-end": ["10px"], + "padding-block-start": ["10px"], + "padding-block-end": ["10px"], + "padding-inline-start": ["10px"], + "padding-inline-end": ["10px"], + "border-block-start-width": ["thin"], + "border-block-end-width": ["thin"], + "border-inline-start-width": ["thin"], + "border-inline-end-width": ["thin"], + "border-block-start-style": ["dotted"], + "border-block-end-style": ["dotted"], + "border-inline-start-style": ["dotted"], + "border-inline-end-style": ["dotted"], + "border-block-start-color": ["navy"], + "border-block-end-color": ["navy"], + "border-inline-start-color": ["navy"], + "border-inline-end-color": ["navy"], + "margin": ["logical 5px 10px 15px 20px"], + "padding": ["logical 5px 10px 15px 20px"], + "border-color": ["logical red green blue yellow"], + "border-style": ["logical solid dotted dashed none"], + "border-width": ["logical 5px 10px 15px 20px"], + "background-image-transform": ["logical", "physical", "rotate"], + "background-repeat": ["logical repeat-x no-repeat"], + "border-image-transform": ["logical", "physical", "rotate"] + } } }; From 67ef718bdcf24e8b46d4ede3a143ffe1f65adf91 Mon Sep 17 00:00:00 2001 From: Merih Akar Date: Thu, 19 Feb 2015 21:16:07 +0100 Subject: [PATCH 103/668] fix flex-basis test main-size is removed from the values that flex-basis accepts, content value is added instead --- tests.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests.js b/tests.js index 6989f3b6..c13bfe83 100644 --- a/tests.js +++ b/tests.js @@ -489,7 +489,7 @@ window.Specs = { "align-self": ["flex-start", "flex-end"], "display": ["flex", "inline-flex"], "flex": ["none", "5 7 10%"], - "flex-basis": ["auto", "main-size", "1px"], + "flex-basis": ["auto", "content", "1px"], "flex-direction": ["row","row-reverse","column","column-reverse"], "flex-flow": ["row", "row-reverse", "column", "column-reverse", "wrap", "wrap-reverse"], "flex-grow": ["0","5"], From 703c875d2505bde72f04607b23054573865ae03f Mon Sep 17 00:00:00 2001 From: Zefling Date: Sat, 7 Mar 2015 00:36:45 +0100 Subject: [PATCH 104/668] Update tests.js Add cssom-view and little change for css-snappoints --- tests.js | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/tests.js b/tests.js index c13bfe83..f847cc60 100644 --- a/tests.js +++ b/tests.js @@ -638,6 +638,13 @@ window.Specs = { } }, + "cssom-view": { + "title": "CSSOM View Module", + "properties": { + "scroll-behavior": ["auto", "smooth "] + } + }, + "css-ruby-1": { "title": "Ruby", "properties": { @@ -654,8 +661,8 @@ window.Specs = { "scroll-snap-type": ["none", "mandatory", "proximity"], "scroll-snap-type-x": ["none", "mandatory", "proximity"], "scroll-snap-type-y": ["none", "mandatory", "proximity"], - "scroll-snap-points-x": ["none", "repeat(100%)", "repeat(120px), repeat(calc(3*25px))"], - "scroll-snap-points-y": ["none", "repeat(100%)", "repeat(120px), repeat(calc(3*25px))"], + "scroll-snap-points-x": ["none", "repeat(100%)", "repeat(120px)", "repeat(calc(3*25px))"], + "scroll-snap-points-y": ["none", "repeat(100%)", "repeat(120px)", "repeat(calc(3*25px))"], "scroll-snap-destination": ["0px 0px", "25% 25%", "6px 5px", "20% 3em", "0 0", "0in 1in", "top", "right", "top left", "top right", "center", "calc(2px)", "calc(50%)", "calc(3*25px)", "calc(3*25px) 5px", "5px calc(3*25px)", "calc(20%) calc(3*25px)", "calc(25px*3)", "calc(3*25px + 50%)"], "scroll-snap-coordinate": ["none", "25% 25%", "6px 5px", "20% 3em", "0 0", "0in 1in", "top", "right", "top left", "top right", "center", "calc(2px)", "calc(50%)", "calc(3*25px)", "calc(3*25px) 5px", "5px calc(3*25px)", "calc(20%) calc(3*25px)", "calc(25px*3)", "calc(3*25px + 50%)", "calc(20%) calc(3*25px), center"], } From f9b8cf1c9ec134dc7cd131760a665e4cf10474b5 Mon Sep 17 00:00:00 2001 From: Zefling Date: Mon, 6 Apr 2015 01:49:22 +0200 Subject: [PATCH 105/668] Lists and Counters Add list style properties --- tests.js | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/tests.js b/tests.js index f847cc60..2145e1c4 100644 --- a/tests.js +++ b/tests.js @@ -715,5 +715,66 @@ window.Specs = { "background-repeat": ["logical repeat-x no-repeat"], "border-image-transform": ["logical", "physical", "rotate"] } + }, + + "css-lists": { + "title": "Lists and Counters", + "properties": { + "list-style" : [ + "outside", "disc", "disc outside", "outside disc", "disc none", "none disc", "none disc outside", "none outside disc", "disc none outside", "disc outside none", "outside none disc", "outside disc none", "inside none", "none inside", "none none inside", "square", "none", "none none", "outside none none", "none outside none", "none none outside", "none outside", "outside none", "outside outside", "outside inside", + "\\32 style", "\\32 style inside", '"-"', "'-'", "inside '-'", "'-' outside", "none '-'", "inside none '-'", + "symbols(\"*\" \"\\2020\" \"\\2021\" \"\\A7\")", + "symbols(cyclic \"*\" \"\\2020\" \"\\2021\" \"\\A7\")", + "inside symbols(\"*\" \"\\2020\" \"\\2021\" \"\\A7\")", + "symbols(\"*\" \"\\2020\" \"\\2021\" \"\\A7\") outside", + "none symbols(\"*\" \"\\2020\" \"\\2021\" \"\\A7\")", + "none symbols(\"*\" \"\\2020\" \"\\2021\" \"\\A7\")", + "inside none symbols(\"*\" \"\\2020\" \"\\2021\" \"\\A7\")", + "inside none symbols(\"*\" \"\\2020\" \"\\2021\" \"\\A7\")", + 'url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==")', + 'none url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==")', + 'url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==") none', + 'url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==") outside', + 'outside url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==")', + 'outside none url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==")', + 'outside url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==") none', + 'none url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==") outside', + 'none outside url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==")', + 'url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==") outside none', + 'url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==") none outside' + ], + "list-style-type": [ + "disc", "none", "circle", "square", + "disclosure-closed", "disclosure-open", + "decimal", "decimal-leading-zero", + "lower-roman", "upper-roman", "lower-greek", + "lower-alpha", "lower-latin", "upper-alpha", "upper-latin", + "hebrew", "armenian", "georgian", + "cjk-decimal", "cjk-ideographic", + "hiragana", "katakana", "hiragana-iroha", "katakana-iroha", + "japanese-informal", "japanese-formal", "korean-hangul-formal", + "korean-hanja-informal", "korean-hanja-formal", + "simp-chinese-informal", "simp-chinese-formal", + "trad-chinese-informal", "trad-chinese-forma + "cjk-heavenly-stem", "cjk-earthly-branch", + "trad-chinese-informal", "trad-chinese-formal", + "simp-chinese-informal", "simp-chinese-formal", + "japanese-informal", "japanese-formal", + "arabic-indic", "persian", "urdu", + "devanagari", "gurmukhi", "gujarati", + "oriya", "kannada", "malayalam", "bengali", + "tamil", "telugu", "thai", "lao", + "myanmar", "khmer", + "hangul", "hangul-consonant", + "ethiopic-halehame", "ethiopic-numeric", + "ethiopic-halehame-am", + "ethiopic-halehame-ti-er", "ethiopic-halehame-ti-et", + "other-style", "inside", "outside", "\\32 style", + '"-"', "'-'", + "symbols(\"*\" \"\\2020\" \"\\2021\" \"\\A7\")", + "symbols(cyclic '*' '\\2020' '\\2021' '\\A7')" + ] + } } + }; From 541dc6cd06bf6dbd04e97858fce4eda3b7e00779 Mon Sep 17 00:00:00 2001 From: Zefling Date: Mon, 6 Apr 2015 02:03:26 +0200 Subject: [PATCH 106/668] Lists and Counters Corrections --- tests.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tests.js b/tests.js index 2145e1c4..38f2f3f3 100644 --- a/tests.js +++ b/tests.js @@ -716,7 +716,7 @@ window.Specs = { "border-image-transform": ["logical", "physical", "rotate"] } }, - + "css-lists": { "title": "Lists and Counters", "properties": { @@ -731,7 +731,8 @@ window.Specs = { "none symbols(\"*\" \"\\2020\" \"\\2021\" \"\\A7\")", "inside none symbols(\"*\" \"\\2020\" \"\\2021\" \"\\A7\")", "inside none symbols(\"*\" \"\\2020\" \"\\2021\" \"\\A7\")", - 'url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==")', + // render problem (too long) + /*'url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==")', 'none url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==")', 'url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==") none', 'url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==") outside', @@ -741,7 +742,7 @@ window.Specs = { 'none url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==") outside', 'none outside url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==")', 'url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==") outside none', - 'url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==") none outside' + 'url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==") none outside'*/ ], "list-style-type": [ "disc", "none", "circle", "square", @@ -755,7 +756,7 @@ window.Specs = { "japanese-informal", "japanese-formal", "korean-hangul-formal", "korean-hanja-informal", "korean-hanja-formal", "simp-chinese-informal", "simp-chinese-formal", - "trad-chinese-informal", "trad-chinese-forma + "trad-chinese-informal", "trad-chinese-formal", "cjk-heavenly-stem", "cjk-earthly-branch", "trad-chinese-informal", "trad-chinese-formal", "simp-chinese-informal", "simp-chinese-formal", @@ -776,5 +777,4 @@ window.Specs = { ] } } - }; From 7e71a614d66de99c41e0657b858b2a8b0a8d93fd Mon Sep 17 00:00:00 2001 From: SebastianZ Date: Mon, 15 Jun 2015 10:43:04 +0200 Subject: [PATCH 107/668] Implemented 'transform-box' property (issue #97) --- tests.js | 1 + 1 file changed, 1 insertion(+) diff --git a/tests.js b/tests.js index f847cc60..fee5f801 100644 --- a/tests.js +++ b/tests.js @@ -282,6 +282,7 @@ window.Specs = { "perspective(600px)" ], "transform-origin": ["10px", "top", "top left", "50% 100%", "left 0%", "left 50% 0"], + "transform-box": ["border-box", "fill-box", "view-box"], "transform-style": ["flat", "preserve-3d"], "perspective": ["none", "600px"], "perspective-origin": ["10px", "top", "top left", "50% 100%", "left 0%"], From 925e34fae4e728c9a87ece685c1be7402c35ccff Mon Sep 17 00:00:00 2001 From: David Storey Date: Thu, 9 Jul 2015 01:31:35 -0700 Subject: [PATCH 108/668] Update CSS Basic UI Level 3 to CandRec spec MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * “add caret-color property, but at risk.” * “Dropped the `padding-box` value of the `box-sizing` property due to no implementation interest from UA vendors.” (supported by FF) * “`::value` and `::choices` pseudo-elements have been dropped due to insufficient implementer interest.” (supported by IE [::value] and Chrome) * “Dropped the `nav-index` property due to lack of implementation interest.” * “`ime-mode` explicitly obsoleted.” (supported by IE and FF) * “Dropped the `icon` property.” * “Dropped the `icon` value of the `content` property.” * “XForms-only pseudo-elements dropped.” (seems to be ::repeat-* as they’re not in Selectors L4 or Pseudo-elements module I’ve left the selectors in this module even though they’ve been moved out as they’re now in Selectors L4, and there is no other L4 modules in this test AFAICT --- tests.js | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/tests.js b/tests.js index f847cc60..f385dbbf 100644 --- a/tests.js +++ b/tests.js @@ -189,9 +189,7 @@ window.Specs = { "css3-ui": { "title": "Basic User Interface", "properties": { - "content": "icon", - "icon": ["auto", "url(foo.png)", "url(foo.png), url(foo.gif)"], - "box-sizing": ["border-box", "padding-box", "content-box"], + "box-sizing": ["border-box", "content-box"], "outline-offset": ["-5px", "0", "5px"], "resize": ["none", "both", "horizontal", "vertical"], "text-overflow": ["clip", "ellipsis", "'foo'"].times(1, 2), @@ -199,12 +197,11 @@ window.Specs = { "url(foo.png) 2 2, auto", "default", "none", "context-menu", "cell", "vertical-text", "alias", "copy", "no-drop", "not-allowed", "ew-resize", "ns-resize", "nesw-resize", "nwse-resize", "col-resize", "row-resize", "all-scroll", "zoom-in", "zoom-out" ], - "nav-index": ["auto", "1", "10"], + "caret-color": ["auto", "green"], "nav-up": ["auto", "#foo", "#foo current", "#foo root"], "nav-right": ["auto", "#foo", "#foo current", "#foo root"], "nav-down": ["auto", "#foo", "#foo current", "#foo root"], - "nav-left": ["auto", "#foo", "#foo current", "#foo root"], - "ime-mode": ["auto", "normal", "active", "inactive", "disabled"] + "nav-left": ["auto", "#foo", "#foo current", "#foo root"] }, "selectors": { ":indeterminate": ":indeterminate", @@ -216,11 +213,7 @@ window.Specs = { ":required": ":required", ":optional": ":optional", ":read-only": ":read-only", - ":read-write": ":read-write", - "::value": "::value", - "::choices": "::choices", - "::repeat-item": "::repeat-item", - "::repeat-index": "::repeat-index" + ":read-write": ":read-write" } }, From 4cbacacf49dd6fda803ce5261cc449bc0e05fbc2 Mon Sep 17 00:00:00 2001 From: David Storey Date: Thu, 9 Jul 2015 02:53:25 -0700 Subject: [PATCH 109/668] Added `q` unit to Values and Units Added in June Cand Rec. http://www.w3.org/TR/css-values/#absolute-lengths --- tests.js | 1 + 1 file changed, 1 insertion(+) diff --git a/tests.js b/tests.js index f847cc60..a084fede 100644 --- a/tests.js +++ b/tests.js @@ -439,6 +439,7 @@ window.Specs = { "vh": "5vh", "vmin": "5vmin", "vmax": "5vmax", + "q": "5q", "attr()": ["attr(data-px)", "attr(data-px px)", "attr(data-px px, initial)"], "calc()": ["calc(1px + 2px)", "calc(5px*2)", "calc(5px/2)", "calc(100%/3 - 2*1em - 2*1px)", "calc(attr(data-px)*2)", "calc(5px - 10px)", "calc(1vw - 1px)"], "toggle()": "toggle(1px, 2px)" From 444ee900e4a449dca7ef0e472a18592b77bdb1ae Mon Sep 17 00:00:00 2001 From: David Storey Date: Thu, 9 Jul 2015 22:16:40 -0700 Subject: [PATCH 110/668] Add Fullscreen pseudos * ::backdrop * :fullscreen --- tests.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tests.js b/tests.js index f847cc60..701a0718 100644 --- a/tests.js +++ b/tests.js @@ -611,6 +611,14 @@ window.Specs = { "touch-action": ["auto", "none", "pan-x", "pan-y", "pan-x pan-y", "manipulation"] } }, + + "fullscreen": { + "title": "Fullscreen API", + "selectors": { + "::backdrop": "::backdrop", + ":fullscreen": ":fullscreen" + } + }, "css3-break": { "title": "Fragmentation", From 24ff4886f823b3c7c5de2301025f72757ebccdae Mon Sep 17 00:00:00 2001 From: David Storey Date: Thu, 9 Jul 2015 22:34:39 -0700 Subject: [PATCH 111/668] Add CSS Exclusions --- tests.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tests.js b/tests.js index f847cc60..d2165e43 100644 --- a/tests.js +++ b/tests.js @@ -597,6 +597,14 @@ window.Specs = { "shape-margin": ["0", "10px", "50%"] } }, + + "css3-exclusions": { + "title": "Exclusions", + "properties": { + "wrap-flow": ["auto", "both", "start", "end", "minimum", "maximum", "clear"], + "wrap-through": ["wrap", "none"] + } + }, "filter-effects": { "title": "Filter Effects", From 464644a0b78ca6c9e668261e4c0ce7376537aeb1 Mon Sep 17 00:00:00 2001 From: Daniel Holbert Date: Tue, 25 Aug 2015 10:26:22 -0700 Subject: [PATCH 112/668] Restore flexbox test for min-height/min-width:auto This reverts #40. Backstory: the flexbox spec used to include values "min-height:auto" / "min-width:auto"; then they were removed (hence #40 which removed them here), and they were later restored, so this patch restores them here. The current spec text on these values is here: https://drafts.csswg.org/css-flexbox-1/#min-size-auto --- tests.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests.js b/tests.js index af590305..2df30210 100644 --- a/tests.js +++ b/tests.js @@ -491,6 +491,8 @@ window.Specs = { "flex-shrink": ["1","10"], "flex-wrap": ["nowrap", "wrap", "wrap-reverse"], "justify-content": ["flex-start", "flex-end", "space-between", "space-around"], + "min-height": ["auto"], + "min-width": ["auto"], "order": ["0", "1"] } }, From 888db6903a8c17e159d3f5d96713c20a404fc7f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emil=20Bjo=CC=88rklund?= Date: Sat, 5 Sep 2015 13:23:37 +0200 Subject: [PATCH 113/668] Updated grid track and placement syntax --- tests.js | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/tests.js b/tests.js index af590305..d75e20de 100644 --- a/tests.js +++ b/tests.js @@ -499,22 +499,21 @@ window.Specs = { "title": "Grid Layout", "properties": { "display": ["grid", "inline-grid"], - "grid-template-columns": ["none", "subgrid", "auto", "100px", "1fr", "100px 1fr auto", "repeat(2, 100px 1fr)", "100px, 1fr, 100px, 1fr, 100px", "100px 1fr max-content minmax(min-content, 1fr)", "10px (col-start) 250px (col-end)"], - "grid-template-rows": ["none", "subgrid", "auto", "100px", "1fr", "100px 1fr auto", "repeat(2, 100px 1fr)", "100px, 1fr, 100px, 1fr, 100px", "100px 1fr max-content minmax(min-content, 1fr)", "10px (row-start) 250px (row-end)"], + "grid-template-columns": ["none", "subgrid", "auto", "100px", "1fr", "100px 1fr auto", "repeat(2, 100px 1fr)", "100px 1fr max-content minmax(min-content, 1fr)", "10px [col-start] 250px [col-end]"], + "grid-template-rows": ["none", "subgrid", "auto", "100px", "1fr", "100px 1fr auto", "repeat(2, 100px 1fr)", "100px 1fr max-content minmax(min-content, 1fr)", "10px [row-start] 250px [row-end]"], "grid-template-areas": ["none", "articles", "nav articles"], - "grid-template": ["none", "auto 1fr auto / auto 1fr", "auto 1fr auto / (row-start) 'a a a' (row-end)"], + "grid-template": ["none", "auto 1fr auto / auto 1fr", "auto 1fr auto / [header-top] 'a a a' [header-bottom] [main-top] 'b b b' 1fr [main-bottom]"], "grid-auto-columns": ["auto", "1fr", "100px", "max-content", "minmax(min-content, 1fr)"], "grid-auto-rows": ["auto", "1fr", "100px", "min-content", "minmax(min-content, 1fr)"], - "grid-auto-flow": ["none", "rows", "colums"], - "grid-auto-position": ["1 / 1"], - "grid": ["columns 1fr / auto"], - "grid-row-start": ["auto", "4", "'C'", "'C' 2", "span 'C'", 'span 1'], - "grid-column-start": ["auto", "4", "'C'", "'C' 2", "span 'C'", 'span 1'], - "grid-row-end": ["auto", "4", "'C'", "'C' 2", "span 'C'", 'span 1'], - "grid-column-end": ["auto", "4", "'C'", "'C' 2", "span 'C'", 'span 1'], + "grid-auto-flow": ["row", "column", "row dense", "column dense"], + "grid": ["column 1fr / auto"], + "grid-row-start": ["auto", "4", "C", "C 2", "span C", "span 1"], + "grid-column-start": ["auto", "4", "C", "C 2", "span C", "span 1"], + "grid-row-end": ["auto", "4", "C", "C 2", "span C", "span 1"], + "grid-column-end": ["auto", "4", "C", "C 2", "span C", "span 1"], "grid-column": ["auto", "1", "-1", "1 / 1", "1 / -1", "auto / auto", "2 / span 2"], "grid-row": ["auto", "1", "-1", "1 / 1", "1 / -1", "auto / auto", "2 / span 2"], - "grid-area": ["1 / 1", "1 / span 1", "span / 10 / -1"] + "grid-area": ["1 / 1", "1 / span 1", "span / 10 / -1"], } }, From 623e6376534fe8b6a22aa88700aab99780ea962b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emil=20Bjo=CC=88rklund?= Date: Sat, 5 Sep 2015 13:24:12 +0200 Subject: [PATCH 114/668] Added grid gap syntax (only in editors draft at the moment) --- tests.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests.js b/tests.js index d75e20de..b9e946bb 100644 --- a/tests.js +++ b/tests.js @@ -514,6 +514,9 @@ window.Specs = { "grid-column": ["auto", "1", "-1", "1 / 1", "1 / -1", "auto / auto", "2 / span 2"], "grid-row": ["auto", "1", "-1", "1 / 1", "1 / -1", "auto / auto", "2 / span 2"], "grid-area": ["1 / 1", "1 / span 1", "span / 10 / -1"], + "grid-column-gap": ["normal", "1em"], + "grid-row-gap": ["normal", "1em"], + "grid-gap": ["normal", "normal 1em", "1em", "1em 1em"] } }, From 3149bc16e7e864bb83e0ec95f27882aba69a97a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emil=20Bjo=CC=88rklund?= Date: Sat, 5 Sep 2015 13:33:32 +0200 Subject: [PATCH 115/668] grid template areas syntax: quoted, space-separated strings, including dot-syntax for unnamed areas. --- tests.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests.js b/tests.js index b9e946bb..f14ca154 100644 --- a/tests.js +++ b/tests.js @@ -501,7 +501,7 @@ window.Specs = { "display": ["grid", "inline-grid"], "grid-template-columns": ["none", "subgrid", "auto", "100px", "1fr", "100px 1fr auto", "repeat(2, 100px 1fr)", "100px 1fr max-content minmax(min-content, 1fr)", "10px [col-start] 250px [col-end]"], "grid-template-rows": ["none", "subgrid", "auto", "100px", "1fr", "100px 1fr auto", "repeat(2, 100px 1fr)", "100px 1fr max-content minmax(min-content, 1fr)", "10px [row-start] 250px [row-end]"], - "grid-template-areas": ["none", "articles", "nav articles"], + "grid-template-areas": ["none", "'articles'", "'head head'", "'head head' 'nav main' 'foot ....'"], "grid-template": ["none", "auto 1fr auto / auto 1fr", "auto 1fr auto / [header-top] 'a a a' [header-bottom] [main-top] 'b b b' 1fr [main-bottom]"], "grid-auto-columns": ["auto", "1fr", "100px", "max-content", "minmax(min-content, 1fr)"], "grid-auto-rows": ["auto", "1fr", "100px", "min-content", "minmax(min-content, 1fr)"], From f2165f49ab6244f6485bda8138f6d6d256ccea3c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emil=20Bjo=CC=88rklund?= Date: Sat, 5 Sep 2015 13:40:54 +0200 Subject: [PATCH 116/668] Align strings in grid-template shorthand. --- tests.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests.js b/tests.js index f14ca154..eb5a4a89 100644 --- a/tests.js +++ b/tests.js @@ -502,7 +502,7 @@ window.Specs = { "grid-template-columns": ["none", "subgrid", "auto", "100px", "1fr", "100px 1fr auto", "repeat(2, 100px 1fr)", "100px 1fr max-content minmax(min-content, 1fr)", "10px [col-start] 250px [col-end]"], "grid-template-rows": ["none", "subgrid", "auto", "100px", "1fr", "100px 1fr auto", "repeat(2, 100px 1fr)", "100px 1fr max-content minmax(min-content, 1fr)", "10px [row-start] 250px [row-end]"], "grid-template-areas": ["none", "'articles'", "'head head'", "'head head' 'nav main' 'foot ....'"], - "grid-template": ["none", "auto 1fr auto / auto 1fr", "auto 1fr auto / [header-top] 'a a a' [header-bottom] [main-top] 'b b b' 1fr [main-bottom]"], + "grid-template": ["none", "auto 1fr auto / auto 1fr", "auto 1fr auto / [header-top] 'a a a' [header-bottom] [main-top] 'b b b' 1fr [main-bottom]"], "grid-auto-columns": ["auto", "1fr", "100px", "max-content", "minmax(min-content, 1fr)"], "grid-auto-rows": ["auto", "1fr", "100px", "min-content", "minmax(min-content, 1fr)"], "grid-auto-flow": ["row", "column", "row dense", "column dense"], From d0da4302ece94367be54ee88dc390ca969ffd505 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emil=20Bjo=CC=88rklund?= Date: Sat, 5 Sep 2015 15:42:52 +0200 Subject: [PATCH 117/668] Commented out the grid gap properties for now, as they are probably too much in flux. --- tests.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests.js b/tests.js index eb5a4a89..98b0de1f 100644 --- a/tests.js +++ b/tests.js @@ -513,10 +513,10 @@ window.Specs = { "grid-column-end": ["auto", "4", "C", "C 2", "span C", "span 1"], "grid-column": ["auto", "1", "-1", "1 / 1", "1 / -1", "auto / auto", "2 / span 2"], "grid-row": ["auto", "1", "-1", "1 / 1", "1 / -1", "auto / auto", "2 / span 2"], - "grid-area": ["1 / 1", "1 / span 1", "span / 10 / -1"], - "grid-column-gap": ["normal", "1em"], - "grid-row-gap": ["normal", "1em"], - "grid-gap": ["normal", "normal 1em", "1em", "1em 1em"] + "grid-area": ["1 / 1", "1 / span 1", "span / 10 / -1"] + // "grid-column-gap": ["normal", "1em"], + // "grid-row-gap": ["normal", "1em"], + // "grid-gap": ["normal", "normal 1em", "1em", "1em 1em"] } }, From d9e10c0ca6bca6adfa09d2728fe357eef10ffd00 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emil=20Bjo=CC=88rklund?= Date: Sat, 5 Sep 2015 16:13:55 +0200 Subject: [PATCH 118/668] Comment on test status for gap. --- tests.js | 1 + 1 file changed, 1 insertion(+) diff --git a/tests.js b/tests.js index 98b0de1f..93a93074 100644 --- a/tests.js +++ b/tests.js @@ -514,6 +514,7 @@ window.Specs = { "grid-column": ["auto", "1", "-1", "1 / 1", "1 / -1", "auto / auto", "2 / span 2"], "grid-row": ["auto", "1", "-1", "1 / 1", "1 / -1", "auto / auto", "2 / span 2"], "grid-area": ["1 / 1", "1 / span 1", "span / 10 / -1"] + /* These are on their way into the draft spec, currently only in editors draft */ // "grid-column-gap": ["normal", "1em"], // "grid-row-gap": ["normal", "1em"], // "grid-gap": ["normal", "normal 1em", "1em", "1em 1em"] From 24ed2e9ac3641099cf8f87fedb8aab0027b7c9f2 Mon Sep 17 00:00:00 2001 From: David Storey Date: Sun, 13 Sep 2015 20:37:03 -0700 Subject: [PATCH 119/668] scroll-snap-type-x and -y are not in Scroll snap points spec MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit …they probably were at some point (but strangely the spec doesn't have link to older versions). Firefox passes those tests, and marks them as non-standard on MDN --- tests.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/tests.js b/tests.js index af590305..e2754c3f 100644 --- a/tests.js +++ b/tests.js @@ -670,8 +670,6 @@ window.Specs = { "title": "Scroll Snap Points", "properties": { "scroll-snap-type": ["none", "mandatory", "proximity"], - "scroll-snap-type-x": ["none", "mandatory", "proximity"], - "scroll-snap-type-y": ["none", "mandatory", "proximity"], "scroll-snap-points-x": ["none", "repeat(100%)", "repeat(120px)", "repeat(calc(3*25px))"], "scroll-snap-points-y": ["none", "repeat(100%)", "repeat(120px)", "repeat(calc(3*25px))"], "scroll-snap-destination": ["0px 0px", "25% 25%", "6px 5px", "20% 3em", "0 0", "0in 1in", "top", "right", "top left", "top right", "center", "calc(2px)", "calc(50%)", "calc(3*25px)", "calc(3*25px) 5px", "5px calc(3*25px)", "calc(20%) calc(3*25px)", "calc(25px*3)", "calc(3*25px + 50%)"], From c68ee03de017348f8eceff08e81e0eee9d21a114 Mon Sep 17 00:00:00 2001 From: David Storey Date: Mon, 14 Sep 2015 16:18:43 -0700 Subject: [PATCH 120/668] Add CSS-wide unset value MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Mentioned in Values and Units but normatively defined in Cascade L3. Added two properties that inherit (same as inherit) and two that don’t (same as initial). --- tests.js | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/tests.js b/tests.js index b69e4965..1b1de288 100644 --- a/tests.js +++ b/tests.js @@ -536,7 +536,16 @@ window.Specs = { }, "css3-cascade": { - "title": "Resetting All Properties", + "title": "Cascading and Inheritance", + "values": { + "properties": [ + "color", + "font-weight", + "background-image", + "width" + ], + "unset": "unset" + }, "properties": { "all": ["initial", "inherit", "unset"] } From 1723f297e8f0fc37761c6c52b73075dce28349d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emil=20Bjo=CC=88rklund?= Date: Mon, 5 Oct 2015 09:52:59 +0200 Subject: [PATCH 121/668] Grid gap properties uncommented and updated. --- tests.js | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/tests.js b/tests.js index 93a93074..f8a4ae1b 100644 --- a/tests.js +++ b/tests.js @@ -513,11 +513,10 @@ window.Specs = { "grid-column-end": ["auto", "4", "C", "C 2", "span C", "span 1"], "grid-column": ["auto", "1", "-1", "1 / 1", "1 / -1", "auto / auto", "2 / span 2"], "grid-row": ["auto", "1", "-1", "1 / 1", "1 / -1", "auto / auto", "2 / span 2"], - "grid-area": ["1 / 1", "1 / span 1", "span / 10 / -1"] - /* These are on their way into the draft spec, currently only in editors draft */ - // "grid-column-gap": ["normal", "1em"], - // "grid-row-gap": ["normal", "1em"], - // "grid-gap": ["normal", "normal 1em", "1em", "1em 1em"] + "grid-area": ["1 / 1", "1 / span 1", "span / 10 / -1"], + "grid-column-gap": ["0", "1em"], + "grid-row-gap": ["0", "1em"], + "grid-gap": ["normal", "0 1em", "1em", "1em 1em"] } }, From 9254497044e2cf2356ce49bfde30d05711da94db Mon Sep 17 00:00:00 2001 From: J0WI Date: Wed, 4 Nov 2015 01:01:30 +0100 Subject: [PATCH 122/668] make Google Analytics less evil --- index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.html b/index.html index 43d19f49..31c5bcdd 100644 --- a/index.html +++ b/index.html @@ -6,7 +6,7 @@ The CSS3 Test - + From ae6c603dfde224afd036deef79119e36db147102 Mon Sep 17 00:00:00 2001 From: deepj Date: Sun, 23 Feb 2014 23:54:10 +0100 Subject: [PATCH 123/668] Add Display Module Level 3 --- tests.js | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/tests.js b/tests.js index a0d1a60f..743a7ef4 100644 --- a/tests.js +++ b/tests.js @@ -597,6 +597,17 @@ window.Specs = { } }, + "css-display": { + "title": "Display", + "properties": { + "display-inside": ["auto", "block", "table", "flex", "grid"], + "display-outside": ["block-level", "inline-level", "none", "table-row-group", "table-header-group", "table-footer-group", "table-row", "table-cell", "table-column-group", "table-column", "table-caption"], + "display-extras": ["none", "list-item"], + "display": ["auto", "block-level", "inline-level"], + "display-box": ["normal", "none", "contents"] + } + }, + "css-shapes": { "title": "Shapes", "properties": { @@ -605,7 +616,7 @@ window.Specs = { "shape-margin": ["0", "10px", "50%"] } }, - + "css3-exclusions": { "title": "Exclusions", "properties": { @@ -627,13 +638,13 @@ window.Specs = { "touch-action": ["auto", "none", "pan-x", "pan-y", "pan-x pan-y", "manipulation"] } }, - + "fullscreen": { "title": "Fullscreen API", "selectors": { "::backdrop": "::backdrop", ":fullscreen": ":fullscreen" - } + } }, "css3-break": { @@ -675,10 +686,10 @@ window.Specs = { "display": ["ruby", "ruby-base", "ruby-text", "ruby-base-container", "ruby-text-container"], "ruby-position" : ["over", "under", "inter-character"], "ruby-merge" : ["separate", "collapse", "auto"], - "ruby-align" : ["start", "center", "space-between", "space-around"] + "ruby-align" : ["start", "center", "space-between", "space-around"] } }, - + "css-snappoints": { "title": "Scroll Snap Points", "properties": { @@ -738,12 +749,12 @@ window.Specs = { "border-image-transform": ["logical", "physical", "rotate"] } }, - + "css-lists": { "title": "Lists and Counters", "properties": { "list-style" : [ - "outside", "disc", "disc outside", "outside disc", "disc none", "none disc", "none disc outside", "none outside disc", "disc none outside", "disc outside none", "outside none disc", "outside disc none", "inside none", "none inside", "none none inside", "square", "none", "none none", "outside none none", "none outside none", "none none outside", "none outside", "outside none", "outside outside", "outside inside", + "outside", "disc", "disc outside", "outside disc", "disc none", "none disc", "none disc outside", "none outside disc", "disc none outside", "disc outside none", "outside none disc", "outside disc none", "inside none", "none inside", "none none inside", "square", "none", "none none", "outside none none", "none outside none", "none none outside", "none outside", "outside none", "outside outside", "outside inside", "\\32 style", "\\32 style inside", '"-"', "'-'", "inside '-'", "'-' outside", "none '-'", "inside none '-'", "symbols(\"*\" \"\\2020\" \"\\2021\" \"\\A7\")", "symbols(cyclic \"*\" \"\\2020\" \"\\2021\" \"\\A7\")", @@ -766,8 +777,8 @@ window.Specs = { 'url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==") outside none', 'url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==") none outside'*/ ], - "list-style-type": [ - "disc", "none", "circle", "square", + "list-style-type": [ + "disc", "none", "circle", "square", "disclosure-closed", "disclosure-open", "decimal", "decimal-leading-zero", "lower-roman", "upper-roman", "lower-greek", From ac6c6a5670c7bc6927108bf42e99fa2b3e40a61c Mon Sep 17 00:00:00 2001 From: SebastianZ Date: Mon, 28 Dec 2015 08:10:40 +0100 Subject: [PATCH 124/668] Added 'grab' and 'grabbing' values to 'cursor' property (issue #103) --- tests.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests.js b/tests.js index a0d1a60f..b588fa2f 100644 --- a/tests.js +++ b/tests.js @@ -195,7 +195,8 @@ window.Specs = { "text-overflow": ["clip", "ellipsis", "'foo'"].times(1, 2), "cursor": [ "url(foo.png) 2 2, auto", "default", "none", "context-menu", "cell", "vertical-text", "alias", "copy", "no-drop", "not-allowed", - "ew-resize", "ns-resize", "nesw-resize", "nwse-resize", "col-resize", "row-resize", "all-scroll", "zoom-in", "zoom-out" + "grab", "grabbing", "ew-resize", "ns-resize", "nesw-resize", "nwse-resize", "col-resize", "row-resize", "all-scroll", "zoom-in", + "zoom-out" ], "caret-color": ["auto", "green"], "nav-up": ["auto", "#foo", "#foo current", "#foo root"], From 560085be523ad1ed4962d98c6737c3a4bbb3a8b0 Mon Sep 17 00:00:00 2001 From: SebastianZ Date: Mon, 28 Dec 2015 08:32:56 +0100 Subject: [PATCH 125/668] Renamed the property 'text-combine-horizontal' to 'text-combine-upright' (issue #105) --- tests.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests.js b/tests.js index a0d1a60f..66c20316 100644 --- a/tests.js +++ b/tests.js @@ -376,7 +376,7 @@ window.Specs = { "writing-mode": ["horizontal-tb", "vertical-rl", "vertical-lr"], "text-orientation": ["mixed", "upright", "sideways-right", "sideways-left", "sideways", "use-glyph-orientation"], "caption-side": ["block-start", "block-end"], - "text-combine-horizontal": ["none", "all", "digits 2"] + "text-combine-upright": ["none", "all", "digits 2"] } }, From 5a75f35c0884820d33433c465ed5d8993a5202ad Mon Sep 17 00:00:00 2001 From: SebastianZ Date: Mon, 28 Dec 2015 14:04:48 +0100 Subject: [PATCH 126/668] Removed special handling of success being 0 or 1 (issue #117) --- csstest.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/csstest.js b/csstest.js index 5839f68c..c778ebc4 100644 --- a/csstest.js +++ b/csstest.js @@ -236,15 +236,14 @@ function passclass(info) { success = 1 - info.failed / info.total; } - if (success === 1) { return 'pass' } - if (success === 0) { return 'epic-fail' } - var classes = [ + 'epic-fail', 'fail', 'very-buggy', 'buggy', 'slightly-buggy', 'almost-pass', + 'pass' ]; var index = Math.round(success * (classes.length - 1)); From 1ed4fd1cdab9d27abca58fb7d48a735c4610d8e4 Mon Sep 17 00:00:00 2001 From: J0WI Date: Tue, 29 Dec 2015 14:45:28 +0100 Subject: [PATCH 127/668] force https --- index.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/index.html b/index.html index 31c5bcdd..bd39fad9 100644 --- a/index.html +++ b/index.html @@ -7,7 +7,7 @@ - + @@ -33,7 +33,7 @@

    Determined by passing tests out of - +

    From 1825ec1f30ccd19389f8c38af058bd9a8e48c88f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Fri, 1 Jan 2016 15:54:49 +0100 Subject: [PATCH 128/668] Update Writing Modes 3 module MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Update with changes of “CSS Writing Modes Level 3” (W3C Candidate Recommendation, 15 December 2015) --- tests.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests.js b/tests.js index 4a6d9de1..134956d2 100644 --- a/tests.js +++ b/tests.js @@ -375,8 +375,8 @@ window.Specs = { "direction": ["ltr", "rtl"], "unicode-bidi": ["normal", "embed", "isolate", "bidi-override", "isolate-override", "plaintext"], "writing-mode": ["horizontal-tb", "vertical-rl", "vertical-lr"], - "text-orientation": ["mixed", "upright", "sideways-right", "sideways-left", "sideways", "use-glyph-orientation"], - "caption-side": ["block-start", "block-end"], + "text-orientation": ["mixed", "upright", "sideways"], + "glyph-orientation-vertical": ["auto", "0deg", "90deg", "0", "90"], "text-combine-upright": ["none", "all", "digits 2"] } }, From 157362b5f77bc86feadd8418da23a2a60353f210 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Fri, 1 Jan 2016 16:02:34 +0100 Subject: [PATCH 129/668] Add Overflow Module Level 3 Update patch --- tests.js | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/tests.js b/tests.js index 4a6d9de1..2a925d34 100644 --- a/tests.js +++ b/tests.js @@ -799,5 +799,24 @@ window.Specs = { "symbols(cyclic '*' '\\2020' '\\2021' '\\A7')" ] } + }, + + "css-overflow-3": { + "title": "Overflow", + "properties": { + "max-lines": ["none", "1"], + "overflow": ["paged-x", "paged-y", "paged-x-controls", "paged-y-controls", "fragments"], + "overflow-x": ["paged-x", "paged-y", "paged-x-controls", "paged-y-controls", "fragments"], + "overflow-y": ["paged-x", "paged-y", "paged-x-controls", "paged-y-controls", "fragments"] + }, + "selectors": { + "::nth-fragment()": [ + ":nth-fragment(even)", ":nth-fragment(odd)", + ":nth-fragment(n)", ":nth-fragment(-n)", ":nth-fragment(0n)", + ":nth-fragment(1)", ":nth-fragment(-1)", ":nth-fragment(0)", + ":nth-fragment(n+1)",":nth-fragment(3n+1)", ":nth-fragment(3n + 1)", + ":nth-fragment(-n+1)", ":nth-fragment(3n-1)" + ] + } } }; From 0fe944bd739cd0f96e0fc610f3132f858d0b4441 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Sat, 16 Jan 2016 18:40:42 +0100 Subject: [PATCH 130/668] Cascading and Inheritance Level 4 --- tests.js | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/tests.js b/tests.js index a3042671..04a5a416 100644 --- a/tests.js +++ b/tests.js @@ -535,8 +535,8 @@ window.Specs = { } }, - "css3-cascade": { - "title": "Cascading and Inheritance", + "css-cascade-3": { + "title": "Cascading and Inheritance Level 3", "values": { "properties": [ "color", @@ -547,10 +547,15 @@ window.Specs = { "unset": "unset" }, "properties": { - "all": ["initial", "inherit", "unset"] + "all": ["initial", "inherit", "unset", "revert"] + } + }, + "css-cascade-4": { + "title": "Cascading and Inheritance Level 4", + "properties": { + "all": ["revert"] } }, - "css3-conditional": { "title": "Conditional Rules", "@rules": { From b04fb43ee4e25ff7b580d02e4fe575cf6be7dd47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Sat, 16 Jan 2016 18:44:08 +0100 Subject: [PATCH 131/668] Update tests.js Remove "revert" in Cascading and Inheritance Level 3 --- tests.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests.js b/tests.js index 04a5a416..7a407f3a 100644 --- a/tests.js +++ b/tests.js @@ -547,7 +547,7 @@ window.Specs = { "unset": "unset" }, "properties": { - "all": ["initial", "inherit", "unset", "revert"] + "all": ["initial", "inherit", "unset"] } }, "css-cascade-4": { From 7e5f34b5503dd569a238654e1bd197fd7c96ae3d Mon Sep 17 00:00:00 2001 From: David Storey Date: Fri, 22 Jan 2016 00:41:03 -0800 Subject: [PATCH 132/668] Remove obsolete glyph-orientation-vertical MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit …it is an old SVG only property, that is marked as obsolete in CSS Writing Modes, and in SVG it is marked as “It has been obsoleted in SVG 2 and partially replaced by the ‘text-orientation’ property of CSS Writing Modes Level 3.” --- tests.js | 1 - 1 file changed, 1 deletion(-) diff --git a/tests.js b/tests.js index 7a407f3a..6e6c485c 100644 --- a/tests.js +++ b/tests.js @@ -376,7 +376,6 @@ window.Specs = { "unicode-bidi": ["normal", "embed", "isolate", "bidi-override", "isolate-override", "plaintext"], "writing-mode": ["horizontal-tb", "vertical-rl", "vertical-lr"], "text-orientation": ["mixed", "upright", "sideways"], - "glyph-orientation-vertical": ["auto", "0deg", "90deg", "0", "90"], "text-combine-upright": ["none", "all", "digits 2"] } }, From 6ccd42da891998a03f4b9a3aea034ef3b682e8ad Mon Sep 17 00:00:00 2001 From: David Storey Date: Fri, 22 Jan 2016 00:54:09 -0800 Subject: [PATCH 133/668] Switched 'revert' value of 'all' to CSS-wide 'revert' keyword MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A previous PR adding revert only added it as a value of ‘all’, so only applies if that property is supported. I’ve changed it to the real change, which is adding ‘revert’ as a CSS-wide keyword. I switched out the last test from ‘width’ to ‘all’ to make sure it works on that property. --- tests.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/tests.js b/tests.js index 7a407f3a..7a719ab2 100644 --- a/tests.js +++ b/tests.js @@ -552,8 +552,14 @@ window.Specs = { }, "css-cascade-4": { "title": "Cascading and Inheritance Level 4", - "properties": { - "all": ["revert"] + "values": { + "properties": [ + "color", + "font-weight", + "background-image", + "all" + ], + "revert": "revert" } }, "css3-conditional": { From 1cfc1f814f2e20d7e2f87bc788eb8c4d008ae5e4 Mon Sep 17 00:00:00 2001 From: David Storey Date: Fri, 22 Jan 2016 01:10:11 -0800 Subject: [PATCH 134/668] Remove CSS2.1 values from list-style-type MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit …they are not included in any of the other properties. --- tests.js | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/tests.js b/tests.js index 7a407f3a..0590716c 100644 --- a/tests.js +++ b/tests.js @@ -773,12 +773,8 @@ window.Specs = { 'url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==") none outside'*/ ], "list-style-type": [ - "disc", "none", "circle", "square", "disclosure-closed", "disclosure-open", - "decimal", "decimal-leading-zero", - "lower-roman", "upper-roman", "lower-greek", - "lower-alpha", "lower-latin", "upper-alpha", "upper-latin", - "hebrew", "armenian", "georgian", + "hebrew", "cjk-decimal", "cjk-ideographic", "hiragana", "katakana", "hiragana-iroha", "katakana-iroha", "japanese-informal", "japanese-formal", "korean-hangul-formal", From 743af71e3ec4e02a4e961ae8f5dfc19723532138 Mon Sep 17 00:00:00 2001 From: David Storey Date: Fri, 22 Jan 2016 01:13:24 -0800 Subject: [PATCH 135/668] Remove the list-style shorthand Reason: * A lot of them are CSS2.1 values (all up to \\32) * The CSS3 values are tested in list-style-type * The syntax of the shorthand has not changed, and the two other properties are the same as CSS2.1, so it is basically just testing exactly the same as list-style-type. The only difference is if it works in the shorthand or not. --- tests.js | 24 ------------------------ 1 file changed, 24 deletions(-) diff --git a/tests.js b/tests.js index 0590716c..90f9eae1 100644 --- a/tests.js +++ b/tests.js @@ -748,30 +748,6 @@ window.Specs = { "css-lists": { "title": "Lists and Counters", "properties": { - "list-style" : [ - "outside", "disc", "disc outside", "outside disc", "disc none", "none disc", "none disc outside", "none outside disc", "disc none outside", "disc outside none", "outside none disc", "outside disc none", "inside none", "none inside", "none none inside", "square", "none", "none none", "outside none none", "none outside none", "none none outside", "none outside", "outside none", "outside outside", "outside inside", - "\\32 style", "\\32 style inside", '"-"', "'-'", "inside '-'", "'-' outside", "none '-'", "inside none '-'", - "symbols(\"*\" \"\\2020\" \"\\2021\" \"\\A7\")", - "symbols(cyclic \"*\" \"\\2020\" \"\\2021\" \"\\A7\")", - "inside symbols(\"*\" \"\\2020\" \"\\2021\" \"\\A7\")", - "symbols(\"*\" \"\\2020\" \"\\2021\" \"\\A7\") outside", - "none symbols(\"*\" \"\\2020\" \"\\2021\" \"\\A7\")", - "none symbols(\"*\" \"\\2020\" \"\\2021\" \"\\A7\")", - "inside none symbols(\"*\" \"\\2020\" \"\\2021\" \"\\A7\")", - "inside none symbols(\"*\" \"\\2020\" \"\\2021\" \"\\A7\")", - // render problem (too long) - /*'url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==")', - 'none url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==")', - 'url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==") none', - 'url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==") outside', - 'outside url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==")', - 'outside none url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==")', - 'outside url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==") none', - 'none url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==") outside', - 'none outside url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==")', - 'url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==") outside none', - 'url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAKElEQVR42u3NQQ0AAAgEoNP+nTWFDzcoQE1udQQCgUAgEAgEAsGTYAGjxAE/G/Q2tQAAAABJRU5ErkJggg==") none outside'*/ - ], "list-style-type": [ "disclosure-closed", "disclosure-open", "hebrew", From cc38619accdcb72b23974d5da2171921ce0e84d7 Mon Sep 17 00:00:00 2001 From: David Storey Date: Fri, 22 Jan 2016 01:54:00 -0800 Subject: [PATCH 136/668] Add CSS Text 4 hyphenation properties Partially supported by Safari and IE10+ --- tests.js | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/tests.js b/tests.js index 7a407f3a..022c950e 100644 --- a/tests.js +++ b/tests.js @@ -284,8 +284,8 @@ window.Specs = { } }, - "css3-text": { - "title": "Text", + "css-text-3": { + "title": "Text Level 3", "properties": { "text-transform": ["full-width"], "tab-size": ["4", "1em"], @@ -302,6 +302,17 @@ window.Specs = { "hanging-punctuation": ["none", "first", "last", "force-end", "allow-end", "first last"] } }, + + "css-text-4": { + "title": "Text Level 4", + "properties": { + "hyphenate-character": ["auto", "'\2010'"], + "hyphenate-limit-zone": ["1%", "1em"], + "hyphenate-limit-chars": ["auto", "5", "auto 3", "5 4 3"], + "hyphenate-limit-lines": ["no-limit", "2"], + "hyphenate-limit-last": ["none", "always", "column", "page", "spread"] + } + }, "css-text-decor-3": { "title": "Text Decoration", From 520f664f77ea3cd39ff8c6401c10d870d1de7626 Mon Sep 17 00:00:00 2001 From: David Storey Date: Fri, 22 Jan 2016 15:13:55 -0800 Subject: [PATCH 137/668] Add supported CSS L4 Colours rebeccapurple (all), and #RGBA,4 and 8 digits (WebKit nightly). Other features are not supported as far as I can tell. --- tests.js | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/tests.js b/tests.js index 3d6ee985..5d4b6aac 100644 --- a/tests.js +++ b/tests.js @@ -391,8 +391,8 @@ window.Specs = { } }, - "css3-color": { - "title": "Color", + "css-color-3": { + "title": "Color Level 3", "values": { "properties": [ "color", @@ -411,6 +411,21 @@ window.Specs = { "opacity": ["-5", "0", ".5", "1", "2"] } }, + + "css-color-4": { + "title": "Color Level 4", + "values": { + "properties": [ + "color", + "background-color", + "border-color", + "text-decoration-color", + "column-rule-color" + ], + "rebeccapurple": "rebeccapurple", + "#RGBA": ["#000F", "#000000FF"] + } + }, "css3-multicol": { "title": "Multi-column Layout", From 4f68b72a7559cfb31751076e3813386d19081529 Mon Sep 17 00:00:00 2001 From: David Storey Date: Fri, 22 Jan 2016 15:26:27 -0800 Subject: [PATCH 138/668] Update CSS Overflow to Ed Draft MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit All those paged properties no longer exist. I removed the shorthand as it is now the same as CSS2.1, except the ‘clip’ value, which is well tested via overflow-x/-y --- tests.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/tests.js b/tests.js index 3d6ee985..3508f1fc 100644 --- a/tests.js +++ b/tests.js @@ -798,9 +798,8 @@ window.Specs = { "title": "Overflow", "properties": { "max-lines": ["none", "1"], - "overflow": ["paged-x", "paged-y", "paged-x-controls", "paged-y-controls", "fragments"], - "overflow-x": ["paged-x", "paged-y", "paged-x-controls", "paged-y-controls", "fragments"], - "overflow-y": ["paged-x", "paged-y", "paged-x-controls", "paged-y-controls", "fragments"] + "overflow-x": ["visible", "hidden", "clip", "scroll", "auto"], + "overflow-y": ["visible", "hidden", "clip", "scroll", "auto"] }, "selectors": { "::nth-fragment()": [ From 5968a1fd179665b85dcfb8b420ad3111b4590ac4 Mon Sep 17 00:00:00 2001 From: David Storey Date: Sat, 23 Jan 2016 07:33:21 -0800 Subject: [PATCH 139/668] Update Scroll Snap Points to latest ed draft Includes most of latest resolutions, except scroll-snap-area and the axis keywords, which are not in the spec yet. --- tests.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/tests.js b/tests.js index 8adfe37e..a2fd2330 100644 --- a/tests.js +++ b/tests.js @@ -720,10 +720,9 @@ window.Specs = { "title": "Scroll Snap Points", "properties": { "scroll-snap-type": ["none", "mandatory", "proximity"], - "scroll-snap-points-x": ["none", "repeat(100%)", "repeat(120px)", "repeat(calc(3*25px))"], - "scroll-snap-points-y": ["none", "repeat(100%)", "repeat(120px)", "repeat(calc(3*25px))"], - "scroll-snap-destination": ["0px 0px", "25% 25%", "6px 5px", "20% 3em", "0 0", "0in 1in", "top", "right", "top left", "top right", "center", "calc(2px)", "calc(50%)", "calc(3*25px)", "calc(3*25px) 5px", "5px calc(3*25px)", "calc(20%) calc(3*25px)", "calc(25px*3)", "calc(3*25px + 50%)"], - "scroll-snap-coordinate": ["none", "25% 25%", "6px 5px", "20% 3em", "0 0", "0in 1in", "top", "right", "top left", "top right", "center", "calc(2px)", "calc(50%)", "calc(3*25px)", "calc(3*25px) 5px", "5px calc(3*25px)", "calc(20%) calc(3*25px)", "calc(25px*3)", "calc(3*25px + 50%)", "calc(20%) calc(3*25px), center"], + "scroll-snap-padding": ["0px", "6px 5px", "10px 20px 30px", "10px 20px 30px 40px", "10%", "20% 3em 1in 5rem", "calc(2px)", "calc(50%)", "calc(3*25px)", "calc(3*25px) 5px 10% calc(10%-5px)"], + "scroll-snap-margin": ["0px", "6px 5px", "10px 20px 30px", "10px 20px 30px 40px", "20px 3em 1in 5rem", "calc(2px)", "calc(3*25px) 50px"], + "scroll-snap-align": ["none", "start", "end", "center", "none start", "end center", "center start", "end none", "center center"] } }, From 5c68f2dd00192d741ba8454dc403d8596963e776 Mon Sep 17 00:00:00 2001 From: "L. David Baron" Date: Mon, 15 Feb 2016 10:05:17 -0800 Subject: [PATCH 140/668] Test unicode-range as a descriptor, not a property. This implements support for testing whether a value of an @font-face descriptor is supported. I've added the code to do this in supports.js, although it's not clear to me whether I should be adding it there, or whether you'd rather leave supports.js untouched and add this code outside of it. The test for testing descriptors works somewhat differently from other properties because there isn't any better object model support that's interoperable. I've tested locally in Firefox and Chrome that supported descriptors pass and unsupported descriptors fail. I didn't add support for prefixing in the tests of descriptor support. It didn't seem necessary for the unicode-range test, it's extra work, and I tend to think it's also harmful to promote prefixed support. This flips the unicode-range tests from red to green on both Firefox and Chrome. I haven't tested elsewhere. --- csstest.js | 6 +++++- supports.js | 9 ++++++++- tests.js | 4 +++- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/csstest.js b/csstest.js index c778ebc4..b18cf0ea 100644 --- a/csstest.js +++ b/csstest.js @@ -211,6 +211,10 @@ Test.groups = { return Supports.value(property, value); }, + 'descriptors': function(value, descriptor) { + return Supports.descriptorvalue(descriptor, value); + }, + 'selectors': function(test) { return Supports.selector(test); }, @@ -363,4 +367,4 @@ onload = function() { -} \ No newline at end of file +} diff --git a/supports.js b/supports.js index 8a071f0a..e7ec9b19 100644 --- a/supports.js +++ b/supports.js @@ -92,6 +92,13 @@ var _ = window.Supports = { return false; }, + descriptorvalue: function(descriptor, value) { + /* doesn't handle prefixes for descriptor or value */ + style.textContent = "@font-face {" + descriptor + ":" + value + "}"; + return style.sheet.cssRules.length == 1 && + style.sheet.cssRules[0].style.length == 1; + }, + selector: function(selector) { if(!_.selector.cached) { _.selector.cached = {}; @@ -155,4 +162,4 @@ function camelCase (str) { return str.replace(/-([a-z])/g, function($0, $1) { return $1.toUpperCase(); }).replace('-',''); } -})(); \ No newline at end of file +})(); diff --git a/tests.js b/tests.js index a2fd2330..16cee8e1 100644 --- a/tests.js +++ b/tests.js @@ -371,7 +371,9 @@ window.Specs = { ], "font-variant": ["none", "sub lining-nums contextual ruby"], "font-feature-settings": ["normal", "'c2sc'", "'smcp' on", "'liga' off", "'smcp', 'swsh' 2"], - "font-language-override": ["normal", "'SRB'"], + "font-language-override": ["normal", "'SRB'"] + }, + "descriptors": { "unicode-range": ["U+416", "U+0-7F", "U+A5, U+4E00-9FFF", "U+30??"] }, "@rules": { From 7ce8aceee3f2a22f0670962f1a0b1e4f58fe78f0 Mon Sep 17 00:00:00 2001 From: Damian Senn Date: Tue, 29 Mar 2016 08:59:36 +0200 Subject: [PATCH 141/668] Add test for nested calc --- tests.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests.js b/tests.js index 16cee8e1..8237d455 100644 --- a/tests.js +++ b/tests.js @@ -463,7 +463,7 @@ window.Specs = { "vmax": "5vmax", "q": "5q", "attr()": ["attr(data-px)", "attr(data-px px)", "attr(data-px px, initial)"], - "calc()": ["calc(1px + 2px)", "calc(5px*2)", "calc(5px/2)", "calc(100%/3 - 2*1em - 2*1px)", "calc(attr(data-px)*2)", "calc(5px - 10px)", "calc(1vw - 1px)"], + "calc()": ["calc(1px + 2px)", "calc(5px*2)", "calc(5px/2)", "calc(100%/3 - 2*1em - 2*1px)", "calc(attr(data-px)*2)", "calc(5px - 10px)", "calc(1vw - 1px)", "calc(calc(100%))"], "toggle()": "toggle(1px, 2px)" } }, From ec4d9ac2c0c396b22e060273813653a002e861a7 Mon Sep 17 00:00:00 2001 From: SebastianZ Date: Thu, 21 Apr 2016 08:26:54 +0200 Subject: [PATCH 142/668] Added >> descendant combinator (issue #138) --- tests.js | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/tests.js b/tests.js index 8237d455..566c4a1c 100644 --- a/tests.js +++ b/tests.js @@ -85,7 +85,7 @@ window.Specs = { }, "css3-selectors": { - "title": "Selectors", + "title": "Selectors Level 3", "selectors": { "Sibling combinator": "foo ~ bar", "::before": "::before", @@ -140,6 +140,13 @@ window.Specs = { } }, + "css4-selectors": { + "title": "Selectors Level 4", + "selectors": { + "Descendant combinator": "foo >> bar" + } + }, + /* * Note: the following media queries must be true in supporting UAs! */ @@ -302,8 +309,8 @@ window.Specs = { "hanging-punctuation": ["none", "first", "last", "force-end", "allow-end", "first last"] } }, - - "css-text-4": { + + "css-text-4": { "title": "Text Level 4", "properties": { "hyphenate-character": ["auto", "'\2010'"], @@ -413,7 +420,7 @@ window.Specs = { "opacity": ["-5", "0", ".5", "1", "2"] } }, - + "css-color-4": { "title": "Color Level 4", "values": { From 009051c99dc1e19eeecb20e2fcffd3d338434245 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Sat, 7 May 2016 00:48:58 +0200 Subject: [PATCH 143/668] background-position-x & background-position-y --- tests.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/tests.js b/tests.js index 566c4a1c..77d32a11 100644 --- a/tests.js +++ b/tests.js @@ -1,6 +1,6 @@ window.Specs = { "css3-background": { - "title": "Backgrounds and Borders", + "title": "Backgrounds and Borders Level 3", "properties": { "background-repeat": ["space", "round"].concat(["repeat", "space", "round", "no-repeat"].times(2)), "background-attachment": "local", @@ -33,6 +33,14 @@ window.Specs = { ] } }, + + "css-backgrounds-4": { + "title": "Backgrounds and Borders Level 4", + "properties": { + "background-position-x": ["right", "center", "50%", "left, left", "left, right", "right, left", "left, 0%", "10%, 20%, 40%", "0px", "30px", "0%, 10%, 20%, 30%", "left, left, left, left, left", "calc(20px)", "calc(20px + 1em)", "calc(20px / 2)", "calc(20px + 50%)", "calc(50% - 10px)", "calc(-20px)", "calc(-50%)", "calc(-20%)", "right 20px", "left 20px", "right -50px", "left -50px", "right 20px"], + "background-position-y": ["bottom", "center", "50%", "top, top", "top, bottom", "bottom, top", "top, 0%", "10%, 20%, 40%", "0px", "30px", "0%, 10%, 20%, 30%", "top, top, top, top, top", "calc(20px)", "calc(20px + 1em)", "calc(20px / 2)", "calc(20px + 50%)", "calc(50% - 10px)", "calc(-20px)", "calc(-50%)", "calc(-20%)", "bottom 20px", "top 20px", "bottom -50px", "top -50px", "bottom 20px"] + } + }, "css3-images": { "title": "Image Values and Replaced Content", From 204f86cfc01973a1db380f8116428566c663d64a Mon Sep 17 00:00:00 2001 From: deepj Date: Thu, 12 May 2016 16:48:53 +0200 Subject: [PATCH 144/668] Missing `image-rendering` property in mage Values and Replaced Content Module Level 3 --- tests.js | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/tests.js b/tests.js index 77d32a11..6d8b9280 100644 --- a/tests.js +++ b/tests.js @@ -33,7 +33,7 @@ window.Specs = { ] } }, - + "css-backgrounds-4": { "title": "Backgrounds and Borders Level 4", "properties": { @@ -88,7 +88,8 @@ window.Specs = { "object-fit": ["fill", "contain", "cover", "none", "scale-down"], "object-position": ["50% 50%", "center", "top right", "bottom 10px right 20px"], "image-resolution": ["from-image", "from-image snap", "snap from-image", "1dppx", "1dpcm", "300dpi", "from-image 300dpi", "300dpi from-image", "300dpi from-image snap"], - "image-orientation": ["0deg", "90deg", "45deg", "1turn", "100grad", "2rad"] + "image-orientation": ["0deg", "90deg", "45deg", "1turn", "100grad", "2rad"], + "image-rendering": ["auto", "crisp-edges", "pixelated"], } }, @@ -659,7 +660,7 @@ window.Specs = { "shape-margin": ["0", "10px", "50%"] } }, - + "css3-exclusions": { "title": "Exclusions", "properties": { @@ -681,13 +682,13 @@ window.Specs = { "touch-action": ["auto", "none", "pan-x", "pan-y", "pan-x pan-y", "manipulation"] } }, - + "fullscreen": { "title": "Fullscreen API", "selectors": { "::backdrop": "::backdrop", ":fullscreen": ":fullscreen" - } + } }, "css3-break": { @@ -729,10 +730,10 @@ window.Specs = { "display": ["ruby", "ruby-base", "ruby-text", "ruby-base-container", "ruby-text-container"], "ruby-position" : ["over", "under", "inter-character"], "ruby-merge" : ["separate", "collapse", "auto"], - "ruby-align" : ["start", "center", "space-between", "space-around"] + "ruby-align" : ["start", "center", "space-between", "space-around"] } }, - + "css-snappoints": { "title": "Scroll Snap Points", "properties": { @@ -791,11 +792,11 @@ window.Specs = { "border-image-transform": ["logical", "physical", "rotate"] } }, - + "css-lists": { "title": "Lists and Counters", "properties": { - "list-style-type": [ + "list-style-type": [ "disclosure-closed", "disclosure-open", "hebrew", "cjk-decimal", "cjk-ideographic", From 52e29e2fde5c45f8791634b36d49809d4ae87aa9 Mon Sep 17 00:00:00 2001 From: Sayz Lim Date: Fri, 19 Aug 2016 01:00:09 +0700 Subject: [PATCH 145/668] Update Carbon Ad Code --- index.html | 16 ++++++------ style.css | 71 ++++++++++++++++++++++++++++++------------------------ 2 files changed, 46 insertions(+), 41 deletions(-) diff --git a/index.html b/index.html index bd39fad9..e1318132 100644 --- a/index.html +++ b/index.html @@ -19,30 +19,28 @@

    The CSS3 test

    Your browser scores 0%

    Determined by passing tests out of total for features

    - +
    From db5a972cc3a80ec5b6b8d44f4f59e8944df89c5d Mon Sep 17 00:00:00 2001 From: Chriztian Steinmeier Date: Thu, 24 Oct 2019 20:24:43 +0200 Subject: [PATCH 251/668] Update background-image to use https URL --- style.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/style.css b/style.css index 56920d41..f49858f2 100644 --- a/style.css +++ b/style.css @@ -2,7 +2,7 @@ body { max-width: 60em; padding: 1em; margin: auto; - background: url(http://dabblet.com/img/noise.png) hsl(24, 20%, 95%); + background: url(https://dabblet.com/img/noise.png) hsl(24, 20%, 95%); font: 100%/1.5 sans-serif; text-shadow: 0 1px white; } From 992acc4178eaba118310e528c7ed26ea061f5948 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling=20=28C=C3=A9lian=29?= Date: Sun, 3 Nov 2019 21:33:17 +0100 Subject: [PATCH 252/668] Update subgrid tests for Grid Layout Level 2 --- tests.js | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/tests.js b/tests.js index 2c054e05..c76e7647 100644 --- a/tests.js +++ b/tests.js @@ -3134,14 +3134,30 @@ window.Specs = { "tr": "#subgrid-per-axis", "dev": "#subgrid-per-axis" }, - "tests": ["subgrid"] + "tests": [ + "subgrid", + "subgrid [sub-a]", + "subgrid [sub-a] [sub-b]", + "subgrid repeat(1, [sub-a])", + "subgrid repeat(2, [sub-a] [sub-b]) [sub-c]", + "subgrid repeat(auto-fill, [sub-a] [sub-b])", + "subgrid [sub-a]repeat( auto-fill, [sub-b] [sub-c] [sub-d]) [sub-e] repeat(1, [sub-g])" + ] }, "grid-template-rows": { "links": { "tr": "#subgrid-per-axis", "dev": "#subgrid-per-axis" }, - "tests": ["subgrid"] + "tests": [ + "subgrid", + "subgrid [sub-a]", + "subgrid [sub-a] [sub-b]", + "subgrid repeat(1, [sub-a])", + "subgrid repeat(2, [sub-a] [sub-b]) [sub-c]", + "subgrid repeat(auto-fill, [sub-a] [sub-b])", + "subgrid [sub-a]repeat( auto-fill, [sub-b] [sub-c] [sub-d]) [sub-e] repeat(1, [sub-g])" + ] } } }, From 7a5ea98e0ef633fdb8907f4d1a16c00b0c6b152d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling=20=28C=C3=A9lian=29?= Date: Sun, 3 Nov 2019 21:36:15 +0100 Subject: [PATCH 253/668] Fix subgrid tests for Grid Layout Level 2 --- tests.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests.js b/tests.js index c76e7647..c3f8749e 100644 --- a/tests.js +++ b/tests.js @@ -3141,7 +3141,7 @@ window.Specs = { "subgrid repeat(1, [sub-a])", "subgrid repeat(2, [sub-a] [sub-b]) [sub-c]", "subgrid repeat(auto-fill, [sub-a] [sub-b])", - "subgrid [sub-a]repeat( auto-fill, [sub-b] [sub-c] [sub-d]) [sub-e] repeat(1, [sub-g])" + "subgrid [sub-a] repeat(auto-fill, [sub-b] [sub-c] [sub-d]) [sub-e] repeat(1, [sub-g])" ] }, "grid-template-rows": { @@ -3156,7 +3156,7 @@ window.Specs = { "subgrid repeat(1, [sub-a])", "subgrid repeat(2, [sub-a] [sub-b]) [sub-c]", "subgrid repeat(auto-fill, [sub-a] [sub-b])", - "subgrid [sub-a]repeat( auto-fill, [sub-b] [sub-c] [sub-d]) [sub-e] repeat(1, [sub-g])" + "subgrid [sub-a] repeat(auto-fill, [sub-b] [sub-c] [sub-d]) [sub-e] repeat(1, [sub-g])" ] } } From d9019abf365057547bc91a9f1db4fbd40baccf94 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling=20=28C=C3=A9lian=29?= Date: Sun, 3 Nov 2019 21:43:36 +0100 Subject: [PATCH 254/668] Update offset for Motion Path Module Level 1 --- tests.js | 44 +++++++++++++++++++++++++++++++++++++++----- 1 file changed, 39 insertions(+), 5 deletions(-) diff --git a/tests.js b/tests.js index c3f8749e..fae91ef9 100644 --- a/tests.js +++ b/tests.js @@ -1650,8 +1650,26 @@ window.Specs = { "dev": "#offset-shorthand" }, "tests": [ + "none", "auto", "center", + "200px 100px", + "inset(10% round 10% 40% 10% 40%)", + "ellipse(at top 50% left 20%)", + "circle(at right 5% top)", + "margin-box", "border-box", "padding-box", "content-box", "fill-box", "stroke-box", "view-box", + "polygon(100% 0, 100% 100%, 0 100%)", + "path('M 20 20 H 80 V 30')", + "url(image.png)", + "ray(45deg closest-side)", + "ray(45deg closest-side)", + "ray(45deg closest-side) 10%", + "ray(45deg closest-side) 10% reverse", + "ray(45deg closest-side) 10% reverse 45deg", + "ray(45deg closest-side) 10% 45deg reverse", + "ray(45deg closest-side) 45deg 10%", + "ray(45deg closest-side) 45deg reverse 10%", + "ray(45deg closest-side) reverse 10%", "200px 100px ray(45deg closest-side)", "200px 100px ray(45deg closest-side) 10%", "200px 100px ray(45deg closest-side) 10% reverse", @@ -1662,6 +1680,14 @@ window.Specs = { "200px 100px ray(45deg closest-side) reverse 10%", "auto / center", "center / 200px 100px", + "ray(45deg closest-side) / 200px 100px", + "ray(45deg closest-side) 10% / 200px 100px", + "ray(45deg closest-side) 10% reverse / 200px 100px", + "ray(45deg closest-side) 10% reverse 45deg / 200px 100px", + "ray(45deg closest-side) 10% 45deg reverse / 200px 100px", + "ray(45deg closest-side) 45deg 10% / 200px 100px", + "ray(45deg closest-side) 45deg reverse 10% / 200px 100px", + "ray(45deg closest-side) reverse 10% / 200px 100px", "200px 100px ray(45deg closest-side) / 200px 100px", "200px 100px ray(45deg closest-side) 10% / 200px 100px", "200px 100px ray(45deg closest-side) 10% reverse / 200px 100px", @@ -1679,15 +1705,23 @@ window.Specs = { }, "tests": [ "none", - "ray(45deg closest-side)", "ray(45deg farthest-side)", "ray(45deg closest-corner)", - "ray(45deg farthest-corner)", "ray(45deg sides)", "ray(0.25turn sides contain)", - "ray(100grad closest-side contain)", "ray(calc(180deg - 0.25turn) closest-side)", - "inset(10% round 10% 40% 10% 40%)", "ellipse(at top 50% left 20%)", "circle(at right 5% top)", + "ray(45deg closest-side)", + "ray(45deg farthest-side)", + "ray(45deg closest-corner)", + "ray(45deg farthest-corner)", + "ray(45deg sides)", + "ray(0.25turn sides contain)", + "ray(100grad closest-side contain)", + "ray(calc(180deg - 0.25turn) closest-side)", + "inset(10% round 10% 40% 10% 40%)", + "ellipse(at top 50% left 20%)", + "circle(at right 5% top)", "margin-box", "border-box", "padding-box", "content-box", "fill-box", "stroke-box", "view-box", "circle(60%) margin-box", "polygon(100% 0, 100% 100%, 0 100%)", "path('M 20 20 H 80 V 30')", - "url(image.png)", "url(#id)", + "url(image.png)", + "url(#id)" ] }, "offset-distance": { From afbb66e8ae9a2cfa04af660c09ac78c562b76fdd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling=20=28C=C3=A9lian=29?= Date: Sun, 3 Nov 2019 22:05:42 +0100 Subject: [PATCH 255/668] Add Alternative Text in CSS Generated Content --- tests.js | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/tests.js b/tests.js index fae91ef9..5d548d4e 100644 --- a/tests.js +++ b/tests.js @@ -2104,6 +2104,16 @@ window.Specs = { "dev": "#quotes" }, "tests": ["auto"] + }, + "content": { + "links": { + "tr": "#alt", + "dev": "#alt" + }, + "tests": [ + "url(./img/star.png) / \"New!\"", + "\"\\25BA\" / \"\"" + ] } } }, From c7e07350e3e70a3ba774f1c0c0f8d6db836c6025 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling=20=28C=C3=A9lian=29?= Date: Sun, 3 Nov 2019 22:08:10 +0100 Subject: [PATCH 256/668] Add test for Overscroll Behavior logical longhands --- tests.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/tests.js b/tests.js index 5d548d4e..c1e8ca85 100644 --- a/tests.js +++ b/tests.js @@ -4925,6 +4925,18 @@ window.Specs = { "dev": "#overscroll-behavior-longhands-physical" }, "tests": ["contain", "none", "auto"] + }, + "overscroll-behavior-inline": { + "links": { + "dev": "#overscroll-behavior-longhands-logical" + }, + "tests": ["contain", "none", "auto"] + }, + "overscroll-behavior-block": { + "links": { + "dev": "#overscroll-behavior-longhands-logical" + }, + "tests": ["contain", "none", "auto"] } } }, From c4b5356deb2fb7fc6754532724506f4ee3ca540b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling=20=28C=C3=A9lian=29?= Date: Sun, 10 Nov 2019 09:15:17 +0100 Subject: [PATCH 257/668] Add Box Sizing Level 4 --- tests.js | 35 ++++++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/tests.js b/tests.js index c1e8ca85..1b145686 100644 --- a/tests.js +++ b/tests.js @@ -4844,7 +4844,7 @@ window.Specs = { }, "css-sizing-3": { - "title": "Intrinsic & Extrinsic Sizing", + "title": "Intrinsic & Extrinsic Sizing Level 3", "links": { "tr": "css-sizing-3", "dev": "css-sizing-3" @@ -4902,6 +4902,39 @@ window.Specs = { } }, + "css-sizing-4": { + "title": "Box Sizing Level 4", + "links": { + "dev": "css-sizing-4" + }, + "properties": { + "intrinsic-block-size": { + "links": { + "dev": "#intrinsic-size-override" + }, + "tests": ["legacy", "auto", "10px"] + }, + "intrinsic-inline-size": { + "links": { + "dev": "#intrinsic-size-override" + }, + "tests": ["legacy", "auto", "10px"] + }, + "intrinsic-height": { + "links": { + "dev": "#intrinsic-size-override" + }, + "tests": ["legacy", "auto", "10px"] + }, + "intrinsic-width": { + "links": { + "dev": "#intrinsic-size-override" + }, + "tests": ["legacy", "auto", "10px"] + } + } + }, + "overscroll-behavior": { "title": "Overscroll Behavior", "links": { From f478174b34db8d9e24470386ee3a2723b131fb99 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling=20=28C=C3=A9lian=29?= Date: Sat, 23 Nov 2019 19:48:00 +0100 Subject: [PATCH 258/668] Add System Colors (Color Level 4) --- tests.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/tests.js b/tests.js index 1b145686..d0b71ee8 100644 --- a/tests.js +++ b/tests.js @@ -2504,7 +2504,7 @@ window.Specs = { "text-decoration-color", "column-rule-color" ], - "Comma-less colors": { + "comma-less colors": { "links": { "tr": "#funcdef-rgb", "dev": "#funcdef-rgb" @@ -2539,6 +2539,16 @@ window.Specs = { }, "tests": "rebeccapurple" }, + "system colors": { + "links": { + "tr": "#css-system-colors", + "dev": "#css-system-colors" + }, + "tests": [ + "Canvas", "CanvasText", "LinkText", "VisitedText", "ActiveText", "ButtonFace", "Field", "FieldText", + "Highlight", "HighlightText", "GrayText" + ] + }, "hwb()": { "links": { "tr": "#the-hwb-notation", From 5352f38a14589e01a6380d99db0fafba754510c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling=20=28C=C3=A9lian=29?= Date: Mon, 16 Dec 2019 20:33:20 +0100 Subject: [PATCH 259/668] Transforms Level 2 : update transform-style --- tests.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests.js b/tests.js index d0b71ee8..ec5a26dd 100644 --- a/tests.js +++ b/tests.js @@ -1613,7 +1613,7 @@ window.Specs = { "links": { "dev": "#transform-style-property" }, - "tests": ["auto", "flat", "preserve-3d"] + "tests": ["flat", "preserve-3d"] }, "perspective": { "links": { From 8f40952901fe12f58f55d276920a9735213cd84d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling=20=28C=C3=A9lian=29?= Date: Sun, 1 Mar 2020 12:12:09 +0100 Subject: [PATCH 260/668] Add % test for text-underline-offset and text-decoration-thickness --- tests.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests.js b/tests.js index ec5a26dd..4b328d3d 100644 --- a/tests.js +++ b/tests.js @@ -2079,14 +2079,14 @@ window.Specs = { "tr": "#underline-offset", "dev": "#underline-offset" }, - "tests": ["auto", "from-font", "3px"] + "tests": ["auto", "from-font", "3px", "10%"] }, "text-decoration-thickness": { "links": { "tr": "#underline-offset", "dev": "#text-decoration-width-property" }, - "tests": ["auto", "from-font", "3px"] + "tests": ["auto", "from-font", "3px", "10%"] } } }, From 625e0d8d6304caf3912e4fb04040c55950e24f3b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling=20=28C=C3=A9lian=29?= Date: Sun, 1 Mar 2020 12:21:14 +0100 Subject: [PATCH 261/668] Add test for outline-style:auto --- tests.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tests.js b/tests.js index 4b328d3d..a90790cd 100644 --- a/tests.js +++ b/tests.js @@ -1277,6 +1277,13 @@ window.Specs = { }, "tests": ["border-box", "content-box"] }, + "outline-style": { + "links": { + "tr": "#outline-style", + "dev": "#outline-style" + }, + "tests": ["auto"] + }, "outline-offset": { "links": { "tr": "#outline-offset", From 904b729816c1293b876ab62e4f28a075057bfe51 Mon Sep 17 00:00:00 2001 From: TrisTOON <36267812+TrisTOON@users.noreply.github.com> Date: Fri, 27 Mar 2020 18:10:28 +0100 Subject: [PATCH 262/668] Add SVG 2 Geometry Properties --- csstest.js | 5 +++- tests.js | 78 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 82 insertions(+), 1 deletion(-) diff --git a/csstest.js b/csstest.js index 6ba94f4a..59e76f0e 100644 --- a/csstest.js +++ b/csstest.js @@ -44,6 +44,9 @@ var devLinkFormat = function (params) { return 'https://drafts.css-houdini.org/' + params.dev; case "github": return 'https://w3c.github.io/' + params.dev; + case "svgwg": + // SVG Working Group Editor Drafts + return 'https://svgwg.org/' + params.dev; case "whatwg": // WHATWG return 'https://' + params.dev + '.spec.whatwg.org/'; @@ -191,7 +194,7 @@ Test.prototype = { contents: dtContents, inside: dl }); - + var passed = 0, tests = theseTests[feature].tests || theseTests[feature]; tests = tests instanceof Array ? tests : [tests]; diff --git a/tests.js b/tests.js index a90790cd..36bdfcc0 100644 --- a/tests.js +++ b/tests.js @@ -5385,5 +5385,83 @@ window.Specs = { "tests": ["0.5", "45%"] } } + }, + + "svg-geometry": { + "title": "SVG Geometry", + "links": { + "tr": "svg2/geometry.html", + "dev": "svg2-draft/geometry.html", + "devtype": "svgwg" + }, + "properties": { + "cx": { + "links": { + "tr": "#CX", + "dev": "#CX" + }, + "tests": ["0", "1px", "-5px", "25%"] + }, + "cy": { + "links": { + "tr": "#CY", + "dev": "#CY" + }, + "tests": ["0", "1px", "-5px", "25%"] + }, + "r": { + "links": { + "tr": "#R", + "dev": "#R" + }, + "tests": ["0", "1px", "25%"] + }, + "rx": { + "links": { + "tr": "#RX", + "dev": "#RX" + }, + "tests": ["auto", "0", "1px", "25%"] + }, + "ry": { + "links": { + "tr": "#RY", + "dev": "#RY" + }, + "tests": ["auto", "0", "1px", "25%"] + }, + "x": { + "links": { + "tr": "#X", + "dev": "#X" + }, + "tests": ["0", "1px", "-5px", "25%"] + }, + "y": { + "links": { + "tr": "#Y", + "dev": "#Y" + }, + "tests": ["0", "1px", "-5px", "25%"] + } + } + }, + + "svg-paths": { + "title": "SVG Paths", + "links": { + "tr": "svg2/paths.html", + "dev": "svg2-draft/paths.html", + "devtype": "svgwg" + }, + "properties": { + "d": { + "links": { + "tr": "#TheDProperty", + "dev": "#TheDProperty" + }, + "tests": ["none", "'M 20 20 H 80 V 30'"] + } + } } }; From e4a8ac65bdf04b2af04d131d32fe20a3e9348139 Mon Sep 17 00:00:00 2001 From: TrisTOON <36267812+TrisTOON@users.noreply.github.com> Date: Fri, 27 Mar 2020 19:36:00 +0100 Subject: [PATCH 263/668] Add tests for path() notation --- tests.js | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/tests.js b/tests.js index a90790cd..fd0438f9 100644 --- a/tests.js +++ b/tests.js @@ -3417,6 +3417,7 @@ window.Specs = { "circle()", "ellipse()", "polygon(0 10px, 30px 0)", + "path('M 20 20 H 80 V 30')", "circle() border-box", "border-box", "padding-box", @@ -3630,10 +3631,11 @@ window.Specs = { }, "tests": [ "none", "inset(10% round 10% 40% 10% 40%)", "ellipse(at top 50% left 20%)", "circle(at right 5% top)", - "polygon(100% 0, 100% 100%, 0 100%)", "margin-box", "border-box", "padding-box", "content-box", + "polygon(100% 0, 100% 100%, 0 100%)", "path('M 20 20 H 80 V 30')", + "margin-box", "border-box", "padding-box", "content-box", "inset(10% round 10% 40% 10% 40%) margin-box", "ellipse(at top 50% left 20%) margin-box", - "circle(at right 5% top) margin-box", "polygon(100% 0, 100% 100%, 0 100%) margin-box", "attr(src url)", - "url(image.png)" + "circle(at right 5% top) margin-box", "polygon(100% 0, 100% 100%, 0 100%) margin-box", "path('M 20 20 H 80 V 30') margin-box", + "attr(src url)", "url(image.png)" ] }, "shape-image-threshold": { @@ -3665,7 +3667,7 @@ window.Specs = { }, "tests": [ "auto", "outside-shape", "shape-box", "display", "inset(10% round 10% 40% 10% 40%)", - "ellipse(at top 50% left 20%)", "circle(at right 5% top)", "polygon(100% 0, 100% 100%, 0 100%)", + "ellipse(at top 50% left 20%)", "circle(at right 5% top)", "polygon(100% 0, 100% 100%, 0 100%)", "path('M 20 20 H 80 V 30')", "url(image.png)" ] }, From e55fce76176fedda32edca4b20bc04d96fccce42 Mon Sep 17 00:00:00 2001 From: Chris Lilley Date: Sat, 4 Apr 2020 07:45:56 -0400 Subject: [PATCH 264/668] gray removed by CSSWG resolution (#190) --- tests.js | 7 ------- 1 file changed, 7 deletions(-) diff --git a/tests.js b/tests.js index 39e4cab2..6ec35ad8 100644 --- a/tests.js +++ b/tests.js @@ -2577,13 +2577,6 @@ window.Specs = { }, "tests": ["lch(0 0 0)", "lch(0 0 0 / .5)"] }, - "gray()": { - "links": { - "tr": "#grays", - "dev": "#grays" - }, - "tests": ["gray(50)", "gray(50 / .5)"] - }, "color()": { "links": { "tr": "#color-function", From 4d11bbdee621a5cefd9fdc09775333441d34c6dc Mon Sep 17 00:00:00 2001 From: Chris Lilley Date: Sat, 4 Apr 2020 07:46:42 -0400 Subject: [PATCH 265/668] L in Lab and LCH now a percent (#191) --- tests.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests.js b/tests.js index 6ec35ad8..826fb2b4 100644 --- a/tests.js +++ b/tests.js @@ -2568,14 +2568,14 @@ window.Specs = { "tr": "#specifying-lab-lch", "dev": "#specifying-lab-lch" }, - "tests": ["lab(0 0 0)", "lab(0 0 0 /.5)"] + "tests": ["lab(0% 0 0)", "lab(0% 0 0 /.5)"] }, "lch()": { "links": { "tr": "#specifying-lab-lch", "dev": "#specifying-lab-lch" }, - "tests": ["lch(0 0 0)", "lch(0 0 0 / .5)"] + "tests": ["lch(0% 0 0)", "lch(0% 0 0 / .5)"] }, "color()": { "links": { From e2f49fb5f31d7729d407462d08b0ec9034b1b4b9 Mon Sep 17 00:00:00 2001 From: Chris Lilley Date: Sat, 4 Apr 2020 07:47:44 -0400 Subject: [PATCH 266/668] Update for changes to color() (#192) --- tests.js | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/tests.js b/tests.js index 826fb2b4..0f7fba4b 100644 --- a/tests.js +++ b/tests.js @@ -2584,11 +2584,22 @@ window.Specs = { }, "tests": [ "color(.2 .4 .6)", - "color(image-p3 .2. 4 .6)", + "color(display-p3 .2. 4 .6)", "color(foo .2 .4 .6)", "color(.2 .4 .6 / .5)", - "color(image-p3 .2 .4 .6 / .5)", - "color(foo .2 .4 .6 / .5)" + "color(display-p3 .2 .4 .6 / .5)", + "color(--foo .2 .4 .6 / .5)", + "color(.2 .4 .6, #123456)", + "color(display-p3 .2. 4 .6, #654321)", + "color(20% 40% 60%)", + "color(display-p3 20% 40% 60%)", + "color(foo 20% 40% 60%)", + "color(20% 40% 60% / .5)", + "color(image-p3 20% 40% 60% / .5)", + "color(--foo 20% 40% 60% / .5)", + "color(20% 40% 60%, #123456)", + "color(display-p3 20% 40% 60%, #654321)", + "color(--mycmyk 0% 20% 30% 5%)" ] }, "device-cmyk()": { From 890c98e5b45e640afc8720eaf27cf9a5f2e8758b Mon Sep 17 00:00:00 2001 From: Chris Lilley Date: Wed, 22 Apr 2020 17:48:28 -0400 Subject: [PATCH 267/668] font-variant-alternates moved from Fonts 3 to Fonts 4 (#193) * font-variant-alternates moved to Fonts 4 * font min-size and -max-size dropped * corrections --- tests.js | 28 +++++++++------------------- 1 file changed, 9 insertions(+), 19 deletions(-) diff --git a/tests.js b/tests.js index 0f7fba4b..1430af7b 100644 --- a/tests.js +++ b/tests.js @@ -2240,11 +2240,6 @@ window.Specs = { "slashed-zero ordinal tabular-nums stacked-fractions oldstyle-nums" ] }, - "font-variant-alternates": [ - "normal", - "historical-forms" - // TODO add tests for functions - ], "font-variant-east-asian": { "links": { "tr": "#font-variant-east-asian-prop", @@ -2309,6 +2304,15 @@ window.Specs = { "none", "normal", "all-petite-caps", "historical-forms", "super", "sub lining-nums contextual ruby" ] }, + "font-variant-alternates": { + "links": { + "tr": "#font-variant-alternates-prop", + "dev": "#font-variant-alternates-prop" + }, + "tests": [ + "normal", "historical-forms","styleset(ss01)", "character-variant(cv02)", "swash(flowing)", "ornaments(leaves)", "annotation(blocky)" + ] + }, "font-feature-settings": { "links": { "tr": "#font-feature-settings-prop", @@ -2330,20 +2334,6 @@ window.Specs = { }, "tests": ["1", "90", "750", "1000"] }, - "font-min-size": { - "links": { - "tr": "#font-min-max-size-prop", - "dev": "#font-min-max-size-prop" - }, - "tests": ["12pt", "small", "smaller", "80%", "0"] - }, - "font-max-size": { - "links": { - "tr": "#font-min-max-size-prop", - "dev": "#font-min-max-size-prop" - }, - "tests": ["100pt", "xx-large", "larger", "120%", "infinity"] - }, "font-style": { "links": { "tr": "#font-style-prop", From 900ceabfd63683e76cc1a5881b46d7afc463f683 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Sun, 10 May 2020 13:31:37 +0200 Subject: [PATCH 268/668] Add properties for Color Adjustment: forced-color-adjust and color-scheme --- tests.js | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/tests.js b/tests.js index 1430af7b..01e8bd29 100644 --- a/tests.js +++ b/tests.js @@ -2624,6 +2624,23 @@ window.Specs = { "dev": "#perf" }, "tests": ["economy", "exact"] + }, + "forced-color-adjust": { + "links": { + "tr": "#forced", + "dev": "#forced" + }, + "tests": ["auto", "none"] + }, + "color-scheme": { + "links": { + "tr": "#color-scheme-prop", + "dev": "#color-scheme-prop" + }, + "tests": [ + "normal", "light", "dark", "light dark", "dark light", "only light", "light only", + "light light", "dark dark", "light purple", "purple dark interesting", "none", "light none" + ] } } }, From 80d96629d0915722e0cc71d01ec3f2e534c3aef4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Mon, 18 May 2020 13:49:19 +0200 Subject: [PATCH 269/668] Add Conditional Rules Level 4 --- tests.js | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/tests.js b/tests.js index 01e8bd29..2ce9ccd8 100644 --- a/tests.js +++ b/tests.js @@ -3385,8 +3385,8 @@ window.Specs = { } }, - "css3-conditional": { - "title": "Conditional Rules", + "css-conditional-3": { + "title": "Conditional Rules Level 3", "links": { "tr": "css3-conditional", "dev": "css-conditional-3" @@ -3409,6 +3409,27 @@ window.Specs = { } }, + "css-conditional-4": { + "title": "Conditional Rules Level 4", + "links": { + "tr": "css-conditional-4", + "dev": "css-conditional-4" + }, + "@rules": { + "@support selector()": { + "links": { + "tr": "#at-supports-ext", + "dev": "#at-supports-ext" + }, + "tests": [ + "@supports selector(::before)", + "@supports not selector(::-webkit-unknown-pseudo)", + "@supports selector(div, div)" + ] + } + } + }, + "css-masking": { "title": "Masking", "links": { From 9b2b6ceab04de80fa42abebd1dfd485ec586bdcd Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Mon, 15 Jun 2020 00:46:19 +0200 Subject: [PATCH 270/668] Added aspect-ratio property of Box Sizing Level 4 --- tests.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tests.js b/tests.js index 2ce9ccd8..47e5161a 100644 --- a/tests.js +++ b/tests.js @@ -4959,6 +4959,12 @@ window.Specs = { "dev": "css-sizing-4" }, "properties": { + "aspect-ratio": { + "links": { + "dev": "#aspect-ratio" + }, + "tests": ["auto", "2", "16 / 9", "auto 16 / 9"] + }, "intrinsic-block-size": { "links": { "dev": "#intrinsic-size-override" From a950e99c537b43806b034cec2c93c4d1f2dabf0f Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Mon, 15 Jun 2020 01:12:05 +0200 Subject: [PATCH 271/668] Added CSS Rhythmic Sizing Level 1 --- tests.js | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/tests.js b/tests.js index 47e5161a..17941c1b 100644 --- a/tests.js +++ b/tests.js @@ -5503,5 +5503,65 @@ window.Specs = { "tests": ["none", "'M 20 20 H 80 V 30'"] } } + }, + + "css-rhythmic": { + "title": "Rhythmic Sizing", + "links": { + "tr": "css-rhythm-1", + "dev": "css-rhythm" + }, + "properties": { + "line-height-step": { + "links": { + "tr": "#line-height-step", + "dev": "#line-height-step" + }, + "tests": ["none", "30px", "2em"] + }, + "block-step-size": { + "links": { + "tr": "#block-step-size", + "dev": "#block-step-size" + }, + "tests": ["none", "30px", "2em"] + }, + "block-step-insert": { + "links": { + "tr": "#block-step-insert", + "dev": "#block-step-insert" + }, + "tests": ["margin", "padding"] + }, + "block-step-align": { + "links": { + "tr": "#block-step-align", + "dev": "#block-step-align" + }, + "tests": ["auto", "center", "start", "end"] + }, + "block-step-round": { + "links": { + "tr": "#block-step-round", + "dev": "#block-step-round" + }, + "tests": ["up", "down", "nearest"] + }, + "block-step": { + "links": { + "tr": "#block-step", + "dev": "#block-step" + }, + "tests": [ + "none", + "padding", + "end", + "down", + "30px margin", + "30px padding center", + "2em padding start nearest" + ] + } + } } }; From 2be4a11496a377a9280ed626e5f08891c6ad5640 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Mon, 15 Jun 2020 23:21:12 +0200 Subject: [PATCH 272/668] Corrected @supports rule naming It was incorrectly named @support previously. --- tests.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests.js b/tests.js index 17941c1b..7feb795f 100644 --- a/tests.js +++ b/tests.js @@ -3392,7 +3392,7 @@ window.Specs = { "dev": "css-conditional-3" }, "@rules": { - "@support": { + "@supports": { "links": { "tr": "#at-supports", "dev": "#at-supports" @@ -3416,7 +3416,7 @@ window.Specs = { "dev": "css-conditional-4" }, "@rules": { - "@support selector()": { + "@supports selector()": { "links": { "tr": "#at-supports-ext", "dev": "#at-supports-ext" From 97170a1d5237067ef71ab969ccd6375095449975 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Mon, 15 Jun 2020 23:46:54 +0200 Subject: [PATCH 273/668] Added .code-workspace files (VSCode) to .gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..4d67604d --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +*.code-workspace From 9444d4613640ccc7721cc4de6a69f89ffbbe17c0 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Mon, 15 Jun 2020 23:50:04 +0200 Subject: [PATCH 274/668] Support complete @rules (#194) --- style.css | 7 +++---- supports.js | 2 +- tests.js | 28 ++++++++++++++-------------- 3 files changed, 18 insertions(+), 19 deletions(-) diff --git a/style.css b/style.css index f49858f2..ca1584e5 100644 --- a/style.css +++ b/style.css @@ -38,8 +38,7 @@ h1, h2 { .spec-link { display: inline-block; padding: .3em .4em; - margin: 0 0 0 .3em; - line-height: 1; + margin: -.5em 0 -.5em .3em; font-family: sans-serif; font-size: 0.9rem; background: hsl(200, 10%, 20%); @@ -138,11 +137,10 @@ dl { } dt, dd[class] { - padding: 0 .5em; + padding: .5em; background: gray; color: white; border-radius: .3em; - line-height: 2; text-shadow: 0 -.05em .1em rgba(0,0,0,.5); position: relative; } @@ -218,6 +216,7 @@ dl > dd { dl.open > dd { display: block; + white-space: pre; } /* Emoticons */ diff --git a/supports.js b/supports.js index c788749f..92887014 100644 --- a/supports.js +++ b/supports.js @@ -135,7 +135,7 @@ window.matchMedia = window.matchMedia || (function (doc, undefined) { for (var i = 0; i < _.prefixes.length; i++) { var prefixed = atrule.replace(/^@/, '@' + _.prefixes[i]); - style.textContent = prefixed + '{}'; // Safari 4 has issues with style.innerHTML + style.textContent = prefixed; // Safari 4 has issues with style.innerHTML if (style.sheet.cssRules.length > 0) { return _.atrule.cached[atrule] = prefixed; diff --git a/tests.js b/tests.js index 7feb795f..23a74647 100644 --- a/tests.js +++ b/tests.js @@ -1542,7 +1542,7 @@ window.Specs = { "tr": "#keyframes", "dev": "#keyframes" }, - "tests": "@keyframes foo" + "tests": "@keyframes foo {\n from: {\n color: blue;\n }\n to: {\n color: red;\n }\n}" } } }, @@ -2276,7 +2276,7 @@ window.Specs = { "tr": "#font-face-rule", "dev": "#font-face-rule" }, - "tests": "@font-face" + "tests": "@font-face {\n font-family: foo;\n src: local('Arial');\n}" } } }, @@ -2362,14 +2362,14 @@ window.Specs = { "tr": "#font-feature-values", "dev": "#font-feature-values" }, - "tests": "@font-feature-values Jupiter Sans" + "tests": "@font-feature-values Jupiter Sans {\n @styleset {\n some-style: 1;\n }\n}" }, "@font-palette-values": { "links": { "tr": "#font-palette-values", "dev": "#font-palette-values" }, - "tests": "@font-palette-values Augusta" + "tests": "@font-palette-values Augusta {\n font-family: Handover Sans;\n base-palette: 3;\n}" } } }, @@ -3398,12 +3398,12 @@ window.Specs = { "dev": "#at-supports" }, "tests": [ - "@supports (color: green)", - "@supports not (foo: bar)", - "@supports (color: green) or (color: red)", - "@supports (color: green) and (color: red)", - "@supports (color: green) and (not (foo: bar))", - "@supports (color: green) or (not (foo: bar))" + "@supports (color: green) {}", + "@supports not (foo: bar) {}", + "@supports (color: green) or (color: red) {}", + "@supports (color: green) and (color: red) {}", + "@supports (color: green) and (not (foo: bar)) {}", + "@supports (color: green) or (not (foo: bar)) {}" ] } } @@ -3422,9 +3422,9 @@ window.Specs = { "dev": "#at-supports-ext" }, "tests": [ - "@supports selector(::before)", - "@supports not selector(::-webkit-unknown-pseudo)", - "@supports selector(div, div)" + "@supports selector(::before) {}", + "@supports not selector(::-webkit-unknown-pseudo) {}", + "@supports selector(div, div) {}" ] } } @@ -4792,7 +4792,7 @@ window.Specs = { "tr": "#the-counter-style-rule", "dev": "#the-counter-style-rule" }, - "tests": "@counter-style foo" + "tests": "@counter-style foo {\n system: numeric;\n symbols: '0' '1' '2' '3' '4' '5' '6' '7' '8' '9';\n}" } } }, From 15779a97635ebc97c5d277cd5ed6f5f1b984e937 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Tue, 7 Jul 2020 23:27:59 +0200 Subject: [PATCH 275/668] Remove prefers-color-scheme: no-preference --- tests.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests.js b/tests.js index 23a74647..fc6a60c5 100644 --- a/tests.js +++ b/tests.js @@ -1234,7 +1234,7 @@ window.Specs = { "links": { "dev": "#prefers-color-scheme" }, - "tests": ["(prefers-color-scheme: no-preference)", "(prefers-color-scheme: light)", "(prefers-color-scheme: dark)"] + "tests": ["(prefers-color-scheme: light)", "(prefers-color-scheme: dark)"] }, "scripting": { "links": { From 55a279ad75e6fb2047be8a40a7fcd45fa0e97a42 Mon Sep 17 00:00:00 2001 From: TrisTOON <36267812+TrisTOON@users.noreply.github.com> Date: Tue, 14 Jul 2020 00:41:31 +0200 Subject: [PATCH 276/668] Add SVG 2 Coordinate Systems, Transformations and Units --- tests.js | 35 +++++++++++++++++++++++++++++++---- 1 file changed, 31 insertions(+), 4 deletions(-) diff --git a/tests.js b/tests.js index fc6a60c5..e96ffeda 100644 --- a/tests.js +++ b/tests.js @@ -5427,8 +5427,8 @@ window.Specs = { } }, - "svg-geometry": { - "title": "SVG Geometry", + "svg2-geometry": { + "title": "SVG 2 Geometry Properties", "links": { "tr": "svg2/geometry.html", "dev": "svg2-draft/geometry.html", @@ -5487,8 +5487,35 @@ window.Specs = { } }, - "svg-paths": { - "title": "SVG Paths", + "svg2-coords": { + "title": "SVG 2 Coordinate Systems, Transformations and Units", + "links": { + "tr": "svg2/coords.html", + "dev": "svg2-draft/coords.html", + "devtype": "svgwg" + }, + "properties": { + "vector-effect": { + "links": { + "tr": "#VectorEffects", + "dev": "#VectorEffects" + }, + "tests": [ + "none", + "non-scaling-stroke", + "non-scaling-size", + "non-rotation", + "fixed-position", + "non-scaling-stroke non-scaling-stroke", + "non-scaling-stroke viewport", + "non-scaling-stroke screen", + ] + } + } + }, + + "svg2-paths": { + "title": "SVG 2 Paths", "links": { "tr": "svg2/paths.html", "dev": "svg2-draft/paths.html", From 164f70e20f8b965b7675d398679e007002547b0c Mon Sep 17 00:00:00 2001 From: TrisTOON <36267812+TrisTOON@users.noreply.github.com> Date: Tue, 14 Jul 2020 00:43:08 +0200 Subject: [PATCH 277/668] Add SVG 2 Text --- tests.js | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git a/tests.js b/tests.js index e96ffeda..f0b99667 100644 --- a/tests.js +++ b/tests.js @@ -5532,6 +5532,68 @@ window.Specs = { } }, + "svg2-text": { + "title": "SVG 2 Text", + "links": { + "tr": "svg2/text.html", + "dev": "svg2-draft/text.html", + "devtype": "svgwg" + }, + "properties": { + "shape-subtract": { + "links": { + "tr": "#TextShapeSubtract", + "dev": "#TextShapeSubtract" + }, + "tests": [ + "none", + "url('#shape')", + "inset(50%)", + "circle()", + "ellipse()", + "polygon(0 10px, 30px 0)", + "path('M 20 20 H 80 V 30')", + "url('#clip') circle()" + ] + }, + "text-anchor": { + "links": { + "tr": "#TextAnchoringProperties", + "dev": "#TextAnchoringProperties" + }, + "tests": ["start", "middle", "end"] + }, + "text-decoration-fill": { + "links": { + "tr": "#TextDecorationFillStroke" + }, + "tests": [ + "none", + "green", + "url(#pattern)", + "url(#pattern) none", + "url(#pattern) green", + "context-fill", + "context-stroke" + ] + }, + "text-decoration-stroke": { + "links": { + "tr": "#TextDecorationFillStroke" + }, + "tests": [ + "none", + "green", + "url(#pattern)", + "url(#pattern) none", + "url(#pattern) green", + "context-fill", + "context-stroke" + ] + } + } + }, + "css-rhythmic": { "title": "Rhythmic Sizing", "links": { From ac518706dedb2a40c2aad9637437b6759e4d3ad2 Mon Sep 17 00:00:00 2001 From: TrisTOON <36267812+TrisTOON@users.noreply.github.com> Date: Tue, 14 Jul 2020 00:43:46 +0200 Subject: [PATCH 278/668] Add SVG 2 Painting: Filling, Stroking and Marker Symbols --- tests.js | 73 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) diff --git a/tests.js b/tests.js index f0b99667..e467a185 100644 --- a/tests.js +++ b/tests.js @@ -5594,6 +5594,79 @@ window.Specs = { } }, + "svg2-painting": { + "title": "SVG 2 Painting: Filling, Stroking and Marker Symbols", + "links": { + "tr": "svg2/painting.html", + "dev": "svg2-draft/painting.html", + "devtype": "svgwg" + }, + "properties": { + "color-interpolation": { + "links": { + "tr": "#ColorInterpolation", + "dev": "#ColorInterpolation" + }, + "tests": ["auto", "sRGB", "linearRGB"] + }, + "color-rendering": { + "links": { + "tr": "#ColorRendering" + }, + "tests": ["auto", "optimizeSpeed", "optimizeQuality"] + }, + "marker": { + "links": { + "tr": "#MarkerShorthand", + "dev": "#MarkerShorthand" + }, + "tests": ["none", "url(#marker)"] + }, + "marker-end": { + "links": { + "tr": "#VertexMarkerProperties", + "dev": "#VertexMarkerProperties" + }, + "tests": ["none", "url(#marker)"] + }, + "marker-mid": { + "links": { + "tr": "#VertexMarkerProperties", + "dev": "#VertexMarkerProperties" + }, + "tests": ["none", "url(#marker)"] + }, + "marker-start": { + "links": { + "tr": "#VertexMarkerProperties", + "dev": "#VertexMarkerProperties" + }, + "tests": ["none", "url(#marker)"] + }, + "paint-order": { + "links": { + "tr": "#PaintOrder", + "dev": "#PaintOrder" + }, + "tests": ["normal", "fill", "stroke", "markers", "fill stroke markers"] + }, + "shape-rendering": { + "links": { + "tr": "#ShapeRendering", + "dev": "#ShapeRendering" + }, + "tests": ["auto", "optimizeSpeed", "crispEdges", "geometricPrecision"] + }, + "text-rendering": { + "links": { + "tr": "#TextRendering", + "dev": "#TextRendering" + }, + "tests": ["auto", "optimizeSpeed", "optimizeLegibility", "geometricPrecision"] + } + } + }, + "css-rhythmic": { "title": "Rhythmic Sizing", "links": { From 7acfa862b728473a918329baed22c266d9dfaaf1 Mon Sep 17 00:00:00 2001 From: TrisTOON <36267812+TrisTOON@users.noreply.github.com> Date: Tue, 14 Jul 2020 00:44:20 +0200 Subject: [PATCH 279/668] Add SVG 2 Paint Servers: Gradients and Patterns --- tests.js | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/tests.js b/tests.js index e467a185..b586ec83 100644 --- a/tests.js +++ b/tests.js @@ -5667,6 +5667,29 @@ window.Specs = { } }, + "svg2-pservers": { + "title": "SVG 2 Paint Servers: Gradients and Patterns", + "links": { + "tr": "svg2/pservers.html", + "dev": "svg2-draft/pservers.html", + "devtype": "svgwg" + }, + "properties": { + "stop-color": { + "links": { + "dev": "#StopColorProperty" + }, + "tests": ["green"] + }, + "stop-opacity": { + "links": { + "dev": "#StopOpacityProperty" + }, + "tests": [".5", "45%"] + } + } + }, + "css-rhythmic": { "title": "Rhythmic Sizing", "links": { From 8bd2bca08d5c5f88e03333aa2f45df76e8abe743 Mon Sep 17 00:00:00 2001 From: TrisTOON <36267812+TrisTOON@users.noreply.github.com> Date: Tue, 14 Jul 2020 00:46:13 +0200 Subject: [PATCH 280/668] Add SVG 2 Scripting and Interactivity --- tests.js | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/tests.js b/tests.js index b586ec83..1dadad4e 100644 --- a/tests.js +++ b/tests.js @@ -5690,6 +5690,24 @@ window.Specs = { } }, + "svg2-interact": { + "title": "SVG 2 Scripting and Interactivity", + "links": { + "tr": "svg2/interact.html", + "dev": "svg2-draft/interact.html", + "devtype": "svgwg" + }, + "properties": { + "pointer-events": { + "links": { + "tr": "#PointerEventsProp", + "dev": "#PointerEventsProp" + }, + "tests": ["auto", "bounding-box", "visiblePainted", "visibleFill", "visibleStroke", "visible", "painted", "fill", "stroke", "all", "none"] + } + } + }, + "css-rhythmic": { "title": "Rhythmic Sizing", "links": { From 1dd5d8d9434ca53f610aef173d4c9cdf53f11a9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Wed, 30 Sep 2020 12:17:39 +0200 Subject: [PATCH 281/668] Update for Containment Module Level 1 & 2 --- tests.js | 44 ++++++++++++++++++++++++++++++++++++++------ 1 file changed, 38 insertions(+), 6 deletions(-) diff --git a/tests.js b/tests.js index 1dadad4e..b87265cf 100644 --- a/tests.js +++ b/tests.js @@ -1354,7 +1354,7 @@ window.Specs = { }, "tests": ["auto", "bar", "block", "underscore"] }, - "text-overflow":["clip", "ellipsis", "fade", "fade(10px)", "fade(10%)", "'foo'"].times(1, 2), + "text-overflow": ["clip", "ellipsis", "fade", "fade(10px)", "fade(10%)", "'foo'"].times(1, 2), "user-select": { "links": { "tr": "#content-selection", @@ -2310,7 +2310,7 @@ window.Specs = { "dev": "#font-variant-alternates-prop" }, "tests": [ - "normal", "historical-forms","styleset(ss01)", "character-variant(cv02)", "swash(flowing)", "ornaments(leaves)", "annotation(blocky)" + "normal", "historical-forms", "styleset(ss01)", "character-variant(cv02)", "swash(flowing)", "ornaments(leaves)", "annotation(blocky)" ] }, "font-feature-settings": { @@ -4879,17 +4879,49 @@ window.Specs = { } }, - "css-containment": { - "title": "Containment", + "css-containment-1": { + "title": "Containment Level 1", "links": { - "dev": "css-contain" + "tr": "css-contain-1", + "dev": "css-contain-1" }, "properties": { "contain": { "links": { + "tr": "#contain-property", "dev": "#contain-property" }, - "tests": ["none", "strict", "content", "size", "layout", "style", "paint"] + "tests": [ + "none", "strict", "content", "size", "layout", "paint", + "size layout", "size paint", "size layout paint" + ] + } + } + }, + + "css-containment-2": { + "title": "Containment Level 2", + "links": { + "tr": "css-contain-2", + "dev": "css-contain-2" + }, + "properties": { + "contain": { + "links": { + "tr": "#contain-property", + "dev": "#contain-property" + }, + "tests": [ + "style", + "size style", "size layout style", "size layout style paint" + ] + }, + "content-visibility": { + "links": { + "tr": "#content-visibility", + "dev": "#content-visibility" + }, + "tests": ["visible", "auto", "hidden"] } } }, From 524c2499ec9a5f8525d2d6500830efb2fa0d2e21 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Wed, 30 Sep 2020 16:05:20 +0200 Subject: [PATCH 282/668] Add Box Model Module Level 4 --- tests.js | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/tests.js b/tests.js index b87265cf..87d089c6 100644 --- a/tests.js +++ b/tests.js @@ -3321,6 +3321,23 @@ window.Specs = { } }, + "css-box-4": { + "title": "Box Model Level 4", + "links": { + "tr": "css-box-4", + "dev": "css-box-4" + }, + "properties": { + "align-self": { + "links": { + "tr": "#margin-trim", + "dev": "#margin-trim" + }, + "tests": ["none", "in-flow", "all"] + } + } + }, + "css-cascade-3": { "title": "Cascading and Inheritance Level 3", "links": { From b2b8cd5ab2ad3e6b264317cf65cf7ceb72df041b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Wed, 30 Sep 2020 16:26:32 +0200 Subject: [PATCH 283/668] Update Regions Module Level 1 --- tests.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests.js b/tests.js index 87d089c6..4537df4e 100644 --- a/tests.js +++ b/tests.js @@ -2876,11 +2876,11 @@ window.Specs = { } }, - "css3-regions": { + "css-regions-1": { "title": "Regions", "links": { "tr": "css-regions-1", - "dev": "css-regions" + "dev": "css-regions-1" }, "properties": { "flow-from": { @@ -2895,7 +2895,7 @@ window.Specs = { "tr": "#the-flow-into-property", "dev": "#the-flow-into-property" }, - "tests": ["none", "named-flow"] + "tests": ["none", "named-flow", "named-flow element", "named-flow content"] }, "region-fragment": { "links": { From 16c671acaa4df07f11a8c00b54b25e8a8b48455a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Wed, 30 Sep 2020 16:37:43 +0200 Subject: [PATCH 284/668] Update Selectors Level 4 --- tests.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/tests.js b/tests.js index 4537df4e..3be3823d 100644 --- a/tests.js +++ b/tests.js @@ -665,6 +665,13 @@ window.Specs = { }, "tests": ":out-of-range" }, + ":user-invalid": { + "links": { + "tr": "#user-invalid-pseudo", + "dev": "#user-invalid-pseudo" + }, + "tests": ":user-invalid" + }, ":required": { "links": { "tr": "#opt-pseudos", @@ -803,6 +810,13 @@ window.Specs = { "section:has(:not(h1, h2, h3, h4, h5, h6))" ] }, + ":defined": { + "links": { + "tr": "#the-defined-pseudo", + "dev": "the-defined-pseudo" + }, + "tests": [":defined"] + }, ":nth-child of": { "links": { "tr": "#the-nth-child-pseudo", From 1e5229d6b12295be0c61e5a382f93627584d5c9c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Thu, 1 Oct 2020 16:04:01 +0200 Subject: [PATCH 285/668] Sort modules by alphabetical order #196 --- csstest.js | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/csstest.js b/csstest.js index 59e76f0e..5b24f0a2 100644 --- a/csstest.js +++ b/csstest.js @@ -371,21 +371,28 @@ Array.prototype.times = function (min, max, separator) { onload = function () { var timeBefore = +new Date, - duration = 0; - - var specs = []; + duration = 0, + specs = []; for (var spec in Specs) { - specs.push(spec); + specs.push({ + id: spec, + title: Specs[spec].title + }); } + specs.sort(function (a, b) { + return a.title.localeCompare(b.title); + }); + + (function () { if (specs.length) { // Get spec id var spec = specs.shift(); // Run tests - var test = new Test(Specs[spec], spec, Specs[spec].title); + var test = new Test(Specs[spec.id], spec, Specs[spec.id].title); // Count test duration duration += +new Date - timeBefore; From 44b3f545554dbcbb7ea498d5aac927f644ba2d18 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Thu, 1 Oct 2020 20:28:05 +0200 Subject: [PATCH 286/668] Fix links in aside menu #196 --- csstest.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/csstest.js b/csstest.js index 5b24f0a2..a1b3a3e5 100644 --- a/csstest.js +++ b/csstest.js @@ -58,7 +58,7 @@ var devLinkFormat = function (params) { var Test = function (tests, spec, title) { this.tests = tests; - this.id = spec; + this.id = spec.id; this.title = title; this.score = new Score(mainScore); @@ -130,7 +130,7 @@ var Test = function (tests, spec, title) { contents: [ { tag: 'a', - href: '#' + spec, + href: '#' + spec.id, contents: title } ], From bc7646f15f8b4e902c5d6903384ce1e18be2b365 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Tue, 6 Oct 2020 02:48:23 +0200 Subject: [PATCH 287/668] Writing Modes Level 4 --- tests.js | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/tests.js b/tests.js index 3be3823d..d48ddae8 100644 --- a/tests.js +++ b/tests.js @@ -2388,8 +2388,8 @@ window.Specs = { } }, - "css3-writing-modes": { - "title": "Writing Modes", + "css-writing-modes-3": { + "title": "Writing Modes Level 3", "links": { "tr": "css-writing-modes-3", "dev": "css-writing-modes-3" @@ -2433,6 +2433,30 @@ window.Specs = { } }, + "css-writing-modes-4": { + "title": "Writing Modes Level 4", + "links": { + "tr": "css-writing-modes-4", + "dev": "css-writing-modes-4" + }, + "properties": { + "writing-mode": { + "links": { + "tr": "#block-flow", + "dev": "#block-flow" + }, + "tests": ["sideways-rl", "sideways-lr"] + }, + "text-combine-upright": { + "links": { + "tr": "#text-combine-upright", + "dev": "#text-combine-upright" + }, + "tests": ["digits 2"] + } + } + }, + "css-color-3": { "title": "Color Level 3", "links": { From 10e0f539bf424049b669e40dd884c8690830fe05 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Wed, 7 Oct 2020 13:11:41 +0200 Subject: [PATCH 288/668] Show prefixes (#198) --- csstest.js | 76 ++++++++++++++++++++++-------------- style.css | 13 +++++++ supports.js | 108 +++++++++++++++++++++++++++++++++++++--------------- 3 files changed, 139 insertions(+), 58 deletions(-) diff --git a/csstest.js b/csstest.js index a1b3a3e5..50609fd5 100644 --- a/csstest.js +++ b/csstest.js @@ -56,21 +56,21 @@ var devLinkFormat = function (params) { } }; -var Test = function (tests, spec, title) { - this.tests = tests; +var Test = function (spec) { + this.tests = spec.tests; this.id = spec.id; - this.title = title; + this.title = spec.tests.title; this.score = new Score(mainScore); var contents = [this.title]; - if (tests.links) { - if (tests.links.tr) { + if (spec.tests.links) { + if (spec.tests.links.tr) { contents.push($.create({ tag: 'a', properties: { - href: 'https://www.w3.org/TR/' + tests.links.tr, + href: 'https://www.w3.org/TR/' + spec.tests.links.tr, target: '_blank', textContent: 'TR', className: 'spec-link' @@ -78,11 +78,11 @@ var Test = function (tests, spec, title) { })); } - if (tests.links.dev) { + if (spec.tests.links.dev) { contents.push($.create({ tag: 'a', properties: { - href: devLinkFormat(tests.links), + href: devLinkFormat(spec.tests.links), target: '_blank', textContent: 'DEV', className: 'spec-link' @@ -94,7 +94,7 @@ var Test = function (tests, spec, title) { var h1 = $.create({ tag: 'h1', contents: contents - }), valuesSection; + }); // Wrapper section this.section = $.create({ @@ -131,7 +131,7 @@ var Test = function (tests, spec, title) { { tag: 'a', href: '#' + spec.id, - contents: title + contents: this.title } ], inside: ele('specsTested') @@ -159,7 +159,8 @@ Test.prototype = { var dl = document.createElement('dl'); var dtContents = [ - document.createTextNode(feature) + document.createTextNode(feature), + null // for prefix ]; if (theseTests[feature].links) { @@ -188,37 +189,55 @@ Test.prototype = { } } - var dt = $.create({ - tag: 'dt', - tabIndex: '0', - contents: dtContents, - inside: dl - }); - - var passed = 0, tests = theseTests[feature].tests || theseTests[feature]; + var passed = 0, + tests = theseTests[feature].tests || theseTests[feature], + propertyPrefix = null, + testsResults = []; tests = tests instanceof Array ? tests : [tests]; for (var i = 0, test; test = tests[i++];) { var results = testCallback(test, feature, theseTests), - success, note; + success, prefix, propertyPrefix, note; if (typeof results === 'object') { success = results.success; + propertyPrefix = propertyPrefix || results.propertyPrefix; + prefix = results.prefix; note = results.note; } - else { success = +!!results } passed += +success; - $.create({ + testsResults.push({ tag: 'dd', - innerHTML: test + (note ? '' + note + '' : ''), + innerHTML: test + + (prefix ? '' + prefix + '' : '') + + (note ? '' + note + '' : ''), className: passclass({ passed: Math.round(success * 10000), total: 10000 }), inside: dl }); } + if (propertyPrefix) { + dtContents[1] = $.create({ + tag: 'span', + className: 'prefix', + textContent: propertyPrefix + }); + } + + var dt = $.create({ + tag: 'dt', + tabIndex: '0', + contents: dtContents, + inside: dl + }); + + for (var j = 0; j < testsResults.length; j++) { + $.create(testsResults[j]); + } + this.score.update({ passed: passed, total: tests.length }); dt.className = passclass({ passed: passed, total: tests.length }); @@ -251,6 +270,7 @@ Test.groups = { return { success: success, + prefix: false, note: success > 0 && success < 1 ? 'Failed in: ' + failed.join(', ') : '' } }, @@ -278,11 +298,11 @@ Test.groups = { 'Media queries': function (test) { var matches = matchMedia(test); if (matches.media !== 'invalid' && matches.matches) { - return true; + return { success: true }; } else { var matches = matchMedia('not ' + test); - return matches.media !== 'invalid' && matches.matches + return { success: matches.media !== 'invalid' && matches.matches } } } }; @@ -377,12 +397,12 @@ onload = function () { for (var spec in Specs) { specs.push({ id: spec, - title: Specs[spec].title + tests: Specs[spec] }); } specs.sort(function (a, b) { - return a.title.localeCompare(b.title); + return a.tests.title.localeCompare(b.tests.title); }); @@ -392,7 +412,7 @@ onload = function () { var spec = specs.shift(); // Run tests - var test = new Test(Specs[spec.id], spec, Specs[spec.id].title); + var test = new Test(spec); // Count test duration duration += +new Date - timeBefore; diff --git a/style.css b/style.css index ca1584e5..49022538 100644 --- a/style.css +++ b/style.css @@ -219,6 +219,19 @@ dl.open > dd { white-space: pre; } +.prefix { + display: inline-block; + padding: .3em .4em; + margin: -.5em 0 -.5em .3em; + font-family: sans-serif; + font-size: 0.7rem; + background: hsla(0, 0%, 0%, 0.3); + color: white; + border-radius: .3em; + vertical-align: middle; + text-shadow: 0 .1em .1em black; +} + /* Emoticons */ dt:after, diff --git a/supports.js b/supports.js index 92887014..24cc8af9 100644 --- a/supports.js +++ b/supports.js @@ -46,33 +46,51 @@ window.matchMedia = window.matchMedia || (function (doc, undefined) { property: function (property) { if (property.charAt(0) === '-') { - return camelCase(property) in inline ? property : false; + return { + success: camelCase(property) in inline ? true : false, + property: property + }; } if (!_.property.cached) { _.property.cached = {}; } else if (_.property.cached[property]) { - return _.property.cached[property]; + return { + success: true, + property: _.property.cached[property], + prefix: i > 0 + }; } for (var i = 0; i < _.prefixes.length; i++) { var prefixed = _.prefixes[i] + property; if (camelCase(prefixed) in inline) { - return _.property.cached[property] = prefixed; + _.property.cached[property] = prefixed; + return { + success: true, + property: prefixed, + prefix: _.prefixes[i] + }; } } - return _.property.cached[property] = false; + _.property.cached[property] = false; + return { + success: false, + property: property + }; }, value: function (property, value) { property = _.property(property); - if (!property) { return false; } - - property = camelCase(property); + if (!property.success) { + return property; + } + propertyPrefix = property.prefix + property = camelCase(property.property); inline.cssText = ''; inline[property] = ''; @@ -85,21 +103,29 @@ window.matchMedia = window.matchMedia || (function (doc, undefined) { } catch (e) { } if (inline.length > 0) { - return prefixed; + return { + success: true, + prefix: _.prefixes[i], + propertyPrefix: propertyPrefix + }; } } - return false; + return { + success: false + }; }, descriptorvalue: function (descriptor, value) { /* doesn't handle prefixes for descriptor or value */ style.textContent = "@font-face {" + descriptor + ":" + value + "}"; try { - return style.sheet.cssRules.length == 1 && - style.sheet.cssRules[0].style.length == 1; + return { + success: style.sheet.cssRules.length == 1 + && style.sheet.cssRules[0].style.length == 1 + }; } catch (e) { - return false; + return { success: false }; } }, @@ -108,7 +134,9 @@ window.matchMedia = window.matchMedia || (function (doc, undefined) { _.selector.cached = {}; } else if (_.selector.cached[selector]) { - return _.selector.cached[selector]; + return { + success: _.selector.cached[selector] + }; } for (var i = 0; i < _.prefixes.length; i++) { @@ -116,12 +144,17 @@ window.matchMedia = window.matchMedia || (function (doc, undefined) { try { document.querySelector(prefixed); - return _.selector.cached[selector] = prefixed; + _.selector.cached[selector] = true; + return { + success: true, + propertyPrefix: _.prefixes[i] + }; } catch (e) { } } - return _.selector.cached[selector] = false; + _.selector.cached[selector] = false; + return { success: false }; }, atrule: function (atrule) { @@ -129,7 +162,9 @@ window.matchMedia = window.matchMedia || (function (doc, undefined) { _.atrule.cached = {}; } else if (_.atrule.cached[atrule]) { - return _.atrule.cached[atrule]; + return { + success: _.atrule.cached[atrule] + }; } for (var i = 0; i < _.prefixes.length; i++) { @@ -138,30 +173,39 @@ window.matchMedia = window.matchMedia || (function (doc, undefined) { style.textContent = prefixed; // Safari 4 has issues with style.innerHTML if (style.sheet.cssRules.length > 0) { - return _.atrule.cached[atrule] = prefixed; + _.atrule.cached[atrule] = true; + return { + success: true, + prefix: _.prefixes[i] + }; } } - - - return _.atrule.cached[atrule] = false; + _.atrule.cached[atrule] = false; + return { success: false }; }, mq: function (mq) { if (window.matchMedia) { - return matchMedia(mq).media !== 'invalid' - ? true - : matchMedia('not ' + mq).media !== 'invalid'; + return { + success: matchMedia(mq).media !== 'invalid' + ? true + : matchMedia('not ' + mq).media !== 'invalid' + }; } else { style.textContent = '@media ' + mq + '{ foo {} }'; if (style.sheet.cssRules.length > 0) { - return true + return { + success: true + }; } else { style.textContent = '@media not ' + mq + '{ foo {} }'; - return style.sheet.cssRules.length > 0 ? mq : false; + return { + success: style.sheet.cssRules.length > 0 ? mq : false + }; }; } }, @@ -170,15 +214,19 @@ window.matchMedia = window.matchMedia || (function (doc, undefined) { inline.setProperty(name, value); inline.setProperty('margin-right', 'var(' + name + ')'); var styles = window.getComputedStyle(dummy); - return styles.marginRight === value; + return { + success: styles.marginRight === value + }; }, declaration: function (intruction) { var val = intruction.match(/\s*([^:]+)\s*:\s*(.+)\s*/); - return !val[1].match(/--.*/) - ? Supports.value(val[1], val[2]) - : Supports.variable(val[1], val[2]) - }, + return { + success: !val[1].match(/--.*/) + ? Supports.value(val[1], val[2]).success + : Supports.variable(val[1], val[2]).success + }; + } }; /** From 90e5516fc010265d5cae43753834138c2e607475 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Thu, 8 Oct 2020 07:02:36 +0200 Subject: [PATCH 289/668] Fix tests for values --- csstest.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/csstest.js b/csstest.js index 50609fd5..0815b60e 100644 --- a/csstest.js +++ b/csstest.js @@ -256,12 +256,12 @@ Test.groups = { failed = []; for (var j = 0, property; property = properties[j++];) { - if (!Supports.property(property)) { + if (!Supports.property(property).success) { properties.splice(--j, 1); continue; } - if (!Supports.value(property, test)) { + if (!Supports.value(property, test).success) { failed.push(property); } } @@ -270,7 +270,6 @@ Test.groups = { return { success: success, - prefix: false, note: success > 0 && success < 1 ? 'Failed in: ' + failed.join(', ') : '' } }, From 14aca0cb0a03dcae3b0dd10069973ac013b92e5a Mon Sep 17 00:00:00 2001 From: Tristan LE GODAIS <36267812+TrisTOON@users.noreply.github.com> Date: Thu, 8 Oct 2020 19:03:06 +0200 Subject: [PATCH 290/668] Update features defined in Media Queries Level 5 (#202) `video-width`, `video-height` and `video-resolution` features are not added here since the spec says they are not stable --- tests.js | 36 +++++++++++++++++++++++++++++------- 1 file changed, 29 insertions(+), 7 deletions(-) diff --git a/tests.js b/tests.js index d48ddae8..5cf58469 100644 --- a/tests.js +++ b/tests.js @@ -1242,7 +1242,7 @@ window.Specs = { "links": { "dev": "#prefers-contrast" }, - "tests": ["(prefers-contrast: no-preference)", "(prefers-contrast: high)", "(prefers-contrast: low)"] + "tests": ["(prefers-contrast: no-preference)", "(prefers-contrast: high)", "(prefers-contrast: low)", "(prefers-contrast: forced)"] }, "prefers-color-scheme": { "links": { @@ -1256,23 +1256,45 @@ window.Specs = { }, "tests": ["(scripting: none)", "(scripting: initial-only)", "(scripting: enabled)"] }, - "light-level": { - "links": { - "dev": "#light-level" - }, - "tests": ["(light-level: dim)", "(light-level: normal)", "(light-level: washed)"] - }, "environment-blending": { "links": { "dev": "#environment-blending" }, "tests": ["(environment-blending: opaque)", "(environment-blending: additive)", "(environment-blending: subtractive)"] }, + "forced-colors": { + "links": { + "tr": "#forced-colors", + "dev": "#prefers-contrast" + }, + "tests": ["(forced-colors: none)", "(forced-color: active)"] + }, + "dynamic-range": { + "links": { + "tr": "#dynamic-range", + "dev": "#dynamic-range" + }, + "tests": ["(dynamic-range: standard)", "(dynamic-range: high)"] + }, "inverted-colors": { "links": { "dev": "#inverted" }, "tests": ["(inverted-colors: none)", "(light-level: inverted)"] + }, + "video-color-gamut": { + "links": { + "dev": "#video-color-gamut", + "tr": "#video-color-gamut" + }, + "tests": ["(video-color-gamut: srgb)", "(video-color-gamut: p3)", "(video-color-gamut: rec2020)"] + }, + "video-dynamic-range": { + "links": { + "dev": "#video-dynamic-range", + "tr": "#video-dynamic-range" + }, + "tests": ["(video-dynamic-range: standard)", "(video-dynamic-range: high)"] } } }, From afae4f0838b7b01d05d0a2313b0ea52cfeaca17e Mon Sep 17 00:00:00 2001 From: Tristan LE GODAIS <36267812+TrisTOON@users.noreply.github.com> Date: Thu, 8 Oct 2020 19:04:50 +0200 Subject: [PATCH 291/668] Update Box Sizing Module Levels 3 and 4 (#201) --- tests.js | 63 +++++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 44 insertions(+), 19 deletions(-) diff --git a/tests.js b/tests.js index 5cf58469..0e6db903 100644 --- a/tests.js +++ b/tests.js @@ -5015,49 +5015,49 @@ window.Specs = { "tr": "#preferred-size-properties", "dev": "#preferred-size-properties" }, - "tests": ["stretch", "max-content", "min-content", "fit-content", "fit-content(10%)"] + "tests": ["max-content", "min-content", "fit-content(10%)"] }, "min-width": { "links": { "tr": "#min-size-properties", "dev": "#min-size-properties" }, - "tests": ["stretch", "max-content", "min-content", "fit-content", "fit-content(10%)"] + "tests": ["max-content", "min-content", "fit-content(10%)"] }, "max-width": { "links": { "tr": "#max-size-properties", "dev": "#max-size-properties" }, - "tests": ["stretch", "max-content", "min-content", "fit-content", "fit-content(10%)"] + "tests": ["max-content", "min-content", "fit-content(10%)"] }, "height": { "links": { "tr": "#preferred-size-properties", "dev": "#preferred-size-properties" }, - "tests": ["stretch", "max-content", "min-content", "fit-content", "fit-content(10%)"] + "tests": ["max-content", "min-content", "fit-content(10%)"] }, "min-height": { "links": { "tr": "#min-size-properties", "dev": "#min-size-properties" }, - "tests": ["stretch", "max-content", "min-content", "fit-content", "fit-content(10%)"] + "tests": ["max-content", "min-content", "fit-content(10%)"] }, "max-height": { "links": { "tr": "#max-size-properties", "dev": "#max-size-properties" }, - "tests": ["stretch", "max-content", "min-content", "fit-content", "fit-content(10%)"] + "tests": ["max-content", "min-content", "fit-content(10%)"] }, "column-width": { "links": { "tr": "#column-sizing", "dev": "#column-sizing" }, - "tests": ["stretch", "max-content", "min-content", "fit-content", "fit-content(10%)"] + "tests": ["max-content", "min-content", "fit-content(10%)"] } } }, @@ -5074,29 +5074,54 @@ window.Specs = { }, "tests": ["auto", "2", "16 / 9", "auto 16 / 9"] }, - "intrinsic-block-size": { - "links": { + "contain-intrinsic-size": { + "links:" { + "tr": "#intrinsic-size-override", "dev": "#intrinsic-size-override" }, - "tests": ["legacy", "auto", "10px"] + "tests": ["none", "10px", "10px 15px"] }, - "intrinsic-inline-size": { + "width": { "links": { - "dev": "#intrinsic-size-override" + "tr": "#sizing-values", + "dev": "#sizing-values" }, - "tests": ["legacy", "auto", "10px"] + "tests": ["stretch", "fit-content", "contain"] }, - "intrinsic-height": { + "min-width": { "links": { - "dev": "#intrinsic-size-override" + "tr": "#sizing-values", + "dev": "#sizing-values" }, - "tests": ["legacy", "auto", "10px"] + "tests": ["stretch", "fit-content", "contain"] }, - "intrinsic-width": { + "max-width": { "links": { - "dev": "#intrinsic-size-override" + "tr": "#sizing-values", + "dev": "#sizing-values" + }, + "tests": ["stretch", "fit-content", "contain"] + }, + "height": { + "links": { + "tr": "#sizing-values", + "dev": "#sizing-values" + }, + "tests": ["stretch", "fit-content", "contain"] + }, + "min-height": { + "links": { + "tr": "#sizing-values", + "dev": "#sizing-values" + }, + "tests": ["stretch", "fit-content", "contain"] + }, + "max-height": { + "links": { + "tr": "#sizing-values", + "dev": "#sizing-values" }, - "tests": ["legacy", "auto", "10px"] + "tests": ["stretch", "fit-content", "contain"] } } }, From 3139a7482986b6b8cd0257f17d8e3d4abd297453 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Thu, 8 Oct 2020 19:59:02 +0200 Subject: [PATCH 292/668] Fix tests --- tests.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests.js b/tests.js index 0e6db903..4ad0f677 100644 --- a/tests.js +++ b/tests.js @@ -5075,7 +5075,7 @@ window.Specs = { "tests": ["auto", "2", "16 / 9", "auto 16 / 9"] }, "contain-intrinsic-size": { - "links:" { + "links": { "tr": "#intrinsic-size-override", "dev": "#intrinsic-size-override" }, From 62ecd6a575f99541e6148ec68230911d5fe8a5d3 Mon Sep 17 00:00:00 2001 From: TrisTOON <36267812+TrisTOON@users.noreply.github.com> Date: Thu, 8 Oct 2020 20:06:35 +0200 Subject: [PATCH 293/668] Fix links in Media Queries Level 5 and Box Sizing Level 4 --- tests.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests.js b/tests.js index 4ad0f677..fb1a1d3e 100644 --- a/tests.js +++ b/tests.js @@ -1223,6 +1223,7 @@ window.Specs = { "mediaqueries-5": { "title": "Media Queries Level 5", "links": { + "tr": "mediaqueries-5", "dev": "mediaqueries-5" }, "Media queries": { @@ -5065,6 +5066,7 @@ window.Specs = { "css-sizing-4": { "title": "Box Sizing Level 4", "links": { + "tr": "css-sizing-4", "dev": "css-sizing-4" }, "properties": { From d8b37bc2ab9d6698276777978d243b54d95047aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Fri, 9 Oct 2020 14:55:23 +0200 Subject: [PATCH 294/668] Add MDN links (#199) * Add MDN links * Add icons for MDN & W3C links * Fix a little mistake * Make a default link and remove if the key is the same * More generated links for MDN * Little forgotten. * Other little forgotten. * Logo in SVG * Add whatwg logo * Add exception for @media links * Change Base64 to readable content --- csstest.js | 72 ++++++++++++++-- style.css | 29 +++++++ tests.js | 239 ++++++++++++++++++++++++++++++++++++----------------- 3 files changed, 255 insertions(+), 85 deletions(-) diff --git a/csstest.js b/csstest.js index 0815b60e..d1be3116 100644 --- a/csstest.js +++ b/csstest.js @@ -56,6 +56,20 @@ var devLinkFormat = function (params) { } }; + +var devLinkLogo = function (params) { + switch (params.devtype) { + case "whatwg": + return params.devtype; + case "svgwg": + case "houdini": + case "fxtf": + case "github": + default: + return 'w3c'; + } +}; + var Test = function (spec) { this.tests = spec.tests; this.id = spec.id; @@ -73,7 +87,7 @@ var Test = function (spec) { href: 'https://www.w3.org/TR/' + spec.tests.links.tr, target: '_blank', textContent: 'TR', - className: 'spec-link' + className: 'spec-link w3c-link' } })); } @@ -85,7 +99,19 @@ var Test = function (spec) { href: devLinkFormat(spec.tests.links), target: '_blank', textContent: 'DEV', - className: 'spec-link' + className: 'spec-link ' + devLinkLogo(spec.tests.links) + '-link' + } + })); + } + + if (spec.tests.links.mdn) { + contents.push($.create({ + tag: 'a', + properties: { + href: 'https://developer.mozilla.org/en-US/docs/' + spec.tests.links.mdn, + target: '_blank', + textContent: 'MDN', + className: 'spec-link mdn-link' } })); } @@ -163,30 +189,58 @@ Test.prototype = { null // for prefix ]; - if (theseTests[feature].links) { - if (theseTests[feature].links.tr) { + var links = theseTests[feature].links; + if (links) { + if (links.tr) { dtContents.push($.create({ tag: 'a', properties: { - href: 'https://www.w3.org/TR/' + this.tests.links.tr + theseTests[feature].links.tr, + href: 'https://www.w3.org/TR/' + this.tests.links.tr + links.tr, target: '_blank', textContent: 'TR', - className: 'spec-link' + className: 'spec-link w3c-link' } })); } - if (theseTests[feature].links.dev) { + if (links.dev) { dtContents.push($.create({ tag: 'a', properties: { - href: devLinkFormat(this.tests.links) + theseTests[feature].links.dev, + href: devLinkFormat(this.tests.links) + links.dev, target: '_blank', textContent: 'DEV', - className: 'spec-link' + className: 'spec-link ' + devLinkLogo(this.tests.links) + '-link' } })); } + + var mdnLink = 'https://developer.mozilla.org/en-US/docs/Web/'; + switch (links.mdnGroup) { + case 'SVG': + mdnLink += 'SVG/Attribute/'; + break; + default: + mdnLink += 'CSS/'; + // add exception for Media Queries if no link define + if (what === "Media queries" && !links.mdn) { + mdnLink += '@media/'; + } + break; + } + mdnLink += !links.mdn + ? feature.replace('()', '') + : links.mdn; + + dtContents.push($.create({ + tag: 'a', + properties: { + href: mdnLink, + target: '_blank', + textContent: 'MDN', + className: 'spec-link mdn-link' + } + })); } var passed = 0, diff --git a/style.css b/style.css index 49022538..868e442e 100644 --- a/style.css +++ b/style.css @@ -52,6 +52,27 @@ h1, h2 { background: #f06; } + .w3c-link::before, + .mdn-link::before, + .whatwg-link::before { + content:''; + display: inline-block; + height: 16px; + width: 16px; + background: url("data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8'?%3E %3Csvg width='16' height='16' version='1.1' viewBox='0 0 4.2333 4.2333' xmlns='http://www.w3.org/2000/svg' xmlns:cc='http://creativecommons.org/ns%23' xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns%23'%3E %3Cpath d='m0.035363 0.61275h0.4124l0.54126 1.8375 0.34374-1.3614-0.15643-0.47615h0.44465l0.50434 1.8157 0.55325-1.8157 1.4424 0.010055 0.0057528 0.18633-0.56683 0.97156c0.16442 0.026204 0.62609 0.24816 0.61673 0.92355-0.0093492 0.6754-0.47494 0.96237-0.78322 0.95736-0.30827-0.0050015-0.58395-0.15432-0.74365-0.61556l0.29081-0.13409c0.17859 0.3634 0.24065 0.36155 0.44314 0.37218 0.20249 0.010631 0.3613-0.15592 0.35882-0.6854-0.0024723-0.52948-0.40786-0.52174-0.67275-0.49464l-0.01716-0.17759 0.53506-0.92525-0.62349 0.0071148-0.8335 2.6879s-0.58082-1.9604-0.58082-1.9106c0 0.049773-0.57178 1.9056-0.57178 1.9056z' fill='%23fefefe' fill-rule='evenodd'/%3E %3C/svg%3E") 0 0 / 16px 16px; + vertical-align: -3px; + margin-right: 3px; + opacity: .5; + } + + .mdn-link::before { + background-image: url("data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8'?%3E %3Csvg width='16' height='16' version='1.1' viewBox='0 0 4.2333 4.2333' xmlns='http://www.w3.org/2000/svg' xmlns:cc='http://creativecommons.org/ns%23' xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns%23'%3E %3Cpath d='m2.4076 0.6707c-0.51041-0.29724-1.0833-0.14856-1.4449 0.16704l-0.9605 0.9438 0.65147-0.016704-0.3675 0.42596 0.66817 0.016704-0.41761 0.44267 0.56795 0.0083521-0.15034 0.47607c0.41841 0.41283 0.90754 0.64883 1.4199 0.82686 0.1437-0.54959-0.046954-1.3818 0.45937-1.4366 0.33349-0.036107 0.55014 0.12707 0.7517 0.091874s0.25892-0.16704 0.25892-0.16704c0.20521 0.05062 0.25615-0.15587 0.33409-0.31738 0.017978-0.12377 0.0011606-0.21275-0.025056-0.29233 0.0085525-0.16476 0.02152-0.33151-0.22011-0.38909-0.16275-0.063531-0.30787-0.13398-0.51488-0.21226-0.11763-0.036416-0.22295-0.13562-0.28397-0.35914-0.036707-0.13446-0.14207-0.20802-0.29367-0.21808-0.089008-0.005906-0.28178 0.097323-0.43297 0.009278z' fill='%23fefefe' fill-rule='evenodd'/%3E %3C/svg%3E"); + } + + .whatwg-link::before { + background-image: url("data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8'?%3E %3Csvg xmlns:cc='http://creativecommons.org/ns%23' xmlns:dc='http://purl.org/dc/elements/1.1/' xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns%23' version='1.1' viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg'%3E %3Ccircle cx='50' cy='50' r='45' fill='none' stroke='%23fff' stroke-width='10'/%3E %3Cpath d='m38 38c0-12 24-15 23-2 0 9-16 13-16 23v7h10v-4c0-9 17-12 17-27-2-22-45-22-45 3zm7 32h10v10h-10' fill='%23fff'/%3E %3Cscript/%3E %3C/svg%3E"); + } + dt > .spec-link { display: none; vertical-align: inherit; @@ -60,6 +81,14 @@ h1, h2 { dt:hover > .spec-link { display: inline-block; } + + dt > .spec-link::before { + height: 18px; + width: 18px; + background-size: 18px 18px; + vertical-align: -4px; + } + body > h1 { position: fixed; left: 0; diff --git a/tests.js b/tests.js index fb1a1d3e..865108d2 100644 --- a/tests.js +++ b/tests.js @@ -267,6 +267,7 @@ window.Specs = { }, "image-rendering": { "links": { + "tr": "#the-image-rendering", "dev": "#the-image-rendering" }, "tests": ["auto", "smooth", "high-quality", "crisp-edges", "pixelated"] @@ -335,7 +336,8 @@ window.Specs = { "image()": { "links": { "tr": "#image-notation", - "dev": "#image-notation" + "dev": "#image-notation", + "mdn": "imagefunction" }, "tests": [ "image('sprites.png#xywh=10,30,60,20')", @@ -390,13 +392,15 @@ window.Specs = { "title": "Selectors Level 3", "links": { "tr": "selectors-3", - "dev": "selectors-3" + "dev": "selectors-3", + "mdn": "Glossary/CSS_Selector" }, "selectors": { "Sibling combinator": { "links": { "tr": "#sibling-combinators", - "dev": "#sibling-combinators" + "dev": "#sibling-combinators", + "mdn": "General_sibling_combinator" }, "tests": "foo ~ bar" }, @@ -431,28 +435,32 @@ window.Specs = { "[att^=val]": { "links": { "tr": "#attribute-substrings", - "dev": "#attribute-substrings" + "dev": "#attribute-substrings", + "mdn": "Attribute_selectors" }, "tests": ["[att^=val]", "[att^=\"val\"]"] }, "[att*=val]": { "links": { "tr": "#attribute-substrings", - "dev": "#attribute-substrings" + "dev": "#attribute-substrings", + "mdn": "Attribute_selectors" }, "tests": ["[att*=val]", "[att*=\"val\"]"] }, "[att$=val]": { "links": { "tr": "#attribute-substrings", - "dev": "#attribute-substrings" + "dev": "#attribute-substrings", + "mdn": "Attribute_selectors" }, "tests": ["[att$=val]", "[att$=\"val\"]"] }, "Namespaces": { "links": { "tr": "#attrnmsp", - "dev": "#attrnmsp" + "dev": "#attrnmsp", + "mdn": "CSS_Namespaces" }, "tests": ["*|html", "[*|attr]", "[*|attr=val]", "*|html[*|attr]"] }, @@ -498,7 +506,7 @@ window.Specs = { }, "tests": ":root" }, - ":nth-child": { + ":nth-child()": { "links": { "tr": "#nth-child-pseudo", "dev": "#nth-child-pseudo" @@ -511,7 +519,7 @@ window.Specs = { ":nth-child(-n+1)", ":nth-child(-n-1)", ":nth-child(3n-1)" ] }, - ":nth-last-child": { + ":nth-last-child()": { "links": { "tr": "#nth-last-child-pseudo", "dev": "#nth-last-child-pseudo" @@ -524,7 +532,7 @@ window.Specs = { ":nth-last-child(-n+1)", ":nth-last-child(-n-1)", ":nth-last-child(3n-1)" ] }, - ":nth-of-type": { + ":nth-of-type()": { "links": { "tr": "#nth-of-type-pseudo", "dev": "#nth-of-type-pseudo" @@ -537,7 +545,7 @@ window.Specs = { ":nth-of-type(-n+1)", ":nth-of-type(-n-1)", ":nth-of-type(3n-1)" ] }, - ":nth-last-of-type": { + ":nth-last-of-type()": { "links": { "tr": "#nth-last-of-type-pseudo", "dev": "#nth-last-of-type-pseudo" @@ -820,7 +828,8 @@ window.Specs = { ":nth-child of": { "links": { "tr": "#the-nth-child-pseudo", - "dev": "#the-nth-child-pseudo" + "dev": "#the-nth-child-pseudo", + "mdn": ":nth-child" }, "tests": [":nth-child(-n+3 of li.important)", ":nth-child(even of :not([hidden])"] }, @@ -860,42 +869,48 @@ window.Specs = { "[att^=val i]": { "links": { "tr": "#attribute-case", - "dev": "#attribute-case" + "dev": "#attribute-case", + "mdn": "Attribute_selectors" }, "tests": ["[att^=val i]", "[att^=\"val\" i]", "[att^=val I]", "[att^=\"val\" I]"] }, "[att*=val i]": { "links": { "tr": "#attribute-case", - "dev": "#attribute-case" + "dev": "#attribute-case", + "mdn": "Attribute_selectors" }, "tests": ["[att*=val i]", "[att*=\"val\" i]", "[att*=val I]", "[att*=\"val\" I]"] }, "[att$=val i]": { "links": { "tr": "#attribute-case", - "dev": "#attribute-case" + "dev": "#attribute-case", + "mdn": "Attribute_selectors" }, "tests": ["[att$=val i]", "[att$=\"val\" i]", "[att$=val I]", "[att$=\"val\" I]"] }, "[att^=val s]": { "links": { "tr": "#attribute-case", - "dev": "#attribute-case" + "dev": "#attribute-case", + "mdn": "Attribute_selectors" }, "tests": ["[att^=val s]", "[att^=\"val\" s]", "[att^=val S]", "[att^=\"val\" S]"] }, "[att*=val s]": { "links": { "tr": "#attribute-case", - "dev": "#attribute-case" + "dev": "#attribute-case", + "mdn": "Attribute_selectors" }, "tests": ["[att*=val s]", "[att*=\"val\" s]", "[att*=val S]", "[att*=\"val\" S]"] }, "[att$=val s]": { "links": { "tr": "#attribute-case", - "dev": "#attribute-case" + "dev": "#attribute-case", + "mdn": "Attribute_selectors" }, "tests": ["[att$=val s]", "[att$=\"val\" s]", "[att$=val S]", "[att$=\"val\" S]"] } @@ -971,7 +986,8 @@ window.Specs = { ":host()": { "links": { "tr": "#host-selector", - "dev": "#host-selector" + "dev": "#host-selector", + "mdn": ":host()" }, "tests": [":host(*)", ":host(.foo)"] }, @@ -984,7 +1000,8 @@ window.Specs = { }, "::slotted()": { "links": { - "dev": "#slotted-pseudo" + "dev": "#slotted-pseudo", + "mdn": "::slotted" }, "tests": ["::slotted(*)", "::slotted(.foo)"] } @@ -1004,21 +1021,24 @@ window.Specs = { "negation": { "links": { "tr": "#media0", - "dev": "#media0" + "dev": "#media0", + "mdn": "Media_Queries/Using_media_queries" }, "tests": ["not print", "not all and (width:1px)"] }, "width": { "links": { "tr": "#width", - "dev": "#width" + "dev": "#width", + "mdn": "Media_Queries/Using_media_queries" }, "tests": ["(width)", "(min-width:1px)", "(max-width:1000000px)"] }, "height": { "links": { "tr": "#height", - "dev": "#height" + "dev": "#height", + "mdn": "Media_Queries/Using_media_queries" }, "tests": ["(height)", "(min-height:1px)", "(max-height:1000000px)"] }, @@ -1391,7 +1411,13 @@ window.Specs = { }, "tests": ["auto", "bar", "block", "underscore"] }, - "text-overflow": ["clip", "ellipsis", "fade", "fade(10px)", "fade(10%)", "'foo'"].times(1, 2), + "text-overflow": { + "links": { + "tr": "#text-overflow", + "dev": "#text-overflow" + }, + "tests": ["clip", "ellipsis", "fade", "fade(10px)", "fade(10%)", "'foo'"].times(1, 2) + }, "user-select": { "links": { "tr": "#content-selection", @@ -1588,7 +1614,7 @@ window.Specs = { "title": "Transforms Level 1", "links": { "tr": "css-transforms-1", - "dev": "css-transforms" + "dev": "css-transforms-1" }, "properties": { "transform": { @@ -1632,47 +1658,55 @@ window.Specs = { "css-transforms-2": { "title": "Transforms Level 2", "links": { + "tr": "css-transforms-2", "dev": "css-transforms-2" }, "properties": { "translate": { "links": { + "tr": "#individual-transforms", "dev": "#individual-transforms" }, "tests": ["none", "50%", "50% 50%", "50% 50% 10px"] }, "scale": { "links": { + "tr": "#individual-transforms", "dev": "#individual-transforms" }, "tests": ["none"].concat(["2"].times(1, 3)) }, "rotate": { "links": { + "tr": "#individual-transforms", "dev": "#individual-transforms" }, "tests": ["none"].concat(["", "x", "y", "z", "-1 0 2"].and(["45deg"])).concat(["45deg"].and(["x", "y", "z", "-1 0 2"])) }, "transform-style": { "links": { + "tr": "#transform-style-property", "dev": "#transform-style-property" }, "tests": ["flat", "preserve-3d"] }, "perspective": { "links": { + "tr": "#perspective-property", "dev": "#perspective-property" }, "tests": ["none", "600px"] }, "perspective-origin": { "links": { + "tr": "#perspective-origin-property", "dev": "#perspective-origin-property" }, "tests": ["10px", "top", "top left", "50% 100%", "left 0%"] }, "backface-visibility": { "links": { + "tr": "#backface-visibility-property", "dev": "#backface-visibility-property" }, "tests": ["visible", "hidden"] @@ -2096,6 +2130,10 @@ window.Specs = { }, "properties": { "text-decoration": { + "links": { + "tr": "#text-decoration-property", + "dev": "#text-decoration-property" + }, "tests": ["underline solid blue 1px"] }, "text-decoration-skip": { @@ -2497,42 +2535,48 @@ window.Specs = { "rgba": { "links": { "tr": "#rgba-color", - "dev": "#rgba-color" + "dev": "#rgba-color", + "mdn": "color_value" }, "tests": "rgba(0,0,0,.5)" }, "#RGB": { "links": { "tr": "#rgb-color", - "dev": "#rgb-color" + "dev": "#rgb-color", + "mdn": "color_value" }, "tests": ["#F06", "#FF0066"] }, "hsl": { "links": { "tr": "#hsl-color", - "dev": "#hsl-color" + "dev": "#hsl-color", + "mdn": "color_value" }, "tests": "hsl(0,0%,0%)" }, "hsla": { "links": { "tr": "#hsla-color", - "dev": "#hsla-color" + "dev": "#hsla-color", + "mdn": "color_value" }, - "tests": "hsla(0,0%,0%,.5)" + "tests": "hsl(0,0%,0%,.5)" }, "transparent": { "links": { "tr": "#transparent", - "dev": "#transparent" + "dev": "#transparent", + "mdn": "color_value" }, "tests": "transparent" }, "currentColor": { "links": { "tr": "#currentcolor", - "dev": "#currentcolor" + "dev": "#currentcolor", + "mdn": "color_value" }, "tests": "currentColor" } @@ -2565,42 +2609,48 @@ window.Specs = { "comma-less colors": { "links": { "tr": "#funcdef-rgb", - "dev": "#funcdef-rgb" + "dev": "#funcdef-rgb", + "mdn": "color_value" }, "tests": ["rgb(0% 20% 70%)", "rgb(0 64 185)", "hsl(0 0% 0%)"] }, "/ alpha": { "links": { "tr": "#funcdef-rgb", - "dev": "#funcdef-rgb" + "dev": "#funcdef-rgb", + "mdn": "color_value" }, "tests": ["rgba(0% 20% 70% / 50%)", "rgba(0% 20% 70% / .5)", "rgba(0 64 185 / 50%)", "rgba(0 64 185 / .5)", "hsla(0 0% 0% /.5)"] }, "optional alpha": { "links": { "tr": "#funcdef-rgb", - "dev": "#funcdef-rgb" + "dev": "#funcdef-rgb", + "mdn": "color_value" }, "tests": ["rgb(0% 20% 70% / 50%)", "rgb(0% 20% 70% / .5)", "rgb(0 64 185 / 50%)", "rgb(0 64 185 / .5)", "hsl(0 0% 0% / .5)"] }, "Hex with alpha": { "links": { "tr": "#hex-notation", - "dev": "#hex-notation" + "dev": "#hex-notation", + "mdn": "color_value" }, "tests": ["#000F", "#000000FF"] }, "rebeccapurple": { "links": { "tr": "#named-colors", - "dev": "#named-colors" + "dev": "#named-colors", + "mdn": "color_value" }, "tests": "rebeccapurple" }, "system colors": { "links": { "tr": "#css-system-colors", - "dev": "#css-system-colors" + "dev": "#css-system-colors", + "mdn": "color_value" }, "tests": [ "Canvas", "CanvasText", "LinkText", "VisitedText", "ActiveText", "ButtonFace", "Field", "FieldText", @@ -2610,28 +2660,32 @@ window.Specs = { "hwb()": { "links": { "tr": "#the-hwb-notation", - "dev": "#the-hwb-notation" + "dev": "#the-hwb-notation", + "mdn": "color_value" }, "tests": ["hwb(0 0% 0%)", "hwb(0 0% 0% / .5)"] }, "lab()": { "links": { "tr": "#specifying-lab-lch", - "dev": "#specifying-lab-lch" + "dev": "#specifying-lab-lch", + "mdn": "color_value" }, "tests": ["lab(0% 0 0)", "lab(0% 0 0 /.5)"] }, "lch()": { "links": { "tr": "#specifying-lab-lch", - "dev": "#specifying-lab-lch" + "dev": "#specifying-lab-lch", + "mdn": "color_value" }, "tests": ["lch(0% 0 0)", "lch(0% 0 0 / .5)"] }, "color()": { "links": { "tr": "#color-function", - "dev": "#color-function" + "dev": "#color-function", + "mdn": "color_value" }, "tests": [ "color(.2 .4 .6)", @@ -2656,7 +2710,8 @@ window.Specs = { "device-cmyk()": { "links": { "tr": "#cmyk-colors", - "dev": "#cmyk-colors" + "dev": "#cmyk-colors", + "mdn": "color_value" }, "tests": ["device-cmyk(.2 .3 .4 .5)", "device-cmyk(.2 .3 .4 .5 / .5)", "device-cmyk(.2 .3 .4 .5 / 50%)"] } @@ -2793,49 +2848,56 @@ window.Specs = { "rem": { "links": { "tr": "#font-relative-lengths", - "dev": "#font-relative-lengths" + "dev": "#font-relative-lengths", + "mdn": "length" }, "tests": "5rem" }, "ch": { "links": { "tr": "#font-relative-lengths", - "dev": "#font-relative-lengths" + "dev": "#font-relative-lengths", + "mdn": "length" }, "tests": "5ch" }, "vw": { "links": { "tr": "#viewport-relative-lengths", - "dev": "#viewport-relative-lengths" + "dev": "#viewport-relative-lengths", + "mdn": "length" }, "tests": "5vw" }, "vh": { "links": { "tr": "#viewport-relative-lengths", - "dev": "#viewport-relative-lengths" + "dev": "#viewport-relative-lengths", + "mdn": "length" }, "tests": "5vh" }, "vmin": { "links": { "tr": "#viewport-relative-lengths", - "dev": "#viewport-relative-lengths" + "dev": "#viewport-relative-lengths", + "mdn": "length" }, "tests": "5vmin" }, "vmax": { "links": { "tr": "#viewport-relative-lengths", - "dev": "#viewport-relative-lengths" + "dev": "#viewport-relative-lengths", + "mdn": "length" }, "tests": "5vmax" }, "q": { "links": { "tr": "#absolute-lengths", - "dev": "#absolute-lengths" + "dev": "#absolute-lengths", + "mdn": "length" }, "tests": "5q" }, @@ -2972,7 +3034,8 @@ window.Specs = { "title": "Flexible Box Layout", "links": { "tr": "css-flexbox-1", - "dev": "css-flexbox-1" + "dev": "css-flexbox-1", + "mdn": "Glossary/Flexbox" }, "properties": { "align-content": { @@ -3087,7 +3150,8 @@ window.Specs = { "title": "Grid Layout Level 1", "links": { "tr": "css-grid-1", - "dev": "css-grid" + "dev": "css-grid", + "mdn": "Glossary/Grid" }, "properties": { "display": { @@ -3259,7 +3323,8 @@ window.Specs = { "title": "Grid Layout Level 2", "links": { "tr": "css-grid-2", - "dev": "css-grid-2" + "dev": "css-grid-2", + "mdn": "Glossary/Grid" }, "properties": { "grid-template-columns": { @@ -3884,7 +3949,8 @@ window.Specs = { "properties": { "backdrop-filter": { "links": { - "dev": "#BackdropFilterProperty" + "dev": "#BackdropFilterProperty", + "mdn": "backdrop-filter" }, "tests": [ "none", @@ -3933,13 +3999,15 @@ window.Specs = { "selectors": { "::backdrop": { "links": { - "dev": "#::backdrop-pseudo-element" + "dev": "#::backdrop-pseudo-element", + "mdn": "::backdrop" }, "tests": "::backdrop" }, ":fullscreen": { "links": { - "dev": "#:fullscreen-pseudo-class" + "dev": "#:fullscreen-pseudo-class", + "mdn": ":fullscreen" }, "tests": ":fullscreen" } @@ -4885,7 +4953,8 @@ window.Specs = { "line-clamp": { "links": { "tr": "#line-clamp", - "dev": "#line-clamp" + "dev": "#line-clamp", + "mdn": "-webkit-line-clamp" }, "tests": ["none", "1", "5 clip", "5 ellipsis", "5 \"… (continued on next page)\""] }, @@ -5282,7 +5351,7 @@ window.Specs = { "dev": "css-shadow-parts" }, "selectors": { - "::part": { + "::part()": { "links": { "tr": "#part", "dev": "#part" @@ -5309,7 +5378,8 @@ window.Specs = { "var(--*)": { "links": { "tr": "#using-variables", - "dev": "#using-variables" + "dev": "#using-variables", + "mdn": "--*" }, "tests": [ "width: var(--foo)", "width: var(--FOO)", "width: var(--foo, 4px)", @@ -5574,49 +5644,56 @@ window.Specs = { "cx": { "links": { "tr": "#CX", - "dev": "#CX" + "dev": "#CX", + "mdnGroup": "SVG" }, "tests": ["0", "1px", "-5px", "25%"] }, "cy": { "links": { "tr": "#CY", - "dev": "#CY" + "dev": "#CY", + "mdnGroup": "SVG" }, "tests": ["0", "1px", "-5px", "25%"] }, "r": { "links": { "tr": "#R", - "dev": "#R" + "dev": "#R", + "mdnGroup": "SVG" }, "tests": ["0", "1px", "25%"] }, "rx": { "links": { "tr": "#RX", - "dev": "#RX" + "dev": "#RX", + "mdnGroup": "SVG" }, "tests": ["auto", "0", "1px", "25%"] }, "ry": { "links": { "tr": "#RY", - "dev": "#RY" + "dev": "#RY", + "mdnGroup": "SVG" }, "tests": ["auto", "0", "1px", "25%"] }, "x": { "links": { "tr": "#X", - "dev": "#X" + "dev": "#X", + "mdnGroup": "SVG" }, "tests": ["0", "1px", "-5px", "25%"] }, "y": { "links": { "tr": "#Y", - "dev": "#Y" + "dev": "#Y", + "mdnGroup": "SVG" }, "tests": ["0", "1px", "-5px", "25%"] } @@ -5634,7 +5711,8 @@ window.Specs = { "vector-effect": { "links": { "tr": "#VectorEffects", - "dev": "#VectorEffects" + "dev": "#VectorEffects", + "mdnGroup": "SVG" }, "tests": [ "none", @@ -5661,7 +5739,8 @@ window.Specs = { "d": { "links": { "tr": "#TheDProperty", - "dev": "#TheDProperty" + "dev": "#TheDProperty", + "mdnGroup": "SVG" }, "tests": ["none", "'M 20 20 H 80 V 30'"] } @@ -5695,7 +5774,8 @@ window.Specs = { "text-anchor": { "links": { "tr": "#TextAnchoringProperties", - "dev": "#TextAnchoringProperties" + "dev": "#TextAnchoringProperties", + "mdnGroup": "SVG" }, "tests": ["start", "middle", "end"] }, @@ -5741,7 +5821,8 @@ window.Specs = { "color-interpolation": { "links": { "tr": "#ColorInterpolation", - "dev": "#ColorInterpolation" + "dev": "#ColorInterpolation", + "mdnGroup": "SVG" }, "tests": ["auto", "sRGB", "linearRGB"] }, @@ -5761,21 +5842,24 @@ window.Specs = { "marker-end": { "links": { "tr": "#VertexMarkerProperties", - "dev": "#VertexMarkerProperties" + "dev": "#VertexMarkerProperties", + "mdnGroup": "SVG" }, "tests": ["none", "url(#marker)"] }, "marker-mid": { "links": { "tr": "#VertexMarkerProperties", - "dev": "#VertexMarkerProperties" + "dev": "#VertexMarkerProperties", + "mdnGroup": "SVG" }, "tests": ["none", "url(#marker)"] }, "marker-start": { "links": { "tr": "#VertexMarkerProperties", - "dev": "#VertexMarkerProperties" + "dev": "#VertexMarkerProperties", + "mdnGroup": "SVG" }, "tests": ["none", "url(#marker)"] }, @@ -5789,7 +5873,8 @@ window.Specs = { "shape-rendering": { "links": { "tr": "#ShapeRendering", - "dev": "#ShapeRendering" + "dev": "#ShapeRendering", + "mdnGroup": "SVG" }, "tests": ["auto", "optimizeSpeed", "crispEdges", "geometricPrecision"] }, @@ -5813,13 +5898,15 @@ window.Specs = { "properties": { "stop-color": { "links": { - "dev": "#StopColorProperty" + "dev": "#StopColorProperty", + "mdnGroup": "SVG" }, "tests": ["green"] }, "stop-opacity": { "links": { - "dev": "#StopOpacityProperty" + "dev": "#StopOpacityProperty", + "mdnGroup": "SVG" }, "tests": [".5", "45%"] } From e78881ee58fd25820236378b61c9203d88487578 Mon Sep 17 00:00:00 2001 From: Tristan LE GODAIS <36267812+TrisTOON@users.noreply.github.com> Date: Fri, 9 Oct 2020 14:58:19 +0200 Subject: [PATCH 295/668] Dynamically shorten the spec titles (#204) --- csstest.js | 9 +++- tests.js | 142 ++++++++++++++++++++++++++--------------------------- 2 files changed, 78 insertions(+), 73 deletions(-) diff --git a/csstest.js b/csstest.js index d1be3116..d6479288 100644 --- a/csstest.js +++ b/csstest.js @@ -73,7 +73,7 @@ var devLinkLogo = function (params) { var Test = function (spec) { this.tests = spec.tests; this.id = spec.id; - this.title = spec.tests.title; + this.title = spec.title; this.score = new Score(mainScore); @@ -447,15 +447,20 @@ onload = function () { duration = 0, specs = []; + var removedWords = / *(?:\([^)]*\)|:.*|\b(?:CSS|Module)\b)( *)/g; + for (var spec in Specs) { specs.push({ id: spec, + // Shorten the title by removing parentheticals, + // subheadings, CSS and Module words + title: Specs[spec].title.replace(removedWords, "$1").trim(), tests: Specs[spec] }); } specs.sort(function (a, b) { - return a.tests.title.localeCompare(b.tests.title); + return a.title.localeCompare(b.title); }); diff --git a/tests.js b/tests.js index 865108d2..58b228d6 100644 --- a/tests.js +++ b/tests.js @@ -1,6 +1,6 @@ window.Specs = { "css3-background": { - "title": "Backgrounds and Borders Level 3", + "title": "CSS Backgrounds and Borders Module Level 3", "links": { "tr": "css-backgrounds-3", "dev": "css-backgrounds" @@ -157,7 +157,7 @@ window.Specs = { }, "css-backgrounds-4": { - "title": "Backgrounds and Borders Level 4", + "title": "CSS Backgrounds and Borders Module Level 4", "links": { "dev": "css-backgrounds-4", }, @@ -178,7 +178,7 @@ window.Specs = { }, "css3-images": { - "title": "Image Values Level 3", + "title": "CSS Images Module Level 3", "links": { "tr": "css3-images", "dev": "css-images-3" @@ -276,7 +276,7 @@ window.Specs = { }, "css-images-4": { - "title": "Image Values Level 4", + "title": "CSS Images Module Level 4", "links": { "tr": "css-images-4", "dev": "css-images-4" @@ -918,7 +918,7 @@ window.Specs = { }, "css-pseudo": { - "title": "Pseudo-Elements Level 4", + "title": "CSS Pseudo-Elements Module Level 4", "links": { "tr": "css-pseudo", "dev": "css-pseudo-4" @@ -970,7 +970,7 @@ window.Specs = { }, "css-scoping": { - "title": "Scoping Level 1", + "title": "CSS Scoping Module Level 1", "links": { "tr": "css-scoping", "dev": "css-scoping" @@ -1321,7 +1321,7 @@ window.Specs = { }, "css3-ui": { - "title": "Basic User Interface Level 3", + "title": "CSS Basic User Interface Module Level 3 (CSS3 UI)", "links": { "tr": "css-ui-3", "dev": "css-ui-3" @@ -1384,7 +1384,7 @@ window.Specs = { }, "css-ui-4": { - "title": "Basic User Interface Level 4", + "title": "CSS Basic User Interface Module Level 4", "links": { "tr": "css-ui-4", "dev": "css-ui-4" @@ -1457,7 +1457,7 @@ window.Specs = { }, "css3-transitions": { - "title": "Transitions", + "title": "CSS Transitions", "links": { "tr": "css-transitions-1", "dev": "css-transitions-1" @@ -1507,7 +1507,7 @@ window.Specs = { }, "css-easing-1": { - "title": "Easing Functions", + "title": "CSS Easing Functions Level 1", "links": { "tr": "css-easing-1", "dev": "css-easing-1" @@ -1524,7 +1524,7 @@ window.Specs = { }, "css3-animations": { - "title": "Animations", + "title": "CSS Animations Level 1", "links": { "tr": "css-animations-1", "dev": "css-animations" @@ -1611,7 +1611,7 @@ window.Specs = { }, "css-transforms-1": { - "title": "Transforms Level 1", + "title": "CSS Transforms Module Level 1", "links": { "tr": "css-transforms-1", "dev": "css-transforms-1" @@ -1656,7 +1656,7 @@ window.Specs = { }, "css-transforms-2": { - "title": "Transforms Level 2", + "title": "CSS Transforms Module Level 2", "links": { "tr": "css-transforms-2", "dev": "css-transforms-2" @@ -1835,7 +1835,7 @@ window.Specs = { }, "css-text-3": { - "title": "Text Level 3", + "title": "CSS Text Module Level 3", "links": { "tr": "css-text-3", "dev": "css-text-3" @@ -1953,7 +1953,7 @@ window.Specs = { }, "css-text-4": { - "title": "Text Level 4", + "title": "CSS Text Module Level 4", "links": { "tr": "css-text-4", "dev": "css-text-4" @@ -2043,7 +2043,7 @@ window.Specs = { }, "css-text-decor-3": { - "title": "Text Decoration Level 3", + "title": "CSS Text Decoration Module Level 3", "links": { "tr": "css-text-decor-3", "dev": "css-text-decor-3" @@ -2123,7 +2123,7 @@ window.Specs = { }, "css-text-decor-4": { - "title": "Text Decoration Level 4", + "title": "CSS Text Decoration Module Level 4", "links": { "tr": "css-text-decor-4", "dev": "css-text-decor-4" @@ -2174,7 +2174,7 @@ window.Specs = { }, "css-content-3": { - "title": "Generated Content Level 3", + "title": "CSS Generated Content Module Level 3", "links": { "tr": "css-content-3", "dev": "css-content-3" @@ -2201,7 +2201,7 @@ window.Specs = { }, "css-line-grid-1": { - "title": "Line Grid Level 1", + "title": "CSS Line Grid Module Level 1", "links": { "tr": "css-line-grid-1", "dev": "css-line-grid-1" @@ -2232,7 +2232,7 @@ window.Specs = { }, "css3-fonts": { - "title": "Fonts Level 3", + "title": "CSS Fonts Module Level 3", "links": { "tr": "css-fonts-3", "dev": "css-fonts" @@ -2357,7 +2357,7 @@ window.Specs = { }, "css4-fonts": { - "title": "Fonts Level 4", + "title": "CSS Fonts Module Level 4", "links": { "tr": "css-fonts-4", "dev": "css-fonts-4" @@ -2450,7 +2450,7 @@ window.Specs = { }, "css-writing-modes-3": { - "title": "Writing Modes Level 3", + "title": "CSS Writing Modes Level 3", "links": { "tr": "css-writing-modes-3", "dev": "css-writing-modes-3" @@ -2495,7 +2495,7 @@ window.Specs = { }, "css-writing-modes-4": { - "title": "Writing Modes Level 4", + "title": "CSS Writing Modes Level 4", "links": { "tr": "css-writing-modes-4", "dev": "css-writing-modes-4" @@ -2519,7 +2519,7 @@ window.Specs = { }, "css-color-3": { - "title": "Color Level 3", + "title": "CSS Color Module Level 3", "links": { "tr": "css-color-3", "dev": "css-color-3" @@ -2593,7 +2593,7 @@ window.Specs = { }, "css-color-4": { - "title": "Color Level 4", + "title": "CSS Color Module Level 4", "links": { "tr": "css-color-4", "dev": "css-color" @@ -2728,7 +2728,7 @@ window.Specs = { }, "css-color-adjust-1": { - "title": "Color Adjustment Level 1", + "title": "CSS Color Adjustment Module Level 1", "links": { "tr": "css-color-adjust-1", "dev": "css-color-adjust-1" @@ -2762,7 +2762,7 @@ window.Specs = { }, "css3-multicol": { - "title": "Multi-column Layout", + "title": "CSS Multi-column Layout Module Level 1", "links": { "tr": "css-multicol-1", "dev": "css-multicol" @@ -2835,7 +2835,7 @@ window.Specs = { }, "css-values-3": { - "title": "Values and Units Level 3", + "title": "CSS Values and Units Module Level 3", "links": { "tr": "css-values-3", "dev": "css-values-3" @@ -2933,7 +2933,7 @@ window.Specs = { }, "css-values-4": { - "title": "Values and Units Level 4", + "title": "CSS Values and Units Module Level 4", "links": { "tr": "css-values-4", "dev": "css-values-4" @@ -3000,7 +3000,7 @@ window.Specs = { }, "css-regions-1": { - "title": "Regions", + "title": "CSS Regions Module Level 1", "links": { "tr": "css-regions-1", "dev": "css-regions-1" @@ -3031,7 +3031,7 @@ window.Specs = { }, "css3-flexbox": { - "title": "Flexible Box Layout", + "title": "CSS Flexible Box Layout Module Level 1", "links": { "tr": "css-flexbox-1", "dev": "css-flexbox-1", @@ -3147,7 +3147,7 @@ window.Specs = { }, "css-grid-1": { - "title": "Grid Layout Level 1", + "title": "CSS Grid Layout Module Level 1", "links": { "tr": "css-grid-1", "dev": "css-grid", @@ -3320,7 +3320,7 @@ window.Specs = { }, "css-grid-2": { - "title": "Grid Layout Level 2", + "title": "CSS Grid Layout Module Level 2", "links": { "tr": "css-grid-2", "dev": "css-grid-2", @@ -3361,7 +3361,7 @@ window.Specs = { }, "css3-align": { - "title": "Box Alignment", + "title": "CSS Box Alignment Module Level 3", "links": { "tr": "css-align-3", "dev": "css-align" @@ -3448,7 +3448,7 @@ window.Specs = { }, "css-box-4": { - "title": "Box Model Level 4", + "title": "CSS Box Model Module Level 4", "links": { "tr": "css-box-4", "dev": "css-box-4" @@ -3465,7 +3465,7 @@ window.Specs = { }, "css-cascade-3": { - "title": "Cascading and Inheritance Level 3", + "title": "CSS Cascading and Inheritance Level 3", "links": { "tr": "css-cascade-3", "dev": "css-cascade-3" @@ -3497,7 +3497,7 @@ window.Specs = { }, "css-cascade-4": { - "title": "Cascading and Inheritance Level 4", + "title": "CSS Cascading and Inheritance Level 4", "links": { "tr": "css-cascade-4", "dev": "css-cascade" @@ -3529,7 +3529,7 @@ window.Specs = { }, "css-conditional-3": { - "title": "Conditional Rules Level 3", + "title": "CSS Conditional Rules Module Level 3", "links": { "tr": "css3-conditional", "dev": "css-conditional-3" @@ -3553,7 +3553,7 @@ window.Specs = { }, "css-conditional-4": { - "title": "Conditional Rules Level 4", + "title": "CSS Conditional Rules Module Level 4", "links": { "tr": "css-conditional-4", "dev": "css-conditional-4" @@ -3574,7 +3574,7 @@ window.Specs = { }, "css-masking": { - "title": "Masking", + "title": "CSS Masking Module Level 1", "links": { "tr": "css-masking-1", "dev": "css-masking-1", @@ -3735,7 +3735,7 @@ window.Specs = { }, "compositing": { - "title": "Compositing and Blending", + "title": "Compositing and Blending Level 1", "links": { "tr": "compositing-1", "dev": "compositing-1", @@ -3767,7 +3767,7 @@ window.Specs = { }, "css-display": { - "title": "Display", + "title": "CSS Display Module Level 3", "links": { "tr": "css-display-3", "dev": "css-display" @@ -3793,7 +3793,7 @@ window.Specs = { }, "css-shapes-1": { - "title": "Shapes Level 1", + "title": "CSS Shapes Module Level 1", "links": { "tr": "css-shapes-1", "dev": "css-shapes" @@ -3831,7 +3831,7 @@ window.Specs = { }, "css-shapes-2": { - "title": "Shapes Level 2", + "title": "CSS Shapes Module Level 2", "links": { "dev": "css-shapes-2" }, @@ -3856,7 +3856,7 @@ window.Specs = { }, "css3-exclusions": { - "title": "Exclusions", + "title": "CSS Exclusions Module Level 1", "links": { "tr": "css3-exclusions", "dev": "css-exclusions" @@ -3880,7 +3880,7 @@ window.Specs = { }, "filter-effects": { - "title": "Filter Effects Level 1", + "title": "Filter Effects Module Level 1", "links": { "tr": "filter-effects-1", "dev": "filter-effects-1", @@ -3941,7 +3941,7 @@ window.Specs = { }, "filters-2": { - "title": "Filter Effects Level 2", + "title": "Filter Effects Module Level 2", "links": { "dev": "filter-effects-2", "devtype": "fxtf" @@ -4015,7 +4015,7 @@ window.Specs = { }, "css3-break": { - "title": "Fragmentation", + "title": "CSS Fragmentation Module Level 3", "links": { "tr": "css-break-3", "dev": "css-break" @@ -4067,7 +4067,7 @@ window.Specs = { }, "css3-positioning": { - "title": "Positioned Layout", + "title": "CSS Positioned Layout Module Level 3", "links": { "tr": "css-position-3", "dev": "css-position" @@ -4108,7 +4108,7 @@ window.Specs = { }, "css-will-change": { - "title": "Will Change", + "title": "CSS Will Change Module Level 1", "links": { "tr": "css-will-change-1", "dev": "css-will-change" @@ -4142,7 +4142,7 @@ window.Specs = { }, "css-ruby-1": { - "title": "Ruby", + "title": "CSS Ruby Layout Module Level 1", "links": { "tr": "css-ruby-1", "dev": "css-ruby-1" @@ -4180,7 +4180,7 @@ window.Specs = { }, "css-scroll-snap": { - "title": "Scroll Snap", + "title": "CSS Scroll Snap Module Level 1", "links": { "tr": "css-scroll-snap-1", "dev": "css-scroll-snap-1" @@ -4368,7 +4368,7 @@ window.Specs = { }, "css-scroll-anchoring": { - "title": "Scroll Anchoring", + "title": "CSS Scroll Anchoring Module Level 1", "links": { "dev": "css-scroll-anchoring" }, @@ -4383,7 +4383,7 @@ window.Specs = { }, "css-logical-1": { - "title": "Logical Properties", + "title": "CSS Logical Properties and Values Level 1", "links": { "tr": "css-logical-1", "dev": "css-logical-1", @@ -4841,7 +4841,7 @@ window.Specs = { }, "css-lists": { - "title": "Lists Level 3", + "title": "CSS Lists Module Level 3", "links": { "tr": "css-lists-3", "dev": "css-lists-3" @@ -4927,7 +4927,7 @@ window.Specs = { }, "css-counter-styles": { - "title": "Counter Styles Level 3", + "title": "CSS Counter Styles Level 3", "links": { "tr": "css-counter-styles-3", "dev": "css-counter-styles-3" @@ -4944,7 +4944,7 @@ window.Specs = { }, "css-overflow-3": { - "title": "Overflow Level 3", + "title": "CSS Overflow Module Level 3", "links": { "tr": "css-overflow-3", "dev": "css-overflow-3" @@ -5004,7 +5004,7 @@ window.Specs = { }, "css-overflow-4": { - "title": "Overflow Level 4", + "title": "CSS Overflow Module Level 4", "links": { "tr": "css-overflow-4", "dev": "css-overflow-4" @@ -5027,7 +5027,7 @@ window.Specs = { }, "css-containment-1": { - "title": "Containment Level 1", + "title": "CSS Containment Module Level 1", "links": { "tr": "css-contain-1", "dev": "css-contain-1" @@ -5047,7 +5047,7 @@ window.Specs = { }, "css-containment-2": { - "title": "Containment Level 2", + "title": "CSS Containment Module Level 2", "links": { "tr": "css-contain-2", "dev": "css-contain-2" @@ -5074,7 +5074,7 @@ window.Specs = { }, "css-sizing-3": { - "title": "Intrinsic & Extrinsic Sizing Level 3", + "title": "CSS Box Sizing Module Level 3", "links": { "tr": "css-sizing-3", "dev": "css-sizing-3" @@ -5133,7 +5133,7 @@ window.Specs = { }, "css-sizing-4": { - "title": "Box Sizing Level 4", + "title": "CSS Box Sizing Module Level 4", "links": { "tr": "css-sizing-4", "dev": "css-sizing-4" @@ -5198,7 +5198,7 @@ window.Specs = { }, "overscroll-behavior": { - "title": "Overscroll Behavior", + "title": "CSS Overscroll Behavior Module Level 1", "links": { "dev": "css-overscroll-behavior" }, @@ -5237,7 +5237,7 @@ window.Specs = { }, "css-scrollbars-1": { - "title": "Scrollbars Level 1", + "title": "CSS Scrollbars Module Level 1", "links": { "tr": "css-scrollbars-1", "dev": "css-scrollbars" @@ -5261,7 +5261,7 @@ window.Specs = { }, "webvtt": { - "title": "WebVTT", + "title": "WebVTT: The Web Video Text Tracks Format", "links": { "tr": "webvtt1", "dev": "webvtt", @@ -5300,7 +5300,7 @@ window.Specs = { }, "css-paint-api-1": { - "title": "Painting API Level 1", + "title": "CSS Painting API Level 1", "links": { "tr": "css-paint-api-1", "dev": "css-paint-api-1", @@ -5327,7 +5327,7 @@ window.Specs = { }, "css-layout-api-1": { - "title": "Layout API Level 1", + "title": "CSS Layout API Level 1", "links": { "tr": "css-layout-api-1", "dev": "css-layout-api-1", @@ -5345,7 +5345,7 @@ window.Specs = { }, "css-shadow-parts": { - "title": "Shadow Parts", + "title": "CSS Shadow Parts", "links": { "tr": "css-shadow-parts-1", "dev": "css-shadow-parts" @@ -5362,7 +5362,7 @@ window.Specs = { }, "css-variables": { - "title": "Custom Properties for Cascading Variables", + "title": "CSS Custom Properties for Cascading Variables Module Level 1", "links": { "tr": "css-variables", "dev": "css-variables-1" @@ -5390,7 +5390,7 @@ window.Specs = { }, "fill-stroke": { - "title": "Fill and Stroke Level 3", + "title": "CSS Fill and Stroke Module Level 3", "links": { "tr": "fill-stroke-3", "dev": "fill-stroke", @@ -5932,7 +5932,7 @@ window.Specs = { }, "css-rhythmic": { - "title": "Rhythmic Sizing", + "title": "CSS Rhythmic Sizing", "links": { "tr": "css-rhythm-1", "dev": "css-rhythm" From 587c1b4e0ee403e5f51c2e9ae4f29c39672cebb7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Fri, 9 Oct 2020 15:08:26 +0200 Subject: [PATCH 296/668] Fix little returns in #199 --- style.css | 6 +++--- tests.js | 9 +++------ 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/style.css b/style.css index 868e442e..251db60e 100644 --- a/style.css +++ b/style.css @@ -59,18 +59,18 @@ h1, h2 { display: inline-block; height: 16px; width: 16px; - background: url("data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8'?%3E %3Csvg width='16' height='16' version='1.1' viewBox='0 0 4.2333 4.2333' xmlns='http://www.w3.org/2000/svg' xmlns:cc='http://creativecommons.org/ns%23' xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns%23'%3E %3Cpath d='m0.035363 0.61275h0.4124l0.54126 1.8375 0.34374-1.3614-0.15643-0.47615h0.44465l0.50434 1.8157 0.55325-1.8157 1.4424 0.010055 0.0057528 0.18633-0.56683 0.97156c0.16442 0.026204 0.62609 0.24816 0.61673 0.92355-0.0093492 0.6754-0.47494 0.96237-0.78322 0.95736-0.30827-0.0050015-0.58395-0.15432-0.74365-0.61556l0.29081-0.13409c0.17859 0.3634 0.24065 0.36155 0.44314 0.37218 0.20249 0.010631 0.3613-0.15592 0.35882-0.6854-0.0024723-0.52948-0.40786-0.52174-0.67275-0.49464l-0.01716-0.17759 0.53506-0.92525-0.62349 0.0071148-0.8335 2.6879s-0.58082-1.9604-0.58082-1.9106c0 0.049773-0.57178 1.9056-0.57178 1.9056z' fill='%23fefefe' fill-rule='evenodd'/%3E %3C/svg%3E") 0 0 / 16px 16px; + background: url("data:image/svg+xml, ") 0 0 / 16px 16px; vertical-align: -3px; margin-right: 3px; opacity: .5; } .mdn-link::before { - background-image: url("data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8'?%3E %3Csvg width='16' height='16' version='1.1' viewBox='0 0 4.2333 4.2333' xmlns='http://www.w3.org/2000/svg' xmlns:cc='http://creativecommons.org/ns%23' xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns%23'%3E %3Cpath d='m2.4076 0.6707c-0.51041-0.29724-1.0833-0.14856-1.4449 0.16704l-0.9605 0.9438 0.65147-0.016704-0.3675 0.42596 0.66817 0.016704-0.41761 0.44267 0.56795 0.0083521-0.15034 0.47607c0.41841 0.41283 0.90754 0.64883 1.4199 0.82686 0.1437-0.54959-0.046954-1.3818 0.45937-1.4366 0.33349-0.036107 0.55014 0.12707 0.7517 0.091874s0.25892-0.16704 0.25892-0.16704c0.20521 0.05062 0.25615-0.15587 0.33409-0.31738 0.017978-0.12377 0.0011606-0.21275-0.025056-0.29233 0.0085525-0.16476 0.02152-0.33151-0.22011-0.38909-0.16275-0.063531-0.30787-0.13398-0.51488-0.21226-0.11763-0.036416-0.22295-0.13562-0.28397-0.35914-0.036707-0.13446-0.14207-0.20802-0.29367-0.21808-0.089008-0.005906-0.28178 0.097323-0.43297 0.009278z' fill='%23fefefe' fill-rule='evenodd'/%3E %3C/svg%3E"); + background-image: url("data:image/svg+xml, "); } .whatwg-link::before { - background-image: url("data:image/svg+xml,%3C?xml version='1.0' encoding='UTF-8'?%3E %3Csvg xmlns:cc='http://creativecommons.org/ns%23' xmlns:dc='http://purl.org/dc/elements/1.1/' xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns%23' version='1.1' viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg'%3E %3Ccircle cx='50' cy='50' r='45' fill='none' stroke='%23fff' stroke-width='10'/%3E %3Cpath d='m38 38c0-12 24-15 23-2 0 9-16 13-16 23v7h10v-4c0-9 17-12 17-27-2-22-45-22-45 3zm7 32h10v10h-10' fill='%23fff'/%3E %3Cscript/%3E %3C/svg%3E"); + background-image: url("data:image/svg+xml, "); } dt > .spec-link { diff --git a/tests.js b/tests.js index 58b228d6..ed3e93a4 100644 --- a/tests.js +++ b/tests.js @@ -1000,8 +1000,7 @@ window.Specs = { }, "::slotted()": { "links": { - "dev": "#slotted-pseudo", - "mdn": "::slotted" + "dev": "#slotted-pseudo" }, "tests": ["::slotted(*)", "::slotted(.foo)"] } @@ -3999,15 +3998,13 @@ window.Specs = { "selectors": { "::backdrop": { "links": { - "dev": "#::backdrop-pseudo-element", - "mdn": "::backdrop" + "dev": "#::backdrop-pseudo-element" }, "tests": "::backdrop" }, ":fullscreen": { "links": { - "dev": "#:fullscreen-pseudo-class", - "mdn": ":fullscreen" + "dev": "#:fullscreen-pseudo-class" }, "tests": ":fullscreen" } From 85b4a2988c92f3262f1e1bf5ef6b21fd91d036a7 Mon Sep 17 00:00:00 2001 From: TrisTOON <36267812+TrisTOON@users.noreply.github.com> Date: Fri, 2 Oct 2020 00:39:52 +0200 Subject: [PATCH 297/668] Make shortnames of non-SVG specs match their `dev` link --- tests.js | 126 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 64 insertions(+), 62 deletions(-) diff --git a/tests.js b/tests.js index ed3e93a4..09dbea50 100644 --- a/tests.js +++ b/tests.js @@ -1,9 +1,9 @@ window.Specs = { - "css3-background": { + "css-background-3": { "title": "CSS Backgrounds and Borders Module Level 3", "links": { "tr": "css-backgrounds-3", - "dev": "css-backgrounds" + "dev": "css-backgrounds-3" }, "properties": { "background-repeat": { @@ -177,7 +177,7 @@ window.Specs = { } }, - "css3-images": { + "css-images-3": { "title": "CSS Images Module Level 3", "links": { "tr": "css3-images", @@ -388,7 +388,7 @@ window.Specs = { } }, - "css3-selectors": { + "selectors-3": { "title": "Selectors Level 3", "links": { "tr": "selectors-3", @@ -610,7 +610,7 @@ window.Specs = { } }, - "selectors": { + "selectors-4": { "title": "Selectors Level 4", "links": { "tr": "selectors-4", @@ -917,10 +917,10 @@ window.Specs = { } }, - "css-pseudo": { + "css-pseudo-4": { "title": "CSS Pseudo-Elements Module Level 4", "links": { - "tr": "css-pseudo", + "tr": "css-pseudo-4", "dev": "css-pseudo-4" }, "selectors": { @@ -969,11 +969,11 @@ window.Specs = { } }, - "css-scoping": { + "css-scoping-1": { "title": "CSS Scoping Module Level 1", "links": { - "tr": "css-scoping", - "dev": "css-scoping" + "tr": "css-scoping-1", + "dev": "css-scoping-1" }, "selectors": { ":host": { @@ -1010,7 +1010,7 @@ window.Specs = { /* * Note: the following media queries must be true in supporting UAs! */ - "css3-mediaqueries": { + "mediaqueries-3": { "title": "Media Queries Level 3", "links": { "tr": "css3-mediaqueries", @@ -1319,7 +1319,7 @@ window.Specs = { } }, - "css3-ui": { + "css-ui-3": { "title": "CSS Basic User Interface Module Level 3 (CSS3 UI)", "links": { "tr": "css-ui-3", @@ -1455,7 +1455,7 @@ window.Specs = { } }, - "css3-transitions": { + "css-transitions-1": { "title": "CSS Transitions", "links": { "tr": "css-transitions-1", @@ -1522,11 +1522,11 @@ window.Specs = { } }, - "css3-animations": { + "css-animations-1": { "title": "CSS Animations Level 1", "links": { "tr": "css-animations-1", - "dev": "css-animations" + "dev": "css-animations-1" }, "properties": { "animation-name": { @@ -1713,7 +1713,7 @@ window.Specs = { } }, - "css-motion-1": { + "motion-1": { "title": "Motion Path Module Level 1", "links": { "tr": "motion-1", @@ -2230,11 +2230,11 @@ window.Specs = { } }, - "css3-fonts": { + "css-fonts-3": { "title": "CSS Fonts Module Level 3", "links": { "tr": "css-fonts-3", - "dev": "css-fonts" + "dev": "css-fonts-3" }, "properties": { "font-stretch": { @@ -2355,7 +2355,7 @@ window.Specs = { } }, - "css4-fonts": { + "css-fonts-4": { "title": "CSS Fonts Module Level 4", "links": { "tr": "css-fonts-4", @@ -2595,7 +2595,7 @@ window.Specs = { "title": "CSS Color Module Level 4", "links": { "tr": "css-color-4", - "dev": "css-color" + "dev": "css-color-4" }, "values": { "properties": [ @@ -2760,11 +2760,11 @@ window.Specs = { } }, - "css3-multicol": { + "css-multicol-1": { "title": "CSS Multi-column Layout Module Level 1", "links": { "tr": "css-multicol-1", - "dev": "css-multicol" + "dev": "css-multicol-1" }, "properties": { "column-width": { @@ -3029,7 +3029,7 @@ window.Specs = { } }, - "css3-flexbox": { + "css-flexbox-1": { "title": "CSS Flexible Box Layout Module Level 1", "links": { "tr": "css-flexbox-1", @@ -3149,7 +3149,7 @@ window.Specs = { "title": "CSS Grid Layout Module Level 1", "links": { "tr": "css-grid-1", - "dev": "css-grid", + "dev": "css-grid-1", "mdn": "Glossary/Grid" }, "properties": { @@ -3359,11 +3359,11 @@ window.Specs = { } }, - "css3-align": { + "css-align-3": { "title": "CSS Box Alignment Module Level 3", "links": { "tr": "css-align-3", - "dev": "css-align" + "dev": "css-align-3" }, "properties": { "align-self": { @@ -3499,7 +3499,7 @@ window.Specs = { "title": "CSS Cascading and Inheritance Level 4", "links": { "tr": "css-cascade-4", - "dev": "css-cascade" + "dev": "css-cascade-4" }, "values": { "properties": [ @@ -3572,7 +3572,7 @@ window.Specs = { } }, - "css-masking": { + "css-masking-1": { "title": "CSS Masking Module Level 1", "links": { "tr": "css-masking-1", @@ -3733,7 +3733,7 @@ window.Specs = { } }, - "compositing": { + "compositing-1": { "title": "Compositing and Blending Level 1", "links": { "tr": "compositing-1", @@ -3765,11 +3765,11 @@ window.Specs = { } }, - "css-display": { + "css-display-3": { "title": "CSS Display Module Level 3", "links": { "tr": "css-display-3", - "dev": "css-display" + "dev": "css-display-3" }, "properties": { "display": { @@ -3795,7 +3795,7 @@ window.Specs = { "title": "CSS Shapes Module Level 1", "links": { "tr": "css-shapes-1", - "dev": "css-shapes" + "dev": "css-shapes-1" }, "properties": { "shape-outside": { @@ -3854,11 +3854,11 @@ window.Specs = { } }, - "css3-exclusions": { + "css-exclusions-1": { "title": "CSS Exclusions Module Level 1", "links": { "tr": "css3-exclusions", - "dev": "css-exclusions" + "dev": "css-exclusions-1" }, "properties": { "wrap-flow": { @@ -3878,7 +3878,7 @@ window.Specs = { } }, - "filter-effects": { + "filter-effects-1": { "title": "Filter Effects Module Level 1", "links": { "tr": "filter-effects-1", @@ -3974,7 +3974,7 @@ window.Specs = { "pointerevents": { "title": "Pointer Events", "links": { - "tr": "pointerevents2", + "tr": "pointerevents", "dev": "pointerevents", "devtype": "github" }, @@ -4011,11 +4011,11 @@ window.Specs = { } }, - "css3-break": { + "css-break-3": { "title": "CSS Fragmentation Module Level 3", "links": { "tr": "css-break-3", - "dev": "css-break" + "dev": "css-break-3" }, "properties": { "break-before": { @@ -4063,11 +4063,11 @@ window.Specs = { } }, - "css3-positioning": { + "css-position-3": { "title": "CSS Positioned Layout Module Level 3", "links": { "tr": "css-position-3", - "dev": "css-position" + "dev": "css-position-3" }, "properties": { "position": { @@ -4104,11 +4104,11 @@ window.Specs = { } }, - "css-will-change": { + "css-will-change-1": { "title": "CSS Will Change Module Level 1", "links": { "tr": "css-will-change-1", - "dev": "css-will-change" + "dev": "css-will-change-1" }, "properties": { "will-change": { @@ -4121,11 +4121,11 @@ window.Specs = { } }, - "cssom-view": { + "cssom-view-1": { "title": "CSSOM View Module", "links": { "tr": "cssom-view-1", - "dev": "cssom-view" + "dev": "cssom-view-1" }, "properties": { "scroll-behavior": { @@ -4176,7 +4176,7 @@ window.Specs = { } }, - "css-scroll-snap": { + "css-scroll-snap-1": { "title": "CSS Scroll Snap Module Level 1", "links": { "tr": "css-scroll-snap-1", @@ -4364,10 +4364,11 @@ window.Specs = { } }, - "css-scroll-anchoring": { + "css-scroll-anchoring-1": { "title": "CSS Scroll Anchoring Module Level 1", "links": { - "dev": "css-scroll-anchoring" + "tr": "css-scroll-anchoring-1", + "dev": "css-scroll-anchoring-1" }, "properties": { "overflow-anchor": { @@ -4383,7 +4384,7 @@ window.Specs = { "title": "CSS Logical Properties and Values Level 1", "links": { "tr": "css-logical-1", - "dev": "css-logical-1", + "dev": "css-logical-1" }, "properties": { "caption-side": { @@ -4837,7 +4838,7 @@ window.Specs = { } }, - "css-lists": { + "css-lists-3": { "title": "CSS Lists Module Level 3", "links": { "tr": "css-lists-3", @@ -4923,7 +4924,7 @@ window.Specs = { } }, - "css-counter-styles": { + "css-counter-styles-3": { "title": "CSS Counter Styles Level 3", "links": { "tr": "css-counter-styles-3", @@ -5194,10 +5195,11 @@ window.Specs = { } }, - "overscroll-behavior": { + "css-overscroll-1": { "title": "CSS Overscroll Behavior Module Level 1", "links": { - "dev": "css-overscroll-behavior" + "tr": "css-overscroll-1", + "dev": "css-overscroll-1" }, "properties": { "overscroll-behavior": { @@ -5237,7 +5239,7 @@ window.Specs = { "title": "CSS Scrollbars Module Level 1", "links": { "tr": "css-scrollbars-1", - "dev": "css-scrollbars" + "dev": "css-scrollbars-1" }, "properties": { "scrollbar-color": { @@ -5260,7 +5262,7 @@ window.Specs = { "webvtt": { "title": "WebVTT: The Web Video Text Tracks Format", "links": { - "tr": "webvtt1", + "tr": "webvtt", "dev": "webvtt", "devtype": "github" }, @@ -5341,11 +5343,11 @@ window.Specs = { } }, - "css-shadow-parts": { + "css-shadow-parts-1": { "title": "CSS Shadow Parts", "links": { "tr": "css-shadow-parts-1", - "dev": "css-shadow-parts" + "dev": "css-shadow-parts-1" }, "selectors": { "::part()": { @@ -5358,10 +5360,10 @@ window.Specs = { } }, - "css-variables": { + "css-variables-1": { "title": "CSS Custom Properties for Cascading Variables Module Level 1", "links": { - "tr": "css-variables", + "tr": "css-variables-1", "dev": "css-variables-1" }, "declaration": { @@ -5386,11 +5388,11 @@ window.Specs = { } }, - "fill-stroke": { + "fill-stroke-3": { "title": "CSS Fill and Stroke Module Level 3", "links": { "tr": "fill-stroke-3", - "dev": "fill-stroke", + "dev": "fill-stroke-3", "devtype": "fxtf" }, "properties": { @@ -5928,11 +5930,11 @@ window.Specs = { } }, - "css-rhythmic": { + "css-rhythmic-1": { "title": "CSS Rhythmic Sizing", "links": { "tr": "css-rhythm-1", - "dev": "css-rhythm" + "dev": "css-rhythm-1" }, "properties": { "line-height-step": { From afbaf117321858009a4df5b12c207ff930a37f31 Mon Sep 17 00:00:00 2001 From: TrisTOON <36267812+TrisTOON@users.noreply.github.com> Date: Thu, 8 Oct 2020 17:05:32 +0200 Subject: [PATCH 298/668] Add missing "TR" links for rules and properties --- tests.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tests.js b/tests.js index 09dbea50..eb6581c9 100644 --- a/tests.js +++ b/tests.js @@ -1248,36 +1248,42 @@ window.Specs = { "Media queries": { "prefers-reduced-motion": { "links": { + "tr": "#prefers-reduced-motion", "dev": "#prefers-reduced-motion" }, "tests": ["(prefers-reduced-motion: no-preference)", "(prefers-reduced-motion: reduce)"] }, "prefers-reduced-transparency": { "links": { + "tr": "#prefers-reduced-transparency", "dev": "#prefers-reduced-transparency" }, "tests": ["(prefers-reduced-transparency: no-preference)", "(prefers-reduced-transparency: reduce)"] }, "prefers-contrast": { "links": { + "tr": "#prefers-contrast", "dev": "#prefers-contrast" }, "tests": ["(prefers-contrast: no-preference)", "(prefers-contrast: high)", "(prefers-contrast: low)", "(prefers-contrast: forced)"] }, "prefers-color-scheme": { "links": { + "tr": "#prefers-color-scheme", "dev": "#prefers-color-scheme" }, "tests": ["(prefers-color-scheme: light)", "(prefers-color-scheme: dark)"] }, "scripting": { "links": { + "tr": "#scripting", "dev": "#scripting" }, "tests": ["(scripting: none)", "(scripting: initial-only)", "(scripting: enabled)"] }, "environment-blending": { "links": { + "tr": "#environment-blending", "dev": "#environment-blending" }, "tests": ["(environment-blending: opaque)", "(environment-blending: additive)", "(environment-blending: subtractive)"] @@ -1298,6 +1304,7 @@ window.Specs = { }, "inverted-colors": { "links": { + "tr": "#inverted", "dev": "#inverted" }, "tests": ["(inverted-colors: none)", "(light-level: inverted)"] @@ -5139,6 +5146,7 @@ window.Specs = { "properties": { "aspect-ratio": { "links": { + "tr": "#aspect-ratio", "dev": "#aspect-ratio" }, "tests": ["auto", "2", "16 / 9", "auto 16 / 9"] From 75f2bd42cfbe3e0b2c573380781ec86ea58ec856 Mon Sep 17 00:00:00 2001 From: TrisTOON <36267812+TrisTOON@users.noreply.github.com> Date: Fri, 9 Oct 2020 16:25:11 +0200 Subject: [PATCH 299/668] Link to the level 1 of the published spec of Pointer Events --- tests.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests.js b/tests.js index eb6581c9..8ff0fb81 100644 --- a/tests.js +++ b/tests.js @@ -3981,7 +3981,7 @@ window.Specs = { "pointerevents": { "title": "Pointer Events", "links": { - "tr": "pointerevents", + "tr": "pointerevents1", "dev": "pointerevents", "devtype": "github" }, From e1283fac66cfcc95d334c87474f3a80c5f2b1e40 Mon Sep 17 00:00:00 2001 From: TrisTOON <36267812+TrisTOON@users.noreply.github.com> Date: Fri, 9 Oct 2020 16:44:26 +0200 Subject: [PATCH 300/668] Revert the link change for WebVTT --- tests.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests.js b/tests.js index 8ff0fb81..2d00d9b0 100644 --- a/tests.js +++ b/tests.js @@ -5270,7 +5270,7 @@ window.Specs = { "webvtt": { "title": "WebVTT: The Web Video Text Tracks Format", "links": { - "tr": "webvtt", + "tr": "webvtt1", "dev": "webvtt", "devtype": "github" }, From 50046054fece4c23c7b21a57b29c9fe68d69d5f7 Mon Sep 17 00:00:00 2001 From: Tristan LE GODAIS <36267812+TrisTOON@users.noreply.github.com> Date: Sat, 10 Oct 2020 16:38:22 +0200 Subject: [PATCH 301/668] Improve keyboard accessibility (#206) --- csstest.js | 58 +++++++++++++----------------- style.css | 102 ++++++++++++++++++++++++++++++----------------------- 2 files changed, 82 insertions(+), 78 deletions(-) diff --git a/csstest.js b/csstest.js index d6479288..9bd3a480 100644 --- a/csstest.js +++ b/csstest.js @@ -183,8 +183,7 @@ Test.prototype = { inside: this.section }); - var dl = document.createElement('dl'); - var dtContents = [ + var summaryContents = [ document.createTextNode(feature), null // for prefix ]; @@ -192,7 +191,7 @@ Test.prototype = { var links = theseTests[feature].links; if (links) { if (links.tr) { - dtContents.push($.create({ + summaryContents.push($.create({ tag: 'a', properties: { href: 'https://www.w3.org/TR/' + this.tests.links.tr + links.tr, @@ -204,7 +203,7 @@ Test.prototype = { } if (links.dev) { - dtContents.push($.create({ + summaryContents.push($.create({ tag: 'a', properties: { href: devLinkFormat(this.tests.links) + links.dev, @@ -232,7 +231,7 @@ Test.prototype = { ? feature.replace('()', '') : links.mdn; - dtContents.push($.create({ + summaryContents.push($.create({ tag: 'a', properties: { href: mdnLink, @@ -263,41 +262,44 @@ Test.prototype = { passed += +success; - testsResults.push({ - tag: 'dd', + testsResults.push($.create({ + tag: 'li', innerHTML: test + (prefix ? '' + prefix + '' : '') + (note ? '' + note + '' : ''), className: passclass({ passed: Math.round(success * 10000), total: 10000 }), - inside: dl - }); + })); } if (propertyPrefix) { - dtContents[1] = $.create({ + summaryContents[1] = $.create({ tag: 'span', className: 'prefix', textContent: propertyPrefix }); } - var dt = $.create({ - tag: 'dt', - tabIndex: '0', - contents: dtContents, - inside: dl + var detailsContents = [ + $.create({ + tag: 'summary', + className: passclass({ passed: passed, total: tests.length }), + contents: summaryContents, + }), + $.create({ + tag: 'ul', + contents: testsResults, + }) + ]; + + var details = $.create({ + tag: 'details', + contents: detailsContents }); - for (var j = 0; j < testsResults.length; j++) { - $.create(testsResults[j]); - } + thisSection.appendChild(details); this.score.update({ passed: passed, total: tests.length }); - dt.className = passclass({ passed: passed, total: tests.length }); - - thisSection.appendChild(dl); - // Add to browserscope _bTestResults[this.id + ' / ' + feature.replace(/[,=]/g, '')] = Math.round(100 * passed / tests.length); } @@ -385,18 +387,6 @@ function passclass(info) { return classes[index]; } -document.onclick = function (evt) { - var target = evt.target; - - if (/^dt$/i.test(target.nodeName)) { - evt.stopPropagation(); - - var dl = target.parentNode; - - dl.className = dl.className === 'open' ? '' : 'open'; - } -} - Array.prototype.and = function (arr2, separator) { separator = separator || ' '; diff --git a/style.css b/style.css index 251db60e..a5863cbd 100644 --- a/style.css +++ b/style.css @@ -1,3 +1,8 @@ +:focus { + outline: .1em dotted #f06; + outline-offset: .1em; +} + body { max-width: 60em; padding: 1em; @@ -48,7 +53,9 @@ h1, h2 { text-shadow: 0 .1em .1em black; } - .spec-link:hover { + .spec-link:hover, + .spec-link:focus { + outline: none; background: #f06; } @@ -68,21 +75,22 @@ h1, h2 { .mdn-link::before { background-image: url("data:image/svg+xml, "); } - + .whatwg-link::before { background-image: url("data:image/svg+xml, "); } - - dt > .spec-link { + + details summary > .spec-link { display: none; vertical-align: inherit; } - dt:hover > .spec-link { + details summary:hover > .spec-link, + details summary:focus-within > .spec-link { display: inline-block; } - dt > .spec-link::before { + details summary > .spec-link::before { height: 18px; width: 18px; background-size: 18px 18px; @@ -115,14 +123,18 @@ body > h1 { transform-origin: top left; } -#mark img { +#mark { position: fixed; left: 10px; top: 230px; + z-index: 2; +} + +#mark img { + display: block; width: 50px; border-radius: 50%; box-shadow: 2px 2px 10px rgba(0,0,0,.5); - z-index: 2; -webkit-transform: rotate(-15deg); -moz-transform: rotate(-15deg); @@ -156,16 +168,12 @@ body > h1 { font-size: 80%; } -dl { +details { margin: .3em 0; font: 100% Monaco, Consolas, monospace; } - dl dl { - margin:0; - } - -dt, dd[class] { +details summary, details li[class] { padding: .5em; background: gray; color: white; @@ -174,60 +182,75 @@ dt, dd[class] { position: relative; } -dt { +details summary { + list-style: none; cursor: pointer; } -dd { - margin: .3em 0 .3em 2em; - font-size: 90%; +details summary::-webkit-details-marker { + display: none; } - dd dd { - border: 1px solid white; - } +details ul { + margin: 0; + padding: 0 0 0 2em; +} + +details li[class] { + list-style: none; + margin: .3em 0; + font-size: 90%; + white-space: pre; +} - dd small { + details li[class] small { display: block; opacity: .8; } -dl .pass, +details summary.pass, +details li.pass, #specsTested li.pass:before { background-color: #490; } -dl .almost-pass, +details summary.almost-pass, +details li.almost-pass, #specsTested li.almost-pass:before { background-color: #8c0; } -dl .slightly-buggy, +details summary.slightly-buggy, +details li.slightly-buggy, #specsTested li.slightly-buggy:before { background-color: #bb0; } -dl .buggy, +details summary.buggy, +details li.buggy, #specsTested li.buggy:before { background-color: #e80; } -dl .very-buggy, +details summary.very-buggy, +details li.very-buggy, #specsTested li.very-buggy:before { background-color: #e40; } -dl .fail, +details summary.fail, +details li.fail, #specsTested li.fail:before { background-color: #e20; } -dl .epic-fail, +details summary.epic-fail, +details li.epic-fail, #specsTested li.epic-fail:before { background-color: #b00; } -dt:before { +details summary:before { content: '▶'; display: inline-block; margin-right: .5em; @@ -235,19 +258,10 @@ dt:before { opacity: .5; } -dl.open > dt:before { +details[open] summary:before { content: '▼'; } -dl > dd { - display: none; -} - -dl.open > dd { - display: block; - white-space: pre; -} - .prefix { display: inline-block; padding: .3em .4em; @@ -263,16 +277,16 @@ dl.open > dd { /* Emoticons */ -dt:after, -dd[class]:after, +details summary:after, +details li[class]:after, #specsTested li:after { opacity: 0.75; position: absolute; top: 0; } -dt:after, -dd[class]:after { +details summary:after, +details li[class]:after { letter-spacing: -2px; line-height: 35px; right: 10px; From 072abf039c029651a05f2d332e2e86d24465121e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Fri, 23 Oct 2020 22:29:26 +0200 Subject: [PATCH 302/668] Add Grid Layout Level 3 --- tests.js | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/tests.js b/tests.js index 2d00d9b0..61b56cff 100644 --- a/tests.js +++ b/tests.js @@ -3366,6 +3366,60 @@ window.Specs = { } }, + "css-grid-3": { + "title": "CSS Grid Layout Module Level 3", + "links": { + "dev": "css-grid-3", + }, + "properties": { + "grid-template-columns": { + "links": { + "dev": "#masonry-layout" + }, + "tests": ["masonry"] + }, + "grid-template-rows": { + "links": { + "dev": "#masonry-layout" + }, + "tests": ["masonry "] + }, + "masonry-auto-flow": { + "links": { + "dev": "#masonry-auto-flow" + }, + "tests": [ + "pack", "next", "definite-first", "ordered", + "pack definite-first", "pack ordered", "next definite-first", "next ordered", + "ordered pack", + ] + }, + "align-tracks": { + "links": { + "dev": "#tracks-alignment" + }, + "tests": [ + "normal", + "baseline", "first baseline", "last baseline", + "space-between", "space-around", "space-evenly", "stretch", + "center", "start", "end", "flex-start", "flex-end", + "unsafe center", "safe start" + ] + }, + "justify-tracks": { + "links": { + "dev": "#tracks-alignment" + }, + "tests": [ + "normal", + "space-between", "space-around", "space-evenly", "stretch", + "center", "start", "end", "flex-start", "flex-end", "left", "right", + "unsafe center", "safe start" + ] + } + } + }, + "css-align-3": { "title": "CSS Box Alignment Module Level 3", "links": { From 52924d8a7617f8ea05ec3ee65cf7b00c818d0183 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Sun, 25 Oct 2020 17:17:33 +0100 Subject: [PATCH 303/668] Add MathML Core --- csstest.js | 6 +++++- tests.js | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 59 insertions(+), 1 deletion(-) diff --git a/csstest.js b/csstest.js index 9bd3a480..730c9447 100644 --- a/csstest.js +++ b/csstest.js @@ -50,6 +50,9 @@ var devLinkFormat = function (params) { case "whatwg": // WHATWG return 'https://' + params.dev + '.spec.whatwg.org/'; + case "math": + // The MathML Refresh Community Group + return 'https://mathml-refresh.github.io/' + params.dev; default: // CSS Working Group Editor Drafts return 'https://drafts.csswg.org/' + params.dev; @@ -65,6 +68,7 @@ var devLinkLogo = function (params) { case "houdini": case "fxtf": case "github": + case "math": default: return 'w3c'; } @@ -206,7 +210,7 @@ Test.prototype = { summaryContents.push($.create({ tag: 'a', properties: { - href: devLinkFormat(this.tests.links) + links.dev, + href: devLinkFormat(this.tests.links).replace(/#.*/, '') + links.dev, target: '_blank', textContent: 'DEV', className: 'spec-link ' + devLinkLogo(this.tests.links) + '-link' diff --git a/tests.js b/tests.js index 61b56cff..20bc4e60 100644 --- a/tests.js +++ b/tests.js @@ -6050,5 +6050,59 @@ window.Specs = { ] } } + }, + + "mathml-core": { + "title": "MathML Core", + "links": { + "dev": "mathml-core/#css-extensions-for-math-layout", + "devtype": "math" + }, + "properties": { + "display": { + "links": { + "dev": "new-display-math-value" + }, + "tests": [ + "math", "block math", "inline math" + ] + }, + "text-transform": { + "links": { + "dev": "#new-text-transform-values" + }, + "tests": [ + "math-auto", "math-bold", "math-italic", "math-bold-italic", "math-double-struck", "math-bold-fraktur", + "math-script", "math-bold-script", "math-fraktur", "math-sans-serif", "math-bold-sans-serif", + "math-sans-serif-italic", "math-sans-serif-bold-italic", "math-monospace", "math-initial", + "math-tailed", "math-looped", "math-stretched" + ] + }, + "font-size": { + "links": { + "dev": "#the-math-script-level-property" + }, + "tests": ["math"] + }, + "math-style": { + "links": { + "dev": "#the-math-style-property" + }, + "tests": ["normal", "compact"] + }, + "math-shift": { + "links": { + "dev": "#the-math-shift" + }, + "tests": ["normal", "compact"] + }, + "math-depth": { + "links": { + "dev": "#the-math-script-level-property" + }, + "tests": ["auto-add", "add(0)", "add(1)", "0", "1"] + } + } } + }; From 46ef2b75b737379f977b33bf108fb03247fffb85 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Sun, 1 Nov 2020 18:21:15 +0100 Subject: [PATCH 304/668] Update test for text-underline-offset --- tests.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests.js b/tests.js index 20bc4e60..1c9395f3 100644 --- a/tests.js +++ b/tests.js @@ -2167,7 +2167,7 @@ window.Specs = { "tr": "#underline-offset", "dev": "#underline-offset" }, - "tests": ["auto", "from-font", "3px", "10%"] + "tests": ["auto", "3px", "10%"] }, "text-decoration-thickness": { "links": { From 287e1becb750e37cb67755fb12324dbe8ccff9e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Wed, 25 Nov 2020 18:50:23 +0100 Subject: [PATCH 305/668] Add Color Level 5 --- tests.js | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/tests.js b/tests.js index 1c9395f3..8154f426 100644 --- a/tests.js +++ b/tests.js @@ -2733,6 +2733,72 @@ window.Specs = { } }, + "css-color-5": { + "title": "CSS Color Module Level 5", + "links": { + "dev": "css-color-5" + }, + "values": { + "properties": [ + "color", + "background-color", + "border-color", + "text-decoration-color", + "column-rule-color" + ], + "color-mix()": { + "links": { + "dev": "#color-mix", + "mdn": "color_value" + }, + "tests": [ + "color-mix(peru 40%, lightgoldenrod)", + "color-mix(teal 65%, olive)", + "color-mix(rgb(0% 42.35% 33.33%) lightness 40%, rgb(41.2% 69.88% 96.64%))", + "color-mix(lch(52% 58.1 22.7) hue 75.23%, lch(56% 49.1 257.1))", + "color-mix(lch(52% 58.1 22.7) hue longer 75.23%, lch(56% 49.1 257.1) )", + "color-mix(rgb(82.02% 30.21% 35.02%) hue 75.23% lightness 68.4%, rgb(5.64% 55.94% 85.31%) )", + "color-mix(xyz rgb(82.02% 30.21% 35.02%) 75.23%, rgb(5.64% 55.94% 85.31%))", + "color-mix(red lightness 30%, yellow )", + "color-mix(lab rgb(82.02% 30.21% 35.02%) a 38% b 38%, rgb(5.64% 55.94% 85.31%))" + ] + }, + "color-contrast()": { + "links": { + "dev": "#colorcontrast", + "mdn": "color_value" + }, + "tests": [ + "color-contrast(wheat vs tan, sienna, #b22222, #d2691e)", + "color-contrast(hsl(200 50% 80%) vs hsl(200 83% 23%), purple, hsl(300 100% 25%))" + ] + }, + "color-adjust()": { + "links": { + + "dev": "#coloradjust", + "mdn": "color_value" + }, + "tests": [ + "color-adjust(peru lightness -20%)" + ] + }, + + "relative color": { + "links": { + "dev": "#relative-colors", + "mdn": "color_value" + }, + "tests": [ + "rgb(from indianred 255 g b)", + "hsl(from lightseagreen calc(h+180) s l)", + "lab(from orchid l 0 0)", + "lch(from peru calc(l * 0.8) c h)" + ] + } + } + }, + "css-color-adjust-1": { "title": "CSS Color Adjustment Module Level 1", "links": { From b9cab5b6d5637ef3daf3c8b7ebaba42ccb174c67 Mon Sep 17 00:00:00 2001 From: TrisTOON <36267812+TrisTOON@users.noreply.github.com> Date: Thu, 17 Dec 2020 21:20:06 +0100 Subject: [PATCH 306/668] Update MDN links to CSS functions In mdn/sprints#3848, MDN moved several articles about CSS functional notations, except selectors, to enforce parentheses at the end of the slug. This change avoids triggering the URL directions that were introduced. --- csstest.js | 6 ++++-- tests.js | 19 ++++++++----------- 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/csstest.js b/csstest.js index 730c9447..a3b54445 100644 --- a/csstest.js +++ b/csstest.js @@ -231,9 +231,11 @@ Test.prototype = { } break; } - mdnLink += !links.mdn + mdnLink += links.mdn + ? links.mdn + : feature.startsWith(':') ? feature.replace('()', '') - : links.mdn; + : feature; summaryContents.push($.create({ tag: 'a', diff --git a/tests.js b/tests.js index 8154f426..1ce0fe72 100644 --- a/tests.js +++ b/tests.js @@ -336,8 +336,7 @@ window.Specs = { "image()": { "links": { "tr": "#image-notation", - "dev": "#image-notation", - "mdn": "imagefunction" + "dev": "#image-notation" }, "tests": [ "image('sprites.png#xywh=10,30,60,20')", @@ -825,11 +824,10 @@ window.Specs = { }, "tests": [":defined"] }, - ":nth-child of": { + ":nth-child()": { "links": { "tr": "#the-nth-child-pseudo", - "dev": "#the-nth-child-pseudo", - "mdn": ":nth-child" + "dev": "#the-nth-child-pseudo" }, "tests": [":nth-child(-n+3 of li.important)", ":nth-child(even of :not([hidden])"] }, @@ -994,7 +992,8 @@ window.Specs = { ":host-context()": { "links": { "tr": "#host-selector", - "dev": "#host-selector" + "dev": "#host-selector", + "mdn": ":host-context()" }, "tests": [":host-context(*)", ":host-context(.foo)"] }, @@ -3027,7 +3026,7 @@ window.Specs = { "tr": "#calc-notation", "dev": "#comp-func" }, - "tests": ["max(10 * (1vw + 1vh) / 2, 12px)"] + "tests": ["min(10 * (1vw + 1vh) / 2, 12px)"] }, "max()": { "links": { @@ -3058,7 +3057,6 @@ window.Specs = { ], "env()": { "links": { - "tr": "#env-function", "dev": "#env-function" }, "tests": [ @@ -3685,7 +3683,7 @@ window.Specs = { "dev": "css-conditional-4" }, "@rules": { - "@supports selector()": { + "@supports": { "links": { "tr": "#at-supports-ext", "dev": "#at-supports-ext" @@ -4075,8 +4073,7 @@ window.Specs = { "properties": { "backdrop-filter": { "links": { - "dev": "#BackdropFilterProperty", - "mdn": "backdrop-filter" + "dev": "#BackdropFilterProperty" }, "tests": [ "none", From 0a9a6b7fd25183ecd32c1b511878aa5f25b7aa25 Mon Sep 17 00:00:00 2001 From: TrisTOON <36267812+TrisTOON@users.noreply.github.com> Date: Thu, 17 Dec 2020 23:37:48 +0100 Subject: [PATCH 307/668] Add tests for `touch-action` The values `pan-left`, `pan-right`, `pan-up` and `pan-down` are defined in Pointer Events Level 3. The value `pinch-zoom` is defined in the Compatibility Standard and will be soon in all major browsers. --- tests.js | 40 +++++++++++++++++++++++++++++++++++----- 1 file changed, 35 insertions(+), 5 deletions(-) diff --git a/tests.js b/tests.js index 1ce0fe72..1c32efe0 100644 --- a/tests.js +++ b/tests.js @@ -4095,20 +4095,50 @@ window.Specs = { } }, - "pointerevents": { - "title": "Pointer Events", + "pointerevents1": { + "title": "Pointer Events Level 1", "links": { - "tr": "pointerevents1", + "tr": "pointerevents1" + }, + "properties": { + "touch-action": { + "links": { + "tr": "#the-touch-action-css-property" + }, + "tests": ["auto", "none", "pan-x", "pan-y", "pan-x pan-y", "manipulation"] + } + } + }, + + "pointerevents3": { + "title": "Pointer Events Level 3", + "links": { + "tr": "pointerevents3", "dev": "pointerevents", "devtype": "github" }, "properties": { "touch-action": { "links": { - "tr": "#the-touch-action-css-property", "dev": "#the-touch-action-css-property" }, - "tests": ["auto", "none", "pan-x", "pan-y", "pan-x pan-y", "manipulation"] + "tests": ["pan-left", "pan-right", "pan-up", "pan-down", "pan-left pan-up"] + } + } + }, + + "compat": { + "title": "Compatibility", + "links": { + "dev": "compat", + "devtype": "whatwg" + }, + "properties": { + "touch-action": { + "links": { + "dev": "#touch-action" + }, + "tests": ["pinch-zoom", "pan-x pinch-zoom", "pan-y pinch-zoom", "pan-x pan-y pinch-zoom"] } } }, From 34310c0f52e7d46ad970907cf9585cea8c3461d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Sat, 20 Feb 2021 21:20:17 +0100 Subject: [PATCH 308/668] Add autofill (HTML) selector --- tests.js | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/tests.js b/tests.js index 1c32efe0..fa5e6cdb 100644 --- a/tests.js +++ b/tests.js @@ -4127,6 +4127,22 @@ window.Specs = { } }, + "html": { + "title": "HTML Living Standard", + "links": { + "dev": "html", + "devtype": "whatwg" + }, + "selectors": { + ":autofill": { + "links": { + "dev": "#selector-autofill" + }, + "tests": ":autofill" + } + } + }, + "compat": { "title": "Compatibility", "links": { From 21a811dbb095db9f8f06537d249ef30fa886dda3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Sat, 27 Feb 2021 21:57:08 +0100 Subject: [PATCH 309/668] Fix test margin-trim --- tests.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests.js b/tests.js index fa5e6cdb..ab6c0e51 100644 --- a/tests.js +++ b/tests.js @@ -3578,7 +3578,7 @@ window.Specs = { "dev": "css-box-4" }, "properties": { - "align-self": { + "margin-trim": { "links": { "tr": "#margin-trim", "dev": "#margin-trim" From 80dccee2a7c515f7d55d746d245b6ce235cdca7e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Sat, 27 Feb 2021 22:09:32 +0100 Subject: [PATCH 310/668] Update Box Sizing Level 4 --- tests.js | 72 +++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 71 insertions(+), 1 deletion(-) diff --git a/tests.js b/tests.js index ab6c0e51..4abf05f6 100644 --- a/tests.js +++ b/tests.js @@ -5315,11 +5315,39 @@ window.Specs = { "tests": ["auto", "2", "16 / 9", "auto 16 / 9"] }, "contain-intrinsic-size": { + "links": { + "tr": "#propdef-contain-intrinsic-size", + "dev": "#propdef-contain-intrinsic-size" + }, + "tests": ["none", "10px", "10px 15px"] + }, + "contain-intrinsic-width": { "links": { "tr": "#intrinsic-size-override", "dev": "#intrinsic-size-override" }, - "tests": ["none", "10px", "10px 15px"] + "tests": ["none", "10px"] + }, + "contain-intrinsic-height": { + "links": { + "tr": "#intrinsic-size-override", + "dev": "#intrinsic-size-override" + }, + "tests": ["none", "10px"] + }, + "contain-intrinsic-block-size": { + "links": { + "tr": "#intrinsic-size-override", + "dev": "#intrinsic-size-override" + }, + "tests": ["none", "10px"] + }, + "contain-intrinsic-inline-size": { + "links": { + "tr": "#intrinsic-size-override", + "dev": "#intrinsic-size-override" + }, + "tests": ["none", "10px"] }, "width": { "links": { @@ -5362,6 +5390,48 @@ window.Specs = { "dev": "#sizing-values" }, "tests": ["stretch", "fit-content", "contain"] + }, + "inline-size": { + "links": { + "tr": "#sizing-values", + "dev": "#sizing-values" + }, + "tests": ["stretch", "fit-content", "contain"] + }, + "min-inline-size": { + "links": { + "tr": "#sizing-values", + "dev": "#sizing-values" + }, + "tests": ["stretch", "fit-content", "contain"] + }, + "max-inline-size": { + "links": { + "tr": "#sizing-values", + "dev": "#sizing-values" + }, + "tests": ["stretch", "fit-content", "contain"] + }, + "block-size": { + "links": { + "tr": "#sizing-values", + "dev": "#sizing-values" + }, + "tests": ["stretch", "fit-content", "contain"] + }, + "min-block-size": { + "links": { + "tr": "#sizing-values", + "dev": "#sizing-values" + }, + "tests": ["stretch", "fit-content", "contain"] + }, + "max-block-size": { + "links": { + "tr": "#sizing-values", + "dev": "#sizing-values" + }, + "tests": ["stretch", "fit-content", "contain"] } } }, From 411dc0b17ef7ff72002b5e0c9b1d7fb9ab054df0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Sun, 28 Feb 2021 13:31:13 +0100 Subject: [PATCH 311/668] Add progress bar in incomplete properties --- csstest.js | 25 ++++++++++++++++--- style.css | 25 +++++++++++++++---- tests.js | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 113 insertions(+), 7 deletions(-) diff --git a/csstest.js b/csstest.js index a3b54445..16df59c6 100644 --- a/csstest.js +++ b/csstest.js @@ -234,8 +234,8 @@ Test.prototype = { mdnLink += links.mdn ? links.mdn : feature.startsWith(':') - ? feature.replace('()', '') - : feature; + ? feature.replace('()', '') + : feature; summaryContents.push($.create({ tag: 'a', @@ -277,6 +277,7 @@ Test.prototype = { })); } + // for prefix if (propertyPrefix) { summaryContents[1] = $.create({ tag: 'span', @@ -285,11 +286,29 @@ Test.prototype = { }); } + // for progress bar + var progressbar = null; + if (passed > 0 && passed !== tests.length) { + progressbar = $.create({ + tag: 'div', + properties: { + className: 'progress-bar', + style: 'width: ' + (passed / tests.length * 100) + '%' + } + }); + } + var detailsContents = [ $.create({ tag: 'summary', className: passclass({ passed: passed, total: tests.length }), - contents: summaryContents, + contents: [ + progressbar, + { + tag: 'div', + contents: summaryContents + } + ] }), $.create({ tag: 'ul', diff --git a/style.css b/style.css index a5863cbd..3a51122c 100644 --- a/style.css +++ b/style.css @@ -80,17 +80,23 @@ h1, h2 { background-image: url("data:image/svg+xml, "); } - details summary > .spec-link { + details summary > :not(.progress-bar) { + z-index: 1; + display: inline-block; + position: relative; + } + + details summary .spec-link { display: none; vertical-align: inherit; } - details summary:hover > .spec-link, - details summary:focus-within > .spec-link { + details summary:hover .spec-link, + details summary:focus-within .spec-link { display: inline-block; } - details summary > .spec-link::before { + details summary .spec-link::before { height: 18px; width: 18px; background-size: 18px 18px; @@ -185,6 +191,8 @@ details summary, details li[class] { details summary { list-style: none; cursor: pointer; + position: relative; + overflow: hidden; } details summary::-webkit-details-marker { @@ -311,6 +319,15 @@ details li[class]:after { .very-buggy:after { content: ':o'; } +.progress-bar { + height: 100%; + position: absolute; + background: rgba(255, 125, 0, .2); + background: repeating-linear-gradient(-45deg, rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0.1) 5px, rgba(0, 0, 0, 0) 5px, rgba(0, 0, 0, 0) 10px); + top: 0; + left: 0; +} + /* End emoticons */ aside { diff --git a/tests.js b/tests.js index 4abf05f6..fe546b16 100644 --- a/tests.js +++ b/tests.js @@ -5321,6 +5321,34 @@ window.Specs = { }, "tests": ["none", "10px", "10px 15px"] }, + "contain-intrinsic-width": { + "links": { + "tr": "#propdef-contain-intrinsic-size", + "dev": "#propdef-contain-intrinsic-size" + }, + "tests": ["none", "10px"] + }, + "contain-intrinsic-height": { + "links": { + "tr": "#intrinsic-size-override", + "dev": "#intrinsic-size-override" + }, + "tests": ["none", "10px"] + }, + "contain-intrinsic-block-size": { + "links": { + "tr": "#intrinsic-size-override", + "dev": "#intrinsic-size-override" + }, + "tests": ["none", "10px"] + }, + "contain-intrinsic-inline-size": { + "links": { + "tr": "#intrinsic-size-override", + "dev": "#intrinsic-size-override" + }, + "tests": ["none", "10px"] + }, "contain-intrinsic-width": { "links": { "tr": "#intrinsic-size-override", @@ -5363,6 +5391,48 @@ window.Specs = { }, "tests": ["stretch", "fit-content", "contain"] }, + "inline-size": { + "links": { + "tr": "#sizing-values", + "dev": "#sizing-values" + }, + "tests": ["stretch", "fit-content", "contain"] + }, + "min-inline-size": { + "links": { + "tr": "#sizing-values", + "dev": "#sizing-values" + }, + "tests": ["stretch", "fit-content", "contain"] + }, + "max-inline-size": { + "links": { + "tr": "#sizing-values", + "dev": "#sizing-values" + }, + "tests": ["stretch", "fit-content", "contain"] + }, + "block-size": { + "links": { + "tr": "#sizing-values", + "dev": "#sizing-values" + }, + "tests": ["stretch", "fit-content", "contain"] + }, + "min-block-size": { + "links": { + "tr": "#sizing-values", + "dev": "#sizing-values" + }, + "tests": ["stretch", "fit-content", "contain"] + }, + "max-block-size": { + "links": { + "tr": "#sizing-values", + "dev": "#sizing-values" + }, + "tests": ["stretch", "fit-content", "contain"] + }, "max-width": { "links": { "tr": "#sizing-values", From 4c949b35784b7d4daa035f6437d483772edff8f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Sun, 28 Feb 2021 13:40:42 +0100 Subject: [PATCH 312/668] Fix commit error --- tests.js | 70 -------------------------------------------------------- 1 file changed, 70 deletions(-) diff --git a/tests.js b/tests.js index fe546b16..4abf05f6 100644 --- a/tests.js +++ b/tests.js @@ -5321,34 +5321,6 @@ window.Specs = { }, "tests": ["none", "10px", "10px 15px"] }, - "contain-intrinsic-width": { - "links": { - "tr": "#propdef-contain-intrinsic-size", - "dev": "#propdef-contain-intrinsic-size" - }, - "tests": ["none", "10px"] - }, - "contain-intrinsic-height": { - "links": { - "tr": "#intrinsic-size-override", - "dev": "#intrinsic-size-override" - }, - "tests": ["none", "10px"] - }, - "contain-intrinsic-block-size": { - "links": { - "tr": "#intrinsic-size-override", - "dev": "#intrinsic-size-override" - }, - "tests": ["none", "10px"] - }, - "contain-intrinsic-inline-size": { - "links": { - "tr": "#intrinsic-size-override", - "dev": "#intrinsic-size-override" - }, - "tests": ["none", "10px"] - }, "contain-intrinsic-width": { "links": { "tr": "#intrinsic-size-override", @@ -5391,48 +5363,6 @@ window.Specs = { }, "tests": ["stretch", "fit-content", "contain"] }, - "inline-size": { - "links": { - "tr": "#sizing-values", - "dev": "#sizing-values" - }, - "tests": ["stretch", "fit-content", "contain"] - }, - "min-inline-size": { - "links": { - "tr": "#sizing-values", - "dev": "#sizing-values" - }, - "tests": ["stretch", "fit-content", "contain"] - }, - "max-inline-size": { - "links": { - "tr": "#sizing-values", - "dev": "#sizing-values" - }, - "tests": ["stretch", "fit-content", "contain"] - }, - "block-size": { - "links": { - "tr": "#sizing-values", - "dev": "#sizing-values" - }, - "tests": ["stretch", "fit-content", "contain"] - }, - "min-block-size": { - "links": { - "tr": "#sizing-values", - "dev": "#sizing-values" - }, - "tests": ["stretch", "fit-content", "contain"] - }, - "max-block-size": { - "links": { - "tr": "#sizing-values", - "dev": "#sizing-values" - }, - "tests": ["stretch", "fit-content", "contain"] - }, "max-width": { "links": { "tr": "#sizing-values", From 7734a13dcc289b642059e70bdd7681e21836cf9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Thu, 11 Mar 2021 21:52:27 +0100 Subject: [PATCH 313/668] Update ruby-position tests --- tests.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests.js b/tests.js index 4abf05f6..3c25ca47 100644 --- a/tests.js +++ b/tests.js @@ -4327,7 +4327,7 @@ window.Specs = { "tr": "#rubypos", "dev": "#rubypos" }, - "tests": ["over", "under", "inter-character"] + "tests": ["alternate", "over", "under", "alternate over", "alternate under", "inter-character"] }, "ruby-merge": { "links": { From 69ec298801ab6b4eea79a035c9ddce72412ba304 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Tue, 16 Mar 2021 22:11:18 +0100 Subject: [PATCH 314/668] Change to a more simple bar --- style.css | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/style.css b/style.css index 3a51122c..0dec8e92 100644 --- a/style.css +++ b/style.css @@ -322,12 +322,24 @@ details li[class]:after { .progress-bar { height: 100%; position: absolute; - background: rgba(255, 125, 0, .2); - background: repeating-linear-gradient(-45deg, rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0.1) 5px, rgba(0, 0, 0, 0) 5px, rgba(0, 0, 0, 0) 10px); + left: 0; top: 0; - left: 0; } +.pass .progress-bar { background: #367a00; } + +.almost-pass .progress-bar { background: #6da300; } + +.slightly-buggy .progress-bar { background: #969600; } + +.buggy .progress-bar { background: #be6d00} + +.very-buggy .progress-bar { background: #be3600; } + +.fail .progress-bar { background: #be1b00;; } + +.epic-fail .progress-bar { background: #960000; } + /* End emoticons */ aside { From 9b46a01dce5f865d8a518b96c1a90853e540ebd6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Tue, 16 Mar 2021 22:21:55 +0100 Subject: [PATCH 315/668] Update color-mix() tests --- tests.js | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/tests.js b/tests.js index 3c25ca47..6522d9bd 100644 --- a/tests.js +++ b/tests.js @@ -2751,15 +2751,15 @@ window.Specs = { "mdn": "color_value" }, "tests": [ - "color-mix(peru 40%, lightgoldenrod)", - "color-mix(teal 65%, olive)", - "color-mix(rgb(0% 42.35% 33.33%) lightness 40%, rgb(41.2% 69.88% 96.64%))", - "color-mix(lch(52% 58.1 22.7) hue 75.23%, lch(56% 49.1 257.1))", - "color-mix(lch(52% 58.1 22.7) hue longer 75.23%, lch(56% 49.1 257.1) )", - "color-mix(rgb(82.02% 30.21% 35.02%) hue 75.23% lightness 68.4%, rgb(5.64% 55.94% 85.31%) )", - "color-mix(xyz rgb(82.02% 30.21% 35.02%) 75.23%, rgb(5.64% 55.94% 85.31%))", - "color-mix(red lightness 30%, yellow )", - "color-mix(lab rgb(82.02% 30.21% 35.02%) a 38% b 38%, rgb(5.64% 55.94% 85.31%))" + "color-mix(in srgb, teal 65%, olive)", + "color-mix(in srgb, rgb(255, 0, 0, .2) 65%, olive)", + "color-mix(in srgb, currentColor, rgba(0, 0, 0, .5) 65%", + "color-mix(in srgb, currentColor 10%, rgba(0, 0, 0, .5) 65%", + "color-mix(in lch, teal 65%, olive)", + "color-mix(in hsl, teal 65%, olive)", + "color-mix(in hwb, teal 65%, olive)", + "color-mix(in xyz, teal 65%, olive)", + "color-mix(in lab, teal 65%, olive)", ] }, "color-contrast()": { From 89a19d6219929f976f66caf29c05d1e63a9fed74 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Sat, 17 Apr 2021 12:35:45 +0200 Subject: [PATCH 316/668] Add image-set() tests from Mozilla valid tests --- tests.js | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/tests.js b/tests.js index 6522d9bd..682d0115 100644 --- a/tests.js +++ b/tests.js @@ -351,7 +351,16 @@ window.Specs = { "dev": "#image-set-notation" }, "tests": [ - "image-set('foo.png' 1x, 'foo-2x.png' 2x, 'foo-print.png' 600dpi)" + "image-set('foo.png' 1x, 'foo-2x.png' 2x, 'foo-print.png' 600dpi)", + "image-set(linear-gradient(green, green) 1x, url(foobar.png) 2x)", + "image-set(linear-gradient(red, red), url(foobar.png) 2x)", + "image-set(url(foobar.png) 2x)", + "image-set(url(foobar.png) 1x, url(bar.png) 2x, url(baz.png) 3x)", + "image-set('foobar.png', 'bar.png' 2x, url(baz.png) 3x)", + "image-set(image-set('foobar.png', 'bar.png' 2x) 1x, url(baz.png) 3x)", + "image-set(url(foobar.png) type('image/png'))", + "image-set(url(foobar.png) 1x type('image/png'))", + "image-set(url(foobar.png) type('image/png') 1x)" ] }, "element()": { From 4722521d52bc88ae11c810a3df9ca6098e21c169 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Sat, 17 Apr 2021 12:40:05 +0200 Subject: [PATCH 317/668] Add overflow-clip-margin test --- tests.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tests.js b/tests.js index 682d0115..a68b0222 100644 --- a/tests.js +++ b/tests.js @@ -5170,6 +5170,14 @@ window.Specs = { }, "tests": ["visible", "hidden", "clip", "scroll", "auto"] }, + "overflow-clip-margin": { + "links": { + "tr": "#overflow-clip-margin", + "dev": "#overflow-clip-margin" + }, + "tests": ["content-box", "padding-box", "border-box", "20px"] + + }, "continue": { "links": { "tr": "#continue", From 1f65e675a8ad36b13bcc0d78c11ea3fe418753de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Sun, 2 May 2021 03:04:48 +0200 Subject: [PATCH 318/668] Update tests for font modules 3~5 --- supports.js | 10 ++++- tests.js | 127 ++++++++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 133 insertions(+), 4 deletions(-) diff --git a/supports.js b/supports.js index 24cc8af9..227dd8bc 100644 --- a/supports.js +++ b/supports.js @@ -118,7 +118,15 @@ window.matchMedia = window.matchMedia || (function (doc, undefined) { descriptorvalue: function (descriptor, value) { /* doesn't handle prefixes for descriptor or value */ - style.textContent = "@font-face {" + descriptor + ":" + value + "}"; + if (descriptor.match(/@.*\//)) { + var part = descriptor.split('/'); + var rule = part[0]; + descriptor = part[1]; + } else { + var rule = '@font-face' + } + + style.textContent = rule + " {" + descriptor + ":" + value + "}"; try { return { success: style.sheet.cssRules.length == 1 diff --git a/tests.js b/tests.js index a68b0222..ef139546 100644 --- a/tests.js +++ b/tests.js @@ -2351,7 +2351,63 @@ window.Specs = { } }, "descriptors": { - "unicode-range": { + "@font-face/src": { + "links": { + "tr": "#descdef-src", + "dev": "#descdef-src" + }, + "tests": [ + "url(http://example.com/fonts/Gentium.woff)", + "url(ideal-sans-serif.woff2) format(\"woff2\"), url(good-sans-serif.woff) format(\"woff\"), url(basic-sans-serif.ttf) format(\"opentype\")", + "local(Gentium), url(Gentium.woff)" + ] + }, + "@font-face/font-family": { + "links": { + "tr": "#descdef-font-family", + "dev": "#descdef-font-family" + }, + "tests": ["Gentium"] + }, + "@font-face/font-style": { + "links": { + "tr": "#font-prop-desc", + "dev": "#font-prop-desc" + }, + "tests": ["normal", "italic", "oblique "] + }, + "@font-face/font-weight": { + "links": { + "tr": "#font-prop-desc", + "dev": "#font-prop-desc" + }, + "tests": ["normal", "bold", "100", "200", "300", "400", "500", "600", "700", "800", "900"] + }, + "@font-face/font-stretch": { + "links": { + "tr": "#font-prop-desc", + "dev": "#font-prop-desc" + }, + "tests": [ + "normal", "ultra-condensed", "extra-condensed", "condensed", "semi-condensed", "semi-expanded", + "expanded", "extra-expanded", "ultra-expanded " + ] + }, + "@font-face/font-feature-settings": { + "links": { + "tr": "#font-rend-desc", + "dev": "#font-rend-desc" + }, + "tests": ["normal", "'c2sc'", "'smcp' on", "'liga' off", "'smcp', 'swsh' 2"] + }, + "@font-face/font-variation-settings": { + "links": { + "tr": "#font-rend-desc", + "dev": "#font-rend-desc" + }, + "tests": ["normal", "'swsh' 2"] + }, + "@font-face/unicode-range": { "links": { "tr": "#unicode-range-desc", "dev": "#unicode-range-desc" @@ -2390,7 +2446,10 @@ window.Specs = { "dev": "#font-variant-prop" }, "tests": [ - "none", "normal", "all-petite-caps", "historical-forms", "super", "sub lining-nums contextual ruby" + "none", "normal", "all-petite-caps", "historical-forms", "super", + "sub lining-nums contextual ruby", + "annotation(circled)", + "discretionary-ligatures character-variant(leo-B, leo-M, leo-N, leo-T, leo-U)" ] }, "font-variant-alternates": { @@ -2399,7 +2458,10 @@ window.Specs = { "dev": "#font-variant-alternates-prop" }, "tests": [ - "normal", "historical-forms", "styleset(ss01)", "character-variant(cv02)", "swash(flowing)", "ornaments(leaves)", "annotation(blocky)" + "normal", "historical-forms", + "styleset(ss01)", "styleset(stacked-g, geometric-m)", + "character-variant(cv02)", "character-variant(beta-3, gamma)", + "swash(flowing)", "ornaments(leaves)", "annotation(blocky)" ] }, "font-feature-settings": { @@ -2459,10 +2521,69 @@ window.Specs = { "dev": "#font-palette-values" }, "tests": "@font-palette-values Augusta {\n font-family: Handover Sans;\n base-palette: 3;\n}" + }, + }, + "descriptors": { + "@font-face/ascent-override": { + "links": { + "tr": "#descdef-font-face-ascent-override", + "dev": "#descdef-font-face-ascent-override" + }, + "tests": ["normal", "125%"] + }, + "@font-face/descent-override": { + "links": { + "tr": "#descdef-font-face-descent-override", + "dev": "#descdef-font-face-descent-override" + }, + "tests": ["normal", "125%"] + }, + "@font-face/line-gap-override": { + "links": { + "tr": "#descdef-font-face-line-gap-override", + "dev": "#descdef-font-face-line-gap-override" + }, + "tests": ["normal", "90%"] + }, + "@font-face/font-named-instance": { + "links": { + "tr": "#font-named-instance", + "dev": "#font-named-instance" + }, + "tests": ["auto", "'Grotesque'"] + }, + "@font-face/font-display": { + "links": { + "tr": "#descdef-font-face-font-display", + "dev": "#descdef-font-face-font-display" + }, + "tests": ["auto", "block", "swap", "fallback", "optional"] + }, + "@font-feature-values/font-display": { + "links": { + "tr": "#font-display-font-feature-values", + "dev": "#font-display-font-feature-values" + }, + "tests": ["auto", "block", "swap", "fallback", "optional"] } } }, + "css-fonts-5": { + "title": "CSS Fonts Module Level 5", + "links": { + "dev": "css-fonts-5" + }, + "descriptors": { + "@font-face/size-adjust": { + "links": { + "dev": "#size-adjust-desc" + }, + "tests": ["100%"] + }, + } + }, + "css-writing-modes-3": { "title": "CSS Writing Modes Level 3", "links": { From 332ce95613946ca1cb4adbe5977f9956fcb2dd40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Sat, 15 May 2021 20:34:33 +0200 Subject: [PATCH 319/668] Fix text overflow --- style.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/style.css b/style.css index a5863cbd..e378f556 100644 --- a/style.css +++ b/style.css @@ -200,7 +200,7 @@ details li[class] { list-style: none; margin: .3em 0; font-size: 90%; - white-space: pre; + white-space: pre-line; } details li[class] small { From 64a79b29bf3bd73bc15c8b791a04a07c5a61cc1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Sat, 15 May 2021 20:38:13 +0200 Subject: [PATCH 320/668] Update Pseudo-Elements level 4 --- tests.js | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/tests.js b/tests.js index ef139546..522fc060 100644 --- a/tests.js +++ b/tests.js @@ -933,32 +933,39 @@ window.Specs = { "selectors": { "::selection": { "links": { - "tr": "#highlight-selectors", - "dev": "#highlight-selectors" + "tr": "#selectordef-selection", + "dev": "#selectordef-selection" }, "tests": ["::selection"] }, - "::inactive-selection": { + "::target-text": { "links": { - "tr": "#highlight-selectors", - "dev": "#highlight-selectors" + "tr": "#selectordef-target-text", + "dev": "#selectordef-target-text" }, - "tests": ["::inactive-selection"] + "tests": ["::target-text"] }, "::spelling-error": { "links": { - "tr": "#highlight-selectors", - "dev": "#highlight-selectors" + "tr": "#selectordef-spelling-error", + "dev": "#selectordef-spelling-error" }, "tests": ["::spelling-error"] }, "::grammar-error": { "links": { - "tr": "#highlight-selectors", - "dev": "#highlight-selectors" + "tr": "#selectordef-grammar-error", + "dev": "#selectordef-grammar-error" }, "tests": ["::grammar-error"] }, + "::file-selector-button": { + "links": { + "tr": "#marker-pseudo", + "dev": "#marker-pseudo" + }, + "tests": ["::file-selector-button"] + }, "::marker": { "links": { "tr": "#marker-pseudo", From cf33aa87f8da5c34f8c0b9d5d2db58f385f8c8e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Sat, 15 May 2021 20:52:07 +0200 Subject: [PATCH 321/668] Add test for keyframes --- style.css | 3 ++- tests.js | 5 ++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/style.css b/style.css index e378f556..63e4938f 100644 --- a/style.css +++ b/style.css @@ -200,7 +200,8 @@ details li[class] { list-style: none; margin: .3em 0; font-size: 90%; - white-space: pre-line; + white-space: pre; + white-space: break-spaces; } details li[class] small { diff --git a/tests.js b/tests.js index 522fc060..270e8819 100644 --- a/tests.js +++ b/tests.js @@ -1626,7 +1626,10 @@ window.Specs = { "tr": "#keyframes", "dev": "#keyframes" }, - "tests": "@keyframes foo {\n from: {\n color: blue;\n }\n to: {\n color: red;\n }\n}" + "tests": [ + "@keyframes foo {\n from: {\n color: blue;\n }\n to: {\n color: red;\n }\n}", + "@keyframes foo {\n from: {\n color: blue;\n }\n 50%: {\n color: green;\n }\n to: {\n color: red;\n }\n}" + ] } } }, From a91eae8773b493084ad7f6391d463e5aaeb8ce3b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Sat, 22 May 2021 01:57:29 +0200 Subject: [PATCH 322/668] Add descriptor tests for @counter-style --- csstest.js | 4 +-- supports.js | 31 +++++++++++++++++---- tests.js | 79 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 107 insertions(+), 7 deletions(-) diff --git a/csstest.js b/csstest.js index a3b54445..c387f4a4 100644 --- a/csstest.js +++ b/csstest.js @@ -234,8 +234,8 @@ Test.prototype = { mdnLink += links.mdn ? links.mdn : feature.startsWith(':') - ? feature.replace('()', '') - : feature; + ? feature.replace('()', '') + : feature.replace(/(@[^ ]+)[^\/]+(\/.*)/, '$1$2'); summaryContents.push($.create({ tag: 'a', diff --git a/supports.js b/supports.js index 227dd8bc..972936f7 100644 --- a/supports.js +++ b/supports.js @@ -118,20 +118,41 @@ window.matchMedia = window.matchMedia || (function (doc, undefined) { descriptorvalue: function (descriptor, value) { /* doesn't handle prefixes for descriptor or value */ + var add = '', pos = 0; if (descriptor.match(/@.*\//)) { var part = descriptor.split('/'); var rule = part[0]; descriptor = part[1]; + + // exceptions for @counter-style + if (rule.match(/@counter-style.*/)) { + if (descriptor === 'additive-symbols') { + add = 'system: additive;' + } else if (descriptor === 'symbols' && value === "custom-numbers") { + rule = '@counter-style custom-numbers { system: fixed; symbols: A B C D E;} ' + rule; + pos = 1; + } else if (descriptor === 'symbols') { + add = 'system: alphabetic;'; + } else if (descriptor !== 'system' || descriptor === 'system' && value.indexOf('extends') === -1) { + add = 'system: alphabetic; symbols: A B C D; additive-symbols: 1000 M, 500 C; '; + } + } + } else { var rule = '@font-face' } - style.textContent = rule + " {" + descriptor + ":" + value + "}"; + style.textContent = rule + " {" + add + descriptor + ":" + value + "}"; try { - return { - success: style.sheet.cssRules.length == 1 - && style.sheet.cssRules[0].style.length == 1 - }; + if (style.sheet.cssRules.length) { + return { + success: + style.sheet.cssRules[pos].style && style.sheet.cssRules[pos].style.length === 1 || + !!style.sheet.cssRules[pos][camelCase(descriptor)] + }; + } else { + return { success: false }; + } } catch (e) { return { success: false }; } diff --git a/tests.js b/tests.js index 270e8819..4993945b 100644 --- a/tests.js +++ b/tests.js @@ -5248,6 +5248,85 @@ window.Specs = { }, "tests": "@counter-style foo {\n system: numeric;\n symbols: '0' '1' '2' '3' '4' '5' '6' '7' '8' '9';\n}" } + }, + "descriptors": { + "@counter-style example/system": { + "links": { + "tr": "#descdef-src", + "dev": "#descdef-src" + }, + "tests": [ + "cyclic", "numeric", "alphabetic", "symbolic", "additive", "fixed 3", "extends decimal" + ] + }, + "@counter-style example/negative": { + "links": { + "tr": "#descdef-src", + "dev": "#descdef-src" + }, + "tests": [ + "'-'", "'(' ')'" + ] + }, + "@counter-style example/prefix": { + "links": { + "tr": "#descdef-src", + "dev": "#descdef-src" + }, + "tests": [ + "»", "url(https://lea.verou.me/mark.svg)" + ] + }, + "@counter-style example/suffix": { + "links": { + "tr": "#descdef-src", + "dev": "#descdef-src" + }, + "tests": [ + "»", "url(https://lea.verou.me/mark.svg)" + ] + }, + "@counter-style example/range": { + "links": { + "tr": "#descdef-src", + "dev": "#descdef-src" + }, + "tests": [ + "auto", "2 5", "infinite 10", "10 infinite", "infinite infinite", "2 5, 8 10", "infinite 8, 6 infinite" + ] + }, + "@counter-style example/symbols": { + "links": { + "tr": "#descdef-src", + "dev": "#descdef-src" + }, + "tests": [ + "A B C D E F", + "'\24B6' '\24B7' '\24B8' D E F", + "'0' '1' '2' '4' '5' '6' '7'", + "'1' url('second.svg') '2'", + "url('first.svg') url('second.svg') url('third.svg')", + "custom-numbers" + ] + }, + "@counter-style example/additive-symbols": { + "links": { + "tr": "#descdef-src", + "dev": "#descdef-src" + }, + "tests": [ + "3 '0'", "3 '1', 2 '\2E\20'", "3 '1', 2 url(symbol.svg)", + ] + }, + "@counter-style example/speak-as": { + "links": { + "tr": "#descdef-src", + "dev": "#descdef-src" + }, + "tests": [ + "auto", "bullets", "numbers", "words", "spell-out", "example-counter", + ] + } } }, From e07c721e81da26192068475c9b3f698c70a75963 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Sat, 22 May 2021 02:17:26 +0200 Subject: [PATCH 323/668] Fix some omissions for @counter-style --- tests.js | 50 ++++++++++++++++++++++++++++++++++---------------- 1 file changed, 34 insertions(+), 16 deletions(-) diff --git a/tests.js b/tests.js index 4993945b..9935e2aa 100644 --- a/tests.js +++ b/tests.js @@ -5252,8 +5252,8 @@ window.Specs = { "descriptors": { "@counter-style example/system": { "links": { - "tr": "#descdef-src", - "dev": "#descdef-src" + "tr": "#counter-style-system", + "dev": "#counter-style-system" }, "tests": [ "cyclic", "numeric", "alphabetic", "symbolic", "additive", "fixed 3", "extends decimal" @@ -5261,8 +5261,8 @@ window.Specs = { }, "@counter-style example/negative": { "links": { - "tr": "#descdef-src", - "dev": "#descdef-src" + "tr": "#counter-style-negative", + "dev": "#counter-style-negative" }, "tests": [ "'-'", "'(' ')'" @@ -5270,8 +5270,8 @@ window.Specs = { }, "@counter-style example/prefix": { "links": { - "tr": "#descdef-src", - "dev": "#descdef-src" + "tr": "#counter-style-prefix", + "dev": "#counter-style-prefix" }, "tests": [ "»", "url(https://lea.verou.me/mark.svg)" @@ -5279,8 +5279,8 @@ window.Specs = { }, "@counter-style example/suffix": { "links": { - "tr": "#descdef-src", - "dev": "#descdef-src" + "tr": "#counter-style-suffix", + "dev": "#counter-style-suffix" }, "tests": [ "»", "url(https://lea.verou.me/mark.svg)" @@ -5288,8 +5288,8 @@ window.Specs = { }, "@counter-style example/range": { "links": { - "tr": "#descdef-src", - "dev": "#descdef-src" + "tr": "#counter-style-range", + "dev": "#counter-style-range" }, "tests": [ "auto", "2 5", "infinite 10", "10 infinite", "infinite infinite", "2 5, 8 10", "infinite 8, 6 infinite" @@ -5297,8 +5297,8 @@ window.Specs = { }, "@counter-style example/symbols": { "links": { - "tr": "#descdef-src", - "dev": "#descdef-src" + "tr": "#counter-style-symbols", + "dev": "#counter-style-symbols" }, "tests": [ "A B C D E F", @@ -5311,17 +5311,35 @@ window.Specs = { }, "@counter-style example/additive-symbols": { "links": { - "tr": "#descdef-src", - "dev": "#descdef-src" + "tr": "#additive-system", + "dev": "#descdef-counter-style-additive-symbols" }, "tests": [ "3 '0'", "3 '1', 2 '\2E\20'", "3 '1', 2 url(symbol.svg)", ] }, + "@counter-style example/pad": { + "links": { + "tr": "#counter-style-pad", + "dev": "#counter-style-pad" + }, + "tests": [ + "0 ''", "3 '0'", "'0' 3" + ] + }, + "@counter-style example/fallback": { + "links": { + "tr": "#counter-style-fallback", + "dev": "#counter-style-fallback" + }, + "tests": [ + "decimal" + ] + }, "@counter-style example/speak-as": { "links": { - "tr": "#descdef-src", - "dev": "#descdef-src" + "tr": "#counter-style-speak-as", + "dev": "#counter-style-speak-as" }, "tests": [ "auto", "bullets", "numbers", "words", "spell-out", "example-counter", From 635737a1b267c39e76dd6988fc4c9f279816153f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Sat, 22 May 2021 02:31:17 +0200 Subject: [PATCH 324/668] Fix bar position and typo --- style.css | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/style.css b/style.css index 0dec8e92..1e4e0398 100644 --- a/style.css +++ b/style.css @@ -320,10 +320,10 @@ details li[class]:after { .very-buggy:after { content: ':o'; } .progress-bar { - height: 100%; - position: absolute; + height: 7px; + position: absolute; left: 0; - top: 0; + top: 0; } .pass .progress-bar { background: #367a00; } @@ -336,7 +336,7 @@ details li[class]:after { .very-buggy .progress-bar { background: #be3600; } -.fail .progress-bar { background: #be1b00;; } +.fail .progress-bar { background: #be1b00; } .epic-fail .progress-bar { background: #960000; } From 7780908f59c167971cd00b321ebb4992432dd1bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Sat, 22 May 2021 18:20:39 +0200 Subject: [PATCH 325/668] progress bar full css --- csstest.js | 18 ++++-------------- style.css | 36 +++++------------------------------- 2 files changed, 9 insertions(+), 45 deletions(-) diff --git a/csstest.js b/csstest.js index 16df59c6..e48f9433 100644 --- a/csstest.js +++ b/csstest.js @@ -286,24 +286,14 @@ Test.prototype = { }); } - // for progress bar - var progressbar = null; - if (passed > 0 && passed !== tests.length) { - progressbar = $.create({ - tag: 'div', - properties: { - className: 'progress-bar', - style: 'width: ' + (passed / tests.length * 100) + '%' - } - }); - } - var detailsContents = [ $.create({ tag: 'summary', - className: passclass({ passed: passed, total: tests.length }), + properties: { + className: passclass({ passed: passed, total: tests.length }), + style: '--progress: ' + (passed / tests.length * 100), + }, contents: [ - progressbar, { tag: 'div', contents: summaryContents diff --git a/style.css b/style.css index 1e4e0398..afedb190 100644 --- a/style.css +++ b/style.css @@ -80,23 +80,17 @@ h1, h2 { background-image: url("data:image/svg+xml, "); } - details summary > :not(.progress-bar) { - z-index: 1; - display: inline-block; - position: relative; - } - - details summary .spec-link { + details summary > .spec-link { display: none; vertical-align: inherit; } - details summary:hover .spec-link, - details summary:focus-within .spec-link { + details summary:hover > .spec-link, + details summary:focus-within > .spec-link { display: inline-block; } - details summary .spec-link::before { + details summary > .spec-link::before { height: 18px; width: 18px; background-size: 18px 18px; @@ -193,6 +187,7 @@ details summary { cursor: pointer; position: relative; overflow: hidden; + background: linear-gradient(rgb(0 0 0 / .3), rgb(0 0 0 / .3)) no-repeat 0 0 / calc(var(--progress) * 1%) .4em; } details summary::-webkit-details-marker { @@ -319,27 +314,6 @@ details li[class]:after { .very-buggy:after { content: ':o'; } -.progress-bar { - height: 7px; - position: absolute; - left: 0; - top: 0; -} - -.pass .progress-bar { background: #367a00; } - -.almost-pass .progress-bar { background: #6da300; } - -.slightly-buggy .progress-bar { background: #969600; } - -.buggy .progress-bar { background: #be6d00} - -.very-buggy .progress-bar { background: #be3600; } - -.fail .progress-bar { background: #be1b00; } - -.epic-fail .progress-bar { background: #960000; } - /* End emoticons */ aside { From 0bff4f543b3392f9fc1c7e7e4f84bf59a5d217ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Sat, 22 May 2021 18:25:52 +0200 Subject: [PATCH 326/668] Remove useless code --- csstest.js | 7 +------ style.css | 2 -- 2 files changed, 1 insertion(+), 8 deletions(-) diff --git a/csstest.js b/csstest.js index e48f9433..9a6b86f2 100644 --- a/csstest.js +++ b/csstest.js @@ -293,12 +293,7 @@ Test.prototype = { className: passclass({ passed: passed, total: tests.length }), style: '--progress: ' + (passed / tests.length * 100), }, - contents: [ - { - tag: 'div', - contents: summaryContents - } - ] + contents: summaryContents }), $.create({ tag: 'ul', diff --git a/style.css b/style.css index afedb190..4714c6ad 100644 --- a/style.css +++ b/style.css @@ -185,8 +185,6 @@ details summary, details li[class] { details summary { list-style: none; cursor: pointer; - position: relative; - overflow: hidden; background: linear-gradient(rgb(0 0 0 / .3), rgb(0 0 0 / .3)) no-repeat 0 0 / calc(var(--progress) * 1%) .4em; } From 7e46e7d6a0655dc2dbe6b0d0dad681ca0e770978 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Fri, 28 May 2021 15:52:30 +0200 Subject: [PATCH 327/668] Correct a false positive on webkit and blink for line-clamp --- supports.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/supports.js b/supports.js index 227dd8bc..7a79901b 100644 --- a/supports.js +++ b/supports.js @@ -58,8 +58,8 @@ window.matchMedia = window.matchMedia || (function (doc, undefined) { else if (_.property.cached[property]) { return { success: true, - property: _.property.cached[property], - prefix: i > 0 + property: _.property.cached[property].property, + prefix: _.property.cached[property].prefix }; } @@ -67,7 +67,7 @@ window.matchMedia = window.matchMedia || (function (doc, undefined) { var prefixed = _.prefixes[i] + property; if (camelCase(prefixed) in inline) { - _.property.cached[property] = prefixed; + _.property.cached[property] = { property: prefixed, prefix: _.prefixes[i] }; return { success: true, property: prefixed, From 95545f67cdc66d98be3ae4595a0d84cc97b22304 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Sun, 25 Jul 2021 16:11:38 +0200 Subject: [PATCH 328/668] Add Custom Highlight API Level 1 --- tests.js | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/tests.js b/tests.js index 270e8819..66cc872c 100644 --- a/tests.js +++ b/tests.js @@ -1022,6 +1022,23 @@ window.Specs = { } }, + "css-highlight-api-1": { + "title": "CSS Custom Highlight API Module Level 1", + "links": { + "tr": "css-highlight-api-1", + "dev": "css-highlight-api-1" + }, + "selectors": { + '::highlight()' : { + "links": { + "tr": "#custom-highlight-pseudo", + "dev": "#custom-highlight-pseudo" + }, + "tests": ['::highlight(example-highlight)'] + } + } + }, + /* * Note: the following media queries must be true in supporting UAs! */ From 8044fba38f5dd9b5a38940346c870ba47059c869 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Sun, 25 Jul 2021 16:12:23 +0200 Subject: [PATCH 329/668] Update Basic User Interface Module Level 4 --- tests.js | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/tests.js b/tests.js index 66cc872c..dc88c990 100644 --- a/tests.js +++ b/tests.js @@ -1428,12 +1428,30 @@ window.Specs = { "dev": "css-ui-4" }, "properties": { + "accent-color": { + "links": { + "tr": "#widget-accent", + "dev": "#widget-accent" + }, + "tests": ["auto", "red"] + }, "appearance": { "links": { "tr": "#appearance-switching", "dev": "#appearance-switching" }, - "tests": ["auto", "none"] + "tests": [ + "auto", "none", "textfield", "menulist-button", "searchfield", "textarea", "push-button", + "slider-horizontal", "checkbox", "radio", "square-button", "menulist", "listbox", "meter", + "progress-bar", "button" + ], + }, + "input-security": { + "links": { + "tr": "#input-security", + "dev": "#input-security" + }, + "tests": ["auto", "red"] }, "caret": { "links": { From 4c8d99743db39936e76a6c45ed62146f0a59f8c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Sun, 25 Jul 2021 16:56:23 +0200 Subject: [PATCH 330/668] Add rules required for descriptors --- .editorconfig | 9 +++++++++ .gitignore | 1 + csstest.js | 12 ++++++++++-- supports.js | 21 ++++++++------------- tests.js | 32 ++++++++++++++++++++++++++++++++ 5 files changed, 60 insertions(+), 15 deletions(-) create mode 100644 .editorconfig diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 00000000..87a5c04e --- /dev/null +++ b/.editorconfig @@ -0,0 +1,9 @@ +# Editor configuration, see http://editorconfig.org +root = true + +[*] +charset = utf-8 +indent_style = tab +indent_size = 4 +insert_final_newline = true +trim_trailing_whitespace = true diff --git a/.gitignore b/.gitignore index 4d67604d..cb94b173 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ *.code-workspace +.history diff --git a/csstest.js b/csstest.js index c387f4a4..ed16ab2a 100644 --- a/csstest.js +++ b/csstest.js @@ -340,8 +340,16 @@ Test.groups = { return Supports.value(property, value); }, - 'descriptors': function (value, descriptor) { - return Supports.descriptorvalue(descriptor, value); + 'descriptors': function (value, descriptor, tests) { + var required = undefined; + if (tests[descriptor].required) { + if (tests[descriptor].required[value]) { + required = tests[descriptor].required[value]; + } else if (tests[descriptor].required['*'] ) { + required = tests[descriptor].required['*']; + } + } + return Supports.descriptorvalue(descriptor, value, required); }, 'selectors': function (test) { diff --git a/supports.js b/supports.js index 972936f7..2b962d63 100644 --- a/supports.js +++ b/supports.js @@ -1,4 +1,4 @@ -/*! matchMedia() polyfill - Test a CSS media type/query in JS. +/*! matchMedia() polyfill - Test a CSS media type/query in JS. Authors & copyright (c) 2012: Scott Jehl, Paul Irish, Nicholas Zakas. Dual MIT/BSD license */ window.matchMedia = window.matchMedia || (function (doc, undefined) { @@ -116,7 +116,7 @@ window.matchMedia = window.matchMedia || (function (doc, undefined) { }; }, - descriptorvalue: function (descriptor, value) { + descriptorvalue: function (descriptor, value, required) { /* doesn't handle prefixes for descriptor or value */ var add = '', pos = 0; if (descriptor.match(/@.*\//)) { @@ -124,20 +124,15 @@ window.matchMedia = window.matchMedia || (function (doc, undefined) { var rule = part[0]; descriptor = part[1]; - // exceptions for @counter-style - if (rule.match(/@counter-style.*/)) { - if (descriptor === 'additive-symbols') { - add = 'system: additive;' - } else if (descriptor === 'symbols' && value === "custom-numbers") { - rule = '@counter-style custom-numbers { system: fixed; symbols: A B C D E;} ' + rule; + if (required) { + if (required.rule) { + rule = required.rule + ' ' + rule; pos = 1; - } else if (descriptor === 'symbols') { - add = 'system: alphabetic;'; - } else if (descriptor !== 'system' || descriptor === 'system' && value.indexOf('extends') === -1) { - add = 'system: alphabetic; symbols: A B C D; additive-symbols: 1000 M, 500 C; '; + } + if (required.descriptor) { + add = required.descriptor + '; '; } } - } else { var rule = '@font-face' } diff --git a/tests.js b/tests.js index 9935e2aa..02a9b68a 100644 --- a/tests.js +++ b/tests.js @@ -5255,6 +5255,10 @@ window.Specs = { "tr": "#counter-style-system", "dev": "#counter-style-system" }, + "required" : { + '*' : { "descriptor" : "system: alphabetic; symbols: A B C D; additive-symbols: 1000 M, 500 C"}, + 'extends decimal' : { } + }, "tests": [ "cyclic", "numeric", "alphabetic", "symbolic", "additive", "fixed 3", "extends decimal" ] @@ -5264,6 +5268,9 @@ window.Specs = { "tr": "#counter-style-negative", "dev": "#counter-style-negative" }, + "required" : { + '*' : { "descriptor" : "system: alphabetic; symbols: A B C D; additive-symbols: 1000 M, 500 C"} + }, "tests": [ "'-'", "'(' ')'" ] @@ -5273,6 +5280,9 @@ window.Specs = { "tr": "#counter-style-prefix", "dev": "#counter-style-prefix" }, + "required" : { + '*' : { "descriptor" : "system: alphabetic; symbols: A B C D; additive-symbols: 1000 M, 500 C"} + }, "tests": [ "»", "url(https://lea.verou.me/mark.svg)" ] @@ -5282,6 +5292,9 @@ window.Specs = { "tr": "#counter-style-suffix", "dev": "#counter-style-suffix" }, + "required" : { + '*' : { "descriptor" : "system: alphabetic; symbols: A B C D; additive-symbols: 1000 M, 500 C"} + }, "tests": [ "»", "url(https://lea.verou.me/mark.svg)" ] @@ -5291,6 +5304,9 @@ window.Specs = { "tr": "#counter-style-range", "dev": "#counter-style-range" }, + "required" : { + '*' : { "descriptor" : "system: alphabetic; symbols: A B C D; additive-symbols: 1000 M, 500 C"} + }, "tests": [ "auto", "2 5", "infinite 10", "10 infinite", "infinite infinite", "2 5, 8 10", "infinite 8, 6 infinite" ] @@ -5300,6 +5316,10 @@ window.Specs = { "tr": "#counter-style-symbols", "dev": "#counter-style-symbols" }, + "required" : { + '*' : { "descriptor" : "system: alphabetic"}, + 'custom-numbers' : { "rule" : "@counter-style custom-numbers { system: fixed; symbols: A B C D E;}"} + }, "tests": [ "A B C D E F", "'\24B6' '\24B7' '\24B8' D E F", @@ -5314,6 +5334,9 @@ window.Specs = { "tr": "#additive-system", "dev": "#descdef-counter-style-additive-symbols" }, + "required" : { + '*' : { "descriptor" : "system: additive"} + }, "tests": [ "3 '0'", "3 '1', 2 '\2E\20'", "3 '1', 2 url(symbol.svg)", ] @@ -5323,6 +5346,9 @@ window.Specs = { "tr": "#counter-style-pad", "dev": "#counter-style-pad" }, + "required" : { + '*' : { "descriptor" : "system: alphabetic; symbols: A B C D; additive-symbols: 1000 M, 500 C"} + }, "tests": [ "0 ''", "3 '0'", "'0' 3" ] @@ -5332,6 +5358,9 @@ window.Specs = { "tr": "#counter-style-fallback", "dev": "#counter-style-fallback" }, + "required" : { + '*' : { "descriptor" : "system: alphabetic; symbols: A B C D; additive-symbols: 1000 M, 500 C"} + }, "tests": [ "decimal" ] @@ -5341,6 +5370,9 @@ window.Specs = { "tr": "#counter-style-speak-as", "dev": "#counter-style-speak-as" }, + "required" : { + '*' : { "descriptor" : "system: alphabetic; symbols: A B C D; additive-symbols: 1000 M, 500 C"} + }, "tests": [ "auto", "bullets", "numbers", "words", "spell-out", "example-counter", ] From 3dac5735bd0decb0551c396c1a4dfc52f9b32b2b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Thu, 12 Aug 2021 22:45:50 +0200 Subject: [PATCH 331/668] Add tests for font-size-adjust (Level 5) --- tests.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/tests.js b/tests.js index dc88c990..eb83a0e2 100644 --- a/tests.js +++ b/tests.js @@ -2619,6 +2619,20 @@ window.Specs = { "links": { "dev": "css-fonts-5" }, + "properties": { + "font-size-adjust": { + "links": { + "dev": "#font-size-adjust-prop" + }, + "tests": [ + "ex-height 0.545", "ex-height from-font", + "cap-height 0.545", "cap-height from-font", + "ch-width 0.545", "ch-width from-font", + "ic-width 0.545", "ic-width from-font", + "ic-height 0.545", "ic-height from-font" + ] + }, + }, "descriptors": { "@font-face/size-adjust": { "links": { From f5ae1fb0b0f397ae83fbcab2b0e2695769983e03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Sat, 2 Oct 2021 22:13:13 +0200 Subject: [PATCH 332/668] Add mathematical expressions --- tests.js | 173 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 172 insertions(+), 1 deletion(-) diff --git a/tests.js b/tests.js index 1168fc1b..1e52275c 100644 --- a/tests.js +++ b/tests.js @@ -3208,7 +3208,7 @@ window.Specs = { "tr": "#toggle-notation", "dev": "#toggle-notation" }, - "tests": ["toggle(1px, 2px)"] + "tests": ["toggle(1px, 2px)", "toggle(italic, normal)", "toggle(disc, circle, square, box)"] }, "min()": { "links": { @@ -3230,6 +3230,177 @@ window.Specs = { "dev": "#comp-func" }, "tests": ["clamp(12px, 10 * (1vw + 1vh) / 2, 100px)"] + }, + "calc()": { + "links": { + "tr": "#calc-func", + "dev": "#calc-func" + }, + "tests": [ + "calc(1rem * pow(1.5, -1))", + "calc(pow(e, pi) - pi)", + "calc(-18px - sign(5px)*round(down, -18px*sign(5px), 5px))", + "calc(-18px - round(to-zero, -18px, 5px))" + ] + }, + "round()": { + "links": { + "tr": "#round-func", + "dev": "#round-func" + }, + "tests": [ + "round(down, 5.5px, 5px)", + "up(down, 5.5px, 5px)", + "down(down, 5.5px, 5px)", + "round(to-zero, 5.5px, 5px)" + ] + }, + "mod()": { + "links": { + "tr": "#round-func", + "dev": "#round-func" + }, + "tests": ["mod(18px, 5px)", "mod(-140deg, -90deg)"] + }, + "rem()": { + "links": { + "tr": "#round-func", + "dev": "#round-func" + }, + "tests": ["rem(140deg, -90deg)"] + }, + "sin()": { + "links": { + "tr": "#trig-funcs", + "dev": "#trig-funcs" + }, + "tests": ["sin(45deg)", "sin(.125turn)", "sin(3.14159 / 4)"] + }, + "cos()": { + "links": { + "tr": "#trig-funcs", + "dev": "#trig-funcs" + }, + "tests": ["cos(45deg)", "cos(.125turn)", "cos(3.14159 / 4)"] + }, + "tan()": { + "links": { + "tr": "#trig-funcs", + "dev": "#trig-funcs" + }, + "tests": ["tan(1)"] + }, + "asin()": { + "links": { + "tr": "#trig-funcs", + "dev": "#trig-funcs" + }, + "tests": ["asin(1)"] + }, + "acos()": { + "links": { + "tr": "#trig-funcs", + "dev": "#trig-funcs" + }, + "tests": ["acos(-1)"] + }, + "atan()": { + "links": { + "tr": "#trig-funcs", + "dev": "#trig-funcs" + }, + "tests": ["atan(-1)", "atan(tan(90deg))", "tan(atan(infinity))"] + }, + "atan2()": { + "links": { + "tr": "#trig-funcs", + "dev": "#trig-funcs" + }, + "tests": ["atan2(15deg, 90deg)"] + }, + "pow()": { + "links": { + "tr": "#exponent-funcs", + "dev": "#exponent-funcs" + }, + "tests": ["pow(1.5, -1)"] + }, + "sqrt()": { + "links": { + "tr": "#exponent-funcs", + "dev": "#exponent-funcs" + }, + "tests": ["sqrt(2)"] + }, + "hypot()": { + "links": { + "tr": "#exponent-funcs", + "dev": "#exponent-funcs" + }, + "tests": ["hypot(2)", "hypot(2, 2)"] + }, + "log()": { + "links": { + "tr": "#exponent-funcs", + "dev": "#exponent-funcs" + }, + "tests": ["log(2)"] + }, + "exp()": { + "links": { + "tr": "#exponent-funcs", + "dev": "#exponent-funcs" + }, + "tests": ["exp(2)"] + }, + "abs()": { + "links": { + "tr": "#sign-funcs", + "dev": "#sign-funcs" + }, + "tests": ["abs(-2)"] + }, + "sign()": { + "links": { + "tr": "#sign-funcs", + "dev": "#sign-funcs" + }, + "tests": ["sign(10%)"] + }, + "e": { + "links": { + "tr": "#calc-constants", + "dev": "#calc-constants" + }, + "tests": ["calc(e)"] + }, + "pi": { + "links": { + "tr": "#calc-constants", + "dev": "#calc-constants" + }, + "tests": ["calc(pi)"] + }, + "infinity": { + "links": { + "tr": "#calc-error-constants", + "dev": "#ccalc-error-constants" + }, + "tests": ["calc(infinity)"] + }, + "-infinity": { + "links": { + "tr": "#calc-error-constants", + "dev": "#ccalc-error-constants" + }, + "tests": ["calc(-infinity)"] + }, + "NaN": { + "links": { + "tr": "#calc-error-constants", + "dev": "#ccalc-error-constants" + }, + "tests": ["calc(NaN)"] } } }, From f562e71901cb474198ecd568f482822846c42b74 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Sat, 30 Oct 2021 14:57:46 +0200 Subject: [PATCH 333/668] Add Cascading and Inheritance Level 5 --- tests.js | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/tests.js b/tests.js index 1e52275c..46ce572c 100644 --- a/tests.js +++ b/tests.js @@ -4012,6 +4012,54 @@ window.Specs = { } }, + "css-cascade-5": { + "title": "CSS Cascading and Inheritance Level 5", + "links": { + "tr": "css-cascade-5", + "dev": "css-cascade-5" + }, + "values": { + "properties": [ + "color", + "font-weight", + "background-image", + "all" + ], + "revert-layer": { + "links": { + "tr": "#revert-layer", + "dev": "#revert-layer" + }, + "tests": "revert-layer" + } + }, + "properties": { + "all": { + "links": { + "tr": "#revert-layer", + "dev": "#revert-layer" + }, + "tests": "revert-layer" + } + }, + "@rules": { + "@layer": { + "links": { + "tr": "#at-layer", + "dev": "#at-layer" + }, + "tests": [ + "@layer framework {\n h1, h2 { color: maroon; background: white;\n}", + "@layer framework {\n h1, h2 { color: maroon; background: white;}\n \n @media (prefers-color-scheme: dark) {\n h1, h2 { color: red; background: black; }\n }\n}", + "@layer framework;", + "@layer default, framework;" + ] + } + } + }, + + //"@layer default;", "@import url(theme.css) layer(theme);", + "css-conditional-3": { "title": "CSS Conditional Rules Module Level 3", "links": { From 8bfea3d20821a565165c9836e03ed84e8d105498 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Sat, 6 Nov 2021 13:27:34 +0100 Subject: [PATCH 334/668] Add Paged Media Module Level 3 --- tests.js | 79 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) diff --git a/tests.js b/tests.js index 46ce572c..c0672961 100644 --- a/tests.js +++ b/tests.js @@ -1358,6 +1358,85 @@ window.Specs = { } }, + "css-page-3": { + "title": "Paged Media Module Level 3", + "links": { + "tr": "css-page-3", + "dev": "css-page-3" + }, + "properties": { + "page": { + "links": { + "tr": "#using-named-pages", + "dev": "#using-named-pagest" + }, + "tests": ["auto", "customName"] + }, + }, + "@rules": { + "@page": { + "links": { + "tr": "#at-page-rule", + "dev": "#at-page-rule" + }, + "tests": [ + "@page { margin: 2cm }", + "@page customName { margin: 2cm }", + "@page :left { margin: 2cm }", + "@page :right { margin: 2cm }", + "@page :first { margin: 2cm }", + "@page :blank { margin: 2cm }" + ] + } + }, + "descriptors": { + "@page/size": { + "links": { + "tr": "#page-size-prop", + "dev": "#page-size-prop" + }, + "tests": [ + "4in 6in", "4em 6em", + "auto", + "landscape", + "portrait", + "a3", "a4", "a5", "b4", "b5", "jis-b4", "jis-b5", "ledger", "legal", "letter", + "a3 landscape", + "a3 portrait", + "landscape a3", + "portrait a3" + ] + }, + "@page/page-orientation": { + "links": { + "tr": "#page-orientation-prop", + "dev": "#page-orientation-prop" + }, + "tests": [ + "upright", "rotate-left", "rotate-right" + ] + }, + "@page/marks": { + "links": { + "tr": "#marks", + "dev": "#marks" + }, + "tests": [ + "none", "crop", "cross", "crop cross" + ] + }, + "@page/bleed": { + "links": { + "tr": "#bleed", + "dev": "#bleed" + }, + "tests": [ + "auto", "6pt" + ] + } + } + }, + "css-ui-3": { "title": "CSS Basic User Interface Module Level 3 (CSS3 UI)", "links": { From c659b260c7a86c2aaeb5178296214611e218203d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Sat, 6 Nov 2021 13:38:08 +0100 Subject: [PATCH 335/668] Fix MDN links for descriptors --- csstest.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/csstest.js b/csstest.js index ed16ab2a..fbdb763c 100644 --- a/csstest.js +++ b/csstest.js @@ -235,7 +235,7 @@ Test.prototype = { ? links.mdn : feature.startsWith(':') ? feature.replace('()', '') - : feature.replace(/(@[^ ]+)[^\/]+(\/.*)/, '$1$2'); + : feature.replace(/(@[^ \/]+)[^\/]*(\/.*)/, '$1$2'); summaryContents.push($.create({ tag: 'a', From 41270b7e33a28cd6790d806d234298ee4255e30a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Sat, 6 Nov 2021 13:44:49 +0100 Subject: [PATCH 336/668] Add scrollbar-gutter property --- tests.js | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/tests.js b/tests.js index c0672961..05a8f3a7 100644 --- a/tests.js +++ b/tests.js @@ -4137,8 +4137,6 @@ window.Specs = { } }, - //"@layer default;", "@import url(theme.css) layer(theme);", - "css-conditional-3": { "title": "CSS Conditional Rules Module Level 3", "links": { @@ -5791,6 +5789,15 @@ window.Specs = { "dev": "#continue" }, "tests": ["auto", "discard"] + }, + "scrollbar-gutter": { + "links": { + "tr": "scrollbar-gutter-property", + "dev": "#scrollbar-gutter-property" + }, + "tests": [ + "auto", "stable", "both-edges stable", "stable both-edges", + ] } } }, From a6e361f8cd7e9cbc6ccf2fc843449ff137b9a660 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Thu, 18 Nov 2021 01:10:24 +0100 Subject: [PATCH 337/668] Update scrollbar-width tests --- tests.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests.js b/tests.js index 05a8f3a7..0552ad42 100644 --- a/tests.js +++ b/tests.js @@ -6126,7 +6126,7 @@ window.Specs = { "tr": "#scrollbar-width", "dev": "#scrollbar-width" }, - "tests": ["auto", "thin", "none", "12px"] + "tests": ["auto", "thin", "none"] } } }, From 3c65d00ac538957ee8a191d4408767e7aa485bea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Thu, 18 Nov 2021 01:13:21 +0100 Subject: [PATCH 338/668] Update scrollbar-color tests --- tests.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests.js b/tests.js index 0552ad42..ae52b6db 100644 --- a/tests.js +++ b/tests.js @@ -6119,7 +6119,7 @@ window.Specs = { "tr": "#scrollbar-color", "dev": "#scrollbar-color" }, - "tests": ["auto", "dark", "light", "red blue"] + "tests": ["auto", "red blue"] }, "scrollbar-width": { "links": { From 186608130f8da4ba1cfef594a750f54395e15425 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Sun, 28 Nov 2021 10:26:59 +0100 Subject: [PATCH 339/668] Update tests for transform property --- tests.js | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/tests.js b/tests.js index ae52b6db..7c79a95c 100644 --- a/tests.js +++ b/tests.js @@ -1768,11 +1768,9 @@ window.Specs = { "skew(45deg)", "skew(45deg, 15deg)", "skewX(45deg)", "skewY(45deg)", "matrix(1,-.2,0,1,0,0)", "matrix(1,-.2,0,1,10,10)", "translate(50px, -24px) rotate(180deg) scale(.5) skew(0, 22.5deg)", - "translate3d(0, 0, 5px)", "translateZ(5px)", - "scale3d(1, 0, -1)", "scaleZ(1.5)", - "rotate3d(1, 1, 1, 45deg)", "rotateX(-45deg)", "rotateY(-45deg)", "rotateZ(-45deg)", - "matrix3d(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)", "matrix3d(0,0,0,0,0,0,0,0,0,0,1,0,10,10,0,1)", - "translate3d(50px, -24px, 5px) rotate3d(1, 2, 3, 180deg) scale3d(-1, 0, .5)", + "translateZ(5px)", + "scaleZ(1.5)", + "rotateX(-45deg)", "rotateY(-45deg)", "rotateZ(-45deg)", "perspective(600px)" ] }, @@ -1821,6 +1819,20 @@ window.Specs = { }, "tests": ["none"].concat(["", "x", "y", "z", "-1 0 2"].and(["45deg"])).concat(["45deg"].and(["x", "y", "z", "-1 0 2"])) }, + "transform": { + "links": { + "tr": "#transform-property", + "dev": "#transform-property" + }, + "tests": [ + "perspective(none)", + "translate3d(0, 0, 5px)", + "scale3d(1, 0, -1)", + "rotate3d(1, 1, 1, 45deg)", + "matrix3d(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)", "matrix3d(0,0,0,0,0,0,0,0,0,0,1,0,10,10,0,1)", + "translate3d(50px, -24px, 5px) rotate3d(1, 2, 3, 180deg) scale3d(-1, 0, .5)", + ] + }, "transform-style": { "links": { "tr": "#transform-style-property", @@ -3328,9 +3340,9 @@ window.Specs = { "dev": "#round-func" }, "tests": [ - "round(down, 5.5px, 5px)", - "up(down, 5.5px, 5px)", - "down(down, 5.5px, 5px)", + "round(down, 5.5px, 5px)", + "up(down, 5.5px, 5px)", + "down(down, 5.5px, 5px)", "round(to-zero, 5.5px, 5px)" ] }, From 2f3154ad19ef04f455ab2566124fa510e19a266c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Tue, 21 Dec 2021 18:49:49 +0100 Subject: [PATCH 340/668] Update CSS Color Module --- tests.js | 39 ++++++++++++++++++++++++++++----------- 1 file changed, 28 insertions(+), 11 deletions(-) diff --git a/tests.js b/tests.js index 7c79a95c..3773a4f3 100644 --- a/tests.js +++ b/tests.js @@ -2821,7 +2821,7 @@ window.Specs = { "links": { "tr": "#rgba-color", "dev": "#rgba-color", - "mdn": "color_value" + "mdn": "color_value/rgba()" }, "tests": "rgba(0,0,0,.5)" }, @@ -2837,7 +2837,7 @@ window.Specs = { "links": { "tr": "#hsl-color", "dev": "#hsl-color", - "mdn": "color_value" + "mdn": "color_value/hsl()" }, "tests": "hsl(0,0%,0%)" }, @@ -2845,7 +2845,7 @@ window.Specs = { "links": { "tr": "#hsla-color", "dev": "#hsla-color", - "mdn": "color_value" + "mdn": "color_value/hsla()" }, "tests": "hsl(0,0%,0%,.5)" }, @@ -2946,7 +2946,7 @@ window.Specs = { "links": { "tr": "#the-hwb-notation", "dev": "#the-hwb-notation", - "mdn": "color_value" + "mdn": "color_value/hwb()" }, "tests": ["hwb(0 0% 0%)", "hwb(0 0% 0% / .5)"] }, @@ -2954,23 +2954,40 @@ window.Specs = { "links": { "tr": "#specifying-lab-lch", "dev": "#specifying-lab-lch", - "mdn": "color_value" + "mdn": "color_value/lab()" }, "tests": ["lab(0% 0 0)", "lab(0% 0 0 /.5)"] }, + "oklab()": { + "links": { + "tr": "#specifying-oklab-lch", + "dev": "#specifying-oklab-lch", + "mdn": "color_value/oklab()" + }, + "tests": ["oklab(0% 0 0)", "oklab(40.101% 0.1147 0.0453 / .5)"] + }, + "lch()": { "links": { - "tr": "#specifying-lab-lch", - "dev": "#specifying-lab-lch", - "mdn": "color_value" + "tr": "#specifying-lch-lch", + "dev": "#specifying-lch-lch", + "mdn": "color_value/lch()" + }, + "tests": ["lch(0% 0 0)", "lch(none 0% none)", "lch(0% 0 0 / .5)"] + }, + "oklch()": { + "links": { + "tr": "#specifying-oklch-lch", + "dev": "#specifying-oklch-lch", + "mdn": "color_value/oklch()" }, - "tests": ["lch(0% 0 0)", "lch(0% 0 0 / .5)"] + "tests": ["oklch(0% 0 0)", "oklch(40.101% 0.12332 21.555 / .5)"] }, "color()": { "links": { "tr": "#color-function", "dev": "#color-function", - "mdn": "color_value" + "mdn": "color_value/color()" }, "tests": [ "color(.2 .4 .6)", @@ -2996,7 +3013,7 @@ window.Specs = { "links": { "tr": "#cmyk-colors", "dev": "#cmyk-colors", - "mdn": "color_value" + "mdn": "color_value/device-cmyk()" }, "tests": ["device-cmyk(.2 .3 .4 .5)", "device-cmyk(.2 .3 .4 .5 / .5)", "device-cmyk(.2 .3 .4 .5 / 50%)"] } From 1a2403ce93f819005a6fe744be14e40cf13b1d81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Tue, 21 Dec 2021 18:50:23 +0100 Subject: [PATCH 341/668] Update CSS Color Adjustment Module --- tests.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests.js b/tests.js index 3773a4f3..6af98e2e 100644 --- a/tests.js +++ b/tests.js @@ -3114,7 +3114,7 @@ window.Specs = { "tr": "#forced", "dev": "#forced" }, - "tests": ["auto", "none"] + "tests": ["auto", "none", "preserve-parent-color"] }, "color-scheme": { "links": { From 556689ae34a3e8ed91edff516f8f777c71e65e36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Tue, 21 Dec 2021 19:04:28 +0100 Subject: [PATCH 342/668] Fix unicode character --- tests.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests.js b/tests.js index 6af98e2e..a9070715 100644 --- a/tests.js +++ b/tests.js @@ -2159,7 +2159,7 @@ window.Specs = { "tr": "#hyphenate-character", "dev": "#hyphenate-character" }, - "tests": ["auto", "'\2010'"] + "tests": ["auto", "'\u2010'"] }, "hyphenate-limit-zone": { "links": { From 2dd8493b3c13a35029d6c3926eada90a60eb52c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Tue, 21 Dec 2021 19:22:16 +0100 Subject: [PATCH 343/668] Fix unicode characters --- tests.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests.js b/tests.js index a9070715..dcccfa30 100644 --- a/tests.js +++ b/tests.js @@ -2159,7 +2159,7 @@ window.Specs = { "tr": "#hyphenate-character", "dev": "#hyphenate-character" }, - "tests": ["auto", "'\u2010'"] + "tests": ["auto", "'\\2010'"] }, "hyphenate-limit-zone": { "links": { @@ -5696,7 +5696,7 @@ window.Specs = { }, "tests": [ "A B C D E F", - "'\24B6' '\24B7' '\24B8' D E F", + "'\\24B6' '\\24B7' '\\24B8' D E F", "'0' '1' '2' '4' '5' '6' '7'", "'1' url('second.svg') '2'", "url('first.svg') url('second.svg') url('third.svg')", @@ -5712,7 +5712,7 @@ window.Specs = { '*' : { "descriptor" : "system: additive"} }, "tests": [ - "3 '0'", "3 '1', 2 '\2E\20'", "3 '1', 2 url(symbol.svg)", + "3 '0'", "3 '1', 2 '\\2E\\20'", "3 '1', 2 url(symbol.svg)", ] }, "@counter-style example/pad": { From 98dcf72e1f643600f10884b4beb970caefa1d958 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Tue, 21 Dec 2021 19:24:58 +0100 Subject: [PATCH 344/668] Remove unbreakable spaces --- tests.js | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/tests.js b/tests.js index dcccfa30..94a1f07a 100644 --- a/tests.js +++ b/tests.js @@ -5630,7 +5630,7 @@ window.Specs = { "dev": "#counter-style-system" }, "required" : { - '*' : { "descriptor" : "system: alphabetic; symbols: A B C D; additive-symbols: 1000 M, 500 C"}, + '*' : { "descriptor" : "system: alphabetic; symbols: A B C D; additive-symbols: 1000 M, 500 C"}, 'extends decimal' : { } }, "tests": [ @@ -5643,7 +5643,7 @@ window.Specs = { "dev": "#counter-style-negative" }, "required" : { - '*' : { "descriptor" : "system: alphabetic; symbols: A B C D; additive-symbols: 1000 M, 500 C"} + '*' : { "descriptor" : "system: alphabetic; symbols: A B C D; additive-symbols: 1000 M, 500 C"} }, "tests": [ "'-'", "'(' ')'" @@ -5655,7 +5655,7 @@ window.Specs = { "dev": "#counter-style-prefix" }, "required" : { - '*' : { "descriptor" : "system: alphabetic; symbols: A B C D; additive-symbols: 1000 M, 500 C"} + '*' : { "descriptor" : "system: alphabetic; symbols: A B C D; additive-symbols: 1000 M, 500 C"} }, "tests": [ "»", "url(https://lea.verou.me/mark.svg)" @@ -5667,7 +5667,7 @@ window.Specs = { "dev": "#counter-style-suffix" }, "required" : { - '*' : { "descriptor" : "system: alphabetic; symbols: A B C D; additive-symbols: 1000 M, 500 C"} + '*' : { "descriptor" : "system: alphabetic; symbols: A B C D; additive-symbols: 1000 M, 500 C"} }, "tests": [ "»", "url(https://lea.verou.me/mark.svg)" @@ -5679,7 +5679,7 @@ window.Specs = { "dev": "#counter-style-range" }, "required" : { - '*' : { "descriptor" : "system: alphabetic; symbols: A B C D; additive-symbols: 1000 M, 500 C"} + '*' : { "descriptor" : "system: alphabetic; symbols: A B C D; additive-symbols: 1000 M, 500 C"} }, "tests": [ "auto", "2 5", "infinite 10", "10 infinite", "infinite infinite", "2 5, 8 10", "infinite 8, 6 infinite" @@ -5691,8 +5691,8 @@ window.Specs = { "dev": "#counter-style-symbols" }, "required" : { - '*' : { "descriptor" : "system: alphabetic"}, - 'custom-numbers' : { "rule" : "@counter-style custom-numbers { system: fixed; symbols: A B C D E;}"} + '*' : { "descriptor" : "system: alphabetic"}, + 'custom-numbers' : { "rule" : "@counter-style custom-numbers { system: fixed; symbols: A B C D E;}"} }, "tests": [ "A B C D E F", @@ -5709,7 +5709,7 @@ window.Specs = { "dev": "#descdef-counter-style-additive-symbols" }, "required" : { - '*' : { "descriptor" : "system: additive"} + '*' : { "descriptor" : "system: additive"} }, "tests": [ "3 '0'", "3 '1', 2 '\\2E\\20'", "3 '1', 2 url(symbol.svg)", @@ -5721,7 +5721,7 @@ window.Specs = { "dev": "#counter-style-pad" }, "required" : { - '*' : { "descriptor" : "system: alphabetic; symbols: A B C D; additive-symbols: 1000 M, 500 C"} + '*' : { "descriptor" : "system: alphabetic; symbols: A B C D; additive-symbols: 1000 M, 500 C"} }, "tests": [ "0 ''", "3 '0'", "'0' 3" @@ -5733,7 +5733,7 @@ window.Specs = { "dev": "#counter-style-fallback" }, "required" : { - '*' : { "descriptor" : "system: alphabetic; symbols: A B C D; additive-symbols: 1000 M, 500 C"} + '*' : { "descriptor" : "system: alphabetic; symbols: A B C D; additive-symbols: 1000 M, 500 C"} }, "tests": [ "decimal" @@ -5745,7 +5745,7 @@ window.Specs = { "dev": "#counter-style-speak-as" }, "required" : { - '*' : { "descriptor" : "system: alphabetic; symbols: A B C D; additive-symbols: 1000 M, 500 C"} + '*' : { "descriptor" : "system: alphabetic; symbols: A B C D; additive-symbols: 1000 M, 500 C"} }, "tests": [ "auto", "bullets", "numbers", "words", "spell-out", "example-counter", From 2390cf6f690d8787101df948acde4becee3e7a37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Sat, 25 Dec 2021 21:29:02 +0100 Subject: [PATCH 345/668] Update distance unit tests --- tests.js | 112 +++++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 96 insertions(+), 16 deletions(-) diff --git a/tests.js b/tests.js index 94a1f07a..1d96eef8 100644 --- a/tests.js +++ b/tests.js @@ -3215,59 +3215,59 @@ window.Specs = { ], "rem": { "links": { - "tr": "#font-relative-lengths", - "dev": "#font-relative-lengths", + "tr": "#rem", + "dev": "#rem", "mdn": "length" }, "tests": "5rem" }, "ch": { "links": { - "tr": "#font-relative-lengths", - "dev": "#font-relative-lengths", + "tr": "#ch", + "dev": "#ch", "mdn": "length" }, "tests": "5ch" }, "vw": { "links": { - "tr": "#viewport-relative-lengths", - "dev": "#viewport-relative-lengths", + "tr": "#vw", + "dev": "#vw", "mdn": "length" }, "tests": "5vw" }, "vh": { "links": { - "tr": "#viewport-relative-lengths", - "dev": "#viewport-relative-lengths", + "tr": "#vh", + "dev": "#vh", "mdn": "length" }, "tests": "5vh" }, "vmin": { "links": { - "tr": "#viewport-relative-lengths", - "dev": "#viewport-relative-lengths", + "tr": "#vmin", + "dev": "#vmin", "mdn": "length" }, "tests": "5vmin" }, "vmax": { "links": { - "tr": "#viewport-relative-lengths", - "dev": "#viewport-relative-lengths", + "tr": "#vmax", + "dev": "#vmax", "mdn": "length" }, "tests": "5vmax" }, - "q": { + "Q": { "links": { - "tr": "#absolute-lengths", - "dev": "#absolute-lengths", + "tr": "#Q", + "dev": "#Q", "mdn": "length" }, - "tests": "5q" + "tests": "5Q" }, "attr()": { "links": { @@ -3311,6 +3311,86 @@ window.Specs = { "width", "padding" ], + "ex": { + "links": { + "tr": "#ex", + "dev": "#ex", + "mdn": "length" + }, + "tests": "5ex" + }, + "rex": { + "links": { + "tr": "#rex", + "dev": "#rex", + "mdn": "length" + }, + "tests": "5rex" + }, + "cap": { + "links": { + "tr": "#cap", + "dev": "#cap", + "mdn": "length" + }, + "tests": "5cap" + }, + "rcap": { + "links": { + "tr": "#rcap", + "dev": "#rcap", + "mdn": "length" + }, + "tests": "5rcap" + }, + "rch": { + "links": { + "tr": "#rch", + "dev": "#rcap", + "mdn": "length" + }, + "tests": "5rch" + }, + "rch": { + "links": { + "tr": "#rch", + "dev": "#rcap", + "mdn": "length" + }, + "tests": "5rch" + }, + "ic": { + "links": { + "tr": "#ic", + "dev": "#ic", + "mdn": "length" + }, + "tests": "5ic" + }, + "ric": { + "links": { + "tr": "#ric", + "dev": "#ric", + "mdn": "length" + }, + "tests": "5ric" + }, + "lh": { + "links": { + "tr": "#lh", + "dev": "#lh", + "mdn": "length" + }, + "tests": "5lh" + }, + "rlh": { + "links": { + "tr": "#rlh", + "dev": "#rlh", + "mdn": "length" + }, + "tests": "5rlh" + }, "toggle()": { "links": { "tr": "#toggle-notation", From 68aaac20671ff3d3cbf4018d2a901244e5f6e1f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Sat, 25 Dec 2021 21:57:29 +0100 Subject: [PATCH 346/668] Update media queries tests --- tests.js | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/tests.js b/tests.js index 1d96eef8..4b2c6b13 100644 --- a/tests.js +++ b/tests.js @@ -1283,77 +1283,77 @@ window.Specs = { "tr": "#prefers-reduced-motion", "dev": "#prefers-reduced-motion" }, - "tests": ["(prefers-reduced-motion: no-preference)", "(prefers-reduced-motion: reduce)"] + "tests": ["(prefers-reduced-motion)", "(prefers-reduced-motion: no-preference)", "(prefers-reduced-motion: reduce)"] }, "prefers-reduced-transparency": { "links": { "tr": "#prefers-reduced-transparency", "dev": "#prefers-reduced-transparency" }, - "tests": ["(prefers-reduced-transparency: no-preference)", "(prefers-reduced-transparency: reduce)"] + "tests": ["(prefers-reduced-transparency)","(prefers-reduced-transparency: no-preference)", "(prefers-reduced-transparency: reduce)"] }, "prefers-contrast": { "links": { "tr": "#prefers-contrast", "dev": "#prefers-contrast" }, - "tests": ["(prefers-contrast: no-preference)", "(prefers-contrast: high)", "(prefers-contrast: low)", "(prefers-contrast: forced)"] + "tests": ["(prefers-contrast)", "(prefers-contrast: no-preference)", "(prefers-contrast: less)", "(prefers-contrast: more)", "(prefers-contrast: custom)"] }, "prefers-color-scheme": { "links": { "tr": "#prefers-color-scheme", "dev": "#prefers-color-scheme" }, - "tests": ["(prefers-color-scheme: light)", "(prefers-color-scheme: dark)"] + "tests": ["(prefers-color-scheme)", "(prefers-color-scheme: light)", "(prefers-color-scheme: dark)"] }, "scripting": { "links": { "tr": "#scripting", "dev": "#scripting" }, - "tests": ["(scripting: none)", "(scripting: initial-only)", "(scripting: enabled)"] + "tests": ["(scripting)", "(scripting: none)", "(scripting: initial-only)", "(scripting: enabled)"] }, "environment-blending": { "links": { "tr": "#environment-blending", "dev": "#environment-blending" }, - "tests": ["(environment-blending: opaque)", "(environment-blending: additive)", "(environment-blending: subtractive)"] + "tests": ["(environment-blending)", "(environment-blending: opaque)", "(environment-blending: additive)", "(environment-blending: subtractive)"] }, "forced-colors": { "links": { "tr": "#forced-colors", "dev": "#prefers-contrast" }, - "tests": ["(forced-colors: none)", "(forced-color: active)"] + "tests": ["(forced-colors)", "(forced-colors: none)", "(forced-color: active)"] }, "dynamic-range": { "links": { "tr": "#dynamic-range", "dev": "#dynamic-range" }, - "tests": ["(dynamic-range: standard)", "(dynamic-range: high)"] + "tests": ["(dynamic-range)", "(dynamic-range: standard)", "(dynamic-range: high)"] }, "inverted-colors": { "links": { "tr": "#inverted", "dev": "#inverted" }, - "tests": ["(inverted-colors: none)", "(light-level: inverted)"] + "tests": ["(inverted-colors)", "(inverted-colors: none)", "(light-level: inverted)"] }, "video-color-gamut": { "links": { "dev": "#video-color-gamut", "tr": "#video-color-gamut" }, - "tests": ["(video-color-gamut: srgb)", "(video-color-gamut: p3)", "(video-color-gamut: rec2020)"] + "tests": ["(video-color-gamut)", "(video-color-gamut: srgb)", "(video-color-gamut: p3)", "(video-color-gamut: rec2020)"] }, "video-dynamic-range": { "links": { "dev": "#video-dynamic-range", "tr": "#video-dynamic-range" }, - "tests": ["(video-dynamic-range: standard)", "(video-dynamic-range: high)"] + "tests": ["(video-dynamic-range)", "(video-dynamic-range: standard)", "(video-dynamic-range: high)"] } } }, From b359ddde8f11bc4f597a85099277bc20d6c3f54e Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Mon, 27 Dec 2021 23:20:21 +0100 Subject: [PATCH 347/668] Added Conditional Rules 5 --- tests.js | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/tests.js b/tests.js index 4b2c6b13..feb73b01 100644 --- a/tests.js +++ b/tests.js @@ -4291,6 +4291,51 @@ window.Specs = { } }, + "css-conditional-5": { + "title": "CSS Conditional Rules Module Level 5", + "links": { + "tr": "css-conditional-5", + "dev": "css-conditional-5" + }, + "@rules": { + "@supports": { + "links": { + "tr": "#at-supports-ext", + "dev": "#at-supports-ext" + }, + "tests": [ + "@supports font-tech(features-opentype) {}", + "@supports font-format(woff2) {}" + ] + }, + "@when": { + "links": { + "tr": "#when-rule", + "dev": "#when-rule" + }, + "tests": [ + "@when media(min-width: 200px) {}", + "@when media(width >= 200px) {}", + "@when media(pointer) {}", + "@when supports(display: flex) {}" + ] + }, + "@else": { + "links": { + "tr": "#else-rule", + "dev": "#else-rule" + }, + "tests": [ + "@when media(min-width: 200px) {} @else {}", + "@when media(min-width: 200px) {} @else media(min-width: 100px) {}", + "@when media(min-width: 200px) {} @else media(min-width >= 100px) {}", + "@when media(min-width: 200px) {} @else supports(display: flex) {}", + "@when media(min-width: 200px) {} @else media(min-width: 100px) {} @else {}" + ] + } + } + }, + "css-masking-1": { "title": "CSS Masking Module Level 1", "links": { From 55abd20fc653b31d8fde603ff2170fd6f467ff9f Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Wed, 29 Dec 2021 00:39:49 +0100 Subject: [PATCH 348/668] Added Containment 3 --- tests.js | 126 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 126 insertions(+) diff --git a/tests.js b/tests.js index feb73b01..6eab3fa2 100644 --- a/tests.js +++ b/tests.js @@ -6026,6 +6026,132 @@ window.Specs = { } }, + "css-containment-3": { + "title": "CSS Containment Module Level 3", + "links": { + "tr": "css-contain-3", + "dev": "css-contain-3" + }, + "@rules": { + "@container": { + "links": { + "tr": "#container-rule", + "dev": "#container-rule" + }, + "tests": [ + "@container size(width >= 150px) { div { margin: 10px } }", + "@container size(height >= 150px) { div { margin: 10px } }", + "@container size(inline-size >= 150px) { div { margin: 10px } }", + "@container size(block-size >= 150px) { div { margin: 10px } }", + "@container size(aspect-ratio >= 1 / 1) { div { margin: 10px } }", + "@container size(orientation = portrait) { div { margin: 10px } }", + "@container style(pointer) { div { margin: 10px } }", + "@container style(pointer: fine) { div { margin: 10px } }", + "@container x size(width >= 150px) { div { margin: 10px } }", + "@container name(x) size(width >= 150px) { div { margin: 10px } }", + "@container type(inline-size) size(width >= 150px) { div { margin: 10px } }", + "@container name(x) type(inline-size) size(width >= 150px) { div { margin: 10px } }" + ] + } + }, + "values": { + "properties": [ + "width" + ], + "cqw": { + "links": { + "tr": "#container-lengths", + "dev": "#container-lengths", + "mdn": "length" + }, + "tests": "5cqw" + }, + "cqh": { + "links": { + "tr": "#container-lengths", + "dev": "#container-lengths", + "mdn": "length" + }, + "tests": "5cqh" + }, + "cqi": { + "links": { + "tr": "#container-lengths", + "dev": "#container-lengths", + "mdn": "length" + }, + "tests": "5cqi" + }, + "cqb": { + "links": { + "tr": "#container-lengths", + "dev": "#container-lengths", + "mdn": "length" + }, + "tests": "5cqb" + }, + "cqmin": { + "links": { + "tr": "#container-lengths", + "dev": "#container-lengths", + "mdn": "length" + }, + "tests": "5cqmin" + }, + "cqmax": { + "links": { + "tr": "#container-lengths", + "dev": "#container-lengths", + "mdn": "length" + }, + "tests": "5cqmax" + } + }, + "properties": { + "container-type": { + "links": { + "tr": "#container-type", + "dev": "#container-type" + }, + "tests": [ + "none", + "style", + "state", + "size", + "inline-size", + "block-size", + "style state", + "style state size", + "style state inline-size", + "style state block-size" + ] + }, + "container-name": { + "links": { + "tr": "#container-name", + "dev": "#container-name" + }, + "tests": [ + "none", + "x", + "\"x\"", + "x y" + ] + }, + "container": { + "links": { + "tr": "#container-shorthand", + "dev": "#container-shorthand" + }, + "tests": [ + "none", + "style", + "size / x" + ] + } + } + }, + "css-sizing-3": { "title": "CSS Box Sizing Module Level 3", "links": { From eeb7979c983ff99e7dca1f541e929c12c0f0493c Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Sat, 1 Jan 2022 00:38:42 +0100 Subject: [PATCH 349/668] Sorted specifications by their shortnames --- tests.js | 9441 +++++++++++++++++++++++++++--------------------------- 1 file changed, 4660 insertions(+), 4781 deletions(-) diff --git a/tests.js b/tests.js index 6eab3fa2..eb66c24d 100644 --- a/tests.js +++ b/tests.js @@ -1,5 +1,230 @@ window.Specs = { - "css-background-3": { + "compat": { + "title": "Compatibility", + "links": { + "dev": "compat", + "devtype": "whatwg" + }, + "properties": { + "touch-action": { + "links": { + "dev": "#touch-action" + }, + "tests": ["pinch-zoom", "pan-x pinch-zoom", "pan-y pinch-zoom", "pan-x pan-y pinch-zoom"] + } + } + }, + + "compositing-1": { + "title": "Compositing and Blending Level 1", + "links": { + "tr": "compositing-1", + "dev": "compositing-1", + "devtype": "fxtf" + }, + "properties": { + "mix-blend-mode": { + "links": { + "tr": "#mix-blend-mode", + "dev": "#mix-blend-mode" + }, + "tests": ["normal", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "hue", "saturation", "color", "luminosity"] + }, + "isolation": { + "links": { + "tr": "#isolation", + "dev": "#isolation" + }, + "tests": ["auto", "isolate"] + }, + "background-blend-mode": { + "links": { + "tr": "#background-blend-mode", + "dev": "#background-blend-mode" + }, + "tests": ["normal", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "hue", "saturation", "color", "luminosity", "normal, multiply"] + } + } + }, + + "css-align-3": { + "title": "CSS Box Alignment Module Level 3", + "links": { + "tr": "css-align-3", + "dev": "css-align-3" + }, + "properties": { + "align-self": { + "links": { + "tr": "#align-self-property", + "dev": "#align-self-property" + }, + "tests": ["auto", "normal", "stretch", "baseline", "first baseline", "last baseline", "center", "start", "end", "self-start", "self-end", "unsafe start ", "safe start"] + }, + "align-items": { + "links": { + "tr": "#align-items-property", + "dev": "#align-items-property" + }, + "tests": ["normal", "stretch", "baseline", "first baseline", "last baseline", "center", "start", "end", "self-start", "self-end", "unsafe start ", "safe start"] + }, + "align-content": { + "links": { + "tr": "#align-justify-content", + "dev": "#align-justify-content" + }, + "tests": ["normal", "baseline", "first baseline", "last baseline", "space-between", "space-around", "space-evenly", "stretch", "center", "start", "end", "flex-start", "flex-end", "unsafe start ", "safe start"] + }, + "justify-self": { + "links": { + "tr": "#justify-self-property", + "dev": "#justify-self-property" + }, + "tests": ["auto", "normal", "stretch", "baseline", "first baseline", "last baseline", "center", "start", "end", "self-start", "self-end", "unsafe start ", "safe start", "left", "right", "safe right"] + }, + "justify-items": { + "links": { + "tr": "#justify-items-property", + "dev": "#justify-items-property" + }, + "tests": ["normal", "stretch", "baseline", "first baseline", "last baseline", "center", "start", "end", "self-start", "self-end", "unsafe start ", "safe start", "left", "right", "safe right", "legacy", "legacy left", "legacy right", "legacy center"] + }, + "justify-content": { + "links": { + "tr": "#align-justify-content", + "dev": "#align-justify-content" + }, + "tests": ["normal", "space-between", "space-around", "space-evenly", "stretch", "center", "start", "end", "flex-start", "flex-end", "unsafe start ", "safe start", "left", "right", "safe right"] + }, + "place-content": { + "links": { + "tr": "#place-content", + "dev": "#place-content" + }, + "tests": ["normal", "baseline", "first baseline", "last baseline", "space-between", "space-around", "space-evenly", "stretch", "center", "start", "end", "flex-start", "flex-end", "unsafe start ", "safe start", "normal normal", "baseline normal", "first baseline normal", "space-between normal", "center normal", "unsafe start normal", "normal stretch", "baseline stretch", "first baseline stretch", "space-between stretch", "center stretch", "unsafe start stretch", "normal safe right", "baseline safe right", "first baseline safe right", "space-between safe right", "center safe right", "unsafe start safe right"] + }, + "place-items": { + "links": { + "tr": "#place-items-property", + "dev": "#place-items-property" + }, + "tests": ["normal", "stretch", "baseline", "first baseline", "last baseline", "center", "start", "end", "self-start", "self-end", "unsafe start ", "safe start", "normal normal", "stretch normal", "baseline normal", "first baseline normal", "self-start normal", "unsafe start normal", "normal stretch", "stretch stretch", "baseline stretch", "first baseline stretch", "self-start stretch", "unsafe start stretch", "normal last baseline", "stretch last baseline", "baseline last baseline", "first baseline last baseline", "self-start last baseline", "unsafe start last baseline", "normal legacy left", "stretch legacy left", "baseline legacy left", "first baseline legacy left", "self-start legacy left", "unsafe start legacy left"] + }, + "gap": { + "links": { + "tr": "#gap-shorthand", + "dev": "#gap-shorthand" + }, + "tests": ["0 0", "0 1em", "1em", "1em 1em"] + }, + "column-gap": { + "links": { + "tr": "#column-row-gap", + "dev": "#column-row-gap" + }, + "tests": ["0", "1em", "normal"] + }, + "row-gap": { + "links": { + "tr": "#column-row-gap", + "dev": "#column-row-gap" + }, + "tests": ["0", "1em"] + } + } + }, + + "css-animations-1": { + "title": "CSS Animations Level 1", + "links": { + "tr": "css-animations-1", + "dev": "css-animations-1" + }, + "properties": { + "animation-name": { + "links": { + "tr": "#animation-name", + "dev": "#animation-name" + }, + "tests": ["foo", "foo, bar"] + }, + "animation-duration": { + "links": { + "tr": "#animation-duration", + "dev": "#animation-duration" + }, + "tests": ["0s", "1s", "100ms"] + }, + "animation-timing-function": { + "links": { + "tr": "#animation-timing-function", + "dev": "#animation-timing-function" + }, + "tests": [ + "ease", "linear", "ease-in", "ease-out", "ease-in-out", + "cubic-bezier(.5, .5, .5, .5)", + "cubic-bezier(.5, 1.5, .5, -2.5)", + "step-start", "step-end", "steps(3, start)", "steps(5, end)" + ] + }, + "animation-iteration-count": { + "links": { + "tr": "#animation-iteration-count", + "dev": "#animation-iteration-count" + }, + "tests": ["infinite", "8", "4.35"] + }, + "animation-direction": { + "links": { + "tr": "#animation-direction", + "dev": "#animation-direction" + }, + "tests": ["normal", "alternate", "reverse", "alternate-reverse"] + }, + "animation-play-state": { + "links": { + "tr": "#animation-play-state", + "dev": "#animation-play-state" + }, + "tests": ["running", "paused"] + }, + "animation-delay": { + "links": { + "tr": "#animation-delay", + "dev": "#animation-delay" + }, + "tests": ["1s", "-1s"] + }, + "animation-fill-mode": { + "links": { + "tr": "#animation-fill-mode", + "dev": "#animation-fill-mode" + }, + "tests": ["none", "forwards", "backwards", "both"] + }, + "animation": { + "links": { + "tr": "#animation", + "dev": "#animation" + }, + "tests": "foo 1s 2s infinite linear alternate both" + } + }, + "@rules": { + "@keyframes": { + "links": { + "tr": "#keyframes", + "dev": "#keyframes" + }, + "tests": [ + "@keyframes foo {\n from: {\n color: blue;\n }\n to: {\n color: red;\n }\n}", + "@keyframes foo {\n from: {\n color: blue;\n }\n 50%: {\n color: green;\n }\n to: {\n color: red;\n }\n}" + ] + } + } + }, + + "css-backgrounds-3": { "title": "CSS Backgrounds and Borders Module Level 3", "links": { "tr": "css-backgrounds-3", @@ -177,6609 +402,6366 @@ window.Specs = { } }, - "css-images-3": { - "title": "CSS Images Module Level 3", + "css-box-4": { + "title": "CSS Box Model Module Level 4", "links": { - "tr": "css3-images", - "dev": "css-images-3" + "tr": "css-box-4", + "dev": "css-box-4" }, - "values": { - "properties": [ - "background-image", - "list-style-image", - "border-image", - "cursor", - "content" - ], - "linear-gradient()": { + "properties": { + "margin-trim": { "links": { - "tr": "#linear-gradients", - "dev": "#linear-gradients" + "tr": "#margin-trim", + "dev": "#margin-trim" }, - "tests": [ - "linear-gradient(white, black)", - "linear-gradient(to right, white, black)", - "linear-gradient(45deg, white, black)", - "linear-gradient(white 50%, black)", - "linear-gradient(white 5px, black)", - "linear-gradient(white, #f06, black)", - "linear-gradient(currentColor, black)", - "linear-gradient(red -50px, white calc(-25px + 50%), blue 100%)" - ] - }, - "radial-gradient()": { - "links": { - "tr": "#radial-gradients", - "dev": "#radial-gradients" - }, - "tests": [ - "radial-gradient(white, black)", - "radial-gradient(circle, white, black)", - "radial-gradient(ellipse, white, black)", - "radial-gradient(closest-corner, white, black)", - "radial-gradient(circle closest-corner, white, black)", - "radial-gradient(farthest-side, white, black)", - "radial-gradient(circle farthest-side, white, black)", - "radial-gradient(50%, white, black)", - "radial-gradient(60% 60%, white, black)"/*, - "radial-gradient(at 60% 60%, white, black)", - "radial-gradient(30% 30% at 20% 20%, white, black)", - "radial-gradient(5em circle at top left, yellow, blue)", - "radial-gradient(circle farthest-side at top left, white, black)"*/ - ] - }, - "repeating-linear-gradient()": { + "tests": ["none", "in-flow", "all"] + } + } + }, + + "css-break-3": { + "title": "CSS Fragmentation Module Level 3", + "links": { + "tr": "css-break-3", + "dev": "css-break-3" + }, + "properties": { + "break-before": { "links": { - "tr": "#repeating-gradients", - "dev": "#repeating-gradients" + "tr": "#break-between", + "dev": "#break-between" }, - "tests": "repeating-linear-gradient(white, black)" + "tests": ["auto", "avoid", "avoid-page", "page", "left", "right", "recto", "verso", "avoid-column", "column", "avoid-region", "region "] }, - "repeating-radial-gradient()": { + "break-after": { "links": { - "tr": "#repeating-gradients", - "dev": "#repeating-gradients" + "tr": "#break-between", + "dev": "#break-between" }, - "tests": "repeating-radial-gradient(white, black)" + "tests": ["auto", "avoid", "avoid-page", "page", "left", "right", "recto", "verso", "avoid-column", "column", "avoid-region", "region "] }, - }, - "properties": { - "object-fit": { + "break-inside": { "links": { - "tr": "#object-fit", - "dev": "#the-object-fit" + "tr": "#break-within", + "dev": "#break-within" }, - "tests": ["fill", "contain", "cover", "none", "scale-down"] + "tests": ["auto", "avoid", "avoid-page", "avoid-column", "avoid-region "] }, - "object-position": { + "box-decoration-break": { "links": { - "tr": "#object-position", - "dev": "#the-object-position" + "tr": "#break-decoration", + "dev": "#break-decoration" }, - "tests": ["50% 50%", "center", "top right", "bottom 10px right 20px"] + "tests": ["slice", "clone"] }, - "image-orientation": { + "orphans": { "links": { - "tr": "#image-orientation", - "dev": "#the-image-orientation" + "tr": "#widows-orphans", + "dev": "#widows-orphans" }, - "tests": ["from-image", "0deg", "90deg", "45deg", "45deg flip", "1turn", "100grad", "2rad"] + "tests": ["1", "2"] }, - "image-rendering": { + "widows": { "links": { - "tr": "#the-image-rendering", - "dev": "#the-image-rendering" + "tr": "#widows-orphans", + "dev": "#widows-orphans" }, - "tests": ["auto", "smooth", "high-quality", "crisp-edges", "pixelated"] - }, + "tests": ["1", "2"] + } } }, - "css-images-4": { - "title": "CSS Images Module Level 4", + "css-cascade-3": { + "title": "CSS Cascading and Inheritance Level 3", "links": { - "tr": "css-images-4", - "dev": "css-images-4" + "tr": "css-cascade-3", + "dev": "css-cascade-3" }, "values": { "properties": [ + "color", + "font-weight", "background-image", - "list-style-image", - "border-image", - "cursor", - "content" + "width" ], - "linear-gradient()": { - "links": { - "tr": "#linear-gradients", - "dev": "#linear-gradients" - }, - "tests": [ - "linear-gradient(45deg, #f06 25%, yellow 25% 50%, #f06 50% 75%, yellow 75%)" - ] - }, - "radial-gradient()": { - "links": { - "tr": "#radial-gradients", - "dev": "#radial-gradients" - }, - "tests": [ - "radial-gradient(center, red 0% 25%, blue 25% 75%, red 75% 100%)" - ] - }, - "conic-gradient()": { - "links": { - "tr": "#conic-gradients", - "dev": "#conic-gradients" - }, - "tests": [ - "conic-gradient(white, black)", - "conic-gradient(from 5deg, white, black)", - "conic-gradient(at top left, white, black)", - "conic-gradient(white 50%, black)", - "conic-gradient(white 5deg, black)", - "conic-gradient(white, #f06, black)", - "conic-gradient(currentColor, black)", - "conic-gradient(black 25%, white 0deg 50%, black 0deg 75%, white 0deg)" - ] - }, - "repeating-conic-gradient()": { - "links": { - "tr": "#repeating-gradients", - "dev": "#repeating-gradients" - }, - "tests": [ - "repeating-conic-gradient(white, black)", - "repeating-conic-gradient(hsla(0, 0%, 100%, .2) 0deg 15deg, hsla(0, 0%, 100%, 0) 0deg 30deg)" - ] - }, - "image()": { - "links": { - "tr": "#image-notation", - "dev": "#image-notation" - }, - "tests": [ - "image('sprites.png#xywh=10,30,60,20')", - "image('wavy.svg', 'wavy.png' , 'wavy.gif')", - "image('dark.png', black)", - "image(green)" - ] - }, - "image-set()": { + "unset": { "links": { - "tr": "#image-set-notation", - "dev": "#image-set-notation" + "tr": "#inherit-initial", + "dev": "#inherit-initial" }, - "tests": [ - "image-set('foo.png' 1x, 'foo-2x.png' 2x, 'foo-print.png' 600dpi)", - "image-set(linear-gradient(green, green) 1x, url(foobar.png) 2x)", - "image-set(linear-gradient(red, red), url(foobar.png) 2x)", - "image-set(url(foobar.png) 2x)", - "image-set(url(foobar.png) 1x, url(bar.png) 2x, url(baz.png) 3x)", - "image-set('foobar.png', 'bar.png' 2x, url(baz.png) 3x)", - "image-set(image-set('foobar.png', 'bar.png' 2x) 1x, url(baz.png) 3x)", - "image-set(url(foobar.png) type('image/png'))", - "image-set(url(foobar.png) 1x type('image/png'))", - "image-set(url(foobar.png) type('image/png') 1x)" - ] - }, - "element()": { + "tests": "unset" + } + }, + "properties": { + "all": { "links": { - "tr": "#element-notation", - "dev": "#element-notation" + "tr": "#all-shorthand", + "dev": "#all-shorthand" }, - "tests": "element(#foo)" - }, - "cross-fade()": { + "tests": ["initial", "inherit", "unset"] + } + } + }, + + "css-cascade-4": { + "title": "CSS Cascading and Inheritance Level 4", + "links": { + "tr": "css-cascade-4", + "dev": "css-cascade-4" + }, + "values": { + "properties": [ + "color", + "font-weight", + "background-image", + "all" + ], + "revert": { "links": { - "tr": "#cross-fade-function", - "dev": "#cross-fade-function" + "tr": "#default", + "dev": "#default" }, - "tests": [ - "cross-fade(url(a.png), url(b.png))", - "cross-fade(url(a.png) 50%, url(b.png))", - "cross-fade(url(a.png) 50%, white)" - ] + "tests": "revert" } }, "properties": { - "image-resolution": { + "all": { "links": { - "tr": "#the-image-resolution", - "dev": "#the-image-resolution" + "tr": "#all-shorthand", + "dev": "#all-shorthand" }, - "tests": [ - "from-image", "from-image snap", "snap from-image", - "1dppx", "1dpcm", "300dpi", "from-image 300dpi", "300dpi from-image", "300dpi from-image snap" - ] + "tests": "revert" } } }, - "selectors-3": { - "title": "Selectors Level 3", + "css-cascade-5": { + "title": "CSS Cascading and Inheritance Level 5", "links": { - "tr": "selectors-3", - "dev": "selectors-3", - "mdn": "Glossary/CSS_Selector" + "tr": "css-cascade-5", + "dev": "css-cascade-5" }, - "selectors": { - "Sibling combinator": { + "values": { + "properties": [ + "color", + "font-weight", + "background-image", + "all" + ], + "revert-layer": { "links": { - "tr": "#sibling-combinators", - "dev": "#sibling-combinators", - "mdn": "General_sibling_combinator" + "tr": "#revert-layer", + "dev": "#revert-layer" }, - "tests": "foo ~ bar" - }, - "::before": { + "tests": "revert-layer" + } + }, + "properties": { + "all": { "links": { - "tr": "#gen-content", - "dev": "#gen-content" + "tr": "#revert-layer", + "dev": "#revert-layer" }, - "tests": "::before" - }, - "::after": { + "tests": "revert-layer" + } + }, + "@rules": { + "@layer": { "links": { - "tr": "#gen-content", - "dev": "#gen-content" + "tr": "#at-layer", + "dev": "#at-layer" }, - "tests": "::after" - }, - "::first-letter": { + "tests": [ + "@layer framework {\n h1, h2 { color: maroon; background: white;\n}", + "@layer framework {\n h1, h2 { color: maroon; background: white;}\n \n @media (prefers-color-scheme: dark) {\n h1, h2 { color: red; background: black; }\n }\n}", + "@layer framework;", + "@layer default, framework;" + ] + } + } + }, + + "css-color-3": { + "title": "CSS Color Module Level 3", + "links": { + "tr": "css-color-3", + "dev": "css-color-3" + }, + "values": { + "properties": [ + "color", + "background-color", + "border-color", + "text-decoration-color", + "column-rule-color" + ], + "rgba": { "links": { - "tr": "#first-letter", - "dev": "#first-letter" + "tr": "#rgba-color", + "dev": "#rgba-color", + "mdn": "color_value/rgba()" }, - "tests": "::first-letter" + "tests": "rgba(0,0,0,.5)" }, - "::first-line": { + "#RGB": { "links": { - "tr": "#first-line", - "dev": "#first-line" + "tr": "#rgb-color", + "dev": "#rgb-color", + "mdn": "color_value" }, - "tests": "::first-line" + "tests": ["#F06", "#FF0066"] }, - "[att^=val]": { + "hsl": { "links": { - "tr": "#attribute-substrings", - "dev": "#attribute-substrings", - "mdn": "Attribute_selectors" + "tr": "#hsl-color", + "dev": "#hsl-color", + "mdn": "color_value/hsl()" }, - "tests": ["[att^=val]", "[att^=\"val\"]"] + "tests": "hsl(0,0%,0%)" }, - "[att*=val]": { + "hsla": { "links": { - "tr": "#attribute-substrings", - "dev": "#attribute-substrings", - "mdn": "Attribute_selectors" + "tr": "#hsla-color", + "dev": "#hsla-color", + "mdn": "color_value/hsla()" }, - "tests": ["[att*=val]", "[att*=\"val\"]"] + "tests": "hsl(0,0%,0%,.5)" }, - "[att$=val]": { + "transparent": { "links": { - "tr": "#attribute-substrings", - "dev": "#attribute-substrings", - "mdn": "Attribute_selectors" + "tr": "#transparent", + "dev": "#transparent", + "mdn": "color_value" }, - "tests": ["[att$=val]", "[att$=\"val\"]"] + "tests": "transparent" }, - "Namespaces": { + "currentColor": { "links": { - "tr": "#attrnmsp", - "dev": "#attrnmsp", - "mdn": "CSS_Namespaces" + "tr": "#currentcolor", + "dev": "#currentcolor", + "mdn": "color_value" }, - "tests": ["*|html", "[*|attr]", "[*|attr=val]", "*|html[*|attr]"] - }, - ":target": { + "tests": "currentColor" + } + }, + "properties": { + "opacity": { "links": { - "tr": "#target-pseudo", - "dev": "#target-pseudo" + "tr": "#transparency", + "dev": "#transparency" }, - "tests": ":target" - }, - ":enabled": { + "tests": ["-5", "0", ".5", "1", "2"] + } + } + }, + + "css-color-4": { + "title": "CSS Color Module Level 4", + "links": { + "tr": "css-color-4", + "dev": "css-color-4" + }, + "values": { + "properties": [ + "color", + "background-color", + "border-color", + "text-decoration-color", + "column-rule-color" + ], + "comma-less colors": { "links": { - "tr": "#enableddisabled", - "dev": "#enableddisabled" + "tr": "#funcdef-rgb", + "dev": "#funcdef-rgb", + "mdn": "color_value" }, - "tests": ":enabled" + "tests": ["rgb(0% 20% 70%)", "rgb(0 64 185)", "hsl(0 0% 0%)"] }, - ":disabled": { + "/ alpha": { "links": { - "tr": "#enableddisabled", - "dev": "#enableddisabled" + "tr": "#funcdef-rgb", + "dev": "#funcdef-rgb", + "mdn": "color_value" }, - "tests": ":disabled" + "tests": ["rgba(0% 20% 70% / 50%)", "rgba(0% 20% 70% / .5)", "rgba(0 64 185 / 50%)", "rgba(0 64 185 / .5)", "hsla(0 0% 0% /.5)"] }, - ":checked": { + "optional alpha": { "links": { - "tr": "#checked", - "dev": "#checked" + "tr": "#funcdef-rgb", + "dev": "#funcdef-rgb", + "mdn": "color_value" }, - "tests": ":checked" + "tests": ["rgb(0% 20% 70% / 50%)", "rgb(0% 20% 70% / .5)", "rgb(0 64 185 / 50%)", "rgb(0 64 185 / .5)", "hsl(0 0% 0% / .5)"] }, - ":indeterminate": { + "Hex with alpha": { "links": { - "tr": "#indeterminate", - "dev": "#indeterminate" + "tr": "#hex-notation", + "dev": "#hex-notation", + "mdn": "color_value" }, - "tests": ":indeterminate" + "tests": ["#000F", "#000000FF"] }, - ":root": { + "rebeccapurple": { "links": { - "tr": "#root-pseudo", - "dev": "#root-pseudo" + "tr": "#named-colors", + "dev": "#named-colors", + "mdn": "color_value" }, - "tests": ":root" + "tests": "rebeccapurple" }, - ":nth-child()": { + "system colors": { "links": { - "tr": "#nth-child-pseudo", - "dev": "#nth-child-pseudo" + "tr": "#css-system-colors", + "dev": "#css-system-colors", + "mdn": "color_value" }, "tests": [ - ":nth-child(even)", ":nth-child(odd)", - ":nth-child(n)", ":nth-child(-n)", ":nth-child(0n)", - ":nth-child(1)", ":nth-child(-1)", ":nth-child(0)", - ":nth-child(n+1)", ":nth-child(3n+1)", ":nth-child(3n + 1)", - ":nth-child(-n+1)", ":nth-child(-n-1)", ":nth-child(3n-1)" + "Canvas", "CanvasText", "LinkText", "VisitedText", "ActiveText", "ButtonFace", "Field", "FieldText", + "Highlight", "HighlightText", "GrayText" ] }, - ":nth-last-child()": { + "hwb()": { "links": { - "tr": "#nth-last-child-pseudo", - "dev": "#nth-last-child-pseudo" + "tr": "#the-hwb-notation", + "dev": "#the-hwb-notation", + "mdn": "color_value/hwb()" }, - "tests": [ - ":nth-last-child(even)", ":nth-last-child(odd)", - ":nth-last-child(n)", ":nth-last-child(-n)", ":nth-last-child(0n)", - ":nth-last-child(1)", ":nth-last-child(-1)", ":nth-last-child(0)", - ":nth-last-child(n+1)", ":nth-last-child(3n+1)", ":nth-last-child(3n + 1)", - ":nth-last-child(-n+1)", ":nth-last-child(-n-1)", ":nth-last-child(3n-1)" - ] + "tests": ["hwb(0 0% 0%)", "hwb(0 0% 0% / .5)"] }, - ":nth-of-type()": { + "lab()": { "links": { - "tr": "#nth-of-type-pseudo", - "dev": "#nth-of-type-pseudo" + "tr": "#specifying-lab-lch", + "dev": "#specifying-lab-lch", + "mdn": "color_value/lab()" }, - "tests": [ - ":nth-of-type(even)", ":nth-of-type(odd)", - ":nth-of-type(n)", ":nth-of-type(-n)", ":nth-of-type(0n)", - ":nth-of-type(1)", ":nth-of-type(-1)", ":nth-of-type(0)", - ":nth-of-type(n+1)", ":nth-of-type(3n+1)", ":nth-of-type(3n + 1)", - ":nth-of-type(-n+1)", ":nth-of-type(-n-1)", ":nth-of-type(3n-1)" - ] + "tests": ["lab(0% 0 0)", "lab(0% 0 0 /.5)"] }, - ":nth-last-of-type()": { + "oklab()": { "links": { - "tr": "#nth-last-of-type-pseudo", - "dev": "#nth-last-of-type-pseudo" + "tr": "#specifying-oklab-lch", + "dev": "#specifying-oklab-lch", + "mdn": "color_value/oklab()" }, - "tests": [ - ":nth-last-of-type(even)", ":nth-last-of-type(odd)", - ":nth-last-of-type(n)", ":nth-last-of-type(-n)", ":nth-last-of-type(0n)", - ":nth-last-of-type(1)", ":nth-last-of-type(-1)", ":nth-last-of-type(0)", - ":nth-last-of-type(n+1)", ":nth-last-of-type(3n+1)", ":nth-last-of-type(3n + 1)", - ":nth-last-of-type(-n+1)", ":nth-last-of-type(-n-1)", ":nth-last-of-type(3n-1)" - ] + "tests": ["oklab(0% 0 0)", "oklab(40.101% 0.1147 0.0453 / .5)"] }, - ":last-child": { + + "lch()": { "links": { - "tr": "#last-child-pseudo", - "dev": "#last-child-pseudo" + "tr": "#specifying-lch-lch", + "dev": "#specifying-lch-lch", + "mdn": "color_value/lch()" }, - "tests": ":last-child" + "tests": ["lch(0% 0 0)", "lch(none 0% none)", "lch(0% 0 0 / .5)"] }, - ":only-child": { + "oklch()": { "links": { - "tr": "#only-child-pseudo", - "dev": "#only-child-pseudo" - }, - "tests": ":only-child" - }, - ":first-of-type": { - "links": { - "tr": "#first-of-type-pseudo", - "dev": "#first-of-type-pseudo" - }, - "tests": ":first-of-type" - }, - ":last-of-type": { - "links": { - "tr": "#last-of-type-pseudo", - "dev": "#last-of-type-pseudo" + "tr": "#specifying-oklch-lch", + "dev": "#specifying-oklch-lch", + "mdn": "color_value/oklch()" }, - "tests": ":last-of-type" + "tests": ["oklch(0% 0 0)", "oklch(40.101% 0.12332 21.555 / .5)"] }, - ":only-of-type": { + "color()": { "links": { - "tr": "#only-of-type-pseudo", - "dev": "#only-of-type-pseudo" + "tr": "#color-function", + "dev": "#color-function", + "mdn": "color_value/color()" }, - "tests": ":only-of-type" + "tests": [ + "color(.2 .4 .6)", + "color(display-p3 .2. 4 .6)", + "color(foo .2 .4 .6)", + "color(.2 .4 .6 / .5)", + "color(display-p3 .2 .4 .6 / .5)", + "color(--foo .2 .4 .6 / .5)", + "color(.2 .4 .6, #123456)", + "color(display-p3 .2. 4 .6, #654321)", + "color(20% 40% 60%)", + "color(display-p3 20% 40% 60%)", + "color(foo 20% 40% 60%)", + "color(20% 40% 60% / .5)", + "color(image-p3 20% 40% 60% / .5)", + "color(--foo 20% 40% 60% / .5)", + "color(20% 40% 60%, #123456)", + "color(display-p3 20% 40% 60%, #654321)", + "color(--mycmyk 0% 20% 30% 5%)" + ] }, - ":empty": { + "device-cmyk()": { "links": { - "tr": "#empty-pseudo", - "dev": "#empty-pseudo" + "tr": "#cmyk-colors", + "dev": "#cmyk-colors", + "mdn": "color_value/device-cmyk()" }, - "tests": ":empty" - }, - ":not()": { + "tests": ["device-cmyk(.2 .3 .4 .5)", "device-cmyk(.2 .3 .4 .5 / .5)", "device-cmyk(.2 .3 .4 .5 / 50%)"] + } + }, + "properties": { + "opacity": { "links": { - "tr": "#negation", - "dev": "#negation" + "tr": "#transparency", + "dev": "#transparency" }, - "tests": [":not(*)", ":not(element)", ":not(.class):not(#id):not([attr]):not(:link)"] + "tests": ["45%"] } } }, - "selectors-4": { - "title": "Selectors Level 4", + "css-color-5": { + "title": "CSS Color Module Level 5", "links": { - "tr": "selectors-4", - "dev": "selectors-4" + "dev": "css-color-5" }, - "selectors": { - ":indeterminate": { + "values": { + "properties": [ + "color", + "background-color", + "border-color", + "text-decoration-color", + "column-rule-color" + ], + "color-mix()": { "links": { - "tr": "#indeterminate", - "dev": "#indeterminate" + "dev": "#color-mix", + "mdn": "color_value" }, - "tests": ":indeterminate" + "tests": [ + "color-mix(in srgb, teal 65%, olive)", + "color-mix(in srgb, rgb(255, 0, 0, .2) 65%, olive)", + "color-mix(in srgb, currentColor, rgba(0, 0, 0, .5) 65%", + "color-mix(in srgb, currentColor 10%, rgba(0, 0, 0, .5) 65%", + "color-mix(in lch, teal 65%, olive)", + "color-mix(in hsl, teal 65%, olive)", + "color-mix(in hwb, teal 65%, olive)", + "color-mix(in xyz, teal 65%, olive)", + "color-mix(in lab, teal 65%, olive)", + ] }, - ":blank": { + "color-contrast()": { "links": { - "tr": "#blank", - "dev": "#blank" + "dev": "#colorcontrast", + "mdn": "color_value" }, - "tests": ":blank" + "tests": [ + "color-contrast(wheat vs tan, sienna, #b22222, #d2691e)", + "color-contrast(hsl(200 50% 80%) vs hsl(200 83% 23%), purple, hsl(300 100% 25%))" + ] }, - ":placeholder-shown": { + "color-adjust()": { "links": { - "tr": "#placeholder", - "dev": "#placeholder" + + "dev": "#coloradjust", + "mdn": "color_value" }, - "tests": ":placeholder-shown" + "tests": [ + "color-adjust(peru lightness -20%)" + ] }, - ":default": { + + "relative color": { "links": { - "tr": "#the-default-pseudo", - "dev": "#the-default-pseudo" + "dev": "#relative-colors", + "mdn": "color_value" }, - "tests": ":default" - }, - ":valid": { + "tests": [ + "rgb(from indianred 255 g b)", + "hsl(from lightseagreen calc(h+180) s l)", + "lab(from orchid l 0 0)", + "lch(from peru calc(l * 0.8) c h)" + ] + } + } + }, + + "css-color-adjust-1": { + "title": "CSS Color Adjustment Module Level 1", + "links": { + "tr": "css-color-adjust-1", + "dev": "css-color-adjust-1" + }, + "properties": { + "color-adjust": { "links": { - "tr": "#validity-pseudos", - "dev": "#validity-pseudos" + "tr": "#perf", + "dev": "#perf" }, - "tests": ":valid" + "tests": ["economy", "exact"] }, - ":invalid": { + "forced-color-adjust": { "links": { - "tr": "#validity-pseudos", - "dev": "#validity-pseudos" + "tr": "#forced", + "dev": "#forced" }, - "tests": ":invalid" + "tests": ["auto", "none", "preserve-parent-color"] }, - ":in-range": { + "color-scheme": { "links": { - "tr": "#range-pseudos", - "dev": "#range-pseudos" + "tr": "#color-scheme-prop", + "dev": "#color-scheme-prop" }, - "tests": ":in-range" - }, - ":out-of-range": { + "tests": [ + "normal", "light", "dark", "light dark", "dark light", "only light", "light only", + "light light", "dark dark", "light purple", "purple dark interesting", "none", "light none" + ] + } + } + }, + + "css-conditional-3": { + "title": "CSS Conditional Rules Module Level 3", + "links": { + "tr": "css3-conditional", + "dev": "css-conditional-3" + }, + "@rules": { + "@supports": { "links": { - "tr": "#range-pseudos", - "dev": "#range-pseudos" + "tr": "#at-supports", + "dev": "#at-supports" }, - "tests": ":out-of-range" - }, - ":user-invalid": { + "tests": [ + "@supports (color: green) {}", + "@supports not (foo: bar) {}", + "@supports (color: green) or (color: red) {}", + "@supports (color: green) and (color: red) {}", + "@supports (color: green) and (not (foo: bar)) {}", + "@supports (color: green) or (not (foo: bar)) {}" + ] + } + } + }, + + "css-conditional-4": { + "title": "CSS Conditional Rules Module Level 4", + "links": { + "tr": "css-conditional-4", + "dev": "css-conditional-4" + }, + "@rules": { + "@supports": { "links": { - "tr": "#user-invalid-pseudo", - "dev": "#user-invalid-pseudo" + "tr": "#at-supports-ext", + "dev": "#at-supports-ext" }, - "tests": ":user-invalid" - }, - ":required": { + "tests": [ + "@supports selector(::before) {}", + "@supports not selector(::-webkit-unknown-pseudo) {}", + "@supports selector(div, div) {}" + ] + } + } + }, + + "css-conditional-5": { + "title": "CSS Conditional Rules Module Level 5", + "links": { + "tr": "css-conditional-5", + "dev": "css-conditional-5" + }, + "@rules": { + "@supports": { "links": { - "tr": "#opt-pseudos", - "dev": "#opt-pseudos" + "tr": "#at-supports-ext", + "dev": "#at-supports-ext" }, - "tests": ":required" + "tests": [ + "@supports font-tech(features-opentype) {}", + "@supports font-format(woff2) {}" + ] }, - ":optional": { + "@when": { "links": { - "tr": "#opt-pseudos", - "dev": "#opt-pseudos" + "tr": "#when-rule", + "dev": "#when-rule" }, - "tests": ":optional" - }, - ":read-only": { - "links": { - "tr": "#rw-pseudos", - "dev": "#rw-pseudos" - }, - "tests": ":read-only" + "tests": [ + "@when media(min-width: 200px) {}", + "@when media(width >= 200px) {}", + "@when media(pointer) {}", + "@when supports(display: flex) {}" + ] }, - ":read-write": { + "@else": { "links": { - "tr": "#rw-pseudos", - "dev": "#rw-pseudos" + "tr": "#else-rule", + "dev": "#else-rule" }, - "tests": ":read-write" - }, - ":focus-visible": { + "tests": [ + "@when media(min-width: 200px) {} @else {}", + "@when media(min-width: 200px) {} @else media(min-width: 100px) {}", + "@when media(min-width: 200px) {} @else media(min-width >= 100px) {}", + "@when media(min-width: 200px) {} @else supports(display: flex) {}", + "@when media(min-width: 200px) {} @else media(min-width: 100px) {} @else {}" + ] + } + } + }, + + "css-containment-1": { + "title": "CSS Containment Module Level 1", + "links": { + "tr": "css-contain-1", + "dev": "css-contain-1" + }, + "properties": { + "contain": { "links": { - "tr": "#the-focus-visible-pseudo", - "dev": "#the-focus-visible-pseudo" + "tr": "#contain-property", + "dev": "#contain-property" }, - "tests": ":focus-visible" - }, - ":focus-within": { + "tests": [ + "none", "strict", "content", "size", "layout", "paint", + "size layout", "size paint", "size layout paint" + ] + } + } + }, + + "css-containment-2": { + "title": "CSS Containment Module Level 2", + "links": { + "tr": "css-contain-2", + "dev": "css-contain-2" + }, + "properties": { + "contain": { "links": { - "tr": "#the-focus-within-pseudo", - "dev": "#the-focus-within-pseudo" + "tr": "#contain-property", + "dev": "#contain-property" }, - "tests": ":focus-within" + "tests": [ + "style", + "size style", "size layout style", "size layout style paint" + ] }, - ":current": { + "content-visibility": { "links": { - "tr": "#the-current-pseudo", - "dev": "#the-current-pseudo" + "tr": "#content-visibility", + "dev": "#content-visibility" }, - "tests": ":current" - }, - ":current()": { + "tests": ["visible", "auto", "hidden"] + } + } + }, + + "css-containment-3": { + "title": "CSS Containment Module Level 3", + "links": { + "tr": "css-contain-3", + "dev": "css-contain-3" + }, + "@rules": { + "@container": { "links": { - "tr": "#the-current-pseudo", - "dev": "#the-current-pseudo" + "tr": "#container-rule", + "dev": "#container-rule" }, - "tests": ":current(p, li, dt, dd)" - }, - ":past": { + "tests": [ + "@container size(width >= 150px) { div { margin: 10px } }", + "@container size(height >= 150px) { div { margin: 10px } }", + "@container size(inline-size >= 150px) { div { margin: 10px } }", + "@container size(block-size >= 150px) { div { margin: 10px } }", + "@container size(aspect-ratio >= 1 / 1) { div { margin: 10px } }", + "@container size(orientation = portrait) { div { margin: 10px } }", + "@container style(pointer) { div { margin: 10px } }", + "@container style(pointer: fine) { div { margin: 10px } }", + "@container x size(width >= 150px) { div { margin: 10px } }", + "@container name(x) size(width >= 150px) { div { margin: 10px } }", + "@container type(inline-size) size(width >= 150px) { div { margin: 10px } }", + "@container name(x) type(inline-size) size(width >= 150px) { div { margin: 10px } }" + ] + } + }, + "values": { + "properties": [ + "width" + ], + "cqw": { "links": { - "tr": "#the-past-pseudo", - "dev": "#the-past-pseudo" + "tr": "#container-lengths", + "dev": "#container-lengths", + "mdn": "length" }, - "tests": ":past" + "tests": "5cqw" }, - ":future": { + "cqh": { "links": { - "tr": "#the-future-pseudo", - "dev": "#the-future-pseudo" + "tr": "#container-lengths", + "dev": "#container-lengths", + "mdn": "length" }, - "tests": ":future" + "tests": "5cqh" }, - ":scope": { + "cqi": { "links": { - "tr": "#the-scope-pseudo", - "dev": "#the-scope-pseudo" + "tr": "#container-lengths", + "dev": "#container-lengths", + "mdn": "length" }, - "tests": ":scope" + "tests": "5cqi" }, - ":any-link": { + "cqb": { "links": { - "tr": "#the-any-link-pseudo", - "dev": "#the-any-link-pseudo" + "tr": "#container-lengths", + "dev": "#container-lengths", + "mdn": "length" }, - "tests": ":any-link" + "tests": "5cqb" }, - ":local-link": { + "cqmin": { "links": { - "tr": "#the-local-link-pseudo", - "dev": "#the-local-link-pseudo" + "tr": "#container-lengths", + "dev": "#container-lengths", + "mdn": "length" }, - "tests": ":local-link" + "tests": "5cqmin" }, - ":target-within": { + "cqmax": { "links": { - "tr": "#the-target-within-pseudo", - "dev": "#the-target-within-pseudo" + "tr": "#container-lengths", + "dev": "#container-lengths", + "mdn": "length" }, - "tests": ":target-within" - }, - ":lang()": { + "tests": "5cqmax" + } + }, + "properties": { + "container-type": { "links": { - "tr": "#the-lang-pseudo", - "dev": "#the-lang-pseudo" + "tr": "#container-type", + "dev": "#container-type" }, - "tests": [":lang(zh, \"*-hant\")"] + "tests": [ + "none", + "style", + "state", + "size", + "inline-size", + "block-size", + "style state", + "style state size", + "style state inline-size", + "style state block-size" + ] }, - ":not()": { + "container-name": { "links": { - "tr": "#negation", - "dev": "#negation" + "tr": "#container-name", + "dev": "#container-name" }, - "tests": [":not(em, #foo)"] + "tests": [ + "none", + "x", + "\"x\"", + "x y" + ] }, - ":where()": { + "container": { "links": { - "tr": "#zero-matches", - "dev": "#zero-matches" + "tr": "#container-shorthand", + "dev": "#container-shorthand" }, - "tests": [":where(em, #foo)", ":where(:not(:hover))"] - }, - ":is()": { + "tests": [ + "none", + "style", + "size / x" + ] + } + } + }, + + "css-content-3": { + "title": "CSS Generated Content Module Level 3", + "links": { + "tr": "css-content-3", + "dev": "css-content-3" + }, + "properties": { + "quotes": { "links": { - "tr": "#matches", - "dev": "#matches" + "tr": "#quotes", + "dev": "#quotes" }, - "tests": [":is(em, #foo)", ":is(:not(:hover))"] + "tests": ["auto"] }, - ":has()": { + "content": { "links": { - "tr": "#relational", - "dev": "#relational" + "tr": "#alt", + "dev": "#alt" }, "tests": [ - "a:has(> img)", - "dt:has(+ dt)", - "section:not(:has(h1, h2, h3, h4, h5, h6))", - "section:has(:not(h1, h2, h3, h4, h5, h6))" + "url(./img/star.png) / \"New!\"", + "\"\\25BA\" / \"\"" ] - }, - ":defined": { + } + } + }, + + "css-counter-styles-3": { + "title": "CSS Counter Styles Level 3", + "links": { + "tr": "css-counter-styles-3", + "dev": "css-counter-styles-3" + }, + "@rules": { + "@counter-style": { "links": { - "tr": "#the-defined-pseudo", - "dev": "the-defined-pseudo" + "tr": "#the-counter-style-rule", + "dev": "#the-counter-style-rule" }, - "tests": [":defined"] - }, - ":nth-child()": { + "tests": "@counter-style foo {\n system: numeric;\n symbols: '0' '1' '2' '3' '4' '5' '6' '7' '8' '9';\n}" + } + }, + "descriptors": { + "@counter-style example/system": { "links": { - "tr": "#the-nth-child-pseudo", - "dev": "#the-nth-child-pseudo" + "tr": "#counter-style-system", + "dev": "#counter-style-system" }, - "tests": [":nth-child(-n+3 of li.important)", ":nth-child(even of :not([hidden])"] - }, - "||": { - "links": { - "tr": "#the-column-combinator", - "dev": "#the-column-combinator" + "required" : { + '*' : { "descriptor" : "system: alphabetic; symbols: A B C D; additive-symbols: 1000 M, 500 C"}, + 'extends decimal' : { } }, - "tests": "foo || bar" + "tests": [ + "cyclic", "numeric", "alphabetic", "symbolic", "additive", "fixed 3", "extends decimal" + ] }, - ":nth-col()": { + "@counter-style example/negative": { "links": { - "tr": "#the-nth-col-pseudo", - "dev": "#the-nth-col-pseudo" + "tr": "#counter-style-negative", + "dev": "#counter-style-negative" + }, + "required" : { + '*' : { "descriptor" : "system: alphabetic; symbols: A B C D; additive-symbols: 1000 M, 500 C"} }, "tests": [ - ":nth-col(even)", ":nth-col(odd)", - ":nth-col(n)", ":nth-col(-n)", ":nth-col(0n)", - ":nth-col(1)", ":nth-col(-1)", ":nth-col(0)", - ":nth-col(n+1)", ":nth-col(3n+1)", ":nth-col(3n + 1)", - ":nth-col(-n+1)", ":nth-col(-n-1)", ":nth-col(3n-1)" + "'-'", "'(' ')'" ] }, - ":nth-last-col()": { + "@counter-style example/prefix": { "links": { - "tr": "#the-nth-last-col-pseudo", - "dev": "#the-nth-last-col-pseudo" + "tr": "#counter-style-prefix", + "dev": "#counter-style-prefix" + }, + "required" : { + '*' : { "descriptor" : "system: alphabetic; symbols: A B C D; additive-symbols: 1000 M, 500 C"} }, "tests": [ - ":nth-last-col(even)", ":nth-last-col(odd)", - ":nth-last-col(n)", ":nth-last-col(-n)", ":nth-last-col(0n)", - ":nth-last-col(1)", ":nth-last-col(-1)", ":nth-last-col(0)", - ":nth-last-col(n+1)", ":nth-last-col(3n+1)", ":nth-last-col(3n + 1)", - ":nth-last-col(-n+1)", ":nth-last-col(-n-1)", ":nth-last-col(3n-1)" + "»", "url(https://lea.verou.me/mark.svg)" ] }, - "[att^=val i]": { + "@counter-style example/suffix": { "links": { - "tr": "#attribute-case", - "dev": "#attribute-case", - "mdn": "Attribute_selectors" + "tr": "#counter-style-suffix", + "dev": "#counter-style-suffix" }, - "tests": ["[att^=val i]", "[att^=\"val\" i]", "[att^=val I]", "[att^=\"val\" I]"] - }, - "[att*=val i]": { - "links": { - "tr": "#attribute-case", - "dev": "#attribute-case", - "mdn": "Attribute_selectors" + "required" : { + '*' : { "descriptor" : "system: alphabetic; symbols: A B C D; additive-symbols: 1000 M, 500 C"} }, - "tests": ["[att*=val i]", "[att*=\"val\" i]", "[att*=val I]", "[att*=\"val\" I]"] + "tests": [ + "»", "url(https://lea.verou.me/mark.svg)" + ] }, - "[att$=val i]": { + "@counter-style example/range": { "links": { - "tr": "#attribute-case", - "dev": "#attribute-case", - "mdn": "Attribute_selectors" + "tr": "#counter-style-range", + "dev": "#counter-style-range" }, - "tests": ["[att$=val i]", "[att$=\"val\" i]", "[att$=val I]", "[att$=\"val\" I]"] - }, - "[att^=val s]": { - "links": { - "tr": "#attribute-case", - "dev": "#attribute-case", - "mdn": "Attribute_selectors" + "required" : { + '*' : { "descriptor" : "system: alphabetic; symbols: A B C D; additive-symbols: 1000 M, 500 C"} }, - "tests": ["[att^=val s]", "[att^=\"val\" s]", "[att^=val S]", "[att^=\"val\" S]"] + "tests": [ + "auto", "2 5", "infinite 10", "10 infinite", "infinite infinite", "2 5, 8 10", "infinite 8, 6 infinite" + ] }, - "[att*=val s]": { + "@counter-style example/symbols": { "links": { - "tr": "#attribute-case", - "dev": "#attribute-case", - "mdn": "Attribute_selectors" + "tr": "#counter-style-symbols", + "dev": "#counter-style-symbols" }, - "tests": ["[att*=val s]", "[att*=\"val\" s]", "[att*=val S]", "[att*=\"val\" S]"] + "required" : { + '*' : { "descriptor" : "system: alphabetic"}, + 'custom-numbers' : { "rule" : "@counter-style custom-numbers { system: fixed; symbols: A B C D E;}"} + }, + "tests": [ + "A B C D E F", + "'\\24B6' '\\24B7' '\\24B8' D E F", + "'0' '1' '2' '4' '5' '6' '7'", + "'1' url('second.svg') '2'", + "url('first.svg') url('second.svg') url('third.svg')", + "custom-numbers" + ] }, - "[att$=val s]": { + "@counter-style example/additive-symbols": { "links": { - "tr": "#attribute-case", - "dev": "#attribute-case", - "mdn": "Attribute_selectors" + "tr": "#additive-system", + "dev": "#descdef-counter-style-additive-symbols" }, - "tests": ["[att$=val s]", "[att$=\"val\" s]", "[att$=val S]", "[att$=\"val\" S]"] - } - } - }, - - "css-pseudo-4": { - "title": "CSS Pseudo-Elements Module Level 4", - "links": { - "tr": "css-pseudo-4", - "dev": "css-pseudo-4" - }, - "selectors": { - "::selection": { - "links": { - "tr": "#selectordef-selection", - "dev": "#selectordef-selection" + "required" : { + '*' : { "descriptor" : "system: additive"} }, - "tests": ["::selection"] + "tests": [ + "3 '0'", "3 '1', 2 '\\2E\\20'", "3 '1', 2 url(symbol.svg)", + ] }, - "::target-text": { + "@counter-style example/pad": { "links": { - "tr": "#selectordef-target-text", - "dev": "#selectordef-target-text" + "tr": "#counter-style-pad", + "dev": "#counter-style-pad" }, - "tests": ["::target-text"] - }, - "::spelling-error": { - "links": { - "tr": "#selectordef-spelling-error", - "dev": "#selectordef-spelling-error" + "required" : { + '*' : { "descriptor" : "system: alphabetic; symbols: A B C D; additive-symbols: 1000 M, 500 C"} }, - "tests": ["::spelling-error"] + "tests": [ + "0 ''", "3 '0'", "'0' 3" + ] }, - "::grammar-error": { + "@counter-style example/fallback": { "links": { - "tr": "#selectordef-grammar-error", - "dev": "#selectordef-grammar-error" + "tr": "#counter-style-fallback", + "dev": "#counter-style-fallback" }, - "tests": ["::grammar-error"] - }, - "::file-selector-button": { - "links": { - "tr": "#marker-pseudo", - "dev": "#marker-pseudo" + "required" : { + '*' : { "descriptor" : "system: alphabetic; symbols: A B C D; additive-symbols: 1000 M, 500 C"} }, - "tests": ["::file-selector-button"] + "tests": [ + "decimal" + ] }, - "::marker": { + "@counter-style example/speak-as": { "links": { - "tr": "#marker-pseudo", - "dev": "#marker-pseudo" + "tr": "#counter-style-speak-as", + "dev": "#counter-style-speak-as" }, - "tests": ["::marker"] - }, - "::placeholder": { + "required" : { + '*' : { "descriptor" : "system: alphabetic; symbols: A B C D; additive-symbols: 1000 M, 500 C"} + }, + "tests": [ + "auto", "bullets", "numbers", "words", "spell-out", "example-counter", + ] + } + } + }, + + "css-display-3": { + "title": "CSS Display Module Level 3", + "links": { + "tr": "css-display-3", + "dev": "css-display-3" + }, + "properties": { + "display": { "links": { - "tr": "#placeholder-pseudo", - "dev": "#placeholder-pseudo" + "tr": "#the-display-properties", + "dev": "#the-display-properties" }, - "tests": ["::placeholder"] + "tests": [ + "run-in", "flow", "flow-root", + "block flow", "inline flow", "run-in flow", + "block flow-root", "inline flow-root", "run-in flow-root", + "block table", "inline table", "run-in table", + "block flex", "inline flex", "run-in flex", + "block grid", "inline grid", "run-in grid", + "block ruby", "inline ruby", "run-in ruby", + "inline list-item", "list-item inline flow", "list-item block flow" + ] } } }, - "css-scoping-1": { - "title": "CSS Scoping Module Level 1", + "css-easing-1": { + "title": "CSS Easing Functions Level 1", "links": { - "tr": "css-scoping-1", - "dev": "css-scoping-1" + "tr": "css-easing-1", + "dev": "css-easing-1" }, - "selectors": { - ":host": { + "properties": { + "transition-timing-function": { "links": { - "tr": "#host-selector", - "dev": "#host-selector" + "tr": "#easing-functions", + "dev": "#easing-functions" }, - "tests": ":host" - }, - ":host()": { - "links": { - "tr": "#host-selector", - "dev": "#host-selector", - "mdn": ":host()" - }, - "tests": [":host(*)", ":host(.foo)"] - }, - ":host-context()": { - "links": { - "tr": "#host-selector", - "dev": "#host-selector", - "mdn": ":host-context()" - }, - "tests": [":host-context(*)", ":host-context(.foo)"] - }, - "::slotted()": { + "tests": ["steps(2, jump-start)", "steps(2, jump-end)", "steps(1, jump-both)", "steps(2, jump-none)"] + } + } + }, + + "css-env-1": { + "title": "Environment Variables Level 1", + "links": { + "dev": "css-env-1" + }, + "values": { + "properties": [ + "width", + "padding" + ], + "env()": { "links": { - "dev": "#slotted-pseudo" + "dev": "#env-function" }, - "tests": ["::slotted(*)", "::slotted(.foo)"] + "tests": [ + "env(safe-area-inset-top)", "env(safe-area-inset-top, 12px)", + "env(safe-area-inset-right)", "env(safe-area-inset-right, 12px)", + "env(safe-area-inset-bottom)", "env(safe-area-inset-bottom, 12px)", + "env(safe-area-inset-left)", "env(safe-area-inset-left, 12px)" + ] } } }, - "css-highlight-api-1": { - "title": "CSS Custom Highlight API Module Level 1", + "css-exclusions-1": { + "title": "CSS Exclusions Module Level 1", "links": { - "tr": "css-highlight-api-1", - "dev": "css-highlight-api-1" + "tr": "css3-exclusions", + "dev": "css-exclusions-1" }, - "selectors": { - '::highlight()' : { + "properties": { + "wrap-flow": { "links": { - "tr": "#custom-highlight-pseudo", - "dev": "#custom-highlight-pseudo" + "tr": "#wrap-flow-property", + "dev": "#wrap-flow-property" }, - "tests": ['::highlight(example-highlight)'] + "tests": ["auto", "both", "start", "end", "minimum", "maximum", "clear"] + }, + "wrap-through": { + "links": { + "tr": "#wrap-through-property", + "dev": "#wrap-through-property" + }, + "tests": ["wrap", "none"] } } }, - /* - * Note: the following media queries must be true in supporting UAs! - */ - "mediaqueries-3": { - "title": "Media Queries Level 3", + "css-flexbox-1": { + "title": "CSS Flexible Box Layout Module Level 1", "links": { - "tr": "css3-mediaqueries", - "dev": "mediaqueries-3" + "tr": "css-flexbox-1", + "dev": "css-flexbox-1", + "mdn": "Glossary/Flexbox" }, - "Media queries": { - "negation": { + "properties": { + "align-content": { "links": { - "tr": "#media0", - "dev": "#media0", - "mdn": "Media_Queries/Using_media_queries" + "tr": "#align-content-property", + "dev": "#align-content-property" }, - "tests": ["not print", "not all and (width:1px)"] + "tests": ["flex-start", "flex-end", "space-between", "space-around"] }, - "width": { + "align-items": { "links": { - "tr": "#width", - "dev": "#width", - "mdn": "Media_Queries/Using_media_queries" + "tr": "#align-items-property", + "dev": "#align-items-property" }, - "tests": ["(width)", "(min-width:1px)", "(max-width:1000000px)"] + "tests": ["flex-start", "flex-end"] }, - "height": { + "align-self": { "links": { - "tr": "#height", - "dev": "#height", - "mdn": "Media_Queries/Using_media_queries" + "tr": "#align-items-property", + "dev": "#align-items-property" }, - "tests": ["(height)", "(min-height:1px)", "(max-height:1000000px)"] + "tests": ["flex-start", "flex-end"] }, - "device-width": { + "display": { "links": { - "tr": "#device-width", - "dev": "#device-width" + "tr": "#flex-containers", + "dev": "#flex-containers" }, - "tests": ["(device-width)", "(min-device-width:1px)", "(max-device-width:1000000px)"] + "tests": ["flex", "inline-flex"] }, - "device-height": { + "flex": { "links": { - "tr": "#device-height", - "dev": "#device-height" + "tr": "#flex-property", + "dev": "#flex-property" }, - "tests": ["(device-height)", "(min-device-height:1px)", "(max-device-height:1000000px)"] + "tests": ["none", "5 7 10%"] }, - "orientation": { + "flex-basis": { "links": { - "tr": "#orientation", - "dev": "#orientation" + "tr": "#flex-basis-property", + "dev": "#flex-basis-property" }, - "tests": "(orientation:portrait), (orientation:landscape)" + "tests": ["auto", "content", "1px"] }, - "aspect-ratio": { + "flex-direction": { "links": { - "tr": "#aspect-ratio", - "dev": "#aspect-ratio" + "tr": "#flex-direction-property", + "dev": "#flex-direction-property" }, - "tests": [ - "(aspect-ratio)", - "(min-aspect-ratio:1/1000000)", - "(min-aspect-ratio:1 / 1000000)", - "(max-aspect-ratio:1000000/1)", - ] + "tests": ["row", "row-reverse", "column", "column-reverse"] }, - "device-aspect-ratio": { + "flex-flow": { "links": { - "tr": "#device-aspect-ratio", - "dev": "#device-aspect-ratio" + "tr": "#flex-flow-property", + "dev": "#flex-flow-property" }, - "tests": [ - "(device-aspect-ratio)", - "(min-device-aspect-ratio:1/1000000)", - "(min-device-aspect-ratio:1 / 1000000)", - "(max-device-aspect-ratio:1000000/1)", - ] + "tests": ["row", "row-reverse", "column", "column-reverse", "wrap", "wrap-reverse"] }, - "color": { + "flex-grow": { "links": { - "tr": "#color", - "dev": "#color" + "tr": "#flex-grow-property", + "dev": "#flex-grow-property" }, - "tests": [ - "(color)", "(min-color: 0)", "(max-color: 100)" - ] + "tests": ["0", "5"] }, - "color-index": { + "flex-shrink": { "links": { - "tr": "#color-index", - "dev": "#color-index" + "tr": "#flex-shrink-property", + "dev": "#flex-shrink-property" }, - "tests": [ - "all, (color-index)", - "(min-color-index: 0)", - "(max-color-index: 10000000)" - ] + "tests": ["1", "10"] }, - "monochrome": { + "flex-wrap": { "links": { - "tr": "#monochrome", - "dev": "#monochrome" + "tr": "#flex-wrap-property", + "dev": "#flex-wrap-property" }, - "tests": [ - "all, (monochrome)", "(min-monochrome: 0)", "(max-monochrome: 10000)" - ] + "tests": ["nowrap", "wrap", "wrap-reverse"] }, - "resolution": { + "justify-content": { "links": { - "tr": "#resolution", - "dev": "#resolution" + "tr": "#justify-content-property", + "dev": "#justify-content-property" }, - "tests": [ - "(resolution)", - "(min-resolution: 1dpi)", - "(max-resolution: 1000000dpi)", - "(max-resolution: 1000000dpcm)" - ] + "tests": ["flex-start", "flex-end", "space-between", "space-around"] }, - "scan": { + "min-height": { "links": { - "tr": "#scan", - "dev": "#scan" + "tr": "#min-size-auto", + "dev": "#min-size-auto" }, - "tests": ["not tv, (scan: progressive)", "not tv, (scan: interlace)"] + "tests": ["auto"] }, - "grid": { + "min-width": { "links": { - "tr": "#grid", - "dev": "#grid" + "tr": "#min-size-auto", + "dev": "#min-size-auto" }, - "tests": ["all, (grid)", "(grid: 0), (grid: 1)"] + "tests": ["auto"] + }, + "order": { + "links": { + "tr": "#order-property", + "dev": "#order-property" + }, + "tests": ["0", "1"] } } }, - "mediaqueries-4": { - "title": "Media Queries Level 4", + "css-fonts-3": { + "title": "CSS Fonts Module Level 3", "links": { - "tr": "mediaqueries-4", - "dev": "mediaqueries-4" + "tr": "css-fonts-3", + "dev": "css-fonts-3" }, - "Media queries": { - "resolution": { + "properties": { + "font-stretch": { "links": { - "tr": "#resolution", - "dev": "#resolution" + "tr": "#font-stretch-prop", + "dev": "#font-stretch-prop" }, - "tests": ["(resolution: infinite)"] + "tests": [ + "normal", "ultra-condensed", "extra-condensed", "condensed", "semi-condensed", "semi-expanded", + "expanded", "extra-expanded", "ultra-expanded" + ] }, - "hover": { + "font-size-adjust": { "links": { - "tr": "#hover", - "dev": "#hover" + "tr": "#font-size-adjust-prop", + "dev": "#font-size-adjust-prop" }, - "tests": ["(hover)", "(hover: none)", "(hover: hover)"] - }, - "any-hover": { - "links": { - "tr": "#any-input", - "dev": "#any-input" - }, - "tests": ["(any-hover)", "(any-hover: none)", "(any-hover: hover)"] - }, - "pointer": { - "links": { - "tr": "#pointer", - "dev": "#pointer" - }, - "tests": ["(pointer)", "(pointer: none)", "(pointer: coarse)", "(pointer: fine)"] + "tests": ["none", ".5"] }, - "any-pointer": { + "font-synthesis": { "links": { - "tr": "#any-input", - "dev": "#any-input" + "tr": "#font-synthesis-prop", + "dev": "#font-synthesis-prop" }, - "tests": ["(any-pointer)", "(any-pointer: none)", "(any-pointer: coarse)", "(any-pointer: fine)"] + "tests": ["none", "weight", "style", "weight style", "style weight"] }, - "update": { + "font-kerning": { "links": { - "tr": "#update", - "dev": "#update" + "tr": "#font-kerning-prop", + "dev": "#font-kerning-prop" }, - "tests": ["(update)", "(update: none)", "(update: slow)", "(update: fast)"] + "tests": ["auto", "normal", "none"] }, - "overflow-block": { + "font-variant-position": { "links": { - "tr": "#mf-overflow-block", - "dev": "#mf-overflow-block" + "tr": "#font-variant-position-prop", + "dev": "#font-variant-position-prop" }, - "tests": ["(overflow-block: none)", "(overflow-block: scroll)", "(overflow-block: optional-paged)", "(overflow-block: paged)"] + "tests": ["normal", "sub", "super"] }, - "overflow-inline": { + "font-variant-ligatures": { "links": { - "tr": "#mf-overflow-inline", - "dev": "#mf-overflow-inline" + "tr": "#font-variant-ligatures-prop", + "dev": "#font-variant-ligatures-prop" }, - "tests": ["(overflow-inline: none)", "(overflow-inline: scroll)"] + "tests": [ + "normal", "none", + "common-ligatures", "no-common-ligatures", + "discretionary-ligatures", "no-discretionary-ligatures", + "historical-ligatures", "no-historical-ligatures", + "contextual", "no-contextual", + "common-ligatures discretionary-ligatures historical-ligatures contextual" + ] }, - "color-gamut": { + "font-variant-caps": { "links": { - "tr": "#color-gamut", - "dev": "#color-gamut" + "tr": "#font-variant-caps-prop", + "dev": "#font-variant-caps-prop" }, - "tests": ["(color-gamut)", "(color-gamut: srgb)", "(color-gamut: p3)", "(color-gamut: rec2020)"] + "tests": [ + "normal", "small-caps", "all-small-caps", "petite-caps", "all-petite-caps", "titling-caps", "unicase" + ] }, - "aspect-ratio": { + "font-variant-numeric": { "links": { - "tr": "#aspect-ratio", - "dev": "#aspect-ratio" + "tr": "#font-variant-numeric-prop", + "dev": "#font-variant-numeric-prop" }, "tests": [ - "(aspect-ratio: 1280.1/720.01)", - "(max-aspect-ratio: 1280.1/720.01)", - "(min-aspect-ratio: 0.2)", + "normal", + "lining-nums", "oldstyle-nums", + "proportional-nums", "tabular-nums", + "diagonal-fractions", "stacked-fractions", + "ordinal", "slashed-zero", + "lining-nums proportional-nums diagonal-fractions", + "oldstyle-nums tabular-nums stacked-fractions ordinal slashed-zero", + "slashed-zero ordinal tabular-nums stacked-fractions oldstyle-nums" ] }, - "device-aspect-ratio": { + "font-variant-east-asian": { "links": { - "tr": "#device-aspect-ratio", - "dev": "#device-aspect-ratio" + "tr": "#font-variant-east-asian-prop", + "dev": "#font-variant-east-asian-prop" }, "tests": [ - "(device-aspect-ratio:1280.1/720.01)", - "(max-device-aspect-ratio:1280.1/720.01)", - "(min-device-aspect-ratio:0.2)", + "normal", + "jis78", "jis83", "jis90", "jis04", "simplified", "traditional", + "full-width", "proportional-width", + "ruby", "simplified full-width ruby" ] - } - } - }, - - "mediaqueries-5": { - "title": "Media Queries Level 5", - "links": { - "tr": "mediaqueries-5", - "dev": "mediaqueries-5" - }, - "Media queries": { - "prefers-reduced-motion": { - "links": { - "tr": "#prefers-reduced-motion", - "dev": "#prefers-reduced-motion" - }, - "tests": ["(prefers-reduced-motion)", "(prefers-reduced-motion: no-preference)", "(prefers-reduced-motion: reduce)"] }, - "prefers-reduced-transparency": { + + "font-feature-settings": { "links": { - "tr": "#prefers-reduced-transparency", - "dev": "#prefers-reduced-transparency" + "tr": "#font-feature-settings-prop", + "dev": "#font-feature-settings-prop" }, - "tests": ["(prefers-reduced-transparency)","(prefers-reduced-transparency: no-preference)", "(prefers-reduced-transparency: reduce)"] - }, - "prefers-contrast": { + "tests": ["normal", "'c2sc'", "'smcp' on", "'liga' off", "'smcp', 'swsh' 2"] + } + }, + "descriptors": { + "@font-face/src": { "links": { - "tr": "#prefers-contrast", - "dev": "#prefers-contrast" + "tr": "#descdef-src", + "dev": "#descdef-src" }, - "tests": ["(prefers-contrast)", "(prefers-contrast: no-preference)", "(prefers-contrast: less)", "(prefers-contrast: more)", "(prefers-contrast: custom)"] + "tests": [ + "url(http://example.com/fonts/Gentium.woff)", + "url(ideal-sans-serif.woff2) format(\"woff2\"), url(good-sans-serif.woff) format(\"woff\"), url(basic-sans-serif.ttf) format(\"opentype\")", + "local(Gentium), url(Gentium.woff)" + ] }, - "prefers-color-scheme": { + "@font-face/font-family": { "links": { - "tr": "#prefers-color-scheme", - "dev": "#prefers-color-scheme" + "tr": "#descdef-font-family", + "dev": "#descdef-font-family" }, - "tests": ["(prefers-color-scheme)", "(prefers-color-scheme: light)", "(prefers-color-scheme: dark)"] + "tests": ["Gentium"] }, - "scripting": { + "@font-face/font-style": { "links": { - "tr": "#scripting", - "dev": "#scripting" + "tr": "#font-prop-desc", + "dev": "#font-prop-desc" }, - "tests": ["(scripting)", "(scripting: none)", "(scripting: initial-only)", "(scripting: enabled)"] + "tests": ["normal", "italic", "oblique "] }, - "environment-blending": { + "@font-face/font-weight": { "links": { - "tr": "#environment-blending", - "dev": "#environment-blending" + "tr": "#font-prop-desc", + "dev": "#font-prop-desc" }, - "tests": ["(environment-blending)", "(environment-blending: opaque)", "(environment-blending: additive)", "(environment-blending: subtractive)"] + "tests": ["normal", "bold", "100", "200", "300", "400", "500", "600", "700", "800", "900"] }, - "forced-colors": { + "@font-face/font-stretch": { "links": { - "tr": "#forced-colors", - "dev": "#prefers-contrast" + "tr": "#font-prop-desc", + "dev": "#font-prop-desc" }, - "tests": ["(forced-colors)", "(forced-colors: none)", "(forced-color: active)"] + "tests": [ + "normal", "ultra-condensed", "extra-condensed", "condensed", "semi-condensed", "semi-expanded", + "expanded", "extra-expanded", "ultra-expanded " + ] }, - "dynamic-range": { + "@font-face/font-feature-settings": { "links": { - "tr": "#dynamic-range", - "dev": "#dynamic-range" + "tr": "#font-rend-desc", + "dev": "#font-rend-desc" }, - "tests": ["(dynamic-range)", "(dynamic-range: standard)", "(dynamic-range: high)"] + "tests": ["normal", "'c2sc'", "'smcp' on", "'liga' off", "'smcp', 'swsh' 2"] }, - "inverted-colors": { + "@font-face/font-variation-settings": { "links": { - "tr": "#inverted", - "dev": "#inverted" + "tr": "#font-rend-desc", + "dev": "#font-rend-desc" }, - "tests": ["(inverted-colors)", "(inverted-colors: none)", "(light-level: inverted)"] + "tests": ["normal", "'swsh' 2"] }, - "video-color-gamut": { + "@font-face/unicode-range": { "links": { - "dev": "#video-color-gamut", - "tr": "#video-color-gamut" + "tr": "#unicode-range-desc", + "dev": "#unicode-range-desc" }, - "tests": ["(video-color-gamut)", "(video-color-gamut: srgb)", "(video-color-gamut: p3)", "(video-color-gamut: rec2020)"] - }, - "video-dynamic-range": { + "tests": ["U+416", "U+0-7F", "U+A5, U+4E00-9FFF", "U+30??"] + } + }, + "@rules": { + "@font-face": { "links": { - "dev": "#video-dynamic-range", - "tr": "#video-dynamic-range" + "tr": "#font-face-rule", + "dev": "#font-face-rule" }, - "tests": ["(video-dynamic-range)", "(video-dynamic-range: standard)", "(video-dynamic-range: high)"] + "tests": "@font-face {\n font-family: foo;\n src: local('Arial');\n}" } } }, - "css-page-3": { - "title": "Paged Media Module Level 3", + "css-fonts-4": { + "title": "CSS Fonts Module Level 4", "links": { - "tr": "css-page-3", - "dev": "css-page-3" + "tr": "css-fonts-4", + "dev": "css-fonts-4" }, "properties": { - "page": { + "font-size": { "links": { - "tr": "#using-named-pages", - "dev": "#using-named-pagest" + "tr": "#font-size-prop", + "dev": "#font-size-prop" }, - "tests": ["auto", "customName"] + "tests": ["xxx-large"] }, - }, - "@rules": { - "@page": { + "font-variant": { "links": { - "tr": "#at-page-rule", - "dev": "#at-page-rule" + "tr": "#font-variant-prop", + "dev": "#font-variant-prop" }, "tests": [ - "@page { margin: 2cm }", - "@page customName { margin: 2cm }", - "@page :left { margin: 2cm }", - "@page :right { margin: 2cm }", - "@page :first { margin: 2cm }", - "@page :blank { margin: 2cm }" + "none", "normal", "all-petite-caps", "historical-forms", "super", + "sub lining-nums contextual ruby", + "annotation(circled)", + "discretionary-ligatures character-variant(leo-B, leo-M, leo-N, leo-T, leo-U)" ] - } - }, - "descriptors": { - "@page/size": { + }, + "font-variant-alternates": { "links": { - "tr": "#page-size-prop", - "dev": "#page-size-prop" + "tr": "#font-variant-alternates-prop", + "dev": "#font-variant-alternates-prop" }, "tests": [ - "4in 6in", "4em 6em", - "auto", - "landscape", - "portrait", - "a3", "a4", "a5", "b4", "b5", "jis-b4", "jis-b5", "ledger", "legal", "letter", - "a3 landscape", - "a3 portrait", - "landscape a3", - "portrait a3" + "normal", "historical-forms", + "styleset(ss01)", "styleset(stacked-g, geometric-m)", + "character-variant(cv02)", "character-variant(beta-3, gamma)", + "swash(flowing)", "ornaments(leaves)", "annotation(blocky)" ] }, - "@page/page-orientation": { + "font-feature-settings": { "links": { - "tr": "#page-orientation-prop", - "dev": "#page-orientation-prop" + "tr": "#font-feature-settings-prop", + "dev": "#font-feature-settings-prop" }, - "tests": [ - "upright", "rotate-left", "rotate-right" - ] + "tests": ["normal", "'swsh' 2"] }, - "@page/marks": { + "font-language-override": { "links": { - "tr": "#marks", - "dev": "#marks" + "tr": "#font-language-override", + "dev": "#font-language-override" }, - "tests": [ - "none", "crop", "cross", "crop cross" - ] + "tests": ["normal", "'SRB'"] }, - "@page/bleed": { + "font-weight": { "links": { - "tr": "#bleed", - "dev": "#bleed" + "tr": "#font-weight-prop", + "dev": "#font-weight-prop" }, - "tests": [ - "auto", "6pt" - ] + "tests": ["1", "90", "750", "1000"] + }, + "font-style": { + "links": { + "tr": "#font-style-prop", + "dev": "#font-style-prop" + }, + "tests": ["oblique 15deg", "oblique -15deg", "oblique 0deg"] + }, + "font-optical-sizing": { + "links": { + "tr": "#font-optical-sizing-def", + "dev": "#font-optical-sizing-def" + }, + "tests": ["none", "auto"] + }, + "font-palette": { + "links": { + "tr": "#font-palette-prop", + "dev": "#font-palette-prop" + }, + "tests": ["normal", "light", "dark"] } - } - }, - - "css-ui-3": { - "title": "CSS Basic User Interface Module Level 3 (CSS3 UI)", - "links": { - "tr": "css-ui-3", - "dev": "css-ui-3" }, - "properties": { - "box-sizing": { + "@rules": { + "@font-feature-values": { "links": { - "tr": "#box-sizing", - "dev": "#box-sizing" + "tr": "#font-feature-values", + "dev": "#font-feature-values" }, - "tests": ["border-box", "content-box"] + "tests": "@font-feature-values Jupiter Sans {\n @styleset {\n some-style: 1;\n }\n}" }, - "outline-style": { + "@font-palette-values": { "links": { - "tr": "#outline-style", - "dev": "#outline-style" + "tr": "#font-palette-values", + "dev": "#font-palette-values" }, - "tests": ["auto"] + "tests": "@font-palette-values Augusta {\n font-family: Handover Sans;\n base-palette: 3;\n}" }, - "outline-offset": { + }, + "descriptors": { + "@font-face/ascent-override": { "links": { - "tr": "#outline-offset", - "dev": "#outline-offset" + "tr": "#descdef-font-face-ascent-override", + "dev": "#descdef-font-face-ascent-override" }, - "tests": ["-5px", "0", "5px"] + "tests": ["normal", "125%"] }, - "resize": { + "@font-face/descent-override": { "links": { - "tr": "#resize", - "dev": "#resize" + "tr": "#descdef-font-face-descent-override", + "dev": "#descdef-font-face-descent-override" }, - "tests": ["none", "both", "horizontal", "vertical"] + "tests": ["normal", "125%"] }, - "text-overflow": { + "@font-face/line-gap-override": { "links": { - "tr": "#text-overflow", - "dev": "#text-overflow" + "tr": "#descdef-font-face-line-gap-override", + "dev": "#descdef-font-face-line-gap-override" }, - "tests": ["clip", "ellipsis"] + "tests": ["normal", "90%"] }, - "cursor": { + "@font-face/font-named-instance": { "links": { - "tr": "#cursor", - "dev": "#cursor" + "tr": "#font-named-instance", + "dev": "#font-named-instance" }, - "tests": [ - "url(foo.png) 2 2, auto", "default", "none", "context-menu", "cell", "vertical-text", "alias", "copy", "no-drop", "not-allowed", - "grab", "grabbing", "ew-resize", "ns-resize", "nesw-resize", "nwse-resize", "col-resize", "row-resize", "all-scroll", "zoom-in", - "zoom-out" - ] + "tests": ["auto", "'Grotesque'"] }, - "caret-color": { + "@font-face/font-display": { "links": { - "tr": "#caret-color", - "dev": "#caret-color" + "tr": "#descdef-font-face-font-display", + "dev": "#descdef-font-face-font-display" }, - "tests": ["auto", "green"] + "tests": ["auto", "block", "swap", "fallback", "optional"] + }, + "@font-feature-values/font-display": { + "links": { + "tr": "#font-display-font-feature-values", + "dev": "#font-display-font-feature-values" + }, + "tests": ["auto", "block", "swap", "fallback", "optional"] } } }, - "css-ui-4": { - "title": "CSS Basic User Interface Module Level 4", + "css-fonts-5": { + "title": "CSS Fonts Module Level 5", "links": { - "tr": "css-ui-4", - "dev": "css-ui-4" + "dev": "css-fonts-5" }, "properties": { - "accent-color": { - "links": { - "tr": "#widget-accent", - "dev": "#widget-accent" - }, - "tests": ["auto", "red"] - }, - "appearance": { + "font-size-adjust": { "links": { - "tr": "#appearance-switching", - "dev": "#appearance-switching" + "dev": "#font-size-adjust-prop" }, "tests": [ - "auto", "none", "textfield", "menulist-button", "searchfield", "textarea", "push-button", - "slider-horizontal", "checkbox", "radio", "square-button", "menulist", "listbox", "meter", - "progress-bar", "button" - ], + "ex-height 0.545", "ex-height from-font", + "cap-height 0.545", "cap-height from-font", + "ch-width 0.545", "ch-width from-font", + "ic-width 0.545", "ic-width from-font", + "ic-height 0.545", "ic-height from-font" + ] }, - "input-security": { + }, + "descriptors": { + "@font-face/size-adjust": { "links": { - "tr": "#input-security", - "dev": "#input-security" + "dev": "#size-adjust-desc" }, - "tests": ["auto", "red"] + "tests": ["100%"] }, - "caret": { + } + }, + + "css-grid-1": { + "title": "CSS Grid Layout Module Level 1", + "links": { + "tr": "css-grid-1", + "dev": "css-grid-1", + "mdn": "Glossary/Grid" + }, + "properties": { + "display": { "links": { - "tr": "#caret", - "dev": "#caret" + "tr": "#grid-containers", + "dev": "#grid-containers" }, - "tests": ["auto", "green", "bar", "green bar"] + "tests": ["grid", "inline-grid"] }, - "caret-shape": { + "grid-template-columns": { "links": { - "tr": "#caret-shape", - "dev": "#caret-shape" + "tr": "#track-sizing", + "dev": "#track-sizing" }, - "tests": ["auto", "bar", "block", "underscore"] + "tests": [ + "none", "auto", "100px", "1fr", "100px 1fr auto", + "repeat(2, 100px 1fr)", + "repeat(4, 10px [col-start] 250px [col-end]) 10px", + "100px 1fr max-content minmax(min-content, 1fr)", + "repeat(auto-fill, minmax(25ch, 1fr))", + "10px [col-start] 250px [col-end]", + "[first nav-start] 150px [main-start] 1fr [last]", + "10px [col-start] 250px [col-end] 10px [col-start] 250px [col-end] 10px", + "[a] auto [b] minmax(min-content, 1fr) [b c d] repeat(2, [e] 40px) repeat(5, auto)" + ] }, - "text-overflow": { + "grid-template-rows": { "links": { - "tr": "#text-overflow", - "dev": "#text-overflow" + "tr": "#track-sizing", + "dev": "#track-sizing" }, - "tests": ["clip", "ellipsis", "fade", "fade(10px)", "fade(10%)", "'foo'"].times(1, 2) + "tests": [ + "none", "auto", "100px", "1fr", "100px 1fr auto", + "repeat(2, 100px 1fr)", + "100px 1fr max-content minmax(min-content, 1fr)", + "10px [row-start] 250px [row-end]", + "[first header-start] 50px [main-start] 1fr [footer-start] 50px [last]" + ] }, - "user-select": { + "grid-template-areas": { "links": { - "tr": "#content-selection", - "dev": "#content-selection" + "tr": "#grid-template-areas-property", + "dev": "#grid-template-areas-property" }, - "tests": ["auto", "text", "none", "contain", "all"] + "tests": ["none", "'articles'", "'head head'", "'head head' 'nav main' 'foot ....'"] }, - "nav-up": { + "grid-template": { "links": { - "tr": "#nav-dir", - "dev": "#nav-dir" + "tr": "#explicit-grid-shorthand", + "dev": "#explicit-grid-shorthand" }, - "tests": ["auto", "#foo", "#foo current", "#foo root"] + "tests": ["none", "auto 1fr auto / auto 1fr", "[header-top] 'a a a' [header-bottom] [main-top] 'b b b' 1fr [main-bottom] / auto 1fr auto"] }, - "nav-right": { + "grid-auto-columns": { "links": { - "tr": "#nav-dir", - "dev": "#nav-dir" + "tr": "#auto-tracks", + "dev": "#auto-tracks" }, - "tests": ["auto", "#foo", "#foo current", "#foo root"] + "tests": [ + "auto", "1fr", "100px", "max-content", "minmax(min-content, 1fr)", "min-content max-content auto", + "100px 150px 390px", "100px minmax(100px, auto) 10% 0.5fr fit-content(400px)" + ] }, - "nav-down": { + "grid-auto-rows": { "links": { - "tr": "#nav-dir", - "dev": "#nav-dir" - }, - "tests": ["auto", "#foo", "#foo current", "#foo root"] - }, - "nav-left": { - "links": { - "tr": "#nav-dir", - "dev": "#nav-dir" - }, - "tests": ["auto", "#foo", "#foo current", "#foo root"] - } - } - }, - - "css-transitions-1": { - "title": "CSS Transitions", - "links": { - "tr": "css-transitions-1", - "dev": "css-transitions-1" - }, - "properties": { - "transition-property": { - "links": { - "tr": "#transition-property-property", - "dev": "#transition-property-property" + "tr": "#auto-tracks", + "dev": "#auto-tracks" }, - "tests": ["none", "all", "width", "width, height"] + "tests": [ + "auto", "1fr", "100px", "100px 30%", "100px 30% 1em", "min-content", "minmax(min-content, 1fr)", + "min-content max-content auto", "100px minmax(100px, auto) 10% 0.5fr fit-content(400px)" + ] }, - "transition-duration": { + "grid-auto-flow": { "links": { - "tr": "#transition-duration-property", - "dev": "#transition-duration-property" + "tr": "#grid-auto-flow-property", + "dev": "#grid-auto-flow-property" }, - "tests": ["0s", "1s", "100ms"] + "tests": ["row", "column", "row dense", "column dense"] }, - "transition-timing-function": { + "grid": { "links": { - "tr": "#transition-timing-function-property", - "dev": "#transition-timing-function-property" + "tr": "#grid-shorthand", + "dev": "#grid-shorthand" }, "tests": [ - "ease", "linear", "ease-in", "ease-out", "ease-in-out", - "cubic-bezier(.5, .5, .5, .5)", - "cubic-bezier(.5, 1.5, .5, -2.5)", - "step-start", "step-end", "steps(3, start)", "steps(5, end)" + "auto-flow 1fr / 100px", + "none / auto-flow 1fr", + "auto-flow / auto 1fr", + "repeat(auto-fill, 5em) / auto-flow 1fr", + " auto-flow 1fr / repeat(auto-fill, 5em)", + "'H H ' 'A B ' 'F F ' 30px / auto 1fr" ] }, - "transition-delay": { + "grid-row-start": { "links": { - "tr": "#transition-delay-property", - "dev": "#transition-delay-property" + "tr": "#line-placement", + "dev": "#line-placement" }, - "tests": ["1s", "-1s"] + "tests": ["auto", "4", "C", "C 2", "span C", "span 1"] }, - "transition": { - "links": { - "tr": "#transition-shorthand-property", - "dev": "#transition-shorthand-property" - }, - "tests": "1s 2s width linear" - } - } - }, - - "css-easing-1": { - "title": "CSS Easing Functions Level 1", - "links": { - "tr": "css-easing-1", - "dev": "css-easing-1" - }, - "properties": { - "transition-timing-function": { - "links": { - "tr": "#easing-functions", - "dev": "#easing-functions" - }, - "tests": ["steps(2, jump-start)", "steps(2, jump-end)", "steps(1, jump-both)", "steps(2, jump-none)"] - } - } - }, - - "css-animations-1": { - "title": "CSS Animations Level 1", - "links": { - "tr": "css-animations-1", - "dev": "css-animations-1" - }, - "properties": { - "animation-name": { + "grid-column-start": { "links": { - "tr": "#animation-name", - "dev": "#animation-name" + "tr": "#line-placement", + "dev": "#line-placement" }, - "tests": ["foo", "foo, bar"] + "tests": ["auto", "4", "C", "C 2", "span C", "span 1"] }, - "animation-duration": { + "grid-row-end": { "links": { - "tr": "#animation-duration", - "dev": "#animation-duration" + "tr": "#line-placement", + "dev": "#line-placement" }, - "tests": ["0s", "1s", "100ms"] + "tests": ["auto", "4", "C", "C 2", "span C", "span 1"] }, - "animation-timing-function": { + "grid-column-end": { "links": { - "tr": "#animation-timing-function", - "dev": "#animation-timing-function" + "tr": "#line-placement", + "dev": "#line-placement" }, - "tests": [ - "ease", "linear", "ease-in", "ease-out", "ease-in-out", - "cubic-bezier(.5, .5, .5, .5)", - "cubic-bezier(.5, 1.5, .5, -2.5)", - "step-start", "step-end", "steps(3, start)", "steps(5, end)" - ] + "tests": ["auto", "4", "C", "C 2", "span C", "span 1"] }, - "animation-iteration-count": { + "grid-column": { "links": { - "tr": "#animation-iteration-count", - "dev": "#animation-iteration-count" + "tr": "#placement-shorthands", + "dev": "#placement-shorthands" }, - "tests": ["infinite", "8", "4.35"] + "tests": ["auto", "1", "-1", "1 / 1", "1 / -1", "auto / auto", "2 / span 2"] }, - "animation-direction": { + "grid-row": { "links": { - "tr": "#animation-direction", - "dev": "#animation-direction" + "tr": "#placement-shorthands", + "dev": "#placement-shorthands" }, - "tests": ["normal", "alternate", "reverse", "alternate-reverse"] + "tests": ["auto", "1", "-1", "1 / 1", "1 / -1", "auto / auto", "2 / span 2"] }, - "animation-play-state": { + "grid-area": { "links": { - "tr": "#animation-play-state", - "dev": "#animation-play-state" + "tr": "#placement-shorthands", + "dev": "#placement-shorthands" }, - "tests": ["running", "paused"] + "tests": ["1 / 1", "1 / span 1", "span / 10 / -1"] }, - "animation-delay": { + "grid-column-gap": { "links": { - "tr": "#animation-delay", - "dev": "#animation-delay" + "tr": "#gutters", + "dev": "#gutters" }, - "tests": ["1s", "-1s"] + "tests": ["0", "1em"] }, - "animation-fill-mode": { + "grid-row-gap": { "links": { - "tr": "#animation-fill-mode", - "dev": "#animation-fill-mode" + "tr": "#gutters", + "dev": "#gutters" }, - "tests": ["none", "forwards", "backwards", "both"] + "tests": ["0", "1em"] }, - "animation": { - "links": { - "tr": "#animation", - "dev": "#animation" - }, - "tests": "foo 1s 2s infinite linear alternate both" - } - }, - "@rules": { - "@keyframes": { + "grid-gap": { "links": { - "tr": "#keyframes", - "dev": "#keyframes" + "tr": "#gutters", + "dev": "#gutters" }, - "tests": [ - "@keyframes foo {\n from: {\n color: blue;\n }\n to: {\n color: red;\n }\n}", - "@keyframes foo {\n from: {\n color: blue;\n }\n 50%: {\n color: green;\n }\n to: {\n color: red;\n }\n}" - ] + "tests": ["0 0", "0 1em", "1em", "1em 1em"] } } }, - "css-transforms-1": { - "title": "CSS Transforms Module Level 1", + "css-grid-2": { + "title": "CSS Grid Layout Module Level 2", "links": { - "tr": "css-transforms-1", - "dev": "css-transforms-1" + "tr": "css-grid-2", + "dev": "css-grid-2", + "mdn": "Glossary/Grid" }, "properties": { - "transform": { + "grid-template-columns": { "links": { - "tr": "#transform-property", - "dev": "#transform-property" + "tr": "#subgrid-per-axis", + "dev": "#subgrid-per-axis" }, "tests": [ - "none", - "translate(5px)", "translate(5px, 10px)", "translateY(5px)", "translateX(5px)", "translateY(5%)", "translateX(5%)", - "scale(2)", "scale(2, -1)", "scaleX(2)", "scaleY(2.5)", - "rotate(45deg)", - "skew(45deg)", "skew(45deg, 15deg)", "skewX(45deg)", "skewY(45deg)", - "matrix(1,-.2,0,1,0,0)", "matrix(1,-.2,0,1,10,10)", - "translate(50px, -24px) rotate(180deg) scale(.5) skew(0, 22.5deg)", - "translateZ(5px)", - "scaleZ(1.5)", - "rotateX(-45deg)", "rotateY(-45deg)", "rotateZ(-45deg)", - "perspective(600px)" + "subgrid", + "subgrid [sub-a]", + "subgrid [sub-a] [sub-b]", + "subgrid repeat(1, [sub-a])", + "subgrid repeat(2, [sub-a] [sub-b]) [sub-c]", + "subgrid repeat(auto-fill, [sub-a] [sub-b])", + "subgrid [sub-a] repeat(auto-fill, [sub-b] [sub-c] [sub-d]) [sub-e] repeat(1, [sub-g])" ] }, - "transform-origin": { - "links": { - "tr": "#transform-origin-property", - "dev": "#transform-origin-property" - }, - "tests": ["10px", "top", "top left", "50% 100%", "left 0%", "left 50% 0"] - }, - "transform-box": { + "grid-template-rows": { "links": { - "tr": "#transform-box", - "dev": "#transform-box" + "tr": "#subgrid-per-axis", + "dev": "#subgrid-per-axis" }, - "tests": ["border-box", "fill-box", "view-box"] + "tests": [ + "subgrid", + "subgrid [sub-a]", + "subgrid [sub-a] [sub-b]", + "subgrid repeat(1, [sub-a])", + "subgrid repeat(2, [sub-a] [sub-b]) [sub-c]", + "subgrid repeat(auto-fill, [sub-a] [sub-b])", + "subgrid [sub-a] repeat(auto-fill, [sub-b] [sub-c] [sub-d]) [sub-e] repeat(1, [sub-g])" + ] } } }, - "css-transforms-2": { - "title": "CSS Transforms Module Level 2", + "css-grid-3": { + "title": "CSS Grid Layout Module Level 3", "links": { - "tr": "css-transforms-2", - "dev": "css-transforms-2" + "dev": "css-grid-3", }, "properties": { - "translate": { + "grid-template-columns": { "links": { - "tr": "#individual-transforms", - "dev": "#individual-transforms" + "dev": "#masonry-layout" }, - "tests": ["none", "50%", "50% 50%", "50% 50% 10px"] - }, - "scale": { - "links": { - "tr": "#individual-transforms", - "dev": "#individual-transforms" - }, - "tests": ["none"].concat(["2"].times(1, 3)) + "tests": ["masonry"] }, - "rotate": { + "grid-template-rows": { "links": { - "tr": "#individual-transforms", - "dev": "#individual-transforms" + "dev": "#masonry-layout" }, - "tests": ["none"].concat(["", "x", "y", "z", "-1 0 2"].and(["45deg"])).concat(["45deg"].and(["x", "y", "z", "-1 0 2"])) + "tests": ["masonry "] }, - "transform": { + "masonry-auto-flow": { "links": { - "tr": "#transform-property", - "dev": "#transform-property" + "dev": "#masonry-auto-flow" }, "tests": [ - "perspective(none)", - "translate3d(0, 0, 5px)", - "scale3d(1, 0, -1)", - "rotate3d(1, 1, 1, 45deg)", - "matrix3d(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)", "matrix3d(0,0,0,0,0,0,0,0,0,0,1,0,10,10,0,1)", - "translate3d(50px, -24px, 5px) rotate3d(1, 2, 3, 180deg) scale3d(-1, 0, .5)", + "pack", "next", "definite-first", "ordered", + "pack definite-first", "pack ordered", "next definite-first", "next ordered", + "ordered pack", ] }, - "transform-style": { - "links": { - "tr": "#transform-style-property", - "dev": "#transform-style-property" - }, - "tests": ["flat", "preserve-3d"] - }, - "perspective": { + "align-tracks": { "links": { - "tr": "#perspective-property", - "dev": "#perspective-property" + "dev": "#tracks-alignment" }, - "tests": ["none", "600px"] + "tests": [ + "normal", + "baseline", "first baseline", "last baseline", + "space-between", "space-around", "space-evenly", "stretch", + "center", "start", "end", "flex-start", "flex-end", + "unsafe center", "safe start" + ] }, - "perspective-origin": { + "justify-tracks": { "links": { - "tr": "#perspective-origin-property", - "dev": "#perspective-origin-property" + "dev": "#tracks-alignment" }, - "tests": ["10px", "top", "top left", "50% 100%", "left 0%"] - }, - "backface-visibility": { + "tests": [ + "normal", + "space-between", "space-around", "space-evenly", "stretch", + "center", "start", "end", "flex-start", "flex-end", "left", "right", + "unsafe center", "safe start" + ] + } + } + }, + + "css-highlight-api-1": { + "title": "CSS Custom Highlight API Module Level 1", + "links": { + "tr": "css-highlight-api-1", + "dev": "css-highlight-api-1" + }, + "selectors": { + '::highlight()' : { "links": { - "tr": "#backface-visibility-property", - "dev": "#backface-visibility-property" + "tr": "#custom-highlight-pseudo", + "dev": "#custom-highlight-pseudo" }, - "tests": ["visible", "hidden"] + "tests": ['::highlight(example-highlight)'] } } }, - "motion-1": { - "title": "Motion Path Module Level 1", + "css-images-3": { + "title": "CSS Images Module Level 3", "links": { - "tr": "motion-1", - "dev": "motion-1", - "devtype": "fxtf" + "tr": "css3-images", + "dev": "css-images-3" }, - "properties": { - "offset": { + "values": { + "properties": [ + "background-image", + "list-style-image", + "border-image", + "cursor", + "content" + ], + "linear-gradient()": { "links": { - "tr": "#offset-shorthand", - "dev": "#offset-shorthand" + "tr": "#linear-gradients", + "dev": "#linear-gradients" }, "tests": [ - "none", - "auto", - "center", - "200px 100px", - "inset(10% round 10% 40% 10% 40%)", - "ellipse(at top 50% left 20%)", - "circle(at right 5% top)", - "margin-box", "border-box", "padding-box", "content-box", "fill-box", "stroke-box", "view-box", - "polygon(100% 0, 100% 100%, 0 100%)", - "path('M 20 20 H 80 V 30')", - "url(image.png)", - "ray(45deg closest-side)", - "ray(45deg closest-side)", - "ray(45deg closest-side) 10%", - "ray(45deg closest-side) 10% reverse", - "ray(45deg closest-side) 10% reverse 45deg", - "ray(45deg closest-side) 10% 45deg reverse", - "ray(45deg closest-side) 45deg 10%", - "ray(45deg closest-side) 45deg reverse 10%", - "ray(45deg closest-side) reverse 10%", - "200px 100px ray(45deg closest-side)", - "200px 100px ray(45deg closest-side) 10%", - "200px 100px ray(45deg closest-side) 10% reverse", - "200px 100px ray(45deg closest-side) 10% reverse 45deg", - "200px 100px ray(45deg closest-side) 10% 45deg reverse", - "200px 100px ray(45deg closest-side) 45deg 10%", - "200px 100px ray(45deg closest-side) 45deg reverse 10%", - "200px 100px ray(45deg closest-side) reverse 10%", - "auto / center", - "center / 200px 100px", - "ray(45deg closest-side) / 200px 100px", - "ray(45deg closest-side) 10% / 200px 100px", - "ray(45deg closest-side) 10% reverse / 200px 100px", - "ray(45deg closest-side) 10% reverse 45deg / 200px 100px", - "ray(45deg closest-side) 10% 45deg reverse / 200px 100px", - "ray(45deg closest-side) 45deg 10% / 200px 100px", - "ray(45deg closest-side) 45deg reverse 10% / 200px 100px", - "ray(45deg closest-side) reverse 10% / 200px 100px", - "200px 100px ray(45deg closest-side) / 200px 100px", - "200px 100px ray(45deg closest-side) 10% / 200px 100px", - "200px 100px ray(45deg closest-side) 10% reverse / 200px 100px", - "200px 100px ray(45deg closest-side) 10% reverse 45deg / 200px 100px", - "200px 100px ray(45deg closest-side) 10% 45deg reverse / 200px 100px", - "200px 100px ray(45deg closest-side) 45deg 10% / 200px 100px", - "200px 100px ray(45deg closest-side) 45deg reverse 10% / 200px 100px", - "200px 100px ray(45deg closest-side) reverse 10% / 200px 100px", + "linear-gradient(white, black)", + "linear-gradient(to right, white, black)", + "linear-gradient(45deg, white, black)", + "linear-gradient(white 50%, black)", + "linear-gradient(white 5px, black)", + "linear-gradient(white, #f06, black)", + "linear-gradient(currentColor, black)", + "linear-gradient(red -50px, white calc(-25px + 50%), blue 100%)" ] }, - "offset-path": { + "radial-gradient()": { "links": { - "tr": "#offset-path-property", - "dev": "#offset-path-property" + "tr": "#radial-gradients", + "dev": "#radial-gradients" }, "tests": [ - "none", - "ray(45deg closest-side)", - "ray(45deg farthest-side)", - "ray(45deg closest-corner)", - "ray(45deg farthest-corner)", - "ray(45deg sides)", - "ray(0.25turn sides contain)", - "ray(100grad closest-side contain)", - "ray(calc(180deg - 0.25turn) closest-side)", - "inset(10% round 10% 40% 10% 40%)", - "ellipse(at top 50% left 20%)", - "circle(at right 5% top)", - "margin-box", "border-box", "padding-box", "content-box", "fill-box", "stroke-box", "view-box", - "circle(60%) margin-box", - "polygon(100% 0, 100% 100%, 0 100%)", - "path('M 20 20 H 80 V 30')", - "url(image.png)", - "url(#id)" + "radial-gradient(white, black)", + "radial-gradient(circle, white, black)", + "radial-gradient(ellipse, white, black)", + "radial-gradient(closest-corner, white, black)", + "radial-gradient(circle closest-corner, white, black)", + "radial-gradient(farthest-side, white, black)", + "radial-gradient(circle farthest-side, white, black)", + "radial-gradient(50%, white, black)", + "radial-gradient(60% 60%, white, black)"/*, + "radial-gradient(at 60% 60%, white, black)", + "radial-gradient(30% 30% at 20% 20%, white, black)", + "radial-gradient(5em circle at top left, yellow, blue)", + "radial-gradient(circle farthest-side at top left, white, black)"*/ ] }, - "offset-distance": { - "links": { - "tr": "#offset-distance-property", - "dev": "#offset-distance-property" - }, - "tests": "10%" - }, - "offset-position": { + "repeating-linear-gradient()": { "links": { - "tr": "#offset-position-property", - "dev": "#offset-position-property" + "tr": "#repeating-gradients", + "dev": "#repeating-gradients" }, - "tests": ["auto", "200px", "200px 100px", "center"] + "tests": "repeating-linear-gradient(white, black)" }, - "offset-anchor": { + "repeating-radial-gradient()": { "links": { - "tr": "#offset-anchor-property", - "dev": "#offset-anchor-property" + "tr": "#repeating-gradients", + "dev": "#repeating-gradients" }, - "tests": ["auto", "200px", "200px 100px", "center"] + "tests": "repeating-radial-gradient(white, black)" }, - "offset-rotate": { - "links": { - "tr": "#offset-rotate-property", - "dev": "#offset-rotate-property" - }, - "tests": ["auto", "0deg", "reverse", "-45deg", "auto 180deg", "reverse 45deg", "2turn reverse"] - } - - } - }, - - "css-text-3": { - "title": "CSS Text Module Level 3", - "links": { - "tr": "css-text-3", - "dev": "css-text-3" }, "properties": { - "text-transform": { + "object-fit": { "links": { - "tr": "#text-transform", - "dev": "#text-transform-property" + "tr": "#object-fit", + "dev": "#the-object-fit" }, - "tests": ["full-width", "full-size-kana", "capitalize full-width", "capitalize full-width full-size-kana"] + "tests": ["fill", "contain", "cover", "none", "scale-down"] }, - "tab-size": { + "object-position": { "links": { - "tr": "#tab-size-property", - "dev": "#tab-size-property" + "tr": "#object-position", + "dev": "#the-object-position" }, - "tests": ["4", "1em"] + "tests": ["50% 50%", "center", "top right", "bottom 10px right 20px"] }, - "line-break": { + "image-orientation": { "links": { - "tr": "#line-break-property", - "dev": "#line-break-property" + "tr": "#image-orientation", + "dev": "#the-image-orientation" }, - "tests": ["auto", "loose", "normal", "strict", "anywhere"] + "tests": ["from-image", "0deg", "90deg", "45deg", "45deg flip", "1turn", "100grad", "2rad"] }, - "word-break": { + "image-rendering": { "links": { - "tr": "#word-break-property", - "dev": "#word-break-property" + "tr": "#the-image-rendering", + "dev": "#the-image-rendering" }, - "tests": ["normal", "keep-all", "break-all"] + "tests": ["auto", "smooth", "high-quality", "crisp-edges", "pixelated"] }, - "white-space": { + } + }, + + "css-images-4": { + "title": "CSS Images Module Level 4", + "links": { + "tr": "css-images-4", + "dev": "css-images-4" + }, + "values": { + "properties": [ + "background-image", + "list-style-image", + "border-image", + "cursor", + "content" + ], + "linear-gradient()": { "links": { - "tr": "#white-space-property", - "dev": "#white-space-property" + "tr": "#linear-gradients", + "dev": "#linear-gradients" }, - "tests": ["break-spaces"] + "tests": [ + "linear-gradient(45deg, #f06 25%, yellow 25% 50%, #f06 50% 75%, yellow 75%)" + ] }, - "hyphens": { + "radial-gradient()": { "links": { - "tr": "#hyphenation", - "dev": "#hyphenation" + "tr": "#radial-gradients", + "dev": "#radial-gradients" }, - "tests": ["auto", "manual", "none"] + "tests": [ + "radial-gradient(center, red 0% 25%, blue 25% 75%, red 75% 100%)" + ] }, - "overflow-wrap": { + "conic-gradient()": { "links": { - "tr": "#overflow-wrap-property", - "dev": "#overflow-wrap-property" + "tr": "#conic-gradients", + "dev": "#conic-gradients" }, - "tests": ["normal", "break-word", "anywhere"] + "tests": [ + "conic-gradient(white, black)", + "conic-gradient(from 5deg, white, black)", + "conic-gradient(at top left, white, black)", + "conic-gradient(white 50%, black)", + "conic-gradient(white 5deg, black)", + "conic-gradient(white, #f06, black)", + "conic-gradient(currentColor, black)", + "conic-gradient(black 25%, white 0deg 50%, black 0deg 75%, white 0deg)" + ] }, - "word-wrap": { + "repeating-conic-gradient()": { "links": { - "tr": "#overflow-wrap-property", - "dev": "#overflow-wrap-property" + "tr": "#repeating-gradients", + "dev": "#repeating-gradients" }, - "tests": ["normal", "break-word", "anywhere"] + "tests": [ + "repeating-conic-gradient(white, black)", + "repeating-conic-gradient(hsla(0, 0%, 100%, .2) 0deg 15deg, hsla(0, 0%, 100%, 0) 0deg 30deg)" + ] }, - "text-align": { + "image()": { "links": { - "tr": "#text-align-property", - "dev": "#text-align-property" + "tr": "#image-notation", + "dev": "#image-notation" }, - "tests": ["start", "end", "left", "right", "center", "justify", "match-parent", "justify-all"] - }, - "text-align-all": { - "links": { - "tr": "#text-align-all-property", - "dev": "#text-align-all-property" - }, - "tests": ["start", "end", "left", "right", "center", "justify", "match-parent"] - }, - "text-align-last": { - "links": { - "tr": "#text-align-last-property", - "dev": "#text-align-last-property" - }, - "tests": ["auto", "start", "end", "left", "right", "center", "justify", "match-parent"] + "tests": [ + "image('sprites.png#xywh=10,30,60,20')", + "image('wavy.svg', 'wavy.png' , 'wavy.gif')", + "image('dark.png', black)", + "image(green)" + ] }, - "text-justify": { + "image-set()": { "links": { - "tr": "#text-justify-property", - "dev": "#text-justify-property" + "tr": "#image-set-notation", + "dev": "#image-set-notation" }, - "tests": ["auto", "none", "inter-word", "inter-character"] + "tests": [ + "image-set('foo.png' 1x, 'foo-2x.png' 2x, 'foo-print.png' 600dpi)", + "image-set(linear-gradient(green, green) 1x, url(foobar.png) 2x)", + "image-set(linear-gradient(red, red), url(foobar.png) 2x)", + "image-set(url(foobar.png) 2x)", + "image-set(url(foobar.png) 1x, url(bar.png) 2x, url(baz.png) 3x)", + "image-set('foobar.png', 'bar.png' 2x, url(baz.png) 3x)", + "image-set(image-set('foobar.png', 'bar.png' 2x) 1x, url(baz.png) 3x)", + "image-set(url(foobar.png) type('image/png'))", + "image-set(url(foobar.png) 1x type('image/png'))", + "image-set(url(foobar.png) type('image/png') 1x)" + ] }, - "word-spacing": { + "element()": { "links": { - "tr": "#word-spacing-property", - "dev": "#word-spacing-property" + "tr": "#element-notation", + "dev": "#element-notation" }, - "tests": ["50%"] + "tests": "element(#foo)" }, - "text-indent": { + "cross-fade()": { "links": { - "tr": "#text-indent-property", - "dev": "#text-indent-property" + "tr": "#cross-fade-function", + "dev": "#cross-fade-function" }, - "tests": ["1em hanging", "1em each-line", "1em hanging each-line"] - }, - "hanging-punctuation": { + "tests": [ + "cross-fade(url(a.png), url(b.png))", + "cross-fade(url(a.png) 50%, url(b.png))", + "cross-fade(url(a.png) 50%, white)" + ] + } + }, + "properties": { + "image-resolution": { "links": { - "tr": "#hanging-punctuation-property", - "dev": "#hanging-punctuation-property" + "tr": "#the-image-resolution", + "dev": "#the-image-resolution" }, "tests": [ - "none", "first", "last", "force-end", "allow-end", "first last", "first force-end", - "first force-end last", "first allow-end last" + "from-image", "from-image snap", "snap from-image", + "1dppx", "1dpcm", "300dpi", "from-image 300dpi", "300dpi from-image", "300dpi from-image snap" ] } } }, - "css-text-4": { - "title": "CSS Text Module Level 4", + "css-layout-api-1": { + "title": "CSS Layout API Level 1", "links": { - "tr": "css-text-4", - "dev": "css-text-4" + "tr": "css-layout-api-1", + "dev": "css-layout-api-1", + "devtype": "houdini" }, "properties": { - "text-space-collapse": { - "links": { - "tr": "#white-space-collapsing", - "dev": "#white-space-collapsing" - }, - "tests": ["collapse", "discard", "preserve", "preserve-breaks", "preserve-spaces"] - }, - "text-space-trim": { + "display": { "links": { - "tr": "#white-space-trim", - "dev": "#white-space-trim" + "tr": "#layout-api-containers", + "dev": "#layout-api-containers" }, - "tests": [ - "none", "trim-inner", " discard-before", "discard-after", - "trim-inner discard-before", "trim-inner discard-before discard-after" - ] - }, - "text-wrap": { + "tests": "layout(foo)" + } + } + }, + + "css-line-grid-1": { + "title": "CSS Line Grid Module Level 1", + "links": { + "tr": "css-line-grid-1", + "dev": "css-line-grid-1" + }, + "properties": { + "box-snap": { "links": { - "tr": "#text-wrap", - "dev": "#text-wrap" + "tr": "#box-snap", + "dev": "#box-snap" }, - "tests": ["wrap", "nowrap", "balance "] + "tests": ["none", "block-start", "block-end", "center", "baseline", "last-baseline"] }, - "wrap-before": { + "line-grid": { "links": { - "tr": "#wrap-before", - "dev": "#wrap-before" + "tr": "#line-grid", + "dev": "#line-grid" }, - "tests": ["auto", "avoid", "avoid-line", "avoid-flex", "line", "flex"] + "tests": ["match-parent", "create"] }, - "wrap-after": { + "line-snap": { "links": { - "tr": "#wrap-before", - "dev": "#wrap-before" + "tr": "#line-snap", + "dev": "#line-snap" }, - "tests": ["auto", "avoid", "avoid-line", "avoid-flex", "line", "flex"] - }, - "wrap-inside": { + "tests": ["none", "baseline", "contain"] + } + } + }, + + "css-lists-3": { + "title": "CSS Lists Module Level 3", + "links": { + "tr": "css-lists-3", + "dev": "css-lists-3" + }, + "properties": { + "list-style-type": { "links": { - "tr": "#wrap-inside", - "dev": "#wrap-inside" + "tr": "#text-markers", + "dev": "#text-markers" }, - "tests": ["auto", "avoid"] + "tests": [ + "disclosure-closed", "disclosure-open", + "hebrew", + "cjk-decimal", "cjk-ideographic", + "hiragana", "katakana", "hiragana-iroha", "katakana-iroha", + "japanese-informal", "japanese-formal", "korean-hangul-formal", + "korean-hanja-informal", "korean-hanja-formal", + "simp-chinese-informal", "simp-chinese-formal", + "trad-chinese-informal", "trad-chinese-formal", + "cjk-heavenly-stem", "cjk-earthly-branch", + "trad-chinese-informal", "trad-chinese-formal", + "simp-chinese-informal", "simp-chinese-formal", + "japanese-informal", "japanese-formal", + "arabic-indic", "persian", "urdu", + "devanagari", "gurmukhi", "gujarati", + "oriya", "kannada", "malayalam", "bengali", + "tamil", "telugu", "thai", "lao", + "myanmar", "khmer", + "hangul", "hangul-consonant", + "ethiopic-halehame", "ethiopic-numeric", + "ethiopic-halehame-am", + "ethiopic-halehame-ti-er", "ethiopic-halehame-ti-et", + "other-style", "inside", "outside", "\\32 style", + '"-"', "'-'", + "symbols(\"*\" \"\\2020\" \"\\2021\" \"\\A7\")", + "symbols(cyclic '*' '\\2020' '\\2021' '\\A7')" + ] }, - "hyphenate-character": { + "marker-side": { "links": { - "tr": "#hyphenate-character", - "dev": "#hyphenate-character" + "tr": "#marker-side", + "dev": "#marker-side" }, - "tests": ["auto", "'\\2010'"] + "tests": ["match-self", "match-parent"] }, - "hyphenate-limit-zone": { + "counter-reset": { "links": { - "tr": "#hyphenate-size-limits", - "dev": "#hyphenate-size-limits" + "tr": "#counter-reset", + "dev": "#counter-reset" }, - "tests": ["1%", "1em"] + "tests": ["foo", "foo 1", "foo 1 bar", "foo 1 bar 2", "none"] }, - "hyphenate-limit-chars": { + "counter-set": { "links": { - "tr": "#hyphenate-char-limits", - "dev": "#hyphenate-char-limits" + "tr": "#increment-set", + "dev": "#increment-set" }, - "tests": ["auto", "5", "auto 3", "5 4 3"] + "tests": ["foo", "foo 1", "foo 1 bar", "foo 1 bar 2", "none"] }, - "hyphenate-limit-lines": { + "counter-increment": { "links": { - "tr": "#hyphenate-line-limits", - "dev": "#hyphenate-line-limits" + "tr": "#increment-set", + "dev": "#increment-set" }, - "tests": ["no-limit", "2"] + "tests": ["foo", "foo 1", "foo 1 bar", "foo 1 bar 2", "none"] }, - "hyphenate-limit-last": { + "content": { "links": { - "tr": "#hyphenate-line-limits", - "dev": "#hyphenate-line-limits" + "tr": "#counter-functions", + "dev": "#counter-functions" }, - "tests": ["none", "always", "column", "page", "spread"] + "tests": [ + "counter(chno, upper-latin) '. '", + "counter(section, upper-roman) ' - '", + "' [' counter(bq, decimal) ']'", + "counter(notecntr, disc) ' '", + "counter(p, none)", + "counter(h1, upper-alpha) '.' counter(h2, decimal) ' '", + "'(' counters(list-item, '.') ') '" + ] } } }, - "css-text-decor-3": { - "title": "CSS Text Decoration Module Level 3", + "css-logical-1": { + "title": "CSS Logical Properties and Values Level 1", "links": { - "tr": "css-text-decor-3", - "dev": "css-text-decor-3" + "tr": "css-logical-1", + "dev": "css-logical-1" }, "properties": { - "text-decoration": { + "caption-side": { "links": { - "tr": "#text-decoration-property", - "dev": "#text-decoration-property" + "tr": "#caption-side", + "dev": "#caption-side" }, - "tests": "underline dotted green" + "tests": ["inline-start", "inline-end"] }, - "text-decoration-line": { + "float": { "links": { - "tr": "#text-decoration-line-property", - "dev": "#text-decoration-line-property" + "tr": "#float-clear", + "dev": "#float-clear" }, - "tests": ["none", "underline", "overline", "line-through", "underline overline"] + "tests": ["inline-start", "inline-end"] }, - "text-decoration-color": { + "clear": { "links": { - "tr": "#text-decoration-color-property", - "dev": "#text-decoration-color-property" + "tr": "#float-clear", + "dev": "#float-clear" }, - "tests": "white" + "tests": ["inline-start", "inline-end"] }, - "text-decoration-style": { + "text-align": { "links": { - "tr": "#text-decoration-style-property", - "dev": "#text-decoration-style-property" + "tr": "#text-align", + "dev": "#text-align" }, - "tests": ["solid", "double", "dotted", "dashed", "wavy"] + "tests": ["start", "end"] }, - "text-underline-position": { + "resize": { "links": { - "tr": "#text-underline-position-property", - "dev": "#text-underline-position-property" + "tr": "#resize", + "dev": "#resize" }, - "tests": ["auto", "under", "left", "right", "under left", "under right"] + "tests": ["block", "inline"] }, - "text-emphasis-style": { + "block-size": { "links": { - "tr": "#text-emphasis-style-property", - "dev": "#text-emphasis-style-property" + "tr": "#dimension-properties", + "dev": "#dimension-properties" }, - "tests": ["none", "filled", "open", "dot", "circle", "double-circle", "triangle", "sesame", "open dot", "'foo'"] + "tests": ["100px"] }, - "text-emphasis-color": { + "inline-size": { "links": { - "tr": "#text-emphasis-color-property", - "dev": "#text-emphasis-color-property" + "tr": "#dimension-properties", + "dev": "#dimension-properties" }, - "tests": "green" + "tests": ["100px"] }, - "text-emphasis": { + "min-block-size": { "links": { - "tr": "#text-emphasis-property", - "dev": "#text-emphasis-property" + "tr": "#dimension-properties", + "dev": "#dimension-properties" }, - "tests": "open dot green" + "tests": ["100px"] }, - "text-emphasis-position": { + "min-inline-size": { "links": { - "tr": "#text-emphasis-position-property", - "dev": "#text-emphasis-position-property" + "tr": "#dimension-properties", + "dev": "#dimension-properties" }, - "tests": ["over left", "over right", "under left", "under right"] + "tests": ["100px"] }, - "text-shadow": { + "max-block-size": { "links": { - "tr": "#text-shadow-property", - "dev": "#text-shadow-property" + "tr": "#dimension-properties", + "dev": "#dimension-properties" }, - "tests": ["none", "1px 1px", "0 0 black", "1px 2px 3px black"] - } - } - }, - - "css-text-decor-4": { - "title": "CSS Text Decoration Module Level 4", - "links": { - "tr": "css-text-decor-4", - "dev": "css-text-decor-4" - }, - "properties": { - "text-decoration": { + "tests": ["100px"] + }, + "max-inline-size": { "links": { - "tr": "#text-decoration-property", - "dev": "#text-decoration-property" + "tr": "#dimension-properties", + "dev": "#dimension-properties" }, - "tests": ["underline solid blue 1px"] + "tests": ["100px"] }, - "text-decoration-skip": { + "margin-block": { "links": { - "tr": "#text-decoration-skip-property", - "dev": "#text-decoration-skip-property" + "tr": "#margin-properties", + "dev": "#margin-properties" }, - "tests": [ - "none", "objects", "objects spaces", "objects leading-spaces", "objects trailing-spaces", "objects leading-spaces trailing-spaces", - "objects leading-spaces trailing-spaces edges", "objects leading-spaces trailing-spaces edges box-decoration", "objects edges", - "objects box-decoration", "spaces", "spaces edges", "spaces edges box-decoration", "spaces box-decoration", "leading-spaces", - "leading-spaces trailing-spaces edges", "leading-spaces trailing-spaces edges box-decoration", "edges", "edges box-decoration", - "box-decoration" - ] + "tests": ["10px", "10px 10px"] }, - "text-decoration-skip-ink": { + "margin-block-start": { "links": { - "tr": "#text-decoration-skip-ink-property", - "dev": "#text-decoration-skip-ink-property" + "tr": "#margin-properties", + "dev": "#margin-properties" }, - "tests": ["none", "auto"] + "tests": ["10px"] }, - "text-underline-offset": { + "margin-block-end": { "links": { - "tr": "#underline-offset", - "dev": "#underline-offset" + "tr": "#margin-properties", + "dev": "#margin-properties" }, - "tests": ["auto", "3px", "10%"] + "tests": ["10px"] }, - "text-decoration-thickness": { + "margin-inline": { "links": { - "tr": "#underline-offset", - "dev": "#text-decoration-width-property" + "tr": "#margin-properties", + "dev": "#margin-properties" }, - "tests": ["auto", "from-font", "3px", "10%"] - } - } - }, - - "css-content-3": { - "title": "CSS Generated Content Module Level 3", - "links": { - "tr": "css-content-3", - "dev": "css-content-3" - }, - "properties": { - "quotes": { + "tests": ["10px", "10px 10px"] + }, + "margin-inline-start": { "links": { - "tr": "#quotes", - "dev": "#quotes" + "tr": "#margin-properties", + "dev": "#margin-properties" }, - "tests": ["auto"] + "tests": ["10px"] }, - "content": { + "margin-inline-end": { "links": { - "tr": "#alt", - "dev": "#alt" + "tr": "#margin-properties", + "dev": "#margin-properties" }, - "tests": [ - "url(./img/star.png) / \"New!\"", - "\"\\25BA\" / \"\"" - ] - } - } - }, - - "css-line-grid-1": { - "title": "CSS Line Grid Module Level 1", - "links": { - "tr": "css-line-grid-1", - "dev": "css-line-grid-1" - }, - "properties": { - "box-snap": { + "tests": ["10px"] + }, + "inset": { "links": { - "tr": "#box-snap", - "dev": "#box-snap" + "tr": "#inset-properties", + "dev": "#inset-properties" }, - "tests": ["none", "block-start", "block-end", "center", "baseline", "last-baseline"] + "tests": ["10px", "10px 10px", "10px 10px 10px", "10px 10px 10px 10px"] }, - "line-grid": { + "inset-block": { "links": { - "tr": "#line-grid", - "dev": "#line-grid" + "tr": "#inset-properties", + "dev": "#inset-properties" }, - "tests": ["match-parent", "create"] + "tests": ["10px", "10px 10px"] }, - "line-snap": { + "inset-block-start": { "links": { - "tr": "#line-snap", - "dev": "#line-snap" + "tr": "#inset-properties", + "dev": "#inset-properties" }, - "tests": ["none", "baseline", "contain"] - } - } - }, - - "css-fonts-3": { - "title": "CSS Fonts Module Level 3", - "links": { - "tr": "css-fonts-3", - "dev": "css-fonts-3" - }, - "properties": { - "font-stretch": { + "tests": ["10px"] + }, + "inset-block-end": { "links": { - "tr": "#font-stretch-prop", - "dev": "#font-stretch-prop" + "tr": "#inset-properties", + "dev": "#inset-properties" }, - "tests": [ - "normal", "ultra-condensed", "extra-condensed", "condensed", "semi-condensed", "semi-expanded", - "expanded", "extra-expanded", "ultra-expanded" - ] + "tests": ["10px"] }, - "font-size-adjust": { + "inset-inline": { "links": { - "tr": "#font-size-adjust-prop", - "dev": "#font-size-adjust-prop" + "tr": "#inset-properties", + "dev": "#inset-properties" }, - "tests": ["none", ".5"] + "tests": ["10px", "10px 10px"] }, - "font-synthesis": { + "inset-inline-start": { "links": { - "tr": "#font-synthesis-prop", - "dev": "#font-synthesis-prop" + "tr": "#inset-properties", + "dev": "#inset-properties" }, - "tests": ["none", "weight", "style", "weight style", "style weight"] + "tests": ["10px"] }, - "font-kerning": { + "inset-inline-end": { "links": { - "tr": "#font-kerning-prop", - "dev": "#font-kerning-prop" + "tr": "#inset-properties", + "dev": "#inset-properties" }, - "tests": ["auto", "normal", "none"] + "tests": ["10px"] }, - "font-variant-position": { + "padding-block": { "links": { - "tr": "#font-variant-position-prop", - "dev": "#font-variant-position-prop" + "tr": "#padding-properties", + "dev": "#padding-properties" }, - "tests": ["normal", "sub", "super"] + "tests": ["10px", "10px 10px"] }, - "font-variant-ligatures": { + "padding-block-start": { "links": { - "tr": "#font-variant-ligatures-prop", - "dev": "#font-variant-ligatures-prop" + "tr": "#padding-properties", + "dev": "#padding-properties" }, - "tests": [ - "normal", "none", - "common-ligatures", "no-common-ligatures", - "discretionary-ligatures", "no-discretionary-ligatures", - "historical-ligatures", "no-historical-ligatures", - "contextual", "no-contextual", - "common-ligatures discretionary-ligatures historical-ligatures contextual" - ] + "tests": ["10px"] }, - "font-variant-caps": { + "padding-block-end": { "links": { - "tr": "#font-variant-caps-prop", - "dev": "#font-variant-caps-prop" + "tr": "#padding-properties", + "dev": "#padding-properties" }, - "tests": [ - "normal", "small-caps", "all-small-caps", "petite-caps", "all-petite-caps", "titling-caps", "unicase" - ] + "tests": ["10px"] }, - "font-variant-numeric": { + "padding-inline": { "links": { - "tr": "#font-variant-numeric-prop", - "dev": "#font-variant-numeric-prop" + "tr": "#padding-properties", + "dev": "#padding-properties" }, - "tests": [ - "normal", - "lining-nums", "oldstyle-nums", - "proportional-nums", "tabular-nums", - "diagonal-fractions", "stacked-fractions", - "ordinal", "slashed-zero", - "lining-nums proportional-nums diagonal-fractions", - "oldstyle-nums tabular-nums stacked-fractions ordinal slashed-zero", - "slashed-zero ordinal tabular-nums stacked-fractions oldstyle-nums" - ] + "tests": ["10px", "10px 10px"] }, - "font-variant-east-asian": { + "padding-inline-start": { "links": { - "tr": "#font-variant-east-asian-prop", - "dev": "#font-variant-east-asian-prop" + "tr": "#padding-properties", + "dev": "#padding-properties" }, - "tests": [ - "normal", - "jis78", "jis83", "jis90", "jis04", "simplified", "traditional", - "full-width", "proportional-width", - "ruby", "simplified full-width ruby" - ] + "tests": ["10px"] }, - - "font-feature-settings": { + "padding-inline-end": { "links": { - "tr": "#font-feature-settings-prop", - "dev": "#font-feature-settings-prop" + "tr": "#padding-properties", + "dev": "#padding-properties" }, - "tests": ["normal", "'c2sc'", "'smcp' on", "'liga' off", "'smcp', 'swsh' 2"] - } - }, - "descriptors": { - "@font-face/src": { + "tests": ["10px"] + }, + "border-block": { "links": { - "tr": "#descdef-src", - "dev": "#descdef-src" + "tr": "#border-shorthands", + "dev": "#border-shorthands" }, - "tests": [ - "url(http://example.com/fonts/Gentium.woff)", - "url(ideal-sans-serif.woff2) format(\"woff2\"), url(good-sans-serif.woff) format(\"woff\"), url(basic-sans-serif.ttf) format(\"opentype\")", - "local(Gentium), url(Gentium.woff)" - ] + "tests": ["1px", "2px dotted", "medium dashed green"] }, - "@font-face/font-family": { + "border-block-start": { "links": { - "tr": "#descdef-font-family", - "dev": "#descdef-font-family" + "tr": "#border-shorthands", + "dev": "#border-shorthands" }, - "tests": ["Gentium"] + "tests": ["1px", "2px dotted", "medium dashed green"] }, - "@font-face/font-style": { + "border-block-start-width": { "links": { - "tr": "#font-prop-desc", - "dev": "#font-prop-desc" + "tr": "#border-width", + "dev": "#border-width" }, - "tests": ["normal", "italic", "oblique "] + "tests": ["thin"] }, - "@font-face/font-weight": { + "border-block-start-width": { "links": { - "tr": "#font-prop-desc", - "dev": "#font-prop-desc" + "tr": "#border-width", + "dev": "#border-width" }, - "tests": ["normal", "bold", "100", "200", "300", "400", "500", "600", "700", "800", "900"] + "tests": ["thin"] }, - "@font-face/font-stretch": { + "border-block-start-style": { "links": { - "tr": "#font-prop-desc", - "dev": "#font-prop-desc" + "tr": "#border-style", + "dev": "#border-style" }, - "tests": [ - "normal", "ultra-condensed", "extra-condensed", "condensed", "semi-condensed", "semi-expanded", - "expanded", "extra-expanded", "ultra-expanded " - ] + "tests": ["dotted"] }, - "@font-face/font-feature-settings": { + "border-block-start-color": { "links": { - "tr": "#font-rend-desc", - "dev": "#font-rend-desc" + "tr": "#border-color", + "dev": "#border-color" }, - "tests": ["normal", "'c2sc'", "'smcp' on", "'liga' off", "'smcp', 'swsh' 2"] + "tests": ["navy"] }, - "@font-face/font-variation-settings": { + "border-block-end": { "links": { - "tr": "#font-rend-desc", - "dev": "#font-rend-desc" + "tr": "#border-shorthands", + "dev": "#border-shorthands" }, - "tests": ["normal", "'swsh' 2"] + "tests": ["1px", "2px dotted", "medium dashed green"] }, - "@font-face/unicode-range": { + "border-block-end-width": { "links": { - "tr": "#unicode-range-desc", - "dev": "#unicode-range-desc" + "tr": "#border-width", + "dev": "#border-width" }, - "tests": ["U+416", "U+0-7F", "U+A5, U+4E00-9FFF", "U+30??"] - } - }, - "@rules": { - "@font-face": { + "tests": ["thin"] + }, + "border-block-end-style": { "links": { - "tr": "#font-face-rule", - "dev": "#font-face-rule" + "tr": "#border-style", + "dev": "#border-style" }, - "tests": "@font-face {\n font-family: foo;\n src: local('Arial');\n}" - } - } - }, - - "css-fonts-4": { - "title": "CSS Fonts Module Level 4", - "links": { - "tr": "css-fonts-4", - "dev": "css-fonts-4" - }, - "properties": { - "font-size": { + "tests": ["dotted"] + }, + "border-block-end-color": { "links": { - "tr": "#font-size-prop", - "dev": "#font-size-prop" + "tr": "#border-color", + "dev": "#border-color" }, - "tests": ["xxx-large"] + "tests": ["navy"] }, - "font-variant": { + "border-block-width": { "links": { - "tr": "#font-variant-prop", - "dev": "#font-variant-prop" + "tr": "#border-width", + "dev": "#border-width" }, - "tests": [ - "none", "normal", "all-petite-caps", "historical-forms", "super", - "sub lining-nums contextual ruby", - "annotation(circled)", - "discretionary-ligatures character-variant(leo-B, leo-M, leo-N, leo-T, leo-U)" - ] + "tests": ["thin 2px"] }, - "font-variant-alternates": { + "border-block-style": { "links": { - "tr": "#font-variant-alternates-prop", - "dev": "#font-variant-alternates-prop" + "tr": "#border-style", + "dev": "#border-style" }, - "tests": [ - "normal", "historical-forms", - "styleset(ss01)", "styleset(stacked-g, geometric-m)", - "character-variant(cv02)", "character-variant(beta-3, gamma)", - "swash(flowing)", "ornaments(leaves)", "annotation(blocky)" - ] + "tests": ["dotted dashed"] }, - "font-feature-settings": { + "border-block-color": { "links": { - "tr": "#font-feature-settings-prop", - "dev": "#font-feature-settings-prop" + "tr": "#border-color", + "dev": "#border-color" }, - "tests": ["normal", "'swsh' 2"] + "tests": ["navy blue"] }, - "font-language-override": { + "border-inline": { "links": { - "tr": "#font-language-override", - "dev": "#font-language-override" + "tr": "#border-shorthands", + "dev": "#border-shorthands" }, - "tests": ["normal", "'SRB'"] + "tests": ["1px", "2px dotted", "medium dashed green"] }, - "font-weight": { + "border-inline-start": { "links": { - "tr": "#font-weight-prop", - "dev": "#font-weight-prop" + "tr": "#border-shorthands", + "dev": "#border-shorthands" }, - "tests": ["1", "90", "750", "1000"] + "tests": ["1px", "2px dotted", "medium dashed green"] }, - "font-style": { + "border-inline-start-width": { "links": { - "tr": "#font-style-prop", - "dev": "#font-style-prop" + "tr": "#border-width", + "dev": "#border-width" }, - "tests": ["oblique 15deg", "oblique -15deg", "oblique 0deg"] + "tests": ["thin"] }, - "font-optical-sizing": { + "border-inline-start-style": { "links": { - "tr": "#font-optical-sizing-def", - "dev": "#font-optical-sizing-def" + "tr": "#border-style", + "dev": "#border-style" }, - "tests": ["none", "auto"] + "tests": ["dotted"] }, - "font-palette": { + "border-inline-start-color": { "links": { - "tr": "#font-palette-prop", - "dev": "#font-palette-prop" + "tr": "#border-color", + "dev": "#border-color" }, - "tests": ["normal", "light", "dark"] - } - }, - "@rules": { - "@font-feature-values": { + "tests": ["navy"] + }, + "border-inline-end": { "links": { - "tr": "#font-feature-values", - "dev": "#font-feature-values" + "tr": "#border-shorthands", + "dev": "#border-shorthands" }, - "tests": "@font-feature-values Jupiter Sans {\n @styleset {\n some-style: 1;\n }\n}" + "tests": ["1px", "2px dotted", "medium dashed green"] }, - "@font-palette-values": { + "border-inline-end-width": { "links": { - "tr": "#font-palette-values", - "dev": "#font-palette-values" + "tr": "#border-width", + "dev": "#border-width" }, - "tests": "@font-palette-values Augusta {\n font-family: Handover Sans;\n base-palette: 3;\n}" + "tests": ["thin"] }, - }, - "descriptors": { - "@font-face/ascent-override": { + "border-inline-end-style": { "links": { - "tr": "#descdef-font-face-ascent-override", - "dev": "#descdef-font-face-ascent-override" + "tr": "#border-style", + "dev": "#border-style" }, - "tests": ["normal", "125%"] + "tests": ["dotted"] }, - "@font-face/descent-override": { + "border-inline-end-color": { "links": { - "tr": "#descdef-font-face-descent-override", - "dev": "#descdef-font-face-descent-override" + "tr": "#border-color", + "dev": "#border-color" }, - "tests": ["normal", "125%"] + "tests": ["navy"] }, - "@font-face/line-gap-override": { + "border-inline-width": { "links": { - "tr": "#descdef-font-face-line-gap-override", - "dev": "#descdef-font-face-line-gap-override" + "tr": "#border-width", + "dev": "#border-width" }, - "tests": ["normal", "90%"] + "tests": ["thin 2px"] }, - "@font-face/font-named-instance": { + "border-inline-style": { "links": { - "tr": "#font-named-instance", - "dev": "#font-named-instance" + "tr": "#border-style", + "dev": "#border-style" }, - "tests": ["auto", "'Grotesque'"] + "tests": ["dotted dashed"] }, - "@font-face/font-display": { + "border-inline-color": { "links": { - "tr": "#descdef-font-face-font-display", - "dev": "#descdef-font-face-font-display" + "tr": "#border-color", + "dev": "#border-color" }, - "tests": ["auto", "block", "swap", "fallback", "optional"] + "tests": ["navy blue"] }, - "@font-feature-values/font-display": { + "border-start-start-radius": { "links": { - "tr": "#font-display-font-feature-values", - "dev": "#font-display-font-feature-values" + "tr": "#border-radius-shorthands", + "dev": "#border-radius-properties" }, - "tests": ["auto", "block", "swap", "fallback", "optional"] - } - } - }, - - "css-fonts-5": { - "title": "CSS Fonts Module Level 5", - "links": { - "dev": "css-fonts-5" - }, - "properties": { - "font-size-adjust": { + "tests": ["0", "50%", "250px 100px"] + }, + "border-start-end-radius": { "links": { - "dev": "#font-size-adjust-prop" + "tr": "#border-radius-shorthands", + "dev": "#border-radius-properties" }, - "tests": [ - "ex-height 0.545", "ex-height from-font", - "cap-height 0.545", "cap-height from-font", - "ch-width 0.545", "ch-width from-font", - "ic-width 0.545", "ic-width from-font", - "ic-height 0.545", "ic-height from-font" - ] + "tests": ["0", "50%", "250px 100px"] }, - }, - "descriptors": { - "@font-face/size-adjust": { + "border-end-start-radius": { "links": { - "dev": "#size-adjust-desc" + "tr": "#border-radius-shorthands", + "dev": "#border-radius-properties" }, - "tests": ["100%"] + "tests": ["0", "50%", "250px 100px"] }, - } - }, - - "css-writing-modes-3": { - "title": "CSS Writing Modes Level 3", - "links": { - "tr": "css-writing-modes-3", - "dev": "css-writing-modes-3" - }, - "properties": { - "direction": { + "border-end-end-radius": { "links": { - "tr": "#direction", - "dev": "#direction" + "tr": "#border-radius-shorthands", + "dev": "#border-radius-properties" }, - "tests": ["ltr", "rtl"] + "tests": ["0", "50%", "250px 100px"] }, - "unicode-bidi": { + "margin": { "links": { - "tr": "#unicode-bidi", - "dev": "#unicode-bidi" + "tr": "#logical-shorthand-keyword", + "dev": "#logical-shorthand-keyword" }, - "tests": ["normal", "embed", "isolate", "bidi-override", "isolate-override", "plaintext"] + "tests": ["logical 5px 10px 15px 20px"] }, - "writing-mode": { + "padding": { "links": { - "tr": "#block-flow", - "dev": "#block-flow" + "tr": "#logical-shorthand-keyword", + "dev": "#logical-shorthand-keyword" }, - "tests": ["horizontal-tb", "vertical-rl", "vertical-lr"] + "tests": ["logical 5px 10px 15px 20px"] }, - "text-orientation": { + "border-color": { "links": { - "tr": "#text-orientation", - "dev": "#text-orientation" + "tr": "#logical-shorthand-keyword", + "dev": "#logical-shorthand-keyword" }, - "tests": ["mixed", "upright", "sideways"] + "tests": ["logical red green blue yellow"] }, - "text-combine-upright": { + "border-style": { "links": { - "tr": "#text-combine-upright", - "dev": "#text-combine-upright" + "tr": "#logical-shorthand-keyword", + "dev": "#logical-shorthand-keyword" }, - "tests": ["none", "all"] + "tests": ["logical solid dotted dashed none"] + }, + "border-width": { + "links": { + "tr": "#logical-shorthand-keyword", + "dev": "#logical-shorthand-keyword" + }, + "tests": ["logical 5px 10px 15px 20px"] } } }, - "css-writing-modes-4": { - "title": "CSS Writing Modes Level 4", + "css-masking-1": { + "title": "CSS Masking Module Level 1", "links": { - "tr": "css-writing-modes-4", - "dev": "css-writing-modes-4" + "tr": "css-masking-1", + "dev": "css-masking-1", + "devtype": "fxtf" }, "properties": { - "writing-mode": { + "clip-path": { "links": { - "tr": "#block-flow", - "dev": "#block-flow" + "tr": "#the-clip-path", + "dev": "#the-clip-path" }, - "tests": ["sideways-rl", "sideways-lr"] + "tests": [ + "url('#clip')", + "inset(50%)", + "circle()", + "ellipse()", + "polygon(0 10px, 30px 0)", + "path('M 20 20 H 80 V 30')", + "circle() border-box", + "border-box", + "padding-box", + "content-box", + "margin-box", + "fill-box", + "stroke-box", + "view-box", + "none" + ] }, - "text-combine-upright": { + "clip-rule": { "links": { - "tr": "#text-combine-upright", - "dev": "#text-combine-upright" + "tr": "#the-clip-rule", + "dev": "#the-clip-rule" }, - "tests": ["digits 2"] - } - } - }, - - "css-color-3": { - "title": "CSS Color Module Level 3", - "links": { - "tr": "css-color-3", - "dev": "css-color-3" - }, - "values": { - "properties": [ - "color", - "background-color", - "border-color", - "text-decoration-color", - "column-rule-color" - ], - "rgba": { + "tests": ["nonzero", "evenodd"] + }, + "mask-image": { "links": { - "tr": "#rgba-color", - "dev": "#rgba-color", - "mdn": "color_value/rgba()" + "tr": "#the-mask-image", + "dev": "#the-mask-image" }, - "tests": "rgba(0,0,0,.5)" + "tests": ["none", "linear-gradient(black 0%, transparent 100%)", "url(image.png)"] }, - "#RGB": { + "mask-mode": { "links": { - "tr": "#rgb-color", - "dev": "#rgb-color", - "mdn": "color_value" + "tr": "#the-mask-mode", + "dev": "#the-mask-mode" }, - "tests": ["#F06", "#FF0066"] + "tests": ["alpha", "luminance", "match-source"] }, - "hsl": { + "mask-repeat": { "links": { - "tr": "#hsl-color", - "dev": "#hsl-color", - "mdn": "color_value/hsl()" + "tr": "#the-mask-repeat", + "dev": "#the-mask-repeat" }, - "tests": "hsl(0,0%,0%)" + "tests": ["repeat-x", "repeat-y"].concat(["repeat", "space", "round", "no-repeat"].times(1, 2)) }, - "hsla": { + "mask-position": { "links": { - "tr": "#hsla-color", - "dev": "#hsla-color", - "mdn": "color_value/hsla()" + "tr": "#the-mask-position", + "dev": "#the-mask-position" }, - "tests": "hsl(0,0%,0%,.5)" + "tests": ["center", "left 50%", "bottom 10px right 20px", "bottom 10px right", "top right 10px"] }, - "transparent": { + "mask-clip": { "links": { - "tr": "#transparent", - "dev": "#transparent", - "mdn": "color_value" + "tr": "#the-mask-clip", + "dev": "#the-mask-clip" }, - "tests": "transparent" + "tests": ["border-box", "padding-box", "content-box", "margin-box", "fill-box", "stroke-box", "view-box", "no-clip"] }, - "currentColor": { + "mask-origin": { "links": { - "tr": "#currentcolor", - "dev": "#currentcolor", - "mdn": "color_value" + "tr": "#the-mask-origin", + "dev": "#the-mask-origin" }, - "tests": "currentColor" - } - }, - "properties": { - "opacity": { + "tests": ["border-box", "padding-box", "content-box", "margin-box", "fill-box", "stroke-box", "view-box"] + }, + "mask-size": { "links": { - "tr": "#transparency", - "dev": "#transparency" + "tr": "#the-mask-size", + "dev": "#the-mask-size" }, - "tests": ["-5", "0", ".5", "1", "2"] - } - } - }, - - "css-color-4": { - "title": "CSS Color Module Level 4", - "links": { - "tr": "css-color-4", - "dev": "css-color-4" - }, - "values": { - "properties": [ - "color", - "background-color", - "border-color", - "text-decoration-color", - "column-rule-color" - ], - "comma-less colors": { + "tests": ["auto", "10px", "cover", "contain", "10px", "50%", "10px auto", "auto 10%", "50em 50%"] + }, + "mask-composite": { "links": { - "tr": "#funcdef-rgb", - "dev": "#funcdef-rgb", - "mdn": "color_value" + "tr": "#the-mask-composite", + "dev": "#the-mask-composite" }, - "tests": ["rgb(0% 20% 70%)", "rgb(0 64 185)", "hsl(0 0% 0%)"] + "tests": ["add", "subtract", "intersect", "exclude"] }, - "/ alpha": { + "mask": { "links": { - "tr": "#funcdef-rgb", - "dev": "#funcdef-rgb", - "mdn": "color_value" + "tr": "#the-mask", + "dev": "#the-mask" }, - "tests": ["rgba(0% 20% 70% / 50%)", "rgba(0% 20% 70% / .5)", "rgba(0 64 185 / 50%)", "rgba(0 64 185 / .5)", "hsla(0 0% 0% /.5)"] + "tests": ["top", "space", "url(image.png)", "url(image.png) luminance", "url(image.png) luminance top space"] }, - "optional alpha": { + "mask-border-source": { "links": { - "tr": "#funcdef-rgb", - "dev": "#funcdef-rgb", - "mdn": "color_value" + "tr": "#the-mask-border-source", + "dev": "#the-mask-border-source" }, - "tests": ["rgb(0% 20% 70% / 50%)", "rgb(0% 20% 70% / .5)", "rgb(0 64 185 / 50%)", "rgb(0 64 185 / .5)", "hsl(0 0% 0% / .5)"] + "tests": ["none", "url(image.png)"] }, - "Hex with alpha": { + "mask-border-slice": { "links": { - "tr": "#hex-notation", - "dev": "#hex-notation", - "mdn": "color_value" + "tr": "#the-mask-border-slice", + "dev": "#the-mask-border-slice" }, - "tests": ["#000F", "#000000FF"] + "tests": ["0 fill", "50% fill", "1.1 fill", "0 1 fill", "0 1 2 fill", "0 1 2 3 fill"] }, - "rebeccapurple": { + "mask-border-width": { "links": { - "tr": "#named-colors", - "dev": "#named-colors", - "mdn": "color_value" + "tr": "#the-mask-border-width", + "dev": "#the-mask-border-width" }, - "tests": "rebeccapurple" + "tests": ["auto", "10px", "50%", "1", "1.0", "auto 1", "auto 1 50%", "auto 1 50% 1.1"] }, - "system colors": { + "mask-border-outset": { "links": { - "tr": "#css-system-colors", - "dev": "#css-system-colors", - "mdn": "color_value" + "tr": "#the-mask-border-outset", + "dev": "#the-mask-border-outset" + }, + "tests": ["0", "1.1", "0 1", "0 1 2", "0 1 2 3"] + }, + "mask-border-repeat": { + "links": { + "tr": "#the-mask-border-repeat", + "dev": "#the-mask-border-repeat" + }, + "tests": ["stretch", "repeat", "round", "space"].times(1, 2) + }, + "mask-border": { + "links": { + "tr": "#the-mask-border", + "dev": "#the-mask-border" }, "tests": [ - "Canvas", "CanvasText", "LinkText", "VisitedText", "ActiveText", "ButtonFace", "Field", "FieldText", - "Highlight", "HighlightText", "GrayText" + "url(image.png)", + "url(image.png) 10px", + "url(image.png) space", + "url(image.png) 1 fill", + "url(image.png) 1 fill 10px", + "url(image.png) 1 fill 10px", + "url(image.png) 1 fill 10px 2" ] }, - "hwb()": { + "mask-type": { "links": { - "tr": "#the-hwb-notation", - "dev": "#the-hwb-notation", - "mdn": "color_value/hwb()" + "tr": "#the-mask-type", + "dev": "#the-mask-type" }, - "tests": ["hwb(0 0% 0%)", "hwb(0 0% 0% / .5)"] + "tests": ["luminance", "alpha"] + } + } + }, + + "css-multicol-1": { + "title": "CSS Multi-column Layout Module Level 1", + "links": { + "tr": "css-multicol-1", + "dev": "css-multicol-1" + }, + "properties": { + "column-width": { + "links": { + "tr": "#cw", + "dev": "#cw" + }, + "tests": ["10em", "auto"] }, - "lab()": { + "column-count": { "links": { - "tr": "#specifying-lab-lch", - "dev": "#specifying-lab-lch", - "mdn": "color_value/lab()" + "tr": "#cc", + "dev": "#cc" }, - "tests": ["lab(0% 0 0)", "lab(0% 0 0 /.5)"] + "tests": ["2", "auto"] }, - "oklab()": { + "columns": { "links": { - "tr": "#specifying-oklab-lch", - "dev": "#specifying-oklab-lch", - "mdn": "color_value/oklab()" + "tr": "#columns", + "dev": "#columns" }, - "tests": ["oklab(0% 0 0)", "oklab(40.101% 0.1147 0.0453 / .5)"] + "tests": ["100px", "3", "10em 2", "auto 2", "10em auto", "auto auto", "2 10em", "auto 10em", "2 auto"] }, - - "lch()": { + "column-rule-color": { "links": { - "tr": "#specifying-lch-lch", - "dev": "#specifying-lch-lch", - "mdn": "color_value/lch()" + "tr": "#crc", + "dev": "#crc" }, - "tests": ["lch(0% 0 0)", "lch(none 0% none)", "lch(0% 0 0 / .5)"] + "tests": "red" }, - "oklch()": { + "column-rule-style": { "links": { - "tr": "#specifying-oklch-lch", - "dev": "#specifying-oklch-lch", - "mdn": "color_value/oklch()" + "tr": "#crs", + "dev": "#crs" }, - "tests": ["oklch(0% 0 0)", "oklch(40.101% 0.12332 21.555 / .5)"] + "tests": ["none", "solid", "dotted"] }, - "color()": { + "column-rule-width": { "links": { - "tr": "#color-function", - "dev": "#color-function", - "mdn": "color_value/color()" + "tr": "#crw", + "dev": "#crw" }, - "tests": [ - "color(.2 .4 .6)", - "color(display-p3 .2. 4 .6)", - "color(foo .2 .4 .6)", - "color(.2 .4 .6 / .5)", - "color(display-p3 .2 .4 .6 / .5)", - "color(--foo .2 .4 .6 / .5)", - "color(.2 .4 .6, #123456)", - "color(display-p3 .2. 4 .6, #654321)", - "color(20% 40% 60%)", - "color(display-p3 20% 40% 60%)", - "color(foo 20% 40% 60%)", - "color(20% 40% 60% / .5)", - "color(image-p3 20% 40% 60% / .5)", - "color(--foo 20% 40% 60% / .5)", - "color(20% 40% 60%, #123456)", - "color(display-p3 20% 40% 60%, #654321)", - "color(--mycmyk 0% 20% 30% 5%)" - ] + "tests": "1px" }, - "device-cmyk()": { + "column-rule": { "links": { - "tr": "#cmyk-colors", - "dev": "#cmyk-colors", - "mdn": "color_value/device-cmyk()" + "tr": "#column-rule", + "dev": "#cr" }, - "tests": ["device-cmyk(.2 .3 .4 .5)", "device-cmyk(.2 .3 .4 .5 / .5)", "device-cmyk(.2 .3 .4 .5 / 50%)"] - } - }, - "properties": { - "opacity": { + "tests": ["transparent", "1px solid black"] + }, + "column-span": { "links": { - "tr": "#transparency", - "dev": "#transparency" + "tr": "#column-span", + "dev": "#column-span" }, - "tests": ["45%"] + "tests": ["none", "all"] + }, + "column-fill": { + "links": { + "tr": "#cf", + "dev": "#cf" + }, + "tests": ["auto", "balance", "balance-all"] } } }, - "css-color-5": { - "title": "CSS Color Module Level 5", + "css-overflow-3": { + "title": "CSS Overflow Module Level 3", "links": { - "dev": "css-color-5" + "tr": "css-overflow-3", + "dev": "css-overflow-3" }, - "values": { - "properties": [ - "color", - "background-color", - "border-color", - "text-decoration-color", - "column-rule-color" - ], - "color-mix()": { + "properties": { + "line-clamp": { "links": { - "dev": "#color-mix", - "mdn": "color_value" + "tr": "#line-clamp", + "dev": "#line-clamp", + "mdn": "-webkit-line-clamp" }, - "tests": [ - "color-mix(in srgb, teal 65%, olive)", - "color-mix(in srgb, rgb(255, 0, 0, .2) 65%, olive)", - "color-mix(in srgb, currentColor, rgba(0, 0, 0, .5) 65%", - "color-mix(in srgb, currentColor 10%, rgba(0, 0, 0, .5) 65%", - "color-mix(in lch, teal 65%, olive)", - "color-mix(in hsl, teal 65%, olive)", - "color-mix(in hwb, teal 65%, olive)", - "color-mix(in xyz, teal 65%, olive)", - "color-mix(in lab, teal 65%, olive)", - ] + "tests": ["none", "1", "5 clip", "5 ellipsis", "5 \"… (continued on next page)\""] }, - "color-contrast()": { + "max-lines": { "links": { - "dev": "#colorcontrast", - "mdn": "color_value" + "tr": "#max-lines", + "dev": "#max-lines" }, - "tests": [ - "color-contrast(wheat vs tan, sienna, #b22222, #d2691e)", - "color-contrast(hsl(200 50% 80%) vs hsl(200 83% 23%), purple, hsl(300 100% 25%))" - ] + "tests": ["none", "1"] }, - "color-adjust()": { + "overflow-x": { "links": { - - "dev": "#coloradjust", - "mdn": "color_value" + "tr": "#overflow-properties", + "dev": "#overflow-properties" }, - "tests": [ - "color-adjust(peru lightness -20%)" - ] + "tests": ["visible", "hidden", "clip", "scroll", "auto"] + }, + "overflow-y": { + "links": { + "tr": "#overflow-properties", + "dev": "#overflow-properties" + }, + "tests": ["visible", "hidden", "clip", "scroll", "auto"] + }, + "overflow-inline": { + "links": { + "tr": "#logical", + "dev": "#logical" + }, + "tests": ["visible", "hidden", "clip", "scroll", "auto"] }, + "overflow-block": { + "links": { + "tr": "#logical", + "dev": "#logical" + }, + "tests": ["visible", "hidden", "clip", "scroll", "auto"] + }, + "overflow-clip-margin": { + "links": { + "tr": "#overflow-clip-margin", + "dev": "#overflow-clip-margin" + }, + "tests": ["content-box", "padding-box", "border-box", "20px"] - "relative color": { + }, + "continue": { "links": { - "dev": "#relative-colors", - "mdn": "color_value" + "tr": "#continue", + "dev": "#continue" + }, + "tests": ["auto", "discard"] + }, + "scrollbar-gutter": { + "links": { + "tr": "scrollbar-gutter-property", + "dev": "#scrollbar-gutter-property" }, "tests": [ - "rgb(from indianred 255 g b)", - "hsl(from lightseagreen calc(h+180) s l)", - "lab(from orchid l 0 0)", - "lch(from peru calc(l * 0.8) c h)" + "auto", "stable", "both-edges stable", "stable both-edges", ] } } }, - "css-color-adjust-1": { - "title": "CSS Color Adjustment Module Level 1", + "css-overflow-4": { + "title": "CSS Overflow Module Level 4", "links": { - "tr": "css-color-adjust-1", - "dev": "css-color-adjust-1" + "tr": "css-overflow-4", + "dev": "css-overflow-4" }, - "properties": { - "color-adjust": { - "links": { - "tr": "#perf", - "dev": "#perf" - }, - "tests": ["economy", "exact"] - }, - "forced-color-adjust": { - "links": { - "tr": "#forced", - "dev": "#forced" - }, - "tests": ["auto", "none", "preserve-parent-color"] - }, - "color-scheme": { + "selectors": { + "::nth-fragment()": { "links": { - "tr": "#color-scheme-prop", - "dev": "#color-scheme-prop" + "tr": "#fragment-pseudo-element", + "dev": "#fragment-pseudo-element" }, "tests": [ - "normal", "light", "dark", "light dark", "dark light", "only light", "light only", - "light light", "dark dark", "light purple", "purple dark interesting", "none", "light none" + ":nth-fragment(even)", ":nth-fragment(odd)", + ":nth-fragment(n)", ":nth-fragment(-n)", ":nth-fragment(0n)", + ":nth-fragment(1)", ":nth-fragment(-1)", ":nth-fragment(0)", + ":nth-fragment(n+1)", ":nth-fragment(3n+1)", ":nth-fragment(3n + 1)", + ":nth-fragment(-n+1)", ":nth-fragment(3n-1)" ] } } }, - "css-multicol-1": { - "title": "CSS Multi-column Layout Module Level 1", + "css-overscroll-1": { + "title": "CSS Overscroll Behavior Module Level 1", "links": { - "tr": "css-multicol-1", - "dev": "css-multicol-1" + "tr": "css-overscroll-1", + "dev": "css-overscroll-1" }, "properties": { - "column-width": { + "overscroll-behavior": { "links": { - "tr": "#cw", - "dev": "#cw" + "dev": "#overscroll-behavior-properties" }, - "tests": ["10em", "auto"] + "tests": ["contain", "none", "auto"].times(1, 2) }, - "column-count": { + "overscroll-behavior-x": { "links": { - "tr": "#cc", - "dev": "#cc" + "dev": "#overscroll-behavior-longhands-physical" }, - "tests": ["2", "auto"] + "tests": ["contain", "none", "auto"] }, - "columns": { + "overscroll-behavior-y": { "links": { - "tr": "#columns", - "dev": "#columns" + "dev": "#overscroll-behavior-longhands-physical" }, - "tests": ["100px", "3", "10em 2", "auto 2", "10em auto", "auto auto", "2 10em", "auto 10em", "2 auto"] + "tests": ["contain", "none", "auto"] }, - "column-rule-color": { + "overscroll-behavior-inline": { "links": { - "tr": "#crc", - "dev": "#crc" + "dev": "#overscroll-behavior-longhands-logical" }, - "tests": "red" + "tests": ["contain", "none", "auto"] }, - "column-rule-style": { + "overscroll-behavior-block": { "links": { - "tr": "#crs", - "dev": "#crs" + "dev": "#overscroll-behavior-longhands-logical" }, - "tests": ["none", "solid", "dotted"] + "tests": ["contain", "none", "auto"] + } + } + }, + + "css-page-3": { + "title": "Paged Media Module Level 3", + "links": { + "tr": "css-page-3", + "dev": "css-page-3" + }, + "properties": { + "page": { + "links": { + "tr": "#using-named-pages", + "dev": "#using-named-pagest" + }, + "tests": ["auto", "customName"] }, - "column-rule-width": { + }, + "@rules": { + "@page": { "links": { - "tr": "#crw", - "dev": "#crw" + "tr": "#at-page-rule", + "dev": "#at-page-rule" }, - "tests": "1px" + "tests": [ + "@page { margin: 2cm }", + "@page customName { margin: 2cm }", + "@page :left { margin: 2cm }", + "@page :right { margin: 2cm }", + "@page :first { margin: 2cm }", + "@page :blank { margin: 2cm }" + ] + } + }, + "descriptors": { + "@page/size": { + "links": { + "tr": "#page-size-prop", + "dev": "#page-size-prop" + }, + "tests": [ + "4in 6in", "4em 6em", + "auto", + "landscape", + "portrait", + "a3", "a4", "a5", "b4", "b5", "jis-b4", "jis-b5", "ledger", "legal", "letter", + "a3 landscape", + "a3 portrait", + "landscape a3", + "portrait a3" + ] }, - "column-rule": { + "@page/page-orientation": { "links": { - "tr": "#column-rule", - "dev": "#cr" + "tr": "#page-orientation-prop", + "dev": "#page-orientation-prop" }, - "tests": ["transparent", "1px solid black"] + "tests": [ + "upright", "rotate-left", "rotate-right" + ] }, - "column-span": { + "@page/marks": { "links": { - "tr": "#column-span", - "dev": "#column-span" + "tr": "#marks", + "dev": "#marks" }, - "tests": ["none", "all"] + "tests": [ + "none", "crop", "cross", "crop cross" + ] }, - "column-fill": { + "@page/bleed": { "links": { - "tr": "#cf", - "dev": "#cf" + "tr": "#bleed", + "dev": "#bleed" }, - "tests": ["auto", "balance", "balance-all"] + "tests": [ + "auto", "6pt" + ] } } }, - "css-values-3": { - "title": "CSS Values and Units Module Level 3", + "css-paint-api-1": { + "title": "CSS Painting API Level 1", "links": { - "tr": "css-values-3", - "dev": "css-values-3" + "tr": "css-paint-api-1", + "dev": "css-paint-api-1", + "devtype": "houdini" }, "values": { "properties": [ - "width", - "padding" + "background-image", + "list-style-image", + "border-image", + "cursor", + "content" ], - "rem": { + "paint()": { "links": { - "tr": "#rem", - "dev": "#rem", - "mdn": "length" + "tr": "#paint-notation", + "dev": "#paint-notation" }, - "tests": "5rem" - }, - "ch": { - "links": { - "tr": "#ch", - "dev": "#ch", - "mdn": "length" - }, - "tests": "5ch" - }, - "vw": { - "links": { - "tr": "#vw", - "dev": "#vw", - "mdn": "length" - }, - "tests": "5vw" - }, - "vh": { - "links": { - "tr": "#vh", - "dev": "#vh", - "mdn": "length" - }, - "tests": "5vh" - }, - "vmin": { + "tests": [ + "paint(company-logo)", "paint(chat-bubble, blue)", "paint(failing-argument-syntax, 1px, 2px)", "paint(arc, purple, 0.4turn, 0.8turn, 40px, 15px)" + ] + } + } + }, + + "css-position-3": { + "title": "CSS Positioned Layout Module Level 3", + "links": { + "tr": "css-position-3", + "dev": "css-position-3" + }, + "properties": { + "position": { "links": { - "tr": "#vmin", - "dev": "#vmin", - "mdn": "length" + "tr": "#position", + "dev": "#position" }, - "tests": "5vmin" + "tests": ["sticky"] }, - "vmax": { + "inset-before": { "links": { - "tr": "#vmax", - "dev": "#vmax", - "mdn": "length" + "dev": "#logical-box-offsets-beaso" }, - "tests": "5vmax" + "tests": ["auto", "10px", "50%"] }, - "Q": { + "inset-after": { "links": { - "tr": "#Q", - "dev": "#Q", - "mdn": "length" + "dev": "#logical-box-offsets-beaso" }, - "tests": "5Q" + "tests": ["auto", "10px", "50%"] }, - "attr()": { + "inset-start": { "links": { - "tr": "#attr-notation", - "dev": "#attr-notation" + "dev": "#logical-box-offsets-beaso" }, - "tests": ["attr(data-px)", "attr(data-px px)", "attr(data-px px, initial)"] + "tests": ["auto", "10px", "50%"] }, - "calc()": { + "inset-end": { "links": { - "tr": "#calc-notation", - "dev": "#calc-notation" + "dev": "#logical-box-offsets-beaso" }, - "tests": [ - "calc(1px + 2px)", - "calc(5px*2)", - "calc(5px/2)", - "calc(100%/3 - 2*1em - 2*1px)", - "calc(attr(data-px)*2)", - "calc(5px - 10px)", - "calc(1vw - 1px)", - "calc(calc(100%))" - ] + "tests": ["auto", "10px", "50%"] } - }, - "properties": { - "transform": [ - "rotate(calc(15deg + 30deg))" - ] } }, - "css-values-4": { - "title": "CSS Values and Units Module Level 4", + "css-pseudo-4": { + "title": "CSS Pseudo-Elements Module Level 4", "links": { - "tr": "css-values-4", - "dev": "css-values-4" + "tr": "css-pseudo-4", + "dev": "css-pseudo-4" }, - "values": { - "properties": [ - "width", - "padding" - ], - "ex": { + "selectors": { + "::selection": { "links": { - "tr": "#ex", - "dev": "#ex", - "mdn": "length" + "tr": "#selectordef-selection", + "dev": "#selectordef-selection" }, - "tests": "5ex" + "tests": ["::selection"] }, - "rex": { + "::target-text": { "links": { - "tr": "#rex", - "dev": "#rex", - "mdn": "length" + "tr": "#selectordef-target-text", + "dev": "#selectordef-target-text" }, - "tests": "5rex" + "tests": ["::target-text"] }, - "cap": { + "::spelling-error": { "links": { - "tr": "#cap", - "dev": "#cap", - "mdn": "length" + "tr": "#selectordef-spelling-error", + "dev": "#selectordef-spelling-error" }, - "tests": "5cap" + "tests": ["::spelling-error"] }, - "rcap": { + "::grammar-error": { "links": { - "tr": "#rcap", - "dev": "#rcap", - "mdn": "length" + "tr": "#selectordef-grammar-error", + "dev": "#selectordef-grammar-error" }, - "tests": "5rcap" + "tests": ["::grammar-error"] }, - "rch": { + "::file-selector-button": { "links": { - "tr": "#rch", - "dev": "#rcap", - "mdn": "length" + "tr": "#marker-pseudo", + "dev": "#marker-pseudo" }, - "tests": "5rch" + "tests": ["::file-selector-button"] }, - "rch": { + "::marker": { "links": { - "tr": "#rch", - "dev": "#rcap", - "mdn": "length" + "tr": "#marker-pseudo", + "dev": "#marker-pseudo" }, - "tests": "5rch" + "tests": ["::marker"] }, - "ic": { + "::placeholder": { "links": { - "tr": "#ic", - "dev": "#ic", - "mdn": "length" + "tr": "#placeholder-pseudo", + "dev": "#placeholder-pseudo" }, - "tests": "5ic" - }, - "ric": { + "tests": ["::placeholder"] + } + } + }, + + "css-regions-1": { + "title": "CSS Regions Module Level 1", + "links": { + "tr": "css-regions-1", + "dev": "css-regions-1" + }, + "properties": { + "flow-from": { "links": { - "tr": "#ric", - "dev": "#ric", - "mdn": "length" + "tr": "#flow-from", + "dev": "#flow-from" }, - "tests": "5ric" + "tests": ["none", "named-flow"] }, - "lh": { + "flow-into": { "links": { - "tr": "#lh", - "dev": "#lh", - "mdn": "length" + "tr": "#the-flow-into-property", + "dev": "#the-flow-into-property" }, - "tests": "5lh" + "tests": ["none", "named-flow", "named-flow element", "named-flow content"] }, - "rlh": { + "region-fragment": { "links": { - "tr": "#rlh", - "dev": "#rlh", - "mdn": "length" + "tr": "#the-region-fragment-property", + "dev": "#the-region-fragment-property" }, - "tests": "5rlh" - }, - "toggle()": { + "tests": ["auto", "break"] + } + } + }, + + "css-rhythmic-1": { + "title": "CSS Rhythmic Sizing", + "links": { + "tr": "css-rhythm-1", + "dev": "css-rhythm-1" + }, + "properties": { + "line-height-step": { "links": { - "tr": "#toggle-notation", - "dev": "#toggle-notation" + "tr": "#line-height-step", + "dev": "#line-height-step" }, - "tests": ["toggle(1px, 2px)", "toggle(italic, normal)", "toggle(disc, circle, square, box)"] + "tests": ["none", "30px", "2em"] }, - "min()": { + "block-step-size": { "links": { - "tr": "#calc-notation", - "dev": "#comp-func" + "tr": "#block-step-size", + "dev": "#block-step-size" }, - "tests": ["min(10 * (1vw + 1vh) / 2, 12px)"] + "tests": ["none", "30px", "2em"] }, - "max()": { + "block-step-insert": { "links": { - "tr": "#calc-notation", - "dev": "#comp-func" + "tr": "#block-step-insert", + "dev": "#block-step-insert" }, - "tests": ["max(10 * (1vw + 1vh) / 2, 12px)"] + "tests": ["margin", "padding"] }, - "clamp()": { + "block-step-align": { "links": { - "tr": "#calc-notation", - "dev": "#comp-func" + "tr": "#block-step-align", + "dev": "#block-step-align" }, - "tests": ["clamp(12px, 10 * (1vw + 1vh) / 2, 100px)"] + "tests": ["auto", "center", "start", "end"] }, - "calc()": { + "block-step-round": { "links": { - "tr": "#calc-func", - "dev": "#calc-func" + "tr": "#block-step-round", + "dev": "#block-step-round" }, - "tests": [ - "calc(1rem * pow(1.5, -1))", - "calc(pow(e, pi) - pi)", - "calc(-18px - sign(5px)*round(down, -18px*sign(5px), 5px))", - "calc(-18px - round(to-zero, -18px, 5px))" - ] + "tests": ["up", "down", "nearest"] }, - "round()": { + "block-step": { "links": { - "tr": "#round-func", - "dev": "#round-func" + "tr": "#block-step", + "dev": "#block-step" }, "tests": [ - "round(down, 5.5px, 5px)", - "up(down, 5.5px, 5px)", - "down(down, 5.5px, 5px)", - "round(to-zero, 5.5px, 5px)" + "none", + "padding", + "end", + "down", + "30px margin", + "30px padding center", + "2em padding start nearest" ] + } + } + }, + + "css-ruby-1": { + "title": "CSS Ruby Layout Module Level 1", + "links": { + "tr": "css-ruby-1", + "dev": "css-ruby-1" + }, + "properties": { + "display": { + "links": { + "tr": "#ruby-display", + "dev": "#ruby-display" + }, + "tests": ["ruby", "ruby-base", "ruby-text", "ruby-base-container", "ruby-text-container"] }, - "mod()": { + "ruby-position": { "links": { - "tr": "#round-func", - "dev": "#round-func" + "tr": "#rubypos", + "dev": "#rubypos" }, - "tests": ["mod(18px, 5px)", "mod(-140deg, -90deg)"] + "tests": ["alternate", "over", "under", "alternate over", "alternate under", "inter-character"] }, - "rem()": { + "ruby-merge": { "links": { - "tr": "#round-func", - "dev": "#round-func" + "tr": "#collapsed-ruby", + "dev": "#collapsed-ruby" }, - "tests": ["rem(140deg, -90deg)"] + "tests": ["separate", "collapse", "auto"] }, - "sin()": { + "ruby-align": { "links": { - "tr": "#trig-funcs", - "dev": "#trig-funcs" + "tr": "#ruby-align-property", + "dev": "#ruby-align-property" }, - "tests": ["sin(45deg)", "sin(.125turn)", "sin(3.14159 / 4)"] + "tests": ["start", "center", "space-between", "space-around"] + } + } + }, + + "css-scoping-1": { + "title": "CSS Scoping Module Level 1", + "links": { + "tr": "css-scoping-1", + "dev": "css-scoping-1" + }, + "selectors": { + ":host": { + "links": { + "tr": "#host-selector", + "dev": "#host-selector" + }, + "tests": ":host" }, - "cos()": { + ":host()": { "links": { - "tr": "#trig-funcs", - "dev": "#trig-funcs" + "tr": "#host-selector", + "dev": "#host-selector", + "mdn": ":host()" }, - "tests": ["cos(45deg)", "cos(.125turn)", "cos(3.14159 / 4)"] + "tests": [":host(*)", ":host(.foo)"] }, - "tan()": { + ":host-context()": { "links": { - "tr": "#trig-funcs", - "dev": "#trig-funcs" + "tr": "#host-selector", + "dev": "#host-selector", + "mdn": ":host-context()" }, - "tests": ["tan(1)"] + "tests": [":host-context(*)", ":host-context(.foo)"] }, - "asin()": { + "::slotted()": { "links": { - "tr": "#trig-funcs", - "dev": "#trig-funcs" + "dev": "#slotted-pseudo" }, - "tests": ["asin(1)"] + "tests": ["::slotted(*)", "::slotted(.foo)"] + } + } + }, + + "css-scroll-anchoring-1": { + "title": "CSS Scroll Anchoring Module Level 1", + "links": { + "tr": "css-scroll-anchoring-1", + "dev": "css-scroll-anchoring-1" + }, + "properties": { + "overflow-anchor": { + "links": { + "dev": "#exclusion-api" + }, + "tests": ["none", "auto"] + } + } + }, + + "css-scroll-snap-1": { + "title": "CSS Scroll Snap Module Level 1", + "links": { + "tr": "css-scroll-snap-1", + "dev": "css-scroll-snap-1" + }, + "properties": { + "scroll-margin": { + "links": { + "tr": "#scroll-margin", + "dev": "#scroll-margin" + }, + "tests": ["0px", "6px 5px", "10px 20px 30px", "10px 20px 30px 40px", "20px 3em 1in 5rem", "calc(2px)", "calc(3 * 25px)", "calc(3 * 25px) 5px 10em calc(1vw - 5px)"] }, - "acos()": { + "scroll-margin-block": { "links": { - "tr": "#trig-funcs", - "dev": "#trig-funcs" + "tr": "#margin-longhands-logical", + "dev": "#margin-longhands-logical" }, - "tests": ["acos(-1)"] + "tests": ["10px", "10px 10px"] }, - "atan()": { + "scroll-margin-block-end": { "links": { - "tr": "#trig-funcs", - "dev": "#trig-funcs" + "tr": "#margin-longhands-logical", + "dev": "#margin-longhands-logical" }, - "tests": ["atan(-1)", "atan(tan(90deg))", "tan(atan(infinity))"] + "tests": ["10px"] }, - "atan2()": { + "scroll-margin-block-start": { "links": { - "tr": "#trig-funcs", - "dev": "#trig-funcs" + "tr": "#margin-longhands-logical", + "dev": "#margin-longhands-logical" }, - "tests": ["atan2(15deg, 90deg)"] + "tests": ["10px"] }, - "pow()": { + "scroll-margin-bottom": { "links": { - "tr": "#exponent-funcs", - "dev": "#exponent-funcs" + "tr": "#margin-longhands-physical", + "dev": "#margin-longhands-physical" }, - "tests": ["pow(1.5, -1)"] + "tests": ["10px"] }, - "sqrt()": { + "scroll-margin-inline": { "links": { - "tr": "#exponent-funcs", - "dev": "#exponent-funcs" + "tr": "#margin-longhands-logical", + "dev": "#margin-longhands-logical" }, - "tests": ["sqrt(2)"] + "tests": ["10px", "10px 10px"] }, - "hypot()": { + "scroll-margin-inline-start": { "links": { - "tr": "#exponent-funcs", - "dev": "#exponent-funcs" + "tr": "#margin-longhands-logical", + "dev": "#margin-longhands-logical" }, - "tests": ["hypot(2)", "hypot(2, 2)"] + "tests": ["10px"] }, - "log()": { + "scroll-margin-inline-end": { "links": { - "tr": "#exponent-funcs", - "dev": "#exponent-funcs" + "tr": "#margin-longhands-logical", + "dev": "#margin-longhands-logical" }, - "tests": ["log(2)"] + "tests": ["10px"] }, - "exp()": { + "scroll-margin-left": { "links": { - "tr": "#exponent-funcs", - "dev": "#exponent-funcs" + "tr": "#margin-longhands-physical", + "dev": "#margin-longhands-physical" }, - "tests": ["exp(2)"] + "tests": ["10px"] }, - "abs()": { + "scroll-margin-right": { "links": { - "tr": "#sign-funcs", - "dev": "#sign-funcs" + "tr": "#margin-longhands-physical", + "dev": "#margin-longhands-physical" }, - "tests": ["abs(-2)"] + "tests": ["10px"] }, - "sign()": { + "scroll-margin-top": { "links": { - "tr": "#sign-funcs", - "dev": "#sign-funcs" + "tr": "#margin-longhands-physical", + "dev": "#margin-longhands-physical" }, - "tests": ["sign(10%)"] + "tests": ["10px"] }, - "e": { + "scroll-padding": { "links": { - "tr": "#calc-constants", - "dev": "#calc-constants" + "tr": "#scroll-padding", + "dev": "#scroll-padding" }, - "tests": ["calc(e)"] + "tests": ["auto", "0px", "6px 5px", "10px 20px 30px", "10px 20px 30px 40px", "10px auto 30px auto", "10%", "20% 3em 1in 5rem", "calc(2px)", "calc(50%)", "calc(3 * 25px)", "calc(3 * 25px) 5px 10% calc(10% - 5px)"] }, - "pi": { + "scroll-padding-block": { "links": { - "tr": "#calc-constants", - "dev": "#calc-constants" + "tr": "#padding-longhands-logical", + "dev": "#padding-longhands-logical" }, - "tests": ["calc(pi)"] + "tests": ["10px", "50%", "10px 50%", "50% 50%"] }, - "infinity": { + "scroll-padding-block-end": { "links": { - "tr": "#calc-error-constants", - "dev": "#ccalc-error-constants" + "tr": "#padding-longhands-logical", + "dev": "#padding-longhands-logical" }, - "tests": ["calc(infinity)"] + "tests": ["10px", "50%"] }, - "-infinity": { + "scroll-padding-block-start": { "links": { - "tr": "#calc-error-constants", - "dev": "#ccalc-error-constants" + "tr": "#padding-longhands-logical", + "dev": "#padding-longhands-logical" }, - "tests": ["calc(-infinity)"] + "tests": ["10px", "50%"] }, - "NaN": { + "scroll-padding-bottom": { "links": { - "tr": "#calc-error-constants", - "dev": "#ccalc-error-constants" + "tr": "#padding-longhands-physical", + "dev": "#padding-longhands-physical" }, - "tests": ["calc(NaN)"] - } - } - }, - - "css-env-1": { - "title": "Environment Variables Level 1", - "links": { - "dev": "css-env-1" - }, - "values": { - "properties": [ - "width", - "padding" - ], - "env()": { + "tests": ["10px", "50%"] + }, + "scroll-padding-inline": { "links": { - "dev": "#env-function" + "tr": "#padding-longhands-logical", + "dev": "#padding-longhands-logical" + }, + "tests": ["10px", "50%", "10px 50%", "50% 50%"] + }, + "scroll-padding-inline-end": { + "links": { + "tr": "#padding-longhands-logical", + "dev": "#padding-longhands-logical" + }, + "tests": ["10px", "50%"] + }, + "scroll-padding-inline-start": { + "links": { + "tr": "#padding-longhands-logical", + "dev": "#padding-longhands-logical" + }, + "tests": ["10px", "50%"] + }, + "scroll-padding-left": { + "links": { + "tr": "#padding-longhands-physical", + "dev": "#padding-longhands-physical" + }, + "tests": ["10px", "50%"] + }, + "scroll-padding-right": { + "links": { + "tr": "#padding-longhands-physical", + "dev": "#padding-longhands-physical" + }, + "tests": ["10px", "50%"] + }, + "scroll-padding-top": { + "links": { + "tr": "#padding-longhands-physical", + "dev": "#padding-longhands-physical" + }, + "tests": ["10px", "50%"] + }, + "scroll-snap-align": { + "links": { + "tr": "#scroll-snap-align", + "dev": "#scroll-snap-align" + }, + "tests": ["none", "start", "end", "center", "none start", "end center", "center start", "end none", "center center"] + }, + "scroll-snap-stop": { + "links": { + "tr": "#scroll-snap-stop", + "dev": "#scroll-snap-stop" + }, + "tests": ["normal", "always"] + }, + "scroll-snap-type": { + "links": { + "tr": "#scroll-snap-type", + "dev": "#scroll-snap-type" }, "tests": [ - "env(safe-area-inset-top)", "env(safe-area-inset-top, 12px)", - "env(safe-area-inset-right)", "env(safe-area-inset-right, 12px)", - "env(safe-area-inset-bottom)", "env(safe-area-inset-bottom, 12px)", - "env(safe-area-inset-left)", "env(safe-area-inset-left, 12px)" + "none", "x mandatory", "y mandatory", "block mandatory", "inline mandatory", "both mandatory", + "x proximity", "y proximity", "block proximity", "inline proximity", "both proximity" ] } } }, - "css-regions-1": { - "title": "CSS Regions Module Level 1", + "css-scrollbars-1": { + "title": "CSS Scrollbars Module Level 1", "links": { - "tr": "css-regions-1", - "dev": "css-regions-1" + "tr": "css-scrollbars-1", + "dev": "css-scrollbars-1" }, "properties": { - "flow-from": { + "scrollbar-color": { "links": { - "tr": "#flow-from", - "dev": "#flow-from" + "tr": "#scrollbar-color", + "dev": "#scrollbar-color" }, - "tests": ["none", "named-flow"] + "tests": ["auto", "red blue"] }, - "flow-into": { + "scrollbar-width": { "links": { - "tr": "#the-flow-into-property", - "dev": "#the-flow-into-property" + "tr": "#scrollbar-width", + "dev": "#scrollbar-width" }, - "tests": ["none", "named-flow", "named-flow element", "named-flow content"] - }, - "region-fragment": { + "tests": ["auto", "thin", "none"] + } + } + }, + + "css-shadow-parts-1": { + "title": "CSS Shadow Parts", + "links": { + "tr": "css-shadow-parts-1", + "dev": "css-shadow-parts-1" + }, + "selectors": { + "::part()": { "links": { - "tr": "#the-region-fragment-property", - "dev": "#the-region-fragment-property" + "tr": "#part", + "dev": "#part" }, - "tests": ["auto", "break"] + "tests": ["::part(label)"] } } }, - "css-flexbox-1": { - "title": "CSS Flexible Box Layout Module Level 1", + "css-shapes-1": { + "title": "CSS Shapes Module Level 1", "links": { - "tr": "css-flexbox-1", - "dev": "css-flexbox-1", - "mdn": "Glossary/Flexbox" + "tr": "css-shapes-1", + "dev": "css-shapes-1" }, "properties": { - "align-content": { + "shape-outside": { "links": { - "tr": "#align-content-property", - "dev": "#align-content-property" + "tr": "#shape-outside-property", + "dev": "#shape-outside-property" }, - "tests": ["flex-start", "flex-end", "space-between", "space-around"] + "tests": [ + "none", "inset(10% round 10% 40% 10% 40%)", "ellipse(at top 50% left 20%)", "circle(at right 5% top)", + "polygon(100% 0, 100% 100%, 0 100%)", "path('M 20 20 H 80 V 30')", + "margin-box", "border-box", "padding-box", "content-box", + "inset(10% round 10% 40% 10% 40%) margin-box", "ellipse(at top 50% left 20%) margin-box", + "circle(at right 5% top) margin-box", "polygon(100% 0, 100% 100%, 0 100%) margin-box", "path('M 20 20 H 80 V 30') margin-box", + "attr(src url)", "url(image.png)" + ] }, - "align-items": { + "shape-image-threshold": { "links": { - "tr": "#align-items-property", - "dev": "#align-items-property" + "tr": "#shape-image-threshold-property", + "dev": "#shape-image-threshold-property" }, - "tests": ["flex-start", "flex-end"] + "tests": ["0", "1", "0.0", "0.1"] }, - "align-self": { + "shape-margin": { "links": { - "tr": "#align-items-property", - "dev": "#align-items-property" + "tr": "#shape-margin-property", + "dev": "#shape-margin-property" }, - "tests": ["flex-start", "flex-end"] - }, - "display": { + "tests": ["0", "10px", "50%"] + } + } + }, + + "css-shapes-2": { + "title": "CSS Shapes Module Level 2", + "links": { + "dev": "css-shapes-2" + }, + "properties": { + "shape-inside": { "links": { - "tr": "#flex-containers", - "dev": "#flex-containers" + "dev": "#shape-inside-property" }, - "tests": ["flex", "inline-flex"] + "tests": [ + "auto", "outside-shape", "shape-box", "display", "inset(10% round 10% 40% 10% 40%)", + "ellipse(at top 50% left 20%)", "circle(at right 5% top)", "polygon(100% 0, 100% 100%, 0 100%)", "path('M 20 20 H 80 V 30')", + "url(image.png)" + ] }, - "flex": { + "shape-padding": { "links": { - "tr": "#flex-property", - "dev": "#flex-property" + "dev": "#shape-padding-property" }, - "tests": ["none", "5 7 10%"] - }, - "flex-basis": { + "tests": ["0", "10px", "50%"] + } + } + }, + + "css-sizing-3": { + "title": "CSS Box Sizing Module Level 3", + "links": { + "tr": "css-sizing-3", + "dev": "css-sizing-3" + }, + "properties": { + "width": { "links": { - "tr": "#flex-basis-property", - "dev": "#flex-basis-property" + "tr": "#preferred-size-properties", + "dev": "#preferred-size-properties" }, - "tests": ["auto", "content", "1px"] + "tests": ["max-content", "min-content", "fit-content(10%)"] }, - "flex-direction": { + "min-width": { "links": { - "tr": "#flex-direction-property", - "dev": "#flex-direction-property" + "tr": "#min-size-properties", + "dev": "#min-size-properties" }, - "tests": ["row", "row-reverse", "column", "column-reverse"] + "tests": ["max-content", "min-content", "fit-content(10%)"] }, - "flex-flow": { + "max-width": { "links": { - "tr": "#flex-flow-property", - "dev": "#flex-flow-property" + "tr": "#max-size-properties", + "dev": "#max-size-properties" }, - "tests": ["row", "row-reverse", "column", "column-reverse", "wrap", "wrap-reverse"] + "tests": ["max-content", "min-content", "fit-content(10%)"] }, - "flex-grow": { + "height": { "links": { - "tr": "#flex-grow-property", - "dev": "#flex-grow-property" + "tr": "#preferred-size-properties", + "dev": "#preferred-size-properties" }, - "tests": ["0", "5"] + "tests": ["max-content", "min-content", "fit-content(10%)"] }, - "flex-shrink": { + "min-height": { "links": { - "tr": "#flex-shrink-property", - "dev": "#flex-shrink-property" + "tr": "#min-size-properties", + "dev": "#min-size-properties" }, - "tests": ["1", "10"] + "tests": ["max-content", "min-content", "fit-content(10%)"] }, - "flex-wrap": { + "max-height": { "links": { - "tr": "#flex-wrap-property", - "dev": "#flex-wrap-property" + "tr": "#max-size-properties", + "dev": "#max-size-properties" }, - "tests": ["nowrap", "wrap", "wrap-reverse"] + "tests": ["max-content", "min-content", "fit-content(10%)"] }, - "justify-content": { - "links": { - "tr": "#justify-content-property", - "dev": "#justify-content-property" - }, - "tests": ["flex-start", "flex-end", "space-between", "space-around"] - }, - "min-height": { - "links": { - "tr": "#min-size-auto", - "dev": "#min-size-auto" - }, - "tests": ["auto"] - }, - "min-width": { - "links": { - "tr": "#min-size-auto", - "dev": "#min-size-auto" - }, - "tests": ["auto"] - }, - "order": { + "column-width": { "links": { - "tr": "#order-property", - "dev": "#order-property" + "tr": "#column-sizing", + "dev": "#column-sizing" }, - "tests": ["0", "1"] + "tests": ["max-content", "min-content", "fit-content(10%)"] } } }, - "css-grid-1": { - "title": "CSS Grid Layout Module Level 1", + "css-sizing-4": { + "title": "CSS Box Sizing Module Level 4", "links": { - "tr": "css-grid-1", - "dev": "css-grid-1", - "mdn": "Glossary/Grid" + "tr": "css-sizing-4", + "dev": "css-sizing-4" }, "properties": { - "display": { - "links": { - "tr": "#grid-containers", - "dev": "#grid-containers" - }, - "tests": ["grid", "inline-grid"] - }, - "grid-template-columns": { - "links": { - "tr": "#track-sizing", - "dev": "#track-sizing" - }, - "tests": [ - "none", "auto", "100px", "1fr", "100px 1fr auto", - "repeat(2, 100px 1fr)", - "repeat(4, 10px [col-start] 250px [col-end]) 10px", - "100px 1fr max-content minmax(min-content, 1fr)", - "repeat(auto-fill, minmax(25ch, 1fr))", - "10px [col-start] 250px [col-end]", - "[first nav-start] 150px [main-start] 1fr [last]", - "10px [col-start] 250px [col-end] 10px [col-start] 250px [col-end] 10px", - "[a] auto [b] minmax(min-content, 1fr) [b c d] repeat(2, [e] 40px) repeat(5, auto)" - ] - }, - "grid-template-rows": { - "links": { - "tr": "#track-sizing", - "dev": "#track-sizing" - }, - "tests": [ - "none", "auto", "100px", "1fr", "100px 1fr auto", - "repeat(2, 100px 1fr)", - "100px 1fr max-content minmax(min-content, 1fr)", - "10px [row-start] 250px [row-end]", - "[first header-start] 50px [main-start] 1fr [footer-start] 50px [last]" - ] - }, - "grid-template-areas": { - "links": { - "tr": "#grid-template-areas-property", - "dev": "#grid-template-areas-property" - }, - "tests": ["none", "'articles'", "'head head'", "'head head' 'nav main' 'foot ....'"] - }, - "grid-template": { + "aspect-ratio": { "links": { - "tr": "#explicit-grid-shorthand", - "dev": "#explicit-grid-shorthand" + "tr": "#aspect-ratio", + "dev": "#aspect-ratio" }, - "tests": ["none", "auto 1fr auto / auto 1fr", "[header-top] 'a a a' [header-bottom] [main-top] 'b b b' 1fr [main-bottom] / auto 1fr auto"] + "tests": ["auto", "2", "16 / 9", "auto 16 / 9"] }, - "grid-auto-columns": { + "contain-intrinsic-size": { "links": { - "tr": "#auto-tracks", - "dev": "#auto-tracks" + "tr": "#propdef-contain-intrinsic-size", + "dev": "#propdef-contain-intrinsic-size" }, - "tests": [ - "auto", "1fr", "100px", "max-content", "minmax(min-content, 1fr)", "min-content max-content auto", - "100px 150px 390px", "100px minmax(100px, auto) 10% 0.5fr fit-content(400px)" - ] + "tests": ["none", "10px", "10px 15px"] }, - "grid-auto-rows": { + "contain-intrinsic-width": { "links": { - "tr": "#auto-tracks", - "dev": "#auto-tracks" + "tr": "#intrinsic-size-override", + "dev": "#intrinsic-size-override" }, - "tests": [ - "auto", "1fr", "100px", "100px 30%", "100px 30% 1em", "min-content", "minmax(min-content, 1fr)", - "min-content max-content auto", "100px minmax(100px, auto) 10% 0.5fr fit-content(400px)" - ] + "tests": ["none", "10px"] }, - "grid-auto-flow": { + "contain-intrinsic-height": { "links": { - "tr": "#grid-auto-flow-property", - "dev": "#grid-auto-flow-property" + "tr": "#intrinsic-size-override", + "dev": "#intrinsic-size-override" }, - "tests": ["row", "column", "row dense", "column dense"] + "tests": ["none", "10px"] }, - "grid": { + "contain-intrinsic-block-size": { "links": { - "tr": "#grid-shorthand", - "dev": "#grid-shorthand" + "tr": "#intrinsic-size-override", + "dev": "#intrinsic-size-override" }, - "tests": [ - "auto-flow 1fr / 100px", - "none / auto-flow 1fr", - "auto-flow / auto 1fr", - "repeat(auto-fill, 5em) / auto-flow 1fr", - " auto-flow 1fr / repeat(auto-fill, 5em)", - "'H H ' 'A B ' 'F F ' 30px / auto 1fr" - ] + "tests": ["none", "10px"] }, - "grid-row-start": { + "contain-intrinsic-inline-size": { "links": { - "tr": "#line-placement", - "dev": "#line-placement" + "tr": "#intrinsic-size-override", + "dev": "#intrinsic-size-override" }, - "tests": ["auto", "4", "C", "C 2", "span C", "span 1"] + "tests": ["none", "10px"] }, - "grid-column-start": { + "width": { "links": { - "tr": "#line-placement", - "dev": "#line-placement" + "tr": "#sizing-values", + "dev": "#sizing-values" }, - "tests": ["auto", "4", "C", "C 2", "span C", "span 1"] + "tests": ["stretch", "fit-content", "contain"] }, - "grid-row-end": { + "min-width": { "links": { - "tr": "#line-placement", - "dev": "#line-placement" + "tr": "#sizing-values", + "dev": "#sizing-values" }, - "tests": ["auto", "4", "C", "C 2", "span C", "span 1"] + "tests": ["stretch", "fit-content", "contain"] }, - "grid-column-end": { + "max-width": { "links": { - "tr": "#line-placement", - "dev": "#line-placement" + "tr": "#sizing-values", + "dev": "#sizing-values" }, - "tests": ["auto", "4", "C", "C 2", "span C", "span 1"] + "tests": ["stretch", "fit-content", "contain"] }, - "grid-column": { + "height": { "links": { - "tr": "#placement-shorthands", - "dev": "#placement-shorthands" + "tr": "#sizing-values", + "dev": "#sizing-values" }, - "tests": ["auto", "1", "-1", "1 / 1", "1 / -1", "auto / auto", "2 / span 2"] + "tests": ["stretch", "fit-content", "contain"] }, - "grid-row": { + "min-height": { "links": { - "tr": "#placement-shorthands", - "dev": "#placement-shorthands" + "tr": "#sizing-values", + "dev": "#sizing-values" }, - "tests": ["auto", "1", "-1", "1 / 1", "1 / -1", "auto / auto", "2 / span 2"] + "tests": ["stretch", "fit-content", "contain"] }, - "grid-area": { + "max-height": { "links": { - "tr": "#placement-shorthands", - "dev": "#placement-shorthands" + "tr": "#sizing-values", + "dev": "#sizing-values" }, - "tests": ["1 / 1", "1 / span 1", "span / 10 / -1"] + "tests": ["stretch", "fit-content", "contain"] }, - "grid-column-gap": { + "inline-size": { "links": { - "tr": "#gutters", - "dev": "#gutters" + "tr": "#sizing-values", + "dev": "#sizing-values" }, - "tests": ["0", "1em"] + "tests": ["stretch", "fit-content", "contain"] }, - "grid-row-gap": { + "min-inline-size": { "links": { - "tr": "#gutters", - "dev": "#gutters" + "tr": "#sizing-values", + "dev": "#sizing-values" }, - "tests": ["0", "1em"] + "tests": ["stretch", "fit-content", "contain"] }, - "grid-gap": { - "links": { - "tr": "#gutters", - "dev": "#gutters" - }, - "tests": ["0 0", "0 1em", "1em", "1em 1em"] - } - } - }, - - "css-grid-2": { - "title": "CSS Grid Layout Module Level 2", - "links": { - "tr": "css-grid-2", - "dev": "css-grid-2", - "mdn": "Glossary/Grid" - }, - "properties": { - "grid-template-columns": { + "max-inline-size": { "links": { - "tr": "#subgrid-per-axis", - "dev": "#subgrid-per-axis" + "tr": "#sizing-values", + "dev": "#sizing-values" }, - "tests": [ - "subgrid", - "subgrid [sub-a]", - "subgrid [sub-a] [sub-b]", - "subgrid repeat(1, [sub-a])", - "subgrid repeat(2, [sub-a] [sub-b]) [sub-c]", - "subgrid repeat(auto-fill, [sub-a] [sub-b])", - "subgrid [sub-a] repeat(auto-fill, [sub-b] [sub-c] [sub-d]) [sub-e] repeat(1, [sub-g])" - ] + "tests": ["stretch", "fit-content", "contain"] }, - "grid-template-rows": { + "block-size": { "links": { - "tr": "#subgrid-per-axis", - "dev": "#subgrid-per-axis" + "tr": "#sizing-values", + "dev": "#sizing-values" }, - "tests": [ - "subgrid", - "subgrid [sub-a]", - "subgrid [sub-a] [sub-b]", - "subgrid repeat(1, [sub-a])", - "subgrid repeat(2, [sub-a] [sub-b]) [sub-c]", - "subgrid repeat(auto-fill, [sub-a] [sub-b])", - "subgrid [sub-a] repeat(auto-fill, [sub-b] [sub-c] [sub-d]) [sub-e] repeat(1, [sub-g])" - ] - } - } - }, - - "css-grid-3": { - "title": "CSS Grid Layout Module Level 3", - "links": { - "dev": "css-grid-3", - }, - "properties": { - "grid-template-columns": { - "links": { - "dev": "#masonry-layout" - }, - "tests": ["masonry"] - }, - "grid-template-rows": { - "links": { - "dev": "#masonry-layout" - }, - "tests": ["masonry "] - }, - "masonry-auto-flow": { - "links": { - "dev": "#masonry-auto-flow" - }, - "tests": [ - "pack", "next", "definite-first", "ordered", - "pack definite-first", "pack ordered", "next definite-first", "next ordered", - "ordered pack", - ] - }, - "align-tracks": { - "links": { - "dev": "#tracks-alignment" - }, - "tests": [ - "normal", - "baseline", "first baseline", "last baseline", - "space-between", "space-around", "space-evenly", "stretch", - "center", "start", "end", "flex-start", "flex-end", - "unsafe center", "safe start" - ] - }, - "justify-tracks": { - "links": { - "dev": "#tracks-alignment" - }, - "tests": [ - "normal", - "space-between", "space-around", "space-evenly", "stretch", - "center", "start", "end", "flex-start", "flex-end", "left", "right", - "unsafe center", "safe start" - ] - } - } - }, - - "css-align-3": { - "title": "CSS Box Alignment Module Level 3", - "links": { - "tr": "css-align-3", - "dev": "css-align-3" - }, - "properties": { - "align-self": { - "links": { - "tr": "#align-self-property", - "dev": "#align-self-property" - }, - "tests": ["auto", "normal", "stretch", "baseline", "first baseline", "last baseline", "center", "start", "end", "self-start", "self-end", "unsafe start ", "safe start"] - }, - "align-items": { - "links": { - "tr": "#align-items-property", - "dev": "#align-items-property" - }, - "tests": ["normal", "stretch", "baseline", "first baseline", "last baseline", "center", "start", "end", "self-start", "self-end", "unsafe start ", "safe start"] - }, - "align-content": { - "links": { - "tr": "#align-justify-content", - "dev": "#align-justify-content" - }, - "tests": ["normal", "baseline", "first baseline", "last baseline", "space-between", "space-around", "space-evenly", "stretch", "center", "start", "end", "flex-start", "flex-end", "unsafe start ", "safe start"] - }, - "justify-self": { - "links": { - "tr": "#justify-self-property", - "dev": "#justify-self-property" - }, - "tests": ["auto", "normal", "stretch", "baseline", "first baseline", "last baseline", "center", "start", "end", "self-start", "self-end", "unsafe start ", "safe start", "left", "right", "safe right"] - }, - "justify-items": { - "links": { - "tr": "#justify-items-property", - "dev": "#justify-items-property" - }, - "tests": ["normal", "stretch", "baseline", "first baseline", "last baseline", "center", "start", "end", "self-start", "self-end", "unsafe start ", "safe start", "left", "right", "safe right", "legacy", "legacy left", "legacy right", "legacy center"] - }, - "justify-content": { - "links": { - "tr": "#align-justify-content", - "dev": "#align-justify-content" - }, - "tests": ["normal", "space-between", "space-around", "space-evenly", "stretch", "center", "start", "end", "flex-start", "flex-end", "unsafe start ", "safe start", "left", "right", "safe right"] - }, - "place-content": { - "links": { - "tr": "#place-content", - "dev": "#place-content" - }, - "tests": ["normal", "baseline", "first baseline", "last baseline", "space-between", "space-around", "space-evenly", "stretch", "center", "start", "end", "flex-start", "flex-end", "unsafe start ", "safe start", "normal normal", "baseline normal", "first baseline normal", "space-between normal", "center normal", "unsafe start normal", "normal stretch", "baseline stretch", "first baseline stretch", "space-between stretch", "center stretch", "unsafe start stretch", "normal safe right", "baseline safe right", "first baseline safe right", "space-between safe right", "center safe right", "unsafe start safe right"] - }, - "place-items": { - "links": { - "tr": "#place-items-property", - "dev": "#place-items-property" - }, - "tests": ["normal", "stretch", "baseline", "first baseline", "last baseline", "center", "start", "end", "self-start", "self-end", "unsafe start ", "safe start", "normal normal", "stretch normal", "baseline normal", "first baseline normal", "self-start normal", "unsafe start normal", "normal stretch", "stretch stretch", "baseline stretch", "first baseline stretch", "self-start stretch", "unsafe start stretch", "normal last baseline", "stretch last baseline", "baseline last baseline", "first baseline last baseline", "self-start last baseline", "unsafe start last baseline", "normal legacy left", "stretch legacy left", "baseline legacy left", "first baseline legacy left", "self-start legacy left", "unsafe start legacy left"] - }, - "gap": { - "links": { - "tr": "#gap-shorthand", - "dev": "#gap-shorthand" - }, - "tests": ["0 0", "0 1em", "1em", "1em 1em"] - }, - "column-gap": { - "links": { - "tr": "#column-row-gap", - "dev": "#column-row-gap" - }, - "tests": ["0", "1em", "normal"] - }, - "row-gap": { - "links": { - "tr": "#column-row-gap", - "dev": "#column-row-gap" - }, - "tests": ["0", "1em"] - } - } - }, - - "css-box-4": { - "title": "CSS Box Model Module Level 4", - "links": { - "tr": "css-box-4", - "dev": "css-box-4" - }, - "properties": { - "margin-trim": { - "links": { - "tr": "#margin-trim", - "dev": "#margin-trim" - }, - "tests": ["none", "in-flow", "all"] - } - } - }, - - "css-cascade-3": { - "title": "CSS Cascading and Inheritance Level 3", - "links": { - "tr": "css-cascade-3", - "dev": "css-cascade-3" - }, - "values": { - "properties": [ - "color", - "font-weight", - "background-image", - "width" - ], - "unset": { - "links": { - "tr": "#inherit-initial", - "dev": "#inherit-initial" - }, - "tests": "unset" - } - }, - "properties": { - "all": { - "links": { - "tr": "#all-shorthand", - "dev": "#all-shorthand" - }, - "tests": ["initial", "inherit", "unset"] - } - } - }, - - "css-cascade-4": { - "title": "CSS Cascading and Inheritance Level 4", - "links": { - "tr": "css-cascade-4", - "dev": "css-cascade-4" - }, - "values": { - "properties": [ - "color", - "font-weight", - "background-image", - "all" - ], - "revert": { - "links": { - "tr": "#default", - "dev": "#default" - }, - "tests": "revert" - } - }, - "properties": { - "all": { - "links": { - "tr": "#all-shorthand", - "dev": "#all-shorthand" - }, - "tests": "revert" - } - } - }, - - "css-cascade-5": { - "title": "CSS Cascading and Inheritance Level 5", - "links": { - "tr": "css-cascade-5", - "dev": "css-cascade-5" - }, - "values": { - "properties": [ - "color", - "font-weight", - "background-image", - "all" - ], - "revert-layer": { - "links": { - "tr": "#revert-layer", - "dev": "#revert-layer" - }, - "tests": "revert-layer" - } - }, - "properties": { - "all": { - "links": { - "tr": "#revert-layer", - "dev": "#revert-layer" - }, - "tests": "revert-layer" - } - }, - "@rules": { - "@layer": { - "links": { - "tr": "#at-layer", - "dev": "#at-layer" - }, - "tests": [ - "@layer framework {\n h1, h2 { color: maroon; background: white;\n}", - "@layer framework {\n h1, h2 { color: maroon; background: white;}\n \n @media (prefers-color-scheme: dark) {\n h1, h2 { color: red; background: black; }\n }\n}", - "@layer framework;", - "@layer default, framework;" - ] - } - } - }, - - "css-conditional-3": { - "title": "CSS Conditional Rules Module Level 3", - "links": { - "tr": "css3-conditional", - "dev": "css-conditional-3" - }, - "@rules": { - "@supports": { - "links": { - "tr": "#at-supports", - "dev": "#at-supports" - }, - "tests": [ - "@supports (color: green) {}", - "@supports not (foo: bar) {}", - "@supports (color: green) or (color: red) {}", - "@supports (color: green) and (color: red) {}", - "@supports (color: green) and (not (foo: bar)) {}", - "@supports (color: green) or (not (foo: bar)) {}" - ] - } - } - }, - - "css-conditional-4": { - "title": "CSS Conditional Rules Module Level 4", - "links": { - "tr": "css-conditional-4", - "dev": "css-conditional-4" - }, - "@rules": { - "@supports": { - "links": { - "tr": "#at-supports-ext", - "dev": "#at-supports-ext" - }, - "tests": [ - "@supports selector(::before) {}", - "@supports not selector(::-webkit-unknown-pseudo) {}", - "@supports selector(div, div) {}" - ] - } - } - }, - - "css-conditional-5": { - "title": "CSS Conditional Rules Module Level 5", - "links": { - "tr": "css-conditional-5", - "dev": "css-conditional-5" - }, - "@rules": { - "@supports": { - "links": { - "tr": "#at-supports-ext", - "dev": "#at-supports-ext" - }, - "tests": [ - "@supports font-tech(features-opentype) {}", - "@supports font-format(woff2) {}" - ] - }, - "@when": { - "links": { - "tr": "#when-rule", - "dev": "#when-rule" - }, - "tests": [ - "@when media(min-width: 200px) {}", - "@when media(width >= 200px) {}", - "@when media(pointer) {}", - "@when supports(display: flex) {}" - ] - }, - "@else": { - "links": { - "tr": "#else-rule", - "dev": "#else-rule" - }, - "tests": [ - "@when media(min-width: 200px) {} @else {}", - "@when media(min-width: 200px) {} @else media(min-width: 100px) {}", - "@when media(min-width: 200px) {} @else media(min-width >= 100px) {}", - "@when media(min-width: 200px) {} @else supports(display: flex) {}", - "@when media(min-width: 200px) {} @else media(min-width: 100px) {} @else {}" - ] - } - } - }, - - "css-masking-1": { - "title": "CSS Masking Module Level 1", - "links": { - "tr": "css-masking-1", - "dev": "css-masking-1", - "devtype": "fxtf" - }, - "properties": { - "clip-path": { - "links": { - "tr": "#the-clip-path", - "dev": "#the-clip-path" - }, - "tests": [ - "url('#clip')", - "inset(50%)", - "circle()", - "ellipse()", - "polygon(0 10px, 30px 0)", - "path('M 20 20 H 80 V 30')", - "circle() border-box", - "border-box", - "padding-box", - "content-box", - "margin-box", - "fill-box", - "stroke-box", - "view-box", - "none" - ] + "tests": ["stretch", "fit-content", "contain"] }, - "clip-rule": { + "min-block-size": { "links": { - "tr": "#the-clip-rule", - "dev": "#the-clip-rule" + "tr": "#sizing-values", + "dev": "#sizing-values" }, - "tests": ["nonzero", "evenodd"] + "tests": ["stretch", "fit-content", "contain"] }, - "mask-image": { + "max-block-size": { "links": { - "tr": "#the-mask-image", - "dev": "#the-mask-image" + "tr": "#sizing-values", + "dev": "#sizing-values" }, - "tests": ["none", "linear-gradient(black 0%, transparent 100%)", "url(image.png)"] - }, - "mask-mode": { + "tests": ["stretch", "fit-content", "contain"] + } + } + }, + + "css-text-3": { + "title": "CSS Text Module Level 3", + "links": { + "tr": "css-text-3", + "dev": "css-text-3" + }, + "properties": { + "text-transform": { "links": { - "tr": "#the-mask-mode", - "dev": "#the-mask-mode" + "tr": "#text-transform", + "dev": "#text-transform-property" }, - "tests": ["alpha", "luminance", "match-source"] + "tests": ["full-width", "full-size-kana", "capitalize full-width", "capitalize full-width full-size-kana"] }, - "mask-repeat": { + "tab-size": { "links": { - "tr": "#the-mask-repeat", - "dev": "#the-mask-repeat" + "tr": "#tab-size-property", + "dev": "#tab-size-property" }, - "tests": ["repeat-x", "repeat-y"].concat(["repeat", "space", "round", "no-repeat"].times(1, 2)) + "tests": ["4", "1em"] }, - "mask-position": { + "line-break": { "links": { - "tr": "#the-mask-position", - "dev": "#the-mask-position" + "tr": "#line-break-property", + "dev": "#line-break-property" }, - "tests": ["center", "left 50%", "bottom 10px right 20px", "bottom 10px right", "top right 10px"] + "tests": ["auto", "loose", "normal", "strict", "anywhere"] }, - "mask-clip": { + "word-break": { "links": { - "tr": "#the-mask-clip", - "dev": "#the-mask-clip" + "tr": "#word-break-property", + "dev": "#word-break-property" }, - "tests": ["border-box", "padding-box", "content-box", "margin-box", "fill-box", "stroke-box", "view-box", "no-clip"] + "tests": ["normal", "keep-all", "break-all"] }, - "mask-origin": { + "white-space": { "links": { - "tr": "#the-mask-origin", - "dev": "#the-mask-origin" + "tr": "#white-space-property", + "dev": "#white-space-property" }, - "tests": ["border-box", "padding-box", "content-box", "margin-box", "fill-box", "stroke-box", "view-box"] + "tests": ["break-spaces"] }, - "mask-size": { + "hyphens": { "links": { - "tr": "#the-mask-size", - "dev": "#the-mask-size" + "tr": "#hyphenation", + "dev": "#hyphenation" }, - "tests": ["auto", "10px", "cover", "contain", "10px", "50%", "10px auto", "auto 10%", "50em 50%"] + "tests": ["auto", "manual", "none"] }, - "mask-composite": { + "overflow-wrap": { "links": { - "tr": "#the-mask-composite", - "dev": "#the-mask-composite" + "tr": "#overflow-wrap-property", + "dev": "#overflow-wrap-property" }, - "tests": ["add", "subtract", "intersect", "exclude"] + "tests": ["normal", "break-word", "anywhere"] }, - "mask": { + "word-wrap": { "links": { - "tr": "#the-mask", - "dev": "#the-mask" + "tr": "#overflow-wrap-property", + "dev": "#overflow-wrap-property" }, - "tests": ["top", "space", "url(image.png)", "url(image.png) luminance", "url(image.png) luminance top space"] + "tests": ["normal", "break-word", "anywhere"] }, - "mask-border-source": { + "text-align": { "links": { - "tr": "#the-mask-border-source", - "dev": "#the-mask-border-source" + "tr": "#text-align-property", + "dev": "#text-align-property" }, - "tests": ["none", "url(image.png)"] + "tests": ["start", "end", "left", "right", "center", "justify", "match-parent", "justify-all"] }, - "mask-border-slice": { + "text-align-all": { "links": { - "tr": "#the-mask-border-slice", - "dev": "#the-mask-border-slice" + "tr": "#text-align-all-property", + "dev": "#text-align-all-property" }, - "tests": ["0 fill", "50% fill", "1.1 fill", "0 1 fill", "0 1 2 fill", "0 1 2 3 fill"] + "tests": ["start", "end", "left", "right", "center", "justify", "match-parent"] }, - "mask-border-width": { + "text-align-last": { "links": { - "tr": "#the-mask-border-width", - "dev": "#the-mask-border-width" + "tr": "#text-align-last-property", + "dev": "#text-align-last-property" }, - "tests": ["auto", "10px", "50%", "1", "1.0", "auto 1", "auto 1 50%", "auto 1 50% 1.1"] + "tests": ["auto", "start", "end", "left", "right", "center", "justify", "match-parent"] }, - "mask-border-outset": { + "text-justify": { "links": { - "tr": "#the-mask-border-outset", - "dev": "#the-mask-border-outset" + "tr": "#text-justify-property", + "dev": "#text-justify-property" }, - "tests": ["0", "1.1", "0 1", "0 1 2", "0 1 2 3"] + "tests": ["auto", "none", "inter-word", "inter-character"] }, - "mask-border-repeat": { + "word-spacing": { "links": { - "tr": "#the-mask-border-repeat", - "dev": "#the-mask-border-repeat" + "tr": "#word-spacing-property", + "dev": "#word-spacing-property" }, - "tests": ["stretch", "repeat", "round", "space"].times(1, 2) + "tests": ["50%"] }, - "mask-border": { + "text-indent": { "links": { - "tr": "#the-mask-border", - "dev": "#the-mask-border" + "tr": "#text-indent-property", + "dev": "#text-indent-property" }, - "tests": [ - "url(image.png)", - "url(image.png) 10px", - "url(image.png) space", - "url(image.png) 1 fill", - "url(image.png) 1 fill 10px", - "url(image.png) 1 fill 10px", - "url(image.png) 1 fill 10px 2" - ] + "tests": ["1em hanging", "1em each-line", "1em hanging each-line"] }, - "mask-type": { + "hanging-punctuation": { "links": { - "tr": "#the-mask-type", - "dev": "#the-mask-type" + "tr": "#hanging-punctuation-property", + "dev": "#hanging-punctuation-property" }, - "tests": ["luminance", "alpha"] + "tests": [ + "none", "first", "last", "force-end", "allow-end", "first last", "first force-end", + "first force-end last", "first allow-end last" + ] } } }, - "compositing-1": { - "title": "Compositing and Blending Level 1", + "css-text-4": { + "title": "CSS Text Module Level 4", "links": { - "tr": "compositing-1", - "dev": "compositing-1", - "devtype": "fxtf" + "tr": "css-text-4", + "dev": "css-text-4" }, "properties": { - "mix-blend-mode": { + "text-space-collapse": { "links": { - "tr": "#mix-blend-mode", - "dev": "#mix-blend-mode" + "tr": "#white-space-collapsing", + "dev": "#white-space-collapsing" }, - "tests": ["normal", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "hue", "saturation", "color", "luminosity"] + "tests": ["collapse", "discard", "preserve", "preserve-breaks", "preserve-spaces"] }, - "isolation": { + "text-space-trim": { "links": { - "tr": "#isolation", - "dev": "#isolation" + "tr": "#white-space-trim", + "dev": "#white-space-trim" }, - "tests": ["auto", "isolate"] + "tests": [ + "none", "trim-inner", " discard-before", "discard-after", + "trim-inner discard-before", "trim-inner discard-before discard-after" + ] }, - "background-blend-mode": { + "text-wrap": { "links": { - "tr": "#background-blend-mode", - "dev": "#background-blend-mode" + "tr": "#text-wrap", + "dev": "#text-wrap" }, - "tests": ["normal", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "hue", "saturation", "color", "luminosity", "normal, multiply"] - } - } - }, - - "css-display-3": { - "title": "CSS Display Module Level 3", - "links": { - "tr": "css-display-3", - "dev": "css-display-3" - }, - "properties": { - "display": { + "tests": ["wrap", "nowrap", "balance "] + }, + "wrap-before": { "links": { - "tr": "#the-display-properties", - "dev": "#the-display-properties" + "tr": "#wrap-before", + "dev": "#wrap-before" }, - "tests": [ - "run-in", "flow", "flow-root", - "block flow", "inline flow", "run-in flow", - "block flow-root", "inline flow-root", "run-in flow-root", - "block table", "inline table", "run-in table", - "block flex", "inline flex", "run-in flex", - "block grid", "inline grid", "run-in grid", - "block ruby", "inline ruby", "run-in ruby", - "inline list-item", "list-item inline flow", "list-item block flow" - ] - } - } - }, - - "css-shapes-1": { - "title": "CSS Shapes Module Level 1", - "links": { - "tr": "css-shapes-1", - "dev": "css-shapes-1" - }, - "properties": { - "shape-outside": { + "tests": ["auto", "avoid", "avoid-line", "avoid-flex", "line", "flex"] + }, + "wrap-after": { + "links": { + "tr": "#wrap-before", + "dev": "#wrap-before" + }, + "tests": ["auto", "avoid", "avoid-line", "avoid-flex", "line", "flex"] + }, + "wrap-inside": { + "links": { + "tr": "#wrap-inside", + "dev": "#wrap-inside" + }, + "tests": ["auto", "avoid"] + }, + "hyphenate-character": { + "links": { + "tr": "#hyphenate-character", + "dev": "#hyphenate-character" + }, + "tests": ["auto", "'\\2010'"] + }, + "hyphenate-limit-zone": { "links": { - "tr": "#shape-outside-property", - "dev": "#shape-outside-property" + "tr": "#hyphenate-size-limits", + "dev": "#hyphenate-size-limits" }, - "tests": [ - "none", "inset(10% round 10% 40% 10% 40%)", "ellipse(at top 50% left 20%)", "circle(at right 5% top)", - "polygon(100% 0, 100% 100%, 0 100%)", "path('M 20 20 H 80 V 30')", - "margin-box", "border-box", "padding-box", "content-box", - "inset(10% round 10% 40% 10% 40%) margin-box", "ellipse(at top 50% left 20%) margin-box", - "circle(at right 5% top) margin-box", "polygon(100% 0, 100% 100%, 0 100%) margin-box", "path('M 20 20 H 80 V 30') margin-box", - "attr(src url)", "url(image.png)" - ] + "tests": ["1%", "1em"] }, - "shape-image-threshold": { + "hyphenate-limit-chars": { "links": { - "tr": "#shape-image-threshold-property", - "dev": "#shape-image-threshold-property" + "tr": "#hyphenate-char-limits", + "dev": "#hyphenate-char-limits" }, - "tests": ["0", "1", "0.0", "0.1"] + "tests": ["auto", "5", "auto 3", "5 4 3"] }, - "shape-margin": { + "hyphenate-limit-lines": { "links": { - "tr": "#shape-margin-property", - "dev": "#shape-margin-property" + "tr": "#hyphenate-line-limits", + "dev": "#hyphenate-line-limits" }, - "tests": ["0", "10px", "50%"] + "tests": ["no-limit", "2"] + }, + "hyphenate-limit-last": { + "links": { + "tr": "#hyphenate-line-limits", + "dev": "#hyphenate-line-limits" + }, + "tests": ["none", "always", "column", "page", "spread"] } } }, - "css-shapes-2": { - "title": "CSS Shapes Module Level 2", + "css-text-decor-3": { + "title": "CSS Text Decoration Module Level 3", "links": { - "dev": "css-shapes-2" + "tr": "css-text-decor-3", + "dev": "css-text-decor-3" }, "properties": { - "shape-inside": { + "text-decoration": { "links": { - "dev": "#shape-inside-property" + "tr": "#text-decoration-property", + "dev": "#text-decoration-property" }, - "tests": [ - "auto", "outside-shape", "shape-box", "display", "inset(10% round 10% 40% 10% 40%)", - "ellipse(at top 50% left 20%)", "circle(at right 5% top)", "polygon(100% 0, 100% 100%, 0 100%)", "path('M 20 20 H 80 V 30')", - "url(image.png)" - ] + "tests": "underline dotted green" }, - "shape-padding": { + "text-decoration-line": { "links": { - "dev": "#shape-padding-property" + "tr": "#text-decoration-line-property", + "dev": "#text-decoration-line-property" }, - "tests": ["0", "10px", "50%"] - } - } - }, - - "css-exclusions-1": { - "title": "CSS Exclusions Module Level 1", - "links": { - "tr": "css3-exclusions", - "dev": "css-exclusions-1" - }, - "properties": { - "wrap-flow": { + "tests": ["none", "underline", "overline", "line-through", "underline overline"] + }, + "text-decoration-color": { "links": { - "tr": "#wrap-flow-property", - "dev": "#wrap-flow-property" + "tr": "#text-decoration-color-property", + "dev": "#text-decoration-color-property" }, - "tests": ["auto", "both", "start", "end", "minimum", "maximum", "clear"] + "tests": "white" }, - "wrap-through": { + "text-decoration-style": { "links": { - "tr": "#wrap-through-property", - "dev": "#wrap-through-property" + "tr": "#text-decoration-style-property", + "dev": "#text-decoration-style-property" }, - "tests": ["wrap", "none"] - } - } - }, - - "filter-effects-1": { - "title": "Filter Effects Module Level 1", - "links": { - "tr": "filter-effects-1", - "dev": "filter-effects-1", - "devtype": "fxtf" - }, - "properties": { - "filter": { + "tests": ["solid", "double", "dotted", "dashed", "wavy"] + }, + "text-underline-position": { "links": { - "tr": "#FilterProperty", - "dev": "#FilterProperty" + "tr": "#text-underline-position-property", + "dev": "#text-underline-position-property" }, - "tests": [ - "none", - "url(#id)", - "url(image.svg#id)", - "blur(5px)", - "brightness(0.5)", - "contrast(150%)", - "drop-shadow(15px 15px 15px black)", - "grayscale(50%)", - "hue-rotate(50deg)", - "invert(50%)", - "opacity(50%)", - "sepia(50%)", - "saturate(150%)", - "grayscale(100%) sepia(100%)" - ] + "tests": ["auto", "under", "left", "right", "under left", "under right"] }, - "flood-color": { + "text-emphasis-style": { "links": { - "tr": "#FloodColorProperty", - "dev": "#FloodColorProperty" + "tr": "#text-emphasis-style-property", + "dev": "#text-emphasis-style-property" }, - "tests": ["black", "#FFF"] + "tests": ["none", "filled", "open", "dot", "circle", "double-circle", "triangle", "sesame", "open dot", "'foo'"] }, - "flood-opacity": { + "text-emphasis-color": { "links": { - "tr": "#FloodOpacityProperty", - "dev": "#FloodOpacityProperty" + "tr": "#text-emphasis-color-property", + "dev": "#text-emphasis-color-property" }, - "tests": ["1", "0", "0.2", "45%"] + "tests": "green" }, - "color-interpolation-filters": { + "text-emphasis": { "links": { - "tr": "#ColorInterpolationFiltersProperty", - "dev": "#ColorInterpolationFiltersProperty" + "tr": "#text-emphasis-property", + "dev": "#text-emphasis-property" }, - "tests": ["auto", "sRGB", "linearRGB"] + "tests": "open dot green" }, - "lighting-color": { + "text-emphasis-position": { "links": { - "tr": "#LightingColorProperty", - "dev": "#LightingColorProperty" + "tr": "#text-emphasis-position-property", + "dev": "#text-emphasis-position-property" }, - "tests": ["white", "#000"] + "tests": ["over left", "over right", "under left", "under right"] + }, + "text-shadow": { + "links": { + "tr": "#text-shadow-property", + "dev": "#text-shadow-property" + }, + "tests": ["none", "1px 1px", "0 0 black", "1px 2px 3px black"] } } }, - "filters-2": { - "title": "Filter Effects Module Level 2", + "css-text-decor-4": { + "title": "CSS Text Decoration Module Level 4", "links": { - "dev": "filter-effects-2", - "devtype": "fxtf" + "tr": "css-text-decor-4", + "dev": "css-text-decor-4" }, "properties": { - "backdrop-filter": { + "text-decoration": { "links": { - "dev": "#BackdropFilterProperty" + "tr": "#text-decoration-property", + "dev": "#text-decoration-property" + }, + "tests": ["underline solid blue 1px"] + }, + "text-decoration-skip": { + "links": { + "tr": "#text-decoration-skip-property", + "dev": "#text-decoration-skip-property" }, "tests": [ - "none", - "url(#id)", - "url(image.svg#id)", - "blur(5px)", - "brightness(0.5)", - "contrast(150%)", - "drop-shadow(15px 15px 15px black)", - "grayscale(50%)", - "hue-rotate(50deg)", - "invert(50%)", - "opacity(50%)", - "sepia(50%)", - "saturate(150%)", - "grayscale(100%) sepia(100%)" + "none", "objects", "objects spaces", "objects leading-spaces", "objects trailing-spaces", "objects leading-spaces trailing-spaces", + "objects leading-spaces trailing-spaces edges", "objects leading-spaces trailing-spaces edges box-decoration", "objects edges", + "objects box-decoration", "spaces", "spaces edges", "spaces edges box-decoration", "spaces box-decoration", "leading-spaces", + "leading-spaces trailing-spaces edges", "leading-spaces trailing-spaces edges box-decoration", "edges", "edges box-decoration", + "box-decoration" ] - } - } - }, - - "pointerevents1": { - "title": "Pointer Events Level 1", - "links": { - "tr": "pointerevents1" - }, - "properties": { - "touch-action": { + }, + "text-decoration-skip-ink": { "links": { - "tr": "#the-touch-action-css-property" + "tr": "#text-decoration-skip-ink-property", + "dev": "#text-decoration-skip-ink-property" }, - "tests": ["auto", "none", "pan-x", "pan-y", "pan-x pan-y", "manipulation"] - } - } - }, - - "pointerevents3": { - "title": "Pointer Events Level 3", - "links": { - "tr": "pointerevents3", - "dev": "pointerevents", - "devtype": "github" - }, - "properties": { - "touch-action": { + "tests": ["none", "auto"] + }, + "text-underline-offset": { "links": { - "dev": "#the-touch-action-css-property" - }, - "tests": ["pan-left", "pan-right", "pan-up", "pan-down", "pan-left pan-up"] - } - } - }, - - "html": { - "title": "HTML Living Standard", - "links": { - "dev": "html", - "devtype": "whatwg" - }, - "selectors": { - ":autofill": { + "tr": "#underline-offset", + "dev": "#underline-offset" + }, + "tests": ["auto", "3px", "10%"] + }, + "text-decoration-thickness": { "links": { - "dev": "#selector-autofill" + "tr": "#underline-offset", + "dev": "#text-decoration-width-property" }, - "tests": ":autofill" + "tests": ["auto", "from-font", "3px", "10%"] } } }, - "compat": { - "title": "Compatibility", + "css-transforms-1": { + "title": "CSS Transforms Module Level 1", "links": { - "dev": "compat", - "devtype": "whatwg" + "tr": "css-transforms-1", + "dev": "css-transforms-1" }, "properties": { - "touch-action": { + "transform": { "links": { - "dev": "#touch-action" + "tr": "#transform-property", + "dev": "#transform-property" }, - "tests": ["pinch-zoom", "pan-x pinch-zoom", "pan-y pinch-zoom", "pan-x pan-y pinch-zoom"] - } - } - }, - - "fullscreen": { - "title": "Fullscreen API", - "links": { - "dev": "fullscreen", - "devtype": "whatwg" - }, - "selectors": { - "::backdrop": { + "tests": [ + "none", + "translate(5px)", "translate(5px, 10px)", "translateY(5px)", "translateX(5px)", "translateY(5%)", "translateX(5%)", + "scale(2)", "scale(2, -1)", "scaleX(2)", "scaleY(2.5)", + "rotate(45deg)", + "skew(45deg)", "skew(45deg, 15deg)", "skewX(45deg)", "skewY(45deg)", + "matrix(1,-.2,0,1,0,0)", "matrix(1,-.2,0,1,10,10)", + "translate(50px, -24px) rotate(180deg) scale(.5) skew(0, 22.5deg)", + "translateZ(5px)", + "scaleZ(1.5)", + "rotateX(-45deg)", "rotateY(-45deg)", "rotateZ(-45deg)", + "perspective(600px)" + ] + }, + "transform-origin": { "links": { - "dev": "#::backdrop-pseudo-element" + "tr": "#transform-origin-property", + "dev": "#transform-origin-property" }, - "tests": "::backdrop" + "tests": ["10px", "top", "top left", "50% 100%", "left 0%", "left 50% 0"] }, - ":fullscreen": { + "transform-box": { "links": { - "dev": "#:fullscreen-pseudo-class" + "tr": "#transform-box", + "dev": "#transform-box" }, - "tests": ":fullscreen" + "tests": ["border-box", "fill-box", "view-box"] } } }, - "css-break-3": { - "title": "CSS Fragmentation Module Level 3", + "css-transforms-2": { + "title": "CSS Transforms Module Level 2", "links": { - "tr": "css-break-3", - "dev": "css-break-3" + "tr": "css-transforms-2", + "dev": "css-transforms-2" }, "properties": { - "break-before": { + "translate": { "links": { - "tr": "#break-between", - "dev": "#break-between" + "tr": "#individual-transforms", + "dev": "#individual-transforms" }, - "tests": ["auto", "avoid", "avoid-page", "page", "left", "right", "recto", "verso", "avoid-column", "column", "avoid-region", "region "] + "tests": ["none", "50%", "50% 50%", "50% 50% 10px"] }, - "break-after": { + "scale": { "links": { - "tr": "#break-between", - "dev": "#break-between" + "tr": "#individual-transforms", + "dev": "#individual-transforms" }, - "tests": ["auto", "avoid", "avoid-page", "page", "left", "right", "recto", "verso", "avoid-column", "column", "avoid-region", "region "] + "tests": ["none"].concat(["2"].times(1, 3)) }, - "break-inside": { + "rotate": { "links": { - "tr": "#break-within", - "dev": "#break-within" + "tr": "#individual-transforms", + "dev": "#individual-transforms" }, - "tests": ["auto", "avoid", "avoid-page", "avoid-column", "avoid-region "] + "tests": ["none"].concat(["", "x", "y", "z", "-1 0 2"].and(["45deg"])).concat(["45deg"].and(["x", "y", "z", "-1 0 2"])) }, - "box-decoration-break": { + "transform": { "links": { - "tr": "#break-decoration", - "dev": "#break-decoration" + "tr": "#transform-property", + "dev": "#transform-property" }, - "tests": ["slice", "clone"] + "tests": [ + "perspective(none)", + "translate3d(0, 0, 5px)", + "scale3d(1, 0, -1)", + "rotate3d(1, 1, 1, 45deg)", + "matrix3d(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)", "matrix3d(0,0,0,0,0,0,0,0,0,0,1,0,10,10,0,1)", + "translate3d(50px, -24px, 5px) rotate3d(1, 2, 3, 180deg) scale3d(-1, 0, .5)", + ] }, - "orphans": { + "transform-style": { "links": { - "tr": "#widows-orphans", - "dev": "#widows-orphans" + "tr": "#transform-style-property", + "dev": "#transform-style-property" }, - "tests": ["1", "2"] + "tests": ["flat", "preserve-3d"] }, - "widows": { + "perspective": { "links": { - "tr": "#widows-orphans", - "dev": "#widows-orphans" + "tr": "#perspective-property", + "dev": "#perspective-property" }, - "tests": ["1", "2"] + "tests": ["none", "600px"] + }, + "perspective-origin": { + "links": { + "tr": "#perspective-origin-property", + "dev": "#perspective-origin-property" + }, + "tests": ["10px", "top", "top left", "50% 100%", "left 0%"] + }, + "backface-visibility": { + "links": { + "tr": "#backface-visibility-property", + "dev": "#backface-visibility-property" + }, + "tests": ["visible", "hidden"] } } }, - "css-position-3": { - "title": "CSS Positioned Layout Module Level 3", + "css-transitions-1": { + "title": "CSS Transitions", "links": { - "tr": "css-position-3", - "dev": "css-position-3" + "tr": "css-transitions-1", + "dev": "css-transitions-1" }, "properties": { - "position": { + "transition-property": { "links": { - "tr": "#position", - "dev": "#position" + "tr": "#transition-property-property", + "dev": "#transition-property-property" }, - "tests": ["sticky"] + "tests": ["none", "all", "width", "width, height"] }, - "inset-before": { + "transition-duration": { "links": { - "dev": "#logical-box-offsets-beaso" + "tr": "#transition-duration-property", + "dev": "#transition-duration-property" }, - "tests": ["auto", "10px", "50%"] + "tests": ["0s", "1s", "100ms"] }, - "inset-after": { + "transition-timing-function": { "links": { - "dev": "#logical-box-offsets-beaso" + "tr": "#transition-timing-function-property", + "dev": "#transition-timing-function-property" }, - "tests": ["auto", "10px", "50%"] + "tests": [ + "ease", "linear", "ease-in", "ease-out", "ease-in-out", + "cubic-bezier(.5, .5, .5, .5)", + "cubic-bezier(.5, 1.5, .5, -2.5)", + "step-start", "step-end", "steps(3, start)", "steps(5, end)" + ] }, - "inset-start": { + "transition-delay": { "links": { - "dev": "#logical-box-offsets-beaso" + "tr": "#transition-delay-property", + "dev": "#transition-delay-property" }, - "tests": ["auto", "10px", "50%"] + "tests": ["1s", "-1s"] }, - "inset-end": { + "transition": { "links": { - "dev": "#logical-box-offsets-beaso" + "tr": "#transition-shorthand-property", + "dev": "#transition-shorthand-property" }, - "tests": ["auto", "10px", "50%"] + "tests": "1s 2s width linear" } } }, - "css-will-change-1": { - "title": "CSS Will Change Module Level 1", + "css-ui-3": { + "title": "CSS Basic User Interface Module Level 3 (CSS3 UI)", "links": { - "tr": "css-will-change-1", - "dev": "css-will-change-1" + "tr": "css-ui-3", + "dev": "css-ui-3" }, "properties": { - "will-change": { + "box-sizing": { "links": { - "tr": "#will-change", - "dev": "#will-change" + "tr": "#box-sizing", + "dev": "#box-sizing" }, - "tests": ["scroll-position", "contents", "transform", "top, left"] - } - } - }, - - "cssom-view-1": { - "title": "CSSOM View Module", - "links": { - "tr": "cssom-view-1", - "dev": "cssom-view-1" - }, - "properties": { - "scroll-behavior": { + "tests": ["border-box", "content-box"] + }, + "outline-style": { "links": { - "tr": "#smooth-scrolling", - "dev": "#smooth-scrolling" + "tr": "#outline-style", + "dev": "#outline-style" }, - "tests": ["auto", "smooth "] - } - } - }, - - "css-ruby-1": { - "title": "CSS Ruby Layout Module Level 1", - "links": { - "tr": "css-ruby-1", - "dev": "css-ruby-1" - }, - "properties": { - "display": { + "tests": ["auto"] + }, + "outline-offset": { "links": { - "tr": "#ruby-display", - "dev": "#ruby-display" + "tr": "#outline-offset", + "dev": "#outline-offset" }, - "tests": ["ruby", "ruby-base", "ruby-text", "ruby-base-container", "ruby-text-container"] + "tests": ["-5px", "0", "5px"] }, - "ruby-position": { + "resize": { "links": { - "tr": "#rubypos", - "dev": "#rubypos" + "tr": "#resize", + "dev": "#resize" + }, + "tests": ["none", "both", "horizontal", "vertical"] + }, + "text-overflow": { + "links": { + "tr": "#text-overflow", + "dev": "#text-overflow" }, - "tests": ["alternate", "over", "under", "alternate over", "alternate under", "inter-character"] + "tests": ["clip", "ellipsis"] }, - "ruby-merge": { + "cursor": { "links": { - "tr": "#collapsed-ruby", - "dev": "#collapsed-ruby" + "tr": "#cursor", + "dev": "#cursor" }, - "tests": ["separate", "collapse", "auto"] + "tests": [ + "url(foo.png) 2 2, auto", "default", "none", "context-menu", "cell", "vertical-text", "alias", "copy", "no-drop", "not-allowed", + "grab", "grabbing", "ew-resize", "ns-resize", "nesw-resize", "nwse-resize", "col-resize", "row-resize", "all-scroll", "zoom-in", + "zoom-out" + ] }, - "ruby-align": { + "caret-color": { "links": { - "tr": "#ruby-align-property", - "dev": "#ruby-align-property" + "tr": "#caret-color", + "dev": "#caret-color" }, - "tests": ["start", "center", "space-between", "space-around"] + "tests": ["auto", "green"] } } }, - "css-scroll-snap-1": { - "title": "CSS Scroll Snap Module Level 1", + "css-ui-4": { + "title": "CSS Basic User Interface Module Level 4", "links": { - "tr": "css-scroll-snap-1", - "dev": "css-scroll-snap-1" + "tr": "css-ui-4", + "dev": "css-ui-4" }, "properties": { - "scroll-margin": { + "accent-color": { "links": { - "tr": "#scroll-margin", - "dev": "#scroll-margin" + "tr": "#widget-accent", + "dev": "#widget-accent" }, - "tests": ["0px", "6px 5px", "10px 20px 30px", "10px 20px 30px 40px", "20px 3em 1in 5rem", "calc(2px)", "calc(3 * 25px)", "calc(3 * 25px) 5px 10em calc(1vw - 5px)"] + "tests": ["auto", "red"] }, - "scroll-margin-block": { + "appearance": { "links": { - "tr": "#margin-longhands-logical", - "dev": "#margin-longhands-logical" + "tr": "#appearance-switching", + "dev": "#appearance-switching" }, - "tests": ["10px", "10px 10px"] + "tests": [ + "auto", "none", "textfield", "menulist-button", "searchfield", "textarea", "push-button", + "slider-horizontal", "checkbox", "radio", "square-button", "menulist", "listbox", "meter", + "progress-bar", "button" + ], }, - "scroll-margin-block-end": { + "input-security": { "links": { - "tr": "#margin-longhands-logical", - "dev": "#margin-longhands-logical" + "tr": "#input-security", + "dev": "#input-security" }, - "tests": ["10px"] + "tests": ["auto", "red"] }, - "scroll-margin-block-start": { + "caret": { "links": { - "tr": "#margin-longhands-logical", - "dev": "#margin-longhands-logical" + "tr": "#caret", + "dev": "#caret" }, - "tests": ["10px"] + "tests": ["auto", "green", "bar", "green bar"] }, - "scroll-margin-bottom": { + "caret-shape": { "links": { - "tr": "#margin-longhands-physical", - "dev": "#margin-longhands-physical" + "tr": "#caret-shape", + "dev": "#caret-shape" }, - "tests": ["10px"] + "tests": ["auto", "bar", "block", "underscore"] }, - "scroll-margin-inline": { + "text-overflow": { "links": { - "tr": "#margin-longhands-logical", - "dev": "#margin-longhands-logical" + "tr": "#text-overflow", + "dev": "#text-overflow" }, - "tests": ["10px", "10px 10px"] + "tests": ["clip", "ellipsis", "fade", "fade(10px)", "fade(10%)", "'foo'"].times(1, 2) }, - "scroll-margin-inline-start": { + "user-select": { "links": { - "tr": "#margin-longhands-logical", - "dev": "#margin-longhands-logical" + "tr": "#content-selection", + "dev": "#content-selection" }, - "tests": ["10px"] + "tests": ["auto", "text", "none", "contain", "all"] }, - "scroll-margin-inline-end": { + "nav-up": { "links": { - "tr": "#margin-longhands-logical", - "dev": "#margin-longhands-logical" + "tr": "#nav-dir", + "dev": "#nav-dir" }, - "tests": ["10px"] + "tests": ["auto", "#foo", "#foo current", "#foo root"] }, - "scroll-margin-left": { + "nav-right": { "links": { - "tr": "#margin-longhands-physical", - "dev": "#margin-longhands-physical" + "tr": "#nav-dir", + "dev": "#nav-dir" }, - "tests": ["10px"] + "tests": ["auto", "#foo", "#foo current", "#foo root"] }, - "scroll-margin-right": { + "nav-down": { "links": { - "tr": "#margin-longhands-physical", - "dev": "#margin-longhands-physical" + "tr": "#nav-dir", + "dev": "#nav-dir" }, - "tests": ["10px"] + "tests": ["auto", "#foo", "#foo current", "#foo root"] }, - "scroll-margin-top": { + "nav-left": { "links": { - "tr": "#margin-longhands-physical", - "dev": "#margin-longhands-physical" + "tr": "#nav-dir", + "dev": "#nav-dir" }, - "tests": ["10px"] - }, - "scroll-padding": { + "tests": ["auto", "#foo", "#foo current", "#foo root"] + } + } + }, + + "css-values-3": { + "title": "CSS Values and Units Module Level 3", + "links": { + "tr": "css-values-3", + "dev": "css-values-3" + }, + "values": { + "properties": [ + "width", + "padding" + ], + "rem": { "links": { - "tr": "#scroll-padding", - "dev": "#scroll-padding" + "tr": "#rem", + "dev": "#rem", + "mdn": "length" }, - "tests": ["auto", "0px", "6px 5px", "10px 20px 30px", "10px 20px 30px 40px", "10px auto 30px auto", "10%", "20% 3em 1in 5rem", "calc(2px)", "calc(50%)", "calc(3 * 25px)", "calc(3 * 25px) 5px 10% calc(10% - 5px)"] + "tests": "5rem" }, - "scroll-padding-block": { + "ch": { "links": { - "tr": "#padding-longhands-logical", - "dev": "#padding-longhands-logical" + "tr": "#ch", + "dev": "#ch", + "mdn": "length" }, - "tests": ["10px", "50%", "10px 50%", "50% 50%"] + "tests": "5ch" }, - "scroll-padding-block-end": { + "vw": { "links": { - "tr": "#padding-longhands-logical", - "dev": "#padding-longhands-logical" + "tr": "#vw", + "dev": "#vw", + "mdn": "length" }, - "tests": ["10px", "50%"] + "tests": "5vw" }, - "scroll-padding-block-start": { + "vh": { "links": { - "tr": "#padding-longhands-logical", - "dev": "#padding-longhands-logical" + "tr": "#vh", + "dev": "#vh", + "mdn": "length" }, - "tests": ["10px", "50%"] + "tests": "5vh" }, - "scroll-padding-bottom": { + "vmin": { "links": { - "tr": "#padding-longhands-physical", - "dev": "#padding-longhands-physical" + "tr": "#vmin", + "dev": "#vmin", + "mdn": "length" }, - "tests": ["10px", "50%"] + "tests": "5vmin" }, - "scroll-padding-inline": { + "vmax": { "links": { - "tr": "#padding-longhands-logical", - "dev": "#padding-longhands-logical" + "tr": "#vmax", + "dev": "#vmax", + "mdn": "length" }, - "tests": ["10px", "50%", "10px 50%", "50% 50%"] + "tests": "5vmax" }, - "scroll-padding-inline-end": { + "Q": { "links": { - "tr": "#padding-longhands-logical", - "dev": "#padding-longhands-logical" + "tr": "#Q", + "dev": "#Q", + "mdn": "length" }, - "tests": ["10px", "50%"] + "tests": "5Q" }, - "scroll-padding-inline-start": { + "attr()": { "links": { - "tr": "#padding-longhands-logical", - "dev": "#padding-longhands-logical" + "tr": "#attr-notation", + "dev": "#attr-notation" }, - "tests": ["10px", "50%"] + "tests": ["attr(data-px)", "attr(data-px px)", "attr(data-px px, initial)"] }, - "scroll-padding-left": { + "calc()": { "links": { - "tr": "#padding-longhands-physical", - "dev": "#padding-longhands-physical" + "tr": "#calc-notation", + "dev": "#calc-notation" }, - "tests": ["10px", "50%"] - }, - "scroll-padding-right": { + "tests": [ + "calc(1px + 2px)", + "calc(5px*2)", + "calc(5px/2)", + "calc(100%/3 - 2*1em - 2*1px)", + "calc(attr(data-px)*2)", + "calc(5px - 10px)", + "calc(1vw - 1px)", + "calc(calc(100%))" + ] + } + }, + "properties": { + "transform": [ + "rotate(calc(15deg + 30deg))" + ] + } + }, + + "css-values-4": { + "title": "CSS Values and Units Module Level 4", + "links": { + "tr": "css-values-4", + "dev": "css-values-4" + }, + "values": { + "properties": [ + "width", + "padding" + ], + "ex": { "links": { - "tr": "#padding-longhands-physical", - "dev": "#padding-longhands-physical" + "tr": "#ex", + "dev": "#ex", + "mdn": "length" }, - "tests": ["10px", "50%"] + "tests": "5ex" }, - "scroll-padding-top": { + "rex": { "links": { - "tr": "#padding-longhands-physical", - "dev": "#padding-longhands-physical" + "tr": "#rex", + "dev": "#rex", + "mdn": "length" }, - "tests": ["10px", "50%"] + "tests": "5rex" }, - "scroll-snap-align": { + "cap": { "links": { - "tr": "#scroll-snap-align", - "dev": "#scroll-snap-align" + "tr": "#cap", + "dev": "#cap", + "mdn": "length" }, - "tests": ["none", "start", "end", "center", "none start", "end center", "center start", "end none", "center center"] + "tests": "5cap" }, - "scroll-snap-stop": { + "rcap": { "links": { - "tr": "#scroll-snap-stop", - "dev": "#scroll-snap-stop" + "tr": "#rcap", + "dev": "#rcap", + "mdn": "length" }, - "tests": ["normal", "always"] + "tests": "5rcap" }, - "scroll-snap-type": { + "rch": { "links": { - "tr": "#scroll-snap-type", - "dev": "#scroll-snap-type" + "tr": "#rch", + "dev": "#rcap", + "mdn": "length" }, - "tests": [ - "none", "x mandatory", "y mandatory", "block mandatory", "inline mandatory", "both mandatory", - "x proximity", "y proximity", "block proximity", "inline proximity", "both proximity" - ] - } - } - }, - - "css-scroll-anchoring-1": { - "title": "CSS Scroll Anchoring Module Level 1", - "links": { - "tr": "css-scroll-anchoring-1", - "dev": "css-scroll-anchoring-1" - }, - "properties": { - "overflow-anchor": { + "tests": "5rch" + }, + "rch": { "links": { - "dev": "#exclusion-api" + "tr": "#rch", + "dev": "#rcap", + "mdn": "length" }, - "tests": ["none", "auto"] - } - } - }, - - "css-logical-1": { - "title": "CSS Logical Properties and Values Level 1", - "links": { - "tr": "css-logical-1", - "dev": "css-logical-1" - }, - "properties": { - "caption-side": { + "tests": "5rch" + }, + "ic": { "links": { - "tr": "#caption-side", - "dev": "#caption-side" + "tr": "#ic", + "dev": "#ic", + "mdn": "length" }, - "tests": ["inline-start", "inline-end"] + "tests": "5ic" }, - "float": { + "ric": { "links": { - "tr": "#float-clear", - "dev": "#float-clear" + "tr": "#ric", + "dev": "#ric", + "mdn": "length" }, - "tests": ["inline-start", "inline-end"] + "tests": "5ric" }, - "clear": { + "lh": { "links": { - "tr": "#float-clear", - "dev": "#float-clear" + "tr": "#lh", + "dev": "#lh", + "mdn": "length" }, - "tests": ["inline-start", "inline-end"] + "tests": "5lh" }, - "text-align": { + "rlh": { "links": { - "tr": "#text-align", - "dev": "#text-align" + "tr": "#rlh", + "dev": "#rlh", + "mdn": "length" }, - "tests": ["start", "end"] + "tests": "5rlh" }, - "resize": { + "toggle()": { "links": { - "tr": "#resize", - "dev": "#resize" + "tr": "#toggle-notation", + "dev": "#toggle-notation" }, - "tests": ["block", "inline"] + "tests": ["toggle(1px, 2px)", "toggle(italic, normal)", "toggle(disc, circle, square, box)"] }, - "block-size": { + "min()": { "links": { - "tr": "#dimension-properties", - "dev": "#dimension-properties" + "tr": "#calc-notation", + "dev": "#comp-func" }, - "tests": ["100px"] + "tests": ["min(10 * (1vw + 1vh) / 2, 12px)"] }, - "inline-size": { + "max()": { "links": { - "tr": "#dimension-properties", - "dev": "#dimension-properties" + "tr": "#calc-notation", + "dev": "#comp-func" }, - "tests": ["100px"] + "tests": ["max(10 * (1vw + 1vh) / 2, 12px)"] }, - "min-block-size": { + "clamp()": { "links": { - "tr": "#dimension-properties", - "dev": "#dimension-properties" + "tr": "#calc-notation", + "dev": "#comp-func" }, - "tests": ["100px"] + "tests": ["clamp(12px, 10 * (1vw + 1vh) / 2, 100px)"] }, - "min-inline-size": { + "calc()": { "links": { - "tr": "#dimension-properties", - "dev": "#dimension-properties" + "tr": "#calc-func", + "dev": "#calc-func" }, - "tests": ["100px"] + "tests": [ + "calc(1rem * pow(1.5, -1))", + "calc(pow(e, pi) - pi)", + "calc(-18px - sign(5px)*round(down, -18px*sign(5px), 5px))", + "calc(-18px - round(to-zero, -18px, 5px))" + ] }, - "max-block-size": { + "round()": { "links": { - "tr": "#dimension-properties", - "dev": "#dimension-properties" + "tr": "#round-func", + "dev": "#round-func" }, - "tests": ["100px"] + "tests": [ + "round(down, 5.5px, 5px)", + "up(down, 5.5px, 5px)", + "down(down, 5.5px, 5px)", + "round(to-zero, 5.5px, 5px)" + ] }, - "max-inline-size": { + "mod()": { "links": { - "tr": "#dimension-properties", - "dev": "#dimension-properties" + "tr": "#round-func", + "dev": "#round-func" }, - "tests": ["100px"] + "tests": ["mod(18px, 5px)", "mod(-140deg, -90deg)"] }, - "margin-block": { + "rem()": { "links": { - "tr": "#margin-properties", - "dev": "#margin-properties" + "tr": "#round-func", + "dev": "#round-func" }, - "tests": ["10px", "10px 10px"] + "tests": ["rem(140deg, -90deg)"] }, - "margin-block-start": { + "sin()": { "links": { - "tr": "#margin-properties", - "dev": "#margin-properties" + "tr": "#trig-funcs", + "dev": "#trig-funcs" }, - "tests": ["10px"] + "tests": ["sin(45deg)", "sin(.125turn)", "sin(3.14159 / 4)"] }, - "margin-block-end": { + "cos()": { "links": { - "tr": "#margin-properties", - "dev": "#margin-properties" + "tr": "#trig-funcs", + "dev": "#trig-funcs" }, - "tests": ["10px"] + "tests": ["cos(45deg)", "cos(.125turn)", "cos(3.14159 / 4)"] }, - "margin-inline": { + "tan()": { "links": { - "tr": "#margin-properties", - "dev": "#margin-properties" + "tr": "#trig-funcs", + "dev": "#trig-funcs" }, - "tests": ["10px", "10px 10px"] + "tests": ["tan(1)"] }, - "margin-inline-start": { + "asin()": { "links": { - "tr": "#margin-properties", - "dev": "#margin-properties" + "tr": "#trig-funcs", + "dev": "#trig-funcs" }, - "tests": ["10px"] + "tests": ["asin(1)"] }, - "margin-inline-end": { + "acos()": { "links": { - "tr": "#margin-properties", - "dev": "#margin-properties" + "tr": "#trig-funcs", + "dev": "#trig-funcs" }, - "tests": ["10px"] + "tests": ["acos(-1)"] }, - "inset": { + "atan()": { "links": { - "tr": "#inset-properties", - "dev": "#inset-properties" + "tr": "#trig-funcs", + "dev": "#trig-funcs" }, - "tests": ["10px", "10px 10px", "10px 10px 10px", "10px 10px 10px 10px"] + "tests": ["atan(-1)", "atan(tan(90deg))", "tan(atan(infinity))"] }, - "inset-block": { + "atan2()": { "links": { - "tr": "#inset-properties", - "dev": "#inset-properties" + "tr": "#trig-funcs", + "dev": "#trig-funcs" }, - "tests": ["10px", "10px 10px"] + "tests": ["atan2(15deg, 90deg)"] }, - "inset-block-start": { + "pow()": { "links": { - "tr": "#inset-properties", - "dev": "#inset-properties" + "tr": "#exponent-funcs", + "dev": "#exponent-funcs" }, - "tests": ["10px"] + "tests": ["pow(1.5, -1)"] }, - "inset-block-end": { + "sqrt()": { "links": { - "tr": "#inset-properties", - "dev": "#inset-properties" + "tr": "#exponent-funcs", + "dev": "#exponent-funcs" }, - "tests": ["10px"] + "tests": ["sqrt(2)"] }, - "inset-inline": { + "hypot()": { "links": { - "tr": "#inset-properties", - "dev": "#inset-properties" + "tr": "#exponent-funcs", + "dev": "#exponent-funcs" }, - "tests": ["10px", "10px 10px"] + "tests": ["hypot(2)", "hypot(2, 2)"] }, - "inset-inline-start": { + "log()": { "links": { - "tr": "#inset-properties", - "dev": "#inset-properties" + "tr": "#exponent-funcs", + "dev": "#exponent-funcs" }, - "tests": ["10px"] + "tests": ["log(2)"] }, - "inset-inline-end": { + "exp()": { "links": { - "tr": "#inset-properties", - "dev": "#inset-properties" + "tr": "#exponent-funcs", + "dev": "#exponent-funcs" }, - "tests": ["10px"] + "tests": ["exp(2)"] }, - "padding-block": { + "abs()": { "links": { - "tr": "#padding-properties", - "dev": "#padding-properties" + "tr": "#sign-funcs", + "dev": "#sign-funcs" }, - "tests": ["10px", "10px 10px"] + "tests": ["abs(-2)"] }, - "padding-block-start": { + "sign()": { "links": { - "tr": "#padding-properties", - "dev": "#padding-properties" + "tr": "#sign-funcs", + "dev": "#sign-funcs" }, - "tests": ["10px"] + "tests": ["sign(10%)"] }, - "padding-block-end": { + "e": { "links": { - "tr": "#padding-properties", - "dev": "#padding-properties" + "tr": "#calc-constants", + "dev": "#calc-constants" }, - "tests": ["10px"] + "tests": ["calc(e)"] }, - "padding-inline": { + "pi": { "links": { - "tr": "#padding-properties", - "dev": "#padding-properties" + "tr": "#calc-constants", + "dev": "#calc-constants" }, - "tests": ["10px", "10px 10px"] + "tests": ["calc(pi)"] }, - "padding-inline-start": { + "infinity": { "links": { - "tr": "#padding-properties", - "dev": "#padding-properties" + "tr": "#calc-error-constants", + "dev": "#ccalc-error-constants" }, - "tests": ["10px"] + "tests": ["calc(infinity)"] }, - "padding-inline-end": { + "-infinity": { "links": { - "tr": "#padding-properties", - "dev": "#padding-properties" + "tr": "#calc-error-constants", + "dev": "#ccalc-error-constants" }, - "tests": ["10px"] + "tests": ["calc(-infinity)"] }, - "border-block": { + "NaN": { "links": { - "tr": "#border-shorthands", - "dev": "#border-shorthands" + "tr": "#calc-error-constants", + "dev": "#ccalc-error-constants" }, - "tests": ["1px", "2px dotted", "medium dashed green"] - }, - "border-block-start": { + "tests": ["calc(NaN)"] + } + } + }, + + "css-variables-1": { + "title": "CSS Custom Properties for Cascading Variables Module Level 1", + "links": { + "tr": "css-variables-1", + "dev": "css-variables-1" + }, + "declaration": { + "--*": { "links": { - "tr": "#border-shorthands", - "dev": "#border-shorthands" + "tr": "#defining-variables", + "dev": "#defining-variables" }, - "tests": ["1px", "2px dotted", "medium dashed green"] + "tests": ["--foo: 2px"] }, - "border-block-start-width": { + "var(--*)": { "links": { - "tr": "#border-width", - "dev": "#border-width" + "tr": "#using-variables", + "dev": "#using-variables", + "mdn": "--*" }, - "tests": ["thin"] - }, - "border-block-start-width": { + "tests": [ + "width: var(--foo)", "width: var(--FOO)", "width: var(--foo, 4px)", + "color: rgba(255, 255, 255, var(--foo, .2) )" + ] + } + } + }, + + "css-will-change-1": { + "title": "CSS Will Change Module Level 1", + "links": { + "tr": "css-will-change-1", + "dev": "css-will-change-1" + }, + "properties": { + "will-change": { "links": { - "tr": "#border-width", - "dev": "#border-width" + "tr": "#will-change", + "dev": "#will-change" }, - "tests": ["thin"] - }, - "border-block-start-style": { + "tests": ["scroll-position", "contents", "transform", "top, left"] + } + } + }, + + "css-writing-modes-3": { + "title": "CSS Writing Modes Level 3", + "links": { + "tr": "css-writing-modes-3", + "dev": "css-writing-modes-3" + }, + "properties": { + "direction": { "links": { - "tr": "#border-style", - "dev": "#border-style" + "tr": "#direction", + "dev": "#direction" }, - "tests": ["dotted"] + "tests": ["ltr", "rtl"] }, - "border-block-start-color": { + "unicode-bidi": { "links": { - "tr": "#border-color", - "dev": "#border-color" + "tr": "#unicode-bidi", + "dev": "#unicode-bidi" }, - "tests": ["navy"] + "tests": ["normal", "embed", "isolate", "bidi-override", "isolate-override", "plaintext"] }, - "border-block-end": { + "writing-mode": { "links": { - "tr": "#border-shorthands", - "dev": "#border-shorthands" + "tr": "#block-flow", + "dev": "#block-flow" }, - "tests": ["1px", "2px dotted", "medium dashed green"] + "tests": ["horizontal-tb", "vertical-rl", "vertical-lr"] }, - "border-block-end-width": { + "text-orientation": { "links": { - "tr": "#border-width", - "dev": "#border-width" + "tr": "#text-orientation", + "dev": "#text-orientation" }, - "tests": ["thin"] + "tests": ["mixed", "upright", "sideways"] }, - "border-block-end-style": { + "text-combine-upright": { "links": { - "tr": "#border-style", - "dev": "#border-style" + "tr": "#text-combine-upright", + "dev": "#text-combine-upright" }, - "tests": ["dotted"] - }, - "border-block-end-color": { + "tests": ["none", "all"] + } + } + }, + + "css-writing-modes-4": { + "title": "CSS Writing Modes Level 4", + "links": { + "tr": "css-writing-modes-4", + "dev": "css-writing-modes-4" + }, + "properties": { + "writing-mode": { "links": { - "tr": "#border-color", - "dev": "#border-color" + "tr": "#block-flow", + "dev": "#block-flow" }, - "tests": ["navy"] + "tests": ["sideways-rl", "sideways-lr"] }, - "border-block-width": { + "text-combine-upright": { "links": { - "tr": "#border-width", - "dev": "#border-width" + "tr": "#text-combine-upright", + "dev": "#text-combine-upright" }, - "tests": ["thin 2px"] - }, - "border-block-style": { + "tests": ["digits 2"] + } + } + }, + + "cssom-view-1": { + "title": "CSSOM View Module", + "links": { + "tr": "cssom-view-1", + "dev": "cssom-view-1" + }, + "properties": { + "scroll-behavior": { "links": { - "tr": "#border-style", - "dev": "#border-style" + "tr": "#smooth-scrolling", + "dev": "#smooth-scrolling" }, - "tests": ["dotted dashed"] - }, - "border-block-color": { + "tests": ["auto", "smooth "] + } + } + }, + + "fill-stroke-3": { + "title": "CSS Fill and Stroke Module Level 3", + "links": { + "tr": "fill-stroke-3", + "dev": "fill-stroke-3", + "devtype": "fxtf" + }, + "properties": { + "fill": { "links": { - "tr": "#border-color", - "dev": "#border-color" + "tr": "#fill-shorthand", + "dev": "#fill-shorthand" }, - "tests": ["navy blue"] + "tests": [ + "url(foo.png), url(bar.svg)", + "top left / 50% 60%", + "border-box", + "border-box padding-box", + "url(foo.png) bottom right / cover padding-box content-box" + ] }, - "border-inline": { + "fill-rule": { "links": { - "tr": "#border-shorthands", - "dev": "#border-shorthands" + "tr": "#fill-rule", + "dev": "#fill-rule" }, - "tests": ["1px", "2px dotted", "medium dashed green"] + "tests": ["nonzero", "evenodd"] }, - "border-inline-start": { + "fill-break": { "links": { - "tr": "#border-shorthands", - "dev": "#border-shorthands" + "tr": "#fill-break", + "dev": "#fill-break" }, - "tests": ["1px", "2px dotted", "medium dashed green"] + "tests": ["bounding-box", "slice", "clone"] }, - "border-inline-start-width": { + "fill-color": { "links": { - "tr": "#border-width", - "dev": "#border-width" + "tr": "#fill-color", + "dev": "#fill-color" }, - "tests": ["thin"] + "tests": "green" }, - "border-inline-start-style": { + "fill-image": { "links": { - "tr": "#border-style", - "dev": "#border-style" + "tr": "#fill-image", + "dev": "#fill-image" }, - "tests": ["dotted"] + "tests": [ + "url(foo.png)", + "image('sprites.png#xywh=10,30,60,20')", + "image('wavy.svg', 'wavy.png' , 'wavy.gif')", + "image('dark.png', black)", + "image(green)", + "linear-gradient(to bottom, yellow 0%, blue 100%)", + "child", + "child(2)" + ] }, - "border-inline-start-color": { + "fill-origin": { "links": { - "tr": "#border-color", - "dev": "#border-color" + "tr": "#fill-origin", + "dev": "#fill-origin" }, - "tests": ["navy"] + "tests": ["match-parent", "fill-box", "stroke-box", "content-box", "padding-box", "border-box"] }, - "border-inline-end": { + "fill-position": { "links": { - "tr": "#border-shorthands", - "dev": "#border-shorthands" + "tr": "#fill-position", + "dev": "#fill-position" }, - "tests": ["1px", "2px dotted", "medium dashed green"] + "tests": ["center", "left 50%", "bottom 10px right 20px", "bottom 10px right", "top right 10px"] }, - "border-inline-end-width": { + "fill-size": { "links": { - "tr": "#border-width", - "dev": "#border-width" + "tr": "#fill-size", + "dev": "#fill-size" }, - "tests": ["thin"] + "tests": ["auto", "cover", "contain", "10px", "50%", "10px auto", "auto 10%", "50em 50%"] }, - "border-inline-end-style": { + "fill-repeat": { "links": { - "tr": "#border-style", - "dev": "#border-style" + "tr": "#fill-repeat", + "dev": "#fill-repeat" }, - "tests": ["dotted"] + "tests": ["repeat-x", "repeat-y"].concat(["repeat", "space", "round", "no-repeat"].times(1, 2)) }, - "border-inline-end-color": { + "fill-opacity": { "links": { - "tr": "#border-color", - "dev": "#border-color" + "tr": "#fill-opacity", + "dev": "#fill-opacity" }, - "tests": ["navy"] + "tests": ["0.5", "45%"] }, - "border-inline-width": { + "stroke": { "links": { - "tr": "#border-width", - "dev": "#border-width" + "tr": "#stroke-shorthand", + "dev": "#stroke-shorthand" }, - "tests": ["thin 2px"] + "tests": [ + "url(foo.png), url(bar.svg)", + "top left / 50% 60%", + "border-box", + "border-box padding-box", + "url(foo.png) bottom right / cover padding-box content-box" + ] }, - "border-inline-style": { + "stroke-width": { "links": { - "tr": "#border-style", - "dev": "#border-style" + "tr": "#stroke-width", + "dev": "#stroke-width" }, - "tests": ["dotted dashed"] + "tests": ["0", "1px", "25%"] }, - "border-inline-color": { + "stroke-align": { "links": { - "tr": "#border-color", - "dev": "#border-color" + "tr": "#stroke-align", + "dev": "#stroke-align" }, - "tests": ["navy blue"] + "tests": ["center", "inset", "outset "] }, - "border-start-start-radius": { + "stroke-linecap": { "links": { - "tr": "#border-radius-shorthands", - "dev": "#border-radius-properties" + "tr": "#stroke-linecap", + "dev": "#stroke-linecap" }, - "tests": ["0", "50%", "250px 100px"] + "tests": ["butt", "round", "square "] }, - "border-start-end-radius": { + "stroke-linejoin": { "links": { - "tr": "#border-radius-shorthands", - "dev": "#border-radius-properties" + "tr": "#stroke-linejoin", + "dev": "#stroke-linejoin" }, - "tests": ["0", "50%", "250px 100px"] + "tests": [ + "crop", "arcs", "miter", "bevel", "round", "fallback", + "crop bevel", "arcs round", "miter fallback" + ] }, - "border-end-start-radius": { + "stroke-miterlimit": { "links": { - "tr": "#border-radius-shorthands", - "dev": "#border-radius-properties" + "tr": "#stroke-miterlimit", + "dev": "#stroke-miterlimit" }, - "tests": ["0", "50%", "250px 100px"] + "tests": "4" }, - "border-end-end-radius": { + "stroke-break": { "links": { - "tr": "#border-radius-shorthands", - "dev": "#border-radius-properties" + "tr": "#stroke-break", + "dev": "#stroke-break" }, - "tests": ["0", "50%", "250px 100px"] + "tests": ["bounding-box", "slice", "clone "] }, - "margin": { + "stroke-dasharray": { "links": { - "tr": "#logical-shorthand-keyword", - "dev": "#logical-shorthand-keyword" + "tr": "#stroke-dasharray", + "dev": "#stroke-dasharray" }, - "tests": ["logical 5px 10px 15px 20px"] + "tests": ["none", "0", "4px", "4px 12%", "4px 12% 3em", "4px 12% 3em 5px", "4px 12% 3em 5px 10%"] }, - "padding": { + "stroke-dashoffset": { "links": { - "tr": "#logical-shorthand-keyword", - "dev": "#logical-shorthand-keyword" + "tr": "#stroke-dashoffset", + "dev": "#stroke-dashoffset" }, - "tests": ["logical 5px 10px 15px 20px"] + "tests": ["0", "4px", "12%"] }, - "border-color": { + "stroke-dash-corner": { "links": { - "tr": "#logical-shorthand-keyword", - "dev": "#logical-shorthand-keyword" + "tr": "#corner-control", + "dev": "#corner-control" }, - "tests": ["logical red green blue yellow"] + "tests": ["none", "15px"] }, - "border-style": { + "stroke-dash-justify": { "links": { - "tr": "#logical-shorthand-keyword", - "dev": "#logical-shorthand-keyword" + "tr": "#corner-control", + "dev": "#corner-control" }, - "tests": ["logical solid dotted dashed none"] + "tests": [ + "none", "stretch", "compress", "dashes", "gaps", + "stretch dashes", "compress gaps dashes", + "stretch gaps", "compress dashes gaps" + ] }, - "border-width": { + "stroke-color": { "links": { - "tr": "#logical-shorthand-keyword", - "dev": "#logical-shorthand-keyword" + "tr": "#stroke-color", + "dev": "#stroke-color" }, - "tests": ["logical 5px 10px 15px 20px"] - } - } - }, - - "css-lists-3": { - "title": "CSS Lists Module Level 3", - "links": { - "tr": "css-lists-3", - "dev": "css-lists-3" - }, - "properties": { - "list-style-type": { + "tests": "green" + }, + "stroke-image": { "links": { - "tr": "#text-markers", - "dev": "#text-markers" + "tr": "#stroke-image", + "dev": "#stroke-image" }, "tests": [ - "disclosure-closed", "disclosure-open", - "hebrew", - "cjk-decimal", "cjk-ideographic", - "hiragana", "katakana", "hiragana-iroha", "katakana-iroha", - "japanese-informal", "japanese-formal", "korean-hangul-formal", - "korean-hanja-informal", "korean-hanja-formal", - "simp-chinese-informal", "simp-chinese-formal", - "trad-chinese-informal", "trad-chinese-formal", - "cjk-heavenly-stem", "cjk-earthly-branch", - "trad-chinese-informal", "trad-chinese-formal", - "simp-chinese-informal", "simp-chinese-formal", - "japanese-informal", "japanese-formal", - "arabic-indic", "persian", "urdu", - "devanagari", "gurmukhi", "gujarati", - "oriya", "kannada", "malayalam", "bengali", - "tamil", "telugu", "thai", "lao", - "myanmar", "khmer", - "hangul", "hangul-consonant", - "ethiopic-halehame", "ethiopic-numeric", - "ethiopic-halehame-am", - "ethiopic-halehame-ti-er", "ethiopic-halehame-ti-et", - "other-style", "inside", "outside", "\\32 style", - '"-"', "'-'", - "symbols(\"*\" \"\\2020\" \"\\2021\" \"\\A7\")", - "symbols(cyclic '*' '\\2020' '\\2021' '\\A7')" + "url(foo.png)", + "image('sprites.png#xywh=10,30,60,20')", + "image('wavy.svg', 'wavy.png' , 'wavy.gif')", + "image('dark.png', black)", + "image(green)", + "linear-gradient(to bottom, yellow 0%, blue 100%)", + "child", + "child(2)" ] }, - "marker-side": { + "stroke-origin": { "links": { - "tr": "#marker-side", - "dev": "#marker-side" + "tr": "#stroke-origin", + "dev": "#stroke-origin" }, - "tests": ["match-self", "match-parent"] + "tests": ["match-parent", "fill-box", "stroke-box", "content-box", "padding-box", "border-box"] }, - "counter-reset": { + "stroke-position": { "links": { - "tr": "#counter-reset", - "dev": "#counter-reset" + "tr": "#stroke-position", + "dev": "#stroke-position" }, - "tests": ["foo", "foo 1", "foo 1 bar", "foo 1 bar 2", "none"] + "tests": ["center", "left 50%", "bottom 10px right 20px", "bottom 10px right", "top right 10px"] }, - "counter-set": { + "stroke-size": { "links": { - "tr": "#increment-set", - "dev": "#increment-set" + "tr": "#stroke-size", + "dev": "#stroke-size" }, - "tests": ["foo", "foo 1", "foo 1 bar", "foo 1 bar 2", "none"] + "tests": ["auto", "cover", "contain", "10px", "50%", "10px auto", "auto 10%", "50em 50%"] }, - "counter-increment": { + "stroke-repeat": { "links": { - "tr": "#increment-set", - "dev": "#increment-set" + "tr": "#stroke-repeat", + "dev": "#stroke-repeat" }, - "tests": ["foo", "foo 1", "foo 1 bar", "foo 1 bar 2", "none"] + "tests": ["repeat-x", "repeat-y"].concat(["repeat", "space", "round", "no-repeat"].times(1, 2)) }, - "content": { + "stroke-opacity": { "links": { - "tr": "#counter-functions", - "dev": "#counter-functions" + "tr": "#stroke-opacity", + "dev": "#stroke-opacity" }, - "tests": [ - "counter(chno, upper-latin) '. '", - "counter(section, upper-roman) ' - '", - "' [' counter(bq, decimal) ']'", - "counter(notecntr, disc) ' '", - "counter(p, none)", - "counter(h1, upper-alpha) '.' counter(h2, decimal) ' '", - "'(' counters(list-item, '.') ') '" - ] + "tests": ["0.5", "45%"] } } }, - "css-counter-styles-3": { - "title": "CSS Counter Styles Level 3", + "filter-effects-1": { + "title": "Filter Effects Module Level 1", "links": { - "tr": "css-counter-styles-3", - "dev": "css-counter-styles-3" - }, - "@rules": { - "@counter-style": { - "links": { - "tr": "#the-counter-style-rule", - "dev": "#the-counter-style-rule" - }, - "tests": "@counter-style foo {\n system: numeric;\n symbols: '0' '1' '2' '3' '4' '5' '6' '7' '8' '9';\n}" - } + "tr": "filter-effects-1", + "dev": "filter-effects-1", + "devtype": "fxtf" }, - "descriptors": { - "@counter-style example/system": { + "properties": { + "filter": { "links": { - "tr": "#counter-style-system", - "dev": "#counter-style-system" - }, - "required" : { - '*' : { "descriptor" : "system: alphabetic; symbols: A B C D; additive-symbols: 1000 M, 500 C"}, - 'extends decimal' : { } + "tr": "#FilterProperty", + "dev": "#FilterProperty" }, "tests": [ - "cyclic", "numeric", "alphabetic", "symbolic", "additive", "fixed 3", "extends decimal" + "none", + "url(#id)", + "url(image.svg#id)", + "blur(5px)", + "brightness(0.5)", + "contrast(150%)", + "drop-shadow(15px 15px 15px black)", + "grayscale(50%)", + "hue-rotate(50deg)", + "invert(50%)", + "opacity(50%)", + "sepia(50%)", + "saturate(150%)", + "grayscale(100%) sepia(100%)" ] }, - "@counter-style example/negative": { + "flood-color": { "links": { - "tr": "#counter-style-negative", - "dev": "#counter-style-negative" - }, - "required" : { - '*' : { "descriptor" : "system: alphabetic; symbols: A B C D; additive-symbols: 1000 M, 500 C"} + "tr": "#FloodColorProperty", + "dev": "#FloodColorProperty" }, - "tests": [ - "'-'", "'(' ')'" - ] + "tests": ["black", "#FFF"] }, - "@counter-style example/prefix": { + "flood-opacity": { "links": { - "tr": "#counter-style-prefix", - "dev": "#counter-style-prefix" - }, - "required" : { - '*' : { "descriptor" : "system: alphabetic; symbols: A B C D; additive-symbols: 1000 M, 500 C"} + "tr": "#FloodOpacityProperty", + "dev": "#FloodOpacityProperty" }, - "tests": [ - "»", "url(https://lea.verou.me/mark.svg)" - ] + "tests": ["1", "0", "0.2", "45%"] }, - "@counter-style example/suffix": { + "color-interpolation-filters": { "links": { - "tr": "#counter-style-suffix", - "dev": "#counter-style-suffix" - }, - "required" : { - '*' : { "descriptor" : "system: alphabetic; symbols: A B C D; additive-symbols: 1000 M, 500 C"} + "tr": "#ColorInterpolationFiltersProperty", + "dev": "#ColorInterpolationFiltersProperty" }, - "tests": [ - "»", "url(https://lea.verou.me/mark.svg)" - ] + "tests": ["auto", "sRGB", "linearRGB"] }, - "@counter-style example/range": { + "lighting-color": { "links": { - "tr": "#counter-style-range", - "dev": "#counter-style-range" + "tr": "#LightingColorProperty", + "dev": "#LightingColorProperty" }, - "required" : { - '*' : { "descriptor" : "system: alphabetic; symbols: A B C D; additive-symbols: 1000 M, 500 C"} + "tests": ["white", "#000"] + } + } + }, + + "filter-effects-2": { + "title": "Filter Effects Module Level 2", + "links": { + "dev": "filter-effects-2", + "devtype": "fxtf" + }, + "properties": { + "backdrop-filter": { + "links": { + "dev": "#BackdropFilterProperty" }, "tests": [ - "auto", "2 5", "infinite 10", "10 infinite", "infinite infinite", "2 5, 8 10", "infinite 8, 6 infinite" + "none", + "url(#id)", + "url(image.svg#id)", + "blur(5px)", + "brightness(0.5)", + "contrast(150%)", + "drop-shadow(15px 15px 15px black)", + "grayscale(50%)", + "hue-rotate(50deg)", + "invert(50%)", + "opacity(50%)", + "sepia(50%)", + "saturate(150%)", + "grayscale(100%) sepia(100%)" ] + } + } + }, + + "fullscreen": { + "title": "Fullscreen API", + "links": { + "dev": "fullscreen", + "devtype": "whatwg" + }, + "selectors": { + "::backdrop": { + "links": { + "dev": "#::backdrop-pseudo-element" + }, + "tests": "::backdrop" }, - "@counter-style example/symbols": { + ":fullscreen": { "links": { - "tr": "#counter-style-symbols", - "dev": "#counter-style-symbols" + "dev": "#:fullscreen-pseudo-class" }, - "required" : { - '*' : { "descriptor" : "system: alphabetic"}, - 'custom-numbers' : { "rule" : "@counter-style custom-numbers { system: fixed; symbols: A B C D E;}"} + "tests": ":fullscreen" + } + } + }, + + "html": { + "title": "HTML Living Standard", + "links": { + "dev": "html", + "devtype": "whatwg" + }, + "selectors": { + ":autofill": { + "links": { + "dev": "#selector-autofill" + }, + "tests": ":autofill" + } + } + }, + + "mathml-core": { + "title": "MathML Core", + "links": { + "dev": "mathml-core/#css-extensions-for-math-layout", + "devtype": "math" + }, + "properties": { + "display": { + "links": { + "dev": "new-display-math-value" }, "tests": [ - "A B C D E F", - "'\\24B6' '\\24B7' '\\24B8' D E F", - "'0' '1' '2' '4' '5' '6' '7'", - "'1' url('second.svg') '2'", - "url('first.svg') url('second.svg') url('third.svg')", - "custom-numbers" + "math", "block math", "inline math" ] }, - "@counter-style example/additive-symbols": { + "text-transform": { "links": { - "tr": "#additive-system", - "dev": "#descdef-counter-style-additive-symbols" - }, - "required" : { - '*' : { "descriptor" : "system: additive"} + "dev": "#new-text-transform-values" }, "tests": [ - "3 '0'", "3 '1', 2 '\\2E\\20'", "3 '1', 2 url(symbol.svg)", + "math-auto", "math-bold", "math-italic", "math-bold-italic", "math-double-struck", "math-bold-fraktur", + "math-script", "math-bold-script", "math-fraktur", "math-sans-serif", "math-bold-sans-serif", + "math-sans-serif-italic", "math-sans-serif-bold-italic", "math-monospace", "math-initial", + "math-tailed", "math-looped", "math-stretched" ] }, - "@counter-style example/pad": { + "font-size": { "links": { - "tr": "#counter-style-pad", - "dev": "#counter-style-pad" - }, - "required" : { - '*' : { "descriptor" : "system: alphabetic; symbols: A B C D; additive-symbols: 1000 M, 500 C"} + "dev": "#the-math-script-level-property" }, - "tests": [ - "0 ''", "3 '0'", "'0' 3" - ] + "tests": ["math"] }, - "@counter-style example/fallback": { + "math-style": { "links": { - "tr": "#counter-style-fallback", - "dev": "#counter-style-fallback" + "dev": "#the-math-style-property" }, - "required" : { - '*' : { "descriptor" : "system: alphabetic; symbols: A B C D; additive-symbols: 1000 M, 500 C"} + "tests": ["normal", "compact"] + }, + "math-shift": { + "links": { + "dev": "#the-math-shift" }, - "tests": [ - "decimal" - ] + "tests": ["normal", "compact"] }, - "@counter-style example/speak-as": { + "math-depth": { "links": { - "tr": "#counter-style-speak-as", - "dev": "#counter-style-speak-as" - }, - "required" : { - '*' : { "descriptor" : "system: alphabetic; symbols: A B C D; additive-symbols: 1000 M, 500 C"} + "dev": "#the-math-script-level-property" }, - "tests": [ - "auto", "bullets", "numbers", "words", "spell-out", "example-counter", - ] + "tests": ["auto-add", "add(0)", "add(1)", "0", "1"] } } }, - "css-overflow-3": { - "title": "CSS Overflow Module Level 3", + /* + * Note: the following media queries must be true in supporting UAs! + */ + "mediaqueries-3": { + "title": "Media Queries Level 3", "links": { - "tr": "css-overflow-3", - "dev": "css-overflow-3" + "tr": "css3-mediaqueries", + "dev": "mediaqueries-3" }, - "properties": { - "line-clamp": { + "Media queries": { + "negation": { "links": { - "tr": "#line-clamp", - "dev": "#line-clamp", - "mdn": "-webkit-line-clamp" + "tr": "#media0", + "dev": "#media0", + "mdn": "Media_Queries/Using_media_queries" }, - "tests": ["none", "1", "5 clip", "5 ellipsis", "5 \"… (continued on next page)\""] + "tests": ["not print", "not all and (width:1px)"] }, - "max-lines": { + "width": { "links": { - "tr": "#max-lines", - "dev": "#max-lines" + "tr": "#width", + "dev": "#width", + "mdn": "Media_Queries/Using_media_queries" }, - "tests": ["none", "1"] + "tests": ["(width)", "(min-width:1px)", "(max-width:1000000px)"] }, - "overflow-x": { + "height": { "links": { - "tr": "#overflow-properties", - "dev": "#overflow-properties" + "tr": "#height", + "dev": "#height", + "mdn": "Media_Queries/Using_media_queries" }, - "tests": ["visible", "hidden", "clip", "scroll", "auto"] + "tests": ["(height)", "(min-height:1px)", "(max-height:1000000px)"] }, - "overflow-y": { + "device-width": { "links": { - "tr": "#overflow-properties", - "dev": "#overflow-properties" + "tr": "#device-width", + "dev": "#device-width" }, - "tests": ["visible", "hidden", "clip", "scroll", "auto"] + "tests": ["(device-width)", "(min-device-width:1px)", "(max-device-width:1000000px)"] }, - "overflow-inline": { + "device-height": { "links": { - "tr": "#logical", - "dev": "#logical" + "tr": "#device-height", + "dev": "#device-height" }, - "tests": ["visible", "hidden", "clip", "scroll", "auto"] + "tests": ["(device-height)", "(min-device-height:1px)", "(max-device-height:1000000px)"] }, - "overflow-block": { + "orientation": { "links": { - "tr": "#logical", - "dev": "#logical" + "tr": "#orientation", + "dev": "#orientation" }, - "tests": ["visible", "hidden", "clip", "scroll", "auto"] + "tests": "(orientation:portrait), (orientation:landscape)" }, - "overflow-clip-margin": { + "aspect-ratio": { "links": { - "tr": "#overflow-clip-margin", - "dev": "#overflow-clip-margin" + "tr": "#aspect-ratio", + "dev": "#aspect-ratio" }, - "tests": ["content-box", "padding-box", "border-box", "20px"] - + "tests": [ + "(aspect-ratio)", + "(min-aspect-ratio:1/1000000)", + "(min-aspect-ratio:1 / 1000000)", + "(max-aspect-ratio:1000000/1)", + ] }, - "continue": { + "device-aspect-ratio": { "links": { - "tr": "#continue", - "dev": "#continue" + "tr": "#device-aspect-ratio", + "dev": "#device-aspect-ratio" }, - "tests": ["auto", "discard"] + "tests": [ + "(device-aspect-ratio)", + "(min-device-aspect-ratio:1/1000000)", + "(min-device-aspect-ratio:1 / 1000000)", + "(max-device-aspect-ratio:1000000/1)", + ] }, - "scrollbar-gutter": { + "color": { "links": { - "tr": "scrollbar-gutter-property", - "dev": "#scrollbar-gutter-property" + "tr": "#color", + "dev": "#color" }, "tests": [ - "auto", "stable", "both-edges stable", "stable both-edges", + "(color)", "(min-color: 0)", "(max-color: 100)" ] - } - } - }, - - "css-overflow-4": { - "title": "CSS Overflow Module Level 4", - "links": { - "tr": "css-overflow-4", - "dev": "css-overflow-4" - }, - "selectors": { - "::nth-fragment()": { + }, + "color-index": { "links": { - "tr": "#fragment-pseudo-element", - "dev": "#fragment-pseudo-element" + "tr": "#color-index", + "dev": "#color-index" }, "tests": [ - ":nth-fragment(even)", ":nth-fragment(odd)", - ":nth-fragment(n)", ":nth-fragment(-n)", ":nth-fragment(0n)", - ":nth-fragment(1)", ":nth-fragment(-1)", ":nth-fragment(0)", - ":nth-fragment(n+1)", ":nth-fragment(3n+1)", ":nth-fragment(3n + 1)", - ":nth-fragment(-n+1)", ":nth-fragment(3n-1)" + "all, (color-index)", + "(min-color-index: 0)", + "(max-color-index: 10000000)" ] - } - } - }, - - "css-containment-1": { - "title": "CSS Containment Module Level 1", - "links": { - "tr": "css-contain-1", - "dev": "css-contain-1" - }, - "properties": { - "contain": { + }, + "monochrome": { "links": { - "tr": "#contain-property", - "dev": "#contain-property" + "tr": "#monochrome", + "dev": "#monochrome" }, "tests": [ - "none", "strict", "content", "size", "layout", "paint", - "size layout", "size paint", "size layout paint" + "all, (monochrome)", "(min-monochrome: 0)", "(max-monochrome: 10000)" ] - } - } - }, - - "css-containment-2": { - "title": "CSS Containment Module Level 2", - "links": { - "tr": "css-contain-2", - "dev": "css-contain-2" - }, - "properties": { - "contain": { + }, + "resolution": { "links": { - "tr": "#contain-property", - "dev": "#contain-property" + "tr": "#resolution", + "dev": "#resolution" }, "tests": [ - "style", - "size style", "size layout style", "size layout style paint" + "(resolution)", + "(min-resolution: 1dpi)", + "(max-resolution: 1000000dpi)", + "(max-resolution: 1000000dpcm)" ] }, - "content-visibility": { + "scan": { "links": { - "tr": "#content-visibility", - "dev": "#content-visibility" + "tr": "#scan", + "dev": "#scan" }, - "tests": ["visible", "auto", "hidden"] + "tests": ["not tv, (scan: progressive)", "not tv, (scan: interlace)"] + }, + "grid": { + "links": { + "tr": "#grid", + "dev": "#grid" + }, + "tests": ["all, (grid)", "(grid: 0), (grid: 1)"] } } }, - "css-containment-3": { - "title": "CSS Containment Module Level 3", + "mediaqueries-4": { + "title": "Media Queries Level 4", "links": { - "tr": "css-contain-3", - "dev": "css-contain-3" + "tr": "mediaqueries-4", + "dev": "mediaqueries-4" }, - "@rules": { - "@container": { + "Media queries": { + "resolution": { "links": { - "tr": "#container-rule", - "dev": "#container-rule" + "tr": "#resolution", + "dev": "#resolution" }, - "tests": [ - "@container size(width >= 150px) { div { margin: 10px } }", - "@container size(height >= 150px) { div { margin: 10px } }", - "@container size(inline-size >= 150px) { div { margin: 10px } }", - "@container size(block-size >= 150px) { div { margin: 10px } }", - "@container size(aspect-ratio >= 1 / 1) { div { margin: 10px } }", - "@container size(orientation = portrait) { div { margin: 10px } }", - "@container style(pointer) { div { margin: 10px } }", - "@container style(pointer: fine) { div { margin: 10px } }", - "@container x size(width >= 150px) { div { margin: 10px } }", - "@container name(x) size(width >= 150px) { div { margin: 10px } }", - "@container type(inline-size) size(width >= 150px) { div { margin: 10px } }", - "@container name(x) type(inline-size) size(width >= 150px) { div { margin: 10px } }" - ] - } - }, - "values": { - "properties": [ - "width" - ], - "cqw": { + "tests": ["(resolution: infinite)"] + }, + "hover": { "links": { - "tr": "#container-lengths", - "dev": "#container-lengths", - "mdn": "length" + "tr": "#hover", + "dev": "#hover" }, - "tests": "5cqw" + "tests": ["(hover)", "(hover: none)", "(hover: hover)"] }, - "cqh": { + "any-hover": { "links": { - "tr": "#container-lengths", - "dev": "#container-lengths", - "mdn": "length" + "tr": "#any-input", + "dev": "#any-input" + }, + "tests": ["(any-hover)", "(any-hover: none)", "(any-hover: hover)"] + }, + "pointer": { + "links": { + "tr": "#pointer", + "dev": "#pointer" }, - "tests": "5cqh" + "tests": ["(pointer)", "(pointer: none)", "(pointer: coarse)", "(pointer: fine)"] }, - "cqi": { + "any-pointer": { "links": { - "tr": "#container-lengths", - "dev": "#container-lengths", - "mdn": "length" + "tr": "#any-input", + "dev": "#any-input" }, - "tests": "5cqi" + "tests": ["(any-pointer)", "(any-pointer: none)", "(any-pointer: coarse)", "(any-pointer: fine)"] }, - "cqb": { + "update": { "links": { - "tr": "#container-lengths", - "dev": "#container-lengths", - "mdn": "length" + "tr": "#update", + "dev": "#update" }, - "tests": "5cqb" + "tests": ["(update)", "(update: none)", "(update: slow)", "(update: fast)"] }, - "cqmin": { + "overflow-block": { "links": { - "tr": "#container-lengths", - "dev": "#container-lengths", - "mdn": "length" + "tr": "#mf-overflow-block", + "dev": "#mf-overflow-block" }, - "tests": "5cqmin" + "tests": ["(overflow-block: none)", "(overflow-block: scroll)", "(overflow-block: optional-paged)", "(overflow-block: paged)"] }, - "cqmax": { + "overflow-inline": { "links": { - "tr": "#container-lengths", - "dev": "#container-lengths", - "mdn": "length" + "tr": "#mf-overflow-inline", + "dev": "#mf-overflow-inline" }, - "tests": "5cqmax" - } - }, - "properties": { - "container-type": { + "tests": ["(overflow-inline: none)", "(overflow-inline: scroll)"] + }, + "color-gamut": { "links": { - "tr": "#container-type", - "dev": "#container-type" + "tr": "#color-gamut", + "dev": "#color-gamut" }, - "tests": [ - "none", - "style", - "state", - "size", - "inline-size", - "block-size", - "style state", - "style state size", - "style state inline-size", - "style state block-size" - ] + "tests": ["(color-gamut)", "(color-gamut: srgb)", "(color-gamut: p3)", "(color-gamut: rec2020)"] }, - "container-name": { + "aspect-ratio": { "links": { - "tr": "#container-name", - "dev": "#container-name" + "tr": "#aspect-ratio", + "dev": "#aspect-ratio" }, "tests": [ - "none", - "x", - "\"x\"", - "x y" + "(aspect-ratio: 1280.1/720.01)", + "(max-aspect-ratio: 1280.1/720.01)", + "(min-aspect-ratio: 0.2)", ] }, - "container": { + "device-aspect-ratio": { "links": { - "tr": "#container-shorthand", - "dev": "#container-shorthand" + "tr": "#device-aspect-ratio", + "dev": "#device-aspect-ratio" }, "tests": [ - "none", - "style", - "size / x" + "(device-aspect-ratio:1280.1/720.01)", + "(max-device-aspect-ratio:1280.1/720.01)", + "(min-device-aspect-ratio:0.2)", ] } } }, - "css-sizing-3": { - "title": "CSS Box Sizing Module Level 3", + "mediaqueries-5": { + "title": "Media Queries Level 5", "links": { - "tr": "css-sizing-3", - "dev": "css-sizing-3" + "tr": "mediaqueries-5", + "dev": "mediaqueries-5" }, - "properties": { - "width": { + "Media queries": { + "prefers-reduced-motion": { "links": { - "tr": "#preferred-size-properties", - "dev": "#preferred-size-properties" + "tr": "#prefers-reduced-motion", + "dev": "#prefers-reduced-motion" }, - "tests": ["max-content", "min-content", "fit-content(10%)"] + "tests": ["(prefers-reduced-motion)", "(prefers-reduced-motion: no-preference)", "(prefers-reduced-motion: reduce)"] }, - "min-width": { + "prefers-reduced-transparency": { "links": { - "tr": "#min-size-properties", - "dev": "#min-size-properties" + "tr": "#prefers-reduced-transparency", + "dev": "#prefers-reduced-transparency" }, - "tests": ["max-content", "min-content", "fit-content(10%)"] + "tests": ["(prefers-reduced-transparency)","(prefers-reduced-transparency: no-preference)", "(prefers-reduced-transparency: reduce)"] }, - "max-width": { + "prefers-contrast": { "links": { - "tr": "#max-size-properties", - "dev": "#max-size-properties" + "tr": "#prefers-contrast", + "dev": "#prefers-contrast" }, - "tests": ["max-content", "min-content", "fit-content(10%)"] + "tests": ["(prefers-contrast)", "(prefers-contrast: no-preference)", "(prefers-contrast: less)", "(prefers-contrast: more)", "(prefers-contrast: custom)"] }, - "height": { + "prefers-color-scheme": { "links": { - "tr": "#preferred-size-properties", - "dev": "#preferred-size-properties" + "tr": "#prefers-color-scheme", + "dev": "#prefers-color-scheme" }, - "tests": ["max-content", "min-content", "fit-content(10%)"] + "tests": ["(prefers-color-scheme)", "(prefers-color-scheme: light)", "(prefers-color-scheme: dark)"] }, - "min-height": { + "scripting": { "links": { - "tr": "#min-size-properties", - "dev": "#min-size-properties" + "tr": "#scripting", + "dev": "#scripting" }, - "tests": ["max-content", "min-content", "fit-content(10%)"] + "tests": ["(scripting)", "(scripting: none)", "(scripting: initial-only)", "(scripting: enabled)"] }, - "max-height": { + "environment-blending": { "links": { - "tr": "#max-size-properties", - "dev": "#max-size-properties" + "tr": "#environment-blending", + "dev": "#environment-blending" }, - "tests": ["max-content", "min-content", "fit-content(10%)"] + "tests": ["(environment-blending)", "(environment-blending: opaque)", "(environment-blending: additive)", "(environment-blending: subtractive)"] }, - "column-width": { + "forced-colors": { "links": { - "tr": "#column-sizing", - "dev": "#column-sizing" + "tr": "#forced-colors", + "dev": "#prefers-contrast" }, - "tests": ["max-content", "min-content", "fit-content(10%)"] + "tests": ["(forced-colors)", "(forced-colors: none)", "(forced-color: active)"] + }, + "dynamic-range": { + "links": { + "tr": "#dynamic-range", + "dev": "#dynamic-range" + }, + "tests": ["(dynamic-range)", "(dynamic-range: standard)", "(dynamic-range: high)"] + }, + "inverted-colors": { + "links": { + "tr": "#inverted", + "dev": "#inverted" + }, + "tests": ["(inverted-colors)", "(inverted-colors: none)", "(light-level: inverted)"] + }, + "video-color-gamut": { + "links": { + "dev": "#video-color-gamut", + "tr": "#video-color-gamut" + }, + "tests": ["(video-color-gamut)", "(video-color-gamut: srgb)", "(video-color-gamut: p3)", "(video-color-gamut: rec2020)"] + }, + "video-dynamic-range": { + "links": { + "dev": "#video-dynamic-range", + "tr": "#video-dynamic-range" + }, + "tests": ["(video-dynamic-range)", "(video-dynamic-range: standard)", "(video-dynamic-range: high)"] } } }, - "css-sizing-4": { - "title": "CSS Box Sizing Module Level 4", + "pointerevents1": { + "title": "Pointer Events Level 1", "links": { - "tr": "css-sizing-4", - "dev": "css-sizing-4" + "tr": "pointerevents1" }, "properties": { - "aspect-ratio": { + "touch-action": { "links": { - "tr": "#aspect-ratio", - "dev": "#aspect-ratio" + "tr": "#the-touch-action-css-property" }, - "tests": ["auto", "2", "16 / 9", "auto 16 / 9"] + "tests": ["auto", "none", "pan-x", "pan-y", "pan-x pan-y", "manipulation"] + } + } + }, + + "pointerevents3": { + "title": "Pointer Events Level 3", + "links": { + "tr": "pointerevents3", + "dev": "pointerevents", + "devtype": "github" + }, + "properties": { + "touch-action": { + "links": { + "dev": "#the-touch-action-css-property" + }, + "tests": ["pan-left", "pan-right", "pan-up", "pan-down", "pan-left pan-up"] + } + } + }, + + "selectors-3": { + "title": "Selectors Level 3", + "links": { + "tr": "selectors-3", + "dev": "selectors-3", + "mdn": "Glossary/CSS_Selector" + }, + "selectors": { + "Sibling combinator": { + "links": { + "tr": "#sibling-combinators", + "dev": "#sibling-combinators", + "mdn": "General_sibling_combinator" + }, + "tests": "foo ~ bar" }, - "contain-intrinsic-size": { + "::before": { + "links": { + "tr": "#gen-content", + "dev": "#gen-content" + }, + "tests": "::before" + }, + "::after": { + "links": { + "tr": "#gen-content", + "dev": "#gen-content" + }, + "tests": "::after" + }, + "::first-letter": { + "links": { + "tr": "#first-letter", + "dev": "#first-letter" + }, + "tests": "::first-letter" + }, + "::first-line": { "links": { - "tr": "#propdef-contain-intrinsic-size", - "dev": "#propdef-contain-intrinsic-size" + "tr": "#first-line", + "dev": "#first-line" }, - "tests": ["none", "10px", "10px 15px"] + "tests": "::first-line" }, - "contain-intrinsic-width": { + "[att^=val]": { "links": { - "tr": "#intrinsic-size-override", - "dev": "#intrinsic-size-override" + "tr": "#attribute-substrings", + "dev": "#attribute-substrings", + "mdn": "Attribute_selectors" }, - "tests": ["none", "10px"] + "tests": ["[att^=val]", "[att^=\"val\"]"] }, - "contain-intrinsic-height": { + "[att*=val]": { "links": { - "tr": "#intrinsic-size-override", - "dev": "#intrinsic-size-override" + "tr": "#attribute-substrings", + "dev": "#attribute-substrings", + "mdn": "Attribute_selectors" }, - "tests": ["none", "10px"] + "tests": ["[att*=val]", "[att*=\"val\"]"] }, - "contain-intrinsic-block-size": { + "[att$=val]": { "links": { - "tr": "#intrinsic-size-override", - "dev": "#intrinsic-size-override" + "tr": "#attribute-substrings", + "dev": "#attribute-substrings", + "mdn": "Attribute_selectors" }, - "tests": ["none", "10px"] + "tests": ["[att$=val]", "[att$=\"val\"]"] }, - "contain-intrinsic-inline-size": { + "Namespaces": { "links": { - "tr": "#intrinsic-size-override", - "dev": "#intrinsic-size-override" + "tr": "#attrnmsp", + "dev": "#attrnmsp", + "mdn": "CSS_Namespaces" }, - "tests": ["none", "10px"] + "tests": ["*|html", "[*|attr]", "[*|attr=val]", "*|html[*|attr]"] }, - "width": { + ":target": { "links": { - "tr": "#sizing-values", - "dev": "#sizing-values" + "tr": "#target-pseudo", + "dev": "#target-pseudo" }, - "tests": ["stretch", "fit-content", "contain"] + "tests": ":target" }, - "min-width": { + ":enabled": { "links": { - "tr": "#sizing-values", - "dev": "#sizing-values" + "tr": "#enableddisabled", + "dev": "#enableddisabled" }, - "tests": ["stretch", "fit-content", "contain"] + "tests": ":enabled" }, - "max-width": { + ":disabled": { "links": { - "tr": "#sizing-values", - "dev": "#sizing-values" + "tr": "#enableddisabled", + "dev": "#enableddisabled" }, - "tests": ["stretch", "fit-content", "contain"] + "tests": ":disabled" }, - "height": { + ":checked": { "links": { - "tr": "#sizing-values", - "dev": "#sizing-values" + "tr": "#checked", + "dev": "#checked" }, - "tests": ["stretch", "fit-content", "contain"] + "tests": ":checked" }, - "min-height": { + ":indeterminate": { "links": { - "tr": "#sizing-values", - "dev": "#sizing-values" + "tr": "#indeterminate", + "dev": "#indeterminate" }, - "tests": ["stretch", "fit-content", "contain"] + "tests": ":indeterminate" }, - "max-height": { + ":root": { "links": { - "tr": "#sizing-values", - "dev": "#sizing-values" + "tr": "#root-pseudo", + "dev": "#root-pseudo" }, - "tests": ["stretch", "fit-content", "contain"] + "tests": ":root" }, - "inline-size": { + ":nth-child()": { "links": { - "tr": "#sizing-values", - "dev": "#sizing-values" + "tr": "#nth-child-pseudo", + "dev": "#nth-child-pseudo" }, - "tests": ["stretch", "fit-content", "contain"] + "tests": [ + ":nth-child(even)", ":nth-child(odd)", + ":nth-child(n)", ":nth-child(-n)", ":nth-child(0n)", + ":nth-child(1)", ":nth-child(-1)", ":nth-child(0)", + ":nth-child(n+1)", ":nth-child(3n+1)", ":nth-child(3n + 1)", + ":nth-child(-n+1)", ":nth-child(-n-1)", ":nth-child(3n-1)" + ] }, - "min-inline-size": { + ":nth-last-child()": { "links": { - "tr": "#sizing-values", - "dev": "#sizing-values" + "tr": "#nth-last-child-pseudo", + "dev": "#nth-last-child-pseudo" }, - "tests": ["stretch", "fit-content", "contain"] + "tests": [ + ":nth-last-child(even)", ":nth-last-child(odd)", + ":nth-last-child(n)", ":nth-last-child(-n)", ":nth-last-child(0n)", + ":nth-last-child(1)", ":nth-last-child(-1)", ":nth-last-child(0)", + ":nth-last-child(n+1)", ":nth-last-child(3n+1)", ":nth-last-child(3n + 1)", + ":nth-last-child(-n+1)", ":nth-last-child(-n-1)", ":nth-last-child(3n-1)" + ] }, - "max-inline-size": { + ":nth-of-type()": { "links": { - "tr": "#sizing-values", - "dev": "#sizing-values" + "tr": "#nth-of-type-pseudo", + "dev": "#nth-of-type-pseudo" }, - "tests": ["stretch", "fit-content", "contain"] + "tests": [ + ":nth-of-type(even)", ":nth-of-type(odd)", + ":nth-of-type(n)", ":nth-of-type(-n)", ":nth-of-type(0n)", + ":nth-of-type(1)", ":nth-of-type(-1)", ":nth-of-type(0)", + ":nth-of-type(n+1)", ":nth-of-type(3n+1)", ":nth-of-type(3n + 1)", + ":nth-of-type(-n+1)", ":nth-of-type(-n-1)", ":nth-of-type(3n-1)" + ] }, - "block-size": { + ":nth-last-of-type()": { "links": { - "tr": "#sizing-values", - "dev": "#sizing-values" + "tr": "#nth-last-of-type-pseudo", + "dev": "#nth-last-of-type-pseudo" }, - "tests": ["stretch", "fit-content", "contain"] + "tests": [ + ":nth-last-of-type(even)", ":nth-last-of-type(odd)", + ":nth-last-of-type(n)", ":nth-last-of-type(-n)", ":nth-last-of-type(0n)", + ":nth-last-of-type(1)", ":nth-last-of-type(-1)", ":nth-last-of-type(0)", + ":nth-last-of-type(n+1)", ":nth-last-of-type(3n+1)", ":nth-last-of-type(3n + 1)", + ":nth-last-of-type(-n+1)", ":nth-last-of-type(-n-1)", ":nth-last-of-type(3n-1)" + ] }, - "min-block-size": { + ":last-child": { "links": { - "tr": "#sizing-values", - "dev": "#sizing-values" + "tr": "#last-child-pseudo", + "dev": "#last-child-pseudo" }, - "tests": ["stretch", "fit-content", "contain"] + "tests": ":last-child" }, - "max-block-size": { + ":only-child": { "links": { - "tr": "#sizing-values", - "dev": "#sizing-values" + "tr": "#only-child-pseudo", + "dev": "#only-child-pseudo" }, - "tests": ["stretch", "fit-content", "contain"] - } - } - }, - - "css-overscroll-1": { - "title": "CSS Overscroll Behavior Module Level 1", - "links": { - "tr": "css-overscroll-1", - "dev": "css-overscroll-1" - }, - "properties": { - "overscroll-behavior": { + "tests": ":only-child" + }, + ":first-of-type": { "links": { - "dev": "#overscroll-behavior-properties" + "tr": "#first-of-type-pseudo", + "dev": "#first-of-type-pseudo" }, - "tests": ["contain", "none", "auto"].times(1, 2) + "tests": ":first-of-type" }, - "overscroll-behavior-x": { + ":last-of-type": { "links": { - "dev": "#overscroll-behavior-longhands-physical" + "tr": "#last-of-type-pseudo", + "dev": "#last-of-type-pseudo" }, - "tests": ["contain", "none", "auto"] + "tests": ":last-of-type" }, - "overscroll-behavior-y": { + ":only-of-type": { "links": { - "dev": "#overscroll-behavior-longhands-physical" + "tr": "#only-of-type-pseudo", + "dev": "#only-of-type-pseudo" }, - "tests": ["contain", "none", "auto"] + "tests": ":only-of-type" }, - "overscroll-behavior-inline": { + ":empty": { "links": { - "dev": "#overscroll-behavior-longhands-logical" + "tr": "#empty-pseudo", + "dev": "#empty-pseudo" }, - "tests": ["contain", "none", "auto"] + "tests": ":empty" }, - "overscroll-behavior-block": { + ":not()": { "links": { - "dev": "#overscroll-behavior-longhands-logical" + "tr": "#negation", + "dev": "#negation" }, - "tests": ["contain", "none", "auto"] + "tests": [":not(*)", ":not(element)", ":not(.class):not(#id):not([attr]):not(:link)"] } } }, - "css-scrollbars-1": { - "title": "CSS Scrollbars Module Level 1", + "selectors-4": { + "title": "Selectors Level 4", "links": { - "tr": "css-scrollbars-1", - "dev": "css-scrollbars-1" + "tr": "selectors-4", + "dev": "selectors-4" }, - "properties": { - "scrollbar-color": { + "selectors": { + ":indeterminate": { "links": { - "tr": "#scrollbar-color", - "dev": "#scrollbar-color" + "tr": "#indeterminate", + "dev": "#indeterminate" }, - "tests": ["auto", "red blue"] + "tests": ":indeterminate" }, - "scrollbar-width": { + ":blank": { "links": { - "tr": "#scrollbar-width", - "dev": "#scrollbar-width" + "tr": "#blank", + "dev": "#blank" }, - "tests": ["auto", "thin", "none"] - } - } - }, - - "webvtt": { - "title": "WebVTT: The Web Video Text Tracks Format", - "links": { - "tr": "webvtt1", - "dev": "webvtt", - "devtype": "github" - }, - "selectors": { - "::cue": { + "tests": ":blank" + }, + ":placeholder-shown": { + "links": { + "tr": "#placeholder", + "dev": "#placeholder" + }, + "tests": ":placeholder-shown" + }, + ":default": { "links": { - "tr": "#the-cue-pseudo-element", - "dev": "#the-cue-pseudo-element" + "tr": "#the-default-pseudo", + "dev": "#the-default-pseudo" }, - "tests": ["::cue"] + "tests": ":default" }, - "::cue()": { + ":valid": { "links": { - "tr": "#the-cue-pseudo-element", - "dev": "#the-cue-pseudo-element" + "tr": "#validity-pseudos", + "dev": "#validity-pseudos" }, - "tests": ["::cue(span)"] + "tests": ":valid" }, - "::cue-region": { + ":invalid": { "links": { - "tr": "#the-cue-region-pseudo-element", - "dev": "#the-cue-region-pseudo-element" + "tr": "#validity-pseudos", + "dev": "#validity-pseudos" }, - "tests": ["::cue-region"] + "tests": ":invalid" }, - "::cue-region()": { + ":in-range": { "links": { - "tr": "#the-cue-region-pseudo-element", - "dev": "#the-cue-region-pseudo-element" + "tr": "#range-pseudos", + "dev": "#range-pseudos" }, - "tests": ['::cue-region(span)'] - } - } - }, - - "css-paint-api-1": { - "title": "CSS Painting API Level 1", - "links": { - "tr": "css-paint-api-1", - "dev": "css-paint-api-1", - "devtype": "houdini" - }, - "values": { - "properties": [ - "background-image", - "list-style-image", - "border-image", - "cursor", - "content" - ], - "paint()": { + "tests": ":in-range" + }, + ":out-of-range": { "links": { - "tr": "#paint-notation", - "dev": "#paint-notation" + "tr": "#range-pseudos", + "dev": "#range-pseudos" }, - "tests": [ - "paint(company-logo)", "paint(chat-bubble, blue)", "paint(failing-argument-syntax, 1px, 2px)", "paint(arc, purple, 0.4turn, 0.8turn, 40px, 15px)" - ] - } - } - }, - - "css-layout-api-1": { - "title": "CSS Layout API Level 1", - "links": { - "tr": "css-layout-api-1", - "dev": "css-layout-api-1", - "devtype": "houdini" - }, - "properties": { - "display": { + "tests": ":out-of-range" + }, + ":user-invalid": { "links": { - "tr": "#layout-api-containers", - "dev": "#layout-api-containers" + "tr": "#user-invalid-pseudo", + "dev": "#user-invalid-pseudo" }, - "tests": "layout(foo)" - } - } - }, - - "css-shadow-parts-1": { - "title": "CSS Shadow Parts", - "links": { - "tr": "css-shadow-parts-1", - "dev": "css-shadow-parts-1" - }, - "selectors": { - "::part()": { + "tests": ":user-invalid" + }, + ":required": { "links": { - "tr": "#part", - "dev": "#part" + "tr": "#opt-pseudos", + "dev": "#opt-pseudos" }, - "tests": ["::part(label)"] - } - } - }, - - "css-variables-1": { - "title": "CSS Custom Properties for Cascading Variables Module Level 1", - "links": { - "tr": "css-variables-1", - "dev": "css-variables-1" - }, - "declaration": { - "--*": { + "tests": ":required" + }, + ":optional": { "links": { - "tr": "#defining-variables", - "dev": "#defining-variables" + "tr": "#opt-pseudos", + "dev": "#opt-pseudos" }, - "tests": ["--foo: 2px"] + "tests": ":optional" }, - "var(--*)": { + ":read-only": { "links": { - "tr": "#using-variables", - "dev": "#using-variables", - "mdn": "--*" + "tr": "#rw-pseudos", + "dev": "#rw-pseudos" }, - "tests": [ - "width: var(--foo)", "width: var(--FOO)", "width: var(--foo, 4px)", - "color: rgba(255, 255, 255, var(--foo, .2) )" - ] - } - } - }, - - "fill-stroke-3": { - "title": "CSS Fill and Stroke Module Level 3", - "links": { - "tr": "fill-stroke-3", - "dev": "fill-stroke-3", - "devtype": "fxtf" - }, - "properties": { - "fill": { + "tests": ":read-only" + }, + ":read-write": { "links": { - "tr": "#fill-shorthand", - "dev": "#fill-shorthand" + "tr": "#rw-pseudos", + "dev": "#rw-pseudos" }, - "tests": [ - "url(foo.png), url(bar.svg)", - "top left / 50% 60%", - "border-box", - "border-box padding-box", - "url(foo.png) bottom right / cover padding-box content-box" - ] + "tests": ":read-write" }, - "fill-rule": { + ":focus-visible": { "links": { - "tr": "#fill-rule", - "dev": "#fill-rule" + "tr": "#the-focus-visible-pseudo", + "dev": "#the-focus-visible-pseudo" }, - "tests": ["nonzero", "evenodd"] + "tests": ":focus-visible" }, - "fill-break": { + ":focus-within": { "links": { - "tr": "#fill-break", - "dev": "#fill-break" + "tr": "#the-focus-within-pseudo", + "dev": "#the-focus-within-pseudo" }, - "tests": ["bounding-box", "slice", "clone"] + "tests": ":focus-within" }, - "fill-color": { + ":current": { "links": { - "tr": "#fill-color", - "dev": "#fill-color" + "tr": "#the-current-pseudo", + "dev": "#the-current-pseudo" }, - "tests": "green" + "tests": ":current" }, - "fill-image": { + ":current()": { "links": { - "tr": "#fill-image", - "dev": "#fill-image" + "tr": "#the-current-pseudo", + "dev": "#the-current-pseudo" }, - "tests": [ - "url(foo.png)", - "image('sprites.png#xywh=10,30,60,20')", - "image('wavy.svg', 'wavy.png' , 'wavy.gif')", - "image('dark.png', black)", - "image(green)", - "linear-gradient(to bottom, yellow 0%, blue 100%)", - "child", - "child(2)" - ] + "tests": ":current(p, li, dt, dd)" }, - "fill-origin": { + ":past": { "links": { - "tr": "#fill-origin", - "dev": "#fill-origin" + "tr": "#the-past-pseudo", + "dev": "#the-past-pseudo" }, - "tests": ["match-parent", "fill-box", "stroke-box", "content-box", "padding-box", "border-box"] + "tests": ":past" }, - "fill-position": { + ":future": { "links": { - "tr": "#fill-position", - "dev": "#fill-position" + "tr": "#the-future-pseudo", + "dev": "#the-future-pseudo" }, - "tests": ["center", "left 50%", "bottom 10px right 20px", "bottom 10px right", "top right 10px"] + "tests": ":future" }, - "fill-size": { + ":scope": { "links": { - "tr": "#fill-size", - "dev": "#fill-size" + "tr": "#the-scope-pseudo", + "dev": "#the-scope-pseudo" }, - "tests": ["auto", "cover", "contain", "10px", "50%", "10px auto", "auto 10%", "50em 50%"] + "tests": ":scope" }, - "fill-repeat": { + ":any-link": { "links": { - "tr": "#fill-repeat", - "dev": "#fill-repeat" + "tr": "#the-any-link-pseudo", + "dev": "#the-any-link-pseudo" }, - "tests": ["repeat-x", "repeat-y"].concat(["repeat", "space", "round", "no-repeat"].times(1, 2)) + "tests": ":any-link" }, - "fill-opacity": { + ":local-link": { "links": { - "tr": "#fill-opacity", - "dev": "#fill-opacity" + "tr": "#the-local-link-pseudo", + "dev": "#the-local-link-pseudo" }, - "tests": ["0.5", "45%"] + "tests": ":local-link" }, - "stroke": { + ":target-within": { "links": { - "tr": "#stroke-shorthand", - "dev": "#stroke-shorthand" + "tr": "#the-target-within-pseudo", + "dev": "#the-target-within-pseudo" }, - "tests": [ - "url(foo.png), url(bar.svg)", - "top left / 50% 60%", - "border-box", - "border-box padding-box", - "url(foo.png) bottom right / cover padding-box content-box" - ] + "tests": ":target-within" }, - "stroke-width": { + ":lang()": { "links": { - "tr": "#stroke-width", - "dev": "#stroke-width" + "tr": "#the-lang-pseudo", + "dev": "#the-lang-pseudo" }, - "tests": ["0", "1px", "25%"] + "tests": [":lang(zh, \"*-hant\")"] }, - "stroke-align": { + ":not()": { "links": { - "tr": "#stroke-align", - "dev": "#stroke-align" + "tr": "#negation", + "dev": "#negation" }, - "tests": ["center", "inset", "outset "] + "tests": [":not(em, #foo)"] }, - "stroke-linecap": { + ":where()": { "links": { - "tr": "#stroke-linecap", - "dev": "#stroke-linecap" + "tr": "#zero-matches", + "dev": "#zero-matches" }, - "tests": ["butt", "round", "square "] + "tests": [":where(em, #foo)", ":where(:not(:hover))"] }, - "stroke-linejoin": { + ":is()": { "links": { - "tr": "#stroke-linejoin", - "dev": "#stroke-linejoin" + "tr": "#matches", + "dev": "#matches" }, - "tests": [ - "crop", "arcs", "miter", "bevel", "round", "fallback", - "crop bevel", "arcs round", "miter fallback" - ] + "tests": [":is(em, #foo)", ":is(:not(:hover))"] }, - "stroke-miterlimit": { + ":has()": { "links": { - "tr": "#stroke-miterlimit", - "dev": "#stroke-miterlimit" + "tr": "#relational", + "dev": "#relational" }, - "tests": "4" + "tests": [ + "a:has(> img)", + "dt:has(+ dt)", + "section:not(:has(h1, h2, h3, h4, h5, h6))", + "section:has(:not(h1, h2, h3, h4, h5, h6))" + ] }, - "stroke-break": { + ":defined": { "links": { - "tr": "#stroke-break", - "dev": "#stroke-break" + "tr": "#the-defined-pseudo", + "dev": "the-defined-pseudo" }, - "tests": ["bounding-box", "slice", "clone "] + "tests": [":defined"] }, - "stroke-dasharray": { + ":nth-child()": { "links": { - "tr": "#stroke-dasharray", - "dev": "#stroke-dasharray" + "tr": "#the-nth-child-pseudo", + "dev": "#the-nth-child-pseudo" }, - "tests": ["none", "0", "4px", "4px 12%", "4px 12% 3em", "4px 12% 3em 5px", "4px 12% 3em 5px 10%"] + "tests": [":nth-child(-n+3 of li.important)", ":nth-child(even of :not([hidden])"] }, - "stroke-dashoffset": { + "||": { "links": { - "tr": "#stroke-dashoffset", - "dev": "#stroke-dashoffset" + "tr": "#the-column-combinator", + "dev": "#the-column-combinator" }, - "tests": ["0", "4px", "12%"] + "tests": "foo || bar" }, - "stroke-dash-corner": { + ":nth-col()": { "links": { - "tr": "#corner-control", - "dev": "#corner-control" + "tr": "#the-nth-col-pseudo", + "dev": "#the-nth-col-pseudo" }, - "tests": ["none", "15px"] + "tests": [ + ":nth-col(even)", ":nth-col(odd)", + ":nth-col(n)", ":nth-col(-n)", ":nth-col(0n)", + ":nth-col(1)", ":nth-col(-1)", ":nth-col(0)", + ":nth-col(n+1)", ":nth-col(3n+1)", ":nth-col(3n + 1)", + ":nth-col(-n+1)", ":nth-col(-n-1)", ":nth-col(3n-1)" + ] }, - "stroke-dash-justify": { + ":nth-last-col()": { "links": { - "tr": "#corner-control", - "dev": "#corner-control" + "tr": "#the-nth-last-col-pseudo", + "dev": "#the-nth-last-col-pseudo" }, "tests": [ - "none", "stretch", "compress", "dashes", "gaps", - "stretch dashes", "compress gaps dashes", - "stretch gaps", "compress dashes gaps" + ":nth-last-col(even)", ":nth-last-col(odd)", + ":nth-last-col(n)", ":nth-last-col(-n)", ":nth-last-col(0n)", + ":nth-last-col(1)", ":nth-last-col(-1)", ":nth-last-col(0)", + ":nth-last-col(n+1)", ":nth-last-col(3n+1)", ":nth-last-col(3n + 1)", + ":nth-last-col(-n+1)", ":nth-last-col(-n-1)", ":nth-last-col(3n-1)" ] }, - "stroke-color": { + "[att^=val i]": { "links": { - "tr": "#stroke-color", - "dev": "#stroke-color" + "tr": "#attribute-case", + "dev": "#attribute-case", + "mdn": "Attribute_selectors" }, - "tests": "green" + "tests": ["[att^=val i]", "[att^=\"val\" i]", "[att^=val I]", "[att^=\"val\" I]"] }, - "stroke-image": { + "[att*=val i]": { "links": { - "tr": "#stroke-image", - "dev": "#stroke-image" + "tr": "#attribute-case", + "dev": "#attribute-case", + "mdn": "Attribute_selectors" }, - "tests": [ - "url(foo.png)", - "image('sprites.png#xywh=10,30,60,20')", - "image('wavy.svg', 'wavy.png' , 'wavy.gif')", - "image('dark.png', black)", - "image(green)", - "linear-gradient(to bottom, yellow 0%, blue 100%)", - "child", - "child(2)" - ] + "tests": ["[att*=val i]", "[att*=\"val\" i]", "[att*=val I]", "[att*=\"val\" I]"] }, - "stroke-origin": { + "[att$=val i]": { "links": { - "tr": "#stroke-origin", - "dev": "#stroke-origin" + "tr": "#attribute-case", + "dev": "#attribute-case", + "mdn": "Attribute_selectors" }, - "tests": ["match-parent", "fill-box", "stroke-box", "content-box", "padding-box", "border-box"] + "tests": ["[att$=val i]", "[att$=\"val\" i]", "[att$=val I]", "[att$=\"val\" I]"] }, - "stroke-position": { + "[att^=val s]": { "links": { - "tr": "#stroke-position", - "dev": "#stroke-position" + "tr": "#attribute-case", + "dev": "#attribute-case", + "mdn": "Attribute_selectors" }, - "tests": ["center", "left 50%", "bottom 10px right 20px", "bottom 10px right", "top right 10px"] + "tests": ["[att^=val s]", "[att^=\"val\" s]", "[att^=val S]", "[att^=\"val\" S]"] }, - "stroke-size": { + "[att*=val s]": { "links": { - "tr": "#stroke-size", - "dev": "#stroke-size" + "tr": "#attribute-case", + "dev": "#attribute-case", + "mdn": "Attribute_selectors" }, - "tests": ["auto", "cover", "contain", "10px", "50%", "10px auto", "auto 10%", "50em 50%"] + "tests": ["[att*=val s]", "[att*=\"val\" s]", "[att*=val S]", "[att*=\"val\" S]"] }, - "stroke-repeat": { + "[att$=val s]": { "links": { - "tr": "#stroke-repeat", - "dev": "#stroke-repeat" + "tr": "#attribute-case", + "dev": "#attribute-case", + "mdn": "Attribute_selectors" }, - "tests": ["repeat-x", "repeat-y"].concat(["repeat", "space", "round", "no-repeat"].times(1, 2)) - }, - "stroke-opacity": { + "tests": ["[att$=val s]", "[att$=\"val\" s]", "[att$=val S]", "[att$=\"val\" S]"] + } + } + }, + + "svg2-coords": { + "title": "SVG 2 Coordinate Systems, Transformations and Units", + "links": { + "tr": "svg2/coords.html", + "dev": "svg2-draft/coords.html", + "devtype": "svgwg" + }, + "properties": { + "vector-effect": { "links": { - "tr": "#stroke-opacity", - "dev": "#stroke-opacity" + "tr": "#VectorEffects", + "dev": "#VectorEffects", + "mdnGroup": "SVG" }, - "tests": ["0.5", "45%"] + "tests": [ + "none", + "non-scaling-stroke", + "non-scaling-size", + "non-rotation", + "fixed-position", + "non-scaling-stroke non-scaling-stroke", + "non-scaling-stroke viewport", + "non-scaling-stroke screen", + ] } } }, @@ -6827,136 +6809,44 @@ window.Specs = { "ry": { "links": { "tr": "#RY", - "dev": "#RY", - "mdnGroup": "SVG" - }, - "tests": ["auto", "0", "1px", "25%"] - }, - "x": { - "links": { - "tr": "#X", - "dev": "#X", - "mdnGroup": "SVG" - }, - "tests": ["0", "1px", "-5px", "25%"] - }, - "y": { - "links": { - "tr": "#Y", - "dev": "#Y", - "mdnGroup": "SVG" - }, - "tests": ["0", "1px", "-5px", "25%"] - } - } - }, - - "svg2-coords": { - "title": "SVG 2 Coordinate Systems, Transformations and Units", - "links": { - "tr": "svg2/coords.html", - "dev": "svg2-draft/coords.html", - "devtype": "svgwg" - }, - "properties": { - "vector-effect": { - "links": { - "tr": "#VectorEffects", - "dev": "#VectorEffects", - "mdnGroup": "SVG" - }, - "tests": [ - "none", - "non-scaling-stroke", - "non-scaling-size", - "non-rotation", - "fixed-position", - "non-scaling-stroke non-scaling-stroke", - "non-scaling-stroke viewport", - "non-scaling-stroke screen", - ] - } - } - }, - - "svg2-paths": { - "title": "SVG 2 Paths", - "links": { - "tr": "svg2/paths.html", - "dev": "svg2-draft/paths.html", - "devtype": "svgwg" - }, - "properties": { - "d": { + "dev": "#RY", + "mdnGroup": "SVG" + }, + "tests": ["auto", "0", "1px", "25%"] + }, + "x": { "links": { - "tr": "#TheDProperty", - "dev": "#TheDProperty", + "tr": "#X", + "dev": "#X", "mdnGroup": "SVG" }, - "tests": ["none", "'M 20 20 H 80 V 30'"] + "tests": ["0", "1px", "-5px", "25%"] + }, + "y": { + "links": { + "tr": "#Y", + "dev": "#Y", + "mdnGroup": "SVG" + }, + "tests": ["0", "1px", "-5px", "25%"] } } }, - "svg2-text": { - "title": "SVG 2 Text", + "svg2-interact": { + "title": "SVG 2 Scripting and Interactivity", "links": { - "tr": "svg2/text.html", - "dev": "svg2-draft/text.html", + "tr": "svg2/interact.html", + "dev": "svg2-draft/interact.html", "devtype": "svgwg" }, "properties": { - "shape-subtract": { - "links": { - "tr": "#TextShapeSubtract", - "dev": "#TextShapeSubtract" - }, - "tests": [ - "none", - "url('#shape')", - "inset(50%)", - "circle()", - "ellipse()", - "polygon(0 10px, 30px 0)", - "path('M 20 20 H 80 V 30')", - "url('#clip') circle()" - ] - }, - "text-anchor": { - "links": { - "tr": "#TextAnchoringProperties", - "dev": "#TextAnchoringProperties", - "mdnGroup": "SVG" - }, - "tests": ["start", "middle", "end"] - }, - "text-decoration-fill": { - "links": { - "tr": "#TextDecorationFillStroke" - }, - "tests": [ - "none", - "green", - "url(#pattern)", - "url(#pattern) none", - "url(#pattern) green", - "context-fill", - "context-stroke" - ] - }, - "text-decoration-stroke": { + "pointer-events": { "links": { - "tr": "#TextDecorationFillStroke" + "tr": "#PointerEventsProp", + "dev": "#PointerEventsProp" }, - "tests": [ - "none", - "green", - "url(#pattern)", - "url(#pattern) none", - "url(#pattern) green", - "context-fill", - "context-stroke" - ] + "tests": ["auto", "bounding-box", "visiblePainted", "visibleFill", "visibleStroke", "visible", "painted", "fill", "stroke", "all", "none"] } } }, @@ -7039,6 +6929,25 @@ window.Specs = { } }, + "svg2-paths": { + "title": "SVG 2 Paths", + "links": { + "tr": "svg2/paths.html", + "dev": "svg2-draft/paths.html", + "devtype": "svgwg" + }, + "properties": { + "d": { + "links": { + "tr": "#TheDProperty", + "dev": "#TheDProperty", + "mdnGroup": "SVG" + }, + "tests": ["none", "'M 20 20 H 80 V 30'"] + } + } + }, + "svg2-pservers": { "title": "SVG 2 Paint Servers: Gradients and Patterns", "links": { @@ -7064,135 +6973,105 @@ window.Specs = { } }, - "svg2-interact": { - "title": "SVG 2 Scripting and Interactivity", + "svg2-text": { + "title": "SVG 2 Text", "links": { - "tr": "svg2/interact.html", - "dev": "svg2-draft/interact.html", + "tr": "svg2/text.html", + "dev": "svg2-draft/text.html", "devtype": "svgwg" }, "properties": { - "pointer-events": { - "links": { - "tr": "#PointerEventsProp", - "dev": "#PointerEventsProp" - }, - "tests": ["auto", "bounding-box", "visiblePainted", "visibleFill", "visibleStroke", "visible", "painted", "fill", "stroke", "all", "none"] - } - } - }, - - "css-rhythmic-1": { - "title": "CSS Rhythmic Sizing", - "links": { - "tr": "css-rhythm-1", - "dev": "css-rhythm-1" - }, - "properties": { - "line-height-step": { - "links": { - "tr": "#line-height-step", - "dev": "#line-height-step" - }, - "tests": ["none", "30px", "2em"] - }, - "block-step-size": { - "links": { - "tr": "#block-step-size", - "dev": "#block-step-size" - }, - "tests": ["none", "30px", "2em"] - }, - "block-step-insert": { + "shape-subtract": { "links": { - "tr": "#block-step-insert", - "dev": "#block-step-insert" + "tr": "#TextShapeSubtract", + "dev": "#TextShapeSubtract" }, - "tests": ["margin", "padding"] + "tests": [ + "none", + "url('#shape')", + "inset(50%)", + "circle()", + "ellipse()", + "polygon(0 10px, 30px 0)", + "path('M 20 20 H 80 V 30')", + "url('#clip') circle()" + ] }, - "block-step-align": { + "text-anchor": { "links": { - "tr": "#block-step-align", - "dev": "#block-step-align" + "tr": "#TextAnchoringProperties", + "dev": "#TextAnchoringProperties", + "mdnGroup": "SVG" }, - "tests": ["auto", "center", "start", "end"] + "tests": ["start", "middle", "end"] }, - "block-step-round": { + "text-decoration-fill": { "links": { - "tr": "#block-step-round", - "dev": "#block-step-round" + "tr": "#TextDecorationFillStroke" }, - "tests": ["up", "down", "nearest"] + "tests": [ + "none", + "green", + "url(#pattern)", + "url(#pattern) none", + "url(#pattern) green", + "context-fill", + "context-stroke" + ] }, - "block-step": { + "text-decoration-stroke": { "links": { - "tr": "#block-step", - "dev": "#block-step" + "tr": "#TextDecorationFillStroke" }, "tests": [ "none", - "padding", - "end", - "down", - "30px margin", - "30px padding center", - "2em padding start nearest" + "green", + "url(#pattern)", + "url(#pattern) none", + "url(#pattern) green", + "context-fill", + "context-stroke" ] } } }, - "mathml-core": { - "title": "MathML Core", + "webvtt": { + "title": "WebVTT: The Web Video Text Tracks Format", "links": { - "dev": "mathml-core/#css-extensions-for-math-layout", - "devtype": "math" + "tr": "webvtt1", + "dev": "webvtt", + "devtype": "github" }, - "properties": { - "display": { - "links": { - "dev": "new-display-math-value" - }, - "tests": [ - "math", "block math", "inline math" - ] - }, - "text-transform": { - "links": { - "dev": "#new-text-transform-values" - }, - "tests": [ - "math-auto", "math-bold", "math-italic", "math-bold-italic", "math-double-struck", "math-bold-fraktur", - "math-script", "math-bold-script", "math-fraktur", "math-sans-serif", "math-bold-sans-serif", - "math-sans-serif-italic", "math-sans-serif-bold-italic", "math-monospace", "math-initial", - "math-tailed", "math-looped", "math-stretched" - ] - }, - "font-size": { + "selectors": { + "::cue": { "links": { - "dev": "#the-math-script-level-property" + "tr": "#the-cue-pseudo-element", + "dev": "#the-cue-pseudo-element" }, - "tests": ["math"] + "tests": ["::cue"] }, - "math-style": { + "::cue()": { "links": { - "dev": "#the-math-style-property" + "tr": "#the-cue-pseudo-element", + "dev": "#the-cue-pseudo-element" }, - "tests": ["normal", "compact"] + "tests": ["::cue(span)"] }, - "math-shift": { + "::cue-region": { "links": { - "dev": "#the-math-shift" + "tr": "#the-cue-region-pseudo-element", + "dev": "#the-cue-region-pseudo-element" }, - "tests": ["normal", "compact"] + "tests": ["::cue-region"] }, - "math-depth": { + "::cue-region()": { "links": { - "dev": "#the-math-script-level-property" + "tr": "#the-cue-region-pseudo-element", + "dev": "#the-cue-region-pseudo-element" }, - "tests": ["auto-add", "add(0)", "add(1)", "0", "1"] + "tests": ['::cue-region(span)'] } } } - }; From c587331e7555147224441607db3e8b662520a1b1 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Sat, 1 Jan 2022 01:08:10 +0100 Subject: [PATCH 350/668] Added Animations 2 --- tests.js | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/tests.js b/tests.js index eb66c24d..266267bc 100644 --- a/tests.js +++ b/tests.js @@ -224,6 +224,37 @@ window.Specs = { } }, + "css-animations-2": { + "title": "CSS Animations Level 2", + "links": { + "tr": "css-animations-2", + "dev": "css-animations-2" + }, + "properties": { + "animation-composition": { + "links": { + "tr": "#animation-composition", + "dev": "#animation-composition" + }, + "tests": ["replace", "add", "accumulate", "replace, add, accumulate"] + }, + "animation-timeline": { + "links": { + "tr": "#animation-timeline", + "dev": "#animation-timeline" + }, + "tests": ["auto", "none", "custom-timeline", "\"custom-timeline\"", "auto, none, custom-timeline, \"custom-timeline\""] + }, + "animation": { + "links": { + "tr": "#animation-timeline", + "dev": "#animation-timeline" + }, + "tests": ["1s both infinite auto"] + } + } + }, + "css-backgrounds-3": { "title": "CSS Backgrounds and Borders Module Level 3", "links": { From ce7dd01bc86f6ee8e0bbfbf82db1c068f06cd7ef Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Sat, 1 Jan 2022 08:17:40 +0100 Subject: [PATCH 351/668] Added Motion 1 --- tests.js | 88 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) diff --git a/tests.js b/tests.js index 266267bc..0e858e8a 100644 --- a/tests.js +++ b/tests.js @@ -6209,6 +6209,94 @@ window.Specs = { } }, + "motion-1": { + "title": "Motion Path Module Level 1", + "links": { + "dev": "motion-1", + "tr": "motion-1", + "devtype": "fxtf" + }, + "properties": { + "offset-anchor": { + "links": { + "dev": "#offset-anchor-property", + "tr": "#offset-anchor-property" + }, + "tests": ["auto", "center", "top left", "10px 20px", "30% 40%"] + }, + "offset-distance": { + "links": { + "dev": "#offset-distance-property", + "tr": "#offset-distance-property" + }, + "tests": ["20px", "30%"] + }, + "offset-path": { + "links": { + "dev": "#offset-path-property", + "tr": "#offset-path-property" + }, + "tests": [ + "none", + "ray(45deg closest-side)", + "ray(45deg closest-corner)", + "ray(45deg farthest-side)", + "ray(45deg farthest-corner)", + "ray(45deg sides)", + "ray(45deg closest-side contain)", + "path(\"M 100 100 L 300 100 L 200 300 z\")", + "url(shape.svg)", + "circle(200px)", + "circle(200px at top left)", + "ellipse(200px 100px)", + "inset(30px)", + "polygon(0 0, 100% 100%, 0 100%)", + "circle(200px)", + "circle(200px) content-box", + "circle(200px) padding-box", + "circle(200px) border-box", + "circle(200px) fill-box", + "circle(200px) stroke-box", + "circle(200px) view-box", + ] + }, + "offset-position": { + "links": { + "dev": "#offset-position-property", + "tr": "#offset-position-property" + }, + "tests": ["auto", "center", "top left", "10px 20px", "30% 40%"] + }, + "offset-rotate": { + "links": { + "dev": "#offset-rotate-property", + "tr": "#offset-rotate-property" + }, + "tests": ["auto", "reverse", "90deg", "auto 90deg", "reverse 90deg"] + }, + "offset": { + "links": { + "dev": "#offset-shorthand", + "tr": "#offset-shorthand" + }, + "tests": [ + "none", + "ray(45deg closest-side)", + "path(\"M 100 100 L 300 100 L 200 300 z\")", + "url(shape.svg)", + "circle(200px)", + "center", + "top left circle(200px)", + "circle(200px) 20px", + "circle(200px) 10deg", + "top left circle(200px) 20px", + "top left circle(200px) 20px 10deg", + "circle(200px) / top left" + ] + } + } + }, + "pointerevents1": { "title": "Pointer Events Level 1", "links": { From 421fd283007bbbede80bf18d305e838e84979baf Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Sat, 1 Jan 2022 19:07:35 +0100 Subject: [PATCH 352/668] Added Fragmentation 4 --- tests.js | 41 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/tests.js b/tests.js index 0e858e8a..dd75353b 100644 --- a/tests.js +++ b/tests.js @@ -476,7 +476,7 @@ window.Specs = { "tr": "#break-within", "dev": "#break-within" }, - "tests": ["auto", "avoid", "avoid-page", "avoid-column", "avoid-region "] + "tests": ["auto", "avoid", "avoid-page", "avoid-column", "avoid-region"] }, "box-decoration-break": { "links": { @@ -502,6 +502,45 @@ window.Specs = { } }, + "css-break-4": { + "title": "CSS Fragmentation Module Level 4", + "links": { + "tr": "css-break-4", + "dev": "css-break-4" + }, + "values": { + "properties": [ + "break-before", + "break-after" + ], + "always": { + "links": { + "tr": "#valdef-break-before-always", + "dev": "#valdef-break-before-always", + "mdn": "break-before#values" + }, + "tests": "always" + }, + "all": { + "links": { + "tr": "#valdef-break-before-all", + "dev": "#valdef-break-before-all", + "mdn": "break-before#values" + }, + "tests": "all" + } + }, + "properties": { + "margin-break": { + "links": { + "tr": "#break-margins", + "dev": "#break-margins" + }, + "tests": ["auto", "keep", "discard"] + } + } + }, + "css-cascade-3": { "title": "CSS Cascading and Inheritance Level 3", "links": { From 731a252a65abd4ddc0d27930b22297080d4bc299 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Sat, 1 Jan 2022 21:17:55 +0100 Subject: [PATCH 353/668] Added Inline Layout 3 --- tests.js | 101 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 101 insertions(+) diff --git a/tests.js b/tests.js index dd75353b..69d4f93b 100644 --- a/tests.js +++ b/tests.js @@ -2477,6 +2477,107 @@ window.Specs = { } }, + "css-inline-3": { + "title": "CSS Inline Layout Module Level 3", + "links": { + "dev": "css-inline-3", + "tr": "css-inline-3", + }, + "properties": { + "alignment-baseline": { + "links": { + "dev": "#alignment-baseline-property", + "tr": "#alignment-baseline-property" + }, + "tests": [ + "baseline", "text-bottom", "alphabetic", "ideographic", "middle", + "central", "mathematical", "text-top" + ] + }, + "baseline-shift": { + "links": { + "dev": "#baseline-shift-property", + "tr": "#baseline-shift-property" + }, + "tests": ["5px", "10%", "sub", "super", "top", "center", "bottom"] + }, + "baseline-source": { + "links": { + "dev": "#baseline-source", + "tr": "#baseline-source" + }, + "tests": ["auto", "first", "last"] + }, + "dominant-baseline": { + "links": { + "dev": "#dominant-baseline-property", + "tr": "#dominant-baseline-property" + }, + "tests": [ + "auto", "text-bottom", "alphabetic", "ideographic", "middle", + "central", "mathematical", "hanging", "text-top" + ] + }, + "initial-letter": { + "links": { + "dev": "#sizing-drop-initials", + "tr": "#sizing-drop-initials" + }, + "tests": ["normal", "1.4 3", "1.4", "1.4 drop", "1.4 raise"] + }, + "initial-letter-align": { + "links": { + "dev": "#aligning-initial-letter", + "tr": "#aligning-initial-letter" + }, + "tests": [ + "border-box", "alphabetic", "ideographic", "hanging", "leading", + "border-box alphabetic" + ] + }, + "initial-letter-wrap": { + "links": { + "dev": "#initial-letter-wrapping", + "tr": "#initial-letter-wrapping" + }, + "tests": ["none", "first", "all", "grid", "30px", "10%"] + }, + "inline-sizing": { + "links": { + "dev": "#line-fill", + "tr": "#line-fill" + }, + "tests": ["normal", "stretch"] + }, + "leading-trim": { + "links": { + "dev": "#leading-trim", + "tr": "#leading-trim" + }, + "tests": ["normal", "start", "end", "both"] + }, + "text-edge": { + "links": { + "dev": "#text-edges", + "tr": "#text-edges" + }, + "tests": [ + "leading", "text", "cap", "ex", "ideographic", "ideographic-ink", + "text alphabetic", "cap ideographic-ink" + ] + }, + "vertical-align": { + "links": { + "dev": "#transverse-alignment", + "tr": "#transverse-alignment" + }, + "tests": [ + "first", "last", "first text-bottom", "last sub", "super text-bottom first" + ] + } + } + }, + "css-layout-api-1": { "title": "CSS Layout API Level 1", "links": { From 77786d29bc00bd5d76958901d7ce5507aa9d064b Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Sat, 1 Jan 2022 21:41:30 +0100 Subject: [PATCH 354/668] Added Multi-column Layout 2 --- tests.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/tests.js b/tests.js index 69d4f93b..c764cedb 100644 --- a/tests.js +++ b/tests.js @@ -3405,6 +3405,21 @@ window.Specs = { } }, + "css-multicol-2": { + "title": "CSS Multi-column Layout Module Level 2", + "links": { + "dev": "css-multicol-2" + }, + "properties": { + "column-span": { + "links": { + "dev": "#column-span" + }, + "tests": ["2", "auto"] + } + } + }, + "css-overflow-3": { "title": "CSS Overflow Module Level 3", "links": { From a084cdba33a55eb088999c6b2f54b292095d0a25 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Sat, 1 Jan 2022 22:36:02 +0100 Subject: [PATCH 355/668] Update counter-reset tests --- tests.js | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/tests.js b/tests.js index c764cedb..455c47ee 100644 --- a/tests.js +++ b/tests.js @@ -2679,7 +2679,21 @@ window.Specs = { "tr": "#counter-reset", "dev": "#counter-reset" }, - "tests": ["foo", "foo 1", "foo 1 bar", "foo 1 bar 2", "none"] + "tests": [ + "none", + "foo", + "foo 1", + "foo -3", + "foo 1 bar", + "foo 1 bar 2", + "list-item", + "list-item 1", + "list-item 1 bar 2", + "reversed(foo)", + "reversed(foo) -3", + "reversed(list-item)", + "reversed(foo1) 1 foo2 9 reversed(foo3) 4" + ] }, "counter-set": { "links": { From e054c5ba20eb9c0ecf6b80f44ec01b2788b1864f Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Sun, 2 Jan 2022 01:52:54 +0100 Subject: [PATCH 356/668] Removed -n-1 pseudo-class selector tests (#183) --- tests.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/tests.js b/tests.js index 455c47ee..bf0e009a 100644 --- a/tests.js +++ b/tests.js @@ -6626,7 +6626,7 @@ window.Specs = { ":nth-child(n)", ":nth-child(-n)", ":nth-child(0n)", ":nth-child(1)", ":nth-child(-1)", ":nth-child(0)", ":nth-child(n+1)", ":nth-child(3n+1)", ":nth-child(3n + 1)", - ":nth-child(-n+1)", ":nth-child(-n-1)", ":nth-child(3n-1)" + ":nth-child(-n+1)", ":nth-child(3n-1)" ] }, ":nth-last-child()": { @@ -6639,7 +6639,7 @@ window.Specs = { ":nth-last-child(n)", ":nth-last-child(-n)", ":nth-last-child(0n)", ":nth-last-child(1)", ":nth-last-child(-1)", ":nth-last-child(0)", ":nth-last-child(n+1)", ":nth-last-child(3n+1)", ":nth-last-child(3n + 1)", - ":nth-last-child(-n+1)", ":nth-last-child(-n-1)", ":nth-last-child(3n-1)" + ":nth-last-child(-n+1)", ":nth-last-child(3n-1)" ] }, ":nth-of-type()": { @@ -6652,7 +6652,7 @@ window.Specs = { ":nth-of-type(n)", ":nth-of-type(-n)", ":nth-of-type(0n)", ":nth-of-type(1)", ":nth-of-type(-1)", ":nth-of-type(0)", ":nth-of-type(n+1)", ":nth-of-type(3n+1)", ":nth-of-type(3n + 1)", - ":nth-of-type(-n+1)", ":nth-of-type(-n-1)", ":nth-of-type(3n-1)" + ":nth-of-type(-n+1)", ":nth-of-type(3n-1)" ] }, ":nth-last-of-type()": { @@ -6665,7 +6665,7 @@ window.Specs = { ":nth-last-of-type(n)", ":nth-last-of-type(-n)", ":nth-last-of-type(0n)", ":nth-last-of-type(1)", ":nth-last-of-type(-1)", ":nth-last-of-type(0)", ":nth-last-of-type(n+1)", ":nth-last-of-type(3n+1)", ":nth-last-of-type(3n + 1)", - ":nth-last-of-type(-n+1)", ":nth-last-of-type(-n-1)", ":nth-last-of-type(3n-1)" + ":nth-last-of-type(-n+1)", ":nth-last-of-type(3n-1)" ] }, ":last-child": { @@ -6959,7 +6959,7 @@ window.Specs = { ":nth-col(n)", ":nth-col(-n)", ":nth-col(0n)", ":nth-col(1)", ":nth-col(-1)", ":nth-col(0)", ":nth-col(n+1)", ":nth-col(3n+1)", ":nth-col(3n + 1)", - ":nth-col(-n+1)", ":nth-col(-n-1)", ":nth-col(3n-1)" + ":nth-col(-n+1)", ":nth-col(3n-1)" ] }, ":nth-last-col()": { @@ -6972,7 +6972,7 @@ window.Specs = { ":nth-last-col(n)", ":nth-last-col(-n)", ":nth-last-col(0n)", ":nth-last-col(1)", ":nth-last-col(-1)", ":nth-last-col(0)", ":nth-last-col(n+1)", ":nth-last-col(3n+1)", ":nth-last-col(3n + 1)", - ":nth-last-col(-n+1)", ":nth-last-col(-n-1)", ":nth-last-col(3n-1)" + ":nth-last-col(-n+1)", ":nth-last-col(3n-1)" ] }, "[att^=val i]": { From f1cdd8ade02706819678fae7956f7e3fb6f8ff7c Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Mon, 3 Jan 2022 21:14:17 +0100 Subject: [PATCH 357/668] Added Spatial Navigation 1 --- tests.js | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/tests.js b/tests.js index bf0e009a..b6fdc537 100644 --- a/tests.js +++ b/tests.js @@ -4451,6 +4451,37 @@ window.Specs = { } }, + "css-nav-1": { + "title": "CSS Spatial Navigation Level 1", + "links": { + "tr": "css-nav-1", + "dev": "css-nav-1" + }, + "properties": { + "spatial-navigation-action": { + "links": { + "tr": "#css-property-spatialnavigationaction", + "dev": "#css-property-spatialnavigationaction" + }, + "tests": ["auto", "focus", "scroll"] + }, + "spatial-navigation-contain": { + "links": { + "tr": "#container", + "dev": "#container" + }, + "tests": ["auto", "contain"] + }, + "spatial-navigation-function": { + "links": { + "tr": "#css-property-spatialnavigationfunction", + "dev": "#css-property-spatialnavigationfunction" + }, + "tests": ["normal", "grid"] + } + } + }, + "css-text-3": { "title": "CSS Text Module Level 3", "links": { From e3c20570698f16d770f6505c193742c25253105a Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Mon, 3 Jan 2022 21:57:40 +0100 Subject: [PATCH 358/668] Updated Positioned Layout 3 --- tests.js | 47 ++++++++++++++++++++++++++++++++++++----------- 1 file changed, 36 insertions(+), 11 deletions(-) diff --git a/tests.js b/tests.js index b6fdc537..fce2a747 100644 --- a/tests.js +++ b/tests.js @@ -3689,35 +3689,60 @@ window.Specs = { "properties": { "position": { "links": { - "tr": "#position", - "dev": "#position" + "tr": "#position-property", + "dev": "#position-property" }, "tests": ["sticky"] }, - "inset-before": { + "inset": { + "links": { + "tr": "#inset-shorthands", + "dev": "#inset-shorthands" + }, + "tests": ["auto", "10px", "50%", "10px 5%", "10px 5% 20px", "10px 5% 20px 10%"] + }, + "inset-block": { + "links": { + "tr": "#inset-shorthands", + "dev": "#inset-shorthands" + }, + "tests": ["auto", "10px", "50%", "10px 5%"] + }, + "inset-inline": { "links": { - "dev": "#logical-box-offsets-beaso" + "tr": "#inset-shorthands", + "dev": "#inset-shorthands" + }, + "tests": ["auto", "10px", "50%", "10px 5%"] + }, + "inset-block-start": { + "links": { + "tr": "#insets", + "dev": "#insets" }, "tests": ["auto", "10px", "50%"] }, - "inset-after": { + "inset-block-end": { "links": { - "dev": "#logical-box-offsets-beaso" + "tr": "#insets", + "dev": "#insets" }, "tests": ["auto", "10px", "50%"] }, - "inset-start": { + "inset-inline-start": { "links": { - "dev": "#logical-box-offsets-beaso" + "tr": "#insets", + "dev": "#insets" }, "tests": ["auto", "10px", "50%"] }, - "inset-end": { + "inset-inline-end": { "links": { - "dev": "#logical-box-offsets-beaso" + "tr": "#insets", + "dev": "#insets" }, "tests": ["auto", "10px", "50%"] - } + }, } }, From dfa6a3ed729a67e0189433befea02edada797291 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Mon, 3 Jan 2022 22:19:17 +0100 Subject: [PATCH 359/668] Sorted css-nav-1 alphabetically --- tests.js | 62 ++++++++++++++++++++++++++++---------------------------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/tests.js b/tests.js index fce2a747..48c0dab6 100644 --- a/tests.js +++ b/tests.js @@ -3434,6 +3434,37 @@ window.Specs = { } }, + "css-nav-1": { + "title": "CSS Spatial Navigation Level 1", + "links": { + "tr": "css-nav-1", + "dev": "css-nav-1" + }, + "properties": { + "spatial-navigation-action": { + "links": { + "tr": "#css-property-spatialnavigationaction", + "dev": "#css-property-spatialnavigationaction" + }, + "tests": ["auto", "focus", "scroll"] + }, + "spatial-navigation-contain": { + "links": { + "tr": "#container", + "dev": "#container" + }, + "tests": ["auto", "contain"] + }, + "spatial-navigation-function": { + "links": { + "tr": "#css-property-spatialnavigationfunction", + "dev": "#css-property-spatialnavigationfunction" + }, + "tests": ["normal", "grid"] + } + } + }, + "css-overflow-3": { "title": "CSS Overflow Module Level 3", "links": { @@ -4476,37 +4507,6 @@ window.Specs = { } }, - "css-nav-1": { - "title": "CSS Spatial Navigation Level 1", - "links": { - "tr": "css-nav-1", - "dev": "css-nav-1" - }, - "properties": { - "spatial-navigation-action": { - "links": { - "tr": "#css-property-spatialnavigationaction", - "dev": "#css-property-spatialnavigationaction" - }, - "tests": ["auto", "focus", "scroll"] - }, - "spatial-navigation-contain": { - "links": { - "tr": "#container", - "dev": "#container" - }, - "tests": ["auto", "contain"] - }, - "spatial-navigation-function": { - "links": { - "tr": "#css-property-spatialnavigationfunction", - "dev": "#css-property-spatialnavigationfunction" - }, - "tests": ["normal", "grid"] - } - } - }, - "css-text-3": { "title": "CSS Text Module Level 3", "links": { From 0c0ebcca100eb1c67faeac7c8fe7f02260cd5017 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Tue, 4 Jan 2022 22:08:15 +0100 Subject: [PATCH 360/668] Added Speech 1 --- tests.js | 164 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 164 insertions(+) diff --git a/tests.js b/tests.js index 48c0dab6..6b175313 100644 --- a/tests.js +++ b/tests.js @@ -4507,6 +4507,170 @@ window.Specs = { } }, + "css-speech-1": { + "title": "CSS Speech Module Level 1", + "links": { + "tr": "css-speech-1", + "dev": "css-speech-1" + }, + "properties": { + "cue": { + "links": { + "tr": "#cue-props-cue", + "dev": "#cue-props-cue" + }, + "tests": [ + "none", "url(beforeafter.wav)", "url(beforeafter.wav) +3dB", "url(beforeafter.wav) -3dB", + "url(before.wav) url(after.wav)", "url(before.wav) +3dB url(after.wav) -3dB" + ] + }, + "cue-before": { + "links": { + "tr": "#cue-props-cue-before-after", + "dev": "#cue-props-cue-before-after" + }, + "tests": ["none", "url(after.wav)", "url(after.wav) +3dB", "url(after.wav) -3dB"] + }, + "cue-after": { + "links": { + "tr": "#cue-props-cue-before-after", + "dev": "#cue-props-cue-before-after" + }, + "tests": ["none", "url(after.wav)", "url(after.wav) +3dB", "url(after.wav) -3dB"] + }, + "pause": { + "links": { + "tr": "#pause-props-pause", + "dev": "#pause-props-pause" + }, + "tests": [ + "1s", "none", "x-weak", "weak", "medium", "strong", "x-strong", + "1s weak", "none 200ms" + ] + }, + "pause-before": { + "links": { + "tr": "#pause-props-pause-before-after", + "dev": "#pause-props-pause-before-after" + }, + "tests": ["1s", "none", "x-weak", "weak", "medium", "strong", "x-strong"] + }, + "pause-after": { + "links": { + "tr": "#pause-props-pause-before-after", + "dev": "#pause-props-pause-before-after" + }, + "tests": ["1s", "none", "x-weak", "weak", "medium", "strong", "x-strong"] + }, + "rest": { + "links": { + "tr": "#rest-props-rest", + "dev": "#rest-props-rest" + }, + "tests": [ + "1s", "none", "x-weak", "weak", "medium", "strong", "x-strong", + "1s weak", "none 200ms" + ] + }, + "rest-before": { + "links": { + "tr": "#rest-props-rest-before-after", + "dev": "#rest-props-rest-before-after" + }, + "tests": ["1s", "none", "x-weak", "weak", "medium", "strong", "x-strong"] + }, + "rest-after": { + "links": { + "tr": "#rest-props-rest-before-after", + "dev": "#rest-props-rest-before-after" + }, + "tests": ["1s", "none", "x-weak", "weak", "medium", "strong", "x-strong"] + }, + "speak": { + "links": { + "tr": "#speaking-props-speak", + "dev": "#speaking-props-speak" + }, + "tests": ["auto", "never", "always"] + }, + "speak-as": { + "links": { + "tr": "#speaking-props-speak-as", + "dev": "#speaking-props-speak-as" + }, + "tests": [ + "normal", "spell-out", "digits", "literal-punctuation", "no-punctuation", + "spell-out digits", "spell-out literal-punctuation", "digits no-punctuation" + ] + }, + "voice-balance": { + "links": { + "tr": "# Date: Tue, 4 Jan 2022 22:23:41 +0100 Subject: [PATCH 361/668] Fixed spec. links of Speech 1 --- tests.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests.js b/tests.js index 6b175313..3a95d040 100644 --- a/tests.js +++ b/tests.js @@ -4605,7 +4605,7 @@ window.Specs = { }, "voice-balance": { "links": { - "tr": "# Date: Wed, 5 Jan 2022 11:18:35 +0100 Subject: [PATCH 362/668] Added Scroll-linked Animations 1 --- tests.js | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/tests.js b/tests.js index 3a95d040..05a02f43 100644 --- a/tests.js +++ b/tests.js @@ -6718,6 +6718,58 @@ window.Specs = { } }, + "scroll-animations-1": { + "title": "Scroll-linked Animations", + "links": { + "tr": "scroll-animations-1", + "dev": "scroll-animations-1" + }, + "@rules": { + "@scroll-timeline": { + "links": { + "tr": "#scroll-timeline-at-rule", + "dev": "#scroll-timeline-at-rule" + }, + "tests": [ + "@scroll-timeline scroller { source: selector(#root); }" + ] + } + }, + "descriptors": { + "@scroll-timeline example/source": { + "links": { + "tr": "#scroll-timeline-descriptors", + "dev": "#scroll-timeline-descriptors" + }, + "tests": ["selector(#id)", "auto", "none"] + }, + "@scroll-timeline example/orientation": { + "links": { + "tr": "#scroll-timeline-descriptors", + "dev": "#scroll-timeline-descriptors" + }, + "required": { + '*': { "descriptor": "source: auto"} + }, + "tests": ["auto", "block", "inline", "horizontal", "vertical"] + }, + "@scroll-timeline example/offsets": { + "links": { + "tr": "#scroll-timeline-descriptors", + "dev": "#scroll-timeline-descriptors" + }, + "required": { + '*': { "descriptor": "source: auto"} + }, + "tests": [ + "none", "auto", "100px", "5%", "selector(#id)", "selector(#id) start", + "selector(#id) end", "selector(#id) 0.5", "selector(#id) start 0.5", + "selector(#id), 100px, auto" + ] + } + } + }, + "selectors-3": { "title": "Selectors Level 3", "links": { From 507d9ea5a404dc6e577138b672dc24bcb013cf77 Mon Sep 17 00:00:00 2001 From: Piers Wombwell Date: Fri, 7 Jan 2022 12:20:16 +0000 Subject: [PATCH 363/668] Avoid NaN score if values are tested again unsupported properties. --- csstest.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/csstest.js b/csstest.js index fbdb763c..9217e3b9 100644 --- a/csstest.js +++ b/csstest.js @@ -328,7 +328,7 @@ Test.groups = { } } - success = 1 - failed.length / properties.length; + success = properties.length == 0 ? 0 : 1 - failed.length / properties.length; return { success: success, From 3475cac148f01984a21ffe74de98ff679b905ca9 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Sat, 8 Jan 2022 23:13:15 +0100 Subject: [PATCH 364/668] Removed code related to Browser Scope --- csstest.js | 20 +------------------- 1 file changed, 1 insertion(+), 19 deletions(-) diff --git a/csstest.js b/csstest.js index fbdb763c..b4105d06 100644 --- a/csstest.js +++ b/csstest.js @@ -31,8 +31,7 @@ Score.prototype = { } }; -var mainScore = new Score(), - _bTestResults = {}; +var mainScore = new Score(); var devLinkFormat = function (params) { switch (params.devtype) { @@ -139,9 +138,6 @@ var Test = function (spec) { this.group(id, Test.groups[id]); } - // Add overall spec score to BrowserScope - _bTestResults[this.id] = mainScore.percent(); - // Display score for this spec $.create({ tag: 'span', @@ -305,9 +301,6 @@ Test.prototype = { thisSection.appendChild(details); this.score.update({ passed: passed, total: tests.length }); - - // Add to browserscope - _bTestResults[this.id + ' / ' + feature.replace(/[,=]/g, '')] = Math.round(100 * passed / tests.length); } } } @@ -494,17 +487,6 @@ onload = function () { // Display time taken ele('timeTaken').textContent = +new Date - timeBefore + 'ms'; - - // Send to Browserscope - var testKey = 'agt1YS1wcm9maWxlcnINCxIEVGVzdBidzawNDA'; - - _bTestResults['Overall'] = mainScore.percent(); - - $.create({ - tag: 'script', - src: '//www.browserscope.org/user/beacon/' + testKey, - inside: $('head') - }); } })(); From a6bcc8315a06ac96985afc1e0dc56594632df444 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Sun, 2 Jan 2022 23:33:38 +0100 Subject: [PATCH 365/668] Added status info to specifications --- tests.js | 342 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 342 insertions(+) diff --git a/tests.js b/tests.js index 05a02f43..0355491a 100644 --- a/tests.js +++ b/tests.js @@ -5,6 +5,9 @@ window.Specs = { "dev": "compat", "devtype": "whatwg" }, + "status": { + "stability": "stable" + }, "properties": { "touch-action": { "links": { @@ -22,6 +25,10 @@ window.Specs = { "dev": "compositing-1", "devtype": "fxtf" }, + "status": { + "stability": "stable", + "first-snapshot": 2015 + }, "properties": { "mix-blend-mode": { "links": { @@ -53,6 +60,9 @@ window.Specs = { "tr": "css-align-3", "dev": "css-align-3" }, + "status": { + "stability": "stable" + }, "properties": { "align-self": { "links": { @@ -140,6 +150,9 @@ window.Specs = { "tr": "css-animations-1", "dev": "css-animations-1" }, + "status": { + "stability": "stable" + }, "properties": { "animation-name": { "links": { @@ -230,6 +243,9 @@ window.Specs = { "tr": "css-animations-2", "dev": "css-animations-2" }, + "status": { + "stability": "experimental" + }, "properties": { "animation-composition": { "links": { @@ -261,6 +277,10 @@ window.Specs = { "tr": "css-backgrounds-3", "dev": "css-backgrounds-3" }, + "status": { + "stability": "stable", + "first-snapshot": 2015 + }, "properties": { "background-repeat": { "links": { @@ -417,6 +437,9 @@ window.Specs = { "links": { "dev": "css-backgrounds-4", }, + "status": { + "stability": "experimental" + }, "properties": { "background-position-x": { "links": { @@ -439,6 +462,9 @@ window.Specs = { "tr": "css-box-4", "dev": "css-box-4" }, + "status": { + "stability": "experimental" + }, "properties": { "margin-trim": { "links": { @@ -456,6 +482,9 @@ window.Specs = { "tr": "css-break-3", "dev": "css-break-3" }, + "status": { + "stability": "stable" + }, "properties": { "break-before": { "links": { @@ -508,6 +537,9 @@ window.Specs = { "tr": "css-break-4", "dev": "css-break-4" }, + "status": { + "stability": "experimental", + }, "values": { "properties": [ "break-before", @@ -547,6 +579,11 @@ window.Specs = { "tr": "css-cascade-3", "dev": "css-cascade-3" }, + "status": { + "stability": "stable", + "first-snapshot": 2015, + "last-snapshot": 2018 + }, "values": { "properties": [ "color", @@ -579,6 +616,10 @@ window.Specs = { "tr": "css-cascade-4", "dev": "css-cascade-4" }, + "status": { + "stability": "stable", + "first-snapshot": 2020 + }, "values": { "properties": [ "color", @@ -611,6 +652,9 @@ window.Specs = { "tr": "css-cascade-5", "dev": "css-cascade-5" }, + "status": { + "stability": "experimental" + }, "values": { "properties": [ "color", @@ -657,6 +701,10 @@ window.Specs = { "tr": "css-color-3", "dev": "css-color-3" }, + "status": { + "stability": "stable", + "first-snapshot": 2007 + }, "values": { "properties": [ "color", @@ -731,6 +779,9 @@ window.Specs = { "tr": "css-color-4", "dev": "css-color-4" }, + "status": { + "stability": "stable" + }, "values": { "properties": [ "color", @@ -882,6 +933,9 @@ window.Specs = { "links": { "dev": "css-color-5" }, + "status": { + "stability": "experimental" + }, "values": { "properties": [ "color", @@ -949,6 +1003,9 @@ window.Specs = { "tr": "css-color-adjust-1", "dev": "css-color-adjust-1" }, + "status": { + "stability": "stable" + }, "properties": { "color-adjust": { "links": { @@ -983,6 +1040,10 @@ window.Specs = { "tr": "css3-conditional", "dev": "css-conditional-3" }, + "status": { + "stability": "stable", + "first-snapshot": 2015 + }, "@rules": { "@supports": { "links": { @@ -1007,6 +1068,9 @@ window.Specs = { "tr": "css-conditional-4", "dev": "css-conditional-4" }, + "status": { + "stability": "experimental" + }, "@rules": { "@supports": { "links": { @@ -1028,6 +1092,9 @@ window.Specs = { "tr": "css-conditional-5", "dev": "css-conditional-5" }, + "status": { + "stability": "experimental" + }, "@rules": { "@supports": { "links": { @@ -1073,6 +1140,10 @@ window.Specs = { "tr": "css-contain-1", "dev": "css-contain-1" }, + "status": { + "stability": "stable", + "first-snapshot": 2020 + }, "properties": { "contain": { "links": { @@ -1093,6 +1164,9 @@ window.Specs = { "tr": "css-contain-2", "dev": "css-contain-2" }, + "status": { + "stability": "experimental" + }, "properties": { "contain": { "links": { @@ -1120,6 +1194,9 @@ window.Specs = { "tr": "css-contain-3", "dev": "css-contain-3" }, + "status": { + "stability": "experimental" + }, "@rules": { "@container": { "links": { @@ -1246,6 +1323,9 @@ window.Specs = { "tr": "css-content-3", "dev": "css-content-3" }, + "status": { + "stability": "experimental" + }, "properties": { "quotes": { "links": { @@ -1273,6 +1353,10 @@ window.Specs = { "tr": "css-counter-styles-3", "dev": "css-counter-styles-3" }, + "status": { + "stability": "stable", + "first-snapshot": 2021 + }, "@rules": { "@counter-style": { "links": { @@ -1419,6 +1503,9 @@ window.Specs = { "tr": "css-display-3", "dev": "css-display-3" }, + "status": { + "stability": "stable" + }, "properties": { "display": { "links": { @@ -1445,6 +1532,10 @@ window.Specs = { "tr": "css-easing-1", "dev": "css-easing-1" }, + "status": { + "stability": "stable", + "first-snapshot": 2020 + }, "properties": { "transition-timing-function": { "links": { @@ -1461,6 +1552,9 @@ window.Specs = { "links": { "dev": "css-env-1" }, + "status": { + "stability": "experimental" + }, "values": { "properties": [ "width", @@ -1486,6 +1580,9 @@ window.Specs = { "tr": "css3-exclusions", "dev": "css-exclusions-1" }, + "status": { + "stability": "experimental" + }, "properties": { "wrap-flow": { "links": { @@ -1511,6 +1608,10 @@ window.Specs = { "dev": "css-flexbox-1", "mdn": "Glossary/Flexbox" }, + "status": { + "stability": "stable", + "first-snapshot": 2018 + }, "properties": { "align-content": { "links": { @@ -1626,6 +1727,10 @@ window.Specs = { "tr": "css-fonts-3", "dev": "css-fonts-3" }, + "status": { + "stability": "stable", + "first-snapshot": 2015 + }, "properties": { "font-stretch": { "links": { @@ -1807,6 +1912,9 @@ window.Specs = { "tr": "css-fonts-4", "dev": "css-fonts-4" }, + "status": { + "stability": "stable" + }, "properties": { "font-size": { "links": { @@ -1949,6 +2057,9 @@ window.Specs = { "links": { "dev": "css-fonts-5" }, + "status": { + "stability": "experimental" + }, "properties": { "font-size-adjust": { "links": { @@ -1980,6 +2091,9 @@ window.Specs = { "dev": "css-grid-1", "mdn": "Glossary/Grid" }, + "status": { + "stability": "stable" + }, "properties": { "display": { "links": { @@ -2153,6 +2267,9 @@ window.Specs = { "dev": "css-grid-2", "mdn": "Glossary/Grid" }, + "status": { + "stability": "stable" + }, "properties": { "grid-template-columns": { "links": { @@ -2192,6 +2309,9 @@ window.Specs = { "links": { "dev": "css-grid-3", }, + "status": { + "stability": "experimental" + }, "properties": { "grid-template-columns": { "links": { @@ -2247,6 +2367,9 @@ window.Specs = { "tr": "css-highlight-api-1", "dev": "css-highlight-api-1" }, + "status": { + "stability": "experimental" + }, "selectors": { '::highlight()' : { "links": { @@ -2264,6 +2387,10 @@ window.Specs = { "tr": "css3-images", "dev": "css-images-3" }, + "status": { + "stability": "stable", + "first-snapshot": 2015 + }, "values": { "properties": [ "background-image", @@ -2362,6 +2489,9 @@ window.Specs = { "tr": "css-images-4", "dev": "css-images-4" }, + "status": { + "stability": "experimental" + }, "values": { "properties": [ "background-image", @@ -2483,6 +2613,9 @@ window.Specs = { "dev": "css-inline-3", "tr": "css-inline-3", }, + "status": { + "stability": "experimental" + }, "properties": { "alignment-baseline": { "links": { @@ -2585,6 +2718,9 @@ window.Specs = { "dev": "css-layout-api-1", "devtype": "houdini" }, + "status": { + "stability": "experimental" + }, "properties": { "display": { "links": { @@ -2602,6 +2738,9 @@ window.Specs = { "tr": "css-line-grid-1", "dev": "css-line-grid-1" }, + "status": { + "stability": "experimental" + }, "properties": { "box-snap": { "links": { @@ -2633,6 +2772,9 @@ window.Specs = { "tr": "css-lists-3", "dev": "css-lists-3" }, + "status": { + "stability": "stable" + }, "properties": { "list-style-type": { "links": { @@ -2733,6 +2875,9 @@ window.Specs = { "tr": "css-logical-1", "dev": "css-logical-1" }, + "status": { + "stability": "stable" + }, "properties": { "caption-side": { "links": { @@ -3192,6 +3337,9 @@ window.Specs = { "dev": "css-masking-1", "devtype": "fxtf" }, + "status": { + "stability": "stable" + }, "properties": { "clip-path": { "links": { @@ -3352,6 +3500,10 @@ window.Specs = { "tr": "css-multicol-1", "dev": "css-multicol-1" }, + "status": { + "stability": "stable", + "first-snapshot": 2015 + }, "properties": { "column-width": { "links": { @@ -3424,6 +3576,9 @@ window.Specs = { "links": { "dev": "css-multicol-2" }, + "status": { + "stability": "experimental" + }, "properties": { "column-span": { "links": { @@ -3440,6 +3595,9 @@ window.Specs = { "tr": "css-nav-1", "dev": "css-nav-1" }, + "status": { + "stability": "experimental" + }, "properties": { "spatial-navigation-action": { "links": { @@ -3471,6 +3629,9 @@ window.Specs = { "tr": "css-overflow-3", "dev": "css-overflow-3" }, + "status": { + "stability": "experimental" + }, "properties": { "line-clamp": { "links": { @@ -3548,6 +3709,9 @@ window.Specs = { "tr": "css-overflow-4", "dev": "css-overflow-4" }, + "status": { + "stability": "experimental" + }, "selectors": { "::nth-fragment()": { "links": { @@ -3571,6 +3735,9 @@ window.Specs = { "tr": "css-overscroll-1", "dev": "css-overscroll-1" }, + "status": { + "stability": "experimental" + }, "properties": { "overscroll-behavior": { "links": { @@ -3611,6 +3778,9 @@ window.Specs = { "tr": "css-page-3", "dev": "css-page-3" }, + "status": { + "stability": "experimental" + }, "properties": { "page": { "links": { @@ -3691,6 +3861,9 @@ window.Specs = { "dev": "css-paint-api-1", "devtype": "houdini" }, + "status": { + "stability": "experimental" + }, "values": { "properties": [ "background-image", @@ -3717,6 +3890,9 @@ window.Specs = { "tr": "css-position-3", "dev": "css-position-3" }, + "status": { + "stability": "stable" + }, "properties": { "position": { "links": { @@ -3783,6 +3959,9 @@ window.Specs = { "tr": "css-pseudo-4", "dev": "css-pseudo-4" }, + "status": { + "stability": "experimental" + }, "selectors": { "::selection": { "links": { @@ -3842,6 +4021,9 @@ window.Specs = { "tr": "css-regions-1", "dev": "css-regions-1" }, + "status": { + "stability": "experimental" + }, "properties": { "flow-from": { "links": { @@ -3873,6 +4055,9 @@ window.Specs = { "tr": "css-rhythm-1", "dev": "css-rhythm-1" }, + "status": { + "stability": "experimental" + }, "properties": { "line-height-step": { "links": { @@ -3933,6 +4118,9 @@ window.Specs = { "tr": "css-ruby-1", "dev": "css-ruby-1" }, + "status": { + "stability": "experimental" + }, "properties": { "display": { "links": { @@ -3971,6 +4159,9 @@ window.Specs = { "tr": "css-scoping-1", "dev": "css-scoping-1" }, + "status": { + "stability": "experimental" + }, "selectors": { ":host": { "links": { @@ -4010,6 +4201,9 @@ window.Specs = { "tr": "css-scroll-anchoring-1", "dev": "css-scroll-anchoring-1" }, + "status": { + "stability": "experimental" + }, "properties": { "overflow-anchor": { "links": { @@ -4026,6 +4220,9 @@ window.Specs = { "tr": "css-scroll-snap-1", "dev": "css-scroll-snap-1" }, + "status": { + "stability": "stable" + }, "properties": { "scroll-margin": { "links": { @@ -4214,6 +4411,9 @@ window.Specs = { "tr": "css-scrollbars-1", "dev": "css-scrollbars-1" }, + "status": { + "stability": "stable" + }, "properties": { "scrollbar-color": { "links": { @@ -4238,6 +4438,9 @@ window.Specs = { "tr": "css-shadow-parts-1", "dev": "css-shadow-parts-1" }, + "status": { + "stability": "experimental" + }, "selectors": { "::part()": { "links": { @@ -4255,6 +4458,9 @@ window.Specs = { "tr": "css-shapes-1", "dev": "css-shapes-1" }, + "status": { + "stability": "stable" + }, "properties": { "shape-outside": { "links": { @@ -4292,6 +4498,9 @@ window.Specs = { "links": { "dev": "css-shapes-2" }, + "status": { + "stability": "experimental" + }, "properties": { "shape-inside": { "links": { @@ -4318,6 +4527,9 @@ window.Specs = { "tr": "css-sizing-3", "dev": "css-sizing-3" }, + "status": { + "stability": "stable" + }, "properties": { "width": { "links": { @@ -4377,6 +4589,9 @@ window.Specs = { "tr": "css-sizing-4", "dev": "css-sizing-4" }, + "status": { + "stability": "experimental" + }, "properties": { "aspect-ratio": { "links": { @@ -4513,6 +4728,9 @@ window.Specs = { "tr": "css-speech-1", "dev": "css-speech-1" }, + "status": { + "stability": "stable" + }, "properties": { "cue": { "links": { @@ -4677,6 +4895,9 @@ window.Specs = { "tr": "css-text-3", "dev": "css-text-3" }, + "status": { + "stability": "stable" + }, "properties": { "text-transform": { "links": { @@ -4795,6 +5016,9 @@ window.Specs = { "tr": "css-text-4", "dev": "css-text-4" }, + "status": { + "stability": "experimental" + }, "properties": { "text-space-collapse": { "links": { @@ -4885,6 +5109,9 @@ window.Specs = { "tr": "css-text-decor-3", "dev": "css-text-decor-3" }, + "status": { + "stability": "stable" + }, "properties": { "text-decoration": { "links": { @@ -4965,6 +5192,9 @@ window.Specs = { "tr": "css-text-decor-4", "dev": "css-text-decor-4" }, + "status": { + "stability": "experimental" + }, "properties": { "text-decoration": { "links": { @@ -5016,6 +5246,10 @@ window.Specs = { "tr": "css-transforms-1", "dev": "css-transforms-1" }, + "status": { + "stability": "stable", + "first-snapshot": 2017 + }, "properties": { "transform": { "links": { @@ -5059,6 +5293,9 @@ window.Specs = { "tr": "css-transforms-2", "dev": "css-transforms-2" }, + "status": { + "stability": "stable" + }, "properties": { "translate": { "links": { @@ -5132,6 +5369,9 @@ window.Specs = { "tr": "css-transitions-1", "dev": "css-transitions-1" }, + "status": { + "stability": "stable" + }, "properties": { "transition-property": { "links": { @@ -5182,6 +5422,10 @@ window.Specs = { "tr": "css-ui-3", "dev": "css-ui-3" }, + "status": { + "stability": "stable", + "first-snapshot": 2015 + }, "properties": { "box-sizing": { "links": { @@ -5245,6 +5489,9 @@ window.Specs = { "tr": "css-ui-4", "dev": "css-ui-4" }, + "status": { + "stability": "experimental" + }, "properties": { "accent-color": { "links": { @@ -5336,6 +5583,10 @@ window.Specs = { "tr": "css-values-3", "dev": "css-values-3" }, + "status": { + "stability": "stable", + "first-snapshot": 2015 + }, "values": { "properties": [ "width", @@ -5434,6 +5685,9 @@ window.Specs = { "tr": "css-values-4", "dev": "css-values-4" }, + "status": { + "stability": "experimental" + }, "values": { "properties": [ "width", @@ -5727,6 +5981,10 @@ window.Specs = { "tr": "css-variables-1", "dev": "css-variables-1" }, + "status": { + "stability": "stable", + "first-snapshot": 2018 + }, "declaration": { "--*": { "links": { @@ -5755,6 +6013,9 @@ window.Specs = { "tr": "css-will-change-1", "dev": "css-will-change-1" }, + "status": { + "stability": "stable" + }, "properties": { "will-change": { "links": { @@ -5772,6 +6033,10 @@ window.Specs = { "tr": "css-writing-modes-3", "dev": "css-writing-modes-3" }, + "status": { + "stability": "stable", + "first-snapshot": 2017 + }, "properties": { "direction": { "links": { @@ -5817,6 +6082,9 @@ window.Specs = { "tr": "css-writing-modes-4", "dev": "css-writing-modes-4" }, + "status": { + "stability": "experimental" + }, "properties": { "writing-mode": { "links": { @@ -5841,6 +6109,9 @@ window.Specs = { "tr": "cssom-view-1", "dev": "cssom-view-1" }, + "status": { + "stability": "experimental" + }, "properties": { "scroll-behavior": { "links": { @@ -5859,6 +6130,9 @@ window.Specs = { "dev": "fill-stroke-3", "devtype": "fxtf" }, + "status": { + "stability": "experimental" + }, "properties": { "fill": { "links": { @@ -6103,6 +6377,9 @@ window.Specs = { "dev": "filter-effects-1", "devtype": "fxtf" }, + "status": { + "stability": "stable" + }, "properties": { "filter": { "links": { @@ -6163,6 +6440,9 @@ window.Specs = { "dev": "filter-effects-2", "devtype": "fxtf" }, + "status": { + "stability": "experimental" + }, "properties": { "backdrop-filter": { "links": { @@ -6194,6 +6474,9 @@ window.Specs = { "dev": "fullscreen", "devtype": "whatwg" }, + "status": { + "stability": "experimental" + }, "selectors": { "::backdrop": { "links": { @@ -6216,6 +6499,9 @@ window.Specs = { "dev": "html", "devtype": "whatwg" }, + "status": { + "stability": "experimental" + }, "selectors": { ":autofill": { "links": { @@ -6232,6 +6518,9 @@ window.Specs = { "dev": "mathml-core/#css-extensions-for-math-layout", "devtype": "math" }, + "status": { + "stability": "experimental" + }, "properties": { "display": { "links": { @@ -6288,6 +6577,10 @@ window.Specs = { "tr": "css3-mediaqueries", "dev": "mediaqueries-3" }, + "status": { + "stability": "stable", + "first-snapshot": 2010 + }, "Media queries": { "negation": { "links": { @@ -6422,6 +6715,9 @@ window.Specs = { "tr": "mediaqueries-4", "dev": "mediaqueries-4" }, + "status": { + "stability": "stable" + }, "Media queries": { "resolution": { "links": { @@ -6517,6 +6813,9 @@ window.Specs = { "tr": "mediaqueries-5", "dev": "mediaqueries-5" }, + "status": { + "stability": "experimental" + }, "Media queries": { "prefers-reduced-motion": { "links": { @@ -6605,6 +6904,9 @@ window.Specs = { "tr": "motion-1", "devtype": "fxtf" }, + "status": { + "stability": "experimental" + }, "properties": { "offset-anchor": { "links": { @@ -6691,6 +6993,9 @@ window.Specs = { "links": { "tr": "pointerevents1" }, + "status": { + "stability": "stable" + }, "properties": { "touch-action": { "links": { @@ -6708,6 +7013,9 @@ window.Specs = { "dev": "pointerevents", "devtype": "github" }, + "status": { + "stability": "experimental" + }, "properties": { "touch-action": { "links": { @@ -6724,6 +7032,9 @@ window.Specs = { "tr": "scroll-animations-1", "dev": "scroll-animations-1" }, + "status": { + "stability": "experimental" + }, "@rules": { "@scroll-timeline": { "links": { @@ -6777,6 +7088,10 @@ window.Specs = { "dev": "selectors-3", "mdn": "Glossary/CSS_Selector" }, + "status": { + "stability": "stable", + "first-snapshot": 2007 + }, "selectors": { "Sibling combinator": { "links": { @@ -6998,6 +7313,9 @@ window.Specs = { "tr": "selectors-4", "dev": "selectors-4" }, + "status": { + "stability": "experimental" + }, "selectors": { ":indeterminate": { "links": { @@ -7305,6 +7623,9 @@ window.Specs = { "dev": "svg2-draft/coords.html", "devtype": "svgwg" }, + "status": { + "stability": "experimental" + }, "properties": { "vector-effect": { "links": { @@ -7333,6 +7654,9 @@ window.Specs = { "dev": "svg2-draft/geometry.html", "devtype": "svgwg" }, + "status": { + "stability": "experimental" + }, "properties": { "cx": { "links": { @@ -7400,6 +7724,9 @@ window.Specs = { "dev": "svg2-draft/interact.html", "devtype": "svgwg" }, + "status": { + "stability": "experimental" + }, "properties": { "pointer-events": { "links": { @@ -7418,6 +7745,9 @@ window.Specs = { "dev": "svg2-draft/painting.html", "devtype": "svgwg" }, + "status": { + "stability": "experimental" + }, "properties": { "color-interpolation": { "links": { @@ -7496,6 +7826,9 @@ window.Specs = { "dev": "svg2-draft/paths.html", "devtype": "svgwg" }, + "status": { + "stability": "experimental" + }, "properties": { "d": { "links": { @@ -7515,6 +7848,9 @@ window.Specs = { "dev": "svg2-draft/pservers.html", "devtype": "svgwg" }, + "status": { + "stability": "experimental" + }, "properties": { "stop-color": { "links": { @@ -7540,6 +7876,9 @@ window.Specs = { "dev": "svg2-draft/text.html", "devtype": "svgwg" }, + "status": { + "stability": "experimental" + }, "properties": { "shape-subtract": { "links": { @@ -7603,6 +7942,9 @@ window.Specs = { "dev": "webvtt", "devtype": "github" }, + "status": { + "stability": "experimental" + }, "selectors": { "::cue": { "links": { From 1547e0fd30676edbc0845282e3045d8c23967dab Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Sun, 2 Jan 2022 23:34:04 +0100 Subject: [PATCH 366/668] Added filter for specifications --- csstest.js | 127 +++++++++++++++++++++++++++++++---------------------- filter.js | 7 +++ index.html | 20 +++++++++ 3 files changed, 101 insertions(+), 53 deletions(-) create mode 100644 filter.js diff --git a/csstest.js b/csstest.js index b4105d06..b6e0dd87 100644 --- a/csstest.js +++ b/csstest.js @@ -394,6 +394,78 @@ function passclass(info) { return classes[index]; } +function resetOutput() { + mainScore = new Score(); + + // Output current score + ele('score').textContent = ''; + ele('passedTests').textContent = ''; + ele('totalTests').textContent = ''; + ele('total').textContent = ''; + ele('specsTested').textContent = ''; + ele('all').textContent = ''; + + // Display time taken + ele('timeTaken').textContent = ''; +} + +function runTests(filter = '') { + let specs = []; + let timeBefore = +new Date; + let duration = 0; + + let removedWords = / *(?:\([^)]*\)|:.*|\b(?:CSS|Module)\b)( *)/g; + + for (let spec in Specs) { + // Filter list of specifications + if (filter === 'stable' && Specs[spec]?.status?.stability !== 'stable') { + continue; + } else if (Number(filter) > 0) { + if (Specs[spec]?.status?.['first-snapshot'] === undefined) { + continue; + } + + const snapshot = Number(filter); + if ( + Specs[spec].status['first-snapshot'] > snapshot || + Specs[spec]?.status?.['last-snapshot'] < snapshot + ) { + continue; + } + } + + specs.push({ + id: spec, + // Shorten the title by removing parentheticals, + // subheadings, CSS and Module words + title: Specs[spec].title.replace(removedWords, "$1").trim(), + tests: Specs[spec] + }); + } + + specs.sort(function (a, b) { + return a.title.localeCompare(b.title); + }); + + specs.forEach(spec => { + // Run tests + new Test(spec); + + // Count test duration + duration += +new Date - timeBefore; + timeBefore = +new Date; + + // Output current score + ele('score').textContent = mainScore + ''; + ele('passedTests').textContent = ~~mainScore.passedTests; + ele('totalTests').textContent = mainScore.totalTests; + ele('total').textContent = mainScore.total; + }); + + // Display time taken + ele('timeTaken').textContent = +new Date - timeBefore + 'ms'; +} + Array.prototype.and = function (arr2, separator) { separator = separator || ' '; @@ -440,57 +512,6 @@ Array.prototype.times = function (min, max, separator) { }; onload = function () { - var timeBefore = +new Date, - duration = 0, - specs = []; - - var removedWords = / *(?:\([^)]*\)|:.*|\b(?:CSS|Module)\b)( *)/g; - - for (var spec in Specs) { - specs.push({ - id: spec, - // Shorten the title by removing parentheticals, - // subheadings, CSS and Module words - title: Specs[spec].title.replace(removedWords, "$1").trim(), - tests: Specs[spec] - }); - } - - specs.sort(function (a, b) { - return a.title.localeCompare(b.title); - }); - - - (function () { - if (specs.length) { - // Get spec id - var spec = specs.shift(); - - // Run tests - var test = new Test(spec); - - // Count test duration - duration += +new Date - timeBefore; - timeBefore = +new Date; - - // Output current score - ele('score').textContent = mainScore + ''; - ele('passedTests').textContent = ~~mainScore.passedTests; - ele('totalTests').textContent = mainScore.totalTests; - ele('total').textContent = mainScore.total; - - // Schedule next test - setTimeout(arguments.callee, 50) - } - else { - // Done! - - // Display time taken - ele('timeTaken').textContent = +new Date - timeBefore + 'ms'; - } - })(); - - - - + ele('filter').value = localStorage.getItem('filter') || ''; + runTests(localStorage.getItem('filter') || ''); } diff --git a/filter.js b/filter.js new file mode 100644 index 00000000..3dceab0f --- /dev/null +++ b/filter.js @@ -0,0 +1,7 @@ +(function() { + ele('filter').addEventListener('change', evt => { + localStorage.setItem('filter', evt.target.value); + resetOutput(); + runTests(evt.target.value); + }); +})(); \ No newline at end of file diff --git a/index.html b/index.html index 930a7338..efd5e9aa 100644 --- a/index.html +++ b/index.html @@ -35,6 +35,25 @@

    Determined by passing tests out of +
    +

    Filter:

    +
    + +
    +
    +

    Specs tested:

      @@ -62,6 +81,7 @@

      Cheaters

      + From f8aa0f42bdcab7a04e16fdc54c571dc32fe3cd31 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Wed, 5 Jan 2022 22:32:50 +0100 Subject: [PATCH 367/668] Corrected test duration output Removed unused duration variable --- csstest.js | 5 ----- 1 file changed, 5 deletions(-) diff --git a/csstest.js b/csstest.js index b6e0dd87..dacb16ef 100644 --- a/csstest.js +++ b/csstest.js @@ -412,7 +412,6 @@ function resetOutput() { function runTests(filter = '') { let specs = []; let timeBefore = +new Date; - let duration = 0; let removedWords = / *(?:\([^)]*\)|:.*|\b(?:CSS|Module)\b)( *)/g; @@ -451,10 +450,6 @@ function runTests(filter = '') { // Run tests new Test(spec); - // Count test duration - duration += +new Date - timeBefore; - timeBefore = +new Date; - // Output current score ele('score').textContent = mainScore + ''; ele('passedTests').textContent = ~~mainScore.passedTests; From c1b83bd235c118baa60706d745954b5e20835f23 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Wed, 5 Jan 2022 22:33:40 +0100 Subject: [PATCH 368/668] Only set output info once --- csstest.js | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/csstest.js b/csstest.js index dacb16ef..cfacf794 100644 --- a/csstest.js +++ b/csstest.js @@ -446,16 +446,14 @@ function runTests(filter = '') { return a.title.localeCompare(b.title); }); - specs.forEach(spec => { - // Run tests - new Test(spec); - - // Output current score - ele('score').textContent = mainScore + ''; - ele('passedTests').textContent = ~~mainScore.passedTests; - ele('totalTests').textContent = mainScore.totalTests; - ele('total').textContent = mainScore.total; - }); + // Run tests + specs.forEach(spec => new Test(spec)); + + // Output score + ele('score').textContent = mainScore + ''; + ele('passedTests').textContent = ~~mainScore.passedTests; + ele('totalTests').textContent = mainScore.totalTests; + ele('total').textContent = mainScore.total; // Display time taken ele('timeTaken').textContent = +new Date - timeBefore + 'ms'; From ebb313a9395e2deb754f34483a20fab8cd66eca3 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Wed, 5 Jan 2022 22:40:18 +0100 Subject: [PATCH 369/668] Added a filter for experimental specifications --- csstest.js | 2 ++ index.html | 1 + 2 files changed, 3 insertions(+) diff --git a/csstest.js b/csstest.js index cfacf794..f13a49b5 100644 --- a/csstest.js +++ b/csstest.js @@ -419,6 +419,8 @@ function runTests(filter = '') { // Filter list of specifications if (filter === 'stable' && Specs[spec]?.status?.stability !== 'stable') { continue; + } else if (filter === 'experimental' && Specs[spec]?.status?.stability === 'stable') { + continue; } else if (Number(filter) > 0) { if (Specs[spec]?.status?.['first-snapshot'] === undefined) { continue; diff --git a/index.html b/index.html index efd5e9aa..832b478c 100644 --- a/index.html +++ b/index.html @@ -41,6 +41,7 @@

      Filter:

      - + + + diff --git a/tests.js b/tests.js index a81924eb..4e57cbe6 100644 --- a/tests.js +++ b/tests.js @@ -60,6 +60,11 @@ window.Specs = { "tr": "CSS2/box.html", "dev": "css2/" }, + "status": { + "stability": "stable", + "first-snapshot": 1998, + "last-snapshot": 1998 + }, "properties": { "border-color": { "links": { @@ -331,6 +336,11 @@ window.Specs = { "tr": "CSS2/colors.html", "dev": "css2/" }, + "status": { + "stability": "stable", + "first-snapshot": 1998, + "last-snapshot": 1998 + }, "properties": { "background-attachment": { "links": { @@ -402,6 +412,11 @@ window.Specs = { "tr": "CSS22/fonts.html", "dev": "css2/" }, + "status": { + "stability": "stable", + "first-snapshot": 1998, + "last-snapshot": 1998 + }, "properties": { "font-family": { "links": { @@ -468,6 +483,11 @@ window.Specs = { "tr": "CSS22/generate.html", "dev": "css2/" }, + "status": { + "stability": "stable", + "first-snapshot": 1998, + "last-snapshot": 1998 + }, "properties": { "content": { "links": { @@ -549,6 +569,11 @@ window.Specs = { "tr": "CSS22/page.html", "dev": "css2/" }, + "status": { + "stability": "stable", + "first-snapshot": 1998, + "last-snapshot": 1998 + }, "properties": { "orphans": { "links": { @@ -594,6 +619,11 @@ window.Specs = { "tr": "CSS22/tables.html", "dev": "css2/" }, + "status": { + "stability": "stable", + "first-snapshot": 1998, + "last-snapshot": 1998 + }, "properties": { "border-collapse": { "links": { @@ -639,6 +669,11 @@ window.Specs = { "tr": "CSS22/text.html", "dev": "css2/" }, + "status": { + "stability": "stable", + "first-snapshot": 1998, + "last-snapshot": 1998 + }, "properties": { "letter-spacing": { "links": { @@ -701,6 +736,11 @@ window.Specs = { "tr": "CSS22/ui.html", "dev": "css2/" }, + "status": { + "stability": "stable", + "first-snapshot": 1998, + "last-snapshot": 1998 + }, "properties": { "cursor": { "links": { @@ -760,6 +800,11 @@ window.Specs = { "tr": "CSS22/visudet.html", "dev": "css2/" }, + "status": { + "stability": "stable", + "first-snapshot": 1998, + "last-snapshot": 1998 + }, "properties": { "height": { "links": { @@ -829,6 +874,11 @@ window.Specs = { "tr": "CSS22/visufx.html", "dev": "css2/" }, + "status": { + "stability": "stable", + "first-snapshot": 1998, + "last-snapshot": 1998 + }, "properties": { "clip": { "links": { @@ -860,6 +910,11 @@ window.Specs = { "tr": "CSS22/visuren.html", "dev": "css2/" }, + "status": { + "stability": "stable", + "first-snapshot": 1998, + "last-snapshot": 1998 + }, "properties": { "bottom": { "links": { From 90dc17adb32fd7d6e05f764aada76f9798605c0e Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Fri, 14 Jan 2022 20:19:18 +0100 Subject: [PATCH 376/668] Adressed feedback from PolariTOON regarding CSS 2 --- tests.js | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/tests.js b/tests.js index 4e57cbe6..3434239b 100644 --- a/tests.js +++ b/tests.js @@ -57,7 +57,7 @@ window.Specs = { "css2-box": { "title": "CSS 2 Box Model", "links": { - "tr": "CSS2/box.html", + "tr": "CSS22/box.html", "dev": "css2/" }, "status": { @@ -68,7 +68,7 @@ window.Specs = { "properties": { "border-color": { "links": { - "tr": "#propdef-border-color", + "tr": "#border-color-properties", "dev": "#border-color-properties" }, "tests": [ @@ -83,7 +83,8 @@ window.Specs = { "dev": "#border-style-properties" }, "tests": [ - "none", "none dashed", "none dashed dotted", "none dashed dotted solid" + "none", "hidden", "none dashed", "none dashed dotted", + "none dashed dotted solid" ] }, "border-top": { @@ -333,7 +334,7 @@ window.Specs = { "css2-colors": { "title": "CSS 2 Colors and Backgrounds", "links": { - "tr": "CSS2/colors.html", + "tr": "CSS22/colors.html", "dev": "css2/" }, "status": { @@ -400,7 +401,7 @@ window.Specs = { }, "tests": [ "black", "#00f", "#000000", "rgb(255, 255, 255)", - "rgb(100%, 50%, 50%)", "transparent" + "rgb(100%, 50%, 50%)" ] } } @@ -761,7 +762,7 @@ window.Specs = { }, "tests": [ "black", "#00f", "#000000", "rgb(255, 255, 255)", - "rgb(100%, 50%, 50%)", "transparent" + "rgb(100%, 50%, 50%)", "invert" ] }, "outline-style": { @@ -787,7 +788,7 @@ window.Specs = { "dev": "#dynamic-outlines" }, "tests": [ - "black", "dotted", "5px", "#ff0000 dashed", "solid 0.2em", + "black", "invert", "dotted", "5px", "#ff0000 dashed", "solid 0.2em", "rgb(0, 0, 255) 0.1ex", "#0f0 double 0.8mm" ] } @@ -795,7 +796,7 @@ window.Specs = { }, "css2-visudet": { - "title": "CSS 2 Visual Formatting Model", + "title": "CSS 2 Visual Formatting Model Details", "links": { "tr": "CSS22/visudet.html", "dev": "css2/" @@ -1679,6 +1680,14 @@ window.Specs = { "mdn": "color_value" }, "tests": "currentColor" + }, + "transparent": { + "links": { + "tr": "#transparent", + "dev": "#transparent", + "mdn": "color_value" + }, + "tests": "transparent" } }, "properties": { From 93faed6e554a439ff7aec3cb9bb7a885f8d6ff7f Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Sat, 15 Jan 2022 20:34:31 +0100 Subject: [PATCH 377/668] Removed test for `invert` value for `outline-color` User agents are not required to support the `invert` value for `outline-color`. --- tests.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests.js b/tests.js index 3434239b..519ecf4e 100644 --- a/tests.js +++ b/tests.js @@ -762,7 +762,7 @@ window.Specs = { }, "tests": [ "black", "#00f", "#000000", "rgb(255, 255, 255)", - "rgb(100%, 50%, 50%)", "invert" + "rgb(100%, 50%, 50%)" ] }, "outline-style": { @@ -788,7 +788,7 @@ window.Specs = { "dev": "#dynamic-outlines" }, "tests": [ - "black", "invert", "dotted", "5px", "#ff0000 dashed", "solid 0.2em", + "black", "dotted", "5px", "#ff0000 dashed", "solid 0.2em", "rgb(0, 0, 255) 0.1ex", "#0f0 double 0.8mm" ] } From b86646d1283f69c6a9a993a79771021dfc8ef6e2 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Sat, 15 Jan 2022 21:44:50 +0100 Subject: [PATCH 378/668] Switched check for properties array length in values --- csstest.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/csstest.js b/csstest.js index 52486f2f..9e6f0bd8 100644 --- a/csstest.js +++ b/csstest.js @@ -321,7 +321,7 @@ Test.groups = { } } - success = properties.length == 0 ? 0 : 1 - failed.length / properties.length; + success = properties.length > 0 ? 1 - failed.length / properties.length : 0; return { success: success, From b20ce0f52192b305ff31ababd9630fc70d3c1fa5 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Sun, 16 Jan 2022 15:28:28 +0100 Subject: [PATCH 379/668] Added rest of CSS 2 features Two notes: Testing for `@import` fails in Firefox because it waits until the external stylesheet is imported to assign `style.sheet`. Testing for `!important` fails because the way property values are tested doesn't support testing for it. --- tests.js | 219 +++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 212 insertions(+), 7 deletions(-) diff --git a/tests.js b/tests.js index 519ecf4e..a0b12dea 100644 --- a/tests.js +++ b/tests.js @@ -331,6 +331,32 @@ window.Specs = { } }, + "css2-cascade": { + "title": "CSS 2 Assigning property values, Cascading, and Inheritance", + "links": { + "tr": "CSS22/cascade.html", + "dev": "css2/" + }, + "status": { + "stability": "stable", + "first-snapshot": 1998, + "last-snapshot": 1998 + }, + "values": { + "properties": [ + "color", + "border-color" + ], + "inherit": { + "links": { + "tr": "#value-def-inherit", + "dev": "#value-def-inherit" + }, + "tests": "inherit" + } + } + }, + "css2-colors": { "title": "CSS 2 Colors and Backgrounds", "links": { @@ -564,6 +590,31 @@ window.Specs = { } }, + + "css2-media": { + "title": "CSS 2 Media types", + "links": { + "tr": "CSS22/media.html", + "dev": "css2/" + }, + "status": { + "stability": "stable", + "first-snapshot": 1998, + "last-snapshot": 1998 + }, + "@rules": { + "@media": { + "links": { + "tr": "#at-media-rule", + "dev": "#at-media-rule" + }, + "tests": [ + "@media print { color: green; }", "@media print, screen { color: green; }" + ] + } + } + }, + "css2-page": { "title": "CSS 2 Paged Media", "links": { @@ -575,6 +626,21 @@ window.Specs = { "first-snapshot": 1998, "last-snapshot": 1998 }, + "@rules": { + "@page": { + "links": { + "tr": "#page-box", + "dev": "#page-box" + }, + "tests": [ + "@page { margin: 2cm; }", + "@page :left { margin: 2cm; }", + "@page :right { margin: 2cm; }", + "@page :first { margin: 2cm; }", + "@page :blank { margin: 2cm; }" + ] + } + }, "properties": { "orphans": { "links": { @@ -614,6 +680,150 @@ window.Specs = { } }, + "css2-selectors": { + "title": "CSS 2 Selectors", + "links": { + "tr": "CSS22/selectors.html", + "dev": "css2/" + }, + "status": { + "stability": "stable", + "first-snapshot": 1998, + "last-snapshot": 1998 + }, + "selectors": { + "Universal selector": { + "links": { + "tr": "#universal-selector", + "dev": "#universal-selector" + }, + "tests": "*" + }, + "Type selector": { + "links": { + "tr": "#type-selectors", + "dev": "#type-selectors" + }, + "tests": "h1" + }, + "Descendant selector": { + "links": { + "tr": "#descendant-selectors", + "dev": "#descendant-selectors" + }, + "tests": "div p" + }, + "Child selector": { + "links": { + "tr": "#child-selectors", + "dev": "#child-selectors" + }, + "tests": "div > p" + }, + "Adjacent sibling selector": { + "links": { + "tr": "#adjacent-selectors", + "dev": "#adjacent-selectors" + }, + "tests": "div > p" + }, + "Attribute selectors": { + "links": { + "tr": "#attribute-selectors", + "dev": "#attribute-selectors" + }, + "tests": [ + "[title]", "[title=example]", "[title=\"example\"]", "[rel~=copyright]", + "[rel~=\"copyright\"]", "[lang|=en]", "[lang|=\"en\"]" + ] + }, + "ID selector": { + "links": { + "tr": "#id-selectors", + "dev": "#id-selectors" + }, + "tests": "#id" + }, + ":first-child": { + "links": { + "tr": "#first-child", + "dev": "#first-child" + }, + "tests": ":first-child" + }, + ":link": { + "links": { + "tr": "#link-pseudo-classes", + "dev": "#link-pseudo-classes" + }, + "tests": ":link" + }, + ":visited": { + "links": { + "tr": "#link-pseudo-classes", + "dev": "#link-pseudo-classes" + }, + "tests": ":visited" + }, + ":hover": { + "links": { + "tr": "#dynamic-pseudo-classes", + "dev": "#dynamic-pseudo-classes" + }, + "tests": ":hover" + }, + ":active": { + "links": { + "tr": "#dynamic-pseudo-classes", + "dev": "#dynamic-pseudo-classes" + }, + "tests": ":active" + }, + ":focus": { + "links": { + "tr": "#dynamic-pseudo-classes", + "dev": "#dynamic-pseudo-classes" + }, + "tests": ":focus" + }, + ":lang()": { + "links": { + "tr": "#lang", + "dev": "#lang" + }, + "tests": [":lang(en)", ":lang(en-US)"] + }, + ":first-line": { + "links": { + "tr": "#first-line-pseudo", + "dev": "#first-line-pseudo" + }, + "tests": ":first-line" + }, + ":first-letter": { + "links": { + "tr": "#first-letter", + "dev": "#first-letter" + }, + "tests": ":first-letter" + }, + ":before": { + "links": { + "tr": "#before-and-after", + "dev": "#before-and-after" + }, + "tests": ":before" + }, + ":after": { + "links": { + "tr": "#before-and-after", + "dev": "#before-and-after" + }, + "tests": ":after" + } + } + }, + "css2-tables": { "title": "CSS 2 Tables", "links": { @@ -1541,7 +1751,7 @@ window.Specs = { "tr": "#all-shorthand", "dev": "#all-shorthand" }, - "tests": ["initial", "inherit", "unset"] + "tests": ["initial", "unset"] } } }, @@ -4725,12 +4935,7 @@ window.Specs = { "dev": "#at-page-rule" }, "tests": [ - "@page { margin: 2cm }", - "@page customName { margin: 2cm }", - "@page :left { margin: 2cm }", - "@page :right { margin: 2cm }", - "@page :first { margin: 2cm }", - "@page :blank { margin: 2cm }" + "@page customName { margin: 2cm; }" ] } }, From a33a5f8a57f653ac0bfce4c824bfdfb74dbe5ac3 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Thu, 20 Jan 2022 21:50:58 +0100 Subject: [PATCH 380/668] Added test for spread radius in text-shadow --- tests.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tests.js b/tests.js index 519ecf4e..9ad2ee1b 100644 --- a/tests.js +++ b/tests.js @@ -6164,6 +6164,13 @@ window.Specs = { "dev": "#text-decoration-width-property" }, "tests": ["auto", "from-font", "3px", "10%"] + }, + "text-shadow": { + "links": { + "tr": "#text-shadow-property", + "dev": "#text-shadow-property" + }, + "tests": ["1px 2px 3px 4px black"] } } }, From fa1d3035d23eb0b42c2f949741aa5fe4ed162dff Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Fri, 21 Jan 2022 21:46:07 +0100 Subject: [PATCH 381/668] Incorporated feedback regarding CSS 2 features --- tests.js | 56 +++++++++++++++++++++++++++++++++++++------------------- 1 file changed, 37 insertions(+), 19 deletions(-) diff --git a/tests.js b/tests.js index a0b12dea..de7590fa 100644 --- a/tests.js +++ b/tests.js @@ -587,6 +587,22 @@ window.Specs = { }, "tests": ["none", "\"»\" \"«\"", "'\"' '\"' \"'\" \"'\""] } + }, + "selectors": { + ":before": { + "links": { + "tr": "#before-after-content", + "dev": "#before-after-content" + }, + "tests": ":before" + }, + ":after": { + "links": { + "tr": "#before-after-content", + "dev": "#before-after-content" + }, + "tests": ":after" + } } }, @@ -609,7 +625,10 @@ window.Specs = { "dev": "#at-media-rule" }, "tests": [ - "@media print { color: green; }", "@media print, screen { color: green; }" + "@media all {\n p {\n color: green;\n }\n}", + "@media print {\n p {\n color: green;\n }\n}", + "@media screen {\n p {\n color: green;\n }\n}", + "@media print, screen {\n p {\n color: green;\n }\n}" ] } } @@ -634,10 +653,13 @@ window.Specs = { }, "tests": [ "@page { margin: 2cm; }", + "@page { margin-top: 2cm; }", + "@page { margin-right: 2cm; }", + "@page { margin-bottom: 2cm; }", + "@page { margin-left: 2cm; }", "@page :left { margin: 2cm; }", "@page :right { margin: 2cm; }", - "@page :first { margin: 2cm; }", - "@page :blank { margin: 2cm; }" + "@page :first { margin: 2cm; }" ] } }, @@ -683,7 +705,7 @@ window.Specs = { "css2-selectors": { "title": "CSS 2 Selectors", "links": { - "tr": "CSS22/selectors.html", + "tr": "CSS22/selector.html", "dev": "css2/" }, "status": { @@ -725,7 +747,7 @@ window.Specs = { "tr": "#adjacent-selectors", "dev": "#adjacent-selectors" }, - "tests": "div > p" + "tests": "div + p" }, "Attribute selectors": { "links": { @@ -737,6 +759,15 @@ window.Specs = { "[rel~=\"copyright\"]", "[lang|=en]", "[lang|=\"en\"]" ] }, + "Class selector": { + "links": { + "tr": "#class-html", + "dev": "#class-html" + }, + "tests": [ + ".class" + ] + }, "ID selector": { "links": { "tr": "#id-selectors", @@ -806,20 +837,6 @@ window.Specs = { "dev": "#first-letter" }, "tests": ":first-letter" - }, - ":before": { - "links": { - "tr": "#before-and-after", - "dev": "#before-and-after" - }, - "tests": ":before" - }, - ":after": { - "links": { - "tr": "#before-and-after", - "dev": "#before-and-after" - }, - "tests": ":after" } } }, @@ -4935,6 +4952,7 @@ window.Specs = { "dev": "#at-page-rule" }, "tests": [ + "@page :blank { margin: 2cm; }", "@page customName { margin: 2cm; }" ] } From f43d5e788bd19bf0a8c7b884e3f05d5cbfdd5fc7 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Mon, 24 Jan 2022 21:15:53 +0100 Subject: [PATCH 382/668] Moved @page descriptor tests out of tests for rule itself --- supports.js | 2 +- tests.js | 61 +++++++++++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 58 insertions(+), 5 deletions(-) diff --git a/supports.js b/supports.js index d123dab6..7dcd190b 100644 --- a/supports.js +++ b/supports.js @@ -142,7 +142,7 @@ window.matchMedia = window.matchMedia || (function (doc, undefined) { if (style.sheet.cssRules.length) { return { success: - style.sheet.cssRules[pos].style && style.sheet.cssRules[pos].style.length === 1 || + style.sheet.cssRules[pos].style && style.sheet.cssRules[pos].style.length >= 1 || !!style.sheet.cssRules[pos][camelCase(descriptor)] }; } else { diff --git a/tests.js b/tests.js index de7590fa..13dcc722 100644 --- a/tests.js +++ b/tests.js @@ -653,16 +653,69 @@ window.Specs = { }, "tests": [ "@page { margin: 2cm; }", - "@page { margin-top: 2cm; }", - "@page { margin-right: 2cm; }", - "@page { margin-bottom: 2cm; }", - "@page { margin-left: 2cm; }", "@page :left { margin: 2cm; }", "@page :right { margin: 2cm; }", "@page :first { margin: 2cm; }" ] } }, + "descriptors": { + "@page/margin": { + "links": { + "tr": "#page-box", + "dev": "#page-box" + }, + "tests": [ + "2cm", + "4%", + "auto" + ] + }, + "@page/margin-top": { + "links": { + "tr": "#page-box", + "dev": "#page-box" + }, + "tests": [ + "2cm", + "4%", + "auto" + ] + }, + "@page/margin-right": { + "links": { + "tr": "#page-box", + "dev": "#page-box" + }, + "tests": [ + "2cm", + "4%", + "auto" + ] + }, + "@page/margin-bottom": { + "links": { + "tr": "#page-box", + "dev": "#page-box" + }, + "tests": [ + "2cm", + "4%", + "auto" + ] + }, + "@page/margin-left": { + "links": { + "tr": "#page-box", + "dev": "#page-box" + }, + "tests": [ + "2cm", + "4%", + "auto" + ] + }, + }, "properties": { "orphans": { "links": { From 7d4bb44db55df59510427077c17b4fce45c7bb35 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Tue, 25 Jan 2022 23:08:21 +0100 Subject: [PATCH 383/668] Unified CSS formatting and removed unnecessary prefixes --- style.css | 426 +++++++++++++++++++++++++++--------------------------- 1 file changed, 216 insertions(+), 210 deletions(-) diff --git a/style.css b/style.css index 63e4938f..f0efca0d 100644 --- a/style.css +++ b/style.css @@ -18,84 +18,85 @@ a { text-decoration: none; } -h1, h2 { +h1, +h2 { margin: 1em 0 .5em; font-weight: normal; line-height: 1; } - body > section section section h1 { - font-size: 180%; - } - - section section section section h1 { - color: hsla(200, 10%, 20%, .5); - font-size: 120%; - font-weight: bold; - text-transform: capitalize; - } - - h1 > .score { - float: right; - font-weight: bold; - } - - .spec-link { - display: inline-block; - padding: .3em .4em; - margin: -.5em 0 -.5em .3em; - font-family: sans-serif; - font-size: 0.9rem; - background: hsl(200, 10%, 20%); - color: white; - border-radius: .3em; - vertical-align: middle; - text-shadow: 0 .1em .1em black; - } - - .spec-link:hover, - .spec-link:focus { - outline: none; - background: #f06; - } - - .w3c-link::before, - .mdn-link::before, - .whatwg-link::before { - content:''; - display: inline-block; - height: 16px; - width: 16px; - background: url("data:image/svg+xml, ") 0 0 / 16px 16px; - vertical-align: -3px; - margin-right: 3px; - opacity: .5; - } - - .mdn-link::before { - background-image: url("data:image/svg+xml, "); - } - - .whatwg-link::before { - background-image: url("data:image/svg+xml, "); - } - - details summary > .spec-link { - display: none; - vertical-align: inherit; - } - - details summary:hover > .spec-link, - details summary:focus-within > .spec-link { - display: inline-block; - } - - details summary > .spec-link::before { - height: 18px; - width: 18px; - background-size: 18px 18px; - vertical-align: -4px; - } +body > section section section h1 { + font-size: 180%; +} + +section section section section h1 { + color: hsla(200, 10%, 20%, .5); + font-size: 120%; + font-weight: bold; + text-transform: capitalize; +} + +h1 > .score { + float: right; + font-weight: bold; +} + +.spec-link { + display: inline-block; + padding: .3em .4em; + margin: -.5em 0 -.5em .3em; + font-family: sans-serif; + font-size: 0.9rem; + background: hsl(200, 10%, 20%); + color: white; + border-radius: .3em; + vertical-align: middle; + text-shadow: 0 .1em .1em black; +} + +.spec-link:hover, +.spec-link:focus { + outline: none; + background: #f06; +} + +.w3c-link::before, +.mdn-link::before, +.whatwg-link::before { + content:''; + display: inline-block; + height: 16px; + width: 16px; + background: url("data:image/svg+xml, ") 0 0 / 16px 16px; + vertical-align: -3px; + margin-right: 3px; + opacity: .5; +} + +.mdn-link::before { + background-image: url("data:image/svg+xml, "); +} + +.whatwg-link::before { + background-image: url("data:image/svg+xml, "); +} + +details summary > .spec-link { + display: none; + vertical-align: inherit; +} + +details summary:hover > .spec-link, +details summary:focus-within > .spec-link { + display: inline-block; +} + +details summary > .spec-link::before { + height: 18px; + width: 18px; + background-size: 18px 18px; + vertical-align: -4px; +} body > h1 { position: fixed; @@ -111,14 +112,6 @@ body > h1 { text-shadow: 0 .1em .1em black; z-index: 1; - -webkit-transform: rotate(-90deg) translateX(-100%); - -webkit-transform-origin: top left; - -moz-transform: rotate(-90deg) translateX(-100%); - -moz-transform-origin: top left; - -ms-transform: rotate(-90deg) translateX(-100%); - -ms-transform-origin: top left; - -o-transform: rotate(-90deg) translateX(-100%); - -o-transform-origin: top left; transform: rotate(-90deg) translateX(-100%); transform-origin: top left; } @@ -136,10 +129,6 @@ body > h1 { border-radius: 50%; box-shadow: 2px 2px 10px rgba(0,0,0,.5); - -webkit-transform: rotate(-15deg); - -moz-transform: rotate(-15deg); - -ms-transform: rotate(-15deg); - -o-transform: rotate(-15deg); transform: rotate(-15deg); } @@ -149,31 +138,32 @@ body > h1 { margin-right: 2em; } - #tests #hgroup { - text-align: center; - } +#tests #hgroup { + text-align: center; +} - #tests > #hgroup > h1 { - font-size: 250%; - } +#tests > #hgroup > h1 { + font-size: 250%; +} - #tests h1 > strong { - display: block; - margin-top: .1em; - font-size: 500%; - line-height: .7; - } +#tests h1 > strong { + display: block; + margin-top: .1em; + font-size: 500%; + line-height: .7; +} - #tests h2 { - font-size: 80%; - } +#tests h2 { + font-size: 80%; +} details { margin: .3em 0; font: 100% Monaco, Consolas, monospace; } -details summary, details li[class] { +details summary, +details li[class] { padding: .5em; background: gray; color: white; @@ -204,54 +194,54 @@ details li[class] { white-space: break-spaces; } - details li[class] small { - display: block; - opacity: .8; - } +details li[class] small { + display: block; + opacity: .8; +} details summary.pass, details li.pass, -#specsTested li.pass:before { +#specsTested li.pass::before { background-color: #490; } details summary.almost-pass, details li.almost-pass, -#specsTested li.almost-pass:before { +#specsTested li.almost-pass::before { background-color: #8c0; } details summary.slightly-buggy, details li.slightly-buggy, -#specsTested li.slightly-buggy:before { +#specsTested li.slightly-buggy::before { background-color: #bb0; } details summary.buggy, details li.buggy, -#specsTested li.buggy:before { +#specsTested li.buggy::before { background-color: #e80; } details summary.very-buggy, details li.very-buggy, -#specsTested li.very-buggy:before { +#specsTested li.very-buggy::before { background-color: #e40; } details summary.fail, details li.fail, -#specsTested li.fail:before { +#specsTested li.fail::before { background-color: #e20; } details summary.epic-fail, details li.epic-fail, -#specsTested li.epic-fail:before { +#specsTested li.epic-fail::before { background-color: #b00; } -details summary:before { +details summary::before { content: '▶'; display: inline-block; margin-right: .5em; @@ -259,7 +249,7 @@ details summary:before { opacity: .5; } -details[open] summary:before { +details[open] summary::before { content: '▼'; } @@ -278,39 +268,53 @@ details[open] summary:before { /* Emoticons */ -details summary:after, -details li[class]:after, -#specsTested li:after { +details summary::after, +details li[class]::after, +#specsTested li::after { opacity: 0.75; position: absolute; top: 0; } -details summary:after, -details li[class]:after { +details summary::after, +details li[class]::after { letter-spacing: -2px; line-height: 35px; right: 10px; } -#specsTested li:after { +#specsTested li::after { font: 83.3%/29px Monaco, Consolas, monospace; right: 0; } -.almost-pass:after { content: ':)'; } +.almost-pass::after { + content: ':)'; +} -.buggy:after { content: ':('; } +.buggy::after { + content: ':('; +} -.epic-fail:after { content: '›:('; } +.epic-fail::after { + content: '›:('; +} -.fail:after { content: ':′('; } +.fail::after { + content: ':′('; +} -.pass:after { content: ':D'; } +.pass::after { + content: ':D'; +} -.slightly-buggy:after { content: ':|'; } +.slightly-buggy::after { + content: ':|'; +} -.very-buggy:after { content: ':o'; } +.very-buggy::after { + content: ':o'; +} /* End emoticons */ @@ -318,56 +322,56 @@ aside { font-size: 85%; } - aside section { - margin-left: 66%; - } - - aside .caution p { - padding: 1em; - margin-left: 2em; - background: hsl(200, 10%, 20%); - color: white; - text-shadow: 0 -.1em .2em black; - } - - aside h1 { - font-size: 150%; - } - - aside ul { - margin: .5em 0; - padding: 0 0 0 2em; - } - - aside li { - list-style: none; - padding: .3em 0; - border-bottom: 2px dotted rgba(0,0,0,.25); - border-top: 2px dotted white; - } - - aside li:first-child { - border-top: none; - } - - aside li:last-child { - border-bottom: none; - } - - #specsTested li { - position: relative; - } - - #specsTested li:before { - content: ''; - display: inline-block; - width: 1.2em; - height: 1.2em; - margin-right: .5em; - vertical-align: -.2em; - border-radius: 50%; - box-shadow: 0 2px white; - } +aside section { + margin-left: 66%; +} + +aside .caution p { + padding: 1em; + margin-left: 2em; + background: hsl(200, 10%, 20%); + color: white; + text-shadow: 0 -.1em .2em black; +} + +aside h1 { + font-size: 150%; +} + +aside ul { + margin: .5em 0; + padding: 0 0 0 2em; +} + +aside li { + list-style: none; + padding: .3em 0; + border-bottom: 2px dotted rgba(0,0,0,.25); + border-top: 2px dotted white; +} + +aside li:first-child { + border-top: none; +} + +aside li:last-child { + border-bottom: none; +} + +#specsTested li { + position: relative; +} + +#specsTested li::before { + content: ''; + display: inline-block; + width: 1.2em; + height: 1.2em; + margin-right: .5em; + vertical-align: -.2em; + border-radius: 50%; + box-shadow: 0 2px white; +} footer { margin-left: 65%; @@ -375,12 +379,12 @@ footer { word-spacing: -1px; } - footer > p { - margin-left: 2em; - padding: 1em 0; - border-top: 1px solid hsl(200, 10%, 20%); - text-align: center; - } +footer > p { + margin-left: 2em; + padding: 1em 0; + border-top: 1px solid hsl(200, 10%, 20%); + text-align: center; +} /* Carbon Ads */ #carbonads { @@ -398,30 +402,32 @@ footer { font-weight: 400; } - #carbonads span { - position: relative; - display: block; - overflow: hidden; - } - - .carbon-img { - float: left; - margin-right: 1em; - } - - .carbon-img img { display: block; } - - .carbon-text { - display: block; - float: left; - max-width: calc(100% - 130px - 1em); - text-align: left; - } - - .carbon-poweredby { - position: absolute; - right: 0; - bottom: 0; - display: block; - font-size: 10px; - } +#carbonads span { + position: relative; + display: block; + overflow: hidden; +} + +.carbon-img { + float: left; + margin-right: 1em; +} + +.carbon-img img { + display: block; +} + +.carbon-text { + display: block; + float: left; + max-width: calc(100% - 130px - 1em); + text-align: left; +} + +.carbon-poweredby { + position: absolute; + right: 0; + bottom: 0; + display: block; + font-size: 10px; +} From 43f46794f063ee9aabd8f74b24a17457a51cb323 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Sat, 22 Jan 2022 22:55:50 +0100 Subject: [PATCH 384/668] Split all tests into separate files While splitting them they were also converted into ES modules. --- csstest.js | 87 +- filter.js | 12 +- index.html | 3 +- tests.js | 9430 +------------------------------ tests/compat.js | 18 + tests/css-align-3.js | 89 + tests/css-animations-1.js | 92 + tests/css-animations-2.js | 33 + tests/css-backgrounds-3.js | 179 + tests/css-backgrounds-4.js | 23 + tests/css-box-3.js | 276 + tests/css-box-4.js | 19 + tests/css-break-3.js | 40 + tests/css-break-4.js | 41 + tests/css-cascade-3.js | 36 + tests/css-cascade-4.js | 35 + tests/css-cascade-5.js | 48 + tests/css-color-3.js | 69 + tests/css-color-4.js | 154 + tests/css-color-5.js | 68 + tests/css-color-adjust-1.js | 36 + tests/css-composition-1.js | 35 + tests/css-conditional-3.js | 27 + tests/css-conditional-4.js | 23 + tests/css-conditional-5.js | 47 + tests/css-containment-1.js | 23 + tests/css-containment-2.js | 29 + tests/css-containment-3.js | 128 + tests/css-content-3.js | 29 + tests/css-counter-styles-3.js | 149 + tests/css-display-3.js | 28 + tests/css-easing-1.js | 20 + tests/css-env-1.js | 26 + tests/css-exclusions-1.js | 26 + tests/css-flexbox-1.js | 119 + tests/css-fonts-3.js | 184 + tests/css-fonts-4.js | 145 + tests/css-fonts-5.js | 31 + tests/css-grid-1.js | 175 + tests/css-grid-2.js | 43 + tests/css-grid-3.js | 56 + tests/css-highlight-api-1.js | 19 + tests/css-images-3.js | 101 + tests/css-images-4.js | 123 + tests/css-inline-3.js | 103 + tests/css-layout-api-1.js | 20 + tests/css-line-grid-1.js | 33 + tests/css-lists-3.js | 102 + tests/css-logical-1.js | 460 ++ tests/css-masking-1.js | 174 + tests/css-multicol-1.js | 76 + tests/css-multicol-2.js | 17 + tests/css-nav-1.js | 33 + tests/css-overflow-3.js | 79 + tests/css-overflow-4.js | 25 + tests/css-overscroll-1.js | 46 + tests/css-page-3.js | 77 + tests/css-paint-api-1.js | 29 + tests/css-position-3.js | 68 + tests/css-pseudo-4.js | 61 + tests/css-regions-1.js | 33 + tests/css-rhythmic-1.js | 62 + tests/css-ruby-1.js | 40 + tests/css-scoping-1.js | 41 + tests/css-scroll-anchoring-1.js | 18 + tests/css-scroll-snap-1.js | 190 + tests/css-scrollbars-1.js | 26 + tests/css-shadow-parts-1.js | 19 + tests/css-shapes-1.js | 40 + tests/css-shapes-2.js | 27 + tests/css-sizing-3.js | 61 + tests/css-sizing-4.js | 138 + tests/css-speech-1.js | 166 + tests/css-text-3.js | 120 + tests/css-text-4.js | 92 + tests/css-text-decor-3.js | 82 + tests/css-text-decor-4.js | 60 + tests/css-transforms-1.js | 46 + tests/css-transforms-2.js | 86 + tests/css-transitions-1.js | 52 + tests/css-ui-3.js | 66 + tests/css-ui-4.js | 104 + tests/css-values-3.js | 101 + tests/css-values-4.js | 295 + tests/css-variables-1.js | 31 + tests/css-will-change-1.js | 19 + tests/css-writing-modes-3.js | 41 + tests/css-writing-modes-4.js | 26 + tests/css2-cascade.js | 26 + tests/css2-colors.js | 75 + tests/css2-fonts.js | 70 + tests/css2-generate.js | 101 + tests/css2-media.js | 26 + tests/css2-page.js | 120 + tests/css2-selectors.js | 138 + tests/css2-tables.js | 49 + tests/css2-text.js | 66 + tests/css2-ui.js | 63 + tests/css2-visudet.js | 73 + tests/css2-visufx.js | 35 + tests/css2-visuren.js | 98 + tests/cssom-view-1.js | 19 + tests/fill-stroke-3.js | 258 + tests/filter-effects-1.js | 63 + tests/filter-effects-2.js | 33 + tests/fullscreen.js | 24 + tests/html.js | 18 + tests/mathml-core.js | 55 + tests/mediaqueries-3.js | 140 + tests/mediaqueries-4.js | 97 + tests/mediaqueries-5.js | 89 + tests/motion-1.js | 90 + tests/pointerevents1.js | 17 + tests/pointerevents3.js | 19 + tests/scroll-animations-1.js | 54 + tests/selectors-3.js | 225 + tests/selectors-4.js | 308 + tests/svg2-coords.js | 30 + tests/svg2-geometry.js | 69 + tests/svg2-interact.js | 20 + tests/svg2-painting.js | 80 + tests/svg2-paths.js | 21 + tests/svg2-pservers.js | 27 + tests/svg2-text.js | 65 + tests/webvtt.js | 41 + 125 files changed, 9403 insertions(+), 9258 deletions(-) create mode 100644 tests/compat.js create mode 100644 tests/css-align-3.js create mode 100644 tests/css-animations-1.js create mode 100644 tests/css-animations-2.js create mode 100644 tests/css-backgrounds-3.js create mode 100644 tests/css-backgrounds-4.js create mode 100644 tests/css-box-3.js create mode 100644 tests/css-box-4.js create mode 100644 tests/css-break-3.js create mode 100644 tests/css-break-4.js create mode 100644 tests/css-cascade-3.js create mode 100644 tests/css-cascade-4.js create mode 100644 tests/css-cascade-5.js create mode 100644 tests/css-color-3.js create mode 100644 tests/css-color-4.js create mode 100644 tests/css-color-5.js create mode 100644 tests/css-color-adjust-1.js create mode 100644 tests/css-composition-1.js create mode 100644 tests/css-conditional-3.js create mode 100644 tests/css-conditional-4.js create mode 100644 tests/css-conditional-5.js create mode 100644 tests/css-containment-1.js create mode 100644 tests/css-containment-2.js create mode 100644 tests/css-containment-3.js create mode 100644 tests/css-content-3.js create mode 100644 tests/css-counter-styles-3.js create mode 100644 tests/css-display-3.js create mode 100644 tests/css-easing-1.js create mode 100644 tests/css-env-1.js create mode 100644 tests/css-exclusions-1.js create mode 100644 tests/css-flexbox-1.js create mode 100644 tests/css-fonts-3.js create mode 100644 tests/css-fonts-4.js create mode 100644 tests/css-fonts-5.js create mode 100644 tests/css-grid-1.js create mode 100644 tests/css-grid-2.js create mode 100644 tests/css-grid-3.js create mode 100644 tests/css-highlight-api-1.js create mode 100644 tests/css-images-3.js create mode 100644 tests/css-images-4.js create mode 100644 tests/css-inline-3.js create mode 100644 tests/css-layout-api-1.js create mode 100644 tests/css-line-grid-1.js create mode 100644 tests/css-lists-3.js create mode 100644 tests/css-logical-1.js create mode 100644 tests/css-masking-1.js create mode 100644 tests/css-multicol-1.js create mode 100644 tests/css-multicol-2.js create mode 100644 tests/css-nav-1.js create mode 100644 tests/css-overflow-3.js create mode 100644 tests/css-overflow-4.js create mode 100644 tests/css-overscroll-1.js create mode 100644 tests/css-page-3.js create mode 100644 tests/css-paint-api-1.js create mode 100644 tests/css-position-3.js create mode 100644 tests/css-pseudo-4.js create mode 100644 tests/css-regions-1.js create mode 100644 tests/css-rhythmic-1.js create mode 100644 tests/css-ruby-1.js create mode 100644 tests/css-scoping-1.js create mode 100644 tests/css-scroll-anchoring-1.js create mode 100644 tests/css-scroll-snap-1.js create mode 100644 tests/css-scrollbars-1.js create mode 100644 tests/css-shadow-parts-1.js create mode 100644 tests/css-shapes-1.js create mode 100644 tests/css-shapes-2.js create mode 100644 tests/css-sizing-3.js create mode 100644 tests/css-sizing-4.js create mode 100644 tests/css-speech-1.js create mode 100644 tests/css-text-3.js create mode 100644 tests/css-text-4.js create mode 100644 tests/css-text-decor-3.js create mode 100644 tests/css-text-decor-4.js create mode 100644 tests/css-transforms-1.js create mode 100644 tests/css-transforms-2.js create mode 100644 tests/css-transitions-1.js create mode 100644 tests/css-ui-3.js create mode 100644 tests/css-ui-4.js create mode 100644 tests/css-values-3.js create mode 100644 tests/css-values-4.js create mode 100644 tests/css-variables-1.js create mode 100644 tests/css-will-change-1.js create mode 100644 tests/css-writing-modes-3.js create mode 100644 tests/css-writing-modes-4.js create mode 100644 tests/css2-cascade.js create mode 100644 tests/css2-colors.js create mode 100644 tests/css2-fonts.js create mode 100644 tests/css2-generate.js create mode 100644 tests/css2-media.js create mode 100644 tests/css2-page.js create mode 100644 tests/css2-selectors.js create mode 100644 tests/css2-tables.js create mode 100644 tests/css2-text.js create mode 100644 tests/css2-ui.js create mode 100644 tests/css2-visudet.js create mode 100644 tests/css2-visufx.js create mode 100644 tests/css2-visuren.js create mode 100644 tests/cssom-view-1.js create mode 100644 tests/fill-stroke-3.js create mode 100644 tests/filter-effects-1.js create mode 100644 tests/filter-effects-2.js create mode 100644 tests/fullscreen.js create mode 100644 tests/html.js create mode 100644 tests/mathml-core.js create mode 100644 tests/mediaqueries-3.js create mode 100644 tests/mediaqueries-4.js create mode 100644 tests/mediaqueries-5.js create mode 100644 tests/motion-1.js create mode 100644 tests/pointerevents1.js create mode 100644 tests/pointerevents3.js create mode 100644 tests/scroll-animations-1.js create mode 100644 tests/selectors-3.js create mode 100644 tests/selectors-4.js create mode 100644 tests/svg2-coords.js create mode 100644 tests/svg2-geometry.js create mode 100644 tests/svg2-interact.js create mode 100644 tests/svg2-painting.js create mode 100644 tests/svg2-paths.js create mode 100644 tests/svg2-pservers.js create mode 100644 tests/svg2-text.js create mode 100644 tests/webvtt.js diff --git a/csstest.js b/csstest.js index 9e6f0bd8..be4c447c 100644 --- a/csstest.js +++ b/csstest.js @@ -1,12 +1,10 @@ +import Specs from './tests.js'; + var Score = function (parent) { this.passed = this.total = this.passedTests = this.totalTests = 0; this.parent = parent || null; }; -var ele = function (name) { - return document.getElementById(name); -} - Score.prototype = { update: function (data) { if (!data.total) { return; } @@ -146,7 +144,7 @@ var Test = function (spec) { inside: h1 }); - ele('all').appendChild(this.section); + $('#all').appendChild(this.section); // Add to list of tested specs $.create({ @@ -160,7 +158,7 @@ var Test = function (spec) { contents: this.title } ], - inside: ele('specsTested') + inside: $('#specsTested') }); } @@ -321,7 +319,7 @@ Test.groups = { } } - success = properties.length > 0 ? 1 - failed.length / properties.length : 0; + var success = properties.length > 0 ? 1 - failed.length / properties.length : 0; return { success: success, @@ -394,22 +392,22 @@ function passclass(info) { return classes[index]; } -function resetOutput() { +window.resetOutput = function() { mainScore = new Score(); // Output current score - ele('score').textContent = ''; - ele('passedTests').textContent = ''; - ele('totalTests').textContent = ''; - ele('total').textContent = ''; - ele('specsTested').textContent = ''; - ele('all').textContent = ''; + $('#score').textContent = ''; + $('#passedTests').textContent = ''; + $('#totalTests').textContent = ''; + $('#total').textContent = ''; + $('#specsTested').textContent = ''; + $('#all').textContent = ''; // Display time taken - ele('timeTaken').textContent = ''; + $('#timeTaken').textContent = ''; } -function runTests(filter = '') { +window.runTests = function(filter = '') { var specs = []; var timeBefore = +new Date; @@ -454,61 +452,16 @@ function runTests(filter = '') { specs.forEach(spec => new Test(spec)); // Output score - ele('score').textContent = mainScore + ''; - ele('passedTests').textContent = ~~mainScore.passedTests; - ele('totalTests').textContent = mainScore.totalTests; - ele('total').textContent = mainScore.total; + $('#score').textContent = mainScore + ''; + $('#passedTests').textContent = ~~mainScore.passedTests; + $('#totalTests').textContent = mainScore.totalTests; + $('#total').textContent = mainScore.total; // Display time taken - ele('timeTaken').textContent = +new Date - timeBefore + 'ms'; + $('#timeTaken').textContent = +new Date - timeBefore + 'ms'; } -Array.prototype.and = function (arr2, separator) { - separator = separator || ' '; - - var ret = [], - map = function (val) { - return val + separator + arr2[j] - }; - - for (var j = 0; j < arr2.length; j++) { - ret = ret.concat(this.map(map)); - } - - return ret; -}; - -// [ x or y or z ]{min, max} -Array.prototype.times = function (min, max, separator) { - separator = separator || ' '; - - max = max || min; - - var ret = []; - - - if (min === max) { - if (min === 1) { - ret = this.slice(); // clone - } - else { - ret = this.and(this, separator); - - for (var i = 2; i < min; i++) { - ret = this.and(ret, separator); - } - } - } - else if (min < max) { - for (var i = min; i <= max; i++) { - ret = ret.concat(this.times(i, i, separator)); - } - } - - return ret; -}; - onload = function () { - ele('filter').value = localStorage.getItem('filter') || ''; + $('#filter').value = localStorage.getItem('filter') || ''; runTests(localStorage.getItem('filter') || ''); } diff --git a/filter.js b/filter.js index 3dceab0f..2d867ecf 100644 --- a/filter.js +++ b/filter.js @@ -1,7 +1,7 @@ -(function() { - ele('filter').addEventListener('change', evt => { - localStorage.setItem('filter', evt.target.value); - resetOutput(); - runTests(evt.target.value); - }); +(function() { + $('#filter').addEventListener('change', evt => { + localStorage.setItem('filter', evt.target.value); + resetOutput(); + runTests(evt.target.value); + }); })(); \ No newline at end of file diff --git a/index.html b/index.html index 771c45b0..fed44eab 100644 --- a/index.html +++ b/index.html @@ -82,8 +82,7 @@

      Cheaters

      - - + diff --git a/tests.js b/tests.js index 528e7bff..f06f9ef7 100644 --- a/tests.js +++ b/tests.js @@ -1,9183 +1,247 @@ -window.Specs = { - "compat": { - "title": "Compatibility", - "links": { - "dev": "compat", - "devtype": "whatwg" - }, - "status": { - "stability": "stable" - }, - "properties": { - "touch-action": { - "links": { - "dev": "#touch-action" - }, - "tests": ["pinch-zoom", "pan-x pinch-zoom", "pan-y pinch-zoom", "pan-x pan-y pinch-zoom"] - } - } - }, - - "compositing-1": { - "title": "Compositing and Blending Level 1", - "links": { - "tr": "compositing-1", - "dev": "compositing-1", - "devtype": "fxtf" - }, - "status": { - "stability": "stable", - "first-snapshot": 2015 - }, - "properties": { - "mix-blend-mode": { - "links": { - "tr": "#mix-blend-mode", - "dev": "#mix-blend-mode" - }, - "tests": ["normal", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "hue", "saturation", "color", "luminosity"] - }, - "isolation": { - "links": { - "tr": "#isolation", - "dev": "#isolation" - }, - "tests": ["auto", "isolate"] - }, - "background-blend-mode": { - "links": { - "tr": "#background-blend-mode", - "dev": "#background-blend-mode" - }, - "tests": ["normal", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "hue", "saturation", "color", "luminosity", "normal, multiply"] - } - } - }, - - "css2-box": { - "title": "CSS 2 Box Model", - "links": { - "tr": "CSS22/box.html", - "dev": "css2/" - }, - "status": { - "stability": "stable", - "first-snapshot": 1998, - "last-snapshot": 1998 - }, - "properties": { - "border-color": { - "links": { - "tr": "#border-color-properties", - "dev": "#border-color-properties" - }, - "tests": [ - "black", "#ff0000 rgb(0, 255, 0)", - "rgb(0%, 0%, 100%) #0f0 transparent", - "red green blue yellow" - ] - }, - "border-style": { - "links": { - "tr": "#border-style-properties", - "dev": "#border-style-properties" - }, - "tests": [ - "none", "hidden", "none dashed", "none dashed dotted", - "none dashed dotted solid" - ] - }, - "border-top": { - "links": { - "tr": "#border-shorthand-properties", - "dev": "#border-shorthand-properties" - }, - "tests": [ - "black", "dotted", "5px", "#ff0000 dashed", "solid 0.2em", - "rgb(0, 0, 255) 0.1ex", "#0f0 double 0.8mm" - ] - }, - "border-right": { - "links": { - "tr": "#border-shorthand-properties", - "dev": "#border-shorthand-properties" - }, - "tests": [ - "black", "dotted", "5px", "#ff0000 dashed", "solid 0.2em", - "rgb(0, 0, 255) 0.1ex", "#0f0 double 0.8mm" - ] - }, - "border-bottom": { - "links": { - "tr": "#border-shorthand-properties", - "dev": "#border-shorthand-properties" - }, - "tests": [ - "black", "dotted", "5px", "#ff0000 dashed", "solid 0.2em", - "rgb(0, 0, 255) 0.1ex", "#0f0 double 0.8mm" - ] - }, - "border-left": { - "links": { - "tr": "#border-shorthand-properties", - "dev": "#border-shorthand-properties" - }, - "tests": [ - "black", "dotted", "5px", "#ff0000 dashed", "solid 0.2em", - "rgb(0, 0, 255) 0.1ex", "#0f0 double 0.8mm" - ] - }, - "border-top-color": { - "links": { - "tr": "#border-color-properties", - "dev": "#border-color-properties" - }, - "tests": [ - "black", "#00f", "#000000", "rgb(255, 255, 255)", - "rgb(100%, 50%, 50%)", "transparent" - ] - }, - "border-right-color": { - "links": { - "tr": "#border-color-properties", - "dev": "#border-color-properties" - }, - "tests": [ - "black", "#00f", "#000000", "rgb(255, 255, 255)", - "rgb(100%, 50%, 50%)", "transparent" - ] - }, - "border-bottom-color": { - "links": { - "tr": "#border-color-properties", - "dev": "#border-color-properties" - }, - "tests": [ - "black", "#00f", "#000000", "rgb(255, 255, 255)", - "rgb(100%, 50%, 50%)", "transparent" - ] - }, - "border-left-color": { - "links": { - "tr": "#border-color-properties", - "dev": "#border-color-properties" - }, - "tests": [ - "black", "#00f", "#000000", "rgb(255, 255, 255)", - "rgb(100%, 50%, 50%)", "transparent" - ] - }, - "border-top-style": { - "links": { - "tr": "#border-style-properties", - "dev": "#border-style-properties" - }, - "tests": [ - "none", "hidden", "dotted", "dashed", "solid", "double", "groove", - "ridge", "inset", "outset" - ] - }, - "border-right-style": { - "links": { - "tr": "#border-style-properties", - "dev": "#border-style-properties" - }, - "tests": [ - "none", "hidden", "dotted", "dashed", "solid", "double", "groove", - "ridge", "inset", "outset" - ] - }, - "border-bottom-style": { - "links": { - "tr": "#border-style-properties", - "dev": "#border-style-properties" - }, - "tests": [ - "none", "hidden", "dotted", "dashed", "solid", "double", "groove", - "ridge", "inset", "outset" - ] - }, - "border-left-style": { - "links": { - "tr": "#border-style-properties", - "dev": "#border-style-properties" - }, - "tests": [ - "none", "hidden", "dotted", "dashed", "solid", "double", "groove", - "ridge", "inset", "outset" - ] - }, - "border-top-width": { - "links": { - "tr": "#border-width-properties", - "dev": "#border-width-properties" - }, - "tests": ["thin", "medium", "thick", "5px"] - }, - "border-right-width": { - "links": { - "tr": "#border-width-properties", - "dev": "#border-width-properties" - }, - "tests": ["thin", "medium", "thick", "5px"] - }, - "border-bottom-width": { - "links": { - "tr": "#border-width-properties", - "dev": "#border-width-properties" - }, - "tests": ["thin", "medium", "thick", "5px"] - }, - "border-left-width": { - "links": { - "tr": "#border-width-properties", - "dev": "#border-width-properties" - }, - "tests": ["thin", "medium", "thick", "5px"] - }, - "border-width": { - "links": { - "tr": "#border-width-properties", - "dev": "#border-width-properties" - }, - "tests": [ - "thin", "thin medium", "thin medium thick", "thin medium thick 5px" - ] - }, - "border": { - "links": { - "tr": "#border-shorthand-properties", - "dev": "#border-shorthand-properties" - }, - "tests": [ - "black", "dotted", "5px", "#ff0000 dashed", "solid 0.2em", - "rgb(0, 0, 255) 0.1ex", "rgb(100%, 50%, 50%) double 0.8mm" - ] - }, - "margin-right": { - "links": { - "tr": "#propdef-margin-right", - "dev": "#propdef-margin-right" - }, - "tests": ["auto", "10px", "5%"] - }, - "margin-left": { - "links": { - "tr": "#propdef-margin-left", - "dev": "#propdef-margin-left" - }, - "tests": ["auto", "10px", "5%"] - }, - "margin-top": { - "links": { - "tr": "#propdef-margin-top", - "dev": "#propdef-margin-top" - }, - "tests": ["auto", "10px", "5%"] - }, - "margin-bottom": { - "links": { - "tr": "#propdef-margin-bottom", - "dev": "#propdef-margin-bottom" - }, - "tests": ["auto", "10px", "5%"] - }, - "margin": { - "links": { - "tr": "#propdef-margin", - "dev": "#propdef-margin" - }, - "tests": [ - "10px", "10px 5%", "10px 5px auto", "10px 5px auto 1em" - ] - }, - "padding-top": { - "links": { - "tr": "#padding-properties", - "dev": "#padding-properties" - }, - "tests": ["10px", "5%"] - }, - "padding-right": { - "links": { - "tr": "#padding-properties", - "dev": "#padding-properties" - }, - "tests": ["10px", "5%"] - }, - "padding-bottom": { - "links": { - "tr": "#padding-properties", - "dev": "#padding-properties" - }, - "tests": ["10px", "5%"] - }, - "padding-left": { - "links": { - "tr": "#padding-properties", - "dev": "#padding-properties" - }, - "tests": ["10px", "5%"] - }, - "padding": { - "links": { - "tr": "#padding-properties", - "dev": "#padding-properties" - }, - "tests": [ - "10px", "10px 5%", "10px 5% 0.5em", "10px 5% 0.5em 0.8mm" - ] - } - } - }, - - "css2-cascade": { - "title": "CSS 2 Assigning property values, Cascading, and Inheritance", - "links": { - "tr": "CSS22/cascade.html", - "dev": "css2/" - }, - "status": { - "stability": "stable", - "first-snapshot": 1998, - "last-snapshot": 1998 - }, - "values": { - "properties": [ - "color", - "border-color" - ], - "inherit": { - "links": { - "tr": "#value-def-inherit", - "dev": "#value-def-inherit" - }, - "tests": "inherit" - } - } - }, - - "css2-colors": { - "title": "CSS 2 Colors and Backgrounds", - "links": { - "tr": "CSS22/colors.html", - "dev": "css2/" - }, - "status": { - "stability": "stable", - "first-snapshot": 1998, - "last-snapshot": 1998 - }, - "properties": { - "background-attachment": { - "links": { - "tr": "#propdef-background-attachment", - "dev": "#propdef-background-attachment" - }, - "tests": ["scroll", "fixed"] - }, - "background-color": { - "links": { - "tr": "#propdef-background-color", - "dev": "#propdef-background-color" - }, - "tests": [ - "black", "#00f", "#000000", "rgb(255, 255, 255)", - "rgb(100%, 50%, 50%)", "transparent" - ] - }, - "background-image": { - "links": { - "tr": "#propdef-background-image", - "dev": "#propdef-background-image" - }, - "tests": ["none", "url('image.png')", "url(image.png)"] - }, - "background-position": { - "links": { - "tr": "#propdef-background-position", - "dev": "#propdef-background-position" - }, - "tests": [ - "10% 100px", "100px center", "center 10%", "left", "center", - "right", "top", "bottom", "left center", "center bottom" - ] - }, - "background-repeat": { - "links": { - "tr": "#propdef-background-repeat", - "dev": "#propdef-background-repeat" - }, - "tests": ["repeat", "repeat-x", "repeat-y", "no-repeat"] - }, - "background": { - "links": { - "tr": "#propdef-background", - "dev": "#propdef-background" - }, - "tests": [ - "none", "black", "url('image.png')", "repeat-x", "fixed", "10% center", - "#ffffff url('image.png')", "url(image.png) repeat-y", "scroll center 100px" - ] - }, - "color": { - "links": { - "tr": "#colors", - "dev": "#colors" - }, - "tests": [ - "black", "#00f", "#000000", "rgb(255, 255, 255)", - "rgb(100%, 50%, 50%)" - ] - } - } - }, - - "css2-fonts": { - "title": "CSS 2 Fonts", - "links": { - "tr": "CSS22/fonts.html", - "dev": "css2/" - }, - "status": { - "stability": "stable", - "first-snapshot": 1998, - "last-snapshot": 1998 - }, - "properties": { - "font-family": { - "links": { - "tr": "#font-family-prop", - "dev": "#font-family-prop" - }, - "tests": [ - "Arial", "\"Helvetica\"", "'Some font'", "serif", "sans-serif", - "cursive", "fantasy", "monospace", "'Some font', Arial, sans-serif" - ] - }, - "font-size": { - "links": { - "tr": "#font-size-props", - "dev": "#font-size-props" - }, - "tests": [ - "xx-small", "x-small", "small", "medium", "large", "x-large", "xx-large", - "larger", "smaller", "1.5em", "80%" - ] - }, - "font-style": { - "links": { - "tr": "#font-styling", - "dev": "#font-styling" - }, - "tests": ["normal", "italic", "oblique"] - }, - "font-variant": { - "links": { - "tr": "#small-caps", - "dev": "#small-caps" - }, - "tests": ["normal", "small-caps"] - }, - "font-weight": { - "links": { - "tr": "#font-boldness", - "dev": "#font-boldness" - }, - "tests": [ - "normal", "bold", "bolder", "lighter", "100", "200", "300", "400", "500", - "600", "700", "800", "900" - ] - }, - "font": { - "links": { - "tr": "#font-shorthand", - "dev": "#font-shorthand" - }, - "tests": [ - "caption", "icon", "menu", "message-box", "small-caption", "status-bar", - "2em Arial", "italic 2em Arial", "small-caps 2em Arial", "bold 2em Arial", - "italic 2em \'Custom font\', Arial, sans-serif", "small-caps 2em Arial", - "bolder 2em Arial", "italic 200 2em Arial", "2em / 2 Arial" - ] - } - } - }, - - "css2-generate": { - "title": "CSS 2 Generated Content, Automatic Numbering, and Lists", - "links": { - "tr": "CSS22/generate.html", - "dev": "css2/" - }, - "status": { - "stability": "stable", - "first-snapshot": 1998, - "last-snapshot": 1998 - }, - "properties": { - "content": { - "links": { - "tr": "#content", - "dev": "#content①" - }, - "tests": [ - "normal", "none", "\"content\"", "'content'", "url(image.png)", "attr(x)", - "open-quote", "close-quote", "no-open-quote", "no-close-quote", - "open-quote close-quote", "\"content\" url(image.png)" - ] - }, - "counter-increment": { - "links": { - "tr": "#counters", - "dev": "#counters" - }, - "tests": [ - "none", "example-counter 1", "example-counter1 2 example-counter2" - ] - }, - "counter-reset": { - "links": { - "tr": "#counters", - "dev": "#counters" - }, - "tests": [ - "none", "example-counter 1", "example-counter1 2 example-counter2" - ] - }, - "list-style-image": { - "links": { - "tr": "#propdef-list-style-image", - "dev": "#propdef-list-style-image" - }, - "tests": ["none", "url(image.png)"] - }, - "list-style-position": { - "links": { - "tr": "#propdef-list-style-position", - "dev": "#propdef-list-style-position" - }, - "tests": ["inside", "outside"] - }, - "list-style-type": { - "links": { - "tr": "#propdef-list-style-type", - "dev": "#propdef-list-style-type" - }, - "tests": [ - "disc", "circle", "square", "decimal", "decimal-leading-zero", - "lower-roman", "upper-roman", "lower-greek", "lower-latin", "upper-latin", - "armenian", "georgian", "lower-alpha", "upper-alpha", "none" - ] - }, - "list-style": { - "links": { - "tr": "#propdef-list-style", - "dev": "#propdef-list-style" - }, - "tests": [ - "disc", "inside", "url('image.png')", "circle outside", - "square url(image.png)", "decimal inside url(image.png)" - ] - }, - "quotes": { - "links": { - "tr": "#quotes-specify", - "dev": "#quotes-specify" - }, - "tests": ["none", "\"»\" \"«\"", "'\"' '\"' \"'\" \"'\""] - } - }, - "selectors": { - ":before": { - "links": { - "tr": "#before-after-content", - "dev": "#before-after-content" - }, - "tests": ":before" - }, - ":after": { - "links": { - "tr": "#before-after-content", - "dev": "#before-after-content" - }, - "tests": ":after" - } - } - }, - - - "css2-media": { - "title": "CSS 2 Media types", - "links": { - "tr": "CSS22/media.html", - "dev": "css2/" - }, - "status": { - "stability": "stable", - "first-snapshot": 1998, - "last-snapshot": 1998 - }, - "@rules": { - "@media": { - "links": { - "tr": "#at-media-rule", - "dev": "#at-media-rule" - }, - "tests": [ - "@media all {\n p {\n color: green;\n }\n}", - "@media print {\n p {\n color: green;\n }\n}", - "@media screen {\n p {\n color: green;\n }\n}", - "@media print, screen {\n p {\n color: green;\n }\n}" - ] - } - } - }, - - "css2-page": { - "title": "CSS 2 Paged Media", - "links": { - "tr": "CSS22/page.html", - "dev": "css2/" - }, - "status": { - "stability": "stable", - "first-snapshot": 1998, - "last-snapshot": 1998 - }, - "@rules": { - "@page": { - "links": { - "tr": "#page-box", - "dev": "#page-box" - }, - "tests": [ - "@page { margin: 2cm; }", - "@page :left { margin: 2cm; }", - "@page :right { margin: 2cm; }", - "@page :first { margin: 2cm; }" - ] - } - }, - "descriptors": { - "@page/margin": { - "links": { - "tr": "#page-box", - "dev": "#page-box" - }, - "tests": [ - "2cm", - "4%", - "auto" - ] - }, - "@page/margin-top": { - "links": { - "tr": "#page-box", - "dev": "#page-box" - }, - "tests": [ - "2cm", - "4%", - "auto" - ] - }, - "@page/margin-right": { - "links": { - "tr": "#page-box", - "dev": "#page-box" - }, - "tests": [ - "2cm", - "4%", - "auto" - ] - }, - "@page/margin-bottom": { - "links": { - "tr": "#page-box", - "dev": "#page-box" - }, - "tests": [ - "2cm", - "4%", - "auto" - ] - }, - "@page/margin-left": { - "links": { - "tr": "#page-box", - "dev": "#page-box" - }, - "tests": [ - "2cm", - "4%", - "auto" - ] - }, - }, - "properties": { - "orphans": { - "links": { - "tr": "#break-inside", - "dev": "#break-inside" - }, - "tests": ["1", "2"] - }, - "page-break-after": { - "links": { - "tr": "#page-break-props", - "dev": "#page-break-props" - }, - "tests": ["auto", "always", "avoid", "left", "right"] - }, - "page-break-before": { - "links": { - "tr": "#page-break-props", - "dev": "#page-break-props" - }, - "tests": ["auto", "always", "avoid", "left", "right"] - }, - "page-break-inside": { - "links": { - "tr": "#page-break-props", - "dev": "#page-break-props" - }, - "tests": ["auto", "avoid"] - }, - "widows": { - "links": { - "tr": "#break-inside", - "dev": "#break-inside" - }, - "tests": ["1", "2"] - } - } - }, - - "css2-selectors": { - "title": "CSS 2 Selectors", - "links": { - "tr": "CSS22/selector.html", - "dev": "css2/" - }, - "status": { - "stability": "stable", - "first-snapshot": 1998, - "last-snapshot": 1998 - }, - "selectors": { - "Universal selector": { - "links": { - "tr": "#universal-selector", - "dev": "#universal-selector" - }, - "tests": "*" - }, - "Type selector": { - "links": { - "tr": "#type-selectors", - "dev": "#type-selectors" - }, - "tests": "h1" - }, - "Descendant selector": { - "links": { - "tr": "#descendant-selectors", - "dev": "#descendant-selectors" - }, - "tests": "div p" - }, - "Child selector": { - "links": { - "tr": "#child-selectors", - "dev": "#child-selectors" - }, - "tests": "div > p" - }, - "Adjacent sibling selector": { - "links": { - "tr": "#adjacent-selectors", - "dev": "#adjacent-selectors" - }, - "tests": "div + p" - }, - "Attribute selectors": { - "links": { - "tr": "#attribute-selectors", - "dev": "#attribute-selectors" - }, - "tests": [ - "[title]", "[title=example]", "[title=\"example\"]", "[rel~=copyright]", - "[rel~=\"copyright\"]", "[lang|=en]", "[lang|=\"en\"]" - ] - }, - "Class selector": { - "links": { - "tr": "#class-html", - "dev": "#class-html" - }, - "tests": [ - ".class" - ] - }, - "ID selector": { - "links": { - "tr": "#id-selectors", - "dev": "#id-selectors" - }, - "tests": "#id" - }, - ":first-child": { - "links": { - "tr": "#first-child", - "dev": "#first-child" - }, - "tests": ":first-child" - }, - ":link": { - "links": { - "tr": "#link-pseudo-classes", - "dev": "#link-pseudo-classes" - }, - "tests": ":link" - }, - ":visited": { - "links": { - "tr": "#link-pseudo-classes", - "dev": "#link-pseudo-classes" - }, - "tests": ":visited" - }, - ":hover": { - "links": { - "tr": "#dynamic-pseudo-classes", - "dev": "#dynamic-pseudo-classes" - }, - "tests": ":hover" - }, - ":active": { - "links": { - "tr": "#dynamic-pseudo-classes", - "dev": "#dynamic-pseudo-classes" - }, - "tests": ":active" - }, - ":focus": { - "links": { - "tr": "#dynamic-pseudo-classes", - "dev": "#dynamic-pseudo-classes" - }, - "tests": ":focus" - }, - ":lang()": { - "links": { - "tr": "#lang", - "dev": "#lang" - }, - "tests": [":lang(en)", ":lang(en-US)"] - }, - ":first-line": { - "links": { - "tr": "#first-line-pseudo", - "dev": "#first-line-pseudo" - }, - "tests": ":first-line" - }, - ":first-letter": { - "links": { - "tr": "#first-letter", - "dev": "#first-letter" - }, - "tests": ":first-letter" - } - } - }, - - "css2-tables": { - "title": "CSS 2 Tables", - "links": { - "tr": "CSS22/tables.html", - "dev": "css2/" - }, - "status": { - "stability": "stable", - "first-snapshot": 1998, - "last-snapshot": 1998 - }, - "properties": { - "border-collapse": { - "links": { - "tr": "#propdef-border-collapse", - "dev": "#propdef-border-collapse" - }, - "tests": ["collapse", "separate"] - }, - "border-spacing": { - "links": { - "tr": "#propdef-border-spacing", - "dev": "#propdef-border-spacing" - }, - "tests": ["10px", "1em 0.5cm"] - }, - "caption-side": { - "links": { - "tr": "#caption-position", - "dev": "#caption-position" - }, - "tests": ["top", "bottom"] - }, - "empty-cells": { - "links": { - "tr": "#empty-cells", - "dev": "#empty-cells" - }, - "tests": ["show", "hide"] - }, - "table-layout": { - "links": { - "tr": "#width-layout", - "dev": "#width-layout" - }, - "tests": ["auto", "fixed"] - } - } - }, - - "css2-text": { - "title": "CSS 2 Text", - "links": { - "tr": "CSS22/text.html", - "dev": "css2/" - }, - "status": { - "stability": "stable", - "first-snapshot": 1998, - "last-snapshot": 1998 - }, - "properties": { - "letter-spacing": { - "links": { - "tr": "#propdef-letter-spacing", - "dev": "#propdef-letter-spacing" - }, - "tests": ["normal", "10px"] - }, - "text-align": { - "links": { - "tr": "#alignment-prop", - "dev": "#alignment-prop" - }, - "tests": ["left", "right", "center", "justify"] - }, - "text-decoration": { - "links": { - "tr": "#lining-striking-props", - "dev": "#lining-striking-props" - }, - "tests": [ - "none", "underline", "overline", "line-through", "blink", - "underline overline", "underline overline line-through" - ] - }, - "text-indent": { - "links": { - "tr": "#indentation-prop", - "dev": "#indentation-prop" - }, - "tests": ["10px", "10%"] - }, - "text-transform": { - "links": { - "tr": "#caps-prop", - "dev": "#caps-prop" - }, - "tests": ["none", "capitalize", "uppercase", "lowercase"] - }, - "white-space": { - "links": { - "tr": "#white-space-prop", - "dev": "#white-space-prop" - }, - "tests": ["normal", "pre", "nowrap", "pre-wrap", "pre-line"] - }, - "word-spacing": { - "links": { - "tr": "#propdef-word-spacing", - "dev": "#propdef-word-spacing" - }, - "tests": ["normal", "10px"] - } - } - }, - - "css2-ui": { - "title": "CSS 2 User Interface", - "links": { - "tr": "CSS22/ui.html", - "dev": "css2/" - }, - "status": { - "stability": "stable", - "first-snapshot": 1998, - "last-snapshot": 1998 - }, - "properties": { - "cursor": { - "links": { - "tr": "#cursor-props", - "dev": "#cursor-props" - }, - "tests": [ - "auto", "crosshair", "default", "pointer", "move", "e-resize", - "ne-resize", "nw-resize", "n-resize", "se-resize", "sw-resize", - "s-resize", "w-resize", "text", "wait", "help", "progress", - "url(cursor.png), auto", "url(cursor.svg), url(cursor.png), pointer" - ] - }, - "outline-color": { - "links": { - "tr": "#dynamic-outlines", - "dev": "#dynamic-outlines" - }, - "tests": [ - "black", "#00f", "#000000", "rgb(255, 255, 255)", - "rgb(100%, 50%, 50%)" - ] - }, - "outline-style": { - "links": { - "tr": "#dynamic-outlines", - "dev": "#dynamic-outlines" - }, - "tests": [ - "none", "dotted", "dashed", "solid", "double", "groove", - "ridge", "inset", "outset" - ] - }, - "outline-width": { - "links": { - "tr": "#dynamic-outlines", - "dev": "#dynamic-outlines" - }, - "tests": ["thin", "medium", "thick", "5px"] - }, - "outline": { - "links": { - "tr": "#dynamic-outlines", - "dev": "#dynamic-outlines" - }, - "tests": [ - "black", "dotted", "5px", "#ff0000 dashed", "solid 0.2em", - "rgb(0, 0, 255) 0.1ex", "#0f0 double 0.8mm" - ] - } - } - }, - - "css2-visudet": { - "title": "CSS 2 Visual Formatting Model Details", - "links": { - "tr": "CSS22/visudet.html", - "dev": "css2/" - }, - "status": { - "stability": "stable", - "first-snapshot": 1998, - "last-snapshot": 1998 - }, - "properties": { - "height": { - "links": { - "tr": "#the-height-property", - "dev": "#the-height-property" - }, - "tests": ["auto", "100px", "10%"] - }, - "line-height": { - "links": { - "tr": "#propdef-line-height", - "dev": "#propdef-line-height" - }, - "tests": ["normal", "2", "2em", "150%"] - }, - "max-height": { - "links": { - "tr": "#min-max-heights", - "dev": "#min-max-heights" - }, - "tests": ["none", "100px", "80%"] - }, - "max-width": { - "links": { - "tr": "#min-max-widths", - "dev": "#min-max-widths" - }, - "tests": ["none", "100px", "80%"] - }, - "min-height": { - "links": { - "tr": "#min-max-heights", - "dev": "#min-max-heights" - }, - "tests": ["100px", "10%"] - }, - "min-width": { - "links": { - "tr": "#min-max-widths", - "dev": "#min-max-widths" - }, - "tests": ["100px", "10%"] - }, - "vertical-align": { - "links": { - "tr": "#propdef-vertical-align", - "dev": "#propdef-vertical-align" - }, - "tests": [ - "baseline", "sub", "super", "top", "text-top", "middle", "bottom", - "text-bottom", "10px", "10%" - ] - }, - "width": { - "links": { - "tr": "#the-width-property", - "dev": "#the-width-property" - }, - "tests": ["auto", "100px", "10%"] - } - } - }, - - "css2-visufx": { - "title": "CSS 2 Visual Effects", - "links": { - "tr": "CSS22/visufx.html", - "dev": "css2/" - }, - "status": { - "stability": "stable", - "first-snapshot": 1998, - "last-snapshot": 1998 - }, - "properties": { - "clip": { - "links": { - "tr": "#clipping", - "dev": "#clipping" - }, - "tests": ["auto", "rect(1px, 10em, 3ex, 0.2mm)"] - }, - "overflow": { - "links": { - "tr": "#overflow", - "dev": "#overflow①" - }, - "tests": ["auto", "visible", "hidden", "scroll"] - }, - "visibility": { - "links": { - "tr": "#visibility", - "dev": "#visibility" - }, - "tests": ["visible", "hidden", "collapse"] - } - } - }, - - "css2-visuren": { - "title": "CSS 2 Visual Formatting Model", - "links": { - "tr": "CSS22/visuren.html", - "dev": "css2/" - }, - "status": { - "stability": "stable", - "first-snapshot": 1998, - "last-snapshot": 1998 - }, - "properties": { - "bottom": { - "links": { - "tr": "#position-props", - "dev": "#position-props" - }, - "tests": ["auto", "100px", "10%"] - }, - "clear": { - "links": { - "tr": "#flow-control", - "dev": "#flow-control" - }, - "tests": ["none", "left", "right", "both"] - }, - "direction": { - "links": { - "tr": "#propdef-direction", - "dev": "#propdef-direction" - }, - "tests": ["ltr", "rtl"] - }, - "display": { - "links": { - "tr": "#display-prop", - "dev": "#display-prop" - }, - "tests": [ - "none", "inline", "block", "list-item", "inline-block", "table", - "inline-table", "table-row-group", "table-header-group", - "table-footer-group", "table-row", "table-column-group", - "table-column", "table-cell", "table-caption" - ] - }, - "float": { - "links": { - "tr": "#float-position", - "dev": "#float-position" - }, - "tests": ["none", "left", "right"] - }, - "left": { - "links": { - "tr": "#position-props", - "dev": "#position-props" - }, - "tests": ["auto", "100px", "10%"] - }, - "position": { - "links": { - "tr": "#choose-position", - "dev": "#choose-position" - }, - "tests": ["static", "relative", "absolute", "fixed"] - }, - "right": { - "links": { - "tr": "#position-props", - "dev": "#position-props" - }, - "tests": ["auto", "100px", "10%"] - }, - "top": { - "links": { - "tr": "#position-props", - "dev": "#position-props" - }, - "tests": ["100px", "10%", "auto"] - }, - "unicode-bidi": { - "links": { - "tr": "#propdef-unicode-bidi", - "dev": "#propdef-unicode-bidi" - }, - "tests": ["normal", "embed", "bidi-override"] - }, - "z-index": { - "links": { - "tr": "#z-index", - "dev": "#z-index" - }, - "tests": [ - "auto", "1", "-1" - ] - } - } - }, - - "css-align-3": { - "title": "CSS Box Alignment Module Level 3", - "links": { - "tr": "css-align-3", - "dev": "css-align-3" - }, - "status": { - "stability": "stable" - }, - "properties": { - "align-self": { - "links": { - "tr": "#align-self-property", - "dev": "#align-self-property" - }, - "tests": ["auto", "normal", "stretch", "baseline", "first baseline", "last baseline", "center", "start", "end", "self-start", "self-end", "unsafe start ", "safe start"] - }, - "align-items": { - "links": { - "tr": "#align-items-property", - "dev": "#align-items-property" - }, - "tests": ["normal", "stretch", "baseline", "first baseline", "last baseline", "center", "start", "end", "self-start", "self-end", "unsafe start ", "safe start"] - }, - "align-content": { - "links": { - "tr": "#align-justify-content", - "dev": "#align-justify-content" - }, - "tests": ["normal", "baseline", "first baseline", "last baseline", "space-between", "space-around", "space-evenly", "stretch", "center", "start", "end", "flex-start", "flex-end", "unsafe start ", "safe start"] - }, - "justify-self": { - "links": { - "tr": "#justify-self-property", - "dev": "#justify-self-property" - }, - "tests": ["auto", "normal", "stretch", "baseline", "first baseline", "last baseline", "center", "start", "end", "self-start", "self-end", "unsafe start ", "safe start", "left", "right", "safe right"] - }, - "justify-items": { - "links": { - "tr": "#justify-items-property", - "dev": "#justify-items-property" - }, - "tests": ["normal", "stretch", "baseline", "first baseline", "last baseline", "center", "start", "end", "self-start", "self-end", "unsafe start ", "safe start", "left", "right", "safe right", "legacy", "legacy left", "legacy right", "legacy center"] - }, - "justify-content": { - "links": { - "tr": "#align-justify-content", - "dev": "#align-justify-content" - }, - "tests": ["normal", "space-between", "space-around", "space-evenly", "stretch", "center", "start", "end", "flex-start", "flex-end", "unsafe start ", "safe start", "left", "right", "safe right"] - }, - "place-content": { - "links": { - "tr": "#place-content", - "dev": "#place-content" - }, - "tests": ["normal", "baseline", "first baseline", "last baseline", "space-between", "space-around", "space-evenly", "stretch", "center", "start", "end", "flex-start", "flex-end", "unsafe start ", "safe start", "normal normal", "baseline normal", "first baseline normal", "space-between normal", "center normal", "unsafe start normal", "normal stretch", "baseline stretch", "first baseline stretch", "space-between stretch", "center stretch", "unsafe start stretch", "normal safe right", "baseline safe right", "first baseline safe right", "space-between safe right", "center safe right", "unsafe start safe right"] - }, - "place-items": { - "links": { - "tr": "#place-items-property", - "dev": "#place-items-property" - }, - "tests": ["normal", "stretch", "baseline", "first baseline", "last baseline", "center", "start", "end", "self-start", "self-end", "unsafe start ", "safe start", "normal normal", "stretch normal", "baseline normal", "first baseline normal", "self-start normal", "unsafe start normal", "normal stretch", "stretch stretch", "baseline stretch", "first baseline stretch", "self-start stretch", "unsafe start stretch", "normal last baseline", "stretch last baseline", "baseline last baseline", "first baseline last baseline", "self-start last baseline", "unsafe start last baseline", "normal legacy left", "stretch legacy left", "baseline legacy left", "first baseline legacy left", "self-start legacy left", "unsafe start legacy left"] - }, - "gap": { - "links": { - "tr": "#gap-shorthand", - "dev": "#gap-shorthand" - }, - "tests": ["0 0", "0 1em", "1em", "1em 1em"] - }, - "column-gap": { - "links": { - "tr": "#column-row-gap", - "dev": "#column-row-gap" - }, - "tests": ["0", "1em", "normal"] - }, - "row-gap": { - "links": { - "tr": "#column-row-gap", - "dev": "#column-row-gap" - }, - "tests": ["0", "1em"] - } - } - }, - - "css-animations-1": { - "title": "CSS Animations Level 1", - "links": { - "tr": "css-animations-1", - "dev": "css-animations-1" - }, - "status": { - "stability": "stable" - }, - "properties": { - "animation-name": { - "links": { - "tr": "#animation-name", - "dev": "#animation-name" - }, - "tests": ["foo", "foo, bar"] - }, - "animation-duration": { - "links": { - "tr": "#animation-duration", - "dev": "#animation-duration" - }, - "tests": ["0s", "1s", "100ms"] - }, - "animation-timing-function": { - "links": { - "tr": "#animation-timing-function", - "dev": "#animation-timing-function" - }, - "tests": [ - "ease", "linear", "ease-in", "ease-out", "ease-in-out", - "cubic-bezier(.5, .5, .5, .5)", - "cubic-bezier(.5, 1.5, .5, -2.5)", - "step-start", "step-end", "steps(3, start)", "steps(5, end)" - ] - }, - "animation-iteration-count": { - "links": { - "tr": "#animation-iteration-count", - "dev": "#animation-iteration-count" - }, - "tests": ["infinite", "8", "4.35"] - }, - "animation-direction": { - "links": { - "tr": "#animation-direction", - "dev": "#animation-direction" - }, - "tests": ["normal", "alternate", "reverse", "alternate-reverse"] - }, - "animation-play-state": { - "links": { - "tr": "#animation-play-state", - "dev": "#animation-play-state" - }, - "tests": ["running", "paused"] - }, - "animation-delay": { - "links": { - "tr": "#animation-delay", - "dev": "#animation-delay" - }, - "tests": ["1s", "-1s"] - }, - "animation-fill-mode": { - "links": { - "tr": "#animation-fill-mode", - "dev": "#animation-fill-mode" - }, - "tests": ["none", "forwards", "backwards", "both"] - }, - "animation": { - "links": { - "tr": "#animation", - "dev": "#animation" - }, - "tests": "foo 1s 2s infinite linear alternate both" - } - }, - "@rules": { - "@keyframes": { - "links": { - "tr": "#keyframes", - "dev": "#keyframes" - }, - "tests": [ - "@keyframes foo {\n from: {\n color: blue;\n }\n to: {\n color: red;\n }\n}", - "@keyframes foo {\n from: {\n color: blue;\n }\n 50%: {\n color: green;\n }\n to: {\n color: red;\n }\n}" - ] - } - } - }, - - "css-animations-2": { - "title": "CSS Animations Level 2", - "links": { - "tr": "css-animations-2", - "dev": "css-animations-2" - }, - "status": { - "stability": "experimental" - }, - "properties": { - "animation-composition": { - "links": { - "tr": "#animation-composition", - "dev": "#animation-composition" - }, - "tests": ["replace", "add", "accumulate", "replace, add, accumulate"] - }, - "animation-timeline": { - "links": { - "tr": "#animation-timeline", - "dev": "#animation-timeline" - }, - "tests": ["auto", "none", "custom-timeline", "\"custom-timeline\"", "auto, none, custom-timeline, \"custom-timeline\""] - }, - "animation": { - "links": { - "tr": "#animation-timeline", - "dev": "#animation-timeline" - }, - "tests": ["1s both infinite auto"] - } - } - }, - - "css-backgrounds-3": { - "title": "CSS Backgrounds and Borders Module Level 3", - "links": { - "tr": "css-backgrounds-3", - "dev": "css-backgrounds-3" - }, - "status": { - "stability": "stable", - "first-snapshot": 2015 - }, - "properties": { - "background-repeat": { - "links": { - "tr": "#the-background-repeat", - "dev": "#background-repeat" - }, - "tests": ["space", "round"].concat(["repeat", "space", "round", "no-repeat"].times(2)) - }, - "background-attachment": { - "links": { - "tr": "#the-background-attachment", - "dev": "#background-attachment" - }, - "tests": "local" - }, - "background-position": { - "links": { - "tr": "#the-background-position", - "dev": "#background-position" - }, - "tests": ["bottom 10px right 20px", "bottom 10px right", "top right 10px"] - }, - "background-clip": { - "links": { - "tr": "#the-background-clip", - "dev": "#background-clip" - }, - "tests": ["border-box", "padding-box", "content-box"] - }, - "background-origin": { - "links": { - "tr": "#the-background-origin", - "dev": "#background-origin" - }, - "tests": ["border-box", "padding-box", "content-box"] - }, - "background-size": { - "links": { - "tr": "#the-background-size", - "dev": "#background-size" - }, - "tests": ["auto", "cover", "contain", "10px", "50%", "10px auto", "auto 10%", "50em 50%"] - }, - "background": { - "links": { - "tr": "#the-background", - "dev": "#background" - }, - "tests": [ - "url(foo.png), url(bar.svg)", - "top left / 50% 60%", - "border-box", - "border-box padding-box", - "url(foo.png) bottom right / cover padding-box content-box" - ] - }, - "border-top-left-radius": { - "links": { - "tr": "#the-border-radius", - "dev": "#border-radius" - }, - "tests": ["0", "50%", "250px 100px"] - }, - "border-top-right-radius": { - "links": { - "tr": "#the-border-radius", - "dev": "#border-radius" - }, - "tests": ["0", "50%", "250px 100px"] - }, - "border-bottom-right-radius": { - "links": { - "tr": "#the-border-radius", - "dev": "#border-radius" - }, - "tests": ["0", "50%", "250px 100px"] - }, - "border-bottom-left-radius": { - "links": { - "tr": "#the-border-radius", - "dev": "#border-radius" - }, - "tests": ["0", "50%", "250px 100px"] - }, - "border-radius": { - "links": { - "tr": "#the-border-radius", - "dev": "#border-radius" - }, - "tests": ["10px", "50%", "10px / 20px", "2px 4px 8px 16px", "2px 4px 8px 16px / 2px 4px 8px 16px"] - }, - "border-image-source": { - "links": { - "tr": "#the-border-image-source", - "dev": "#border-image-source" - }, - "tests": ["none", "url(foo.png)"] - }, - "border-image-slice": { - "links": { - "tr": "#the-border-image-slice", - "dev": "#border-image-slice" - }, - "tests": ["10", "30%"].times(1, 4).concat(["fill 30%", "fill 10", "fill 2 4 8% 16%", "30% fill", "10 fill", "2 4 8% 16% fill"]) - }, - "border-image-width": { - "links": { - "tr": "#the-border-image-width", - "dev": "#border-image-width" - }, - "tests": ["10px", "5%", "28", "auto", "10px 10px", "5% 10px", "28 10px", "auto 10px", "10px 5%", "5% 5%", "28 5%", "auto 5%", "10px 28", "5% 28", "28 28", "auto 28", "10px auto", "5% auto", "28 auto", "auto auto", "10px 10% 10", "5% 10px 20 auto"] - }, - "border-image-outset": { - "links": { - "tr": "#the-border-image-outset", - "dev": "#border-image-outset" - }, - "tests": ["10px", "20", "10px 20", "10px 20px", "20 30", "2px 3px 4", "1 2px 3px 4"] - }, - "border-image-repeat": { - "links": { - "tr": "#the-border-image-repeat", - "dev": "#border-image-repeat" - }, - "tests": ["stretch", "repeat", "round", "space"].times(1, 2) - }, - "border-image": { - "links": { - "tr": "#the-border-image", - "dev": "#border-image" - }, - "tests": [ - "url(foo.png) 10", "url(foo.png) 10%", "url(foo.png) 10% fill", - "url(foo.png) 10 round", "url(foo.png) 10 stretch repeat", - "url(foo.png) 10 / 10px", "url(foo.png) 10 / 10% / 10px", - "url(foo.png) fill 10 / 10% / 10px", "url(foo.png) fill 10 / 10% / 10px space" - ] - }, - "box-shadow": { - "links": { - "tr": "#the-box-shadow", - "dev": "#box-shadow" - }, - "tests": [ - "1px 1px", "0 0 black", "1px 2px 3px black", "1px 2px 3px 4px black", - "inset 1px 1px", "1px 2px 3px 4px black inset" - ] - } - } - }, - - "css-backgrounds-4": { - "title": "CSS Backgrounds and Borders Module Level 4", - "links": { - "dev": "css-backgrounds-4", - }, - "status": { - "stability": "experimental" - }, - "properties": { - "background-position-x": { - "links": { - "dev": "#background-position-longhands" - }, - "tests": ["right", "center", "50%", "left, left", "left, right", "right, left", "left, 0%", "10%, 20%, 40%", "0px", "30px", "0%, 10%, 20%, 30%", "left, left, left, left, left", "calc(20px)", "calc(20px + 1em)", "calc(20px / 2)", "calc(20px + 50%)", "calc(50% - 10px)", "calc(-20px)", "calc(-50%)", "calc(-20%)", "right 20px", "left 20px", "right -50px", "left -50px", "right 20px"] - }, - "background-position-y": { - "links": { - "dev": "#background-position-longhands" - }, - "tests": ["bottom", "center", "50%", "top, top", "top, bottom", "bottom, top", "top, 0%", "10%, 20%, 40%", "0px", "30px", "0%, 10%, 20%, 30%", "top, top, top, top, top", "calc(20px)", "calc(20px + 1em)", "calc(20px / 2)", "calc(20px + 50%)", "calc(50% - 10px)", "calc(-20px)", "calc(-50%)", "calc(-20%)", "bottom 20px", "top 20px", "bottom -50px", "top -50px", "bottom 20px"] - } - } - }, - - "css-box-4": { - "title": "CSS Box Model Module Level 4", - "links": { - "tr": "css-box-4", - "dev": "css-box-4" - }, - "status": { - "stability": "experimental" - }, - "properties": { - "margin-trim": { - "links": { - "tr": "#margin-trim", - "dev": "#margin-trim" - }, - "tests": ["none", "in-flow", "all"] - } - } - }, - - "css-break-3": { - "title": "CSS Fragmentation Module Level 3", - "links": { - "tr": "css-break-3", - "dev": "css-break-3" - }, - "status": { - "stability": "stable" - }, - "properties": { - "break-before": { - "links": { - "tr": "#break-between", - "dev": "#break-between" - }, - "tests": ["auto", "avoid", "avoid-page", "page", "left", "right", "recto", "verso", "avoid-column", "column", "avoid-region", "region "] - }, - "break-after": { - "links": { - "tr": "#break-between", - "dev": "#break-between" - }, - "tests": ["auto", "avoid", "avoid-page", "page", "left", "right", "recto", "verso", "avoid-column", "column", "avoid-region", "region "] - }, - "break-inside": { - "links": { - "tr": "#break-within", - "dev": "#break-within" - }, - "tests": ["auto", "avoid", "avoid-page", "avoid-column", "avoid-region"] - }, - "box-decoration-break": { - "links": { - "tr": "#break-decoration", - "dev": "#break-decoration" - }, - "tests": ["slice", "clone"] - } - } - }, - - "css-break-4": { - "title": "CSS Fragmentation Module Level 4", - "links": { - "tr": "css-break-4", - "dev": "css-break-4" - }, - "status": { - "stability": "experimental", - }, - "values": { - "properties": [ - "break-before", - "break-after" - ], - "always": { - "links": { - "tr": "#valdef-break-before-always", - "dev": "#valdef-break-before-always", - "mdn": "break-before#values" - }, - "tests": "always" - }, - "all": { - "links": { - "tr": "#valdef-break-before-all", - "dev": "#valdef-break-before-all", - "mdn": "break-before#values" - }, - "tests": "all" - } - }, - "properties": { - "margin-break": { - "links": { - "tr": "#break-margins", - "dev": "#break-margins" - }, - "tests": ["auto", "keep", "discard"] - } - } - }, - - "css-cascade-3": { - "title": "CSS Cascading and Inheritance Level 3", - "links": { - "tr": "css-cascade-3", - "dev": "css-cascade-3" - }, - "status": { - "stability": "stable", - "first-snapshot": 2015, - "last-snapshot": 2018 - }, - "values": { - "properties": [ - "color", - "font-weight", - "background-image", - "width" - ], - "unset": { - "links": { - "tr": "#inherit-initial", - "dev": "#inherit-initial" - }, - "tests": "unset" - } - }, - "properties": { - "all": { - "links": { - "tr": "#all-shorthand", - "dev": "#all-shorthand" - }, - "tests": ["initial", "unset"] - } - } - }, - - "css-cascade-4": { - "title": "CSS Cascading and Inheritance Level 4", - "links": { - "tr": "css-cascade-4", - "dev": "css-cascade-4" - }, - "status": { - "stability": "stable", - "first-snapshot": 2020 - }, - "values": { - "properties": [ - "color", - "font-weight", - "background-image", - "all" - ], - "revert": { - "links": { - "tr": "#default", - "dev": "#default" - }, - "tests": "revert" - } - }, - "properties": { - "all": { - "links": { - "tr": "#all-shorthand", - "dev": "#all-shorthand" - }, - "tests": "revert" - } - } - }, - - "css-cascade-5": { - "title": "CSS Cascading and Inheritance Level 5", - "links": { - "tr": "css-cascade-5", - "dev": "css-cascade-5" - }, - "status": { - "stability": "experimental" - }, - "values": { - "properties": [ - "color", - "font-weight", - "background-image", - "all" - ], - "revert-layer": { - "links": { - "tr": "#revert-layer", - "dev": "#revert-layer" - }, - "tests": "revert-layer" - } - }, - "properties": { - "all": { - "links": { - "tr": "#revert-layer", - "dev": "#revert-layer" - }, - "tests": "revert-layer" - } - }, - "@rules": { - "@layer": { - "links": { - "tr": "#at-layer", - "dev": "#at-layer" - }, - "tests": [ - "@layer framework {\n h1, h2 { color: maroon; background: white;\n}", - "@layer framework {\n h1, h2 { color: maroon; background: white;}\n \n @media (prefers-color-scheme: dark) {\n h1, h2 { color: red; background: black; }\n }\n}", - "@layer framework;", - "@layer default, framework;" - ] - } - } - }, - - "css-color-3": { - "title": "CSS Color Module Level 3", - "links": { - "tr": "css-color-3", - "dev": "css-color-3" - }, - "status": { - "stability": "stable", - "first-snapshot": 2007 - }, - "values": { - "properties": [ - "color", - "background-color", - "border-color", - "text-decoration-color", - "column-rule-color" - ], - "rgba": { - "links": { - "tr": "#rgba-color", - "dev": "#rgba-color", - "mdn": "color_value/rgba()" - }, - "tests": "rgba(0,0,0,.5)" - }, - "hsl": { - "links": { - "tr": "#hsl-color", - "dev": "#hsl-color", - "mdn": "color_value/hsl()" - }, - "tests": "hsl(0,0%,0%)" - }, - "hsla": { - "links": { - "tr": "#hsla-color", - "dev": "#hsla-color", - "mdn": "color_value/hsla()" - }, - "tests": "hsl(0,0%,0%,.5)" - }, - "currentColor": { - "links": { - "tr": "#currentcolor", - "dev": "#currentcolor", - "mdn": "color_value" - }, - "tests": "currentColor" - }, - "transparent": { - "links": { - "tr": "#transparent", - "dev": "#transparent", - "mdn": "color_value" - }, - "tests": "transparent" - } - }, - "properties": { - "opacity": { - "links": { - "tr": "#transparency", - "dev": "#transparency" - }, - "tests": ["-5", "0", ".5", "1", "2"] - } - } - }, - - "css-color-4": { - "title": "CSS Color Module Level 4", - "links": { - "tr": "css-color-4", - "dev": "css-color-4" - }, - "status": { - "stability": "stable" - }, - "values": { - "properties": [ - "color", - "background-color", - "border-color", - "text-decoration-color", - "column-rule-color" - ], - "comma-less colors": { - "links": { - "tr": "#funcdef-rgb", - "dev": "#funcdef-rgb", - "mdn": "color_value" - }, - "tests": ["rgb(0% 20% 70%)", "rgb(0 64 185)", "hsl(0 0% 0%)"] - }, - "/ alpha": { - "links": { - "tr": "#funcdef-rgb", - "dev": "#funcdef-rgb", - "mdn": "color_value" - }, - "tests": ["rgba(0% 20% 70% / 50%)", "rgba(0% 20% 70% / .5)", "rgba(0 64 185 / 50%)", "rgba(0 64 185 / .5)", "hsla(0 0% 0% /.5)"] - }, - "optional alpha": { - "links": { - "tr": "#funcdef-rgb", - "dev": "#funcdef-rgb", - "mdn": "color_value" - }, - "tests": ["rgb(0% 20% 70% / 50%)", "rgb(0% 20% 70% / .5)", "rgb(0 64 185 / 50%)", "rgb(0 64 185 / .5)", "hsl(0 0% 0% / .5)"] - }, - "Hex with alpha": { - "links": { - "tr": "#hex-notation", - "dev": "#hex-notation", - "mdn": "color_value" - }, - "tests": ["#000F", "#000000FF"] - }, - "rebeccapurple": { - "links": { - "tr": "#named-colors", - "dev": "#named-colors", - "mdn": "color_value" - }, - "tests": "rebeccapurple" - }, - "system colors": { - "links": { - "tr": "#css-system-colors", - "dev": "#css-system-colors", - "mdn": "color_value" - }, - "tests": [ - "Canvas", "CanvasText", "LinkText", "VisitedText", "ActiveText", "ButtonFace", "Field", "FieldText", - "Highlight", "HighlightText", "GrayText" - ] - }, - "hwb()": { - "links": { - "tr": "#the-hwb-notation", - "dev": "#the-hwb-notation", - "mdn": "color_value/hwb()" - }, - "tests": ["hwb(0 0% 0%)", "hwb(0 0% 0% / .5)"] - }, - "lab()": { - "links": { - "tr": "#specifying-lab-lch", - "dev": "#specifying-lab-lch", - "mdn": "color_value/lab()" - }, - "tests": ["lab(0% 0 0)", "lab(0% 0 0 /.5)"] - }, - "oklab()": { - "links": { - "tr": "#specifying-oklab-lch", - "dev": "#specifying-oklab-lch", - "mdn": "color_value/oklab()" - }, - "tests": ["oklab(0% 0 0)", "oklab(40.101% 0.1147 0.0453 / .5)"] - }, - - "lch()": { - "links": { - "tr": "#specifying-lch-lch", - "dev": "#specifying-lch-lch", - "mdn": "color_value/lch()" - }, - "tests": ["lch(0% 0 0)", "lch(none 0% none)", "lch(0% 0 0 / .5)"] - }, - "oklch()": { - "links": { - "tr": "#specifying-oklch-lch", - "dev": "#specifying-oklch-lch", - "mdn": "color_value/oklch()" - }, - "tests": ["oklch(0% 0 0)", "oklch(40.101% 0.12332 21.555 / .5)"] - }, - "color()": { - "links": { - "tr": "#color-function", - "dev": "#color-function", - "mdn": "color_value/color()" - }, - "tests": [ - "color(.2 .4 .6)", - "color(display-p3 .2. 4 .6)", - "color(foo .2 .4 .6)", - "color(.2 .4 .6 / .5)", - "color(display-p3 .2 .4 .6 / .5)", - "color(--foo .2 .4 .6 / .5)", - "color(.2 .4 .6, #123456)", - "color(display-p3 .2. 4 .6, #654321)", - "color(20% 40% 60%)", - "color(display-p3 20% 40% 60%)", - "color(foo 20% 40% 60%)", - "color(20% 40% 60% / .5)", - "color(image-p3 20% 40% 60% / .5)", - "color(--foo 20% 40% 60% / .5)", - "color(20% 40% 60%, #123456)", - "color(display-p3 20% 40% 60%, #654321)", - "color(--mycmyk 0% 20% 30% 5%)" - ] - }, - "device-cmyk()": { - "links": { - "tr": "#cmyk-colors", - "dev": "#cmyk-colors", - "mdn": "color_value/device-cmyk()" - }, - "tests": ["device-cmyk(.2 .3 .4 .5)", "device-cmyk(.2 .3 .4 .5 / .5)", "device-cmyk(.2 .3 .4 .5 / 50%)"] - } - }, - "properties": { - "opacity": { - "links": { - "tr": "#transparency", - "dev": "#transparency" - }, - "tests": ["45%"] - } - } - }, - - "css-color-5": { - "title": "CSS Color Module Level 5", - "links": { - "dev": "css-color-5" - }, - "status": { - "stability": "experimental" - }, - "values": { - "properties": [ - "color", - "background-color", - "border-color", - "text-decoration-color", - "column-rule-color" - ], - "color-mix()": { - "links": { - "dev": "#color-mix", - "mdn": "color_value" - }, - "tests": [ - "color-mix(in srgb, teal 65%, olive)", - "color-mix(in srgb, rgb(255, 0, 0, .2) 65%, olive)", - "color-mix(in srgb, currentColor, rgba(0, 0, 0, .5) 65%", - "color-mix(in srgb, currentColor 10%, rgba(0, 0, 0, .5) 65%", - "color-mix(in lch, teal 65%, olive)", - "color-mix(in hsl, teal 65%, olive)", - "color-mix(in hwb, teal 65%, olive)", - "color-mix(in xyz, teal 65%, olive)", - "color-mix(in lab, teal 65%, olive)", - ] - }, - "color-contrast()": { - "links": { - "dev": "#colorcontrast", - "mdn": "color_value" - }, - "tests": [ - "color-contrast(wheat vs tan, sienna, #b22222, #d2691e)", - "color-contrast(hsl(200 50% 80%) vs hsl(200 83% 23%), purple, hsl(300 100% 25%))" - ] - }, - "color-adjust()": { - "links": { - - "dev": "#coloradjust", - "mdn": "color_value" - }, - "tests": [ - "color-adjust(peru lightness -20%)" - ] - }, - - "relative color": { - "links": { - "dev": "#relative-colors", - "mdn": "color_value" - }, - "tests": [ - "rgb(from indianred 255 g b)", - "hsl(from lightseagreen calc(h+180) s l)", - "lab(from orchid l 0 0)", - "lch(from peru calc(l * 0.8) c h)" - ] - } - } - }, - - "css-color-adjust-1": { - "title": "CSS Color Adjustment Module Level 1", - "links": { - "tr": "css-color-adjust-1", - "dev": "css-color-adjust-1" - }, - "status": { - "stability": "stable" - }, - "properties": { - "color-adjust": { - "links": { - "tr": "#perf", - "dev": "#perf" - }, - "tests": ["economy", "exact"] - }, - "forced-color-adjust": { - "links": { - "tr": "#forced", - "dev": "#forced" - }, - "tests": ["auto", "none", "preserve-parent-color"] - }, - "color-scheme": { - "links": { - "tr": "#color-scheme-prop", - "dev": "#color-scheme-prop" - }, - "tests": [ - "normal", "light", "dark", "light dark", "dark light", "only light", "light only", - "light light", "dark dark", "light purple", "purple dark interesting", "none", "light none" - ] - } - } - }, - - "css-conditional-3": { - "title": "CSS Conditional Rules Module Level 3", - "links": { - "tr": "css3-conditional", - "dev": "css-conditional-3" - }, - "status": { - "stability": "stable", - "first-snapshot": 2015 - }, - "@rules": { - "@supports": { - "links": { - "tr": "#at-supports", - "dev": "#at-supports" - }, - "tests": [ - "@supports (color: green) {}", - "@supports not (foo: bar) {}", - "@supports (color: green) or (color: red) {}", - "@supports (color: green) and (color: red) {}", - "@supports (color: green) and (not (foo: bar)) {}", - "@supports (color: green) or (not (foo: bar)) {}" - ] - } - } - }, - - "css-conditional-4": { - "title": "CSS Conditional Rules Module Level 4", - "links": { - "tr": "css-conditional-4", - "dev": "css-conditional-4" - }, - "status": { - "stability": "experimental" - }, - "@rules": { - "@supports": { - "links": { - "tr": "#at-supports-ext", - "dev": "#at-supports-ext" - }, - "tests": [ - "@supports selector(::before) {}", - "@supports not selector(::-webkit-unknown-pseudo) {}", - "@supports selector(div, div) {}" - ] - } - } - }, - - "css-conditional-5": { - "title": "CSS Conditional Rules Module Level 5", - "links": { - "tr": "css-conditional-5", - "dev": "css-conditional-5" - }, - "status": { - "stability": "experimental" - }, - "@rules": { - "@supports": { - "links": { - "tr": "#at-supports-ext", - "dev": "#at-supports-ext" - }, - "tests": [ - "@supports font-tech(features-opentype) {}", - "@supports font-format(woff2) {}" - ] - }, - "@when": { - "links": { - "tr": "#when-rule", - "dev": "#when-rule" - }, - "tests": [ - "@when media(min-width: 200px) {}", - "@when media(width >= 200px) {}", - "@when media(pointer) {}", - "@when supports(display: flex) {}" - ] - }, - "@else": { - "links": { - "tr": "#else-rule", - "dev": "#else-rule" - }, - "tests": [ - "@when media(min-width: 200px) {} @else {}", - "@when media(min-width: 200px) {} @else media(min-width: 100px) {}", - "@when media(min-width: 200px) {} @else media(min-width >= 100px) {}", - "@when media(min-width: 200px) {} @else supports(display: flex) {}", - "@when media(min-width: 200px) {} @else media(min-width: 100px) {} @else {}" - ] - } - } - }, - - "css-containment-1": { - "title": "CSS Containment Module Level 1", - "links": { - "tr": "css-contain-1", - "dev": "css-contain-1" - }, - "status": { - "stability": "stable", - "first-snapshot": 2020 - }, - "properties": { - "contain": { - "links": { - "tr": "#contain-property", - "dev": "#contain-property" - }, - "tests": [ - "none", "strict", "content", "size", "layout", "paint", - "size layout", "size paint", "size layout paint" - ] - } - } - }, - - "css-containment-2": { - "title": "CSS Containment Module Level 2", - "links": { - "tr": "css-contain-2", - "dev": "css-contain-2" - }, - "status": { - "stability": "experimental" - }, - "properties": { - "contain": { - "links": { - "tr": "#contain-property", - "dev": "#contain-property" - }, - "tests": [ - "style", - "size style", "size layout style", "size layout style paint" - ] - }, - "content-visibility": { - "links": { - "tr": "#content-visibility", - "dev": "#content-visibility" - }, - "tests": ["visible", "auto", "hidden"] - } - } - }, - - "css-containment-3": { - "title": "CSS Containment Module Level 3", - "links": { - "tr": "css-contain-3", - "dev": "css-contain-3" - }, - "status": { - "stability": "experimental" - }, - "@rules": { - "@container": { - "links": { - "tr": "#container-rule", - "dev": "#container-rule" - }, - "tests": [ - "@container size(width >= 150px) { div { margin: 10px } }", - "@container size(height >= 150px) { div { margin: 10px } }", - "@container size(inline-size >= 150px) { div { margin: 10px } }", - "@container size(block-size >= 150px) { div { margin: 10px } }", - "@container size(aspect-ratio >= 1 / 1) { div { margin: 10px } }", - "@container size(orientation = portrait) { div { margin: 10px } }", - "@container style(pointer) { div { margin: 10px } }", - "@container style(pointer: fine) { div { margin: 10px } }", - "@container x size(width >= 150px) { div { margin: 10px } }", - "@container name(x) size(width >= 150px) { div { margin: 10px } }", - "@container type(inline-size) size(width >= 150px) { div { margin: 10px } }", - "@container name(x) type(inline-size) size(width >= 150px) { div { margin: 10px } }" - ] - } - }, - "values": { - "properties": [ - "width" - ], - "cqw": { - "links": { - "tr": "#container-lengths", - "dev": "#container-lengths", - "mdn": "length" - }, - "tests": "5cqw" - }, - "cqh": { - "links": { - "tr": "#container-lengths", - "dev": "#container-lengths", - "mdn": "length" - }, - "tests": "5cqh" - }, - "cqi": { - "links": { - "tr": "#container-lengths", - "dev": "#container-lengths", - "mdn": "length" - }, - "tests": "5cqi" - }, - "cqb": { - "links": { - "tr": "#container-lengths", - "dev": "#container-lengths", - "mdn": "length" - }, - "tests": "5cqb" - }, - "cqmin": { - "links": { - "tr": "#container-lengths", - "dev": "#container-lengths", - "mdn": "length" - }, - "tests": "5cqmin" - }, - "cqmax": { - "links": { - "tr": "#container-lengths", - "dev": "#container-lengths", - "mdn": "length" - }, - "tests": "5cqmax" - } - }, - "properties": { - "container-type": { - "links": { - "tr": "#container-type", - "dev": "#container-type" - }, - "tests": [ - "none", - "style", - "state", - "size", - "inline-size", - "block-size", - "style state", - "style state size", - "style state inline-size", - "style state block-size" - ] - }, - "container-name": { - "links": { - "tr": "#container-name", - "dev": "#container-name" - }, - "tests": [ - "none", - "x", - "\"x\"", - "x y" - ] - }, - "container": { - "links": { - "tr": "#container-shorthand", - "dev": "#container-shorthand" - }, - "tests": [ - "none", - "style", - "size / x" - ] - } - } - }, - - "css-content-3": { - "title": "CSS Generated Content Module Level 3", - "links": { - "tr": "css-content-3", - "dev": "css-content-3" - }, - "status": { - "stability": "experimental" - }, - "properties": { - "quotes": { - "links": { - "tr": "#quotes", - "dev": "#quotes" - }, - "tests": ["auto"] - }, - "content": { - "links": { - "tr": "#alt", - "dev": "#alt" - }, - "tests": [ - "url(./img/star.png) / \"New!\"", - "\"\\25BA\" / \"\"" - ] - } - } - }, - - "css-counter-styles-3": { - "title": "CSS Counter Styles Level 3", - "links": { - "tr": "css-counter-styles-3", - "dev": "css-counter-styles-3" - }, - "status": { - "stability": "stable", - "first-snapshot": 2021 - }, - "@rules": { - "@counter-style": { - "links": { - "tr": "#the-counter-style-rule", - "dev": "#the-counter-style-rule" - }, - "tests": "@counter-style foo {\n system: numeric;\n symbols: '0' '1' '2' '3' '4' '5' '6' '7' '8' '9';\n}" - } - }, - "descriptors": { - "@counter-style example/system": { - "links": { - "tr": "#counter-style-system", - "dev": "#counter-style-system" - }, - "required" : { - '*' : { "descriptor" : "system: alphabetic; symbols: A B C D; additive-symbols: 1000 M, 500 C"}, - 'extends decimal' : { } - }, - "tests": [ - "cyclic", "numeric", "alphabetic", "symbolic", "additive", "fixed 3", "extends decimal" - ] - }, - "@counter-style example/negative": { - "links": { - "tr": "#counter-style-negative", - "dev": "#counter-style-negative" - }, - "required" : { - '*' : { "descriptor" : "system: alphabetic; symbols: A B C D; additive-symbols: 1000 M, 500 C"} - }, - "tests": [ - "'-'", "'(' ')'" - ] - }, - "@counter-style example/prefix": { - "links": { - "tr": "#counter-style-prefix", - "dev": "#counter-style-prefix" - }, - "required" : { - '*' : { "descriptor" : "system: alphabetic; symbols: A B C D; additive-symbols: 1000 M, 500 C"} - }, - "tests": [ - "»", "url(https://lea.verou.me/mark.svg)" - ] - }, - "@counter-style example/suffix": { - "links": { - "tr": "#counter-style-suffix", - "dev": "#counter-style-suffix" - }, - "required" : { - '*' : { "descriptor" : "system: alphabetic; symbols: A B C D; additive-symbols: 1000 M, 500 C"} - }, - "tests": [ - "»", "url(https://lea.verou.me/mark.svg)" - ] - }, - "@counter-style example/range": { - "links": { - "tr": "#counter-style-range", - "dev": "#counter-style-range" - }, - "required" : { - '*' : { "descriptor" : "system: alphabetic; symbols: A B C D; additive-symbols: 1000 M, 500 C"} - }, - "tests": [ - "auto", "2 5", "infinite 10", "10 infinite", "infinite infinite", "2 5, 8 10", "infinite 8, 6 infinite" - ] - }, - "@counter-style example/symbols": { - "links": { - "tr": "#counter-style-symbols", - "dev": "#counter-style-symbols" - }, - "required" : { - '*' : { "descriptor" : "system: alphabetic"}, - 'custom-numbers' : { "rule" : "@counter-style custom-numbers { system: fixed; symbols: A B C D E;}"} - }, - "tests": [ - "A B C D E F", - "'\\24B6' '\\24B7' '\\24B8' D E F", - "'0' '1' '2' '4' '5' '6' '7'", - "'1' url('second.svg') '2'", - "url('first.svg') url('second.svg') url('third.svg')", - "custom-numbers" - ] - }, - "@counter-style example/additive-symbols": { - "links": { - "tr": "#additive-system", - "dev": "#descdef-counter-style-additive-symbols" - }, - "required" : { - '*' : { "descriptor" : "system: additive"} - }, - "tests": [ - "3 '0'", "3 '1', 2 '\\2E\\20'", "3 '1', 2 url(symbol.svg)", - ] - }, - "@counter-style example/pad": { - "links": { - "tr": "#counter-style-pad", - "dev": "#counter-style-pad" - }, - "required" : { - '*' : { "descriptor" : "system: alphabetic; symbols: A B C D; additive-symbols: 1000 M, 500 C"} - }, - "tests": [ - "0 ''", "3 '0'", "'0' 3" - ] - }, - "@counter-style example/fallback": { - "links": { - "tr": "#counter-style-fallback", - "dev": "#counter-style-fallback" - }, - "required" : { - '*' : { "descriptor" : "system: alphabetic; symbols: A B C D; additive-symbols: 1000 M, 500 C"} - }, - "tests": [ - "decimal" - ] - }, - "@counter-style example/speak-as": { - "links": { - "tr": "#counter-style-speak-as", - "dev": "#counter-style-speak-as" - }, - "required" : { - '*' : { "descriptor" : "system: alphabetic; symbols: A B C D; additive-symbols: 1000 M, 500 C"} - }, - "tests": [ - "auto", "bullets", "numbers", "words", "spell-out", "example-counter", - ] - } - } - }, - - "css-display-3": { - "title": "CSS Display Module Level 3", - "links": { - "tr": "css-display-3", - "dev": "css-display-3" - }, - "status": { - "stability": "stable" - }, - "properties": { - "display": { - "links": { - "tr": "#the-display-properties", - "dev": "#the-display-properties" - }, - "tests": [ - "run-in", "flow", "flow-root", - "block flow", "inline flow", "run-in flow", - "block flow-root", "inline flow-root", "run-in flow-root", - "block table", "inline table", "run-in table", - "block flex", "inline flex", "run-in flex", - "block grid", "inline grid", "run-in grid", - "block ruby", "inline ruby", "run-in ruby", - "inline list-item", "list-item inline flow", "list-item block flow" - ] - } - } - }, - - "css-easing-1": { - "title": "CSS Easing Functions Level 1", - "links": { - "tr": "css-easing-1", - "dev": "css-easing-1" - }, - "status": { - "stability": "stable", - "first-snapshot": 2020 - }, - "properties": { - "transition-timing-function": { - "links": { - "tr": "#easing-functions", - "dev": "#easing-functions" - }, - "tests": ["steps(2, jump-start)", "steps(2, jump-end)", "steps(1, jump-both)", "steps(2, jump-none)"] - } - } - }, - - "css-env-1": { - "title": "Environment Variables Level 1", - "links": { - "dev": "css-env-1" - }, - "status": { - "stability": "experimental" - }, - "values": { - "properties": [ - "width", - "padding" - ], - "env()": { - "links": { - "dev": "#env-function" - }, - "tests": [ - "env(safe-area-inset-top)", "env(safe-area-inset-top, 12px)", - "env(safe-area-inset-right)", "env(safe-area-inset-right, 12px)", - "env(safe-area-inset-bottom)", "env(safe-area-inset-bottom, 12px)", - "env(safe-area-inset-left)", "env(safe-area-inset-left, 12px)" - ] - } - } - }, - - "css-exclusions-1": { - "title": "CSS Exclusions Module Level 1", - "links": { - "tr": "css3-exclusions", - "dev": "css-exclusions-1" - }, - "status": { - "stability": "experimental" - }, - "properties": { - "wrap-flow": { - "links": { - "tr": "#wrap-flow-property", - "dev": "#wrap-flow-property" - }, - "tests": ["auto", "both", "start", "end", "minimum", "maximum", "clear"] - }, - "wrap-through": { - "links": { - "tr": "#wrap-through-property", - "dev": "#wrap-through-property" - }, - "tests": ["wrap", "none"] - } - } - }, - - "css-flexbox-1": { - "title": "CSS Flexible Box Layout Module Level 1", - "links": { - "tr": "css-flexbox-1", - "dev": "css-flexbox-1", - "mdn": "Glossary/Flexbox" - }, - "status": { - "stability": "stable", - "first-snapshot": 2018 - }, - "properties": { - "align-content": { - "links": { - "tr": "#align-content-property", - "dev": "#align-content-property" - }, - "tests": ["flex-start", "flex-end", "space-between", "space-around"] - }, - "align-items": { - "links": { - "tr": "#align-items-property", - "dev": "#align-items-property" - }, - "tests": ["flex-start", "flex-end"] - }, - "align-self": { - "links": { - "tr": "#align-items-property", - "dev": "#align-items-property" - }, - "tests": ["flex-start", "flex-end"] - }, - "display": { - "links": { - "tr": "#flex-containers", - "dev": "#flex-containers" - }, - "tests": ["flex", "inline-flex"] - }, - "flex": { - "links": { - "tr": "#flex-property", - "dev": "#flex-property" - }, - "tests": ["none", "5 7 10%"] - }, - "flex-basis": { - "links": { - "tr": "#flex-basis-property", - "dev": "#flex-basis-property" - }, - "tests": ["auto", "content", "1px"] - }, - "flex-direction": { - "links": { - "tr": "#flex-direction-property", - "dev": "#flex-direction-property" - }, - "tests": ["row", "row-reverse", "column", "column-reverse"] - }, - "flex-flow": { - "links": { - "tr": "#flex-flow-property", - "dev": "#flex-flow-property" - }, - "tests": ["row", "row-reverse", "column", "column-reverse", "wrap", "wrap-reverse"] - }, - "flex-grow": { - "links": { - "tr": "#flex-grow-property", - "dev": "#flex-grow-property" - }, - "tests": ["0", "5"] - }, - "flex-shrink": { - "links": { - "tr": "#flex-shrink-property", - "dev": "#flex-shrink-property" - }, - "tests": ["1", "10"] - }, - "flex-wrap": { - "links": { - "tr": "#flex-wrap-property", - "dev": "#flex-wrap-property" - }, - "tests": ["nowrap", "wrap", "wrap-reverse"] - }, - "justify-content": { - "links": { - "tr": "#justify-content-property", - "dev": "#justify-content-property" - }, - "tests": ["flex-start", "flex-end", "space-between", "space-around"] - }, - "min-height": { - "links": { - "tr": "#min-size-auto", - "dev": "#min-size-auto" - }, - "tests": ["auto"] - }, - "min-width": { - "links": { - "tr": "#min-size-auto", - "dev": "#min-size-auto" - }, - "tests": ["auto"] - }, - "order": { - "links": { - "tr": "#order-property", - "dev": "#order-property" - }, - "tests": ["0", "1"] - } - } - }, - - "css-fonts-3": { - "title": "CSS Fonts Module Level 3", - "links": { - "tr": "css-fonts-3", - "dev": "css-fonts-3" - }, - "status": { - "stability": "stable", - "first-snapshot": 2015 - }, - "properties": { - "font-stretch": { - "links": { - "tr": "#font-stretch-prop", - "dev": "#font-stretch-prop" - }, - "tests": [ - "normal", "ultra-condensed", "extra-condensed", "condensed", "semi-condensed", "semi-expanded", - "expanded", "extra-expanded", "ultra-expanded" - ] - }, - "font-size-adjust": { - "links": { - "tr": "#font-size-adjust-prop", - "dev": "#font-size-adjust-prop" - }, - "tests": ["none", ".5"] - }, - "font-synthesis": { - "links": { - "tr": "#font-synthesis-prop", - "dev": "#font-synthesis-prop" - }, - "tests": ["none", "weight", "style", "weight style", "style weight"] - }, - "font-kerning": { - "links": { - "tr": "#font-kerning-prop", - "dev": "#font-kerning-prop" - }, - "tests": ["auto", "normal", "none"] - }, - "font-variant-position": { - "links": { - "tr": "#font-variant-position-prop", - "dev": "#font-variant-position-prop" - }, - "tests": ["normal", "sub", "super"] - }, - "font-variant-ligatures": { - "links": { - "tr": "#font-variant-ligatures-prop", - "dev": "#font-variant-ligatures-prop" - }, - "tests": [ - "normal", "none", - "common-ligatures", "no-common-ligatures", - "discretionary-ligatures", "no-discretionary-ligatures", - "historical-ligatures", "no-historical-ligatures", - "contextual", "no-contextual", - "common-ligatures discretionary-ligatures historical-ligatures contextual" - ] - }, - "font-variant-caps": { - "links": { - "tr": "#font-variant-caps-prop", - "dev": "#font-variant-caps-prop" - }, - "tests": [ - "normal", "small-caps", "all-small-caps", "petite-caps", "all-petite-caps", "titling-caps", "unicase" - ] - }, - "font-variant-numeric": { - "links": { - "tr": "#font-variant-numeric-prop", - "dev": "#font-variant-numeric-prop" - }, - "tests": [ - "normal", - "lining-nums", "oldstyle-nums", - "proportional-nums", "tabular-nums", - "diagonal-fractions", "stacked-fractions", - "ordinal", "slashed-zero", - "lining-nums proportional-nums diagonal-fractions", - "oldstyle-nums tabular-nums stacked-fractions ordinal slashed-zero", - "slashed-zero ordinal tabular-nums stacked-fractions oldstyle-nums" - ] - }, - "font-variant-east-asian": { - "links": { - "tr": "#font-variant-east-asian-prop", - "dev": "#font-variant-east-asian-prop" - }, - "tests": [ - "normal", - "jis78", "jis83", "jis90", "jis04", "simplified", "traditional", - "full-width", "proportional-width", - "ruby", "simplified full-width ruby" - ] - }, - - "font-feature-settings": { - "links": { - "tr": "#font-feature-settings-prop", - "dev": "#font-feature-settings-prop" - }, - "tests": ["normal", "'c2sc'", "'smcp' on", "'liga' off", "'smcp', 'swsh' 2"] - } - }, - "descriptors": { - "@font-face/src": { - "links": { - "tr": "#descdef-src", - "dev": "#descdef-src" - }, - "tests": [ - "url(http://example.com/fonts/Gentium.woff)", - "url(ideal-sans-serif.woff2) format(\"woff2\"), url(good-sans-serif.woff) format(\"woff\"), url(basic-sans-serif.ttf) format(\"opentype\")", - "local(Gentium), url(Gentium.woff)" - ] - }, - "@font-face/font-family": { - "links": { - "tr": "#descdef-font-family", - "dev": "#descdef-font-family" - }, - "tests": ["Gentium"] - }, - "@font-face/font-style": { - "links": { - "tr": "#font-prop-desc", - "dev": "#font-prop-desc" - }, - "tests": ["normal", "italic", "oblique "] - }, - "@font-face/font-weight": { - "links": { - "tr": "#font-prop-desc", - "dev": "#font-prop-desc" - }, - "tests": ["normal", "bold", "100", "200", "300", "400", "500", "600", "700", "800", "900"] - }, - "@font-face/font-stretch": { - "links": { - "tr": "#font-prop-desc", - "dev": "#font-prop-desc" - }, - "tests": [ - "normal", "ultra-condensed", "extra-condensed", "condensed", "semi-condensed", "semi-expanded", - "expanded", "extra-expanded", "ultra-expanded " - ] - }, - "@font-face/font-feature-settings": { - "links": { - "tr": "#font-rend-desc", - "dev": "#font-rend-desc" - }, - "tests": ["normal", "'c2sc'", "'smcp' on", "'liga' off", "'smcp', 'swsh' 2"] - }, - "@font-face/font-variation-settings": { - "links": { - "tr": "#font-rend-desc", - "dev": "#font-rend-desc" - }, - "tests": ["normal", "'swsh' 2"] - }, - "@font-face/unicode-range": { - "links": { - "tr": "#unicode-range-desc", - "dev": "#unicode-range-desc" - }, - "tests": ["U+416", "U+0-7F", "U+A5, U+4E00-9FFF", "U+30??"] - } - }, - "@rules": { - "@font-face": { - "links": { - "tr": "#font-face-rule", - "dev": "#font-face-rule" - }, - "tests": "@font-face {\n font-family: foo;\n src: local('Arial');\n}" - } - } - }, - - "css-fonts-4": { - "title": "CSS Fonts Module Level 4", - "links": { - "tr": "css-fonts-4", - "dev": "css-fonts-4" - }, - "status": { - "stability": "stable" - }, - "properties": { - "font-size": { - "links": { - "tr": "#font-size-prop", - "dev": "#font-size-prop" - }, - "tests": ["xxx-large"] - }, - "font-variant": { - "links": { - "tr": "#font-variant-prop", - "dev": "#font-variant-prop" - }, - "tests": [ - "none", "all-petite-caps", "historical-forms", "super", - "sub lining-nums contextual ruby", - "annotation(circled)", - "discretionary-ligatures character-variant(leo-B, leo-M, leo-N, leo-T, leo-U)" - ] - }, - "font-variant-alternates": { - "links": { - "tr": "#font-variant-alternates-prop", - "dev": "#font-variant-alternates-prop" - }, - "tests": [ - "normal", "historical-forms", - "styleset(ss01)", "styleset(stacked-g, geometric-m)", - "character-variant(cv02)", "character-variant(beta-3, gamma)", - "swash(flowing)", "ornaments(leaves)", "annotation(blocky)" - ] - }, - "font-feature-settings": { - "links": { - "tr": "#font-feature-settings-prop", - "dev": "#font-feature-settings-prop" - }, - "tests": ["normal", "'swsh' 2"] - }, - "font-language-override": { - "links": { - "tr": "#font-language-override", - "dev": "#font-language-override" - }, - "tests": ["normal", "'SRB'"] - }, - "font-weight": { - "links": { - "tr": "#font-weight-prop", - "dev": "#font-weight-prop" - }, - "tests": ["1", "90", "750", "1000"] - }, - "font-style": { - "links": { - "tr": "#font-style-prop", - "dev": "#font-style-prop" - }, - "tests": ["oblique 15deg", "oblique -15deg", "oblique 0deg"] - }, - "font-optical-sizing": { - "links": { - "tr": "#font-optical-sizing-def", - "dev": "#font-optical-sizing-def" - }, - "tests": ["none", "auto"] - }, - "font-palette": { - "links": { - "tr": "#font-palette-prop", - "dev": "#font-palette-prop" - }, - "tests": ["normal", "light", "dark"] - } - }, - "@rules": { - "@font-feature-values": { - "links": { - "tr": "#font-feature-values", - "dev": "#font-feature-values" - }, - "tests": "@font-feature-values Jupiter Sans {\n @styleset {\n some-style: 1;\n }\n}" - }, - "@font-palette-values": { - "links": { - "tr": "#font-palette-values", - "dev": "#font-palette-values" - }, - "tests": "@font-palette-values Augusta {\n font-family: Handover Sans;\n base-palette: 3;\n}" - }, - }, - "descriptors": { - "@font-face/ascent-override": { - "links": { - "tr": "#descdef-font-face-ascent-override", - "dev": "#descdef-font-face-ascent-override" - }, - "tests": ["normal", "125%"] - }, - "@font-face/descent-override": { - "links": { - "tr": "#descdef-font-face-descent-override", - "dev": "#descdef-font-face-descent-override" - }, - "tests": ["normal", "125%"] - }, - "@font-face/line-gap-override": { - "links": { - "tr": "#descdef-font-face-line-gap-override", - "dev": "#descdef-font-face-line-gap-override" - }, - "tests": ["normal", "90%"] - }, - "@font-face/font-named-instance": { - "links": { - "tr": "#font-named-instance", - "dev": "#font-named-instance" - }, - "tests": ["auto", "'Grotesque'"] - }, - "@font-face/font-display": { - "links": { - "tr": "#descdef-font-face-font-display", - "dev": "#descdef-font-face-font-display" - }, - "tests": ["auto", "block", "swap", "fallback", "optional"] - }, - "@font-feature-values/font-display": { - "links": { - "tr": "#font-display-font-feature-values", - "dev": "#font-display-font-feature-values" - }, - "tests": ["auto", "block", "swap", "fallback", "optional"] - } - } - }, - - "css-fonts-5": { - "title": "CSS Fonts Module Level 5", - "links": { - "dev": "css-fonts-5" - }, - "status": { - "stability": "experimental" - }, - "properties": { - "font-size-adjust": { - "links": { - "dev": "#font-size-adjust-prop" - }, - "tests": [ - "ex-height 0.545", "ex-height from-font", - "cap-height 0.545", "cap-height from-font", - "ch-width 0.545", "ch-width from-font", - "ic-width 0.545", "ic-width from-font", - "ic-height 0.545", "ic-height from-font" - ] - }, - }, - "descriptors": { - "@font-face/size-adjust": { - "links": { - "dev": "#size-adjust-desc" - }, - "tests": ["100%"] - }, - } - }, - - "css-grid-1": { - "title": "CSS Grid Layout Module Level 1", - "links": { - "tr": "css-grid-1", - "dev": "css-grid-1", - "mdn": "Glossary/Grid" - }, - "status": { - "stability": "stable" - }, - "properties": { - "display": { - "links": { - "tr": "#grid-containers", - "dev": "#grid-containers" - }, - "tests": ["grid", "inline-grid"] - }, - "grid-template-columns": { - "links": { - "tr": "#track-sizing", - "dev": "#track-sizing" - }, - "tests": [ - "none", "auto", "100px", "1fr", "100px 1fr auto", - "repeat(2, 100px 1fr)", - "repeat(4, 10px [col-start] 250px [col-end]) 10px", - "100px 1fr max-content minmax(min-content, 1fr)", - "repeat(auto-fill, minmax(25ch, 1fr))", - "10px [col-start] 250px [col-end]", - "[first nav-start] 150px [main-start] 1fr [last]", - "10px [col-start] 250px [col-end] 10px [col-start] 250px [col-end] 10px", - "[a] auto [b] minmax(min-content, 1fr) [b c d] repeat(2, [e] 40px) repeat(5, auto)" - ] - }, - "grid-template-rows": { - "links": { - "tr": "#track-sizing", - "dev": "#track-sizing" - }, - "tests": [ - "none", "auto", "100px", "1fr", "100px 1fr auto", - "repeat(2, 100px 1fr)", - "100px 1fr max-content minmax(min-content, 1fr)", - "10px [row-start] 250px [row-end]", - "[first header-start] 50px [main-start] 1fr [footer-start] 50px [last]" - ] - }, - "grid-template-areas": { - "links": { - "tr": "#grid-template-areas-property", - "dev": "#grid-template-areas-property" - }, - "tests": ["none", "'articles'", "'head head'", "'head head' 'nav main' 'foot ....'"] - }, - "grid-template": { - "links": { - "tr": "#explicit-grid-shorthand", - "dev": "#explicit-grid-shorthand" - }, - "tests": ["none", "auto 1fr auto / auto 1fr", "[header-top] 'a a a' [header-bottom] [main-top] 'b b b' 1fr [main-bottom] / auto 1fr auto"] - }, - "grid-auto-columns": { - "links": { - "tr": "#auto-tracks", - "dev": "#auto-tracks" - }, - "tests": [ - "auto", "1fr", "100px", "max-content", "minmax(min-content, 1fr)", "min-content max-content auto", - "100px 150px 390px", "100px minmax(100px, auto) 10% 0.5fr fit-content(400px)" - ] - }, - "grid-auto-rows": { - "links": { - "tr": "#auto-tracks", - "dev": "#auto-tracks" - }, - "tests": [ - "auto", "1fr", "100px", "100px 30%", "100px 30% 1em", "min-content", "minmax(min-content, 1fr)", - "min-content max-content auto", "100px minmax(100px, auto) 10% 0.5fr fit-content(400px)" - ] - }, - "grid-auto-flow": { - "links": { - "tr": "#grid-auto-flow-property", - "dev": "#grid-auto-flow-property" - }, - "tests": ["row", "column", "row dense", "column dense"] - }, - "grid": { - "links": { - "tr": "#grid-shorthand", - "dev": "#grid-shorthand" - }, - "tests": [ - "auto-flow 1fr / 100px", - "none / auto-flow 1fr", - "auto-flow / auto 1fr", - "repeat(auto-fill, 5em) / auto-flow 1fr", - " auto-flow 1fr / repeat(auto-fill, 5em)", - "'H H ' 'A B ' 'F F ' 30px / auto 1fr" - ] - }, - "grid-row-start": { - "links": { - "tr": "#line-placement", - "dev": "#line-placement" - }, - "tests": ["auto", "4", "C", "C 2", "span C", "span 1"] - }, - "grid-column-start": { - "links": { - "tr": "#line-placement", - "dev": "#line-placement" - }, - "tests": ["auto", "4", "C", "C 2", "span C", "span 1"] - }, - "grid-row-end": { - "links": { - "tr": "#line-placement", - "dev": "#line-placement" - }, - "tests": ["auto", "4", "C", "C 2", "span C", "span 1"] - }, - "grid-column-end": { - "links": { - "tr": "#line-placement", - "dev": "#line-placement" - }, - "tests": ["auto", "4", "C", "C 2", "span C", "span 1"] - }, - "grid-column": { - "links": { - "tr": "#placement-shorthands", - "dev": "#placement-shorthands" - }, - "tests": ["auto", "1", "-1", "1 / 1", "1 / -1", "auto / auto", "2 / span 2"] - }, - "grid-row": { - "links": { - "tr": "#placement-shorthands", - "dev": "#placement-shorthands" - }, - "tests": ["auto", "1", "-1", "1 / 1", "1 / -1", "auto / auto", "2 / span 2"] - }, - "grid-area": { - "links": { - "tr": "#placement-shorthands", - "dev": "#placement-shorthands" - }, - "tests": ["1 / 1", "1 / span 1", "span / 10 / -1"] - }, - "grid-column-gap": { - "links": { - "tr": "#gutters", - "dev": "#gutters" - }, - "tests": ["0", "1em"] - }, - "grid-row-gap": { - "links": { - "tr": "#gutters", - "dev": "#gutters" - }, - "tests": ["0", "1em"] - }, - "grid-gap": { - "links": { - "tr": "#gutters", - "dev": "#gutters" - }, - "tests": ["0 0", "0 1em", "1em", "1em 1em"] - } - } - }, - - "css-grid-2": { - "title": "CSS Grid Layout Module Level 2", - "links": { - "tr": "css-grid-2", - "dev": "css-grid-2", - "mdn": "Glossary/Grid" - }, - "status": { - "stability": "stable" - }, - "properties": { - "grid-template-columns": { - "links": { - "tr": "#subgrid-per-axis", - "dev": "#subgrid-per-axis" - }, - "tests": [ - "subgrid", - "subgrid [sub-a]", - "subgrid [sub-a] [sub-b]", - "subgrid repeat(1, [sub-a])", - "subgrid repeat(2, [sub-a] [sub-b]) [sub-c]", - "subgrid repeat(auto-fill, [sub-a] [sub-b])", - "subgrid [sub-a] repeat(auto-fill, [sub-b] [sub-c] [sub-d]) [sub-e] repeat(1, [sub-g])" - ] - }, - "grid-template-rows": { - "links": { - "tr": "#subgrid-per-axis", - "dev": "#subgrid-per-axis" - }, - "tests": [ - "subgrid", - "subgrid [sub-a]", - "subgrid [sub-a] [sub-b]", - "subgrid repeat(1, [sub-a])", - "subgrid repeat(2, [sub-a] [sub-b]) [sub-c]", - "subgrid repeat(auto-fill, [sub-a] [sub-b])", - "subgrid [sub-a] repeat(auto-fill, [sub-b] [sub-c] [sub-d]) [sub-e] repeat(1, [sub-g])" - ] - } - } - }, - - "css-grid-3": { - "title": "CSS Grid Layout Module Level 3", - "links": { - "dev": "css-grid-3", - }, - "status": { - "stability": "experimental" - }, - "properties": { - "grid-template-columns": { - "links": { - "dev": "#masonry-layout" - }, - "tests": ["masonry"] - }, - "grid-template-rows": { - "links": { - "dev": "#masonry-layout" - }, - "tests": ["masonry "] - }, - "masonry-auto-flow": { - "links": { - "dev": "#masonry-auto-flow" - }, - "tests": [ - "pack", "next", "definite-first", "ordered", - "pack definite-first", "pack ordered", "next definite-first", "next ordered", - "ordered pack", - ] - }, - "align-tracks": { - "links": { - "dev": "#tracks-alignment" - }, - "tests": [ - "normal", - "baseline", "first baseline", "last baseline", - "space-between", "space-around", "space-evenly", "stretch", - "center", "start", "end", "flex-start", "flex-end", - "unsafe center", "safe start" - ] - }, - "justify-tracks": { - "links": { - "dev": "#tracks-alignment" - }, - "tests": [ - "normal", - "space-between", "space-around", "space-evenly", "stretch", - "center", "start", "end", "flex-start", "flex-end", "left", "right", - "unsafe center", "safe start" - ] - } - } - }, - - "css-highlight-api-1": { - "title": "CSS Custom Highlight API Module Level 1", - "links": { - "tr": "css-highlight-api-1", - "dev": "css-highlight-api-1" - }, - "status": { - "stability": "experimental" - }, - "selectors": { - '::highlight()' : { - "links": { - "tr": "#custom-highlight-pseudo", - "dev": "#custom-highlight-pseudo" - }, - "tests": ['::highlight(example-highlight)'] - } - } - }, - - "css-images-3": { - "title": "CSS Images Module Level 3", - "links": { - "tr": "css3-images", - "dev": "css-images-3" - }, - "status": { - "stability": "stable", - "first-snapshot": 2015 - }, - "values": { - "properties": [ - "background-image", - "list-style-image", - "border-image", - "cursor", - "content" - ], - "linear-gradient()": { - "links": { - "tr": "#linear-gradients", - "dev": "#linear-gradients" - }, - "tests": [ - "linear-gradient(white, black)", - "linear-gradient(to right, white, black)", - "linear-gradient(45deg, white, black)", - "linear-gradient(white 50%, black)", - "linear-gradient(white 5px, black)", - "linear-gradient(white, #f06, black)", - "linear-gradient(currentColor, black)", - "linear-gradient(red -50px, white calc(-25px + 50%), blue 100%)" - ] - }, - "radial-gradient()": { - "links": { - "tr": "#radial-gradients", - "dev": "#radial-gradients" - }, - "tests": [ - "radial-gradient(white, black)", - "radial-gradient(circle, white, black)", - "radial-gradient(ellipse, white, black)", - "radial-gradient(closest-corner, white, black)", - "radial-gradient(circle closest-corner, white, black)", - "radial-gradient(farthest-side, white, black)", - "radial-gradient(circle farthest-side, white, black)", - "radial-gradient(50%, white, black)", - "radial-gradient(60% 60%, white, black)"/*, - "radial-gradient(at 60% 60%, white, black)", - "radial-gradient(30% 30% at 20% 20%, white, black)", - "radial-gradient(5em circle at top left, yellow, blue)", - "radial-gradient(circle farthest-side at top left, white, black)"*/ - ] - }, - "repeating-linear-gradient()": { - "links": { - "tr": "#repeating-gradients", - "dev": "#repeating-gradients" - }, - "tests": "repeating-linear-gradient(white, black)" - }, - "repeating-radial-gradient()": { - "links": { - "tr": "#repeating-gradients", - "dev": "#repeating-gradients" - }, - "tests": "repeating-radial-gradient(white, black)" - }, - }, - "properties": { - "object-fit": { - "links": { - "tr": "#object-fit", - "dev": "#the-object-fit" - }, - "tests": ["fill", "contain", "cover", "none", "scale-down"] - }, - "object-position": { - "links": { - "tr": "#object-position", - "dev": "#the-object-position" - }, - "tests": ["50% 50%", "center", "top right", "bottom 10px right 20px"] - }, - "image-orientation": { - "links": { - "tr": "#image-orientation", - "dev": "#the-image-orientation" - }, - "tests": ["from-image", "0deg", "90deg", "45deg", "45deg flip", "1turn", "100grad", "2rad"] - }, - "image-rendering": { - "links": { - "tr": "#the-image-rendering", - "dev": "#the-image-rendering" - }, - "tests": ["auto", "smooth", "high-quality", "crisp-edges", "pixelated"] - }, - } - }, - - "css-images-4": { - "title": "CSS Images Module Level 4", - "links": { - "tr": "css-images-4", - "dev": "css-images-4" - }, - "status": { - "stability": "experimental" - }, - "values": { - "properties": [ - "background-image", - "list-style-image", - "border-image", - "cursor", - "content" - ], - "linear-gradient()": { - "links": { - "tr": "#linear-gradients", - "dev": "#linear-gradients" - }, - "tests": [ - "linear-gradient(45deg, #f06 25%, yellow 25% 50%, #f06 50% 75%, yellow 75%)" - ] - }, - "radial-gradient()": { - "links": { - "tr": "#radial-gradients", - "dev": "#radial-gradients" - }, - "tests": [ - "radial-gradient(center, red 0% 25%, blue 25% 75%, red 75% 100%)" - ] - }, - "conic-gradient()": { - "links": { - "tr": "#conic-gradients", - "dev": "#conic-gradients" - }, - "tests": [ - "conic-gradient(white, black)", - "conic-gradient(from 5deg, white, black)", - "conic-gradient(at top left, white, black)", - "conic-gradient(white 50%, black)", - "conic-gradient(white 5deg, black)", - "conic-gradient(white, #f06, black)", - "conic-gradient(currentColor, black)", - "conic-gradient(black 25%, white 0deg 50%, black 0deg 75%, white 0deg)" - ] - }, - "repeating-conic-gradient()": { - "links": { - "tr": "#repeating-gradients", - "dev": "#repeating-gradients" - }, - "tests": [ - "repeating-conic-gradient(white, black)", - "repeating-conic-gradient(hsla(0, 0%, 100%, .2) 0deg 15deg, hsla(0, 0%, 100%, 0) 0deg 30deg)" - ] - }, - "image()": { - "links": { - "tr": "#image-notation", - "dev": "#image-notation" - }, - "tests": [ - "image('sprites.png#xywh=10,30,60,20')", - "image('wavy.svg', 'wavy.png' , 'wavy.gif')", - "image('dark.png', black)", - "image(green)" - ] - }, - "image-set()": { - "links": { - "tr": "#image-set-notation", - "dev": "#image-set-notation" - }, - "tests": [ - "image-set('foo.png' 1x, 'foo-2x.png' 2x, 'foo-print.png' 600dpi)", - "image-set(linear-gradient(green, green) 1x, url(foobar.png) 2x)", - "image-set(linear-gradient(red, red), url(foobar.png) 2x)", - "image-set(url(foobar.png) 2x)", - "image-set(url(foobar.png) 1x, url(bar.png) 2x, url(baz.png) 3x)", - "image-set('foobar.png', 'bar.png' 2x, url(baz.png) 3x)", - "image-set(image-set('foobar.png', 'bar.png' 2x) 1x, url(baz.png) 3x)", - "image-set(url(foobar.png) type('image/png'))", - "image-set(url(foobar.png) 1x type('image/png'))", - "image-set(url(foobar.png) type('image/png') 1x)" - ] - }, - "element()": { - "links": { - "tr": "#element-notation", - "dev": "#element-notation" - }, - "tests": "element(#foo)" - }, - "cross-fade()": { - "links": { - "tr": "#cross-fade-function", - "dev": "#cross-fade-function" - }, - "tests": [ - "cross-fade(url(a.png), url(b.png))", - "cross-fade(url(a.png) 50%, url(b.png))", - "cross-fade(url(a.png) 50%, white)" - ] - } - }, - "properties": { - "image-resolution": { - "links": { - "tr": "#the-image-resolution", - "dev": "#the-image-resolution" - }, - "tests": [ - "from-image", "from-image snap", "snap from-image", - "1dppx", "1dpcm", "300dpi", "from-image 300dpi", "300dpi from-image", "300dpi from-image snap" - ] - } - } - }, - - "css-inline-3": { - "title": "CSS Inline Layout Module Level 3", - "links": { - "dev": "css-inline-3", - "tr": "css-inline-3", - }, - "status": { - "stability": "experimental" - }, - "properties": { - "alignment-baseline": { - "links": { - "dev": "#alignment-baseline-property", - "tr": "#alignment-baseline-property" - }, - "tests": [ - "baseline", "text-bottom", "alphabetic", "ideographic", "middle", - "central", "mathematical", "text-top" - ] - }, - "baseline-shift": { - "links": { - "dev": "#baseline-shift-property", - "tr": "#baseline-shift-property" - }, - "tests": ["5px", "10%", "sub", "super", "top", "center", "bottom"] - }, - "baseline-source": { - "links": { - "dev": "#baseline-source", - "tr": "#baseline-source" - }, - "tests": ["auto", "first", "last"] - }, - "dominant-baseline": { - "links": { - "dev": "#dominant-baseline-property", - "tr": "#dominant-baseline-property" - }, - "tests": [ - "auto", "text-bottom", "alphabetic", "ideographic", "middle", - "central", "mathematical", "hanging", "text-top" - ] - }, - "initial-letter": { - "links": { - "dev": "#sizing-drop-initials", - "tr": "#sizing-drop-initials" - }, - "tests": ["normal", "1.4 3", "1.4", "1.4 drop", "1.4 raise"] - }, - "initial-letter-align": { - "links": { - "dev": "#aligning-initial-letter", - "tr": "#aligning-initial-letter" - }, - "tests": [ - "border-box", "alphabetic", "ideographic", "hanging", "leading", - "border-box alphabetic" - ] - }, - "initial-letter-wrap": { - "links": { - "dev": "#initial-letter-wrapping", - "tr": "#initial-letter-wrapping" - }, - "tests": ["none", "first", "all", "grid", "30px", "10%"] - }, - "inline-sizing": { - "links": { - "dev": "#line-fill", - "tr": "#line-fill" - }, - "tests": ["normal", "stretch"] - }, - "leading-trim": { - "links": { - "dev": "#leading-trim", - "tr": "#leading-trim" - }, - "tests": ["normal", "start", "end", "both"] - }, - "text-edge": { - "links": { - "dev": "#text-edges", - "tr": "#text-edges" - }, - "tests": [ - "leading", "text", "cap", "ex", "ideographic", "ideographic-ink", - "text alphabetic", "cap ideographic-ink" - ] - }, - "vertical-align": { - "links": { - "dev": "#transverse-alignment", - "tr": "#transverse-alignment" - }, - "tests": [ - "first", "last", "first text-bottom", "last sub", "super text-bottom first" - ] - } - } - }, - - "css-layout-api-1": { - "title": "CSS Layout API Level 1", - "links": { - "tr": "css-layout-api-1", - "dev": "css-layout-api-1", - "devtype": "houdini" - }, - "status": { - "stability": "experimental" - }, - "properties": { - "display": { - "links": { - "tr": "#layout-api-containers", - "dev": "#layout-api-containers" - }, - "tests": "layout(foo)" - } - } - }, - - "css-line-grid-1": { - "title": "CSS Line Grid Module Level 1", - "links": { - "tr": "css-line-grid-1", - "dev": "css-line-grid-1" - }, - "status": { - "stability": "experimental" - }, - "properties": { - "box-snap": { - "links": { - "tr": "#box-snap", - "dev": "#box-snap" - }, - "tests": ["none", "block-start", "block-end", "center", "baseline", "last-baseline"] - }, - "line-grid": { - "links": { - "tr": "#line-grid", - "dev": "#line-grid" - }, - "tests": ["match-parent", "create"] - }, - "line-snap": { - "links": { - "tr": "#line-snap", - "dev": "#line-snap" - }, - "tests": ["none", "baseline", "contain"] - } - } - }, - - "css-lists-3": { - "title": "CSS Lists Module Level 3", - "links": { - "tr": "css-lists-3", - "dev": "css-lists-3" - }, - "status": { - "stability": "stable" - }, - "properties": { - "list-style-type": { - "links": { - "tr": "#text-markers", - "dev": "#text-markers" - }, - "tests": [ - "disclosure-closed", "disclosure-open", - "hebrew", - "cjk-decimal", "cjk-ideographic", - "hiragana", "katakana", "hiragana-iroha", "katakana-iroha", - "japanese-informal", "japanese-formal", "korean-hangul-formal", - "korean-hanja-informal", "korean-hanja-formal", - "simp-chinese-informal", "simp-chinese-formal", - "trad-chinese-informal", "trad-chinese-formal", - "cjk-heavenly-stem", "cjk-earthly-branch", - "trad-chinese-informal", "trad-chinese-formal", - "simp-chinese-informal", "simp-chinese-formal", - "japanese-informal", "japanese-formal", - "arabic-indic", "persian", "urdu", - "devanagari", "gurmukhi", "gujarati", - "oriya", "kannada", "malayalam", "bengali", - "tamil", "telugu", "thai", "lao", - "myanmar", "khmer", - "hangul", "hangul-consonant", - "ethiopic-halehame", "ethiopic-numeric", - "ethiopic-halehame-am", - "ethiopic-halehame-ti-er", "ethiopic-halehame-ti-et", - "other-style", "inside", "outside", "\\32 style", - '"-"', "'-'", - "symbols(\"*\" \"\\2020\" \"\\2021\" \"\\A7\")", - "symbols(cyclic '*' '\\2020' '\\2021' '\\A7')" - ] - }, - "marker-side": { - "links": { - "tr": "#marker-side", - "dev": "#marker-side" - }, - "tests": ["match-self", "match-parent"] - }, - "counter-reset": { - "links": { - "tr": "#counter-reset", - "dev": "#counter-reset" - }, - "tests": [ - "none", - "foo", - "foo 1", - "foo -3", - "foo 1 bar", - "foo 1 bar 2", - "list-item", - "list-item 1", - "list-item 1 bar 2", - "reversed(foo)", - "reversed(foo) -3", - "reversed(list-item)", - "reversed(foo1) 1 foo2 9 reversed(foo3) 4" - ] - }, - "counter-set": { - "links": { - "tr": "#increment-set", - "dev": "#increment-set" - }, - "tests": ["foo", "foo 1", "foo 1 bar", "foo 1 bar 2", "none"] - }, - "counter-increment": { - "links": { - "tr": "#increment-set", - "dev": "#increment-set" - }, - "tests": ["foo", "foo 1", "foo 1 bar", "foo 1 bar 2", "none"] - }, - "content": { - "links": { - "tr": "#counter-functions", - "dev": "#counter-functions" - }, - "tests": [ - "counter(chno, upper-latin) '. '", - "counter(section, upper-roman) ' - '", - "' [' counter(bq, decimal) ']'", - "counter(notecntr, disc) ' '", - "counter(p, none)", - "counter(h1, upper-alpha) '.' counter(h2, decimal) ' '", - "'(' counters(list-item, '.') ') '" - ] - } - } - }, - - "css-logical-1": { - "title": "CSS Logical Properties and Values Level 1", - "links": { - "tr": "css-logical-1", - "dev": "css-logical-1" - }, - "status": { - "stability": "stable" - }, - "properties": { - "caption-side": { - "links": { - "tr": "#caption-side", - "dev": "#caption-side" - }, - "tests": ["inline-start", "inline-end"] - }, - "float": { - "links": { - "tr": "#float-clear", - "dev": "#float-clear" - }, - "tests": ["inline-start", "inline-end"] - }, - "clear": { - "links": { - "tr": "#float-clear", - "dev": "#float-clear" - }, - "tests": ["inline-start", "inline-end"] - }, - "text-align": { - "links": { - "tr": "#text-align", - "dev": "#text-align" - }, - "tests": ["start", "end"] - }, - "resize": { - "links": { - "tr": "#resize", - "dev": "#resize" - }, - "tests": ["block", "inline"] - }, - "block-size": { - "links": { - "tr": "#dimension-properties", - "dev": "#dimension-properties" - }, - "tests": ["100px"] - }, - "inline-size": { - "links": { - "tr": "#dimension-properties", - "dev": "#dimension-properties" - }, - "tests": ["100px"] - }, - "min-block-size": { - "links": { - "tr": "#dimension-properties", - "dev": "#dimension-properties" - }, - "tests": ["100px"] - }, - "min-inline-size": { - "links": { - "tr": "#dimension-properties", - "dev": "#dimension-properties" - }, - "tests": ["100px"] - }, - "max-block-size": { - "links": { - "tr": "#dimension-properties", - "dev": "#dimension-properties" - }, - "tests": ["100px"] - }, - "max-inline-size": { - "links": { - "tr": "#dimension-properties", - "dev": "#dimension-properties" - }, - "tests": ["100px"] - }, - "margin-block": { - "links": { - "tr": "#margin-properties", - "dev": "#margin-properties" - }, - "tests": ["10px", "10px 10px"] - }, - "margin-block-start": { - "links": { - "tr": "#margin-properties", - "dev": "#margin-properties" - }, - "tests": ["10px"] - }, - "margin-block-end": { - "links": { - "tr": "#margin-properties", - "dev": "#margin-properties" - }, - "tests": ["10px"] - }, - "margin-inline": { - "links": { - "tr": "#margin-properties", - "dev": "#margin-properties" - }, - "tests": ["10px", "10px 10px"] - }, - "margin-inline-start": { - "links": { - "tr": "#margin-properties", - "dev": "#margin-properties" - }, - "tests": ["10px"] - }, - "margin-inline-end": { - "links": { - "tr": "#margin-properties", - "dev": "#margin-properties" - }, - "tests": ["10px"] - }, - "inset": { - "links": { - "tr": "#inset-properties", - "dev": "#inset-properties" - }, - "tests": ["10px", "10px 10px", "10px 10px 10px", "10px 10px 10px 10px"] - }, - "inset-block": { - "links": { - "tr": "#inset-properties", - "dev": "#inset-properties" - }, - "tests": ["10px", "10px 10px"] - }, - "inset-block-start": { - "links": { - "tr": "#inset-properties", - "dev": "#inset-properties" - }, - "tests": ["10px"] - }, - "inset-block-end": { - "links": { - "tr": "#inset-properties", - "dev": "#inset-properties" - }, - "tests": ["10px"] - }, - "inset-inline": { - "links": { - "tr": "#inset-properties", - "dev": "#inset-properties" - }, - "tests": ["10px", "10px 10px"] - }, - "inset-inline-start": { - "links": { - "tr": "#inset-properties", - "dev": "#inset-properties" - }, - "tests": ["10px"] - }, - "inset-inline-end": { - "links": { - "tr": "#inset-properties", - "dev": "#inset-properties" - }, - "tests": ["10px"] - }, - "padding-block": { - "links": { - "tr": "#padding-properties", - "dev": "#padding-properties" - }, - "tests": ["10px", "10px 10px"] - }, - "padding-block-start": { - "links": { - "tr": "#padding-properties", - "dev": "#padding-properties" - }, - "tests": ["10px"] - }, - "padding-block-end": { - "links": { - "tr": "#padding-properties", - "dev": "#padding-properties" - }, - "tests": ["10px"] - }, - "padding-inline": { - "links": { - "tr": "#padding-properties", - "dev": "#padding-properties" - }, - "tests": ["10px", "10px 10px"] - }, - "padding-inline-start": { - "links": { - "tr": "#padding-properties", - "dev": "#padding-properties" - }, - "tests": ["10px"] - }, - "padding-inline-end": { - "links": { - "tr": "#padding-properties", - "dev": "#padding-properties" - }, - "tests": ["10px"] - }, - "border-block": { - "links": { - "tr": "#border-shorthands", - "dev": "#border-shorthands" - }, - "tests": ["1px", "2px dotted", "medium dashed green"] - }, - "border-block-start": { - "links": { - "tr": "#border-shorthands", - "dev": "#border-shorthands" - }, - "tests": ["1px", "2px dotted", "medium dashed green"] - }, - "border-block-start-width": { - "links": { - "tr": "#border-width", - "dev": "#border-width" - }, - "tests": ["thin"] - }, - "border-block-start-width": { - "links": { - "tr": "#border-width", - "dev": "#border-width" - }, - "tests": ["thin"] - }, - "border-block-start-style": { - "links": { - "tr": "#border-style", - "dev": "#border-style" - }, - "tests": ["dotted"] - }, - "border-block-start-color": { - "links": { - "tr": "#border-color", - "dev": "#border-color" - }, - "tests": ["navy"] - }, - "border-block-end": { - "links": { - "tr": "#border-shorthands", - "dev": "#border-shorthands" - }, - "tests": ["1px", "2px dotted", "medium dashed green"] - }, - "border-block-end-width": { - "links": { - "tr": "#border-width", - "dev": "#border-width" - }, - "tests": ["thin"] - }, - "border-block-end-style": { - "links": { - "tr": "#border-style", - "dev": "#border-style" - }, - "tests": ["dotted"] - }, - "border-block-end-color": { - "links": { - "tr": "#border-color", - "dev": "#border-color" - }, - "tests": ["navy"] - }, - "border-block-width": { - "links": { - "tr": "#border-width", - "dev": "#border-width" - }, - "tests": ["thin 2px"] - }, - "border-block-style": { - "links": { - "tr": "#border-style", - "dev": "#border-style" - }, - "tests": ["dotted dashed"] - }, - "border-block-color": { - "links": { - "tr": "#border-color", - "dev": "#border-color" - }, - "tests": ["navy blue"] - }, - "border-inline": { - "links": { - "tr": "#border-shorthands", - "dev": "#border-shorthands" - }, - "tests": ["1px", "2px dotted", "medium dashed green"] - }, - "border-inline-start": { - "links": { - "tr": "#border-shorthands", - "dev": "#border-shorthands" - }, - "tests": ["1px", "2px dotted", "medium dashed green"] - }, - "border-inline-start-width": { - "links": { - "tr": "#border-width", - "dev": "#border-width" - }, - "tests": ["thin"] - }, - "border-inline-start-style": { - "links": { - "tr": "#border-style", - "dev": "#border-style" - }, - "tests": ["dotted"] - }, - "border-inline-start-color": { - "links": { - "tr": "#border-color", - "dev": "#border-color" - }, - "tests": ["navy"] - }, - "border-inline-end": { - "links": { - "tr": "#border-shorthands", - "dev": "#border-shorthands" - }, - "tests": ["1px", "2px dotted", "medium dashed green"] - }, - "border-inline-end-width": { - "links": { - "tr": "#border-width", - "dev": "#border-width" - }, - "tests": ["thin"] - }, - "border-inline-end-style": { - "links": { - "tr": "#border-style", - "dev": "#border-style" - }, - "tests": ["dotted"] - }, - "border-inline-end-color": { - "links": { - "tr": "#border-color", - "dev": "#border-color" - }, - "tests": ["navy"] - }, - "border-inline-width": { - "links": { - "tr": "#border-width", - "dev": "#border-width" - }, - "tests": ["thin 2px"] - }, - "border-inline-style": { - "links": { - "tr": "#border-style", - "dev": "#border-style" - }, - "tests": ["dotted dashed"] - }, - "border-inline-color": { - "links": { - "tr": "#border-color", - "dev": "#border-color" - }, - "tests": ["navy blue"] - }, - "border-start-start-radius": { - "links": { - "tr": "#border-radius-shorthands", - "dev": "#border-radius-properties" - }, - "tests": ["0", "50%", "250px 100px"] - }, - "border-start-end-radius": { - "links": { - "tr": "#border-radius-shorthands", - "dev": "#border-radius-properties" - }, - "tests": ["0", "50%", "250px 100px"] - }, - "border-end-start-radius": { - "links": { - "tr": "#border-radius-shorthands", - "dev": "#border-radius-properties" - }, - "tests": ["0", "50%", "250px 100px"] - }, - "border-end-end-radius": { - "links": { - "tr": "#border-radius-shorthands", - "dev": "#border-radius-properties" - }, - "tests": ["0", "50%", "250px 100px"] - }, - "margin": { - "links": { - "tr": "#logical-shorthand-keyword", - "dev": "#logical-shorthand-keyword" - }, - "tests": ["logical 5px 10px 15px 20px"] - }, - "padding": { - "links": { - "tr": "#logical-shorthand-keyword", - "dev": "#logical-shorthand-keyword" - }, - "tests": ["logical 5px 10px 15px 20px"] - }, - "border-color": { - "links": { - "tr": "#logical-shorthand-keyword", - "dev": "#logical-shorthand-keyword" - }, - "tests": ["logical red green blue yellow"] - }, - "border-style": { - "links": { - "tr": "#logical-shorthand-keyword", - "dev": "#logical-shorthand-keyword" - }, - "tests": ["logical solid dotted dashed none"] - }, - "border-width": { - "links": { - "tr": "#logical-shorthand-keyword", - "dev": "#logical-shorthand-keyword" - }, - "tests": ["logical 5px 10px 15px 20px"] - } - } - }, - - "css-masking-1": { - "title": "CSS Masking Module Level 1", - "links": { - "tr": "css-masking-1", - "dev": "css-masking-1", - "devtype": "fxtf" - }, - "status": { - "stability": "stable" - }, - "properties": { - "clip-path": { - "links": { - "tr": "#the-clip-path", - "dev": "#the-clip-path" - }, - "tests": [ - "url('#clip')", - "inset(50%)", - "circle()", - "ellipse()", - "polygon(0 10px, 30px 0)", - "path('M 20 20 H 80 V 30')", - "circle() border-box", - "border-box", - "padding-box", - "content-box", - "margin-box", - "fill-box", - "stroke-box", - "view-box", - "none" - ] - }, - "clip-rule": { - "links": { - "tr": "#the-clip-rule", - "dev": "#the-clip-rule" - }, - "tests": ["nonzero", "evenodd"] - }, - "mask-image": { - "links": { - "tr": "#the-mask-image", - "dev": "#the-mask-image" - }, - "tests": ["none", "linear-gradient(black 0%, transparent 100%)", "url(image.png)"] - }, - "mask-mode": { - "links": { - "tr": "#the-mask-mode", - "dev": "#the-mask-mode" - }, - "tests": ["alpha", "luminance", "match-source"] - }, - "mask-repeat": { - "links": { - "tr": "#the-mask-repeat", - "dev": "#the-mask-repeat" - }, - "tests": ["repeat-x", "repeat-y"].concat(["repeat", "space", "round", "no-repeat"].times(1, 2)) - }, - "mask-position": { - "links": { - "tr": "#the-mask-position", - "dev": "#the-mask-position" - }, - "tests": ["center", "left 50%", "bottom 10px right 20px", "bottom 10px right", "top right 10px"] - }, - "mask-clip": { - "links": { - "tr": "#the-mask-clip", - "dev": "#the-mask-clip" - }, - "tests": ["border-box", "padding-box", "content-box", "margin-box", "fill-box", "stroke-box", "view-box", "no-clip"] - }, - "mask-origin": { - "links": { - "tr": "#the-mask-origin", - "dev": "#the-mask-origin" - }, - "tests": ["border-box", "padding-box", "content-box", "margin-box", "fill-box", "stroke-box", "view-box"] - }, - "mask-size": { - "links": { - "tr": "#the-mask-size", - "dev": "#the-mask-size" - }, - "tests": ["auto", "10px", "cover", "contain", "10px", "50%", "10px auto", "auto 10%", "50em 50%"] - }, - "mask-composite": { - "links": { - "tr": "#the-mask-composite", - "dev": "#the-mask-composite" - }, - "tests": ["add", "subtract", "intersect", "exclude"] - }, - "mask": { - "links": { - "tr": "#the-mask", - "dev": "#the-mask" - }, - "tests": ["top", "space", "url(image.png)", "url(image.png) luminance", "url(image.png) luminance top space"] - }, - "mask-border-source": { - "links": { - "tr": "#the-mask-border-source", - "dev": "#the-mask-border-source" - }, - "tests": ["none", "url(image.png)"] - }, - "mask-border-slice": { - "links": { - "tr": "#the-mask-border-slice", - "dev": "#the-mask-border-slice" - }, - "tests": ["0 fill", "50% fill", "1.1 fill", "0 1 fill", "0 1 2 fill", "0 1 2 3 fill"] - }, - "mask-border-width": { - "links": { - "tr": "#the-mask-border-width", - "dev": "#the-mask-border-width" - }, - "tests": ["auto", "10px", "50%", "1", "1.0", "auto 1", "auto 1 50%", "auto 1 50% 1.1"] - }, - "mask-border-outset": { - "links": { - "tr": "#the-mask-border-outset", - "dev": "#the-mask-border-outset" - }, - "tests": ["0", "1.1", "0 1", "0 1 2", "0 1 2 3"] - }, - "mask-border-repeat": { - "links": { - "tr": "#the-mask-border-repeat", - "dev": "#the-mask-border-repeat" - }, - "tests": ["stretch", "repeat", "round", "space"].times(1, 2) - }, - "mask-border": { - "links": { - "tr": "#the-mask-border", - "dev": "#the-mask-border" - }, - "tests": [ - "url(image.png)", - "url(image.png) 10px", - "url(image.png) space", - "url(image.png) 1 fill", - "url(image.png) 1 fill 10px", - "url(image.png) 1 fill 10px", - "url(image.png) 1 fill 10px 2" - ] - }, - "mask-type": { - "links": { - "tr": "#the-mask-type", - "dev": "#the-mask-type" - }, - "tests": ["luminance", "alpha"] - } - } - }, - - "css-multicol-1": { - "title": "CSS Multi-column Layout Module Level 1", - "links": { - "tr": "css-multicol-1", - "dev": "css-multicol-1" - }, - "status": { - "stability": "stable", - "first-snapshot": 2015 - }, - "properties": { - "column-width": { - "links": { - "tr": "#cw", - "dev": "#cw" - }, - "tests": ["10em", "auto"] - }, - "column-count": { - "links": { - "tr": "#cc", - "dev": "#cc" - }, - "tests": ["2", "auto"] - }, - "columns": { - "links": { - "tr": "#columns", - "dev": "#columns" - }, - "tests": ["100px", "3", "10em 2", "auto 2", "10em auto", "auto auto", "2 10em", "auto 10em", "2 auto"] - }, - "column-rule-color": { - "links": { - "tr": "#crc", - "dev": "#crc" - }, - "tests": "red" - }, - "column-rule-style": { - "links": { - "tr": "#crs", - "dev": "#crs" - }, - "tests": ["none", "solid", "dotted"] - }, - "column-rule-width": { - "links": { - "tr": "#crw", - "dev": "#crw" - }, - "tests": "1px" - }, - "column-rule": { - "links": { - "tr": "#column-rule", - "dev": "#cr" - }, - "tests": ["transparent", "1px solid black"] - }, - "column-span": { - "links": { - "tr": "#column-span", - "dev": "#column-span" - }, - "tests": ["none", "all"] - }, - "column-fill": { - "links": { - "tr": "#cf", - "dev": "#cf" - }, - "tests": ["auto", "balance", "balance-all"] - } - } - }, - - "css-multicol-2": { - "title": "CSS Multi-column Layout Module Level 2", - "links": { - "dev": "css-multicol-2" - }, - "status": { - "stability": "experimental" - }, - "properties": { - "column-span": { - "links": { - "dev": "#column-span" - }, - "tests": ["2", "auto"] - } - } - }, - - "css-nav-1": { - "title": "CSS Spatial Navigation Level 1", - "links": { - "tr": "css-nav-1", - "dev": "css-nav-1" - }, - "status": { - "stability": "experimental" - }, - "properties": { - "spatial-navigation-action": { - "links": { - "tr": "#css-property-spatialnavigationaction", - "dev": "#css-property-spatialnavigationaction" - }, - "tests": ["auto", "focus", "scroll"] - }, - "spatial-navigation-contain": { - "links": { - "tr": "#container", - "dev": "#container" - }, - "tests": ["auto", "contain"] - }, - "spatial-navigation-function": { - "links": { - "tr": "#css-property-spatialnavigationfunction", - "dev": "#css-property-spatialnavigationfunction" - }, - "tests": ["normal", "grid"] - } - } - }, - - "css-overflow-3": { - "title": "CSS Overflow Module Level 3", - "links": { - "tr": "css-overflow-3", - "dev": "css-overflow-3" - }, - "status": { - "stability": "experimental" - }, - "properties": { - "line-clamp": { - "links": { - "tr": "#line-clamp", - "dev": "#line-clamp", - "mdn": "-webkit-line-clamp" - }, - "tests": ["none", "1", "5 clip", "5 ellipsis", "5 \"… (continued on next page)\""] - }, - "max-lines": { - "links": { - "tr": "#max-lines", - "dev": "#max-lines" - }, - "tests": ["none", "1"] - }, - "overflow-x": { - "links": { - "tr": "#overflow-properties", - "dev": "#overflow-properties" - }, - "tests": ["visible", "hidden", "clip", "scroll", "auto"] - }, - "overflow-y": { - "links": { - "tr": "#overflow-properties", - "dev": "#overflow-properties" - }, - "tests": ["visible", "hidden", "clip", "scroll", "auto"] - }, - "overflow-inline": { - "links": { - "tr": "#logical", - "dev": "#logical" - }, - "tests": ["visible", "hidden", "clip", "scroll", "auto"] - }, - "overflow-block": { - "links": { - "tr": "#logical", - "dev": "#logical" - }, - "tests": ["visible", "hidden", "clip", "scroll", "auto"] - }, - "overflow-clip-margin": { - "links": { - "tr": "#overflow-clip-margin", - "dev": "#overflow-clip-margin" - }, - "tests": ["content-box", "padding-box", "border-box", "20px"] - - }, - "continue": { - "links": { - "tr": "#continue", - "dev": "#continue" - }, - "tests": ["auto", "discard"] - }, - "scrollbar-gutter": { - "links": { - "tr": "scrollbar-gutter-property", - "dev": "#scrollbar-gutter-property" - }, - "tests": [ - "auto", "stable", "both-edges stable", "stable both-edges", - ] - } - } - }, - - "css-overflow-4": { - "title": "CSS Overflow Module Level 4", - "links": { - "tr": "css-overflow-4", - "dev": "css-overflow-4" - }, - "status": { - "stability": "experimental" - }, - "selectors": { - "::nth-fragment()": { - "links": { - "tr": "#fragment-pseudo-element", - "dev": "#fragment-pseudo-element" - }, - "tests": [ - ":nth-fragment(even)", ":nth-fragment(odd)", - ":nth-fragment(n)", ":nth-fragment(-n)", ":nth-fragment(0n)", - ":nth-fragment(1)", ":nth-fragment(-1)", ":nth-fragment(0)", - ":nth-fragment(n+1)", ":nth-fragment(3n+1)", ":nth-fragment(3n + 1)", - ":nth-fragment(-n+1)", ":nth-fragment(3n-1)" - ] - } - } - }, - - "css-overscroll-1": { - "title": "CSS Overscroll Behavior Module Level 1", - "links": { - "tr": "css-overscroll-1", - "dev": "css-overscroll-1" - }, - "status": { - "stability": "experimental" - }, - "properties": { - "overscroll-behavior": { - "links": { - "dev": "#overscroll-behavior-properties" - }, - "tests": ["contain", "none", "auto"].times(1, 2) - }, - "overscroll-behavior-x": { - "links": { - "dev": "#overscroll-behavior-longhands-physical" - }, - "tests": ["contain", "none", "auto"] - }, - "overscroll-behavior-y": { - "links": { - "dev": "#overscroll-behavior-longhands-physical" - }, - "tests": ["contain", "none", "auto"] - }, - "overscroll-behavior-inline": { - "links": { - "dev": "#overscroll-behavior-longhands-logical" - }, - "tests": ["contain", "none", "auto"] - }, - "overscroll-behavior-block": { - "links": { - "dev": "#overscroll-behavior-longhands-logical" - }, - "tests": ["contain", "none", "auto"] - } - } - }, - - "css-page-3": { - "title": "Paged Media Module Level 3", - "links": { - "tr": "css-page-3", - "dev": "css-page-3" - }, - "status": { - "stability": "experimental" - }, - "properties": { - "page": { - "links": { - "tr": "#using-named-pages", - "dev": "#using-named-pagest" - }, - "tests": ["auto", "customName"] - }, - }, - "@rules": { - "@page": { - "links": { - "tr": "#at-page-rule", - "dev": "#at-page-rule" - }, - "tests": [ - "@page :blank { margin: 2cm; }", - "@page customName { margin: 2cm; }" - ] - } - }, - "descriptors": { - "@page/size": { - "links": { - "tr": "#page-size-prop", - "dev": "#page-size-prop" - }, - "tests": [ - "4in 6in", "4em 6em", - "auto", - "landscape", - "portrait", - "a3", "a4", "a5", "b4", "b5", "jis-b4", "jis-b5", "ledger", "legal", "letter", - "a3 landscape", - "a3 portrait", - "landscape a3", - "portrait a3" - ] - }, - "@page/page-orientation": { - "links": { - "tr": "#page-orientation-prop", - "dev": "#page-orientation-prop" - }, - "tests": [ - "upright", "rotate-left", "rotate-right" - ] - }, - "@page/marks": { - "links": { - "tr": "#marks", - "dev": "#marks" - }, - "tests": [ - "none", "crop", "cross", "crop cross" - ] - }, - "@page/bleed": { - "links": { - "tr": "#bleed", - "dev": "#bleed" - }, - "tests": [ - "auto", "6pt" - ] - } - } - }, - - "css-paint-api-1": { - "title": "CSS Painting API Level 1", - "links": { - "tr": "css-paint-api-1", - "dev": "css-paint-api-1", - "devtype": "houdini" - }, - "status": { - "stability": "experimental" - }, - "values": { - "properties": [ - "background-image", - "list-style-image", - "border-image", - "cursor", - "content" - ], - "paint()": { - "links": { - "tr": "#paint-notation", - "dev": "#paint-notation" - }, - "tests": [ - "paint(company-logo)", "paint(chat-bubble, blue)", "paint(failing-argument-syntax, 1px, 2px)", "paint(arc, purple, 0.4turn, 0.8turn, 40px, 15px)" - ] - } - } - }, - - "css-position-3": { - "title": "CSS Positioned Layout Module Level 3", - "links": { - "tr": "css-position-3", - "dev": "css-position-3" - }, - "status": { - "stability": "stable" - }, - "properties": { - "position": { - "links": { - "tr": "#position-property", - "dev": "#position-property" - }, - "tests": ["sticky"] - }, - "inset": { - "links": { - "tr": "#inset-shorthands", - "dev": "#inset-shorthands" - }, - "tests": ["auto", "10px", "50%", "10px 5%", "10px 5% 20px", "10px 5% 20px 10%"] - }, - "inset-block": { - "links": { - "tr": "#inset-shorthands", - "dev": "#inset-shorthands" - }, - "tests": ["auto", "10px", "50%", "10px 5%"] - }, - "inset-inline": { - "links": { - "tr": "#inset-shorthands", - "dev": "#inset-shorthands" - }, - "tests": ["auto", "10px", "50%", "10px 5%"] - }, - "inset-block-start": { - "links": { - "tr": "#insets", - "dev": "#insets" - }, - "tests": ["auto", "10px", "50%"] - }, - "inset-block-end": { - "links": { - "tr": "#insets", - "dev": "#insets" - }, - "tests": ["auto", "10px", "50%"] - }, - "inset-inline-start": { - "links": { - "tr": "#insets", - "dev": "#insets" - }, - "tests": ["auto", "10px", "50%"] - }, - "inset-inline-end": { - "links": { - "tr": "#insets", - "dev": "#insets" - }, - "tests": ["auto", "10px", "50%"] - }, - } - }, - - "css-pseudo-4": { - "title": "CSS Pseudo-Elements Module Level 4", - "links": { - "tr": "css-pseudo-4", - "dev": "css-pseudo-4" - }, - "status": { - "stability": "experimental" - }, - "selectors": { - "::selection": { - "links": { - "tr": "#selectordef-selection", - "dev": "#selectordef-selection" - }, - "tests": ["::selection"] - }, - "::target-text": { - "links": { - "tr": "#selectordef-target-text", - "dev": "#selectordef-target-text" - }, - "tests": ["::target-text"] - }, - "::spelling-error": { - "links": { - "tr": "#selectordef-spelling-error", - "dev": "#selectordef-spelling-error" - }, - "tests": ["::spelling-error"] - }, - "::grammar-error": { - "links": { - "tr": "#selectordef-grammar-error", - "dev": "#selectordef-grammar-error" - }, - "tests": ["::grammar-error"] - }, - "::file-selector-button": { - "links": { - "tr": "#marker-pseudo", - "dev": "#marker-pseudo" - }, - "tests": ["::file-selector-button"] - }, - "::marker": { - "links": { - "tr": "#marker-pseudo", - "dev": "#marker-pseudo" - }, - "tests": ["::marker"] - }, - "::placeholder": { - "links": { - "tr": "#placeholder-pseudo", - "dev": "#placeholder-pseudo" - }, - "tests": ["::placeholder"] - } - } - }, - - "css-regions-1": { - "title": "CSS Regions Module Level 1", - "links": { - "tr": "css-regions-1", - "dev": "css-regions-1" - }, - "status": { - "stability": "experimental" - }, - "properties": { - "flow-from": { - "links": { - "tr": "#flow-from", - "dev": "#flow-from" - }, - "tests": ["none", "named-flow"] - }, - "flow-into": { - "links": { - "tr": "#the-flow-into-property", - "dev": "#the-flow-into-property" - }, - "tests": ["none", "named-flow", "named-flow element", "named-flow content"] - }, - "region-fragment": { - "links": { - "tr": "#the-region-fragment-property", - "dev": "#the-region-fragment-property" - }, - "tests": ["auto", "break"] - } - } - }, - - "css-rhythmic-1": { - "title": "CSS Rhythmic Sizing", - "links": { - "tr": "css-rhythm-1", - "dev": "css-rhythm-1" - }, - "status": { - "stability": "experimental" - }, - "properties": { - "line-height-step": { - "links": { - "tr": "#line-height-step", - "dev": "#line-height-step" - }, - "tests": ["none", "30px", "2em"] - }, - "block-step-size": { - "links": { - "tr": "#block-step-size", - "dev": "#block-step-size" - }, - "tests": ["none", "30px", "2em"] - }, - "block-step-insert": { - "links": { - "tr": "#block-step-insert", - "dev": "#block-step-insert" - }, - "tests": ["margin", "padding"] - }, - "block-step-align": { - "links": { - "tr": "#block-step-align", - "dev": "#block-step-align" - }, - "tests": ["auto", "center", "start", "end"] - }, - "block-step-round": { - "links": { - "tr": "#block-step-round", - "dev": "#block-step-round" - }, - "tests": ["up", "down", "nearest"] - }, - "block-step": { - "links": { - "tr": "#block-step", - "dev": "#block-step" - }, - "tests": [ - "none", - "padding", - "end", - "down", - "30px margin", - "30px padding center", - "2em padding start nearest" - ] - } - } - }, - - "css-ruby-1": { - "title": "CSS Ruby Layout Module Level 1", - "links": { - "tr": "css-ruby-1", - "dev": "css-ruby-1" - }, - "status": { - "stability": "experimental" - }, - "properties": { - "display": { - "links": { - "tr": "#ruby-display", - "dev": "#ruby-display" - }, - "tests": ["ruby", "ruby-base", "ruby-text", "ruby-base-container", "ruby-text-container"] - }, - "ruby-position": { - "links": { - "tr": "#rubypos", - "dev": "#rubypos" - }, - "tests": ["alternate", "over", "under", "alternate over", "alternate under", "inter-character"] - }, - "ruby-merge": { - "links": { - "tr": "#collapsed-ruby", - "dev": "#collapsed-ruby" - }, - "tests": ["separate", "collapse", "auto"] - }, - "ruby-align": { - "links": { - "tr": "#ruby-align-property", - "dev": "#ruby-align-property" - }, - "tests": ["start", "center", "space-between", "space-around"] - } - } - }, - - "css-scoping-1": { - "title": "CSS Scoping Module Level 1", - "links": { - "tr": "css-scoping-1", - "dev": "css-scoping-1" - }, - "status": { - "stability": "experimental" - }, - "selectors": { - ":host": { - "links": { - "tr": "#host-selector", - "dev": "#host-selector" - }, - "tests": ":host" - }, - ":host()": { - "links": { - "tr": "#host-selector", - "dev": "#host-selector", - "mdn": ":host()" - }, - "tests": [":host(*)", ":host(.foo)"] - }, - ":host-context()": { - "links": { - "tr": "#host-selector", - "dev": "#host-selector", - "mdn": ":host-context()" - }, - "tests": [":host-context(*)", ":host-context(.foo)"] - }, - "::slotted()": { - "links": { - "dev": "#slotted-pseudo" - }, - "tests": ["::slotted(*)", "::slotted(.foo)"] - } - } - }, - - "css-scroll-anchoring-1": { - "title": "CSS Scroll Anchoring Module Level 1", - "links": { - "tr": "css-scroll-anchoring-1", - "dev": "css-scroll-anchoring-1" - }, - "status": { - "stability": "experimental" - }, - "properties": { - "overflow-anchor": { - "links": { - "dev": "#exclusion-api" - }, - "tests": ["none", "auto"] - } - } - }, - - "css-scroll-snap-1": { - "title": "CSS Scroll Snap Module Level 1", - "links": { - "tr": "css-scroll-snap-1", - "dev": "css-scroll-snap-1" - }, - "status": { - "stability": "stable" - }, - "properties": { - "scroll-margin": { - "links": { - "tr": "#scroll-margin", - "dev": "#scroll-margin" - }, - "tests": ["0px", "6px 5px", "10px 20px 30px", "10px 20px 30px 40px", "20px 3em 1in 5rem", "calc(2px)", "calc(3 * 25px)", "calc(3 * 25px) 5px 10em calc(1vw - 5px)"] - }, - "scroll-margin-block": { - "links": { - "tr": "#margin-longhands-logical", - "dev": "#margin-longhands-logical" - }, - "tests": ["10px", "10px 10px"] - }, - "scroll-margin-block-end": { - "links": { - "tr": "#margin-longhands-logical", - "dev": "#margin-longhands-logical" - }, - "tests": ["10px"] - }, - "scroll-margin-block-start": { - "links": { - "tr": "#margin-longhands-logical", - "dev": "#margin-longhands-logical" - }, - "tests": ["10px"] - }, - "scroll-margin-bottom": { - "links": { - "tr": "#margin-longhands-physical", - "dev": "#margin-longhands-physical" - }, - "tests": ["10px"] - }, - "scroll-margin-inline": { - "links": { - "tr": "#margin-longhands-logical", - "dev": "#margin-longhands-logical" - }, - "tests": ["10px", "10px 10px"] - }, - "scroll-margin-inline-start": { - "links": { - "tr": "#margin-longhands-logical", - "dev": "#margin-longhands-logical" - }, - "tests": ["10px"] - }, - "scroll-margin-inline-end": { - "links": { - "tr": "#margin-longhands-logical", - "dev": "#margin-longhands-logical" - }, - "tests": ["10px"] - }, - "scroll-margin-left": { - "links": { - "tr": "#margin-longhands-physical", - "dev": "#margin-longhands-physical" - }, - "tests": ["10px"] - }, - "scroll-margin-right": { - "links": { - "tr": "#margin-longhands-physical", - "dev": "#margin-longhands-physical" - }, - "tests": ["10px"] - }, - "scroll-margin-top": { - "links": { - "tr": "#margin-longhands-physical", - "dev": "#margin-longhands-physical" - }, - "tests": ["10px"] - }, - "scroll-padding": { - "links": { - "tr": "#scroll-padding", - "dev": "#scroll-padding" - }, - "tests": ["auto", "0px", "6px 5px", "10px 20px 30px", "10px 20px 30px 40px", "10px auto 30px auto", "10%", "20% 3em 1in 5rem", "calc(2px)", "calc(50%)", "calc(3 * 25px)", "calc(3 * 25px) 5px 10% calc(10% - 5px)"] - }, - "scroll-padding-block": { - "links": { - "tr": "#padding-longhands-logical", - "dev": "#padding-longhands-logical" - }, - "tests": ["10px", "50%", "10px 50%", "50% 50%"] - }, - "scroll-padding-block-end": { - "links": { - "tr": "#padding-longhands-logical", - "dev": "#padding-longhands-logical" - }, - "tests": ["10px", "50%"] - }, - "scroll-padding-block-start": { - "links": { - "tr": "#padding-longhands-logical", - "dev": "#padding-longhands-logical" - }, - "tests": ["10px", "50%"] - }, - "scroll-padding-bottom": { - "links": { - "tr": "#padding-longhands-physical", - "dev": "#padding-longhands-physical" - }, - "tests": ["10px", "50%"] - }, - "scroll-padding-inline": { - "links": { - "tr": "#padding-longhands-logical", - "dev": "#padding-longhands-logical" - }, - "tests": ["10px", "50%", "10px 50%", "50% 50%"] - }, - "scroll-padding-inline-end": { - "links": { - "tr": "#padding-longhands-logical", - "dev": "#padding-longhands-logical" - }, - "tests": ["10px", "50%"] - }, - "scroll-padding-inline-start": { - "links": { - "tr": "#padding-longhands-logical", - "dev": "#padding-longhands-logical" - }, - "tests": ["10px", "50%"] - }, - "scroll-padding-left": { - "links": { - "tr": "#padding-longhands-physical", - "dev": "#padding-longhands-physical" - }, - "tests": ["10px", "50%"] - }, - "scroll-padding-right": { - "links": { - "tr": "#padding-longhands-physical", - "dev": "#padding-longhands-physical" - }, - "tests": ["10px", "50%"] - }, - "scroll-padding-top": { - "links": { - "tr": "#padding-longhands-physical", - "dev": "#padding-longhands-physical" - }, - "tests": ["10px", "50%"] - }, - "scroll-snap-align": { - "links": { - "tr": "#scroll-snap-align", - "dev": "#scroll-snap-align" - }, - "tests": ["none", "start", "end", "center", "none start", "end center", "center start", "end none", "center center"] - }, - "scroll-snap-stop": { - "links": { - "tr": "#scroll-snap-stop", - "dev": "#scroll-snap-stop" - }, - "tests": ["normal", "always"] - }, - "scroll-snap-type": { - "links": { - "tr": "#scroll-snap-type", - "dev": "#scroll-snap-type" - }, - "tests": [ - "none", "x mandatory", "y mandatory", "block mandatory", "inline mandatory", "both mandatory", - "x proximity", "y proximity", "block proximity", "inline proximity", "both proximity" - ] - } - } - }, - - "css-scrollbars-1": { - "title": "CSS Scrollbars Module Level 1", - "links": { - "tr": "css-scrollbars-1", - "dev": "css-scrollbars-1" - }, - "status": { - "stability": "stable" - }, - "properties": { - "scrollbar-color": { - "links": { - "tr": "#scrollbar-color", - "dev": "#scrollbar-color" - }, - "tests": ["auto", "red blue"] - }, - "scrollbar-width": { - "links": { - "tr": "#scrollbar-width", - "dev": "#scrollbar-width" - }, - "tests": ["auto", "thin", "none"] - } - } - }, - - "css-shadow-parts-1": { - "title": "CSS Shadow Parts", - "links": { - "tr": "css-shadow-parts-1", - "dev": "css-shadow-parts-1" - }, - "status": { - "stability": "experimental" - }, - "selectors": { - "::part()": { - "links": { - "tr": "#part", - "dev": "#part" - }, - "tests": ["::part(label)"] - } - } - }, - - "css-shapes-1": { - "title": "CSS Shapes Module Level 1", - "links": { - "tr": "css-shapes-1", - "dev": "css-shapes-1" - }, - "status": { - "stability": "stable" - }, - "properties": { - "shape-outside": { - "links": { - "tr": "#shape-outside-property", - "dev": "#shape-outside-property" - }, - "tests": [ - "none", "inset(10% round 10% 40% 10% 40%)", "ellipse(at top 50% left 20%)", "circle(at right 5% top)", - "polygon(100% 0, 100% 100%, 0 100%)", "path('M 20 20 H 80 V 30')", - "margin-box", "border-box", "padding-box", "content-box", - "inset(10% round 10% 40% 10% 40%) margin-box", "ellipse(at top 50% left 20%) margin-box", - "circle(at right 5% top) margin-box", "polygon(100% 0, 100% 100%, 0 100%) margin-box", "path('M 20 20 H 80 V 30') margin-box", - "attr(src url)", "url(image.png)" - ] - }, - "shape-image-threshold": { - "links": { - "tr": "#shape-image-threshold-property", - "dev": "#shape-image-threshold-property" - }, - "tests": ["0", "1", "0.0", "0.1"] - }, - "shape-margin": { - "links": { - "tr": "#shape-margin-property", - "dev": "#shape-margin-property" - }, - "tests": ["0", "10px", "50%"] - } - } - }, - - "css-shapes-2": { - "title": "CSS Shapes Module Level 2", - "links": { - "dev": "css-shapes-2" - }, - "status": { - "stability": "experimental" - }, - "properties": { - "shape-inside": { - "links": { - "dev": "#shape-inside-property" - }, - "tests": [ - "auto", "outside-shape", "shape-box", "display", "inset(10% round 10% 40% 10% 40%)", - "ellipse(at top 50% left 20%)", "circle(at right 5% top)", "polygon(100% 0, 100% 100%, 0 100%)", "path('M 20 20 H 80 V 30')", - "url(image.png)" - ] - }, - "shape-padding": { - "links": { - "dev": "#shape-padding-property" - }, - "tests": ["0", "10px", "50%"] - } - } - }, - - "css-sizing-3": { - "title": "CSS Box Sizing Module Level 3", - "links": { - "tr": "css-sizing-3", - "dev": "css-sizing-3" - }, - "status": { - "stability": "stable" - }, - "properties": { - "width": { - "links": { - "tr": "#preferred-size-properties", - "dev": "#preferred-size-properties" - }, - "tests": ["max-content", "min-content", "fit-content(10%)"] - }, - "min-width": { - "links": { - "tr": "#min-size-properties", - "dev": "#min-size-properties" - }, - "tests": ["max-content", "min-content", "fit-content(10%)"] - }, - "max-width": { - "links": { - "tr": "#max-size-properties", - "dev": "#max-size-properties" - }, - "tests": ["max-content", "min-content", "fit-content(10%)"] - }, - "height": { - "links": { - "tr": "#preferred-size-properties", - "dev": "#preferred-size-properties" - }, - "tests": ["max-content", "min-content", "fit-content(10%)"] - }, - "min-height": { - "links": { - "tr": "#min-size-properties", - "dev": "#min-size-properties" - }, - "tests": ["max-content", "min-content", "fit-content(10%)"] - }, - "max-height": { - "links": { - "tr": "#max-size-properties", - "dev": "#max-size-properties" - }, - "tests": ["max-content", "min-content", "fit-content(10%)"] - }, - "column-width": { - "links": { - "tr": "#column-sizing", - "dev": "#column-sizing" - }, - "tests": ["max-content", "min-content", "fit-content(10%)"] - } - } - }, - - "css-sizing-4": { - "title": "CSS Box Sizing Module Level 4", - "links": { - "tr": "css-sizing-4", - "dev": "css-sizing-4" - }, - "status": { - "stability": "experimental" - }, - "properties": { - "aspect-ratio": { - "links": { - "tr": "#aspect-ratio", - "dev": "#aspect-ratio" - }, - "tests": ["auto", "2", "16 / 9", "auto 16 / 9"] - }, - "contain-intrinsic-size": { - "links": { - "tr": "#propdef-contain-intrinsic-size", - "dev": "#propdef-contain-intrinsic-size" - }, - "tests": ["none", "10px", "10px 15px"] - }, - "contain-intrinsic-width": { - "links": { - "tr": "#intrinsic-size-override", - "dev": "#intrinsic-size-override" - }, - "tests": ["none", "10px"] - }, - "contain-intrinsic-height": { - "links": { - "tr": "#intrinsic-size-override", - "dev": "#intrinsic-size-override" - }, - "tests": ["none", "10px"] - }, - "contain-intrinsic-block-size": { - "links": { - "tr": "#intrinsic-size-override", - "dev": "#intrinsic-size-override" - }, - "tests": ["none", "10px"] - }, - "contain-intrinsic-inline-size": { - "links": { - "tr": "#intrinsic-size-override", - "dev": "#intrinsic-size-override" - }, - "tests": ["none", "10px"] - }, - "width": { - "links": { - "tr": "#sizing-values", - "dev": "#sizing-values" - }, - "tests": ["stretch", "fit-content", "contain"] - }, - "min-width": { - "links": { - "tr": "#sizing-values", - "dev": "#sizing-values" - }, - "tests": ["stretch", "fit-content", "contain"] - }, - "max-width": { - "links": { - "tr": "#sizing-values", - "dev": "#sizing-values" - }, - "tests": ["stretch", "fit-content", "contain"] - }, - "height": { - "links": { - "tr": "#sizing-values", - "dev": "#sizing-values" - }, - "tests": ["stretch", "fit-content", "contain"] - }, - "min-height": { - "links": { - "tr": "#sizing-values", - "dev": "#sizing-values" - }, - "tests": ["stretch", "fit-content", "contain"] - }, - "max-height": { - "links": { - "tr": "#sizing-values", - "dev": "#sizing-values" - }, - "tests": ["stretch", "fit-content", "contain"] - }, - "inline-size": { - "links": { - "tr": "#sizing-values", - "dev": "#sizing-values" - }, - "tests": ["stretch", "fit-content", "contain"] - }, - "min-inline-size": { - "links": { - "tr": "#sizing-values", - "dev": "#sizing-values" - }, - "tests": ["stretch", "fit-content", "contain"] - }, - "max-inline-size": { - "links": { - "tr": "#sizing-values", - "dev": "#sizing-values" - }, - "tests": ["stretch", "fit-content", "contain"] - }, - "block-size": { - "links": { - "tr": "#sizing-values", - "dev": "#sizing-values" - }, - "tests": ["stretch", "fit-content", "contain"] - }, - "min-block-size": { - "links": { - "tr": "#sizing-values", - "dev": "#sizing-values" - }, - "tests": ["stretch", "fit-content", "contain"] - }, - "max-block-size": { - "links": { - "tr": "#sizing-values", - "dev": "#sizing-values" - }, - "tests": ["stretch", "fit-content", "contain"] - } - } - }, - - "css-speech-1": { - "title": "CSS Speech Module Level 1", - "links": { - "tr": "css-speech-1", - "dev": "css-speech-1" - }, - "status": { - "stability": "stable" - }, - "properties": { - "cue": { - "links": { - "tr": "#cue-props-cue", - "dev": "#cue-props-cue" - }, - "tests": [ - "none", "url(beforeafter.wav)", "url(beforeafter.wav) +3dB", "url(beforeafter.wav) -3dB", - "url(before.wav) url(after.wav)", "url(before.wav) +3dB url(after.wav) -3dB" - ] - }, - "cue-before": { - "links": { - "tr": "#cue-props-cue-before-after", - "dev": "#cue-props-cue-before-after" - }, - "tests": ["none", "url(after.wav)", "url(after.wav) +3dB", "url(after.wav) -3dB"] - }, - "cue-after": { - "links": { - "tr": "#cue-props-cue-before-after", - "dev": "#cue-props-cue-before-after" - }, - "tests": ["none", "url(after.wav)", "url(after.wav) +3dB", "url(after.wav) -3dB"] - }, - "pause": { - "links": { - "tr": "#pause-props-pause", - "dev": "#pause-props-pause" - }, - "tests": [ - "1s", "none", "x-weak", "weak", "medium", "strong", "x-strong", - "1s weak", "none 200ms" - ] - }, - "pause-before": { - "links": { - "tr": "#pause-props-pause-before-after", - "dev": "#pause-props-pause-before-after" - }, - "tests": ["1s", "none", "x-weak", "weak", "medium", "strong", "x-strong"] - }, - "pause-after": { - "links": { - "tr": "#pause-props-pause-before-after", - "dev": "#pause-props-pause-before-after" - }, - "tests": ["1s", "none", "x-weak", "weak", "medium", "strong", "x-strong"] - }, - "rest": { - "links": { - "tr": "#rest-props-rest", - "dev": "#rest-props-rest" - }, - "tests": [ - "1s", "none", "x-weak", "weak", "medium", "strong", "x-strong", - "1s weak", "none 200ms" - ] - }, - "rest-before": { - "links": { - "tr": "#rest-props-rest-before-after", - "dev": "#rest-props-rest-before-after" - }, - "tests": ["1s", "none", "x-weak", "weak", "medium", "strong", "x-strong"] - }, - "rest-after": { - "links": { - "tr": "#rest-props-rest-before-after", - "dev": "#rest-props-rest-before-after" - }, - "tests": ["1s", "none", "x-weak", "weak", "medium", "strong", "x-strong"] - }, - "speak": { - "links": { - "tr": "#speaking-props-speak", - "dev": "#speaking-props-speak" - }, - "tests": ["auto", "never", "always"] - }, - "speak-as": { - "links": { - "tr": "#speaking-props-speak-as", - "dev": "#speaking-props-speak-as" - }, - "tests": [ - "normal", "spell-out", "digits", "literal-punctuation", "no-punctuation", - "spell-out digits", "spell-out literal-punctuation", "digits no-punctuation" - ] - }, - "voice-balance": { - "links": { - "tr": "#mixing-props-voice-balance", - "dev": "#mixing-props-voice-balance" - }, - "tests": ["20.4", "left", "center", "right", "leftwards", "rightwards"] - }, - "voice-duration": { - "links": { - "tr": "#mixing-props-voice-duration", - "dev": "#mixing-props-voice-duration" - }, - "tests": ["auto", "1s"] - }, - "voice-family": { - "links": { - "tr": "#voice-props-voice-family", - "dev": "#voice-props-voice-family" - }, - "tests": [ - "voice-family", "male", "female", "neutral", "preserve", "child male", "young female", - "old neutral", "female 2", "young male 1", "voice-family1, voice-family2, male" - ] - }, - "voice-pitch": { - "links": { - "tr": "#voice-props-voice-pitch", - "dev": "#voice-props-voice-pitch" - }, - "tests": [ - "250Hz", "+30Hz", "-20Hz absolute", "x-low", "low", "medium", "high", "x-high", - "1.059st", "25%", "+25%", "-25%", "low +20Hz", "high -25%", "medium -1.02st" - ] - }, - "voice-range": { - "links": { - "tr": "#voice-props-voice-range", - "dev": "#voice-props-voice-range" - }, - "tests": [ - "250Hz", "+30Hz", "-20Hz absolute", "x-low", "low", "medium", "high", "x-high", - "1.059st", "25%", "+25%", "-25%", "low +20Hz", "high -25%", "medium -1.02st" - ] - }, - "voice-rate": { - "links": { - "tr": "#voice-props-voice-rate", - "dev": "#voice-props-voice-rate" - }, - "tests": ["normal", "x-slow", "slow", "fast", "x-fast", "20%", "slow 80%"] - }, - "voice-stress": { - "links": { - "tr": "#voice-props-voice-stress", - "dev": "#voice-props-voice-stress" - }, - "tests": ["normal", "strong", "moderate", "none", "reduced"] - }, - "voice-volume": { - "links": { - "tr": "#mixing-props-voice-volume", - "dev": "#mixing-props-voice-volume" - }, - "tests": ["silent", "x-soft", "soft", "medium", "loud", "x-loud", "20dB", "loud -10dB"] - } - } - }, - - "css-text-3": { - "title": "CSS Text Module Level 3", - "links": { - "tr": "css-text-3", - "dev": "css-text-3" - }, - "status": { - "stability": "stable" - }, - "properties": { - "text-transform": { - "links": { - "tr": "#text-transform", - "dev": "#text-transform-property" - }, - "tests": ["full-width", "full-size-kana", "capitalize full-width", "capitalize full-width full-size-kana"] - }, - "tab-size": { - "links": { - "tr": "#tab-size-property", - "dev": "#tab-size-property" - }, - "tests": ["4", "1em"] - }, - "line-break": { - "links": { - "tr": "#line-break-property", - "dev": "#line-break-property" - }, - "tests": ["auto", "loose", "normal", "strict", "anywhere"] - }, - "word-break": { - "links": { - "tr": "#word-break-property", - "dev": "#word-break-property" - }, - "tests": ["normal", "keep-all", "break-all"] - }, - "white-space": { - "links": { - "tr": "#white-space-property", - "dev": "#white-space-property" - }, - "tests": ["break-spaces"] - }, - "hyphens": { - "links": { - "tr": "#hyphenation", - "dev": "#hyphenation" - }, - "tests": ["auto", "manual", "none"] - }, - "overflow-wrap": { - "links": { - "tr": "#overflow-wrap-property", - "dev": "#overflow-wrap-property" - }, - "tests": ["normal", "break-word", "anywhere"] - }, - "word-wrap": { - "links": { - "tr": "#overflow-wrap-property", - "dev": "#overflow-wrap-property" - }, - "tests": ["normal", "break-word", "anywhere"] - }, - "text-align": { - "links": { - "tr": "#text-align-property", - "dev": "#text-align-property" - }, - "tests": ["start", "end", "match-parent", "justify-all"] - }, - "text-align-all": { - "links": { - "tr": "#text-align-all-property", - "dev": "#text-align-all-property" - }, - "tests": ["start", "end", "left", "right", "center", "justify", "match-parent"] - }, - "text-align-last": { - "links": { - "tr": "#text-align-last-property", - "dev": "#text-align-last-property" - }, - "tests": ["auto", "start", "end", "left", "right", "center", "justify", "match-parent"] - }, - "text-justify": { - "links": { - "tr": "#text-justify-property", - "dev": "#text-justify-property" - }, - "tests": ["auto", "none", "inter-word", "inter-character"] - }, - "word-spacing": { - "links": { - "tr": "#word-spacing-property", - "dev": "#word-spacing-property" - }, - "tests": ["50%"] - }, - "text-indent": { - "links": { - "tr": "#text-indent-property", - "dev": "#text-indent-property" - }, - "tests": ["1em hanging", "1em each-line", "1em hanging each-line"] - }, - "hanging-punctuation": { - "links": { - "tr": "#hanging-punctuation-property", - "dev": "#hanging-punctuation-property" - }, - "tests": [ - "none", "first", "last", "force-end", "allow-end", "first last", "first force-end", - "first force-end last", "first allow-end last" - ] - } - } - }, - - "css-text-4": { - "title": "CSS Text Module Level 4", - "links": { - "tr": "css-text-4", - "dev": "css-text-4" - }, - "status": { - "stability": "experimental" - }, - "properties": { - "text-space-collapse": { - "links": { - "tr": "#white-space-collapsing", - "dev": "#white-space-collapsing" - }, - "tests": ["collapse", "discard", "preserve", "preserve-breaks", "preserve-spaces"] - }, - "text-space-trim": { - "links": { - "tr": "#white-space-trim", - "dev": "#white-space-trim" - }, - "tests": [ - "none", "trim-inner", " discard-before", "discard-after", - "trim-inner discard-before", "trim-inner discard-before discard-after" - ] - }, - "text-wrap": { - "links": { - "tr": "#text-wrap", - "dev": "#text-wrap" - }, - "tests": ["wrap", "nowrap", "balance "] - }, - "wrap-before": { - "links": { - "tr": "#wrap-before", - "dev": "#wrap-before" - }, - "tests": ["auto", "avoid", "avoid-line", "avoid-flex", "line", "flex"] - }, - "wrap-after": { - "links": { - "tr": "#wrap-before", - "dev": "#wrap-before" - }, - "tests": ["auto", "avoid", "avoid-line", "avoid-flex", "line", "flex"] - }, - "wrap-inside": { - "links": { - "tr": "#wrap-inside", - "dev": "#wrap-inside" - }, - "tests": ["auto", "avoid"] - }, - "hyphenate-character": { - "links": { - "tr": "#hyphenate-character", - "dev": "#hyphenate-character" - }, - "tests": ["auto", "'\\2010'"] - }, - "hyphenate-limit-zone": { - "links": { - "tr": "#hyphenate-size-limits", - "dev": "#hyphenate-size-limits" - }, - "tests": ["1%", "1em"] - }, - "hyphenate-limit-chars": { - "links": { - "tr": "#hyphenate-char-limits", - "dev": "#hyphenate-char-limits" - }, - "tests": ["auto", "5", "auto 3", "5 4 3"] - }, - "hyphenate-limit-lines": { - "links": { - "tr": "#hyphenate-line-limits", - "dev": "#hyphenate-line-limits" - }, - "tests": ["no-limit", "2"] - }, - "hyphenate-limit-last": { - "links": { - "tr": "#hyphenate-line-limits", - "dev": "#hyphenate-line-limits" - }, - "tests": ["none", "always", "column", "page", "spread"] - } - } - }, - - "css-text-decor-3": { - "title": "CSS Text Decoration Module Level 3", - "links": { - "tr": "css-text-decor-3", - "dev": "css-text-decor-3" - }, - "status": { - "stability": "stable" - }, - "properties": { - "text-decoration": { - "links": { - "tr": "#text-decoration-property", - "dev": "#text-decoration-property" - }, - "tests": "underline dotted green" - }, - "text-decoration-line": { - "links": { - "tr": "#text-decoration-line-property", - "dev": "#text-decoration-line-property" - }, - "tests": ["none", "underline", "overline", "line-through", "underline overline"] - }, - "text-decoration-color": { - "links": { - "tr": "#text-decoration-color-property", - "dev": "#text-decoration-color-property" - }, - "tests": "white" - }, - "text-decoration-style": { - "links": { - "tr": "#text-decoration-style-property", - "dev": "#text-decoration-style-property" - }, - "tests": ["solid", "double", "dotted", "dashed", "wavy"] - }, - "text-underline-position": { - "links": { - "tr": "#text-underline-position-property", - "dev": "#text-underline-position-property" - }, - "tests": ["auto", "under", "left", "right", "under left", "under right"] - }, - "text-emphasis-style": { - "links": { - "tr": "#text-emphasis-style-property", - "dev": "#text-emphasis-style-property" - }, - "tests": ["none", "filled", "open", "dot", "circle", "double-circle", "triangle", "sesame", "open dot", "'foo'"] - }, - "text-emphasis-color": { - "links": { - "tr": "#text-emphasis-color-property", - "dev": "#text-emphasis-color-property" - }, - "tests": "green" - }, - "text-emphasis": { - "links": { - "tr": "#text-emphasis-property", - "dev": "#text-emphasis-property" - }, - "tests": "open dot green" - }, - "text-emphasis-position": { - "links": { - "tr": "#text-emphasis-position-property", - "dev": "#text-emphasis-position-property" - }, - "tests": ["over left", "over right", "under left", "under right"] - }, - "text-shadow": { - "links": { - "tr": "#text-shadow-property", - "dev": "#text-shadow-property" - }, - "tests": ["none", "1px 1px", "0 0 black", "1px 2px 3px black"] - } - } - }, - - "css-text-decor-4": { - "title": "CSS Text Decoration Module Level 4", - "links": { - "tr": "css-text-decor-4", - "dev": "css-text-decor-4" - }, - "status": { - "stability": "experimental" - }, - "properties": { - "text-decoration": { - "links": { - "tr": "#text-decoration-property", - "dev": "#text-decoration-property" - }, - "tests": ["underline solid blue 1px"] - }, - "text-decoration-skip": { - "links": { - "tr": "#text-decoration-skip-property", - "dev": "#text-decoration-skip-property" - }, - "tests": [ - "none", "objects", "objects spaces", "objects leading-spaces", "objects trailing-spaces", "objects leading-spaces trailing-spaces", - "objects leading-spaces trailing-spaces edges", "objects leading-spaces trailing-spaces edges box-decoration", "objects edges", - "objects box-decoration", "spaces", "spaces edges", "spaces edges box-decoration", "spaces box-decoration", "leading-spaces", - "leading-spaces trailing-spaces edges", "leading-spaces trailing-spaces edges box-decoration", "edges", "edges box-decoration", - "box-decoration" - ] - }, - "text-decoration-skip-ink": { - "links": { - "tr": "#text-decoration-skip-ink-property", - "dev": "#text-decoration-skip-ink-property" - }, - "tests": ["none", "auto"] - }, - "text-underline-offset": { - "links": { - "tr": "#underline-offset", - "dev": "#underline-offset" - }, - "tests": ["auto", "3px", "10%"] - }, - "text-decoration-thickness": { - "links": { - "tr": "#underline-offset", - "dev": "#text-decoration-width-property" - }, - "tests": ["auto", "from-font", "3px", "10%"] - }, - "text-shadow": { - "links": { - "tr": "#text-shadow-property", - "dev": "#text-shadow-property" - }, - "tests": ["1px 2px 3px 4px black"] - } - } - }, - - "css-transforms-1": { - "title": "CSS Transforms Module Level 1", - "links": { - "tr": "css-transforms-1", - "dev": "css-transforms-1" - }, - "status": { - "stability": "stable", - "first-snapshot": 2017 - }, - "properties": { - "transform": { - "links": { - "tr": "#transform-property", - "dev": "#transform-property" - }, - "tests": [ - "none", - "translate(5px)", "translate(5px, 10px)", "translateY(5px)", "translateX(5px)", "translateY(5%)", "translateX(5%)", - "scale(2)", "scale(2, -1)", "scaleX(2)", "scaleY(2.5)", - "rotate(45deg)", - "skew(45deg)", "skew(45deg, 15deg)", "skewX(45deg)", "skewY(45deg)", - "matrix(1,-.2,0,1,0,0)", "matrix(1,-.2,0,1,10,10)", - "translate(50px, -24px) rotate(180deg) scale(.5) skew(0, 22.5deg)", - "translateZ(5px)", - "scaleZ(1.5)", - "rotateX(-45deg)", "rotateY(-45deg)", "rotateZ(-45deg)", - "perspective(600px)" - ] - }, - "transform-origin": { - "links": { - "tr": "#transform-origin-property", - "dev": "#transform-origin-property" - }, - "tests": ["10px", "top", "top left", "50% 100%", "left 0%", "left 50% 0"] - }, - "transform-box": { - "links": { - "tr": "#transform-box", - "dev": "#transform-box" - }, - "tests": ["border-box", "fill-box", "view-box"] - } - } - }, - - "css-transforms-2": { - "title": "CSS Transforms Module Level 2", - "links": { - "tr": "css-transforms-2", - "dev": "css-transforms-2" - }, - "status": { - "stability": "stable" - }, - "properties": { - "translate": { - "links": { - "tr": "#individual-transforms", - "dev": "#individual-transforms" - }, - "tests": ["none", "50%", "50% 50%", "50% 50% 10px"] - }, - "scale": { - "links": { - "tr": "#individual-transforms", - "dev": "#individual-transforms" - }, - "tests": ["none"].concat(["2"].times(1, 3)) - }, - "rotate": { - "links": { - "tr": "#individual-transforms", - "dev": "#individual-transforms" - }, - "tests": ["none"].concat(["", "x", "y", "z", "-1 0 2"].and(["45deg"])).concat(["45deg"].and(["x", "y", "z", "-1 0 2"])) - }, - "transform": { - "links": { - "tr": "#transform-property", - "dev": "#transform-property" - }, - "tests": [ - "perspective(none)", - "translate3d(0, 0, 5px)", - "scale3d(1, 0, -1)", - "rotate3d(1, 1, 1, 45deg)", - "matrix3d(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)", "matrix3d(0,0,0,0,0,0,0,0,0,0,1,0,10,10,0,1)", - "translate3d(50px, -24px, 5px) rotate3d(1, 2, 3, 180deg) scale3d(-1, 0, .5)", - ] - }, - "transform-style": { - "links": { - "tr": "#transform-style-property", - "dev": "#transform-style-property" - }, - "tests": ["flat", "preserve-3d"] - }, - "perspective": { - "links": { - "tr": "#perspective-property", - "dev": "#perspective-property" - }, - "tests": ["none", "600px"] - }, - "perspective-origin": { - "links": { - "tr": "#perspective-origin-property", - "dev": "#perspective-origin-property" - }, - "tests": ["10px", "top", "top left", "50% 100%", "left 0%"] - }, - "backface-visibility": { - "links": { - "tr": "#backface-visibility-property", - "dev": "#backface-visibility-property" - }, - "tests": ["visible", "hidden"] - } - } - }, - - "css-transitions-1": { - "title": "CSS Transitions", - "links": { - "tr": "css-transitions-1", - "dev": "css-transitions-1" - }, - "status": { - "stability": "stable" - }, - "properties": { - "transition-property": { - "links": { - "tr": "#transition-property-property", - "dev": "#transition-property-property" - }, - "tests": ["none", "all", "width", "width, height"] - }, - "transition-duration": { - "links": { - "tr": "#transition-duration-property", - "dev": "#transition-duration-property" - }, - "tests": ["0s", "1s", "100ms"] - }, - "transition-timing-function": { - "links": { - "tr": "#transition-timing-function-property", - "dev": "#transition-timing-function-property" - }, - "tests": [ - "ease", "linear", "ease-in", "ease-out", "ease-in-out", - "cubic-bezier(.5, .5, .5, .5)", - "cubic-bezier(.5, 1.5, .5, -2.5)", - "step-start", "step-end", "steps(3, start)", "steps(5, end)" - ] - }, - "transition-delay": { - "links": { - "tr": "#transition-delay-property", - "dev": "#transition-delay-property" - }, - "tests": ["1s", "-1s"] - }, - "transition": { - "links": { - "tr": "#transition-shorthand-property", - "dev": "#transition-shorthand-property" - }, - "tests": "1s 2s width linear" - } - } - }, - - "css-ui-3": { - "title": "CSS Basic User Interface Module Level 3 (CSS3 UI)", - "links": { - "tr": "css-ui-3", - "dev": "css-ui-3" - }, - "status": { - "stability": "stable", - "first-snapshot": 2015 - }, - "properties": { - "box-sizing": { - "links": { - "tr": "#box-sizing", - "dev": "#box-sizing" - }, - "tests": ["border-box", "content-box"] - }, - "outline-style": { - "links": { - "tr": "#outline-style", - "dev": "#outline-style" - }, - "tests": ["auto"] - }, - "outline-offset": { - "links": { - "tr": "#outline-offset", - "dev": "#outline-offset" - }, - "tests": ["-5px", "0", "5px"] - }, - "resize": { - "links": { - "tr": "#resize", - "dev": "#resize" - }, - "tests": ["none", "both", "horizontal", "vertical"] - }, - "text-overflow": { - "links": { - "tr": "#text-overflow", - "dev": "#text-overflow" - }, - "tests": ["clip", "ellipsis"] - }, - "cursor": { - "links": { - "tr": "#cursor", - "dev": "#cursor" - }, - "tests": [ - "url(foo.png) 2 2, auto", "none", "context-menu", "cell", "vertical-text", "alias", "copy", "no-drop", "not-allowed", - "grab", "grabbing", "ew-resize", "ns-resize", "nesw-resize", "nwse-resize", "col-resize", "row-resize", "all-scroll", "zoom-in", - "zoom-out" - ] - }, - "caret-color": { - "links": { - "tr": "#caret-color", - "dev": "#caret-color" - }, - "tests": ["auto", "green"] - } - } - }, - - "css-ui-4": { - "title": "CSS Basic User Interface Module Level 4", - "links": { - "tr": "css-ui-4", - "dev": "css-ui-4" - }, - "status": { - "stability": "experimental" - }, - "properties": { - "accent-color": { - "links": { - "tr": "#widget-accent", - "dev": "#widget-accent" - }, - "tests": ["auto", "red"] - }, - "appearance": { - "links": { - "tr": "#appearance-switching", - "dev": "#appearance-switching" - }, - "tests": [ - "auto", "none", "textfield", "menulist-button", "searchfield", "textarea", "push-button", - "slider-horizontal", "checkbox", "radio", "square-button", "menulist", "listbox", "meter", - "progress-bar", "button" - ], - }, - "input-security": { - "links": { - "tr": "#input-security", - "dev": "#input-security" - }, - "tests": ["auto", "red"] - }, - "caret": { - "links": { - "tr": "#caret", - "dev": "#caret" - }, - "tests": ["auto", "green", "bar", "green bar"] - }, - "caret-shape": { - "links": { - "tr": "#caret-shape", - "dev": "#caret-shape" - }, - "tests": ["auto", "bar", "block", "underscore"] - }, - "text-overflow": { - "links": { - "tr": "#text-overflow", - "dev": "#text-overflow" - }, - "tests": ["clip", "ellipsis", "fade", "fade(10px)", "fade(10%)", "'foo'"].times(1, 2) - }, - "user-select": { - "links": { - "tr": "#content-selection", - "dev": "#content-selection" - }, - "tests": ["auto", "text", "none", "contain", "all"] - }, - "nav-up": { - "links": { - "tr": "#nav-dir", - "dev": "#nav-dir" - }, - "tests": ["auto", "#foo", "#foo current", "#foo root"] - }, - "nav-right": { - "links": { - "tr": "#nav-dir", - "dev": "#nav-dir" - }, - "tests": ["auto", "#foo", "#foo current", "#foo root"] - }, - "nav-down": { - "links": { - "tr": "#nav-dir", - "dev": "#nav-dir" - }, - "tests": ["auto", "#foo", "#foo current", "#foo root"] - }, - "nav-left": { - "links": { - "tr": "#nav-dir", - "dev": "#nav-dir" - }, - "tests": ["auto", "#foo", "#foo current", "#foo root"] - } - } - }, - - "css-values-3": { - "title": "CSS Values and Units Module Level 3", - "links": { - "tr": "css-values-3", - "dev": "css-values-3" - }, - "status": { - "stability": "stable", - "first-snapshot": 2015 - }, - "values": { - "properties": [ - "width", - "padding" - ], - "rem": { - "links": { - "tr": "#rem", - "dev": "#rem", - "mdn": "length" - }, - "tests": "5rem" - }, - "ch": { - "links": { - "tr": "#ch", - "dev": "#ch", - "mdn": "length" - }, - "tests": "5ch" - }, - "vw": { - "links": { - "tr": "#vw", - "dev": "#vw", - "mdn": "length" - }, - "tests": "5vw" - }, - "vh": { - "links": { - "tr": "#vh", - "dev": "#vh", - "mdn": "length" - }, - "tests": "5vh" - }, - "vmin": { - "links": { - "tr": "#vmin", - "dev": "#vmin", - "mdn": "length" - }, - "tests": "5vmin" - }, - "vmax": { - "links": { - "tr": "#vmax", - "dev": "#vmax", - "mdn": "length" - }, - "tests": "5vmax" - }, - "Q": { - "links": { - "tr": "#Q", - "dev": "#Q", - "mdn": "length" - }, - "tests": "5Q" - }, - "attr()": { - "links": { - "tr": "#attr-notation", - "dev": "#attr-notation" - }, - "tests": ["attr(data-px)", "attr(data-px px)", "attr(data-px px, initial)"] - }, - "calc()": { - "links": { - "tr": "#calc-notation", - "dev": "#calc-notation" - }, - "tests": [ - "calc(1px + 2px)", - "calc(5px*2)", - "calc(5px/2)", - "calc(100%/3 - 2*1em - 2*1px)", - "calc(attr(data-px)*2)", - "calc(5px - 10px)", - "calc(1vw - 1px)", - "calc(calc(100%))" - ] - } - }, - "properties": { - "transform": [ - "rotate(calc(15deg + 30deg))" - ] - } - }, - - "css-values-4": { - "title": "CSS Values and Units Module Level 4", - "links": { - "tr": "css-values-4", - "dev": "css-values-4" - }, - "status": { - "stability": "experimental" - }, - "values": { - "properties": [ - "width", - "padding" - ], - "ex": { - "links": { - "tr": "#ex", - "dev": "#ex", - "mdn": "length" - }, - "tests": "5ex" - }, - "rex": { - "links": { - "tr": "#rex", - "dev": "#rex", - "mdn": "length" - }, - "tests": "5rex" - }, - "cap": { - "links": { - "tr": "#cap", - "dev": "#cap", - "mdn": "length" - }, - "tests": "5cap" - }, - "rcap": { - "links": { - "tr": "#rcap", - "dev": "#rcap", - "mdn": "length" - }, - "tests": "5rcap" - }, - "rch": { - "links": { - "tr": "#rch", - "dev": "#rcap", - "mdn": "length" - }, - "tests": "5rch" - }, - "rch": { - "links": { - "tr": "#rch", - "dev": "#rcap", - "mdn": "length" - }, - "tests": "5rch" - }, - "ic": { - "links": { - "tr": "#ic", - "dev": "#ic", - "mdn": "length" - }, - "tests": "5ic" - }, - "ric": { - "links": { - "tr": "#ric", - "dev": "#ric", - "mdn": "length" - }, - "tests": "5ric" - }, - "lh": { - "links": { - "tr": "#lh", - "dev": "#lh", - "mdn": "length" - }, - "tests": "5lh" - }, - "rlh": { - "links": { - "tr": "#rlh", - "dev": "#rlh", - "mdn": "length" - }, - "tests": "5rlh" - }, - "toggle()": { - "links": { - "tr": "#toggle-notation", - "dev": "#toggle-notation" - }, - "tests": ["toggle(1px, 2px)", "toggle(italic, normal)", "toggle(disc, circle, square, box)"] - }, - "min()": { - "links": { - "tr": "#calc-notation", - "dev": "#comp-func" - }, - "tests": ["min(10 * (1vw + 1vh) / 2, 12px)"] - }, - "max()": { - "links": { - "tr": "#calc-notation", - "dev": "#comp-func" - }, - "tests": ["max(10 * (1vw + 1vh) / 2, 12px)"] - }, - "clamp()": { - "links": { - "tr": "#calc-notation", - "dev": "#comp-func" - }, - "tests": ["clamp(12px, 10 * (1vw + 1vh) / 2, 100px)"] - }, - "calc()": { - "links": { - "tr": "#calc-func", - "dev": "#calc-func" - }, - "tests": [ - "calc(1rem * pow(1.5, -1))", - "calc(pow(e, pi) - pi)", - "calc(-18px - sign(5px)*round(down, -18px*sign(5px), 5px))", - "calc(-18px - round(to-zero, -18px, 5px))" - ] - }, - "round()": { - "links": { - "tr": "#round-func", - "dev": "#round-func" - }, - "tests": [ - "round(down, 5.5px, 5px)", - "up(down, 5.5px, 5px)", - "down(down, 5.5px, 5px)", - "round(to-zero, 5.5px, 5px)" - ] - }, - "mod()": { - "links": { - "tr": "#round-func", - "dev": "#round-func" - }, - "tests": ["mod(18px, 5px)", "mod(-140deg, -90deg)"] - }, - "rem()": { - "links": { - "tr": "#round-func", - "dev": "#round-func" - }, - "tests": ["rem(140deg, -90deg)"] - }, - "sin()": { - "links": { - "tr": "#trig-funcs", - "dev": "#trig-funcs" - }, - "tests": ["sin(45deg)", "sin(.125turn)", "sin(3.14159 / 4)"] - }, - "cos()": { - "links": { - "tr": "#trig-funcs", - "dev": "#trig-funcs" - }, - "tests": ["cos(45deg)", "cos(.125turn)", "cos(3.14159 / 4)"] - }, - "tan()": { - "links": { - "tr": "#trig-funcs", - "dev": "#trig-funcs" - }, - "tests": ["tan(1)"] - }, - "asin()": { - "links": { - "tr": "#trig-funcs", - "dev": "#trig-funcs" - }, - "tests": ["asin(1)"] - }, - "acos()": { - "links": { - "tr": "#trig-funcs", - "dev": "#trig-funcs" - }, - "tests": ["acos(-1)"] - }, - "atan()": { - "links": { - "tr": "#trig-funcs", - "dev": "#trig-funcs" - }, - "tests": ["atan(-1)", "atan(tan(90deg))", "tan(atan(infinity))"] - }, - "atan2()": { - "links": { - "tr": "#trig-funcs", - "dev": "#trig-funcs" - }, - "tests": ["atan2(15deg, 90deg)"] - }, - "pow()": { - "links": { - "tr": "#exponent-funcs", - "dev": "#exponent-funcs" - }, - "tests": ["pow(1.5, -1)"] - }, - "sqrt()": { - "links": { - "tr": "#exponent-funcs", - "dev": "#exponent-funcs" - }, - "tests": ["sqrt(2)"] - }, - "hypot()": { - "links": { - "tr": "#exponent-funcs", - "dev": "#exponent-funcs" - }, - "tests": ["hypot(2)", "hypot(2, 2)"] - }, - "log()": { - "links": { - "tr": "#exponent-funcs", - "dev": "#exponent-funcs" - }, - "tests": ["log(2)"] - }, - "exp()": { - "links": { - "tr": "#exponent-funcs", - "dev": "#exponent-funcs" - }, - "tests": ["exp(2)"] - }, - "abs()": { - "links": { - "tr": "#sign-funcs", - "dev": "#sign-funcs" - }, - "tests": ["abs(-2)"] - }, - "sign()": { - "links": { - "tr": "#sign-funcs", - "dev": "#sign-funcs" - }, - "tests": ["sign(10%)"] - }, - "e": { - "links": { - "tr": "#calc-constants", - "dev": "#calc-constants" - }, - "tests": ["calc(e)"] - }, - "pi": { - "links": { - "tr": "#calc-constants", - "dev": "#calc-constants" - }, - "tests": ["calc(pi)"] - }, - "infinity": { - "links": { - "tr": "#calc-error-constants", - "dev": "#ccalc-error-constants" - }, - "tests": ["calc(infinity)"] - }, - "-infinity": { - "links": { - "tr": "#calc-error-constants", - "dev": "#ccalc-error-constants" - }, - "tests": ["calc(-infinity)"] - }, - "NaN": { - "links": { - "tr": "#calc-error-constants", - "dev": "#ccalc-error-constants" - }, - "tests": ["calc(NaN)"] - } - } - }, - - "css-variables-1": { - "title": "CSS Custom Properties for Cascading Variables Module Level 1", - "links": { - "tr": "css-variables-1", - "dev": "css-variables-1" - }, - "status": { - "stability": "stable", - "first-snapshot": 2018 - }, - "declaration": { - "--*": { - "links": { - "tr": "#defining-variables", - "dev": "#defining-variables" - }, - "tests": ["--foo: 2px"] - }, - "var(--*)": { - "links": { - "tr": "#using-variables", - "dev": "#using-variables", - "mdn": "--*" - }, - "tests": [ - "width: var(--foo)", "width: var(--FOO)", "width: var(--foo, 4px)", - "color: rgba(255, 255, 255, var(--foo, .2) )" - ] - } - } - }, - - "css-will-change-1": { - "title": "CSS Will Change Module Level 1", - "links": { - "tr": "css-will-change-1", - "dev": "css-will-change-1" - }, - "status": { - "stability": "stable" - }, - "properties": { - "will-change": { - "links": { - "tr": "#will-change", - "dev": "#will-change" - }, - "tests": ["scroll-position", "contents", "transform", "top, left"] - } - } - }, - - "css-writing-modes-3": { - "title": "CSS Writing Modes Level 3", - "links": { - "tr": "css-writing-modes-3", - "dev": "css-writing-modes-3" - }, - "status": { - "stability": "stable", - "first-snapshot": 2017 - }, - "properties": { - "unicode-bidi": { - "links": { - "tr": "#unicode-bidi", - "dev": "#unicode-bidi" - }, - "tests": ["isolate", "isolate-override", "plaintext"] - }, - "writing-mode": { - "links": { - "tr": "#block-flow", - "dev": "#block-flow" - }, - "tests": ["horizontal-tb", "vertical-rl", "vertical-lr"] - }, - "text-orientation": { - "links": { - "tr": "#text-orientation", - "dev": "#text-orientation" - }, - "tests": ["mixed", "upright", "sideways"] - }, - "text-combine-upright": { - "links": { - "tr": "#text-combine-upright", - "dev": "#text-combine-upright" - }, - "tests": ["none", "all"] - } - } - }, - - "css-writing-modes-4": { - "title": "CSS Writing Modes Level 4", - "links": { - "tr": "css-writing-modes-4", - "dev": "css-writing-modes-4" - }, - "status": { - "stability": "experimental" - }, - "properties": { - "writing-mode": { - "links": { - "tr": "#block-flow", - "dev": "#block-flow" - }, - "tests": ["sideways-rl", "sideways-lr"] - }, - "text-combine-upright": { - "links": { - "tr": "#text-combine-upright", - "dev": "#text-combine-upright" - }, - "tests": ["digits 2"] - } - } - }, - - "cssom-view-1": { - "title": "CSSOM View Module", - "links": { - "tr": "cssom-view-1", - "dev": "cssom-view-1" - }, - "status": { - "stability": "experimental" - }, - "properties": { - "scroll-behavior": { - "links": { - "tr": "#smooth-scrolling", - "dev": "#smooth-scrolling" - }, - "tests": ["auto", "smooth "] - } - } - }, - - "fill-stroke-3": { - "title": "CSS Fill and Stroke Module Level 3", - "links": { - "tr": "fill-stroke-3", - "dev": "fill-stroke-3", - "devtype": "fxtf" - }, - "status": { - "stability": "experimental" - }, - "properties": { - "fill": { - "links": { - "tr": "#fill-shorthand", - "dev": "#fill-shorthand" - }, - "tests": [ - "url(foo.png), url(bar.svg)", - "top left / 50% 60%", - "border-box", - "border-box padding-box", - "url(foo.png) bottom right / cover padding-box content-box" - ] - }, - "fill-rule": { - "links": { - "tr": "#fill-rule", - "dev": "#fill-rule" - }, - "tests": ["nonzero", "evenodd"] - }, - "fill-break": { - "links": { - "tr": "#fill-break", - "dev": "#fill-break" - }, - "tests": ["bounding-box", "slice", "clone"] - }, - "fill-color": { - "links": { - "tr": "#fill-color", - "dev": "#fill-color" - }, - "tests": "green" - }, - "fill-image": { - "links": { - "tr": "#fill-image", - "dev": "#fill-image" - }, - "tests": [ - "url(foo.png)", - "image('sprites.png#xywh=10,30,60,20')", - "image('wavy.svg', 'wavy.png' , 'wavy.gif')", - "image('dark.png', black)", - "image(green)", - "linear-gradient(to bottom, yellow 0%, blue 100%)", - "child", - "child(2)" - ] - }, - "fill-origin": { - "links": { - "tr": "#fill-origin", - "dev": "#fill-origin" - }, - "tests": ["match-parent", "fill-box", "stroke-box", "content-box", "padding-box", "border-box"] - }, - "fill-position": { - "links": { - "tr": "#fill-position", - "dev": "#fill-position" - }, - "tests": ["center", "left 50%", "bottom 10px right 20px", "bottom 10px right", "top right 10px"] - }, - "fill-size": { - "links": { - "tr": "#fill-size", - "dev": "#fill-size" - }, - "tests": ["auto", "cover", "contain", "10px", "50%", "10px auto", "auto 10%", "50em 50%"] - }, - "fill-repeat": { - "links": { - "tr": "#fill-repeat", - "dev": "#fill-repeat" - }, - "tests": ["repeat-x", "repeat-y"].concat(["repeat", "space", "round", "no-repeat"].times(1, 2)) - }, - "fill-opacity": { - "links": { - "tr": "#fill-opacity", - "dev": "#fill-opacity" - }, - "tests": ["0.5", "45%"] - }, - "stroke": { - "links": { - "tr": "#stroke-shorthand", - "dev": "#stroke-shorthand" - }, - "tests": [ - "url(foo.png), url(bar.svg)", - "top left / 50% 60%", - "border-box", - "border-box padding-box", - "url(foo.png) bottom right / cover padding-box content-box" - ] - }, - "stroke-width": { - "links": { - "tr": "#stroke-width", - "dev": "#stroke-width" - }, - "tests": ["0", "1px", "25%"] - }, - "stroke-align": { - "links": { - "tr": "#stroke-align", - "dev": "#stroke-align" - }, - "tests": ["center", "inset", "outset "] - }, - "stroke-linecap": { - "links": { - "tr": "#stroke-linecap", - "dev": "#stroke-linecap" - }, - "tests": ["butt", "round", "square "] - }, - "stroke-linejoin": { - "links": { - "tr": "#stroke-linejoin", - "dev": "#stroke-linejoin" - }, - "tests": [ - "crop", "arcs", "miter", "bevel", "round", "fallback", - "crop bevel", "arcs round", "miter fallback" - ] - }, - "stroke-miterlimit": { - "links": { - "tr": "#stroke-miterlimit", - "dev": "#stroke-miterlimit" - }, - "tests": "4" - }, - "stroke-break": { - "links": { - "tr": "#stroke-break", - "dev": "#stroke-break" - }, - "tests": ["bounding-box", "slice", "clone "] - }, - "stroke-dasharray": { - "links": { - "tr": "#stroke-dasharray", - "dev": "#stroke-dasharray" - }, - "tests": ["none", "0", "4px", "4px 12%", "4px 12% 3em", "4px 12% 3em 5px", "4px 12% 3em 5px 10%"] - }, - "stroke-dashoffset": { - "links": { - "tr": "#stroke-dashoffset", - "dev": "#stroke-dashoffset" - }, - "tests": ["0", "4px", "12%"] - }, - "stroke-dash-corner": { - "links": { - "tr": "#corner-control", - "dev": "#corner-control" - }, - "tests": ["none", "15px"] - }, - "stroke-dash-justify": { - "links": { - "tr": "#corner-control", - "dev": "#corner-control" - }, - "tests": [ - "none", "stretch", "compress", "dashes", "gaps", - "stretch dashes", "compress gaps dashes", - "stretch gaps", "compress dashes gaps" - ] - }, - "stroke-color": { - "links": { - "tr": "#stroke-color", - "dev": "#stroke-color" - }, - "tests": "green" - }, - "stroke-image": { - "links": { - "tr": "#stroke-image", - "dev": "#stroke-image" - }, - "tests": [ - "url(foo.png)", - "image('sprites.png#xywh=10,30,60,20')", - "image('wavy.svg', 'wavy.png' , 'wavy.gif')", - "image('dark.png', black)", - "image(green)", - "linear-gradient(to bottom, yellow 0%, blue 100%)", - "child", - "child(2)" - ] - }, - "stroke-origin": { - "links": { - "tr": "#stroke-origin", - "dev": "#stroke-origin" - }, - "tests": ["match-parent", "fill-box", "stroke-box", "content-box", "padding-box", "border-box"] - }, - "stroke-position": { - "links": { - "tr": "#stroke-position", - "dev": "#stroke-position" - }, - "tests": ["center", "left 50%", "bottom 10px right 20px", "bottom 10px right", "top right 10px"] - }, - "stroke-size": { - "links": { - "tr": "#stroke-size", - "dev": "#stroke-size" - }, - "tests": ["auto", "cover", "contain", "10px", "50%", "10px auto", "auto 10%", "50em 50%"] - }, - "stroke-repeat": { - "links": { - "tr": "#stroke-repeat", - "dev": "#stroke-repeat" - }, - "tests": ["repeat-x", "repeat-y"].concat(["repeat", "space", "round", "no-repeat"].times(1, 2)) - }, - "stroke-opacity": { - "links": { - "tr": "#stroke-opacity", - "dev": "#stroke-opacity" - }, - "tests": ["0.5", "45%"] - } - } - }, - - "filter-effects-1": { - "title": "Filter Effects Module Level 1", - "links": { - "tr": "filter-effects-1", - "dev": "filter-effects-1", - "devtype": "fxtf" - }, - "status": { - "stability": "stable" - }, - "properties": { - "filter": { - "links": { - "tr": "#FilterProperty", - "dev": "#FilterProperty" - }, - "tests": [ - "none", - "url(#id)", - "url(image.svg#id)", - "blur(5px)", - "brightness(0.5)", - "contrast(150%)", - "drop-shadow(15px 15px 15px black)", - "grayscale(50%)", - "hue-rotate(50deg)", - "invert(50%)", - "opacity(50%)", - "sepia(50%)", - "saturate(150%)", - "grayscale(100%) sepia(100%)" - ] - }, - "flood-color": { - "links": { - "tr": "#FloodColorProperty", - "dev": "#FloodColorProperty" - }, - "tests": ["black", "#FFF"] - }, - "flood-opacity": { - "links": { - "tr": "#FloodOpacityProperty", - "dev": "#FloodOpacityProperty" - }, - "tests": ["1", "0", "0.2", "45%"] - }, - "color-interpolation-filters": { - "links": { - "tr": "#ColorInterpolationFiltersProperty", - "dev": "#ColorInterpolationFiltersProperty" - }, - "tests": ["auto", "sRGB", "linearRGB"] - }, - "lighting-color": { - "links": { - "tr": "#LightingColorProperty", - "dev": "#LightingColorProperty" - }, - "tests": ["white", "#000"] - } - } - }, - - "filter-effects-2": { - "title": "Filter Effects Module Level 2", - "links": { - "dev": "filter-effects-2", - "devtype": "fxtf" - }, - "status": { - "stability": "experimental" - }, - "properties": { - "backdrop-filter": { - "links": { - "dev": "#BackdropFilterProperty" - }, - "tests": [ - "none", - "url(#id)", - "url(image.svg#id)", - "blur(5px)", - "brightness(0.5)", - "contrast(150%)", - "drop-shadow(15px 15px 15px black)", - "grayscale(50%)", - "hue-rotate(50deg)", - "invert(50%)", - "opacity(50%)", - "sepia(50%)", - "saturate(150%)", - "grayscale(100%) sepia(100%)" - ] - } - } - }, - - "fullscreen": { - "title": "Fullscreen API", - "links": { - "dev": "fullscreen", - "devtype": "whatwg" - }, - "status": { - "stability": "experimental" - }, - "selectors": { - "::backdrop": { - "links": { - "dev": "#::backdrop-pseudo-element" - }, - "tests": "::backdrop" - }, - ":fullscreen": { - "links": { - "dev": "#:fullscreen-pseudo-class" - }, - "tests": ":fullscreen" - } - } - }, - - "html": { - "title": "HTML Living Standard", - "links": { - "dev": "html", - "devtype": "whatwg" - }, - "status": { - "stability": "experimental" - }, - "selectors": { - ":autofill": { - "links": { - "dev": "#selector-autofill" - }, - "tests": ":autofill" - } - } - }, - - "mathml-core": { - "title": "MathML Core", - "links": { - "dev": "mathml-core/#css-extensions-for-math-layout", - "devtype": "math" - }, - "status": { - "stability": "experimental" - }, - "properties": { - "display": { - "links": { - "dev": "new-display-math-value" - }, - "tests": [ - "math", "block math", "inline math" - ] - }, - "text-transform": { - "links": { - "dev": "#new-text-transform-values" - }, - "tests": [ - "math-auto", "math-bold", "math-italic", "math-bold-italic", "math-double-struck", "math-bold-fraktur", - "math-script", "math-bold-script", "math-fraktur", "math-sans-serif", "math-bold-sans-serif", - "math-sans-serif-italic", "math-sans-serif-bold-italic", "math-monospace", "math-initial", - "math-tailed", "math-looped", "math-stretched" - ] - }, - "font-size": { - "links": { - "dev": "#the-math-script-level-property" - }, - "tests": ["math"] - }, - "math-style": { - "links": { - "dev": "#the-math-style-property" - }, - "tests": ["normal", "compact"] - }, - "math-shift": { - "links": { - "dev": "#the-math-shift" - }, - "tests": ["normal", "compact"] - }, - "math-depth": { - "links": { - "dev": "#the-math-script-level-property" - }, - "tests": ["auto-add", "add(0)", "add(1)", "0", "1"] - } - } - }, - - /* - * Note: the following media queries must be true in supporting UAs! - */ - "mediaqueries-3": { - "title": "Media Queries Level 3", - "links": { - "tr": "css3-mediaqueries", - "dev": "mediaqueries-3" - }, - "status": { - "stability": "stable", - "first-snapshot": 2010 - }, - "Media queries": { - "negation": { - "links": { - "tr": "#media0", - "dev": "#media0", - "mdn": "Media_Queries/Using_media_queries" - }, - "tests": ["not print", "not all and (width:1px)"] - }, - "width": { - "links": { - "tr": "#width", - "dev": "#width", - "mdn": "Media_Queries/Using_media_queries" - }, - "tests": ["(width)", "(min-width:1px)", "(max-width:1000000px)"] - }, - "height": { - "links": { - "tr": "#height", - "dev": "#height", - "mdn": "Media_Queries/Using_media_queries" - }, - "tests": ["(height)", "(min-height:1px)", "(max-height:1000000px)"] - }, - "device-width": { - "links": { - "tr": "#device-width", - "dev": "#device-width" - }, - "tests": ["(device-width)", "(min-device-width:1px)", "(max-device-width:1000000px)"] - }, - "device-height": { - "links": { - "tr": "#device-height", - "dev": "#device-height" - }, - "tests": ["(device-height)", "(min-device-height:1px)", "(max-device-height:1000000px)"] - }, - "orientation": { - "links": { - "tr": "#orientation", - "dev": "#orientation" - }, - "tests": "(orientation:portrait), (orientation:landscape)" - }, - "aspect-ratio": { - "links": { - "tr": "#aspect-ratio", - "dev": "#aspect-ratio" - }, - "tests": [ - "(aspect-ratio)", - "(min-aspect-ratio:1/1000000)", - "(min-aspect-ratio:1 / 1000000)", - "(max-aspect-ratio:1000000/1)", - ] - }, - "device-aspect-ratio": { - "links": { - "tr": "#device-aspect-ratio", - "dev": "#device-aspect-ratio" - }, - "tests": [ - "(device-aspect-ratio)", - "(min-device-aspect-ratio:1/1000000)", - "(min-device-aspect-ratio:1 / 1000000)", - "(max-device-aspect-ratio:1000000/1)", - ] - }, - "color": { - "links": { - "tr": "#color", - "dev": "#color" - }, - "tests": [ - "(color)", "(min-color: 0)", "(max-color: 100)" - ] - }, - "color-index": { - "links": { - "tr": "#color-index", - "dev": "#color-index" - }, - "tests": [ - "all, (color-index)", - "(min-color-index: 0)", - "(max-color-index: 10000000)" - ] - }, - "monochrome": { - "links": { - "tr": "#monochrome", - "dev": "#monochrome" - }, - "tests": [ - "all, (monochrome)", "(min-monochrome: 0)", "(max-monochrome: 10000)" - ] - }, - "resolution": { - "links": { - "tr": "#resolution", - "dev": "#resolution" - }, - "tests": [ - "(resolution)", - "(min-resolution: 1dpi)", - "(max-resolution: 1000000dpi)", - "(max-resolution: 1000000dpcm)" - ] - }, - "scan": { - "links": { - "tr": "#scan", - "dev": "#scan" - }, - "tests": ["not tv, (scan: progressive)", "not tv, (scan: interlace)"] - }, - "grid": { - "links": { - "tr": "#grid", - "dev": "#grid" - }, - "tests": ["all, (grid)", "(grid: 0), (grid: 1)"] - } - } - }, - - "mediaqueries-4": { - "title": "Media Queries Level 4", - "links": { - "tr": "mediaqueries-4", - "dev": "mediaqueries-4" - }, - "status": { - "stability": "stable" - }, - "Media queries": { - "resolution": { - "links": { - "tr": "#resolution", - "dev": "#resolution" - }, - "tests": ["(resolution: infinite)"] - }, - "hover": { - "links": { - "tr": "#hover", - "dev": "#hover" - }, - "tests": ["(hover)", "(hover: none)", "(hover: hover)"] - }, - "any-hover": { - "links": { - "tr": "#any-input", - "dev": "#any-input" - }, - "tests": ["(any-hover)", "(any-hover: none)", "(any-hover: hover)"] - }, - "pointer": { - "links": { - "tr": "#pointer", - "dev": "#pointer" - }, - "tests": ["(pointer)", "(pointer: none)", "(pointer: coarse)", "(pointer: fine)"] - }, - "any-pointer": { - "links": { - "tr": "#any-input", - "dev": "#any-input" - }, - "tests": ["(any-pointer)", "(any-pointer: none)", "(any-pointer: coarse)", "(any-pointer: fine)"] - }, - "update": { - "links": { - "tr": "#update", - "dev": "#update" - }, - "tests": ["(update)", "(update: none)", "(update: slow)", "(update: fast)"] - }, - "overflow-block": { - "links": { - "tr": "#mf-overflow-block", - "dev": "#mf-overflow-block" - }, - "tests": ["(overflow-block: none)", "(overflow-block: scroll)", "(overflow-block: optional-paged)", "(overflow-block: paged)"] - }, - "overflow-inline": { - "links": { - "tr": "#mf-overflow-inline", - "dev": "#mf-overflow-inline" - }, - "tests": ["(overflow-inline: none)", "(overflow-inline: scroll)"] - }, - "color-gamut": { - "links": { - "tr": "#color-gamut", - "dev": "#color-gamut" - }, - "tests": ["(color-gamut)", "(color-gamut: srgb)", "(color-gamut: p3)", "(color-gamut: rec2020)"] - }, - "aspect-ratio": { - "links": { - "tr": "#aspect-ratio", - "dev": "#aspect-ratio" - }, - "tests": [ - "(aspect-ratio: 1280.1/720.01)", - "(max-aspect-ratio: 1280.1/720.01)", - "(min-aspect-ratio: 0.2)", - ] - }, - "device-aspect-ratio": { - "links": { - "tr": "#device-aspect-ratio", - "dev": "#device-aspect-ratio" - }, - "tests": [ - "(device-aspect-ratio:1280.1/720.01)", - "(max-device-aspect-ratio:1280.1/720.01)", - "(min-device-aspect-ratio:0.2)", - ] - } - } - }, - - "mediaqueries-5": { - "title": "Media Queries Level 5", - "links": { - "tr": "mediaqueries-5", - "dev": "mediaqueries-5" - }, - "status": { - "stability": "experimental" - }, - "Media queries": { - "prefers-reduced-motion": { - "links": { - "tr": "#prefers-reduced-motion", - "dev": "#prefers-reduced-motion" - }, - "tests": ["(prefers-reduced-motion)", "(prefers-reduced-motion: no-preference)", "(prefers-reduced-motion: reduce)"] - }, - "prefers-reduced-transparency": { - "links": { - "tr": "#prefers-reduced-transparency", - "dev": "#prefers-reduced-transparency" - }, - "tests": ["(prefers-reduced-transparency)","(prefers-reduced-transparency: no-preference)", "(prefers-reduced-transparency: reduce)"] - }, - "prefers-contrast": { - "links": { - "tr": "#prefers-contrast", - "dev": "#prefers-contrast" - }, - "tests": ["(prefers-contrast)", "(prefers-contrast: no-preference)", "(prefers-contrast: less)", "(prefers-contrast: more)", "(prefers-contrast: custom)"] - }, - "prefers-color-scheme": { - "links": { - "tr": "#prefers-color-scheme", - "dev": "#prefers-color-scheme" - }, - "tests": ["(prefers-color-scheme)", "(prefers-color-scheme: light)", "(prefers-color-scheme: dark)"] - }, - "scripting": { - "links": { - "tr": "#scripting", - "dev": "#scripting" - }, - "tests": ["(scripting)", "(scripting: none)", "(scripting: initial-only)", "(scripting: enabled)"] - }, - "environment-blending": { - "links": { - "tr": "#environment-blending", - "dev": "#environment-blending" - }, - "tests": ["(environment-blending)", "(environment-blending: opaque)", "(environment-blending: additive)", "(environment-blending: subtractive)"] - }, - "forced-colors": { - "links": { - "tr": "#forced-colors", - "dev": "#prefers-contrast" - }, - "tests": ["(forced-colors)", "(forced-colors: none)", "(forced-color: active)"] - }, - "dynamic-range": { - "links": { - "tr": "#dynamic-range", - "dev": "#dynamic-range" - }, - "tests": ["(dynamic-range)", "(dynamic-range: standard)", "(dynamic-range: high)"] - }, - "inverted-colors": { - "links": { - "tr": "#inverted", - "dev": "#inverted" - }, - "tests": ["(inverted-colors)", "(inverted-colors: none)", "(light-level: inverted)"] - }, - "video-color-gamut": { - "links": { - "dev": "#video-color-gamut", - "tr": "#video-color-gamut" - }, - "tests": ["(video-color-gamut)", "(video-color-gamut: srgb)", "(video-color-gamut: p3)", "(video-color-gamut: rec2020)"] - }, - "video-dynamic-range": { - "links": { - "dev": "#video-dynamic-range", - "tr": "#video-dynamic-range" - }, - "tests": ["(video-dynamic-range)", "(video-dynamic-range: standard)", "(video-dynamic-range: high)"] - } - } - }, - - "motion-1": { - "title": "Motion Path Module Level 1", - "links": { - "dev": "motion-1", - "tr": "motion-1", - "devtype": "fxtf" - }, - "status": { - "stability": "experimental" - }, - "properties": { - "offset-anchor": { - "links": { - "dev": "#offset-anchor-property", - "tr": "#offset-anchor-property" - }, - "tests": ["auto", "center", "top left", "10px 20px", "30% 40%"] - }, - "offset-distance": { - "links": { - "dev": "#offset-distance-property", - "tr": "#offset-distance-property" - }, - "tests": ["20px", "30%"] - }, - "offset-path": { - "links": { - "dev": "#offset-path-property", - "tr": "#offset-path-property" - }, - "tests": [ - "none", - "ray(45deg closest-side)", - "ray(45deg closest-corner)", - "ray(45deg farthest-side)", - "ray(45deg farthest-corner)", - "ray(45deg sides)", - "ray(45deg closest-side contain)", - "path(\"M 100 100 L 300 100 L 200 300 z\")", - "url(shape.svg)", - "circle(200px)", - "circle(200px at top left)", - "ellipse(200px 100px)", - "inset(30px)", - "polygon(0 0, 100% 100%, 0 100%)", - "circle(200px)", - "circle(200px) content-box", - "circle(200px) padding-box", - "circle(200px) border-box", - "circle(200px) fill-box", - "circle(200px) stroke-box", - "circle(200px) view-box", - ] - }, - "offset-position": { - "links": { - "dev": "#offset-position-property", - "tr": "#offset-position-property" - }, - "tests": ["auto", "center", "top left", "10px 20px", "30% 40%"] - }, - "offset-rotate": { - "links": { - "dev": "#offset-rotate-property", - "tr": "#offset-rotate-property" - }, - "tests": ["auto", "reverse", "90deg", "auto 90deg", "reverse 90deg"] - }, - "offset": { - "links": { - "dev": "#offset-shorthand", - "tr": "#offset-shorthand" - }, - "tests": [ - "none", - "ray(45deg closest-side)", - "path(\"M 100 100 L 300 100 L 200 300 z\")", - "url(shape.svg)", - "circle(200px)", - "center", - "top left circle(200px)", - "circle(200px) 20px", - "circle(200px) 10deg", - "top left circle(200px) 20px", - "top left circle(200px) 20px 10deg", - "circle(200px) / top left" - ] - } - } - }, - - "pointerevents1": { - "title": "Pointer Events Level 1", - "links": { - "tr": "pointerevents1" - }, - "status": { - "stability": "stable" - }, - "properties": { - "touch-action": { - "links": { - "tr": "#the-touch-action-css-property" - }, - "tests": ["auto", "none", "pan-x", "pan-y", "pan-x pan-y", "manipulation"] - } - } - }, - - "pointerevents3": { - "title": "Pointer Events Level 3", - "links": { - "tr": "pointerevents3", - "dev": "pointerevents", - "devtype": "github" - }, - "status": { - "stability": "experimental" - }, - "properties": { - "touch-action": { - "links": { - "dev": "#the-touch-action-css-property" - }, - "tests": ["pan-left", "pan-right", "pan-up", "pan-down", "pan-left pan-up"] - } - } - }, - - "scroll-animations-1": { - "title": "Scroll-linked Animations", - "links": { - "tr": "scroll-animations-1", - "dev": "scroll-animations-1" - }, - "status": { - "stability": "experimental" - }, - "@rules": { - "@scroll-timeline": { - "links": { - "tr": "#scroll-timeline-at-rule", - "dev": "#scroll-timeline-at-rule" - }, - "tests": [ - "@scroll-timeline scroller { source: selector(#root); }" - ] - } - }, - "descriptors": { - "@scroll-timeline example/source": { - "links": { - "tr": "#scroll-timeline-descriptors", - "dev": "#scroll-timeline-descriptors" - }, - "tests": ["selector(#id)", "auto", "none"] - }, - "@scroll-timeline example/orientation": { - "links": { - "tr": "#scroll-timeline-descriptors", - "dev": "#scroll-timeline-descriptors" - }, - "required": { - '*': { "descriptor": "source: auto"} - }, - "tests": ["auto", "block", "inline", "horizontal", "vertical"] - }, - "@scroll-timeline example/offsets": { - "links": { - "tr": "#scroll-timeline-descriptors", - "dev": "#scroll-timeline-descriptors" - }, - "required": { - '*': { "descriptor": "source: auto"} - }, - "tests": [ - "none", "auto", "100px", "5%", "selector(#id)", "selector(#id) start", - "selector(#id) end", "selector(#id) 0.5", "selector(#id) start 0.5", - "selector(#id), 100px, auto" - ] - } - } - }, - - "selectors-3": { - "title": "Selectors Level 3", - "links": { - "tr": "selectors-3", - "dev": "selectors-3", - "mdn": "Glossary/CSS_Selector" - }, - "status": { - "stability": "stable", - "first-snapshot": 2007 - }, - "selectors": { - "Sibling combinator": { - "links": { - "tr": "#sibling-combinators", - "dev": "#sibling-combinators", - "mdn": "General_sibling_combinator" - }, - "tests": "foo ~ bar" - }, - "::before": { - "links": { - "tr": "#gen-content", - "dev": "#gen-content" - }, - "tests": "::before" - }, - "::after": { - "links": { - "tr": "#gen-content", - "dev": "#gen-content" - }, - "tests": "::after" - }, - "::first-letter": { - "links": { - "tr": "#first-letter", - "dev": "#first-letter" - }, - "tests": "::first-letter" - }, - "::first-line": { - "links": { - "tr": "#first-line", - "dev": "#first-line" - }, - "tests": "::first-line" - }, - "[att^=val]": { - "links": { - "tr": "#attribute-substrings", - "dev": "#attribute-substrings", - "mdn": "Attribute_selectors" - }, - "tests": ["[att^=val]", "[att^=\"val\"]"] - }, - "[att*=val]": { - "links": { - "tr": "#attribute-substrings", - "dev": "#attribute-substrings", - "mdn": "Attribute_selectors" - }, - "tests": ["[att*=val]", "[att*=\"val\"]"] - }, - "[att$=val]": { - "links": { - "tr": "#attribute-substrings", - "dev": "#attribute-substrings", - "mdn": "Attribute_selectors" - }, - "tests": ["[att$=val]", "[att$=\"val\"]"] - }, - "Namespaces": { - "links": { - "tr": "#attrnmsp", - "dev": "#attrnmsp", - "mdn": "CSS_Namespaces" - }, - "tests": ["*|html", "[*|attr]", "[*|attr=val]", "*|html[*|attr]"] - }, - ":target": { - "links": { - "tr": "#target-pseudo", - "dev": "#target-pseudo" - }, - "tests": ":target" - }, - ":enabled": { - "links": { - "tr": "#enableddisabled", - "dev": "#enableddisabled" - }, - "tests": ":enabled" - }, - ":disabled": { - "links": { - "tr": "#enableddisabled", - "dev": "#enableddisabled" - }, - "tests": ":disabled" - }, - ":checked": { - "links": { - "tr": "#checked", - "dev": "#checked" - }, - "tests": ":checked" - }, - ":indeterminate": { - "links": { - "tr": "#indeterminate", - "dev": "#indeterminate" - }, - "tests": ":indeterminate" - }, - ":root": { - "links": { - "tr": "#root-pseudo", - "dev": "#root-pseudo" - }, - "tests": ":root" - }, - ":nth-child()": { - "links": { - "tr": "#nth-child-pseudo", - "dev": "#nth-child-pseudo" - }, - "tests": [ - ":nth-child(even)", ":nth-child(odd)", - ":nth-child(n)", ":nth-child(-n)", ":nth-child(0n)", - ":nth-child(1)", ":nth-child(-1)", ":nth-child(0)", - ":nth-child(n+1)", ":nth-child(3n+1)", ":nth-child(3n + 1)", - ":nth-child(-n+1)", ":nth-child(3n-1)" - ] - }, - ":nth-last-child()": { - "links": { - "tr": "#nth-last-child-pseudo", - "dev": "#nth-last-child-pseudo" - }, - "tests": [ - ":nth-last-child(even)", ":nth-last-child(odd)", - ":nth-last-child(n)", ":nth-last-child(-n)", ":nth-last-child(0n)", - ":nth-last-child(1)", ":nth-last-child(-1)", ":nth-last-child(0)", - ":nth-last-child(n+1)", ":nth-last-child(3n+1)", ":nth-last-child(3n + 1)", - ":nth-last-child(-n+1)", ":nth-last-child(3n-1)" - ] - }, - ":nth-of-type()": { - "links": { - "tr": "#nth-of-type-pseudo", - "dev": "#nth-of-type-pseudo" - }, - "tests": [ - ":nth-of-type(even)", ":nth-of-type(odd)", - ":nth-of-type(n)", ":nth-of-type(-n)", ":nth-of-type(0n)", - ":nth-of-type(1)", ":nth-of-type(-1)", ":nth-of-type(0)", - ":nth-of-type(n+1)", ":nth-of-type(3n+1)", ":nth-of-type(3n + 1)", - ":nth-of-type(-n+1)", ":nth-of-type(3n-1)" - ] - }, - ":nth-last-of-type()": { - "links": { - "tr": "#nth-last-of-type-pseudo", - "dev": "#nth-last-of-type-pseudo" - }, - "tests": [ - ":nth-last-of-type(even)", ":nth-last-of-type(odd)", - ":nth-last-of-type(n)", ":nth-last-of-type(-n)", ":nth-last-of-type(0n)", - ":nth-last-of-type(1)", ":nth-last-of-type(-1)", ":nth-last-of-type(0)", - ":nth-last-of-type(n+1)", ":nth-last-of-type(3n+1)", ":nth-last-of-type(3n + 1)", - ":nth-last-of-type(-n+1)", ":nth-last-of-type(3n-1)" - ] - }, - ":last-child": { - "links": { - "tr": "#last-child-pseudo", - "dev": "#last-child-pseudo" - }, - "tests": ":last-child" - }, - ":only-child": { - "links": { - "tr": "#only-child-pseudo", - "dev": "#only-child-pseudo" - }, - "tests": ":only-child" - }, - ":first-of-type": { - "links": { - "tr": "#first-of-type-pseudo", - "dev": "#first-of-type-pseudo" - }, - "tests": ":first-of-type" - }, - ":last-of-type": { - "links": { - "tr": "#last-of-type-pseudo", - "dev": "#last-of-type-pseudo" - }, - "tests": ":last-of-type" - }, - ":only-of-type": { - "links": { - "tr": "#only-of-type-pseudo", - "dev": "#only-of-type-pseudo" - }, - "tests": ":only-of-type" - }, - ":empty": { - "links": { - "tr": "#empty-pseudo", - "dev": "#empty-pseudo" - }, - "tests": ":empty" - }, - ":not()": { - "links": { - "tr": "#negation", - "dev": "#negation" - }, - "tests": [":not(*)", ":not(element)", ":not(.class):not(#id):not([attr]):not(:link)"] - } - } - }, - - "selectors-4": { - "title": "Selectors Level 4", - "links": { - "tr": "selectors-4", - "dev": "selectors-4" - }, - "status": { - "stability": "experimental" - }, - "selectors": { - ":indeterminate": { - "links": { - "tr": "#indeterminate", - "dev": "#indeterminate" - }, - "tests": ":indeterminate" - }, - ":blank": { - "links": { - "tr": "#blank", - "dev": "#blank" - }, - "tests": ":blank" - }, - ":placeholder-shown": { - "links": { - "tr": "#placeholder", - "dev": "#placeholder" - }, - "tests": ":placeholder-shown" - }, - ":default": { - "links": { - "tr": "#the-default-pseudo", - "dev": "#the-default-pseudo" - }, - "tests": ":default" - }, - ":valid": { - "links": { - "tr": "#validity-pseudos", - "dev": "#validity-pseudos" - }, - "tests": ":valid" - }, - ":invalid": { - "links": { - "tr": "#validity-pseudos", - "dev": "#validity-pseudos" - }, - "tests": ":invalid" - }, - ":in-range": { - "links": { - "tr": "#range-pseudos", - "dev": "#range-pseudos" - }, - "tests": ":in-range" - }, - ":out-of-range": { - "links": { - "tr": "#range-pseudos", - "dev": "#range-pseudos" - }, - "tests": ":out-of-range" - }, - ":user-invalid": { - "links": { - "tr": "#user-invalid-pseudo", - "dev": "#user-invalid-pseudo" - }, - "tests": ":user-invalid" - }, - ":required": { - "links": { - "tr": "#opt-pseudos", - "dev": "#opt-pseudos" - }, - "tests": ":required" - }, - ":optional": { - "links": { - "tr": "#opt-pseudos", - "dev": "#opt-pseudos" - }, - "tests": ":optional" - }, - ":read-only": { - "links": { - "tr": "#rw-pseudos", - "dev": "#rw-pseudos" - }, - "tests": ":read-only" - }, - ":read-write": { - "links": { - "tr": "#rw-pseudos", - "dev": "#rw-pseudos" - }, - "tests": ":read-write" - }, - ":focus-visible": { - "links": { - "tr": "#the-focus-visible-pseudo", - "dev": "#the-focus-visible-pseudo" - }, - "tests": ":focus-visible" - }, - ":focus-within": { - "links": { - "tr": "#the-focus-within-pseudo", - "dev": "#the-focus-within-pseudo" - }, - "tests": ":focus-within" - }, - ":current": { - "links": { - "tr": "#the-current-pseudo", - "dev": "#the-current-pseudo" - }, - "tests": ":current" - }, - ":current()": { - "links": { - "tr": "#the-current-pseudo", - "dev": "#the-current-pseudo" - }, - "tests": ":current(p, li, dt, dd)" - }, - ":past": { - "links": { - "tr": "#the-past-pseudo", - "dev": "#the-past-pseudo" - }, - "tests": ":past" - }, - ":future": { - "links": { - "tr": "#the-future-pseudo", - "dev": "#the-future-pseudo" - }, - "tests": ":future" - }, - ":scope": { - "links": { - "tr": "#the-scope-pseudo", - "dev": "#the-scope-pseudo" - }, - "tests": ":scope" - }, - ":any-link": { - "links": { - "tr": "#the-any-link-pseudo", - "dev": "#the-any-link-pseudo" - }, - "tests": ":any-link" - }, - ":local-link": { - "links": { - "tr": "#the-local-link-pseudo", - "dev": "#the-local-link-pseudo" - }, - "tests": ":local-link" - }, - ":target-within": { - "links": { - "tr": "#the-target-within-pseudo", - "dev": "#the-target-within-pseudo" - }, - "tests": ":target-within" - }, - ":lang()": { - "links": { - "tr": "#the-lang-pseudo", - "dev": "#the-lang-pseudo" - }, - "tests": [":lang(zh, \"*-hant\")"] - }, - ":not()": { - "links": { - "tr": "#negation", - "dev": "#negation" - }, - "tests": [":not(em, #foo)"] - }, - ":where()": { - "links": { - "tr": "#zero-matches", - "dev": "#zero-matches" - }, - "tests": [":where(em, #foo)", ":where(:not(:hover))"] - }, - ":is()": { - "links": { - "tr": "#matches", - "dev": "#matches" - }, - "tests": [":is(em, #foo)", ":is(:not(:hover))"] - }, - ":has()": { - "links": { - "tr": "#relational", - "dev": "#relational" - }, - "tests": [ - "a:has(> img)", - "dt:has(+ dt)", - "section:not(:has(h1, h2, h3, h4, h5, h6))", - "section:has(:not(h1, h2, h3, h4, h5, h6))" - ] - }, - ":defined": { - "links": { - "tr": "#the-defined-pseudo", - "dev": "the-defined-pseudo" - }, - "tests": [":defined"] - }, - ":nth-child()": { - "links": { - "tr": "#the-nth-child-pseudo", - "dev": "#the-nth-child-pseudo" - }, - "tests": [":nth-child(-n+3 of li.important)", ":nth-child(even of :not([hidden])"] - }, - "||": { - "links": { - "tr": "#the-column-combinator", - "dev": "#the-column-combinator" - }, - "tests": "foo || bar" - }, - ":nth-col()": { - "links": { - "tr": "#the-nth-col-pseudo", - "dev": "#the-nth-col-pseudo" - }, - "tests": [ - ":nth-col(even)", ":nth-col(odd)", - ":nth-col(n)", ":nth-col(-n)", ":nth-col(0n)", - ":nth-col(1)", ":nth-col(-1)", ":nth-col(0)", - ":nth-col(n+1)", ":nth-col(3n+1)", ":nth-col(3n + 1)", - ":nth-col(-n+1)", ":nth-col(3n-1)" - ] - }, - ":nth-last-col()": { - "links": { - "tr": "#the-nth-last-col-pseudo", - "dev": "#the-nth-last-col-pseudo" - }, - "tests": [ - ":nth-last-col(even)", ":nth-last-col(odd)", - ":nth-last-col(n)", ":nth-last-col(-n)", ":nth-last-col(0n)", - ":nth-last-col(1)", ":nth-last-col(-1)", ":nth-last-col(0)", - ":nth-last-col(n+1)", ":nth-last-col(3n+1)", ":nth-last-col(3n + 1)", - ":nth-last-col(-n+1)", ":nth-last-col(3n-1)" - ] - }, - "[att^=val i]": { - "links": { - "tr": "#attribute-case", - "dev": "#attribute-case", - "mdn": "Attribute_selectors" - }, - "tests": ["[att^=val i]", "[att^=\"val\" i]", "[att^=val I]", "[att^=\"val\" I]"] - }, - "[att*=val i]": { - "links": { - "tr": "#attribute-case", - "dev": "#attribute-case", - "mdn": "Attribute_selectors" - }, - "tests": ["[att*=val i]", "[att*=\"val\" i]", "[att*=val I]", "[att*=\"val\" I]"] - }, - "[att$=val i]": { - "links": { - "tr": "#attribute-case", - "dev": "#attribute-case", - "mdn": "Attribute_selectors" - }, - "tests": ["[att$=val i]", "[att$=\"val\" i]", "[att$=val I]", "[att$=\"val\" I]"] - }, - "[att^=val s]": { - "links": { - "tr": "#attribute-case", - "dev": "#attribute-case", - "mdn": "Attribute_selectors" - }, - "tests": ["[att^=val s]", "[att^=\"val\" s]", "[att^=val S]", "[att^=\"val\" S]"] - }, - "[att*=val s]": { - "links": { - "tr": "#attribute-case", - "dev": "#attribute-case", - "mdn": "Attribute_selectors" - }, - "tests": ["[att*=val s]", "[att*=\"val\" s]", "[att*=val S]", "[att*=\"val\" S]"] - }, - "[att$=val s]": { - "links": { - "tr": "#attribute-case", - "dev": "#attribute-case", - "mdn": "Attribute_selectors" - }, - "tests": ["[att$=val s]", "[att$=\"val\" s]", "[att$=val S]", "[att$=\"val\" S]"] - } - } - }, - - "svg2-coords": { - "title": "SVG 2 Coordinate Systems, Transformations and Units", - "links": { - "tr": "svg2/coords.html", - "dev": "svg2-draft/coords.html", - "devtype": "svgwg" - }, - "status": { - "stability": "experimental" - }, - "properties": { - "vector-effect": { - "links": { - "tr": "#VectorEffects", - "dev": "#VectorEffects", - "mdnGroup": "SVG" - }, - "tests": [ - "none", - "non-scaling-stroke", - "non-scaling-size", - "non-rotation", - "fixed-position", - "non-scaling-stroke non-scaling-stroke", - "non-scaling-stroke viewport", - "non-scaling-stroke screen", - ] - } - } - }, - - "svg2-geometry": { - "title": "SVG 2 Geometry Properties", - "links": { - "tr": "svg2/geometry.html", - "dev": "svg2-draft/geometry.html", - "devtype": "svgwg" - }, - "status": { - "stability": "experimental" - }, - "properties": { - "cx": { - "links": { - "tr": "#CX", - "dev": "#CX", - "mdnGroup": "SVG" - }, - "tests": ["0", "1px", "-5px", "25%"] - }, - "cy": { - "links": { - "tr": "#CY", - "dev": "#CY", - "mdnGroup": "SVG" - }, - "tests": ["0", "1px", "-5px", "25%"] - }, - "r": { - "links": { - "tr": "#R", - "dev": "#R", - "mdnGroup": "SVG" - }, - "tests": ["0", "1px", "25%"] - }, - "rx": { - "links": { - "tr": "#RX", - "dev": "#RX", - "mdnGroup": "SVG" - }, - "tests": ["auto", "0", "1px", "25%"] - }, - "ry": { - "links": { - "tr": "#RY", - "dev": "#RY", - "mdnGroup": "SVG" - }, - "tests": ["auto", "0", "1px", "25%"] - }, - "x": { - "links": { - "tr": "#X", - "dev": "#X", - "mdnGroup": "SVG" - }, - "tests": ["0", "1px", "-5px", "25%"] - }, - "y": { - "links": { - "tr": "#Y", - "dev": "#Y", - "mdnGroup": "SVG" - }, - "tests": ["0", "1px", "-5px", "25%"] - } - } - }, - - "svg2-interact": { - "title": "SVG 2 Scripting and Interactivity", - "links": { - "tr": "svg2/interact.html", - "dev": "svg2-draft/interact.html", - "devtype": "svgwg" - }, - "status": { - "stability": "experimental" - }, - "properties": { - "pointer-events": { - "links": { - "tr": "#PointerEventsProp", - "dev": "#PointerEventsProp" - }, - "tests": ["auto", "bounding-box", "visiblePainted", "visibleFill", "visibleStroke", "visible", "painted", "fill", "stroke", "all", "none"] - } - } - }, - - "svg2-painting": { - "title": "SVG 2 Painting: Filling, Stroking and Marker Symbols", - "links": { - "tr": "svg2/painting.html", - "dev": "svg2-draft/painting.html", - "devtype": "svgwg" - }, - "status": { - "stability": "experimental" - }, - "properties": { - "color-interpolation": { - "links": { - "tr": "#ColorInterpolation", - "dev": "#ColorInterpolation", - "mdnGroup": "SVG" - }, - "tests": ["auto", "sRGB", "linearRGB"] - }, - "color-rendering": { - "links": { - "tr": "#ColorRendering" - }, - "tests": ["auto", "optimizeSpeed", "optimizeQuality"] - }, - "marker": { - "links": { - "tr": "#MarkerShorthand", - "dev": "#MarkerShorthand" - }, - "tests": ["none", "url(#marker)"] - }, - "marker-end": { - "links": { - "tr": "#VertexMarkerProperties", - "dev": "#VertexMarkerProperties", - "mdnGroup": "SVG" - }, - "tests": ["none", "url(#marker)"] - }, - "marker-mid": { - "links": { - "tr": "#VertexMarkerProperties", - "dev": "#VertexMarkerProperties", - "mdnGroup": "SVG" - }, - "tests": ["none", "url(#marker)"] - }, - "marker-start": { - "links": { - "tr": "#VertexMarkerProperties", - "dev": "#VertexMarkerProperties", - "mdnGroup": "SVG" - }, - "tests": ["none", "url(#marker)"] - }, - "paint-order": { - "links": { - "tr": "#PaintOrder", - "dev": "#PaintOrder" - }, - "tests": ["normal", "fill", "stroke", "markers", "fill stroke markers"] - }, - "shape-rendering": { - "links": { - "tr": "#ShapeRendering", - "dev": "#ShapeRendering", - "mdnGroup": "SVG" - }, - "tests": ["auto", "optimizeSpeed", "crispEdges", "geometricPrecision"] - }, - "text-rendering": { - "links": { - "tr": "#TextRendering", - "dev": "#TextRendering" - }, - "tests": ["auto", "optimizeSpeed", "optimizeLegibility", "geometricPrecision"] - } - } - }, - - "svg2-paths": { - "title": "SVG 2 Paths", - "links": { - "tr": "svg2/paths.html", - "dev": "svg2-draft/paths.html", - "devtype": "svgwg" - }, - "status": { - "stability": "experimental" - }, - "properties": { - "d": { - "links": { - "tr": "#TheDProperty", - "dev": "#TheDProperty", - "mdnGroup": "SVG" - }, - "tests": ["none", "'M 20 20 H 80 V 30'"] - } - } - }, - - "svg2-pservers": { - "title": "SVG 2 Paint Servers: Gradients and Patterns", - "links": { - "tr": "svg2/pservers.html", - "dev": "svg2-draft/pservers.html", - "devtype": "svgwg" - }, - "status": { - "stability": "experimental" - }, - "properties": { - "stop-color": { - "links": { - "dev": "#StopColorProperty", - "mdnGroup": "SVG" - }, - "tests": ["green"] - }, - "stop-opacity": { - "links": { - "dev": "#StopOpacityProperty", - "mdnGroup": "SVG" - }, - "tests": [".5", "45%"] - } - } - }, - - "svg2-text": { - "title": "SVG 2 Text", - "links": { - "tr": "svg2/text.html", - "dev": "svg2-draft/text.html", - "devtype": "svgwg" - }, - "status": { - "stability": "experimental" - }, - "properties": { - "shape-subtract": { - "links": { - "tr": "#TextShapeSubtract", - "dev": "#TextShapeSubtract" - }, - "tests": [ - "none", - "url('#shape')", - "inset(50%)", - "circle()", - "ellipse()", - "polygon(0 10px, 30px 0)", - "path('M 20 20 H 80 V 30')", - "url('#clip') circle()" - ] - }, - "text-anchor": { - "links": { - "tr": "#TextAnchoringProperties", - "dev": "#TextAnchoringProperties", - "mdnGroup": "SVG" - }, - "tests": ["start", "middle", "end"] - }, - "text-decoration-fill": { - "links": { - "tr": "#TextDecorationFillStroke" - }, - "tests": [ - "none", - "green", - "url(#pattern)", - "url(#pattern) none", - "url(#pattern) green", - "context-fill", - "context-stroke" - ] - }, - "text-decoration-stroke": { - "links": { - "tr": "#TextDecorationFillStroke" - }, - "tests": [ - "none", - "green", - "url(#pattern)", - "url(#pattern) none", - "url(#pattern) green", - "context-fill", - "context-stroke" - ] - } - } - }, - - "webvtt": { - "title": "WebVTT: The Web Video Text Tracks Format", - "links": { - "tr": "webvtt1", - "dev": "webvtt", - "devtype": "github" - }, - "status": { - "stability": "experimental" - }, - "selectors": { - "::cue": { - "links": { - "tr": "#the-cue-pseudo-element", - "dev": "#the-cue-pseudo-element" - }, - "tests": ["::cue"] - }, - "::cue()": { - "links": { - "tr": "#the-cue-pseudo-element", - "dev": "#the-cue-pseudo-element" - }, - "tests": ["::cue(span)"] - }, - "::cue-region": { - "links": { - "tr": "#the-cue-region-pseudo-element", - "dev": "#the-cue-region-pseudo-element" - }, - "tests": ["::cue-region"] - }, - "::cue-region()": { - "links": { - "tr": "#the-cue-region-pseudo-element", - "dev": "#the-cue-region-pseudo-element" - }, - "tests": ['::cue-region(span)'] - } - } - } -}; +import compat from './tests/compat.js'; +import css2Cascade from './tests/css2-cascade.js'; +import css2Colors from './tests/css2-colors.js'; +import css2Fonts from './tests/css2-fonts.js'; +import css2Generate from './tests/css2-generate.js'; +import css2Media from './tests/css2-media.js'; +import css2Page from './tests/css2-page.js'; +import css2Selectors from './tests/css2-selectors.js'; +import css2Tables from './tests/css2-tables.js'; +import css2Text from './tests/css2-text.js'; +import css2Ui from './tests/css2-ui.js'; +import css2VisuDet from './tests/css2-visudet.js'; +import css2VisuFx from './tests/css2-visufx.js'; +import css2VisuRen from './tests/css2-visuren.js'; +import cssAlign3 from './tests/css-align-3.js'; +import cssAnimations1 from './tests/css-animations-1.js'; +import cssAnimations2 from './tests/css-animations-2.js'; +import cssBackgrounds3 from './tests/css-backgrounds-3.js'; +import cssBackgrounds4 from './tests/css-backgrounds-4.js'; +import cssBox3 from './tests/css-box-3.js'; +import cssBox4 from './tests/css-box-4.js'; +import cssBreak3 from './tests/css-break-3.js'; +import cssBreak4 from './tests/css-break-4.js'; +import cssCascade3 from './tests/css-cascade-3.js'; +import cssCascade4 from './tests/css-cascade-4.js'; +import cssCascade5 from './tests/css-cascade-5.js'; +import cssColor3 from './tests/css-color-3.js'; +import cssColor4 from './tests/css-color-4.js'; +import cssColor5 from './tests/css-color-5.js'; +import cssColorAdjust1 from './tests/css-color-adjust-1.js'; +import cssComposition1 from './tests/css-composition-1.js'; +import cssConditional3 from './tests/css-conditional-3.js'; +import cssConditional4 from './tests/css-conditional-4.js'; +import cssConditional5 from './tests/css-conditional-5.js'; +import cssContainment1 from './tests/css-containment-1.js'; +import cssContainment2 from './tests/css-containment-2.js'; +import cssContainment3 from './tests/css-containment-3.js'; +import cssContent3 from './tests/css-content-3.js'; +import cssCounterStyles3 from './tests/css-counter-styles-3.js'; +import cssDisplay3 from './tests/css-display-3.js'; +import cssEasing1 from './tests/css-easing-1.js'; +import cssEnv1 from './tests/css-env-1.js'; +import cssExclusions1 from './tests/css-exclusions-1.js'; +import cssFlexbox1 from './tests/css-flexbox-1.js'; +import cssFonts3 from './tests/css-fonts-3.js'; +import cssFonts4 from './tests/css-fonts-4.js'; +import cssFonts5 from './tests/css-fonts-5.js'; +import cssGrid1 from './tests/css-grid-1.js'; +import cssGrid2 from './tests/css-grid-2.js'; +import cssGrid3 from './tests/css-grid-3.js'; +import cssHighlightApi1 from './tests/css-highlight-api-1.js'; +import cssImages3 from './tests/css-images-3.js'; +import cssImages4 from './tests/css-images-4.js'; +import cssInline3 from './tests/css-inline-3.js'; +import cssLayoutApi1 from './tests/css-layout-api-1.js'; +import cssLineGrid1 from './tests/css-line-grid-1.js'; +import cssLists3 from './tests/css-lists-3.js'; +import cssLogical1 from './tests/css-logical-1.js'; +import cssMasking1 from './tests/css-masking-1.js'; +import cssMulticol1 from './tests/css-multicol-1.js'; +import cssMulticol2 from './tests/css-multicol-2.js'; +import cssNav1 from './tests/css-nav-1.js'; +import cssOverflow3 from './tests/css-overflow-3.js'; +import cssOverflow4 from './tests/css-overflow-4.js'; +import cssOverscroll1 from './tests/css-overscroll-1.js'; +import cssPage3 from './tests/css-page-3.js'; +import cssPaintApi1 from './tests/css-paint-api-1.js'; +import cssPosition3 from './tests/css-position-3.js'; +import cssPseudo4 from './tests/css-pseudo-4.js'; +import cssRegions1 from './tests/css-regions-1.js'; +import cssRhythmic from './tests/css-rhythmic-1.js'; +import cssRuby1 from './tests/css-ruby-1.js'; +import cssScoping1 from './tests/css-scoping-1.js'; +import cssScrollAnchoring1 from './tests/css-scroll-anchoring-1.js'; +import cssScrollSnap1 from './tests/css-scroll-snap-1.js'; +import cssScrollbars1 from './tests/css-scrollbars-1.js'; +import cssShadowParts1 from './tests/css-shadow-parts-1.js'; +import cssShapes1 from './tests/css-shapes-1.js'; +import cssShapes2 from './tests/css-shapes-2.js'; +import cssSizing3 from './tests/css-sizing-3.js'; +import cssSizing4 from './tests/css-sizing-4.js'; +import cssSpeech1 from './tests/css-speech-1.js'; +import cssText3 from './tests/css-text-3.js'; +import cssText4 from './tests/css-text-4.js'; +import cssTextDecor3 from './tests/css-text-decor-3.js'; +import cssTextDecor4 from './tests/css-text-decor-4.js'; +import cssTransforms1 from './tests/css-transforms-1.js'; +import cssTransforms2 from './tests/css-transforms-2.js'; +import cssTransitions1 from './tests/css-transitions-1.js'; +import cssUi3 from './tests/css-ui-3.js'; +import cssUi4 from './tests/css-ui-4.js'; +import cssValues3 from './tests/css-values-3.js'; +import cssValues4 from './tests/css-values-4.js'; +import cssVariables1 from './tests/css-variables-1.js'; +import cssWillChange1 from './tests/css-will-change-1.js'; +import cssWritingModes3 from './tests/css-writing-modes-3.js'; +import cssWritingModes4 from './tests/css-writing-modes-4.js'; +import cssomView1 from './tests/cssom-view-1.js'; +import fillStroke3 from './tests/fill-stroke-3.js'; +import filterEffects1 from './tests/filter-effects-1.js'; +import filterEffects2 from './tests/filter-effects-2.js'; +import fullscreen from './tests/fullscreen.js'; +import html from './tests/html.js'; +import mathmlCore from './tests/mathml-core.js'; +import mediaQueries3 from './tests/mediaqueries-3.js'; +import mediaQueries4 from './tests/mediaqueries-4.js'; +import mediaQueries5 from './tests/mediaqueries-5.js'; +import motion1 from './tests/motion-1.js'; +import pointerEvents1 from './tests/pointerevents1.js'; +import pointerEvents3 from './tests/pointerevents3.js'; +import scrollAnimations1 from './tests/scroll-animations-1.js'; +import selectors3 from './tests/selectors-3.js'; +import selectors4 from './tests/selectors-4.js'; +import svg2Coords from './tests/svg2-coords.js'; +import svg2Geometry from './tests/svg2-geometry.js'; +import svg2Interact from './tests/svg2-interact.js'; +import svg2Painting from './tests/svg2-painting.js'; +import svg2Paths from './tests/svg2-paths.js'; +import svg2PServers from './tests/svg2-pservers.js'; +import svg2Text from './tests/svg2-text.js'; +import webVtt from './tests/webvtt.js'; + +export default { + "compat": compat, + "css2-cascade": css2Cascade, + "css2-colors": css2Colors, + "css2-fonts": css2Fonts, + "css2-generate": css2Generate, + "css2-media": css2Media, + "css2-page": css2Page, + "css2-selectors": css2Selectors, + "css2-tables": css2Tables, + "css2-text": css2Text, + "css2-ui": css2Ui, + "css2-visudet": css2VisuDet, + "css2-visufx": css2VisuFx, + "css2-visuren": css2VisuRen, + "css-align-3": cssAlign3, + "css-animation-1": cssAnimations1, + "css-animation-2": cssAnimations2, + "css-backgrounds-3": cssBackgrounds3, + "css-backgrounds-4": cssBackgrounds4, + "css-box-3": cssBox3, + "css-box-4": cssBox4, + "css-break-3": cssBreak3, + "css-break-4": cssBreak4, + "css-cascade-3": cssCascade3, + "css-cascade-4": cssCascade4, + "css-cascade-5": cssCascade5, + "css-colors-3": cssColor3, + "css-colors-4": cssColor4, + "css-colors-5": cssColor5, + "css-colors-adjust-1": cssColorAdjust1, + "css-composition-1": cssComposition1, + "css-conditional-3": cssConditional3, + "css-conditional-4": cssConditional4, + "css-conditional-5": cssConditional5, + "css-containment-1": cssContainment1, + "css-containment-2": cssContainment2, + "css-containment-3": cssContainment3, + "css-content-3": cssContent3, + "css-counter-styles-3": cssCounterStyles3, + "css-display-3": cssDisplay3, + "css-easing-1": cssEasing1, + "css-env-1": cssEnv1, + "css-exclusions-1": cssExclusions1, + "css-flexbox-1": cssFlexbox1, + "css-fonts-3": cssFonts3, + "css-fonts-4": cssFonts4, + "css-fonts-5": cssFonts5, + "css-grid-1": cssGrid1, + "css-grid-2": cssGrid2, + "css-grid-3": cssGrid3, + "css-highlight-api-1": cssHighlightApi1, + "css-images-3": cssImages3, + "css-images-4": cssImages4, + "css-inline-3": cssInline3, + "css-layout-api-1": cssLayoutApi1, + "css-line-grid-1": cssLineGrid1, + "css-lists-3": cssLists3, + "css-logical-1": cssLogical1, + "css-masking-1": cssMasking1, + "css-multicol-1": cssMulticol1, + "css-multicol-2": cssMulticol2, + "css-nav-1": cssNav1, + "css-overflow-3": cssOverflow3, + "css-overflow-4": cssOverflow4, + "css-overscroll-1": cssOverscroll1, + "css-page-3": cssPage3, + "css-paint-api-1": cssPaintApi1, + "css-position-3": cssPosition3, + "css-pseudo-4": cssPseudo4, + "css-regions-1": cssRegions1, + "css-rhythmic": cssRhythmic, + "css-ruby-1": cssRuby1, + "css-scoping-1": cssScoping1, + "css-scroll-anchoring-1": cssScrollAnchoring1, + "css-scoping-1": cssScoping1, + "css-scroll-anchoring-1": cssScrollAnchoring1, + "css-scroll-snap-1": cssScrollSnap1, + "css-scrollbars-1": cssScrollbars1, + "css-shadow-parts-1": cssShadowParts1, + "css-shapes-1": cssShapes1, + "css-shapes-2": cssShapes2, + "css-sizing-3": cssSizing3, + "css-sizing-4": cssSizing4, + "css-speech-1": cssSpeech1, + "css-text-3": cssText3, + "css-text-4": cssText4, + "css-text-decor-3": cssTextDecor3, + "css-text-decor-4": cssTextDecor4, + "css-transforms-1": cssTransforms1, + "css-transforms-2": cssTransforms2, + "css-transitions-1": cssTransitions1, + "css-ui-3": cssUi3, + "css-ui-4": cssUi4, + "css-values-3": cssValues3, + "css-values-4": cssValues4, + "css-variables-1": cssVariables1, + "css-will-change-1": cssWillChange1, + "css-writing-modes-3": cssWritingModes3, + "css-writing-modes-4": cssWritingModes4, + "cssom-view-1": cssomView1, + "fill-stroke-3": fillStroke3, + "filter-effects-1": filterEffects1, + "filter-effects-2": filterEffects2, + "fullscreen": fullscreen, + "html": html, + "mathml-core": mathmlCore, + "mediaqueries-3": mediaQueries3, + "mediaqueries-4": mediaQueries4, + "mediaqueries-5": mediaQueries5, + "motion-1": motion1, + "pointerevents-1": pointerEvents1, + "pointerevents-3": pointerEvents3, + "scroll-animations-1": scrollAnimations1, + "selectors-3": selectors3, + "selectors-4": selectors4, + "svg2-coords": svg2Coords, + "svg2-geometry": svg2Geometry, + "svg2-interact": svg2Interact, + "svg2-painting": svg2Painting, + "svg2-paths": svg2Paths, + "svg2-pServers": svg2PServers, + "svg2-text": svg2Text, + "webvtt": webVtt +} diff --git a/tests/compat.js b/tests/compat.js new file mode 100644 index 00000000..f47e579f --- /dev/null +++ b/tests/compat.js @@ -0,0 +1,18 @@ +export default { + "title": "Compatibility", + "links": { + "dev": "compat", + "devtype": "whatwg" + }, + "status": { + "stability": "stable" + }, + "properties": { + "touch-action": { + "links": { + "dev": "#touch-action" + }, + "tests": ["pinch-zoom", "pan-x pinch-zoom", "pan-y pinch-zoom", "pan-x pan-y pinch-zoom"] + } + } +}; diff --git a/tests/css-align-3.js b/tests/css-align-3.js new file mode 100644 index 00000000..79f53ead --- /dev/null +++ b/tests/css-align-3.js @@ -0,0 +1,89 @@ +export default { + "title": "CSS Box Alignment Module Level 3", + "links": { + "tr": "css-align-3", + "dev": "css-align-3" + }, + "status": { + "stability": "stable" + }, + "properties": { + "align-self": { + "links": { + "tr": "#align-self-property", + "dev": "#align-self-property" + }, + "tests": ["auto", "normal", "stretch", "baseline", "first baseline", "last baseline", "center", "start", "end", "self-start", "self-end", "unsafe start ", "safe start"] + }, + "align-items": { + "links": { + "tr": "#align-items-property", + "dev": "#align-items-property" + }, + "tests": ["normal", "stretch", "baseline", "first baseline", "last baseline", "center", "start", "end", "self-start", "self-end", "unsafe start ", "safe start"] + }, + "align-content": { + "links": { + "tr": "#align-justify-content", + "dev": "#align-justify-content" + }, + "tests": ["normal", "baseline", "first baseline", "last baseline", "space-between", "space-around", "space-evenly", "stretch", "center", "start", "end", "flex-start", "flex-end", "unsafe start ", "safe start"] + }, + "justify-self": { + "links": { + "tr": "#justify-self-property", + "dev": "#justify-self-property" + }, + "tests": ["auto", "normal", "stretch", "baseline", "first baseline", "last baseline", "center", "start", "end", "self-start", "self-end", "unsafe start ", "safe start", "left", "right", "safe right"] + }, + "justify-items": { + "links": { + "tr": "#justify-items-property", + "dev": "#justify-items-property" + }, + "tests": ["normal", "stretch", "baseline", "first baseline", "last baseline", "center", "start", "end", "self-start", "self-end", "unsafe start ", "safe start", "left", "right", "safe right", "legacy", "legacy left", "legacy right", "legacy center"] + }, + "justify-content": { + "links": { + "tr": "#align-justify-content", + "dev": "#align-justify-content" + }, + "tests": ["normal", "space-between", "space-around", "space-evenly", "stretch", "center", "start", "end", "flex-start", "flex-end", "unsafe start ", "safe start", "left", "right", "safe right"] + }, + "place-content": { + "links": { + "tr": "#place-content", + "dev": "#place-content" + }, + "tests": ["normal", "baseline", "first baseline", "last baseline", "space-between", "space-around", "space-evenly", "stretch", "center", "start", "end", "flex-start", "flex-end", "unsafe start ", "safe start", "normal normal", "baseline normal", "first baseline normal", "space-between normal", "center normal", "unsafe start normal", "normal stretch", "baseline stretch", "first baseline stretch", "space-between stretch", "center stretch", "unsafe start stretch", "normal safe right", "baseline safe right", "first baseline safe right", "space-between safe right", "center safe right", "unsafe start safe right"] + }, + "place-items": { + "links": { + "tr": "#place-items-property", + "dev": "#place-items-property" + }, + "tests": ["normal", "stretch", "baseline", "first baseline", "last baseline", "center", "start", "end", "self-start", "self-end", "unsafe start ", "safe start", "normal normal", "stretch normal", "baseline normal", "first baseline normal", "self-start normal", "unsafe start normal", "normal stretch", "stretch stretch", "baseline stretch", "first baseline stretch", "self-start stretch", "unsafe start stretch", "normal last baseline", "stretch last baseline", "baseline last baseline", "first baseline last baseline", "self-start last baseline", "unsafe start last baseline", "normal legacy left", "stretch legacy left", "baseline legacy left", "first baseline legacy left", "self-start legacy left", "unsafe start legacy left"] + }, + "gap": { + "links": { + "tr": "#gap-shorthand", + "dev": "#gap-shorthand" + }, + "tests": ["0 0", "0 1em", "1em", "1em 1em"] + }, + "column-gap": { + "links": { + "tr": "#column-row-gap", + "dev": "#column-row-gap" + }, + "tests": ["0", "1em", "normal"] + }, + "row-gap": { + "links": { + "tr": "#column-row-gap", + "dev": "#column-row-gap" + }, + "tests": ["0", "1em"] + } + } +}; diff --git a/tests/css-animations-1.js b/tests/css-animations-1.js new file mode 100644 index 00000000..9e5f1acc --- /dev/null +++ b/tests/css-animations-1.js @@ -0,0 +1,92 @@ +export default { + "title": "CSS Animations Level 1", + "links": { + "tr": "css-animations-1", + "dev": "css-animations-1" + }, + "status": { + "stability": "stable" + }, + "properties": { + "animation-name": { + "links": { + "tr": "#animation-name", + "dev": "#animation-name" + }, + "tests": ["foo", "foo, bar"] + }, + "animation-duration": { + "links": { + "tr": "#animation-duration", + "dev": "#animation-duration" + }, + "tests": ["0s", "1s", "100ms"] + }, + "animation-timing-function": { + "links": { + "tr": "#animation-timing-function", + "dev": "#animation-timing-function" + }, + "tests": [ + "ease", "linear", "ease-in", "ease-out", "ease-in-out", + "cubic-bezier(.5, .5, .5, .5)", + "cubic-bezier(.5, 1.5, .5, -2.5)", + "step-start", "step-end", "steps(3, start)", "steps(5, end)" + ] + }, + "animation-iteration-count": { + "links": { + "tr": "#animation-iteration-count", + "dev": "#animation-iteration-count" + }, + "tests": ["infinite", "8", "4.35"] + }, + "animation-direction": { + "links": { + "tr": "#animation-direction", + "dev": "#animation-direction" + }, + "tests": ["normal", "alternate", "reverse", "alternate-reverse"] + }, + "animation-play-state": { + "links": { + "tr": "#animation-play-state", + "dev": "#animation-play-state" + }, + "tests": ["running", "paused"] + }, + "animation-delay": { + "links": { + "tr": "#animation-delay", + "dev": "#animation-delay" + }, + "tests": ["1s", "-1s"] + }, + "animation-fill-mode": { + "links": { + "tr": "#animation-fill-mode", + "dev": "#animation-fill-mode" + }, + "tests": ["none", "forwards", "backwards", "both"] + }, + "animation": { + "links": { + "tr": "#animation", + "dev": "#animation" + }, + "tests": "foo 1s 2s infinite linear alternate both" + } + }, + "@rules": { + "@keyframes": { + "links": { + "tr": "#keyframes", + "dev": "#keyframes" + }, + "tests": [ + "@keyframes foo {\n from: {\n color: blue;\n }\n to: {\n color: red;\n }\n}", + "@keyframes foo {\n from: {\n color: blue;\n }\n 50%: {\n color: green;\n }\n to: {\n color: red;\n }\n}" + ] + } + } +}; diff --git a/tests/css-animations-2.js b/tests/css-animations-2.js new file mode 100644 index 00000000..fae49538 --- /dev/null +++ b/tests/css-animations-2.js @@ -0,0 +1,33 @@ +export default { + "title": "CSS Animations Level 2", + "links": { + "tr": "css-animations-2", + "dev": "css-animations-2" + }, + "status": { + "stability": "experimental" + }, + "properties": { + "animation-composition": { + "links": { + "tr": "#animation-composition", + "dev": "#animation-composition" + }, + "tests": ["replace", "add", "accumulate", "replace, add, accumulate"] + }, + "animation-timeline": { + "links": { + "tr": "#animation-timeline", + "dev": "#animation-timeline" + }, + "tests": ["auto", "none", "custom-timeline", "\"custom-timeline\"", "auto, none, custom-timeline, \"custom-timeline\""] + }, + "animation": { + "links": { + "tr": "#animation-timeline", + "dev": "#animation-timeline" + }, + "tests": ["1s both infinite auto"] + } + } +}; diff --git a/tests/css-backgrounds-3.js b/tests/css-backgrounds-3.js new file mode 100644 index 00000000..7b2bad35 --- /dev/null +++ b/tests/css-backgrounds-3.js @@ -0,0 +1,179 @@ +export default { + "title": "CSS Backgrounds and Borders Module Level 3", + "links": { + "tr": "css-backgrounds-3", + "dev": "css-backgrounds-3" + }, + "status": { + "stability": "stable", + "first-snapshot": 2015 + }, + "properties": { + "background-repeat": { + "links": { + "tr": "#the-background-repeat", + "dev": "#background-repeat" + }, + "tests": [ + "space", "round", "repeat repeat", "space repeat", "round repeat", + "no-repeat repeat", "repeat space", "space space", "round space", + "no-repeat space", "repeat round", "space round", "round round", + "no-repeat round", "repeat no-repeat", "space no-repeat", "round no-repeat", + "no-repeat no-repeat" + ] + }, + "background-attachment": { + "links": { + "tr": "#the-background-attachment", + "dev": "#background-attachment" + }, + "tests": "local" + }, + "background-position": { + "links": { + "tr": "#the-background-position", + "dev": "#background-position" + }, + "tests": ["bottom 10px right 20px", "bottom 10px right", "top right 10px"] + }, + "background-clip": { + "links": { + "tr": "#the-background-clip", + "dev": "#background-clip" + }, + "tests": ["border-box", "padding-box", "content-box"] + }, + "background-origin": { + "links": { + "tr": "#the-background-origin", + "dev": "#background-origin" + }, + "tests": ["border-box", "padding-box", "content-box"] + }, + "background-size": { + "links": { + "tr": "#the-background-size", + "dev": "#background-size" + }, + "tests": ["auto", "cover", "contain", "10px", "50%", "10px auto", "auto 10%", "50em 50%"] + }, + "background": { + "links": { + "tr": "#the-background", + "dev": "#background" + }, + "tests": [ + "url(foo.png), url(bar.svg)", + "top left / 50% 60%", + "border-box", + "border-box padding-box", + "url(foo.png) bottom right / cover padding-box content-box" + ] + }, + "border-top-left-radius": { + "links": { + "tr": "#the-border-radius", + "dev": "#border-radius" + }, + "tests": ["0", "50%", "250px 100px"] + }, + "border-top-right-radius": { + "links": { + "tr": "#the-border-radius", + "dev": "#border-radius" + }, + "tests": ["0", "50%", "250px 100px"] + }, + "border-bottom-right-radius": { + "links": { + "tr": "#the-border-radius", + "dev": "#border-radius" + }, + "tests": ["0", "50%", "250px 100px"] + }, + "border-bottom-left-radius": { + "links": { + "tr": "#the-border-radius", + "dev": "#border-radius" + }, + "tests": ["0", "50%", "250px 100px"] + }, + "border-radius": { + "links": { + "tr": "#the-border-radius", + "dev": "#border-radius" + }, + "tests": ["10px", "50%", "10px / 20px", "2px 4px 8px 16px", "2px 4px 8px 16px / 2px 4px 8px 16px"] + }, + "border-image-source": { + "links": { + "tr": "#the-border-image-source", + "dev": "#border-image-source" + }, + "tests": ["none", "url(foo.png)"] + }, + "border-image-slice": { + "links": { + "tr": "#the-border-image-slice", + "dev": "#border-image-slice" + }, + "tests": [ + "10", "30%", "10 10", "30% 10", "10 30%", "30% 30%", "10 10 10", "30% 10 10", + "10 30% 10", "30% 30% 10", "10 10 30%", "30% 10 30%", "10 30% 30%", + "30% 30% 30%", "10 10 10 10", "30% 10 10 10", "10 30% 10 10", "30% 30% 10 10", + "10 10 30% 10", "30% 10 30% 10", "10 30% 30% 10", "30% 30% 30% 10", + "10 10 10 30%", "30% 10 10 30%", "10 30% 10 30%", "30% 30% 10 30%", + "10 10 30% 30%", "30% 10 30% 30%", "10 30% 30% 30%", "30% 30% 30% 30%", + "fill 30%", "fill 10", "fill 2 4 8% 16%", "30% fill", "10 fill", "2 4 8% 16% fill" + ] + }, + "border-image-width": { + "links": { + "tr": "#the-border-image-width", + "dev": "#border-image-width" + }, + "tests": ["10px", "5%", "28", "auto", "10px 10px", "5% 10px", "28 10px", "auto 10px", "10px 5%", "5% 5%", "28 5%", "auto 5%", "10px 28", "5% 28", "28 28", "auto 28", "10px auto", "5% auto", "28 auto", "auto auto", "10px 10% 10", "5% 10px 20 auto"] + }, + "border-image-outset": { + "links": { + "tr": "#the-border-image-outset", + "dev": "#border-image-outset" + }, + "tests": ["10px", "20", "10px 20", "10px 20px", "20 30", "2px 3px 4", "1 2px 3px 4"] + }, + "border-image-repeat": { + "links": { + "tr": "#the-border-image-repeat", + "dev": "#border-image-repeat" + }, + "tests": [ + "stretch", "repeat", "round", "space", "stretch stretch", "repeat stretch", + "round stretch", "space stretch", "stretch repeat", "repeat repeat", + "round repeat", "space repeat", "stretch round", "repeat round", "round round", + "space round", "stretch space", "repeat space", "round space", "space space" + ] + }, + "border-image": { + "links": { + "tr": "#the-border-image", + "dev": "#border-image" + }, + "tests": [ + "url(foo.png) 10", "url(foo.png) 10%", "url(foo.png) 10% fill", + "url(foo.png) 10 round", "url(foo.png) 10 stretch repeat", + "url(foo.png) 10 / 10px", "url(foo.png) 10 / 10% / 10px", + "url(foo.png) fill 10 / 10% / 10px", "url(foo.png) fill 10 / 10% / 10px space" + ] + }, + "box-shadow": { + "links": { + "tr": "#the-box-shadow", + "dev": "#box-shadow" + }, + "tests": [ + "1px 1px", "0 0 black", "1px 2px 3px black", "1px 2px 3px 4px black", + "inset 1px 1px", "1px 2px 3px 4px black inset" + ] + } + } +}; diff --git a/tests/css-backgrounds-4.js b/tests/css-backgrounds-4.js new file mode 100644 index 00000000..9c17bc2d --- /dev/null +++ b/tests/css-backgrounds-4.js @@ -0,0 +1,23 @@ +export default { + "title": "CSS Backgrounds and Borders Module Level 4", + "links": { + "dev": "css-backgrounds-4", + }, + "status": { + "stability": "experimental" + }, + "properties": { + "background-position-x": { + "links": { + "dev": "#background-position-longhands" + }, + "tests": ["right", "center", "50%", "left, left", "left, right", "right, left", "left, 0%", "10%, 20%, 40%", "0px", "30px", "0%, 10%, 20%, 30%", "left, left, left, left, left", "calc(20px)", "calc(20px + 1em)", "calc(20px / 2)", "calc(20px + 50%)", "calc(50% - 10px)", "calc(-20px)", "calc(-50%)", "calc(-20%)", "right 20px", "left 20px", "right -50px", "left -50px", "right 20px"] + }, + "background-position-y": { + "links": { + "dev": "#background-position-longhands" + }, + "tests": ["bottom", "center", "50%", "top, top", "top, bottom", "bottom, top", "top, 0%", "10%, 20%, 40%", "0px", "30px", "0%, 10%, 20%, 30%", "top, top, top, top, top", "calc(20px)", "calc(20px + 1em)", "calc(20px / 2)", "calc(20px + 50%)", "calc(50% - 10px)", "calc(-20px)", "calc(-50%)", "calc(-20%)", "bottom 20px", "top 20px", "bottom -50px", "top -50px", "bottom 20px"] + } + } +}; diff --git a/tests/css-box-3.js b/tests/css-box-3.js new file mode 100644 index 00000000..91680211 --- /dev/null +++ b/tests/css-box-3.js @@ -0,0 +1,276 @@ +export default { + "title": "CSS 2 Box Model", + "links": { + "tr": "CSS22/box.html", + "dev": "css2/" + }, + "status": { + "stability": "stable", + "first-snapshot": 1998, + "last-snapshot": 1998 + }, + "properties": { + "border-color": { + "links": { + "tr": "#border-color-properties", + "dev": "#border-color-properties" + }, + "tests": [ + "black", "#ff0000 rgb(0, 255, 0)", + "rgb(0%, 0%, 100%) #0f0 transparent", + "red green blue yellow" + ] + }, + "border-style": { + "links": { + "tr": "#border-style-properties", + "dev": "#border-style-properties" + }, + "tests": [ + "none", "hidden", "none dashed", "none dashed dotted", + "none dashed dotted solid" + ] + }, + "border-top": { + "links": { + "tr": "#border-shorthand-properties", + "dev": "#border-shorthand-properties" + }, + "tests": [ + "black", "dotted", "5px", "#ff0000 dashed", "solid 0.2em", + "rgb(0, 0, 255) 0.1ex", "#0f0 double 0.8mm" + ] + }, + "border-right": { + "links": { + "tr": "#border-shorthand-properties", + "dev": "#border-shorthand-properties" + }, + "tests": [ + "black", "dotted", "5px", "#ff0000 dashed", "solid 0.2em", + "rgb(0, 0, 255) 0.1ex", "#0f0 double 0.8mm" + ] + }, + "border-bottom": { + "links": { + "tr": "#border-shorthand-properties", + "dev": "#border-shorthand-properties" + }, + "tests": [ + "black", "dotted", "5px", "#ff0000 dashed", "solid 0.2em", + "rgb(0, 0, 255) 0.1ex", "#0f0 double 0.8mm" + ] + }, + "border-left": { + "links": { + "tr": "#border-shorthand-properties", + "dev": "#border-shorthand-properties" + }, + "tests": [ + "black", "dotted", "5px", "#ff0000 dashed", "solid 0.2em", + "rgb(0, 0, 255) 0.1ex", "#0f0 double 0.8mm" + ] + }, + "border-top-color": { + "links": { + "tr": "#border-color-properties", + "dev": "#border-color-properties" + }, + "tests": [ + "black", "#00f", "#000000", "rgb(255, 255, 255)", + "rgb(100%, 50%, 50%)", "transparent" + ] + }, + "border-right-color": { + "links": { + "tr": "#border-color-properties", + "dev": "#border-color-properties" + }, + "tests": [ + "black", "#00f", "#000000", "rgb(255, 255, 255)", + "rgb(100%, 50%, 50%)", "transparent" + ] + }, + "border-bottom-color": { + "links": { + "tr": "#border-color-properties", + "dev": "#border-color-properties" + }, + "tests": [ + "black", "#00f", "#000000", "rgb(255, 255, 255)", + "rgb(100%, 50%, 50%)", "transparent" + ] + }, + "border-left-color": { + "links": { + "tr": "#border-color-properties", + "dev": "#border-color-properties" + }, + "tests": [ + "black", "#00f", "#000000", "rgb(255, 255, 255)", + "rgb(100%, 50%, 50%)", "transparent" + ] + }, + "border-top-style": { + "links": { + "tr": "#border-style-properties", + "dev": "#border-style-properties" + }, + "tests": [ + "none", "hidden", "dotted", "dashed", "solid", "double", "groove", + "ridge", "inset", "outset" + ] + }, + "border-right-style": { + "links": { + "tr": "#border-style-properties", + "dev": "#border-style-properties" + }, + "tests": [ + "none", "hidden", "dotted", "dashed", "solid", "double", "groove", + "ridge", "inset", "outset" + ] + }, + "border-bottom-style": { + "links": { + "tr": "#border-style-properties", + "dev": "#border-style-properties" + }, + "tests": [ + "none", "hidden", "dotted", "dashed", "solid", "double", "groove", + "ridge", "inset", "outset" + ] + }, + "border-left-style": { + "links": { + "tr": "#border-style-properties", + "dev": "#border-style-properties" + }, + "tests": [ + "none", "hidden", "dotted", "dashed", "solid", "double", "groove", + "ridge", "inset", "outset" + ] + }, + "border-top-width": { + "links": { + "tr": "#border-width-properties", + "dev": "#border-width-properties" + }, + "tests": ["thin", "medium", "thick", "5px"] + }, + "border-right-width": { + "links": { + "tr": "#border-width-properties", + "dev": "#border-width-properties" + }, + "tests": ["thin", "medium", "thick", "5px"] + }, + "border-bottom-width": { + "links": { + "tr": "#border-width-properties", + "dev": "#border-width-properties" + }, + "tests": ["thin", "medium", "thick", "5px"] + }, + "border-left-width": { + "links": { + "tr": "#border-width-properties", + "dev": "#border-width-properties" + }, + "tests": ["thin", "medium", "thick", "5px"] + }, + "border-width": { + "links": { + "tr": "#border-width-properties", + "dev": "#border-width-properties" + }, + "tests": [ + "thin", "thin medium", "thin medium thick", "thin medium thick 5px" + ] + }, + "border": { + "links": { + "tr": "#border-shorthand-properties", + "dev": "#border-shorthand-properties" + }, + "tests": [ + "black", "dotted", "5px", "#ff0000 dashed", "solid 0.2em", + "rgb(0, 0, 255) 0.1ex", "rgb(100%, 50%, 50%) double 0.8mm" + ] + }, + "margin-right": { + "links": { + "tr": "#propdef-margin-right", + "dev": "#propdef-margin-right" + }, + "tests": ["auto", "10px", "5%"] + }, + "margin-left": { + "links": { + "tr": "#propdef-margin-left", + "dev": "#propdef-margin-left" + }, + "tests": ["auto", "10px", "5%"] + }, + "margin-top": { + "links": { + "tr": "#propdef-margin-top", + "dev": "#propdef-margin-top" + }, + "tests": ["auto", "10px", "5%"] + }, + "margin-bottom": { + "links": { + "tr": "#propdef-margin-bottom", + "dev": "#propdef-margin-bottom" + }, + "tests": ["auto", "10px", "5%"] + }, + "margin": { + "links": { + "tr": "#propdef-margin", + "dev": "#propdef-margin" + }, + "tests": [ + "10px", "10px 5%", "10px 5px auto", "10px 5px auto 1em" + ] + }, + "padding-top": { + "links": { + "tr": "#padding-properties", + "dev": "#padding-properties" + }, + "tests": ["10px", "5%"] + }, + "padding-right": { + "links": { + "tr": "#padding-properties", + "dev": "#padding-properties" + }, + "tests": ["10px", "5%"] + }, + "padding-bottom": { + "links": { + "tr": "#padding-properties", + "dev": "#padding-properties" + }, + "tests": ["10px", "5%"] + }, + "padding-left": { + "links": { + "tr": "#padding-properties", + "dev": "#padding-properties" + }, + "tests": ["10px", "5%"] + }, + "padding": { + "links": { + "tr": "#padding-properties", + "dev": "#padding-properties" + }, + "tests": [ + "10px", "10px 5%", "10px 5% 0.5em", "10px 5% 0.5em 0.8mm" + ] + } + } +}; diff --git a/tests/css-box-4.js b/tests/css-box-4.js new file mode 100644 index 00000000..def9a098 --- /dev/null +++ b/tests/css-box-4.js @@ -0,0 +1,19 @@ +export default { + "title": "CSS Box Model Module Level 4", + "links": { + "tr": "css-box-4", + "dev": "css-box-4" + }, + "status": { + "stability": "experimental" + }, + "properties": { + "margin-trim": { + "links": { + "tr": "#margin-trim", + "dev": "#margin-trim" + }, + "tests": ["none", "in-flow", "all"] + } + } +}; diff --git a/tests/css-break-3.js b/tests/css-break-3.js new file mode 100644 index 00000000..998fa9ce --- /dev/null +++ b/tests/css-break-3.js @@ -0,0 +1,40 @@ +export default { + "title": "CSS Fragmentation Module Level 3", + "links": { + "tr": "css-break-3", + "dev": "css-break-3" + }, + "status": { + "stability": "stable" + }, + "properties": { + "break-before": { + "links": { + "tr": "#break-between", + "dev": "#break-between" + }, + "tests": ["auto", "avoid", "avoid-page", "page", "left", "right", "recto", "verso", "avoid-column", "column", "avoid-region", "region "] + }, + "break-after": { + "links": { + "tr": "#break-between", + "dev": "#break-between" + }, + "tests": ["auto", "avoid", "avoid-page", "page", "left", "right", "recto", "verso", "avoid-column", "column", "avoid-region", "region "] + }, + "break-inside": { + "links": { + "tr": "#break-within", + "dev": "#break-within" + }, + "tests": ["auto", "avoid", "avoid-page", "avoid-column", "avoid-region"] + }, + "box-decoration-break": { + "links": { + "tr": "#break-decoration", + "dev": "#break-decoration" + }, + "tests": ["slice", "clone"] + } + } +}; diff --git a/tests/css-break-4.js b/tests/css-break-4.js new file mode 100644 index 00000000..1764c368 --- /dev/null +++ b/tests/css-break-4.js @@ -0,0 +1,41 @@ +export default { + "title": "CSS Fragmentation Module Level 4", + "links": { + "tr": "css-break-4", + "dev": "css-break-4" + }, + "status": { + "stability": "experimental", + }, + "values": { + "properties": [ + "break-before", + "break-after" + ], + "always": { + "links": { + "tr": "#valdef-break-before-always", + "dev": "#valdef-break-before-always", + "mdn": "break-before#values" + }, + "tests": "always" + }, + "all": { + "links": { + "tr": "#valdef-break-before-all", + "dev": "#valdef-break-before-all", + "mdn": "break-before#values" + }, + "tests": "all" + } + }, + "properties": { + "margin-break": { + "links": { + "tr": "#break-margins", + "dev": "#break-margins" + }, + "tests": ["auto", "keep", "discard"] + } + } +}; diff --git a/tests/css-cascade-3.js b/tests/css-cascade-3.js new file mode 100644 index 00000000..45f87d23 --- /dev/null +++ b/tests/css-cascade-3.js @@ -0,0 +1,36 @@ +export default { + "title": "CSS Cascading and Inheritance Level 3", + "links": { + "tr": "css-cascade-3", + "dev": "css-cascade-3" + }, + "status": { + "stability": "stable", + "first-snapshot": 2015, + "last-snapshot": 2018 + }, + "values": { + "properties": [ + "color", + "font-weight", + "background-image", + "width" + ], + "unset": { + "links": { + "tr": "#inherit-initial", + "dev": "#inherit-initial" + }, + "tests": "unset" + } + }, + "properties": { + "all": { + "links": { + "tr": "#all-shorthand", + "dev": "#all-shorthand" + }, + "tests": ["initial", "unset"] + } + } +}; diff --git a/tests/css-cascade-4.js b/tests/css-cascade-4.js new file mode 100644 index 00000000..f858b138 --- /dev/null +++ b/tests/css-cascade-4.js @@ -0,0 +1,35 @@ +export default { + "title": "CSS Cascading and Inheritance Level 4", + "links": { + "tr": "css-cascade-4", + "dev": "css-cascade-4" + }, + "status": { + "stability": "stable", + "first-snapshot": 2020 + }, + "values": { + "properties": [ + "color", + "font-weight", + "background-image", + "all" + ], + "revert": { + "links": { + "tr": "#default", + "dev": "#default" + }, + "tests": "revert" + } + }, + "properties": { + "all": { + "links": { + "tr": "#all-shorthand", + "dev": "#all-shorthand" + }, + "tests": "revert" + } + } +}; diff --git a/tests/css-cascade-5.js b/tests/css-cascade-5.js new file mode 100644 index 00000000..42e6f92d --- /dev/null +++ b/tests/css-cascade-5.js @@ -0,0 +1,48 @@ +export default { + "title": "CSS Cascading and Inheritance Level 5", + "links": { + "tr": "css-cascade-5", + "dev": "css-cascade-5" + }, + "status": { + "stability": "experimental" + }, + "values": { + "properties": [ + "color", + "font-weight", + "background-image", + "all" + ], + "revert-layer": { + "links": { + "tr": "#revert-layer", + "dev": "#revert-layer" + }, + "tests": "revert-layer" + } + }, + "properties": { + "all": { + "links": { + "tr": "#revert-layer", + "dev": "#revert-layer" + }, + "tests": "revert-layer" + } + }, + "@rules": { + "@layer": { + "links": { + "tr": "#at-layer", + "dev": "#at-layer" + }, + "tests": [ + "@layer framework {\n h1, h2 { color: maroon; background: white; }\n}", + "@layer framework {\n h1, h2 { color: maroon; background: white; }\n \n @media (prefers-color-scheme: dark) {\n h1, h2 { color: red; background: black; }\n }\n}", + "@layer framework;", + "@layer default, framework;" + ] + } + } +}; diff --git a/tests/css-color-3.js b/tests/css-color-3.js new file mode 100644 index 00000000..9b2dc60d --- /dev/null +++ b/tests/css-color-3.js @@ -0,0 +1,69 @@ +export default { + "title": "CSS Color Module Level 3", + "links": { + "tr": "css-color-3", + "dev": "css-color-3" + }, + "status": { + "stability": "stable", + "first-snapshot": 2007 + }, + "values": { + "properties": [ + "color", + "background-color", + "border-color", + "text-decoration-color", + "column-rule-color" + ], + "rgba": { + "links": { + "tr": "#rgba-color", + "dev": "#rgba-color", + "mdn": "color_value/rgba()" + }, + "tests": "rgba(0,0,0,.5)" + }, + "hsl": { + "links": { + "tr": "#hsl-color", + "dev": "#hsl-color", + "mdn": "color_value/hsl()" + }, + "tests": "hsl(0,0%,0%)" + }, + "hsla": { + "links": { + "tr": "#hsla-color", + "dev": "#hsla-color", + "mdn": "color_value/hsla()" + }, + "tests": "hsl(0,0%,0%,.5)" + }, + "currentColor": { + "links": { + "tr": "#currentcolor", + "dev": "#currentcolor", + "mdn": "color_value" + }, + "tests": "currentColor" + }, + "transparent": { + "links": { + "tr": "#transparent", + "dev": "#transparent", + "mdn": "color_value" + }, + "tests": "transparent" + } + }, + "properties": { + "opacity": { + "links": { + "tr": "#transparency", + "dev": "#transparency" + }, + "tests": ["-5", "0", ".5", "1", "2"] + } + } +}; diff --git a/tests/css-color-4.js b/tests/css-color-4.js new file mode 100644 index 00000000..5799a631 --- /dev/null +++ b/tests/css-color-4.js @@ -0,0 +1,154 @@ +export default { + "title": "CSS Color Module Level 4", + "links": { + "tr": "css-color-4", + "dev": "css-color-4" + }, + "status": { + "stability": "stable" + }, + "values": { + "properties": [ + "color", + "background-color", + "border-color", + "text-decoration-color", + "column-rule-color" + ], + "comma-less colors": { + "links": { + "tr": "#funcdef-rgb", + "dev": "#funcdef-rgb", + "mdn": "color_value" + }, + "tests": ["rgb(0% 20% 70%)", "rgb(0 64 185)", "hsl(0 0% 0%)"] + }, + "/ alpha": { + "links": { + "tr": "#funcdef-rgb", + "dev": "#funcdef-rgb", + "mdn": "color_value" + }, + "tests": ["rgba(0% 20% 70% / 50%)", "rgba(0% 20% 70% / .5)", "rgba(0 64 185 / 50%)", "rgba(0 64 185 / .5)", "hsla(0 0% 0% /.5)"] + }, + "optional alpha": { + "links": { + "tr": "#funcdef-rgb", + "dev": "#funcdef-rgb", + "mdn": "color_value" + }, + "tests": ["rgb(0% 20% 70% / 50%)", "rgb(0% 20% 70% / .5)", "rgb(0 64 185 / 50%)", "rgb(0 64 185 / .5)", "hsl(0 0% 0% / .5)"] + }, + "Hex with alpha": { + "links": { + "tr": "#hex-notation", + "dev": "#hex-notation", + "mdn": "color_value" + }, + "tests": ["#000F", "#000000FF"] + }, + "rebeccapurple": { + "links": { + "tr": "#named-colors", + "dev": "#named-colors", + "mdn": "color_value" + }, + "tests": "rebeccapurple" + }, + "system colors": { + "links": { + "tr": "#css-system-colors", + "dev": "#css-system-colors", + "mdn": "color_value" + }, + "tests": [ + "Canvas", "CanvasText", "LinkText", "VisitedText", "ActiveText", "ButtonFace", "Field", "FieldText", + "Highlight", "HighlightText", "GrayText" + ] + }, + "hwb()": { + "links": { + "tr": "#the-hwb-notation", + "dev": "#the-hwb-notation", + "mdn": "color_value/hwb()" + }, + "tests": ["hwb(0 0% 0%)", "hwb(0 0% 0% / .5)"] + }, + "lab()": { + "links": { + "tr": "#specifying-lab-lch", + "dev": "#specifying-lab-lch", + "mdn": "color_value/lab()" + }, + "tests": ["lab(0% 0 0)", "lab(0% 0 0 /.5)"] + }, + "oklab()": { + "links": { + "tr": "#specifying-oklab-lch", + "dev": "#specifying-oklab-lch", + "mdn": "color_value/oklab()" + }, + "tests": ["oklab(0% 0 0)", "oklab(40.101% 0.1147 0.0453 / .5)"] + }, + + "lch()": { + "links": { + "tr": "#specifying-lch-lch", + "dev": "#specifying-lch-lch", + "mdn": "color_value/lch()" + }, + "tests": ["lch(0% 0 0)", "lch(none 0% none)", "lch(0% 0 0 / .5)"] + }, + "oklch()": { + "links": { + "tr": "#specifying-oklch-lch", + "dev": "#specifying-oklch-lch", + "mdn": "color_value/oklch()" + }, + "tests": ["oklch(0% 0 0)", "oklch(40.101% 0.12332 21.555 / .5)"] + }, + "color()": { + "links": { + "tr": "#color-function", + "dev": "#color-function", + "mdn": "color_value/color()" + }, + "tests": [ + "color(.2 .4 .6)", + "color(display-p3 .2. 4 .6)", + "color(foo .2 .4 .6)", + "color(.2 .4 .6 / .5)", + "color(display-p3 .2 .4 .6 / .5)", + "color(--foo .2 .4 .6 / .5)", + "color(.2 .4 .6, #123456)", + "color(display-p3 .2. 4 .6, #654321)", + "color(20% 40% 60%)", + "color(display-p3 20% 40% 60%)", + "color(foo 20% 40% 60%)", + "color(20% 40% 60% / .5)", + "color(image-p3 20% 40% 60% / .5)", + "color(--foo 20% 40% 60% / .5)", + "color(20% 40% 60%, #123456)", + "color(display-p3 20% 40% 60%, #654321)", + "color(--mycmyk 0% 20% 30% 5%)" + ] + }, + "device-cmyk()": { + "links": { + "tr": "#cmyk-colors", + "dev": "#cmyk-colors", + "mdn": "color_value/device-cmyk()" + }, + "tests": ["device-cmyk(.2 .3 .4 .5)", "device-cmyk(.2 .3 .4 .5 / .5)", "device-cmyk(.2 .3 .4 .5 / 50%)"] + } + }, + "properties": { + "opacity": { + "links": { + "tr": "#transparency", + "dev": "#transparency" + }, + "tests": ["45%"] + } + } +}; diff --git a/tests/css-color-5.js b/tests/css-color-5.js new file mode 100644 index 00000000..ccf975a6 --- /dev/null +++ b/tests/css-color-5.js @@ -0,0 +1,68 @@ +export default { + "title": "CSS Color Module Level 5", + "links": { + "dev": "css-color-5" + }, + "status": { + "stability": "experimental" + }, + "values": { + "properties": [ + "color", + "background-color", + "border-color", + "text-decoration-color", + "column-rule-color" + ], + "color-mix()": { + "links": { + "dev": "#color-mix", + "mdn": "color_value" + }, + "tests": [ + "color-mix(in srgb, teal 65%, olive)", + "color-mix(in srgb, rgb(255, 0, 0, .2) 65%, olive)", + "color-mix(in srgb, currentColor, rgba(0, 0, 0, .5) 65%", + "color-mix(in srgb, currentColor 10%, rgba(0, 0, 0, .5) 65%", + "color-mix(in lch, teal 65%, olive)", + "color-mix(in hsl, teal 65%, olive)", + "color-mix(in hwb, teal 65%, olive)", + "color-mix(in xyz, teal 65%, olive)", + "color-mix(in lab, teal 65%, olive)", + ] + }, + "color-contrast()": { + "links": { + "dev": "#colorcontrast", + "mdn": "color_value" + }, + "tests": [ + "color-contrast(wheat vs tan, sienna, #b22222, #d2691e)", + "color-contrast(hsl(200 50% 80%) vs hsl(200 83% 23%), purple, hsl(300 100% 25%))" + ] + }, + "color-adjust()": { + "links": { + + "dev": "#coloradjust", + "mdn": "color_value" + }, + "tests": [ + "color-adjust(peru lightness -20%)" + ] + }, + + "relative color": { + "links": { + "dev": "#relative-colors", + "mdn": "color_value" + }, + "tests": [ + "rgb(from indianred 255 g b)", + "hsl(from lightseagreen calc(h+180) s l)", + "lab(from orchid l 0 0)", + "lch(from peru calc(l * 0.8) c h)" + ] + } + } +}; diff --git a/tests/css-color-adjust-1.js b/tests/css-color-adjust-1.js new file mode 100644 index 00000000..e9972cb1 --- /dev/null +++ b/tests/css-color-adjust-1.js @@ -0,0 +1,36 @@ +export default { + "title": "CSS Color Adjustment Module Level 1", + "links": { + "tr": "css-color-adjust-1", + "dev": "css-color-adjust-1" + }, + "status": { + "stability": "stable" + }, + "properties": { + "color-adjust": { + "links": { + "tr": "#perf", + "dev": "#perf" + }, + "tests": ["economy", "exact"] + }, + "forced-color-adjust": { + "links": { + "tr": "#forced", + "dev": "#forced" + }, + "tests": ["auto", "none", "preserve-parent-color"] + }, + "color-scheme": { + "links": { + "tr": "#color-scheme-prop", + "dev": "#color-scheme-prop" + }, + "tests": [ + "normal", "light", "dark", "light dark", "dark light", "only light", "light only", + "light light", "dark dark", "light purple", "purple dark interesting", "none", "light none" + ] + } + } +}; diff --git a/tests/css-composition-1.js b/tests/css-composition-1.js new file mode 100644 index 00000000..7503520e --- /dev/null +++ b/tests/css-composition-1.js @@ -0,0 +1,35 @@ +export default { + "title": "Compositing and Blending Level 1", + "links": { + "tr": "compositing-1", + "dev": "compositing-1", + "devtype": "fxtf" + }, + "status": { + "stability": "stable", + "first-snapshot": 2015 + }, + "properties": { + "mix-blend-mode": { + "links": { + "tr": "#mix-blend-mode", + "dev": "#mix-blend-mode" + }, + "tests": ["normal", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "hue", "saturation", "color", "luminosity"] + }, + "isolation": { + "links": { + "tr": "#isolation", + "dev": "#isolation" + }, + "tests": ["auto", "isolate"] + }, + "background-blend-mode": { + "links": { + "tr": "#background-blend-mode", + "dev": "#background-blend-mode" + }, + "tests": ["normal", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "hue", "saturation", "color", "luminosity", "normal, multiply"] + } + } +}; diff --git a/tests/css-conditional-3.js b/tests/css-conditional-3.js new file mode 100644 index 00000000..ad151eab --- /dev/null +++ b/tests/css-conditional-3.js @@ -0,0 +1,27 @@ +export default { + "title": "CSS Conditional Rules Module Level 3", + "links": { + "tr": "css3-conditional", + "dev": "css-conditional-3" + }, + "status": { + "stability": "stable", + "first-snapshot": 2015 + }, + "@rules": { + "@supports": { + "links": { + "tr": "#at-supports", + "dev": "#at-supports" + }, + "tests": [ + "@supports (color: green) {}", + "@supports not (foo: bar) {}", + "@supports (color: green) or (color: red) {}", + "@supports (color: green) and (color: red) {}", + "@supports (color: green) and (not (foo: bar)) {}", + "@supports (color: green) or (not (foo: bar)) {}" + ] + } + } +}; diff --git a/tests/css-conditional-4.js b/tests/css-conditional-4.js new file mode 100644 index 00000000..6fce32b7 --- /dev/null +++ b/tests/css-conditional-4.js @@ -0,0 +1,23 @@ +export default { + "title": "CSS Conditional Rules Module Level 4", + "links": { + "tr": "css-conditional-4", + "dev": "css-conditional-4" + }, + "status": { + "stability": "experimental" + }, + "@rules": { + "@supports": { + "links": { + "tr": "#at-supports-ext", + "dev": "#at-supports-ext" + }, + "tests": [ + "@supports selector(::before) {}", + "@supports not selector(::-webkit-unknown-pseudo) {}", + "@supports selector(div, div) {}" + ] + } + } +} diff --git a/tests/css-conditional-5.js b/tests/css-conditional-5.js new file mode 100644 index 00000000..ecf490ec --- /dev/null +++ b/tests/css-conditional-5.js @@ -0,0 +1,47 @@ +export default { + "title": "CSS Conditional Rules Module Level 5", + "links": { + "tr": "css-conditional-5", + "dev": "css-conditional-5" + }, + "status": { + "stability": "experimental" + }, + "@rules": { + "@supports": { + "links": { + "tr": "#at-supports-ext", + "dev": "#at-supports-ext" + }, + "tests": [ + "@supports font-tech(features-opentype) {}", + "@supports font-format(woff2) {}" + ] + }, + "@when": { + "links": { + "tr": "#when-rule", + "dev": "#when-rule" + }, + "tests": [ + "@when media(min-width: 200px) {}", + "@when media(width >= 200px) {}", + "@when media(pointer) {}", + "@when supports(display: flex) {}" + ] + }, + "@else": { + "links": { + "tr": "#else-rule", + "dev": "#else-rule" + }, + "tests": [ + "@when media(min-width: 200px) {} @else {}", + "@when media(min-width: 200px) {} @else media(min-width: 100px) {}", + "@when media(min-width: 200px) {} @else media(min-width >= 100px) {}", + "@when media(min-width: 200px) {} @else supports(display: flex) {}", + "@when media(min-width: 200px) {} @else media(min-width: 100px) {} @else {}" + ] + } + } +}; diff --git a/tests/css-containment-1.js b/tests/css-containment-1.js new file mode 100644 index 00000000..295a5873 --- /dev/null +++ b/tests/css-containment-1.js @@ -0,0 +1,23 @@ +export default { + "title": "CSS Containment Module Level 1", + "links": { + "tr": "css-contain-1", + "dev": "css-contain-1" + }, + "status": { + "stability": "stable", + "first-snapshot": 2020 + }, + "properties": { + "contain": { + "links": { + "tr": "#contain-property", + "dev": "#contain-property" + }, + "tests": [ + "none", "strict", "content", "size", "layout", "paint", + "size layout", "size paint", "size layout paint" + ] + } + } +}; diff --git a/tests/css-containment-2.js b/tests/css-containment-2.js new file mode 100644 index 00000000..2056cf75 --- /dev/null +++ b/tests/css-containment-2.js @@ -0,0 +1,29 @@ +export default { + "title": "CSS Containment Module Level 2", + "links": { + "tr": "css-contain-2", + "dev": "css-contain-2" + }, + "status": { + "stability": "experimental" + }, + "properties": { + "contain": { + "links": { + "tr": "#contain-property", + "dev": "#contain-property" + }, + "tests": [ + "style", + "size style", "size layout style", "size layout style paint" + ] + }, + "content-visibility": { + "links": { + "tr": "#content-visibility", + "dev": "#content-visibility" + }, + "tests": ["visible", "auto", "hidden"] + } + } +}; diff --git a/tests/css-containment-3.js b/tests/css-containment-3.js new file mode 100644 index 00000000..64710200 --- /dev/null +++ b/tests/css-containment-3.js @@ -0,0 +1,128 @@ +export default { + "title": "CSS Containment Module Level 3", + "links": { + "tr": "css-contain-3", + "dev": "css-contain-3" + }, + "status": { + "stability": "experimental" + }, + "@rules": { + "@container": { + "links": { + "tr": "#container-rule", + "dev": "#container-rule" + }, + "tests": [ + "@container size(width >= 150px) { div { margin: 10px } }", + "@container size(height >= 150px) { div { margin: 10px } }", + "@container size(inline-size >= 150px) { div { margin: 10px } }", + "@container size(block-size >= 150px) { div { margin: 10px } }", + "@container size(aspect-ratio >= 1 / 1) { div { margin: 10px } }", + "@container size(orientation = portrait) { div { margin: 10px } }", + "@container style(pointer) { div { margin: 10px } }", + "@container style(pointer: fine) { div { margin: 10px } }", + "@container x size(width >= 150px) { div { margin: 10px } }", + "@container name(x) size(width >= 150px) { div { margin: 10px } }", + "@container type(inline-size) size(width >= 150px) { div { margin: 10px } }", + "@container name(x) type(inline-size) size(width >= 150px) { div { margin: 10px } }" + ] + } + }, + "values": { + "properties": [ + "width" + ], + "cqw": { + "links": { + "tr": "#container-lengths", + "dev": "#container-lengths", + "mdn": "length" + }, + "tests": "5cqw" + }, + "cqh": { + "links": { + "tr": "#container-lengths", + "dev": "#container-lengths", + "mdn": "length" + }, + "tests": "5cqh" + }, + "cqi": { + "links": { + "tr": "#container-lengths", + "dev": "#container-lengths", + "mdn": "length" + }, + "tests": "5cqi" + }, + "cqb": { + "links": { + "tr": "#container-lengths", + "dev": "#container-lengths", + "mdn": "length" + }, + "tests": "5cqb" + }, + "cqmin": { + "links": { + "tr": "#container-lengths", + "dev": "#container-lengths", + "mdn": "length" + }, + "tests": "5cqmin" + }, + "cqmax": { + "links": { + "tr": "#container-lengths", + "dev": "#container-lengths", + "mdn": "length" + }, + "tests": "5cqmax" + } + }, + "properties": { + "container-type": { + "links": { + "tr": "#container-type", + "dev": "#container-type" + }, + "tests": [ + "none", + "style", + "state", + "size", + "inline-size", + "block-size", + "style state", + "style state size", + "style state inline-size", + "style state block-size" + ] + }, + "container-name": { + "links": { + "tr": "#container-name", + "dev": "#container-name" + }, + "tests": [ + "none", + "x", + "\"x\"", + "x y" + ] + }, + "container": { + "links": { + "tr": "#container-shorthand", + "dev": "#container-shorthand" + }, + "tests": [ + "none", + "style", + "size / x" + ] + } + } +}; diff --git a/tests/css-content-3.js b/tests/css-content-3.js new file mode 100644 index 00000000..731fcd94 --- /dev/null +++ b/tests/css-content-3.js @@ -0,0 +1,29 @@ +export default { + "title": "CSS Generated Content Module Level 3", + "links": { + "tr": "css-content-3", + "dev": "css-content-3" + }, + "status": { + "stability": "experimental" + }, + "properties": { + "quotes": { + "links": { + "tr": "#quotes", + "dev": "#quotes" + }, + "tests": ["auto"] + }, + "content": { + "links": { + "tr": "#alt", + "dev": "#alt" + }, + "tests": [ + "url(./img/star.png) / \"New!\"", + "\"\\25BA\" / \"\"" + ] + } + } +}; diff --git a/tests/css-counter-styles-3.js b/tests/css-counter-styles-3.js new file mode 100644 index 00000000..a57f1df8 --- /dev/null +++ b/tests/css-counter-styles-3.js @@ -0,0 +1,149 @@ +export default { + "title": "CSS Counter Styles Level 3", + "links": { + "tr": "css-counter-styles-3", + "dev": "css-counter-styles-3" + }, + "status": { + "stability": "stable", + "first-snapshot": 2021 + }, + "@rules": { + "@counter-style": { + "links": { + "tr": "#the-counter-style-rule", + "dev": "#the-counter-style-rule" + }, + "tests": "@counter-style foo {\n system: numeric;\n symbols: '0' '1' '2' '3' '4' '5' '6' '7' '8' '9';\n}" + } + }, + "descriptors": { + "@counter-style example/system": { + "links": { + "tr": "#counter-style-system", + "dev": "#counter-style-system" + }, + "required" : { + '*' : { "descriptor" : "system: alphabetic; symbols: A B C D; additive-symbols: 1000 M, 500 C"}, + 'extends decimal' : { } + }, + "tests": [ + "cyclic", "numeric", "alphabetic", "symbolic", "additive", "fixed 3", "extends decimal" + ] + }, + "@counter-style example/negative": { + "links": { + "tr": "#counter-style-negative", + "dev": "#counter-style-negative" + }, + "required" : { + '*' : { "descriptor" : "system: alphabetic; symbols: A B C D; additive-symbols: 1000 M, 500 C"} + }, + "tests": [ + "'-'", "'(' ')'" + ] + }, + "@counter-style example/prefix": { + "links": { + "tr": "#counter-style-prefix", + "dev": "#counter-style-prefix" + }, + "required" : { + '*' : { "descriptor" : "system: alphabetic; symbols: A B C D; additive-symbols: 1000 M, 500 C"} + }, + "tests": [ + "»", "url(https://lea.verou.me/mark.svg)" + ] + }, + "@counter-style example/suffix": { + "links": { + "tr": "#counter-style-suffix", + "dev": "#counter-style-suffix" + }, + "required" : { + '*' : { "descriptor" : "system: alphabetic; symbols: A B C D; additive-symbols: 1000 M, 500 C"} + }, + "tests": [ + "»", "url(https://lea.verou.me/mark.svg)" + ] + }, + "@counter-style example/range": { + "links": { + "tr": "#counter-style-range", + "dev": "#counter-style-range" + }, + "required" : { + '*' : { "descriptor" : "system: alphabetic; symbols: A B C D; additive-symbols: 1000 M, 500 C"} + }, + "tests": [ + "auto", "2 5", "infinite 10", "10 infinite", "infinite infinite", "2 5, 8 10", "infinite 8, 6 infinite" + ] + }, + "@counter-style example/symbols": { + "links": { + "tr": "#counter-style-symbols", + "dev": "#counter-style-symbols" + }, + "required" : { + '*' : { "descriptor" : "system: alphabetic"}, + 'custom-numbers' : { "rule" : "@counter-style custom-numbers { system: fixed; symbols: A B C D E;}"} + }, + "tests": [ + "A B C D E F", + "'\\24B6' '\\24B7' '\\24B8' D E F", + "'0' '1' '2' '4' '5' '6' '7'", + "'1' url('second.svg') '2'", + "url('first.svg') url('second.svg') url('third.svg')", + "custom-numbers" + ] + }, + "@counter-style example/additive-symbols": { + "links": { + "tr": "#additive-system", + "dev": "#descdef-counter-style-additive-symbols" + }, + "required" : { + '*' : { "descriptor" : "system: additive"} + }, + "tests": [ + "3 '0'", "3 '1', 2 '\\2E\\20'", "3 '1', 2 url(symbol.svg)", + ] + }, + "@counter-style example/pad": { + "links": { + "tr": "#counter-style-pad", + "dev": "#counter-style-pad" + }, + "required" : { + '*' : { "descriptor" : "system: alphabetic; symbols: A B C D; additive-symbols: 1000 M, 500 C"} + }, + "tests": [ + "0 ''", "3 '0'", "'0' 3" + ] + }, + "@counter-style example/fallback": { + "links": { + "tr": "#counter-style-fallback", + "dev": "#counter-style-fallback" + }, + "required" : { + '*' : { "descriptor" : "system: alphabetic; symbols: A B C D; additive-symbols: 1000 M, 500 C"} + }, + "tests": [ + "decimal" + ] + }, + "@counter-style example/speak-as": { + "links": { + "tr": "#counter-style-speak-as", + "dev": "#counter-style-speak-as" + }, + "required" : { + '*' : { "descriptor" : "system: alphabetic; symbols: A B C D; additive-symbols: 1000 M, 500 C"} + }, + "tests": [ + "auto", "bullets", "numbers", "words", "spell-out", "example-counter", + ] + } + } +}; diff --git a/tests/css-display-3.js b/tests/css-display-3.js new file mode 100644 index 00000000..70669829 --- /dev/null +++ b/tests/css-display-3.js @@ -0,0 +1,28 @@ +export default { + "title": "CSS Display Module Level 3", + "links": { + "tr": "css-display-3", + "dev": "css-display-3" + }, + "status": { + "stability": "stable" + }, + "properties": { + "display": { + "links": { + "tr": "#the-display-properties", + "dev": "#the-display-properties" + }, + "tests": [ + "run-in", "flow", "flow-root", + "block flow", "inline flow", "run-in flow", + "block flow-root", "inline flow-root", "run-in flow-root", + "block table", "inline table", "run-in table", + "block flex", "inline flex", "run-in flex", + "block grid", "inline grid", "run-in grid", + "block ruby", "inline ruby", "run-in ruby", + "inline list-item", "list-item inline flow", "list-item block flow" + ] + } + } +}; diff --git a/tests/css-easing-1.js b/tests/css-easing-1.js new file mode 100644 index 00000000..24f9fcf0 --- /dev/null +++ b/tests/css-easing-1.js @@ -0,0 +1,20 @@ +export default { + "title": "CSS Easing Functions Level 1", + "links": { + "tr": "css-easing-1", + "dev": "css-easing-1" + }, + "status": { + "stability": "stable", + "first-snapshot": 2020 + }, + "properties": { + "transition-timing-function": { + "links": { + "tr": "#easing-functions", + "dev": "#easing-functions" + }, + "tests": ["steps(2, jump-start)", "steps(2, jump-end)", "steps(1, jump-both)", "steps(2, jump-none)"] + } + } +}; diff --git a/tests/css-env-1.js b/tests/css-env-1.js new file mode 100644 index 00000000..546a81a0 --- /dev/null +++ b/tests/css-env-1.js @@ -0,0 +1,26 @@ +export default { + "title": "Environment Variables Level 1", + "links": { + "dev": "css-env-1" + }, + "status": { + "stability": "experimental" + }, + "values": { + "properties": [ + "width", + "padding" + ], + "env()": { + "links": { + "dev": "#env-function" + }, + "tests": [ + "env(safe-area-inset-top)", "env(safe-area-inset-top, 12px)", + "env(safe-area-inset-right)", "env(safe-area-inset-right, 12px)", + "env(safe-area-inset-bottom)", "env(safe-area-inset-bottom, 12px)", + "env(safe-area-inset-left)", "env(safe-area-inset-left, 12px)" + ] + } + } +}; diff --git a/tests/css-exclusions-1.js b/tests/css-exclusions-1.js new file mode 100644 index 00000000..48814373 --- /dev/null +++ b/tests/css-exclusions-1.js @@ -0,0 +1,26 @@ +export default { + "title": "CSS Exclusions Module Level 1", + "links": { + "tr": "css3-exclusions", + "dev": "css-exclusions-1" + }, + "status": { + "stability": "experimental" + }, + "properties": { + "wrap-flow": { + "links": { + "tr": "#wrap-flow-property", + "dev": "#wrap-flow-property" + }, + "tests": ["auto", "both", "start", "end", "minimum", "maximum", "clear"] + }, + "wrap-through": { + "links": { + "tr": "#wrap-through-property", + "dev": "#wrap-through-property" + }, + "tests": ["wrap", "none"] + } + } +}; diff --git a/tests/css-flexbox-1.js b/tests/css-flexbox-1.js new file mode 100644 index 00000000..513e2df5 --- /dev/null +++ b/tests/css-flexbox-1.js @@ -0,0 +1,119 @@ +export default { + "title": "CSS Flexible Box Layout Module Level 1", + "links": { + "tr": "css-flexbox-1", + "dev": "css-flexbox-1", + "mdn": "Glossary/Flexbox" + }, + "status": { + "stability": "stable", + "first-snapshot": 2018 + }, + "properties": { + "align-content": { + "links": { + "tr": "#align-content-property", + "dev": "#align-content-property" + }, + "tests": ["flex-start", "flex-end", "space-between", "space-around"] + }, + "align-items": { + "links": { + "tr": "#align-items-property", + "dev": "#align-items-property" + }, + "tests": ["flex-start", "flex-end"] + }, + "align-self": { + "links": { + "tr": "#align-items-property", + "dev": "#align-items-property" + }, + "tests": ["flex-start", "flex-end"] + }, + "display": { + "links": { + "tr": "#flex-containers", + "dev": "#flex-containers" + }, + "tests": ["flex", "inline-flex"] + }, + "flex": { + "links": { + "tr": "#flex-property", + "dev": "#flex-property" + }, + "tests": ["none", "5 7 10%"] + }, + "flex-basis": { + "links": { + "tr": "#flex-basis-property", + "dev": "#flex-basis-property" + }, + "tests": ["auto", "content", "1px"] + }, + "flex-direction": { + "links": { + "tr": "#flex-direction-property", + "dev": "#flex-direction-property" + }, + "tests": ["row", "row-reverse", "column", "column-reverse"] + }, + "flex-flow": { + "links": { + "tr": "#flex-flow-property", + "dev": "#flex-flow-property" + }, + "tests": ["row", "row-reverse", "column", "column-reverse", "wrap", "wrap-reverse"] + }, + "flex-grow": { + "links": { + "tr": "#flex-grow-property", + "dev": "#flex-grow-property" + }, + "tests": ["0", "5"] + }, + "flex-shrink": { + "links": { + "tr": "#flex-shrink-property", + "dev": "#flex-shrink-property" + }, + "tests": ["1", "10"] + }, + "flex-wrap": { + "links": { + "tr": "#flex-wrap-property", + "dev": "#flex-wrap-property" + }, + "tests": ["nowrap", "wrap", "wrap-reverse"] + }, + "justify-content": { + "links": { + "tr": "#justify-content-property", + "dev": "#justify-content-property" + }, + "tests": ["flex-start", "flex-end", "space-between", "space-around"] + }, + "min-height": { + "links": { + "tr": "#min-size-auto", + "dev": "#min-size-auto" + }, + "tests": ["auto"] + }, + "min-width": { + "links": { + "tr": "#min-size-auto", + "dev": "#min-size-auto" + }, + "tests": ["auto"] + }, + "order": { + "links": { + "tr": "#order-property", + "dev": "#order-property" + }, + "tests": ["0", "1"] + } + } +}; diff --git a/tests/css-fonts-3.js b/tests/css-fonts-3.js new file mode 100644 index 00000000..3ba68909 --- /dev/null +++ b/tests/css-fonts-3.js @@ -0,0 +1,184 @@ +export default { + "title": "CSS Fonts Module Level 3", + "links": { + "tr": "css-fonts-3", + "dev": "css-fonts-3" + }, + "status": { + "stability": "stable", + "first-snapshot": 2015 + }, + "properties": { + "font-stretch": { + "links": { + "tr": "#font-stretch-prop", + "dev": "#font-stretch-prop" + }, + "tests": [ + "normal", "ultra-condensed", "extra-condensed", "condensed", "semi-condensed", "semi-expanded", + "expanded", "extra-expanded", "ultra-expanded" + ] + }, + "font-size-adjust": { + "links": { + "tr": "#font-size-adjust-prop", + "dev": "#font-size-adjust-prop" + }, + "tests": ["none", ".5"] + }, + "font-synthesis": { + "links": { + "tr": "#font-synthesis-prop", + "dev": "#font-synthesis-prop" + }, + "tests": ["none", "weight", "style", "weight style", "style weight"] + }, + "font-kerning": { + "links": { + "tr": "#font-kerning-prop", + "dev": "#font-kerning-prop" + }, + "tests": ["auto", "normal", "none"] + }, + "font-variant-position": { + "links": { + "tr": "#font-variant-position-prop", + "dev": "#font-variant-position-prop" + }, + "tests": ["normal", "sub", "super"] + }, + "font-variant-ligatures": { + "links": { + "tr": "#font-variant-ligatures-prop", + "dev": "#font-variant-ligatures-prop" + }, + "tests": [ + "normal", "none", + "common-ligatures", "no-common-ligatures", + "discretionary-ligatures", "no-discretionary-ligatures", + "historical-ligatures", "no-historical-ligatures", + "contextual", "no-contextual", + "common-ligatures discretionary-ligatures historical-ligatures contextual" + ] + }, + "font-variant-caps": { + "links": { + "tr": "#font-variant-caps-prop", + "dev": "#font-variant-caps-prop" + }, + "tests": [ + "normal", "small-caps", "all-small-caps", "petite-caps", "all-petite-caps", "titling-caps", "unicase" + ] + }, + "font-variant-numeric": { + "links": { + "tr": "#font-variant-numeric-prop", + "dev": "#font-variant-numeric-prop" + }, + "tests": [ + "normal", + "lining-nums", "oldstyle-nums", + "proportional-nums", "tabular-nums", + "diagonal-fractions", "stacked-fractions", + "ordinal", "slashed-zero", + "lining-nums proportional-nums diagonal-fractions", + "oldstyle-nums tabular-nums stacked-fractions ordinal slashed-zero", + "slashed-zero ordinal tabular-nums stacked-fractions oldstyle-nums" + ] + }, + "font-variant-east-asian": { + "links": { + "tr": "#font-variant-east-asian-prop", + "dev": "#font-variant-east-asian-prop" + }, + "tests": [ + "normal", + "jis78", "jis83", "jis90", "jis04", "simplified", "traditional", + "full-width", "proportional-width", + "ruby", "simplified full-width ruby" + ] + }, + + "font-feature-settings": { + "links": { + "tr": "#font-feature-settings-prop", + "dev": "#font-feature-settings-prop" + }, + "tests": ["normal", "'c2sc'", "'smcp' on", "'liga' off", "'smcp', 'swsh' 2"] + } + }, + "descriptors": { + "@font-face/src": { + "links": { + "tr": "#descdef-src", + "dev": "#descdef-src" + }, + "tests": [ + "url(http://example.com/fonts/Gentium.woff)", + "url(ideal-sans-serif.woff2) format(\"woff2\"), url(good-sans-serif.woff) format(\"woff\"), url(basic-sans-serif.ttf) format(\"opentype\")", + "local(Gentium), url(Gentium.woff)" + ] + }, + "@font-face/font-family": { + "links": { + "tr": "#descdef-font-family", + "dev": "#descdef-font-family" + }, + "tests": ["Gentium"] + }, + "@font-face/font-style": { + "links": { + "tr": "#font-prop-desc", + "dev": "#font-prop-desc" + }, + "tests": ["normal", "italic", "oblique "] + }, + "@font-face/font-weight": { + "links": { + "tr": "#font-prop-desc", + "dev": "#font-prop-desc" + }, + "tests": ["normal", "bold", "100", "200", "300", "400", "500", "600", "700", "800", "900"] + }, + "@font-face/font-stretch": { + "links": { + "tr": "#font-prop-desc", + "dev": "#font-prop-desc" + }, + "tests": [ + "normal", "ultra-condensed", "extra-condensed", "condensed", "semi-condensed", "semi-expanded", + "expanded", "extra-expanded", "ultra-expanded " + ] + }, + "@font-face/font-feature-settings": { + "links": { + "tr": "#font-rend-desc", + "dev": "#font-rend-desc" + }, + "tests": ["normal", "'c2sc'", "'smcp' on", "'liga' off", "'smcp', 'swsh' 2"] + }, + "@font-face/font-variation-settings": { + "links": { + "tr": "#font-rend-desc", + "dev": "#font-rend-desc" + }, + "tests": ["normal", "'swsh' 2"] + }, + "@font-face/unicode-range": { + "links": { + "tr": "#unicode-range-desc", + "dev": "#unicode-range-desc" + }, + "tests": ["U+416", "U+0-7F", "U+A5, U+4E00-9FFF", "U+30??"] + } + }, + "@rules": { + "@font-face": { + "links": { + "tr": "#font-face-rule", + "dev": "#font-face-rule" + }, + "tests": "@font-face {\n font-family: foo;\n src: local('Arial');\n}" + } + } +}; diff --git a/tests/css-fonts-4.js b/tests/css-fonts-4.js new file mode 100644 index 00000000..b9fba846 --- /dev/null +++ b/tests/css-fonts-4.js @@ -0,0 +1,145 @@ +export default { + "title": "CSS Fonts Module Level 4", + "links": { + "tr": "css-fonts-4", + "dev": "css-fonts-4" + }, + "status": { + "stability": "stable" + }, + "properties": { + "font-size": { + "links": { + "tr": "#font-size-prop", + "dev": "#font-size-prop" + }, + "tests": ["xxx-large"] + }, + "font-variant": { + "links": { + "tr": "#font-variant-prop", + "dev": "#font-variant-prop" + }, + "tests": [ + "none", "all-petite-caps", "historical-forms", "super", + "sub lining-nums contextual ruby", + "annotation(circled)", + "discretionary-ligatures character-variant(leo-B, leo-M, leo-N, leo-T, leo-U)" + ] + }, + "font-variant-alternates": { + "links": { + "tr": "#font-variant-alternates-prop", + "dev": "#font-variant-alternates-prop" + }, + "tests": [ + "normal", "historical-forms", + "styleset(ss01)", "styleset(stacked-g, geometric-m)", + "character-variant(cv02)", "character-variant(beta-3, gamma)", + "swash(flowing)", "ornaments(leaves)", "annotation(blocky)" + ] + }, + "font-feature-settings": { + "links": { + "tr": "#font-feature-settings-prop", + "dev": "#font-feature-settings-prop" + }, + "tests": ["normal", "'swsh' 2"] + }, + "font-language-override": { + "links": { + "tr": "#font-language-override", + "dev": "#font-language-override" + }, + "tests": ["normal", "'SRB'"] + }, + "font-weight": { + "links": { + "tr": "#font-weight-prop", + "dev": "#font-weight-prop" + }, + "tests": ["1", "90", "750", "1000"] + }, + "font-style": { + "links": { + "tr": "#font-style-prop", + "dev": "#font-style-prop" + }, + "tests": ["oblique 15deg", "oblique -15deg", "oblique 0deg"] + }, + "font-optical-sizing": { + "links": { + "tr": "#font-optical-sizing-def", + "dev": "#font-optical-sizing-def" + }, + "tests": ["none", "auto"] + }, + "font-palette": { + "links": { + "tr": "#font-palette-prop", + "dev": "#font-palette-prop" + }, + "tests": ["normal", "light", "dark"] + } + }, + "@rules": { + "@font-feature-values": { + "links": { + "tr": "#font-feature-values", + "dev": "#font-feature-values" + }, + "tests": "@font-feature-values Jupiter Sans {\n @styleset {\n some-style: 1;\n }\n}" + }, + "@font-palette-values": { + "links": { + "tr": "#font-palette-values", + "dev": "#font-palette-values" + }, + "tests": "@font-palette-values Augusta {\n font-family: Handover Sans;\n base-palette: 3;\n}" + }, + }, + "descriptors": { + "@font-face/ascent-override": { + "links": { + "tr": "#descdef-font-face-ascent-override", + "dev": "#descdef-font-face-ascent-override" + }, + "tests": ["normal", "125%"] + }, + "@font-face/descent-override": { + "links": { + "tr": "#descdef-font-face-descent-override", + "dev": "#descdef-font-face-descent-override" + }, + "tests": ["normal", "125%"] + }, + "@font-face/line-gap-override": { + "links": { + "tr": "#descdef-font-face-line-gap-override", + "dev": "#descdef-font-face-line-gap-override" + }, + "tests": ["normal", "90%"] + }, + "@font-face/font-named-instance": { + "links": { + "tr": "#font-named-instance", + "dev": "#font-named-instance" + }, + "tests": ["auto", "'Grotesque'"] + }, + "@font-face/font-display": { + "links": { + "tr": "#descdef-font-face-font-display", + "dev": "#descdef-font-face-font-display" + }, + "tests": ["auto", "block", "swap", "fallback", "optional"] + }, + "@font-feature-values/font-display": { + "links": { + "tr": "#font-display-font-feature-values", + "dev": "#font-display-font-feature-values" + }, + "tests": ["auto", "block", "swap", "fallback", "optional"] + } + } +}; diff --git a/tests/css-fonts-5.js b/tests/css-fonts-5.js new file mode 100644 index 00000000..9cc171c0 --- /dev/null +++ b/tests/css-fonts-5.js @@ -0,0 +1,31 @@ +export default { + "title": "CSS Fonts Module Level 5", + "links": { + "dev": "css-fonts-5" + }, + "status": { + "stability": "experimental" + }, + "properties": { + "font-size-adjust": { + "links": { + "dev": "#font-size-adjust-prop" + }, + "tests": [ + "ex-height 0.545", "ex-height from-font", + "cap-height 0.545", "cap-height from-font", + "ch-width 0.545", "ch-width from-font", + "ic-width 0.545", "ic-width from-font", + "ic-height 0.545", "ic-height from-font" + ] + }, + }, + "descriptors": { + "@font-face/size-adjust": { + "links": { + "dev": "#size-adjust-desc" + }, + "tests": ["100%"] + }, + } +}; diff --git a/tests/css-grid-1.js b/tests/css-grid-1.js new file mode 100644 index 00000000..14ba227e --- /dev/null +++ b/tests/css-grid-1.js @@ -0,0 +1,175 @@ +export default { + "title": "CSS Grid Layout Module Level 1", + "links": { + "tr": "css-grid-1", + "dev": "css-grid-1", + "mdn": "Glossary/Grid" + }, + "status": { + "stability": "stable" + }, + "properties": { + "display": { + "links": { + "tr": "#grid-containers", + "dev": "#grid-containers" + }, + "tests": ["grid", "inline-grid"] + }, + "grid-template-columns": { + "links": { + "tr": "#track-sizing", + "dev": "#track-sizing" + }, + "tests": [ + "none", "auto", "100px", "1fr", "100px 1fr auto", + "repeat(2, 100px 1fr)", + "repeat(4, 10px [col-start] 250px [col-end]) 10px", + "100px 1fr max-content minmax(min-content, 1fr)", + "repeat(auto-fill, minmax(25ch, 1fr))", + "10px [col-start] 250px [col-end]", + "[first nav-start] 150px [main-start] 1fr [last]", + "10px [col-start] 250px [col-end] 10px [col-start] 250px [col-end] 10px", + "[a] auto [b] minmax(min-content, 1fr) [b c d] repeat(2, [e] 40px) repeat(5, auto)" + ] + }, + "grid-template-rows": { + "links": { + "tr": "#track-sizing", + "dev": "#track-sizing" + }, + "tests": [ + "none", "auto", "100px", "1fr", "100px 1fr auto", + "repeat(2, 100px 1fr)", + "100px 1fr max-content minmax(min-content, 1fr)", + "10px [row-start] 250px [row-end]", + "[first header-start] 50px [main-start] 1fr [footer-start] 50px [last]" + ] + }, + "grid-template-areas": { + "links": { + "tr": "#grid-template-areas-property", + "dev": "#grid-template-areas-property" + }, + "tests": ["none", "'articles'", "'head head'", "'head head' 'nav main' 'foot ....'"] + }, + "grid-template": { + "links": { + "tr": "#explicit-grid-shorthand", + "dev": "#explicit-grid-shorthand" + }, + "tests": ["none", "auto 1fr auto / auto 1fr", "[header-top] 'a a a' [header-bottom] [main-top] 'b b b' 1fr [main-bottom] / auto 1fr auto"] + }, + "grid-auto-columns": { + "links": { + "tr": "#auto-tracks", + "dev": "#auto-tracks" + }, + "tests": [ + "auto", "1fr", "100px", "max-content", "minmax(min-content, 1fr)", "min-content max-content auto", + "100px 150px 390px", "100px minmax(100px, auto) 10% 0.5fr fit-content(400px)" + ] + }, + "grid-auto-rows": { + "links": { + "tr": "#auto-tracks", + "dev": "#auto-tracks" + }, + "tests": [ + "auto", "1fr", "100px", "100px 30%", "100px 30% 1em", "min-content", "minmax(min-content, 1fr)", + "min-content max-content auto", "100px minmax(100px, auto) 10% 0.5fr fit-content(400px)" + ] + }, + "grid-auto-flow": { + "links": { + "tr": "#grid-auto-flow-property", + "dev": "#grid-auto-flow-property" + }, + "tests": ["row", "column", "row dense", "column dense"] + }, + "grid": { + "links": { + "tr": "#grid-shorthand", + "dev": "#grid-shorthand" + }, + "tests": [ + "auto-flow 1fr / 100px", + "none / auto-flow 1fr", + "auto-flow / auto 1fr", + "repeat(auto-fill, 5em) / auto-flow 1fr", + " auto-flow 1fr / repeat(auto-fill, 5em)", + "'H H ' 'A B ' 'F F ' 30px / auto 1fr" + ] + }, + "grid-row-start": { + "links": { + "tr": "#line-placement", + "dev": "#line-placement" + }, + "tests": ["auto", "4", "C", "C 2", "span C", "span 1"] + }, + "grid-column-start": { + "links": { + "tr": "#line-placement", + "dev": "#line-placement" + }, + "tests": ["auto", "4", "C", "C 2", "span C", "span 1"] + }, + "grid-row-end": { + "links": { + "tr": "#line-placement", + "dev": "#line-placement" + }, + "tests": ["auto", "4", "C", "C 2", "span C", "span 1"] + }, + "grid-column-end": { + "links": { + "tr": "#line-placement", + "dev": "#line-placement" + }, + "tests": ["auto", "4", "C", "C 2", "span C", "span 1"] + }, + "grid-column": { + "links": { + "tr": "#placement-shorthands", + "dev": "#placement-shorthands" + }, + "tests": ["auto", "1", "-1", "1 / 1", "1 / -1", "auto / auto", "2 / span 2"] + }, + "grid-row": { + "links": { + "tr": "#placement-shorthands", + "dev": "#placement-shorthands" + }, + "tests": ["auto", "1", "-1", "1 / 1", "1 / -1", "auto / auto", "2 / span 2"] + }, + "grid-area": { + "links": { + "tr": "#placement-shorthands", + "dev": "#placement-shorthands" + }, + "tests": ["1 / 1", "1 / span 1", "span / 10 / -1"] + }, + "grid-column-gap": { + "links": { + "tr": "#gutters", + "dev": "#gutters" + }, + "tests": ["0", "1em"] + }, + "grid-row-gap": { + "links": { + "tr": "#gutters", + "dev": "#gutters" + }, + "tests": ["0", "1em"] + }, + "grid-gap": { + "links": { + "tr": "#gutters", + "dev": "#gutters" + }, + "tests": ["0 0", "0 1em", "1em", "1em 1em"] + } + } +}; diff --git a/tests/css-grid-2.js b/tests/css-grid-2.js new file mode 100644 index 00000000..0e0c884c --- /dev/null +++ b/tests/css-grid-2.js @@ -0,0 +1,43 @@ +export default { + "title": "CSS Grid Layout Module Level 2", + "links": { + "tr": "css-grid-2", + "dev": "css-grid-2", + "mdn": "Glossary/Grid" + }, + "status": { + "stability": "stable" + }, + "properties": { + "grid-template-columns": { + "links": { + "tr": "#subgrid-per-axis", + "dev": "#subgrid-per-axis" + }, + "tests": [ + "subgrid", + "subgrid [sub-a]", + "subgrid [sub-a] [sub-b]", + "subgrid repeat(1, [sub-a])", + "subgrid repeat(2, [sub-a] [sub-b]) [sub-c]", + "subgrid repeat(auto-fill, [sub-a] [sub-b])", + "subgrid [sub-a] repeat(auto-fill, [sub-b] [sub-c] [sub-d]) [sub-e] repeat(1, [sub-g])" + ] + }, + "grid-template-rows": { + "links": { + "tr": "#subgrid-per-axis", + "dev": "#subgrid-per-axis" + }, + "tests": [ + "subgrid", + "subgrid [sub-a]", + "subgrid [sub-a] [sub-b]", + "subgrid repeat(1, [sub-a])", + "subgrid repeat(2, [sub-a] [sub-b]) [sub-c]", + "subgrid repeat(auto-fill, [sub-a] [sub-b])", + "subgrid [sub-a] repeat(auto-fill, [sub-b] [sub-c] [sub-d]) [sub-e] repeat(1, [sub-g])" + ] + } + } +}; diff --git a/tests/css-grid-3.js b/tests/css-grid-3.js new file mode 100644 index 00000000..ffe6fc02 --- /dev/null +++ b/tests/css-grid-3.js @@ -0,0 +1,56 @@ +export default { + "title": "CSS Grid Layout Module Level 3", + "links": { + "dev": "css-grid-3", + }, + "status": { + "stability": "experimental" + }, + "properties": { + "grid-template-columns": { + "links": { + "dev": "#masonry-layout" + }, + "tests": ["masonry"] + }, + "grid-template-rows": { + "links": { + "dev": "#masonry-layout" + }, + "tests": ["masonry "] + }, + "masonry-auto-flow": { + "links": { + "dev": "#masonry-auto-flow" + }, + "tests": [ + "pack", "next", "definite-first", "ordered", + "pack definite-first", "pack ordered", "next definite-first", "next ordered", + "ordered pack", + ] + }, + "align-tracks": { + "links": { + "dev": "#tracks-alignment" + }, + "tests": [ + "normal", + "baseline", "first baseline", "last baseline", + "space-between", "space-around", "space-evenly", "stretch", + "center", "start", "end", "flex-start", "flex-end", + "unsafe center", "safe start" + ] + }, + "justify-tracks": { + "links": { + "dev": "#tracks-alignment" + }, + "tests": [ + "normal", + "space-between", "space-around", "space-evenly", "stretch", + "center", "start", "end", "flex-start", "flex-end", "left", "right", + "unsafe center", "safe start" + ] + } + } +}; diff --git a/tests/css-highlight-api-1.js b/tests/css-highlight-api-1.js new file mode 100644 index 00000000..840161a5 --- /dev/null +++ b/tests/css-highlight-api-1.js @@ -0,0 +1,19 @@ +export default { + "title": "CSS Custom Highlight API Module Level 1", + "links": { + "tr": "css-highlight-api-1", + "dev": "css-highlight-api-1" + }, + "status": { + "stability": "experimental" + }, + "selectors": { + '::highlight()' : { + "links": { + "tr": "#custom-highlight-pseudo", + "dev": "#custom-highlight-pseudo" + }, + "tests": ['::highlight(example-highlight)'] + } + } +}; diff --git a/tests/css-images-3.js b/tests/css-images-3.js new file mode 100644 index 00000000..82402716 --- /dev/null +++ b/tests/css-images-3.js @@ -0,0 +1,101 @@ +export default { + "title": "CSS Images Module Level 3", + "links": { + "tr": "css3-images", + "dev": "css-images-3" + }, + "status": { + "stability": "stable", + "first-snapshot": 2015 + }, + "values": { + "properties": [ + "background-image", + "list-style-image", + "border-image", + "cursor", + "content" + ], + "linear-gradient()": { + "links": { + "tr": "#linear-gradients", + "dev": "#linear-gradients" + }, + "tests": [ + "linear-gradient(white, black)", + "linear-gradient(to right, white, black)", + "linear-gradient(45deg, white, black)", + "linear-gradient(white 50%, black)", + "linear-gradient(white 5px, black)", + "linear-gradient(white, #f06, black)", + "linear-gradient(currentColor, black)", + "linear-gradient(red -50px, white calc(-25px + 50%), blue 100%)" + ] + }, + "radial-gradient()": { + "links": { + "tr": "#radial-gradients", + "dev": "#radial-gradients" + }, + "tests": [ + "radial-gradient(white, black)", + "radial-gradient(circle, white, black)", + "radial-gradient(ellipse, white, black)", + "radial-gradient(closest-corner, white, black)", + "radial-gradient(circle closest-corner, white, black)", + "radial-gradient(farthest-side, white, black)", + "radial-gradient(circle farthest-side, white, black)", + "radial-gradient(50%, white, black)", + "radial-gradient(60% 60%, white, black)"/*, + "radial-gradient(at 60% 60%, white, black)", + "radial-gradient(30% 30% at 20% 20%, white, black)", + "radial-gradient(5em circle at top left, yellow, blue)", + "radial-gradient(circle farthest-side at top left, white, black)"*/ + ] + }, + "repeating-linear-gradient()": { + "links": { + "tr": "#repeating-gradients", + "dev": "#repeating-gradients" + }, + "tests": "repeating-linear-gradient(white, black)" + }, + "repeating-radial-gradient()": { + "links": { + "tr": "#repeating-gradients", + "dev": "#repeating-gradients" + }, + "tests": "repeating-radial-gradient(white, black)" + }, + }, + "properties": { + "object-fit": { + "links": { + "tr": "#object-fit", + "dev": "#the-object-fit" + }, + "tests": ["fill", "contain", "cover", "none", "scale-down"] + }, + "object-position": { + "links": { + "tr": "#object-position", + "dev": "#the-object-position" + }, + "tests": ["50% 50%", "center", "top right", "bottom 10px right 20px"] + }, + "image-orientation": { + "links": { + "tr": "#image-orientation", + "dev": "#the-image-orientation" + }, + "tests": ["from-image", "0deg", "90deg", "45deg", "45deg flip", "1turn", "100grad", "2rad"] + }, + "image-rendering": { + "links": { + "tr": "#the-image-rendering", + "dev": "#the-image-rendering" + }, + "tests": ["auto", "smooth", "high-quality", "crisp-edges", "pixelated"] + }, + } +}; diff --git a/tests/css-images-4.js b/tests/css-images-4.js new file mode 100644 index 00000000..0856e6c2 --- /dev/null +++ b/tests/css-images-4.js @@ -0,0 +1,123 @@ +export default { + "title": "CSS Images Module Level 4", + "links": { + "tr": "css-images-4", + "dev": "css-images-4" + }, + "status": { + "stability": "experimental" + }, + "values": { + "properties": [ + "background-image", + "list-style-image", + "border-image", + "cursor", + "content" + ], + "linear-gradient()": { + "links": { + "tr": "#linear-gradients", + "dev": "#linear-gradients" + }, + "tests": [ + "linear-gradient(45deg, #f06 25%, yellow 25% 50%, #f06 50% 75%, yellow 75%)" + ] + }, + "radial-gradient()": { + "links": { + "tr": "#radial-gradients", + "dev": "#radial-gradients" + }, + "tests": [ + "radial-gradient(center, red 0% 25%, blue 25% 75%, red 75% 100%)" + ] + }, + "conic-gradient()": { + "links": { + "tr": "#conic-gradients", + "dev": "#conic-gradients" + }, + "tests": [ + "conic-gradient(white, black)", + "conic-gradient(from 5deg, white, black)", + "conic-gradient(at top left, white, black)", + "conic-gradient(white 50%, black)", + "conic-gradient(white 5deg, black)", + "conic-gradient(white, #f06, black)", + "conic-gradient(currentColor, black)", + "conic-gradient(black 25%, white 0deg 50%, black 0deg 75%, white 0deg)" + ] + }, + "repeating-conic-gradient()": { + "links": { + "tr": "#repeating-gradients", + "dev": "#repeating-gradients" + }, + "tests": [ + "repeating-conic-gradient(white, black)", + "repeating-conic-gradient(hsla(0, 0%, 100%, .2) 0deg 15deg, hsla(0, 0%, 100%, 0) 0deg 30deg)" + ] + }, + "image()": { + "links": { + "tr": "#image-notation", + "dev": "#image-notation" + }, + "tests": [ + "image('sprites.png#xywh=10,30,60,20')", + "image('wavy.svg', 'wavy.png' , 'wavy.gif')", + "image('dark.png', black)", + "image(green)" + ] + }, + "image-set()": { + "links": { + "tr": "#image-set-notation", + "dev": "#image-set-notation" + }, + "tests": [ + "image-set('foo.png' 1x, 'foo-2x.png' 2x, 'foo-print.png' 600dpi)", + "image-set(linear-gradient(green, green) 1x, url(foobar.png) 2x)", + "image-set(linear-gradient(red, red), url(foobar.png) 2x)", + "image-set(url(foobar.png) 2x)", + "image-set(url(foobar.png) 1x, url(bar.png) 2x, url(baz.png) 3x)", + "image-set('foobar.png', 'bar.png' 2x, url(baz.png) 3x)", + "image-set(image-set('foobar.png', 'bar.png' 2x) 1x, url(baz.png) 3x)", + "image-set(url(foobar.png) type('image/png'))", + "image-set(url(foobar.png) 1x type('image/png'))", + "image-set(url(foobar.png) type('image/png') 1x)" + ] + }, + "element()": { + "links": { + "tr": "#element-notation", + "dev": "#element-notation" + }, + "tests": "element(#foo)" + }, + "cross-fade()": { + "links": { + "tr": "#cross-fade-function", + "dev": "#cross-fade-function" + }, + "tests": [ + "cross-fade(url(a.png), url(b.png))", + "cross-fade(url(a.png) 50%, url(b.png))", + "cross-fade(url(a.png) 50%, white)" + ] + } + }, + "properties": { + "image-resolution": { + "links": { + "tr": "#the-image-resolution", + "dev": "#the-image-resolution" + }, + "tests": [ + "from-image", "from-image snap", "snap from-image", + "1dppx", "1dpcm", "300dpi", "from-image 300dpi", "300dpi from-image", "300dpi from-image snap" + ] + } + } +}; diff --git a/tests/css-inline-3.js b/tests/css-inline-3.js new file mode 100644 index 00000000..952f10f1 --- /dev/null +++ b/tests/css-inline-3.js @@ -0,0 +1,103 @@ +export default { + "title": "CSS Inline Layout Module Level 3", + "links": { + "dev": "css-inline-3", + "tr": "css-inline-3", + }, + "status": { + "stability": "experimental" + }, + "properties": { + "alignment-baseline": { + "links": { + "dev": "#alignment-baseline-property", + "tr": "#alignment-baseline-property" + }, + "tests": [ + "baseline", "text-bottom", "alphabetic", "ideographic", "middle", + "central", "mathematical", "text-top" + ] + }, + "baseline-shift": { + "links": { + "dev": "#baseline-shift-property", + "tr": "#baseline-shift-property" + }, + "tests": ["5px", "10%", "sub", "super", "top", "center", "bottom"] + }, + "baseline-source": { + "links": { + "dev": "#baseline-source", + "tr": "#baseline-source" + }, + "tests": ["auto", "first", "last"] + }, + "dominant-baseline": { + "links": { + "dev": "#dominant-baseline-property", + "tr": "#dominant-baseline-property" + }, + "tests": [ + "auto", "text-bottom", "alphabetic", "ideographic", "middle", + "central", "mathematical", "hanging", "text-top" + ] + }, + "initial-letter": { + "links": { + "dev": "#sizing-drop-initials", + "tr": "#sizing-drop-initials" + }, + "tests": ["normal", "1.4 3", "1.4", "1.4 drop", "1.4 raise"] + }, + "initial-letter-align": { + "links": { + "dev": "#aligning-initial-letter", + "tr": "#aligning-initial-letter" + }, + "tests": [ + "border-box", "alphabetic", "ideographic", "hanging", "leading", + "border-box alphabetic" + ] + }, + "initial-letter-wrap": { + "links": { + "dev": "#initial-letter-wrapping", + "tr": "#initial-letter-wrapping" + }, + "tests": ["none", "first", "all", "grid", "30px", "10%"] + }, + "inline-sizing": { + "links": { + "dev": "#line-fill", + "tr": "#line-fill" + }, + "tests": ["normal", "stretch"] + }, + "leading-trim": { + "links": { + "dev": "#leading-trim", + "tr": "#leading-trim" + }, + "tests": ["normal", "start", "end", "both"] + }, + "text-edge": { + "links": { + "dev": "#text-edges", + "tr": "#text-edges" + }, + "tests": [ + "leading", "text", "cap", "ex", "ideographic", "ideographic-ink", + "text alphabetic", "cap ideographic-ink" + ] + }, + "vertical-align": { + "links": { + "dev": "#transverse-alignment", + "tr": "#transverse-alignment" + }, + "tests": [ + "first", "last", "first text-bottom", "last sub", "super text-bottom first" + ] + } + } +}; diff --git a/tests/css-layout-api-1.js b/tests/css-layout-api-1.js new file mode 100644 index 00000000..0d69284c --- /dev/null +++ b/tests/css-layout-api-1.js @@ -0,0 +1,20 @@ +export default { + "title": "CSS Layout API Level 1", + "links": { + "tr": "css-layout-api-1", + "dev": "css-layout-api-1", + "devtype": "houdini" + }, + "status": { + "stability": "experimental" + }, + "properties": { + "display": { + "links": { + "tr": "#layout-api-containers", + "dev": "#layout-api-containers" + }, + "tests": "layout(foo)" + } + } +}; diff --git a/tests/css-line-grid-1.js b/tests/css-line-grid-1.js new file mode 100644 index 00000000..835886dd --- /dev/null +++ b/tests/css-line-grid-1.js @@ -0,0 +1,33 @@ +export default { + "title": "CSS Line Grid Module Level 1", + "links": { + "tr": "css-line-grid-1", + "dev": "css-line-grid-1" + }, + "status": { + "stability": "experimental" + }, + "properties": { + "box-snap": { + "links": { + "tr": "#box-snap", + "dev": "#box-snap" + }, + "tests": ["none", "block-start", "block-end", "center", "baseline", "last-baseline"] + }, + "line-grid": { + "links": { + "tr": "#line-grid", + "dev": "#line-grid" + }, + "tests": ["match-parent", "create"] + }, + "line-snap": { + "links": { + "tr": "#line-snap", + "dev": "#line-snap" + }, + "tests": ["none", "baseline", "contain"] + } + } +}; diff --git a/tests/css-lists-3.js b/tests/css-lists-3.js new file mode 100644 index 00000000..0783051a --- /dev/null +++ b/tests/css-lists-3.js @@ -0,0 +1,102 @@ +export default { + "title": "CSS Lists Module Level 3", + "links": { + "tr": "css-lists-3", + "dev": "css-lists-3" + }, + "status": { + "stability": "stable" + }, + "properties": { + "list-style-type": { + "links": { + "tr": "#text-markers", + "dev": "#text-markers" + }, + "tests": [ + "disclosure-closed", "disclosure-open", + "hebrew", + "cjk-decimal", "cjk-ideographic", + "hiragana", "katakana", "hiragana-iroha", "katakana-iroha", + "japanese-informal", "japanese-formal", "korean-hangul-formal", + "korean-hanja-informal", "korean-hanja-formal", + "simp-chinese-informal", "simp-chinese-formal", + "trad-chinese-informal", "trad-chinese-formal", + "cjk-heavenly-stem", "cjk-earthly-branch", + "trad-chinese-informal", "trad-chinese-formal", + "simp-chinese-informal", "simp-chinese-formal", + "japanese-informal", "japanese-formal", + "arabic-indic", "persian", "urdu", + "devanagari", "gurmukhi", "gujarati", + "oriya", "kannada", "malayalam", "bengali", + "tamil", "telugu", "thai", "lao", + "myanmar", "khmer", + "hangul", "hangul-consonant", + "ethiopic-halehame", "ethiopic-numeric", + "ethiopic-halehame-am", + "ethiopic-halehame-ti-er", "ethiopic-halehame-ti-et", + "other-style", "inside", "outside", "\\32 style", + '"-"', "'-'", + "symbols(\"*\" \"\\2020\" \"\\2021\" \"\\A7\")", + "symbols(cyclic '*' '\\2020' '\\2021' '\\A7')" + ] + }, + "marker-side": { + "links": { + "tr": "#marker-side", + "dev": "#marker-side" + }, + "tests": ["match-self", "match-parent"] + }, + "counter-reset": { + "links": { + "tr": "#counter-reset", + "dev": "#counter-reset" + }, + "tests": [ + "none", + "foo", + "foo 1", + "foo -3", + "foo 1 bar", + "foo 1 bar 2", + "list-item", + "list-item 1", + "list-item 1 bar 2", + "reversed(foo)", + "reversed(foo) -3", + "reversed(list-item)", + "reversed(foo1) 1 foo2 9 reversed(foo3) 4" + ] + }, + "counter-set": { + "links": { + "tr": "#increment-set", + "dev": "#increment-set" + }, + "tests": ["foo", "foo 1", "foo 1 bar", "foo 1 bar 2", "none"] + }, + "counter-increment": { + "links": { + "tr": "#increment-set", + "dev": "#increment-set" + }, + "tests": ["foo", "foo 1", "foo 1 bar", "foo 1 bar 2", "none"] + }, + "content": { + "links": { + "tr": "#counter-functions", + "dev": "#counter-functions" + }, + "tests": [ + "counter(chno, upper-latin) '. '", + "counter(section, upper-roman) ' - '", + "' [' counter(bq, decimal) ']'", + "counter(notecntr, disc) ' '", + "counter(p, none)", + "counter(h1, upper-alpha) '.' counter(h2, decimal) ' '", + "'(' counters(list-item, '.') ') '" + ] + } + } +}; diff --git a/tests/css-logical-1.js b/tests/css-logical-1.js new file mode 100644 index 00000000..1821858d --- /dev/null +++ b/tests/css-logical-1.js @@ -0,0 +1,460 @@ +export default { + "title": "CSS Logical Properties and Values Level 1", + "links": { + "tr": "css-logical-1", + "dev": "css-logical-1" + }, + "status": { + "stability": "stable" + }, + "properties": { + "caption-side": { + "links": { + "tr": "#caption-side", + "dev": "#caption-side" + }, + "tests": ["inline-start", "inline-end"] + }, + "float": { + "links": { + "tr": "#float-clear", + "dev": "#float-clear" + }, + "tests": ["inline-start", "inline-end"] + }, + "clear": { + "links": { + "tr": "#float-clear", + "dev": "#float-clear" + }, + "tests": ["inline-start", "inline-end"] + }, + "text-align": { + "links": { + "tr": "#text-align", + "dev": "#text-align" + }, + "tests": ["start", "end"] + }, + "resize": { + "links": { + "tr": "#resize", + "dev": "#resize" + }, + "tests": ["block", "inline"] + }, + "block-size": { + "links": { + "tr": "#dimension-properties", + "dev": "#dimension-properties" + }, + "tests": ["100px"] + }, + "inline-size": { + "links": { + "tr": "#dimension-properties", + "dev": "#dimension-properties" + }, + "tests": ["100px"] + }, + "min-block-size": { + "links": { + "tr": "#dimension-properties", + "dev": "#dimension-properties" + }, + "tests": ["100px"] + }, + "min-inline-size": { + "links": { + "tr": "#dimension-properties", + "dev": "#dimension-properties" + }, + "tests": ["100px"] + }, + "max-block-size": { + "links": { + "tr": "#dimension-properties", + "dev": "#dimension-properties" + }, + "tests": ["100px"] + }, + "max-inline-size": { + "links": { + "tr": "#dimension-properties", + "dev": "#dimension-properties" + }, + "tests": ["100px"] + }, + "margin-block": { + "links": { + "tr": "#margin-properties", + "dev": "#margin-properties" + }, + "tests": ["10px", "10px 10px"] + }, + "margin-block-start": { + "links": { + "tr": "#margin-properties", + "dev": "#margin-properties" + }, + "tests": ["10px"] + }, + "margin-block-end": { + "links": { + "tr": "#margin-properties", + "dev": "#margin-properties" + }, + "tests": ["10px"] + }, + "margin-inline": { + "links": { + "tr": "#margin-properties", + "dev": "#margin-properties" + }, + "tests": ["10px", "10px 10px"] + }, + "margin-inline-start": { + "links": { + "tr": "#margin-properties", + "dev": "#margin-properties" + }, + "tests": ["10px"] + }, + "margin-inline-end": { + "links": { + "tr": "#margin-properties", + "dev": "#margin-properties" + }, + "tests": ["10px"] + }, + "inset": { + "links": { + "tr": "#inset-properties", + "dev": "#inset-properties" + }, + "tests": ["10px", "10px 10px", "10px 10px 10px", "10px 10px 10px 10px"] + }, + "inset-block": { + "links": { + "tr": "#inset-properties", + "dev": "#inset-properties" + }, + "tests": ["10px", "10px 10px"] + }, + "inset-block-start": { + "links": { + "tr": "#inset-properties", + "dev": "#inset-properties" + }, + "tests": ["10px"] + }, + "inset-block-end": { + "links": { + "tr": "#inset-properties", + "dev": "#inset-properties" + }, + "tests": ["10px"] + }, + "inset-inline": { + "links": { + "tr": "#inset-properties", + "dev": "#inset-properties" + }, + "tests": ["10px", "10px 10px"] + }, + "inset-inline-start": { + "links": { + "tr": "#inset-properties", + "dev": "#inset-properties" + }, + "tests": ["10px"] + }, + "inset-inline-end": { + "links": { + "tr": "#inset-properties", + "dev": "#inset-properties" + }, + "tests": ["10px"] + }, + "padding-block": { + "links": { + "tr": "#padding-properties", + "dev": "#padding-properties" + }, + "tests": ["10px", "10px 10px"] + }, + "padding-block-start": { + "links": { + "tr": "#padding-properties", + "dev": "#padding-properties" + }, + "tests": ["10px"] + }, + "padding-block-end": { + "links": { + "tr": "#padding-properties", + "dev": "#padding-properties" + }, + "tests": ["10px"] + }, + "padding-inline": { + "links": { + "tr": "#padding-properties", + "dev": "#padding-properties" + }, + "tests": ["10px", "10px 10px"] + }, + "padding-inline-start": { + "links": { + "tr": "#padding-properties", + "dev": "#padding-properties" + }, + "tests": ["10px"] + }, + "padding-inline-end": { + "links": { + "tr": "#padding-properties", + "dev": "#padding-properties" + }, + "tests": ["10px"] + }, + "border-block": { + "links": { + "tr": "#border-shorthands", + "dev": "#border-shorthands" + }, + "tests": ["1px", "2px dotted", "medium dashed green"] + }, + "border-block-start": { + "links": { + "tr": "#border-shorthands", + "dev": "#border-shorthands" + }, + "tests": ["1px", "2px dotted", "medium dashed green"] + }, + "border-block-start-width": { + "links": { + "tr": "#border-width", + "dev": "#border-width" + }, + "tests": ["thin"] + }, + "border-block-start-width": { + "links": { + "tr": "#border-width", + "dev": "#border-width" + }, + "tests": ["thin"] + }, + "border-block-start-style": { + "links": { + "tr": "#border-style", + "dev": "#border-style" + }, + "tests": ["dotted"] + }, + "border-block-start-color": { + "links": { + "tr": "#border-color", + "dev": "#border-color" + }, + "tests": ["navy"] + }, + "border-block-end": { + "links": { + "tr": "#border-shorthands", + "dev": "#border-shorthands" + }, + "tests": ["1px", "2px dotted", "medium dashed green"] + }, + "border-block-end-width": { + "links": { + "tr": "#border-width", + "dev": "#border-width" + }, + "tests": ["thin"] + }, + "border-block-end-style": { + "links": { + "tr": "#border-style", + "dev": "#border-style" + }, + "tests": ["dotted"] + }, + "border-block-end-color": { + "links": { + "tr": "#border-color", + "dev": "#border-color" + }, + "tests": ["navy"] + }, + "border-block-width": { + "links": { + "tr": "#border-width", + "dev": "#border-width" + }, + "tests": ["thin 2px"] + }, + "border-block-style": { + "links": { + "tr": "#border-style", + "dev": "#border-style" + }, + "tests": ["dotted dashed"] + }, + "border-block-color": { + "links": { + "tr": "#border-color", + "dev": "#border-color" + }, + "tests": ["navy blue"] + }, + "border-inline": { + "links": { + "tr": "#border-shorthands", + "dev": "#border-shorthands" + }, + "tests": ["1px", "2px dotted", "medium dashed green"] + }, + "border-inline-start": { + "links": { + "tr": "#border-shorthands", + "dev": "#border-shorthands" + }, + "tests": ["1px", "2px dotted", "medium dashed green"] + }, + "border-inline-start-width": { + "links": { + "tr": "#border-width", + "dev": "#border-width" + }, + "tests": ["thin"] + }, + "border-inline-start-style": { + "links": { + "tr": "#border-style", + "dev": "#border-style" + }, + "tests": ["dotted"] + }, + "border-inline-start-color": { + "links": { + "tr": "#border-color", + "dev": "#border-color" + }, + "tests": ["navy"] + }, + "border-inline-end": { + "links": { + "tr": "#border-shorthands", + "dev": "#border-shorthands" + }, + "tests": ["1px", "2px dotted", "medium dashed green"] + }, + "border-inline-end-width": { + "links": { + "tr": "#border-width", + "dev": "#border-width" + }, + "tests": ["thin"] + }, + "border-inline-end-style": { + "links": { + "tr": "#border-style", + "dev": "#border-style" + }, + "tests": ["dotted"] + }, + "border-inline-end-color": { + "links": { + "tr": "#border-color", + "dev": "#border-color" + }, + "tests": ["navy"] + }, + "border-inline-width": { + "links": { + "tr": "#border-width", + "dev": "#border-width" + }, + "tests": ["thin 2px"] + }, + "border-inline-style": { + "links": { + "tr": "#border-style", + "dev": "#border-style" + }, + "tests": ["dotted dashed"] + }, + "border-inline-color": { + "links": { + "tr": "#border-color", + "dev": "#border-color" + }, + "tests": ["navy blue"] + }, + "border-start-start-radius": { + "links": { + "tr": "#border-radius-shorthands", + "dev": "#border-radius-properties" + }, + "tests": ["0", "50%", "250px 100px"] + }, + "border-start-end-radius": { + "links": { + "tr": "#border-radius-shorthands", + "dev": "#border-radius-properties" + }, + "tests": ["0", "50%", "250px 100px"] + }, + "border-end-start-radius": { + "links": { + "tr": "#border-radius-shorthands", + "dev": "#border-radius-properties" + }, + "tests": ["0", "50%", "250px 100px"] + }, + "border-end-end-radius": { + "links": { + "tr": "#border-radius-shorthands", + "dev": "#border-radius-properties" + }, + "tests": ["0", "50%", "250px 100px"] + }, + "margin": { + "links": { + "tr": "#logical-shorthand-keyword", + "dev": "#logical-shorthand-keyword" + }, + "tests": ["logical 5px 10px 15px 20px"] + }, + "padding": { + "links": { + "tr": "#logical-shorthand-keyword", + "dev": "#logical-shorthand-keyword" + }, + "tests": ["logical 5px 10px 15px 20px"] + }, + "border-color": { + "links": { + "tr": "#logical-shorthand-keyword", + "dev": "#logical-shorthand-keyword" + }, + "tests": ["logical red green blue yellow"] + }, + "border-style": { + "links": { + "tr": "#logical-shorthand-keyword", + "dev": "#logical-shorthand-keyword" + }, + "tests": ["logical solid dotted dashed none"] + }, + "border-width": { + "links": { + "tr": "#logical-shorthand-keyword", + "dev": "#logical-shorthand-keyword" + }, + "tests": ["logical 5px 10px 15px 20px"] + } + } +}; diff --git a/tests/css-masking-1.js b/tests/css-masking-1.js new file mode 100644 index 00000000..edcaf44e --- /dev/null +++ b/tests/css-masking-1.js @@ -0,0 +1,174 @@ +export default { + "title": "CSS Masking Module Level 1", + "links": { + "tr": "css-masking-1", + "dev": "css-masking-1", + "devtype": "fxtf" + }, + "status": { + "stability": "stable" + }, + "properties": { + "clip-path": { + "links": { + "tr": "#the-clip-path", + "dev": "#the-clip-path" + }, + "tests": [ + "url('#clip')", + "inset(50%)", + "circle()", + "ellipse()", + "polygon(0 10px, 30px 0)", + "path('M 20 20 H 80 V 30')", + "circle() border-box", + "border-box", + "padding-box", + "content-box", + "margin-box", + "fill-box", + "stroke-box", + "view-box", + "none" + ] + }, + "clip-rule": { + "links": { + "tr": "#the-clip-rule", + "dev": "#the-clip-rule" + }, + "tests": ["nonzero", "evenodd"] + }, + "mask-image": { + "links": { + "tr": "#the-mask-image", + "dev": "#the-mask-image" + }, + "tests": ["none", "linear-gradient(black 0%, transparent 100%)", "url(image.png)"] + }, + "mask-mode": { + "links": { + "tr": "#the-mask-mode", + "dev": "#the-mask-mode" + }, + "tests": ["alpha", "luminance", "match-source"] + }, + "mask-repeat": { + "links": { + "tr": "#the-mask-repeat", + "dev": "#the-mask-repeat" + }, + "tests": [ + "repeat-x", "repeat-y", "repeat", "space", "round", "no-repeat", "repeat repeat", + "space repeat", "round repeat", "no-repeat repeat", "repeat space", "space space", + "round space", "no-repeat space", "repeat round", "space round", "round round", + "no-repeat round", "repeat no-repeat", "space no-repeat", "round no-repeat", + "no-repeat no-repeat" + ] + }, + "mask-position": { + "links": { + "tr": "#the-mask-position", + "dev": "#the-mask-position" + }, + "tests": ["center", "left 50%", "bottom 10px right 20px", "bottom 10px right", "top right 10px"] + }, + "mask-clip": { + "links": { + "tr": "#the-mask-clip", + "dev": "#the-mask-clip" + }, + "tests": ["border-box", "padding-box", "content-box", "margin-box", "fill-box", "stroke-box", "view-box", "no-clip"] + }, + "mask-origin": { + "links": { + "tr": "#the-mask-origin", + "dev": "#the-mask-origin" + }, + "tests": ["border-box", "padding-box", "content-box", "margin-box", "fill-box", "stroke-box", "view-box"] + }, + "mask-size": { + "links": { + "tr": "#the-mask-size", + "dev": "#the-mask-size" + }, + "tests": ["auto", "10px", "cover", "contain", "10px", "50%", "10px auto", "auto 10%", "50em 50%"] + }, + "mask-composite": { + "links": { + "tr": "#the-mask-composite", + "dev": "#the-mask-composite" + }, + "tests": ["add", "subtract", "intersect", "exclude"] + }, + "mask": { + "links": { + "tr": "#the-mask", + "dev": "#the-mask" + }, + "tests": ["top", "space", "url(image.png)", "url(image.png) luminance", "url(image.png) luminance top space"] + }, + "mask-border-source": { + "links": { + "tr": "#the-mask-border-source", + "dev": "#the-mask-border-source" + }, + "tests": ["none", "url(image.png)"] + }, + "mask-border-slice": { + "links": { + "tr": "#the-mask-border-slice", + "dev": "#the-mask-border-slice" + }, + "tests": ["0 fill", "50% fill", "1.1 fill", "0 1 fill", "0 1 2 fill", "0 1 2 3 fill"] + }, + "mask-border-width": { + "links": { + "tr": "#the-mask-border-width", + "dev": "#the-mask-border-width" + }, + "tests": ["auto", "10px", "50%", "1", "1.0", "auto 1", "auto 1 50%", "auto 1 50% 1.1"] + }, + "mask-border-outset": { + "links": { + "tr": "#the-mask-border-outset", + "dev": "#the-mask-border-outset" + }, + "tests": ["0", "1.1", "0 1", "0 1 2", "0 1 2 3"] + }, + "mask-border-repeat": { + "links": { + "tr": "#the-mask-border-repeat", + "dev": "#the-mask-border-repeat" + }, + "tests": [ + "stretch", "repeat", "round", "space", "stretch stretch", "repeat stretch", + "round stretch", "space stretch", "stretch repeat", "repeat repeat", + "round repeat", "space repeat", "stretch round", "repeat round", "round round", + "space round", "stretch space", "repeat space", "round space", "space space" + ] + }, + "mask-border": { + "links": { + "tr": "#the-mask-border", + "dev": "#the-mask-border" + }, + "tests": [ + "url(image.png)", + "url(image.png) 10px", + "url(image.png) space", + "url(image.png) 1 fill", + "url(image.png) 1 fill 10px", + "url(image.png) 1 fill 10px", + "url(image.png) 1 fill 10px 2" + ] + }, + "mask-type": { + "links": { + "tr": "#the-mask-type", + "dev": "#the-mask-type" + }, + "tests": ["luminance", "alpha"] + } + } +}; diff --git a/tests/css-multicol-1.js b/tests/css-multicol-1.js new file mode 100644 index 00000000..da3d3de4 --- /dev/null +++ b/tests/css-multicol-1.js @@ -0,0 +1,76 @@ +export default { + "title": "CSS Multi-column Layout Module Level 1", + "links": { + "tr": "css-multicol-1", + "dev": "css-multicol-1" + }, + "status": { + "stability": "stable", + "first-snapshot": 2015 + }, + "properties": { + "column-width": { + "links": { + "tr": "#cw", + "dev": "#cw" + }, + "tests": ["10em", "auto"] + }, + "column-count": { + "links": { + "tr": "#cc", + "dev": "#cc" + }, + "tests": ["2", "auto"] + }, + "columns": { + "links": { + "tr": "#columns", + "dev": "#columns" + }, + "tests": ["100px", "3", "10em 2", "auto 2", "10em auto", "auto auto", "2 10em", "auto 10em", "2 auto"] + }, + "column-rule-color": { + "links": { + "tr": "#crc", + "dev": "#crc" + }, + "tests": "red" + }, + "column-rule-style": { + "links": { + "tr": "#crs", + "dev": "#crs" + }, + "tests": ["none", "solid", "dotted"] + }, + "column-rule-width": { + "links": { + "tr": "#crw", + "dev": "#crw" + }, + "tests": "1px" + }, + "column-rule": { + "links": { + "tr": "#column-rule", + "dev": "#cr" + }, + "tests": ["transparent", "1px solid black"] + }, + "column-span": { + "links": { + "tr": "#column-span", + "dev": "#column-span" + }, + "tests": ["none", "all"] + }, + "column-fill": { + "links": { + "tr": "#cf", + "dev": "#cf" + }, + "tests": ["auto", "balance", "balance-all"] + } + } +}; diff --git a/tests/css-multicol-2.js b/tests/css-multicol-2.js new file mode 100644 index 00000000..2d4c7ab1 --- /dev/null +++ b/tests/css-multicol-2.js @@ -0,0 +1,17 @@ +export default { + "title": "CSS Multi-column Layout Module Level 2", + "links": { + "dev": "css-multicol-2" + }, + "status": { + "stability": "experimental" + }, + "properties": { + "column-span": { + "links": { + "dev": "#column-span" + }, + "tests": ["2", "auto"] + } + } +}; diff --git a/tests/css-nav-1.js b/tests/css-nav-1.js new file mode 100644 index 00000000..d6214c96 --- /dev/null +++ b/tests/css-nav-1.js @@ -0,0 +1,33 @@ +export default { + "title": "CSS Spatial Navigation Level 1", + "links": { + "tr": "css-nav-1", + "dev": "css-nav-1" + }, + "status": { + "stability": "experimental" + }, + "properties": { + "spatial-navigation-action": { + "links": { + "tr": "#css-property-spatialnavigationaction", + "dev": "#css-property-spatialnavigationaction" + }, + "tests": ["auto", "focus", "scroll"] + }, + "spatial-navigation-contain": { + "links": { + "tr": "#container", + "dev": "#container" + }, + "tests": ["auto", "contain"] + }, + "spatial-navigation-function": { + "links": { + "tr": "#css-property-spatialnavigationfunction", + "dev": "#css-property-spatialnavigationfunction" + }, + "tests": ["normal", "grid"] + } + } +}; diff --git a/tests/css-overflow-3.js b/tests/css-overflow-3.js new file mode 100644 index 00000000..2c751015 --- /dev/null +++ b/tests/css-overflow-3.js @@ -0,0 +1,79 @@ +export default { + "title": "CSS Overflow Module Level 3", + "links": { + "tr": "css-overflow-3", + "dev": "css-overflow-3" + }, + "status": { + "stability": "experimental" + }, + "properties": { + "line-clamp": { + "links": { + "tr": "#line-clamp", + "dev": "#line-clamp", + "mdn": "-webkit-line-clamp" + }, + "tests": ["none", "1", "5 clip", "5 ellipsis", "5 \"… (continued on next page)\""] + }, + "max-lines": { + "links": { + "tr": "#max-lines", + "dev": "#max-lines" + }, + "tests": ["none", "1"] + }, + "overflow-x": { + "links": { + "tr": "#overflow-properties", + "dev": "#overflow-properties" + }, + "tests": ["visible", "hidden", "clip", "scroll", "auto"] + }, + "overflow-y": { + "links": { + "tr": "#overflow-properties", + "dev": "#overflow-properties" + }, + "tests": ["visible", "hidden", "clip", "scroll", "auto"] + }, + "overflow-inline": { + "links": { + "tr": "#logical", + "dev": "#logical" + }, + "tests": ["visible", "hidden", "clip", "scroll", "auto"] + }, + "overflow-block": { + "links": { + "tr": "#logical", + "dev": "#logical" + }, + "tests": ["visible", "hidden", "clip", "scroll", "auto"] + }, + "overflow-clip-margin": { + "links": { + "tr": "#overflow-clip-margin", + "dev": "#overflow-clip-margin" + }, + "tests": ["content-box", "padding-box", "border-box", "20px"] + + }, + "continue": { + "links": { + "tr": "#continue", + "dev": "#continue" + }, + "tests": ["auto", "discard"] + }, + "scrollbar-gutter": { + "links": { + "tr": "scrollbar-gutter-property", + "dev": "#scrollbar-gutter-property" + }, + "tests": [ + "auto", "stable", "both-edges stable", "stable both-edges", + ] + } + } +}; diff --git a/tests/css-overflow-4.js b/tests/css-overflow-4.js new file mode 100644 index 00000000..84ac89fa --- /dev/null +++ b/tests/css-overflow-4.js @@ -0,0 +1,25 @@ +export default { + "title": "CSS Overflow Module Level 4", + "links": { + "tr": "css-overflow-4", + "dev": "css-overflow-4" + }, + "status": { + "stability": "experimental" + }, + "selectors": { + "::nth-fragment()": { + "links": { + "tr": "#fragment-pseudo-element", + "dev": "#fragment-pseudo-element" + }, + "tests": [ + ":nth-fragment(even)", ":nth-fragment(odd)", + ":nth-fragment(n)", ":nth-fragment(-n)", ":nth-fragment(0n)", + ":nth-fragment(1)", ":nth-fragment(-1)", ":nth-fragment(0)", + ":nth-fragment(n+1)", ":nth-fragment(3n+1)", ":nth-fragment(3n + 1)", + ":nth-fragment(-n+1)", ":nth-fragment(3n-1)" + ] + } + } +}; diff --git a/tests/css-overscroll-1.js b/tests/css-overscroll-1.js new file mode 100644 index 00000000..743c108e --- /dev/null +++ b/tests/css-overscroll-1.js @@ -0,0 +1,46 @@ +export default { + "title": "CSS Overscroll Behavior Module Level 1", + "links": { + "tr": "css-overscroll-1", + "dev": "css-overscroll-1" + }, + "status": { + "stability": "experimental" + }, + "properties": { + "overscroll-behavior": { + "links": { + "dev": "#overscroll-behavior-properties" + }, + "tests": [ + "contain", "none", "auto", "contain contain", "none contain", + "auto contain", "contain none", "none none", "auto none", + "contain auto", "none auto", "auto auto" + ] + }, + "overscroll-behavior-x": { + "links": { + "dev": "#overscroll-behavior-longhands-physical" + }, + "tests": ["contain", "none", "auto"] + }, + "overscroll-behavior-y": { + "links": { + "dev": "#overscroll-behavior-longhands-physical" + }, + "tests": ["contain", "none", "auto"] + }, + "overscroll-behavior-inline": { + "links": { + "dev": "#overscroll-behavior-longhands-logical" + }, + "tests": ["contain", "none", "auto"] + }, + "overscroll-behavior-block": { + "links": { + "dev": "#overscroll-behavior-longhands-logical" + }, + "tests": ["contain", "none", "auto"] + } + } +}; diff --git a/tests/css-page-3.js b/tests/css-page-3.js new file mode 100644 index 00000000..8fda13e3 --- /dev/null +++ b/tests/css-page-3.js @@ -0,0 +1,77 @@ +export default { + "title": "Paged Media Module Level 3", + "links": { + "tr": "css-page-3", + "dev": "css-page-3" + }, + "status": { + "stability": "experimental" + }, + "properties": { + "page": { + "links": { + "tr": "#using-named-pages", + "dev": "#using-named-pagest" + }, + "tests": ["auto", "customName"] + }, + }, + "@rules": { + "@page": { + "links": { + "tr": "#at-page-rule", + "dev": "#at-page-rule" + }, + "tests": [ + "@page :blank { margin: 2cm }", + "@page customName { margin: 2cm }" + ] + } + }, + "descriptors": { + "@page/size": { + "links": { + "tr": "#page-size-prop", + "dev": "#page-size-prop" + }, + "tests": [ + "4in 6in", "4em 6em", + "auto", + "landscape", + "portrait", + "a3", "a4", "a5", "b4", "b5", "jis-b4", "jis-b5", "ledger", "legal", "letter", + "a3 landscape", + "a3 portrait", + "landscape a3", + "portrait a3" + ] + }, + "@page/page-orientation": { + "links": { + "tr": "#page-orientation-prop", + "dev": "#page-orientation-prop" + }, + "tests": [ + "upright", "rotate-left", "rotate-right" + ] + }, + "@page/marks": { + "links": { + "tr": "#marks", + "dev": "#marks" + }, + "tests": [ + "none", "crop", "cross", "crop cross" + ] + }, + "@page/bleed": { + "links": { + "tr": "#bleed", + "dev": "#bleed" + }, + "tests": [ + "auto", "6pt" + ] + } + } +}; diff --git a/tests/css-paint-api-1.js b/tests/css-paint-api-1.js new file mode 100644 index 00000000..41400040 --- /dev/null +++ b/tests/css-paint-api-1.js @@ -0,0 +1,29 @@ +export default { + "title": "CSS Painting API Level 1", + "links": { + "tr": "css-paint-api-1", + "dev": "css-paint-api-1", + "devtype": "houdini" + }, + "status": { + "stability": "experimental" + }, + "values": { + "properties": [ + "background-image", + "list-style-image", + "border-image", + "cursor", + "content" + ], + "paint()": { + "links": { + "tr": "#paint-notation", + "dev": "#paint-notation" + }, + "tests": [ + "paint(company-logo)", "paint(chat-bubble, blue)", "paint(failing-argument-syntax, 1px, 2px)", "paint(arc, purple, 0.4turn, 0.8turn, 40px, 15px)" + ] + } + } +}; diff --git a/tests/css-position-3.js b/tests/css-position-3.js new file mode 100644 index 00000000..8dde0eaf --- /dev/null +++ b/tests/css-position-3.js @@ -0,0 +1,68 @@ +export default { + "title": "CSS Positioned Layout Module Level 3", + "links": { + "tr": "css-position-3", + "dev": "css-position-3" + }, + "status": { + "stability": "stable" + }, + "properties": { + "position": { + "links": { + "tr": "#position-property", + "dev": "#position-property" + }, + "tests": ["sticky"] + }, + "inset": { + "links": { + "tr": "#inset-shorthands", + "dev": "#inset-shorthands" + }, + "tests": ["auto", "10px", "50%", "10px 5%", "10px 5% 20px", "10px 5% 20px 10%"] + }, + "inset-block": { + "links": { + "tr": "#inset-shorthands", + "dev": "#inset-shorthands" + }, + "tests": ["auto", "10px", "50%", "10px 5%"] + }, + "inset-inline": { + "links": { + "tr": "#inset-shorthands", + "dev": "#inset-shorthands" + }, + "tests": ["auto", "10px", "50%", "10px 5%"] + }, + "inset-block-start": { + "links": { + "tr": "#insets", + "dev": "#insets" + }, + "tests": ["auto", "10px", "50%"] + }, + "inset-block-end": { + "links": { + "tr": "#insets", + "dev": "#insets" + }, + "tests": ["auto", "10px", "50%"] + }, + "inset-inline-start": { + "links": { + "tr": "#insets", + "dev": "#insets" + }, + "tests": ["auto", "10px", "50%"] + }, + "inset-inline-end": { + "links": { + "tr": "#insets", + "dev": "#insets" + }, + "tests": ["auto", "10px", "50%"] + }, + } +}; diff --git a/tests/css-pseudo-4.js b/tests/css-pseudo-4.js new file mode 100644 index 00000000..0fc6a591 --- /dev/null +++ b/tests/css-pseudo-4.js @@ -0,0 +1,61 @@ +export default { + "title": "CSS Pseudo-Elements Module Level 4", + "links": { + "tr": "css-pseudo-4", + "dev": "css-pseudo-4" + }, + "status": { + "stability": "experimental" + }, + "selectors": { + "::selection": { + "links": { + "tr": "#selectordef-selection", + "dev": "#selectordef-selection" + }, + "tests": ["::selection"] + }, + "::target-text": { + "links": { + "tr": "#selectordef-target-text", + "dev": "#selectordef-target-text" + }, + "tests": ["::target-text"] + }, + "::spelling-error": { + "links": { + "tr": "#selectordef-spelling-error", + "dev": "#selectordef-spelling-error" + }, + "tests": ["::spelling-error"] + }, + "::grammar-error": { + "links": { + "tr": "#selectordef-grammar-error", + "dev": "#selectordef-grammar-error" + }, + "tests": ["::grammar-error"] + }, + "::file-selector-button": { + "links": { + "tr": "#marker-pseudo", + "dev": "#marker-pseudo" + }, + "tests": ["::file-selector-button"] + }, + "::marker": { + "links": { + "tr": "#marker-pseudo", + "dev": "#marker-pseudo" + }, + "tests": ["::marker"] + }, + "::placeholder": { + "links": { + "tr": "#placeholder-pseudo", + "dev": "#placeholder-pseudo" + }, + "tests": ["::placeholder"] + } + } +}; diff --git a/tests/css-regions-1.js b/tests/css-regions-1.js new file mode 100644 index 00000000..3a24192e --- /dev/null +++ b/tests/css-regions-1.js @@ -0,0 +1,33 @@ +export default { + "title": "CSS Regions Module Level 1", + "links": { + "tr": "css-regions-1", + "dev": "css-regions-1" + }, + "status": { + "stability": "experimental" + }, + "properties": { + "flow-from": { + "links": { + "tr": "#flow-from", + "dev": "#flow-from" + }, + "tests": ["none", "named-flow"] + }, + "flow-into": { + "links": { + "tr": "#the-flow-into-property", + "dev": "#the-flow-into-property" + }, + "tests": ["none", "named-flow", "named-flow element", "named-flow content"] + }, + "region-fragment": { + "links": { + "tr": "#the-region-fragment-property", + "dev": "#the-region-fragment-property" + }, + "tests": ["auto", "break"] + } + } +}; diff --git a/tests/css-rhythmic-1.js b/tests/css-rhythmic-1.js new file mode 100644 index 00000000..1d5bc7f2 --- /dev/null +++ b/tests/css-rhythmic-1.js @@ -0,0 +1,62 @@ +export default { + "title": "CSS Rhythmic Sizing", + "links": { + "tr": "css-rhythm-1", + "dev": "css-rhythm-1" + }, + "status": { + "stability": "experimental" + }, + "properties": { + "line-height-step": { + "links": { + "tr": "#line-height-step", + "dev": "#line-height-step" + }, + "tests": ["none", "30px", "2em"] + }, + "block-step-size": { + "links": { + "tr": "#block-step-size", + "dev": "#block-step-size" + }, + "tests": ["none", "30px", "2em"] + }, + "block-step-insert": { + "links": { + "tr": "#block-step-insert", + "dev": "#block-step-insert" + }, + "tests": ["margin", "padding"] + }, + "block-step-align": { + "links": { + "tr": "#block-step-align", + "dev": "#block-step-align" + }, + "tests": ["auto", "center", "start", "end"] + }, + "block-step-round": { + "links": { + "tr": "#block-step-round", + "dev": "#block-step-round" + }, + "tests": ["up", "down", "nearest"] + }, + "block-step": { + "links": { + "tr": "#block-step", + "dev": "#block-step" + }, + "tests": [ + "none", + "padding", + "end", + "down", + "30px margin", + "30px padding center", + "2em padding start nearest" + ] + } + } +}; diff --git a/tests/css-ruby-1.js b/tests/css-ruby-1.js new file mode 100644 index 00000000..eb69974c --- /dev/null +++ b/tests/css-ruby-1.js @@ -0,0 +1,40 @@ +export default { + "title": "CSS Ruby Layout Module Level 1", + "links": { + "tr": "css-ruby-1", + "dev": "css-ruby-1" + }, + "status": { + "stability": "experimental" + }, + "properties": { + "display": { + "links": { + "tr": "#ruby-display", + "dev": "#ruby-display" + }, + "tests": ["ruby", "ruby-base", "ruby-text", "ruby-base-container", "ruby-text-container"] + }, + "ruby-position": { + "links": { + "tr": "#rubypos", + "dev": "#rubypos" + }, + "tests": ["alternate", "over", "under", "alternate over", "alternate under", "inter-character"] + }, + "ruby-merge": { + "links": { + "tr": "#collapsed-ruby", + "dev": "#collapsed-ruby" + }, + "tests": ["separate", "collapse", "auto"] + }, + "ruby-align": { + "links": { + "tr": "#ruby-align-property", + "dev": "#ruby-align-property" + }, + "tests": ["start", "center", "space-between", "space-around"] + } + } +}; diff --git a/tests/css-scoping-1.js b/tests/css-scoping-1.js new file mode 100644 index 00000000..c44ed947 --- /dev/null +++ b/tests/css-scoping-1.js @@ -0,0 +1,41 @@ +export default { + "title": "CSS Scoping Module Level 1", + "links": { + "tr": "css-scoping-1", + "dev": "css-scoping-1" + }, + "status": { + "stability": "experimental" + }, + "selectors": { + ":host": { + "links": { + "tr": "#host-selector", + "dev": "#host-selector" + }, + "tests": ":host" + }, + ":host()": { + "links": { + "tr": "#host-selector", + "dev": "#host-selector", + "mdn": ":host()" + }, + "tests": [":host(*)", ":host(.foo)"] + }, + ":host-context()": { + "links": { + "tr": "#host-selector", + "dev": "#host-selector", + "mdn": ":host-context()" + }, + "tests": [":host-context(*)", ":host-context(.foo)"] + }, + "::slotted()": { + "links": { + "dev": "#slotted-pseudo" + }, + "tests": ["::slotted(*)", "::slotted(.foo)"] + } + } +}; diff --git a/tests/css-scroll-anchoring-1.js b/tests/css-scroll-anchoring-1.js new file mode 100644 index 00000000..17e56d8e --- /dev/null +++ b/tests/css-scroll-anchoring-1.js @@ -0,0 +1,18 @@ +export default { + "title": "CSS Scroll Anchoring Module Level 1", + "links": { + "tr": "css-scroll-anchoring-1", + "dev": "css-scroll-anchoring-1" + }, + "status": { + "stability": "experimental" + }, + "properties": { + "overflow-anchor": { + "links": { + "dev": "#exclusion-api" + }, + "tests": ["none", "auto"] + } + } +}; diff --git a/tests/css-scroll-snap-1.js b/tests/css-scroll-snap-1.js new file mode 100644 index 00000000..37e270ea --- /dev/null +++ b/tests/css-scroll-snap-1.js @@ -0,0 +1,190 @@ +export default { + "title": "CSS Scroll Snap Module Level 1", + "links": { + "tr": "css-scroll-snap-1", + "dev": "css-scroll-snap-1" + }, + "status": { + "stability": "stable" + }, + "properties": { + "scroll-margin": { + "links": { + "tr": "#scroll-margin", + "dev": "#scroll-margin" + }, + "tests": ["0px", "6px 5px", "10px 20px 30px", "10px 20px 30px 40px", "20px 3em 1in 5rem", "calc(2px)", "calc(3 * 25px)", "calc(3 * 25px) 5px 10em calc(1vw - 5px)"] + }, + "scroll-margin-block": { + "links": { + "tr": "#margin-longhands-logical", + "dev": "#margin-longhands-logical" + }, + "tests": ["10px", "10px 10px"] + }, + "scroll-margin-block-end": { + "links": { + "tr": "#margin-longhands-logical", + "dev": "#margin-longhands-logical" + }, + "tests": ["10px"] + }, + "scroll-margin-block-start": { + "links": { + "tr": "#margin-longhands-logical", + "dev": "#margin-longhands-logical" + }, + "tests": ["10px"] + }, + "scroll-margin-bottom": { + "links": { + "tr": "#margin-longhands-physical", + "dev": "#margin-longhands-physical" + }, + "tests": ["10px"] + }, + "scroll-margin-inline": { + "links": { + "tr": "#margin-longhands-logical", + "dev": "#margin-longhands-logical" + }, + "tests": ["10px", "10px 10px"] + }, + "scroll-margin-inline-start": { + "links": { + "tr": "#margin-longhands-logical", + "dev": "#margin-longhands-logical" + }, + "tests": ["10px"] + }, + "scroll-margin-inline-end": { + "links": { + "tr": "#margin-longhands-logical", + "dev": "#margin-longhands-logical" + }, + "tests": ["10px"] + }, + "scroll-margin-left": { + "links": { + "tr": "#margin-longhands-physical", + "dev": "#margin-longhands-physical" + }, + "tests": ["10px"] + }, + "scroll-margin-right": { + "links": { + "tr": "#margin-longhands-physical", + "dev": "#margin-longhands-physical" + }, + "tests": ["10px"] + }, + "scroll-margin-top": { + "links": { + "tr": "#margin-longhands-physical", + "dev": "#margin-longhands-physical" + }, + "tests": ["10px"] + }, + "scroll-padding": { + "links": { + "tr": "#scroll-padding", + "dev": "#scroll-padding" + }, + "tests": ["auto", "0px", "6px 5px", "10px 20px 30px", "10px 20px 30px 40px", "10px auto 30px auto", "10%", "20% 3em 1in 5rem", "calc(2px)", "calc(50%)", "calc(3 * 25px)", "calc(3 * 25px) 5px 10% calc(10% - 5px)"] + }, + "scroll-padding-block": { + "links": { + "tr": "#padding-longhands-logical", + "dev": "#padding-longhands-logical" + }, + "tests": ["10px", "50%", "10px 50%", "50% 50%"] + }, + "scroll-padding-block-end": { + "links": { + "tr": "#padding-longhands-logical", + "dev": "#padding-longhands-logical" + }, + "tests": ["10px", "50%"] + }, + "scroll-padding-block-start": { + "links": { + "tr": "#padding-longhands-logical", + "dev": "#padding-longhands-logical" + }, + "tests": ["10px", "50%"] + }, + "scroll-padding-bottom": { + "links": { + "tr": "#padding-longhands-physical", + "dev": "#padding-longhands-physical" + }, + "tests": ["10px", "50%"] + }, + "scroll-padding-inline": { + "links": { + "tr": "#padding-longhands-logical", + "dev": "#padding-longhands-logical" + }, + "tests": ["10px", "50%", "10px 50%", "50% 50%"] + }, + "scroll-padding-inline-end": { + "links": { + "tr": "#padding-longhands-logical", + "dev": "#padding-longhands-logical" + }, + "tests": ["10px", "50%"] + }, + "scroll-padding-inline-start": { + "links": { + "tr": "#padding-longhands-logical", + "dev": "#padding-longhands-logical" + }, + "tests": ["10px", "50%"] + }, + "scroll-padding-left": { + "links": { + "tr": "#padding-longhands-physical", + "dev": "#padding-longhands-physical" + }, + "tests": ["10px", "50%"] + }, + "scroll-padding-right": { + "links": { + "tr": "#padding-longhands-physical", + "dev": "#padding-longhands-physical" + }, + "tests": ["10px", "50%"] + }, + "scroll-padding-top": { + "links": { + "tr": "#padding-longhands-physical", + "dev": "#padding-longhands-physical" + }, + "tests": ["10px", "50%"] + }, + "scroll-snap-align": { + "links": { + "tr": "#scroll-snap-align", + "dev": "#scroll-snap-align" + }, + "tests": ["none", "start", "end", "center", "none start", "end center", "center start", "end none", "center center"] + }, + "scroll-snap-stop": { + "links": { + "tr": "#scroll-snap-stop", + "dev": "#scroll-snap-stop" + }, + "tests": ["normal", "always"] + }, + "scroll-snap-type": { + "links": { + "tr": "#scroll-snap-type", + "dev": "#scroll-snap-type" + }, + "tests": [ + "none", "x mandatory", "y mandatory", "block mandatory", "inline mandatory", "both mandatory", + "x proximity", "y proximity", "block proximity", "inline proximity", "both proximity" + ] + } + } +}; diff --git a/tests/css-scrollbars-1.js b/tests/css-scrollbars-1.js new file mode 100644 index 00000000..c8d4e52c --- /dev/null +++ b/tests/css-scrollbars-1.js @@ -0,0 +1,26 @@ +export default { + "title": "CSS Scrollbars Module Level 1", + "links": { + "tr": "css-scrollbars-1", + "dev": "css-scrollbars-1" + }, + "status": { + "stability": "stable" + }, + "properties": { + "scrollbar-color": { + "links": { + "tr": "#scrollbar-color", + "dev": "#scrollbar-color" + }, + "tests": ["auto", "red blue"] + }, + "scrollbar-width": { + "links": { + "tr": "#scrollbar-width", + "dev": "#scrollbar-width" + }, + "tests": ["auto", "thin", "none"] + } + } +}; diff --git a/tests/css-shadow-parts-1.js b/tests/css-shadow-parts-1.js new file mode 100644 index 00000000..01fbc528 --- /dev/null +++ b/tests/css-shadow-parts-1.js @@ -0,0 +1,19 @@ +export default { + "title": "CSS Shadow Parts", + "links": { + "tr": "css-shadow-parts-1", + "dev": "css-shadow-parts-1" + }, + "status": { + "stability": "experimental" + }, + "selectors": { + "::part()": { + "links": { + "tr": "#part", + "dev": "#part" + }, + "tests": ["::part(label)"] + } + } +}; diff --git a/tests/css-shapes-1.js b/tests/css-shapes-1.js new file mode 100644 index 00000000..e3aaa93b --- /dev/null +++ b/tests/css-shapes-1.js @@ -0,0 +1,40 @@ +export default { + "title": "CSS Shapes Module Level 1", + "links": { + "tr": "css-shapes-1", + "dev": "css-shapes-1" + }, + "status": { + "stability": "stable" + }, + "properties": { + "shape-outside": { + "links": { + "tr": "#shape-outside-property", + "dev": "#shape-outside-property" + }, + "tests": [ + "none", "inset(10% round 10% 40% 10% 40%)", "ellipse(at top 50% left 20%)", "circle(at right 5% top)", + "polygon(100% 0, 100% 100%, 0 100%)", "path('M 20 20 H 80 V 30')", + "margin-box", "border-box", "padding-box", "content-box", + "inset(10% round 10% 40% 10% 40%) margin-box", "ellipse(at top 50% left 20%) margin-box", + "circle(at right 5% top) margin-box", "polygon(100% 0, 100% 100%, 0 100%) margin-box", "path('M 20 20 H 80 V 30') margin-box", + "attr(src url)", "url(image.png)" + ] + }, + "shape-image-threshold": { + "links": { + "tr": "#shape-image-threshold-property", + "dev": "#shape-image-threshold-property" + }, + "tests": ["0", "1", "0.0", "0.1"] + }, + "shape-margin": { + "links": { + "tr": "#shape-margin-property", + "dev": "#shape-margin-property" + }, + "tests": ["0", "10px", "50%"] + } + } +}; diff --git a/tests/css-shapes-2.js b/tests/css-shapes-2.js new file mode 100644 index 00000000..5d465b62 --- /dev/null +++ b/tests/css-shapes-2.js @@ -0,0 +1,27 @@ +export default { + "title": "CSS Shapes Module Level 2", + "links": { + "dev": "css-shapes-2" + }, + "status": { + "stability": "experimental" + }, + "properties": { + "shape-inside": { + "links": { + "dev": "#shape-inside-property" + }, + "tests": [ + "auto", "outside-shape", "shape-box", "display", "inset(10% round 10% 40% 10% 40%)", + "ellipse(at top 50% left 20%)", "circle(at right 5% top)", "polygon(100% 0, 100% 100%, 0 100%)", "path('M 20 20 H 80 V 30')", + "url(image.png)" + ] + }, + "shape-padding": { + "links": { + "dev": "#shape-padding-property" + }, + "tests": ["0", "10px", "50%"] + } + } +}; diff --git a/tests/css-sizing-3.js b/tests/css-sizing-3.js new file mode 100644 index 00000000..0e44846b --- /dev/null +++ b/tests/css-sizing-3.js @@ -0,0 +1,61 @@ +export default { + "title": "CSS Box Sizing Module Level 3", + "links": { + "tr": "css-sizing-3", + "dev": "css-sizing-3" + }, + "status": { + "stability": "stable" + }, + "properties": { + "width": { + "links": { + "tr": "#preferred-size-properties", + "dev": "#preferred-size-properties" + }, + "tests": ["max-content", "min-content", "fit-content(10%)"] + }, + "min-width": { + "links": { + "tr": "#min-size-properties", + "dev": "#min-size-properties" + }, + "tests": ["max-content", "min-content", "fit-content(10%)"] + }, + "max-width": { + "links": { + "tr": "#max-size-properties", + "dev": "#max-size-properties" + }, + "tests": ["max-content", "min-content", "fit-content(10%)"] + }, + "height": { + "links": { + "tr": "#preferred-size-properties", + "dev": "#preferred-size-properties" + }, + "tests": ["max-content", "min-content", "fit-content(10%)"] + }, + "min-height": { + "links": { + "tr": "#min-size-properties", + "dev": "#min-size-properties" + }, + "tests": ["max-content", "min-content", "fit-content(10%)"] + }, + "max-height": { + "links": { + "tr": "#max-size-properties", + "dev": "#max-size-properties" + }, + "tests": ["max-content", "min-content", "fit-content(10%)"] + }, + "column-width": { + "links": { + "tr": "#column-sizing", + "dev": "#column-sizing" + }, + "tests": ["max-content", "min-content", "fit-content(10%)"] + } + } +}; diff --git a/tests/css-sizing-4.js b/tests/css-sizing-4.js new file mode 100644 index 00000000..9a882b1a --- /dev/null +++ b/tests/css-sizing-4.js @@ -0,0 +1,138 @@ +export default { + "title": "CSS Box Sizing Module Level 4", + "links": { + "tr": "css-sizing-4", + "dev": "css-sizing-4" + }, + "status": { + "stability": "experimental" + }, + "properties": { + "aspect-ratio": { + "links": { + "tr": "#aspect-ratio", + "dev": "#aspect-ratio" + }, + "tests": ["auto", "2", "16 / 9", "auto 16 / 9"] + }, + "contain-intrinsic-size": { + "links": { + "tr": "#propdef-contain-intrinsic-size", + "dev": "#propdef-contain-intrinsic-size" + }, + "tests": ["none", "10px", "10px 15px"] + }, + "contain-intrinsic-width": { + "links": { + "tr": "#intrinsic-size-override", + "dev": "#intrinsic-size-override" + }, + "tests": ["none", "10px"] + }, + "contain-intrinsic-height": { + "links": { + "tr": "#intrinsic-size-override", + "dev": "#intrinsic-size-override" + }, + "tests": ["none", "10px"] + }, + "contain-intrinsic-block-size": { + "links": { + "tr": "#intrinsic-size-override", + "dev": "#intrinsic-size-override" + }, + "tests": ["none", "10px"] + }, + "contain-intrinsic-inline-size": { + "links": { + "tr": "#intrinsic-size-override", + "dev": "#intrinsic-size-override" + }, + "tests": ["none", "10px"] + }, + "width": { + "links": { + "tr": "#sizing-values", + "dev": "#sizing-values" + }, + "tests": ["stretch", "fit-content", "contain"] + }, + "min-width": { + "links": { + "tr": "#sizing-values", + "dev": "#sizing-values" + }, + "tests": ["stretch", "fit-content", "contain"] + }, + "max-width": { + "links": { + "tr": "#sizing-values", + "dev": "#sizing-values" + }, + "tests": ["stretch", "fit-content", "contain"] + }, + "height": { + "links": { + "tr": "#sizing-values", + "dev": "#sizing-values" + }, + "tests": ["stretch", "fit-content", "contain"] + }, + "min-height": { + "links": { + "tr": "#sizing-values", + "dev": "#sizing-values" + }, + "tests": ["stretch", "fit-content", "contain"] + }, + "max-height": { + "links": { + "tr": "#sizing-values", + "dev": "#sizing-values" + }, + "tests": ["stretch", "fit-content", "contain"] + }, + "inline-size": { + "links": { + "tr": "#sizing-values", + "dev": "#sizing-values" + }, + "tests": ["stretch", "fit-content", "contain"] + }, + "min-inline-size": { + "links": { + "tr": "#sizing-values", + "dev": "#sizing-values" + }, + "tests": ["stretch", "fit-content", "contain"] + }, + "max-inline-size": { + "links": { + "tr": "#sizing-values", + "dev": "#sizing-values" + }, + "tests": ["stretch", "fit-content", "contain"] + }, + "block-size": { + "links": { + "tr": "#sizing-values", + "dev": "#sizing-values" + }, + "tests": ["stretch", "fit-content", "contain"] + }, + "min-block-size": { + "links": { + "tr": "#sizing-values", + "dev": "#sizing-values" + }, + "tests": ["stretch", "fit-content", "contain"] + }, + "max-block-size": { + "links": { + "tr": "#sizing-values", + "dev": "#sizing-values" + }, + "tests": ["stretch", "fit-content", "contain"] + } + } +}; diff --git a/tests/css-speech-1.js b/tests/css-speech-1.js new file mode 100644 index 00000000..4d377707 --- /dev/null +++ b/tests/css-speech-1.js @@ -0,0 +1,166 @@ +export default { + "title": "CSS Speech Module Level 1", + "links": { + "tr": "css-speech-1", + "dev": "css-speech-1" + }, + "status": { + "stability": "stable" + }, + "properties": { + "cue": { + "links": { + "tr": "#cue-props-cue", + "dev": "#cue-props-cue" + }, + "tests": [ + "none", "url(beforeafter.wav)", "url(beforeafter.wav) +3dB", "url(beforeafter.wav) -3dB", + "url(before.wav) url(after.wav)", "url(before.wav) +3dB url(after.wav) -3dB" + ] + }, + "cue-before": { + "links": { + "tr": "#cue-props-cue-before-after", + "dev": "#cue-props-cue-before-after" + }, + "tests": ["none", "url(after.wav)", "url(after.wav) +3dB", "url(after.wav) -3dB"] + }, + "cue-after": { + "links": { + "tr": "#cue-props-cue-before-after", + "dev": "#cue-props-cue-before-after" + }, + "tests": ["none", "url(after.wav)", "url(after.wav) +3dB", "url(after.wav) -3dB"] + }, + "pause": { + "links": { + "tr": "#pause-props-pause", + "dev": "#pause-props-pause" + }, + "tests": [ + "1s", "none", "x-weak", "weak", "medium", "strong", "x-strong", + "1s weak", "none 200ms" + ] + }, + "pause-before": { + "links": { + "tr": "#pause-props-pause-before-after", + "dev": "#pause-props-pause-before-after" + }, + "tests": ["1s", "none", "x-weak", "weak", "medium", "strong", "x-strong"] + }, + "pause-after": { + "links": { + "tr": "#pause-props-pause-before-after", + "dev": "#pause-props-pause-before-after" + }, + "tests": ["1s", "none", "x-weak", "weak", "medium", "strong", "x-strong"] + }, + "rest": { + "links": { + "tr": "#rest-props-rest", + "dev": "#rest-props-rest" + }, + "tests": [ + "1s", "none", "x-weak", "weak", "medium", "strong", "x-strong", + "1s weak", "none 200ms" + ] + }, + "rest-before": { + "links": { + "tr": "#rest-props-rest-before-after", + "dev": "#rest-props-rest-before-after" + }, + "tests": ["1s", "none", "x-weak", "weak", "medium", "strong", "x-strong"] + }, + "rest-after": { + "links": { + "tr": "#rest-props-rest-before-after", + "dev": "#rest-props-rest-before-after" + }, + "tests": ["1s", "none", "x-weak", "weak", "medium", "strong", "x-strong"] + }, + "speak": { + "links": { + "tr": "#speaking-props-speak", + "dev": "#speaking-props-speak" + }, + "tests": ["auto", "never", "always"] + }, + "speak-as": { + "links": { + "tr": "#speaking-props-speak-as", + "dev": "#speaking-props-speak-as" + }, + "tests": [ + "normal", "spell-out", "digits", "literal-punctuation", "no-punctuation", + "spell-out digits", "spell-out literal-punctuation", "digits no-punctuation" + ] + }, + "voice-balance": { + "links": { + "tr": "#mixing-props-voice-balance", + "dev": "#mixing-props-voice-balance" + }, + "tests": ["20.4", "left", "center", "right", "leftwards", "rightwards"] + }, + "voice-duration": { + "links": { + "tr": "#mixing-props-voice-duration", + "dev": "#mixing-props-voice-duration" + }, + "tests": ["auto", "1s"] + }, + "voice-family": { + "links": { + "tr": "#voice-props-voice-family", + "dev": "#voice-props-voice-family" + }, + "tests": [ + "voice-family", "male", "female", "neutral", "preserve", "child male", "young female", + "old neutral", "female 2", "young male 1", "voice-family1, voice-family2, male" + ] + }, + "voice-pitch": { + "links": { + "tr": "#voice-props-voice-pitch", + "dev": "#voice-props-voice-pitch" + }, + "tests": [ + "250Hz", "+30Hz", "-20Hz absolute", "x-low", "low", "medium", "high", "x-high", + "1.059st", "25%", "+25%", "-25%", "low +20Hz", "high -25%", "medium -1.02st" + ] + }, + "voice-range": { + "links": { + "tr": "#voice-props-voice-range", + "dev": "#voice-props-voice-range" + }, + "tests": [ + "250Hz", "+30Hz", "-20Hz absolute", "x-low", "low", "medium", "high", "x-high", + "1.059st", "25%", "+25%", "-25%", "low +20Hz", "high -25%", "medium -1.02st" + ] + }, + "voice-rate": { + "links": { + "tr": "#voice-props-voice-rate", + "dev": "#voice-props-voice-rate" + }, + "tests": ["normal", "x-slow", "slow", "fast", "x-fast", "20%", "slow 80%"] + }, + "voice-stress": { + "links": { + "tr": "#voice-props-voice-stress", + "dev": "#voice-props-voice-stress" + }, + "tests": ["normal", "strong", "moderate", "none", "reduced"] + }, + "voice-volume": { + "links": { + "tr": "#mixing-props-voice-volume", + "dev": "#mixing-props-voice-volume" + }, + "tests": ["silent", "x-soft", "soft", "medium", "loud", "x-loud", "20dB", "loud -10dB"] + } + } +}; diff --git a/tests/css-text-3.js b/tests/css-text-3.js new file mode 100644 index 00000000..f95f1ffe --- /dev/null +++ b/tests/css-text-3.js @@ -0,0 +1,120 @@ +export default { + "title": "CSS Text Module Level 3", + "links": { + "tr": "css-text-3", + "dev": "css-text-3" + }, + "status": { + "stability": "stable" + }, + "properties": { + "text-transform": { + "links": { + "tr": "#text-transform", + "dev": "#text-transform-property" + }, + "tests": ["full-width", "full-size-kana", "capitalize full-width", "capitalize full-width full-size-kana"] + }, + "tab-size": { + "links": { + "tr": "#tab-size-property", + "dev": "#tab-size-property" + }, + "tests": ["4", "1em"] + }, + "line-break": { + "links": { + "tr": "#line-break-property", + "dev": "#line-break-property" + }, + "tests": ["auto", "loose", "normal", "strict", "anywhere"] + }, + "word-break": { + "links": { + "tr": "#word-break-property", + "dev": "#word-break-property" + }, + "tests": ["normal", "keep-all", "break-all"] + }, + "white-space": { + "links": { + "tr": "#white-space-property", + "dev": "#white-space-property" + }, + "tests": ["break-spaces"] + }, + "hyphens": { + "links": { + "tr": "#hyphenation", + "dev": "#hyphenation" + }, + "tests": ["auto", "manual", "none"] + }, + "overflow-wrap": { + "links": { + "tr": "#overflow-wrap-property", + "dev": "#overflow-wrap-property" + }, + "tests": ["normal", "break-word", "anywhere"] + }, + "word-wrap": { + "links": { + "tr": "#overflow-wrap-property", + "dev": "#overflow-wrap-property" + }, + "tests": ["normal", "break-word", "anywhere"] + }, + "text-align": { + "links": { + "tr": "#text-align-property", + "dev": "#text-align-property" + }, + "tests": ["start", "end", "match-parent", "justify-all"] + }, + "text-align-all": { + "links": { + "tr": "#text-align-all-property", + "dev": "#text-align-all-property" + }, + "tests": ["start", "end", "left", "right", "center", "justify", "match-parent"] + }, + "text-align-last": { + "links": { + "tr": "#text-align-last-property", + "dev": "#text-align-last-property" + }, + "tests": ["auto", "start", "end", "left", "right", "center", "justify", "match-parent"] + }, + "text-justify": { + "links": { + "tr": "#text-justify-property", + "dev": "#text-justify-property" + }, + "tests": ["auto", "none", "inter-word", "inter-character"] + }, + "word-spacing": { + "links": { + "tr": "#word-spacing-property", + "dev": "#word-spacing-property" + }, + "tests": ["50%"] + }, + "text-indent": { + "links": { + "tr": "#text-indent-property", + "dev": "#text-indent-property" + }, + "tests": ["1em hanging", "1em each-line", "1em hanging each-line"] + }, + "hanging-punctuation": { + "links": { + "tr": "#hanging-punctuation-property", + "dev": "#hanging-punctuation-property" + }, + "tests": [ + "none", "first", "last", "force-end", "allow-end", "first last", "first force-end", + "first force-end last", "first allow-end last" + ] + } + } +}; diff --git a/tests/css-text-4.js b/tests/css-text-4.js new file mode 100644 index 00000000..7faffdea --- /dev/null +++ b/tests/css-text-4.js @@ -0,0 +1,92 @@ +export default { + "title": "CSS Text Module Level 4", + "links": { + "tr": "css-text-4", + "dev": "css-text-4" + }, + "status": { + "stability": "experimental" + }, + "properties": { + "text-space-collapse": { + "links": { + "tr": "#white-space-collapsing", + "dev": "#white-space-collapsing" + }, + "tests": ["collapse", "discard", "preserve", "preserve-breaks", "preserve-spaces"] + }, + "text-space-trim": { + "links": { + "tr": "#white-space-trim", + "dev": "#white-space-trim" + }, + "tests": [ + "none", "trim-inner", " discard-before", "discard-after", + "trim-inner discard-before", "trim-inner discard-before discard-after" + ] + }, + "text-wrap": { + "links": { + "tr": "#text-wrap", + "dev": "#text-wrap" + }, + "tests": ["wrap", "nowrap", "balance "] + }, + "wrap-before": { + "links": { + "tr": "#wrap-before", + "dev": "#wrap-before" + }, + "tests": ["auto", "avoid", "avoid-line", "avoid-flex", "line", "flex"] + }, + "wrap-after": { + "links": { + "tr": "#wrap-before", + "dev": "#wrap-before" + }, + "tests": ["auto", "avoid", "avoid-line", "avoid-flex", "line", "flex"] + }, + "wrap-inside": { + "links": { + "tr": "#wrap-inside", + "dev": "#wrap-inside" + }, + "tests": ["auto", "avoid"] + }, + "hyphenate-character": { + "links": { + "tr": "#hyphenate-character", + "dev": "#hyphenate-character" + }, + "tests": ["auto", "'\\2010'"] + }, + "hyphenate-limit-zone": { + "links": { + "tr": "#hyphenate-size-limits", + "dev": "#hyphenate-size-limits" + }, + "tests": ["1%", "1em"] + }, + "hyphenate-limit-chars": { + "links": { + "tr": "#hyphenate-char-limits", + "dev": "#hyphenate-char-limits" + }, + "tests": ["auto", "5", "auto 3", "5 4 3"] + }, + "hyphenate-limit-lines": { + "links": { + "tr": "#hyphenate-line-limits", + "dev": "#hyphenate-line-limits" + }, + "tests": ["no-limit", "2"] + }, + "hyphenate-limit-last": { + "links": { + "tr": "#hyphenate-line-limits", + "dev": "#hyphenate-line-limits" + }, + "tests": ["none", "always", "column", "page", "spread"] + } + } +}; diff --git a/tests/css-text-decor-3.js b/tests/css-text-decor-3.js new file mode 100644 index 00000000..d186198d --- /dev/null +++ b/tests/css-text-decor-3.js @@ -0,0 +1,82 @@ +export default { + "title": "CSS Text Decoration Module Level 3", + "links": { + "tr": "css-text-decor-3", + "dev": "css-text-decor-3" + }, + "status": { + "stability": "stable" + }, + "properties": { + "text-decoration": { + "links": { + "tr": "#text-decoration-property", + "dev": "#text-decoration-property" + }, + "tests": "underline dotted green" + }, + "text-decoration-line": { + "links": { + "tr": "#text-decoration-line-property", + "dev": "#text-decoration-line-property" + }, + "tests": ["none", "underline", "overline", "line-through", "underline overline"] + }, + "text-decoration-color": { + "links": { + "tr": "#text-decoration-color-property", + "dev": "#text-decoration-color-property" + }, + "tests": "white" + }, + "text-decoration-style": { + "links": { + "tr": "#text-decoration-style-property", + "dev": "#text-decoration-style-property" + }, + "tests": ["solid", "double", "dotted", "dashed", "wavy"] + }, + "text-underline-position": { + "links": { + "tr": "#text-underline-position-property", + "dev": "#text-underline-position-property" + }, + "tests": ["auto", "under", "left", "right", "under left", "under right"] + }, + "text-emphasis-style": { + "links": { + "tr": "#text-emphasis-style-property", + "dev": "#text-emphasis-style-property" + }, + "tests": ["none", "filled", "open", "dot", "circle", "double-circle", "triangle", "sesame", "open dot", "'foo'"] + }, + "text-emphasis-color": { + "links": { + "tr": "#text-emphasis-color-property", + "dev": "#text-emphasis-color-property" + }, + "tests": "green" + }, + "text-emphasis": { + "links": { + "tr": "#text-emphasis-property", + "dev": "#text-emphasis-property" + }, + "tests": "open dot green" + }, + "text-emphasis-position": { + "links": { + "tr": "#text-emphasis-position-property", + "dev": "#text-emphasis-position-property" + }, + "tests": ["over left", "over right", "under left", "under right"] + }, + "text-shadow": { + "links": { + "tr": "#text-shadow-property", + "dev": "#text-shadow-property" + }, + "tests": ["none", "1px 1px", "0 0 black", "1px 2px 3px black"] + } + } +}; diff --git a/tests/css-text-decor-4.js b/tests/css-text-decor-4.js new file mode 100644 index 00000000..e26507ea --- /dev/null +++ b/tests/css-text-decor-4.js @@ -0,0 +1,60 @@ +export default { + "title": "CSS Text Decoration Module Level 4", + "links": { + "tr": "css-text-decor-4", + "dev": "css-text-decor-4" + }, + "status": { + "stability": "experimental" + }, + "properties": { + "text-decoration": { + "links": { + "tr": "#text-decoration-property", + "dev": "#text-decoration-property" + }, + "tests": ["underline solid blue 1px"] + }, + "text-decoration-skip": { + "links": { + "tr": "#text-decoration-skip-property", + "dev": "#text-decoration-skip-property" + }, + "tests": [ + "none", "objects", "objects spaces", "objects leading-spaces", "objects trailing-spaces", "objects leading-spaces trailing-spaces", + "objects leading-spaces trailing-spaces edges", "objects leading-spaces trailing-spaces edges box-decoration", "objects edges", + "objects box-decoration", "spaces", "spaces edges", "spaces edges box-decoration", "spaces box-decoration", "leading-spaces", + "leading-spaces trailing-spaces edges", "leading-spaces trailing-spaces edges box-decoration", "edges", "edges box-decoration", + "box-decoration" + ] + }, + "text-decoration-skip-ink": { + "links": { + "tr": "#text-decoration-skip-ink-property", + "dev": "#text-decoration-skip-ink-property" + }, + "tests": ["none", "auto"] + }, + "text-underline-offset": { + "links": { + "tr": "#underline-offset", + "dev": "#underline-offset" + }, + "tests": ["auto", "3px", "10%"] + }, + "text-decoration-thickness": { + "links": { + "tr": "#underline-offset", + "dev": "#text-decoration-width-property" + }, + "tests": ["auto", "from-font", "3px", "10%"] + }, + "text-shadow": { + "links": { + "tr": "#text-shadow-property", + "dev": "#text-shadow-property" + }, + "tests": ["1px 2px 3px 4px black"] + } + } +}; diff --git a/tests/css-transforms-1.js b/tests/css-transforms-1.js new file mode 100644 index 00000000..ba1d7e71 --- /dev/null +++ b/tests/css-transforms-1.js @@ -0,0 +1,46 @@ +export default { + "title": "CSS Transforms Module Level 1", + "links": { + "tr": "css-transforms-1", + "dev": "css-transforms-1" + }, + "status": { + "stability": "stable", + "first-snapshot": 2017 + }, + "properties": { + "transform": { + "links": { + "tr": "#transform-property", + "dev": "#transform-property" + }, + "tests": [ + "none", + "translate(5px)", "translate(5px, 10px)", "translateY(5px)", "translateX(5px)", "translateY(5%)", "translateX(5%)", + "scale(2)", "scale(2, -1)", "scaleX(2)", "scaleY(2.5)", + "rotate(45deg)", + "skew(45deg)", "skew(45deg, 15deg)", "skewX(45deg)", "skewY(45deg)", + "matrix(1,-.2,0,1,0,0)", "matrix(1,-.2,0,1,10,10)", + "translate(50px, -24px) rotate(180deg) scale(.5) skew(0, 22.5deg)", + "translateZ(5px)", + "scaleZ(1.5)", + "rotateX(-45deg)", "rotateY(-45deg)", "rotateZ(-45deg)", + "perspective(600px)" + ] + }, + "transform-origin": { + "links": { + "tr": "#transform-origin-property", + "dev": "#transform-origin-property" + }, + "tests": ["10px", "top", "top left", "50% 100%", "left 0%", "left 50% 0"] + }, + "transform-box": { + "links": { + "tr": "#transform-box", + "dev": "#transform-box" + }, + "tests": ["border-box", "fill-box", "view-box"] + } + } +}; diff --git a/tests/css-transforms-2.js b/tests/css-transforms-2.js new file mode 100644 index 00000000..ee6e2732 --- /dev/null +++ b/tests/css-transforms-2.js @@ -0,0 +1,86 @@ +export default { + "title": "CSS Transforms Module Level 2", + "links": { + "tr": "css-transforms-2", + "dev": "css-transforms-2" + }, + "status": { + "stability": "stable" + }, + "properties": { + "translate": { + "links": { + "tr": "#individual-transforms", + "dev": "#individual-transforms" + }, + "tests": ["none", "50%", "50% 50%", "50% 50% 10px"] + }, + "scale": { + "links": { + "tr": "#individual-transforms", + "dev": "#individual-transforms" + }, + "tests": ["none", "2", "2 2", "2 2 2"] + }, + "rotate": { + "links": { + "tr": "#individual-transforms", + "dev": "#individual-transforms" + }, + "tests": [ + "none", + " 45deg", + "x 45deg", + "y 45deg", + "z 45deg", + "-1 0 2 45deg", + "45deg x", + "45deg y", + "45deg z", + "45deg -1 0 2" + ] + }, + "transform": { + "links": { + "tr": "#transform-property", + "dev": "#transform-property" + }, + "tests": [ + "perspective(none)", + "translate3d(0, 0, 5px)", + "scale3d(1, 0, -1)", + "rotate3d(1, 1, 1, 45deg)", + "matrix3d(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)", "matrix3d(0,0,0,0,0,0,0,0,0,0,1,0,10,10,0,1)", + "translate3d(50px, -24px, 5px) rotate3d(1, 2, 3, 180deg) scale3d(-1, 0, .5)", + ] + }, + "transform-style": { + "links": { + "tr": "#transform-style-property", + "dev": "#transform-style-property" + }, + "tests": ["flat", "preserve-3d"] + }, + "perspective": { + "links": { + "tr": "#perspective-property", + "dev": "#perspective-property" + }, + "tests": ["none", "600px"] + }, + "perspective-origin": { + "links": { + "tr": "#perspective-origin-property", + "dev": "#perspective-origin-property" + }, + "tests": ["10px", "top", "top left", "50% 100%", "left 0%"] + }, + "backface-visibility": { + "links": { + "tr": "#backface-visibility-property", + "dev": "#backface-visibility-property" + }, + "tests": ["visible", "hidden"] + } + } +}; diff --git a/tests/css-transitions-1.js b/tests/css-transitions-1.js new file mode 100644 index 00000000..5442b5f0 --- /dev/null +++ b/tests/css-transitions-1.js @@ -0,0 +1,52 @@ +export default { + "title": "CSS Transitions", + "links": { + "tr": "css-transitions-1", + "dev": "css-transitions-1" + }, + "status": { + "stability": "stable" + }, + "properties": { + "transition-property": { + "links": { + "tr": "#transition-property-property", + "dev": "#transition-property-property" + }, + "tests": ["none", "all", "width", "width, height"] + }, + "transition-duration": { + "links": { + "tr": "#transition-duration-property", + "dev": "#transition-duration-property" + }, + "tests": ["0s", "1s", "100ms"] + }, + "transition-timing-function": { + "links": { + "tr": "#transition-timing-function-property", + "dev": "#transition-timing-function-property" + }, + "tests": [ + "ease", "linear", "ease-in", "ease-out", "ease-in-out", + "cubic-bezier(.5, .5, .5, .5)", + "cubic-bezier(.5, 1.5, .5, -2.5)", + "step-start", "step-end", "steps(3, start)", "steps(5, end)" + ] + }, + "transition-delay": { + "links": { + "tr": "#transition-delay-property", + "dev": "#transition-delay-property" + }, + "tests": ["1s", "-1s"] + }, + "transition": { + "links": { + "tr": "#transition-shorthand-property", + "dev": "#transition-shorthand-property" + }, + "tests": "1s 2s width linear" + } + } +}; diff --git a/tests/css-ui-3.js b/tests/css-ui-3.js new file mode 100644 index 00000000..9ea06818 --- /dev/null +++ b/tests/css-ui-3.js @@ -0,0 +1,66 @@ +export default { + "title": "CSS Basic User Interface Module Level 3 (CSS3 UI)", + "links": { + "tr": "css-ui-3", + "dev": "css-ui-3" + }, + "status": { + "stability": "stable", + "first-snapshot": 2015 + }, + "properties": { + "box-sizing": { + "links": { + "tr": "#box-sizing", + "dev": "#box-sizing" + }, + "tests": ["border-box", "content-box"] + }, + "outline-style": { + "links": { + "tr": "#outline-style", + "dev": "#outline-style" + }, + "tests": ["auto"] + }, + "outline-offset": { + "links": { + "tr": "#outline-offset", + "dev": "#outline-offset" + }, + "tests": ["-5px", "0", "5px"] + }, + "resize": { + "links": { + "tr": "#resize", + "dev": "#resize" + }, + "tests": ["none", "both", "horizontal", "vertical"] + }, + "text-overflow": { + "links": { + "tr": "#text-overflow", + "dev": "#text-overflow" + }, + "tests": ["clip", "ellipsis"] + }, + "cursor": { + "links": { + "tr": "#cursor", + "dev": "#cursor" + }, + "tests": [ + "url(foo.png) 2 2, auto", "none", "context-menu", "cell", "vertical-text", "alias", "copy", "no-drop", "not-allowed", + "grab", "grabbing", "ew-resize", "ns-resize", "nesw-resize", "nwse-resize", "col-resize", "row-resize", "all-scroll", "zoom-in", + "zoom-out" + ] + }, + "caret-color": { + "links": { + "tr": "#caret-color", + "dev": "#caret-color" + }, + "tests": ["auto", "green"] + } + } +}; diff --git a/tests/css-ui-4.js b/tests/css-ui-4.js new file mode 100644 index 00000000..75be694b --- /dev/null +++ b/tests/css-ui-4.js @@ -0,0 +1,104 @@ +export default { + "title": "CSS Basic User Interface Module Level 4", + "links": { + "tr": "css-ui-4", + "dev": "css-ui-4" + }, + "status": { + "stability": "experimental" + }, + "properties": { + "accent-color": { + "links": { + "tr": "#widget-accent", + "dev": "#widget-accent" + }, + "tests": ["auto", "red"] + }, + "appearance": { + "links": { + "tr": "#appearance-switching", + "dev": "#appearance-switching" + }, + "tests": [ + "auto", "none", "textfield", "menulist-button", "searchfield", "textarea", "push-button", + "slider-horizontal", "checkbox", "radio", "square-button", "menulist", "listbox", "meter", + "progress-bar", "button" + ], + }, + "input-security": { + "links": { + "tr": "#input-security", + "dev": "#input-security" + }, + "tests": ["auto", "red"] + }, + "caret": { + "links": { + "tr": "#caret", + "dev": "#caret" + }, + "tests": ["auto", "green", "bar", "green bar"] + }, + "caret-shape": { + "links": { + "tr": "#caret-shape", + "dev": "#caret-shape" + }, + "tests": ["auto", "bar", "block", "underscore"] + }, + "text-overflow": { + "links": { + "tr": "#text-overflow", + "dev": "#text-overflow" + }, + "tests": [ + "clip", "ellipsis", "fade", "fade(10px)", "fade(10%)", "'foo'", "clip clip", + "ellipsis clip", "fade clip", "fade(10px) clip", "fade(10%) clip", + "'foo' clip", "clip ellipsis", "ellipsis ellipsis", "fade ellipsis", + "fade(10px) ellipsis", "fade(10%) ellipsis", "'foo' ellipsis", "clip fade", + "ellipsis fade", "fade fade", "fade(10px) fade", "fade(10%) fade", "'foo' fade", + "clip fade(10px)", "ellipsis fade(10px)", "fade fade(10px)", + "fade(10px) fade(10px)", "fade(10%) fade(10px)", "'foo' fade(10px)", + "clip fade(10%)", "ellipsis fade(10%)", "fade fade(10%)", "fade(10px) fade(10%)", + "fade(10%) fade(10%)", "'foo' fade(10%)", "clip 'foo'", "ellipsis 'foo'", + "fade 'foo'", "fade(10px) 'foo'", "fade(10%) 'foo'", "'foo' 'foo'" + ] + }, + "user-select": { + "links": { + "tr": "#content-selection", + "dev": "#content-selection" + }, + "tests": ["auto", "text", "none", "contain", "all"] + }, + "nav-up": { + "links": { + "tr": "#nav-dir", + "dev": "#nav-dir" + }, + "tests": ["auto", "#foo", "#foo current", "#foo root"] + }, + "nav-right": { + "links": { + "tr": "#nav-dir", + "dev": "#nav-dir" + }, + "tests": ["auto", "#foo", "#foo current", "#foo root"] + }, + "nav-down": { + "links": { + "tr": "#nav-dir", + "dev": "#nav-dir" + }, + "tests": ["auto", "#foo", "#foo current", "#foo root"] + }, + "nav-left": { + "links": { + "tr": "#nav-dir", + "dev": "#nav-dir" + }, + "tests": ["auto", "#foo", "#foo current", "#foo root"] + } + } +}; diff --git a/tests/css-values-3.js b/tests/css-values-3.js new file mode 100644 index 00000000..9f9ce7ac --- /dev/null +++ b/tests/css-values-3.js @@ -0,0 +1,101 @@ +export default { + "title": "CSS Values and Units Module Level 3", + "links": { + "tr": "css-values-3", + "dev": "css-values-3" + }, + "status": { + "stability": "stable", + "first-snapshot": 2015 + }, + "values": { + "properties": [ + "width", + "padding" + ], + "rem": { + "links": { + "tr": "#rem", + "dev": "#rem", + "mdn": "length" + }, + "tests": "5rem" + }, + "ch": { + "links": { + "tr": "#ch", + "dev": "#ch", + "mdn": "length" + }, + "tests": "5ch" + }, + "vw": { + "links": { + "tr": "#vw", + "dev": "#vw", + "mdn": "length" + }, + "tests": "5vw" + }, + "vh": { + "links": { + "tr": "#vh", + "dev": "#vh", + "mdn": "length" + }, + "tests": "5vh" + }, + "vmin": { + "links": { + "tr": "#vmin", + "dev": "#vmin", + "mdn": "length" + }, + "tests": "5vmin" + }, + "vmax": { + "links": { + "tr": "#vmax", + "dev": "#vmax", + "mdn": "length" + }, + "tests": "5vmax" + }, + "Q": { + "links": { + "tr": "#Q", + "dev": "#Q", + "mdn": "length" + }, + "tests": "5Q" + }, + "attr()": { + "links": { + "tr": "#attr-notation", + "dev": "#attr-notation" + }, + "tests": ["attr(data-px)", "attr(data-px px)", "attr(data-px px, initial)"] + }, + "calc()": { + "links": { + "tr": "#calc-notation", + "dev": "#calc-notation" + }, + "tests": [ + "calc(1px + 2px)", + "calc(5px*2)", + "calc(5px/2)", + "calc(100%/3 - 2*1em - 2*1px)", + "calc(attr(data-px)*2)", + "calc(5px - 10px)", + "calc(1vw - 1px)", + "calc(calc(100%))" + ] + } + }, + "properties": { + "transform": [ + "rotate(calc(15deg + 30deg))" + ] + } +}; diff --git a/tests/css-values-4.js b/tests/css-values-4.js new file mode 100644 index 00000000..7f14a704 --- /dev/null +++ b/tests/css-values-4.js @@ -0,0 +1,295 @@ +export default { + "title": "CSS Values and Units Module Level 4", + "links": { + "tr": "css-values-4", + "dev": "css-values-4" + }, + "status": { + "stability": "experimental" + }, + "values": { + "properties": [ + "width", + "padding" + ], + "ex": { + "links": { + "tr": "#ex", + "dev": "#ex", + "mdn": "length" + }, + "tests": "5ex" + }, + "rex": { + "links": { + "tr": "#rex", + "dev": "#rex", + "mdn": "length" + }, + "tests": "5rex" + }, + "cap": { + "links": { + "tr": "#cap", + "dev": "#cap", + "mdn": "length" + }, + "tests": "5cap" + }, + "rcap": { + "links": { + "tr": "#rcap", + "dev": "#rcap", + "mdn": "length" + }, + "tests": "5rcap" + }, + "rch": { + "links": { + "tr": "#rch", + "dev": "#rcap", + "mdn": "length" + }, + "tests": "5rch" + }, + "rch": { + "links": { + "tr": "#rch", + "dev": "#rcap", + "mdn": "length" + }, + "tests": "5rch" + }, + "ic": { + "links": { + "tr": "#ic", + "dev": "#ic", + "mdn": "length" + }, + "tests": "5ic" + }, + "ric": { + "links": { + "tr": "#ric", + "dev": "#ric", + "mdn": "length" + }, + "tests": "5ric" + }, + "lh": { + "links": { + "tr": "#lh", + "dev": "#lh", + "mdn": "length" + }, + "tests": "5lh" + }, + "rlh": { + "links": { + "tr": "#rlh", + "dev": "#rlh", + "mdn": "length" + }, + "tests": "5rlh" + }, + "toggle()": { + "links": { + "tr": "#toggle-notation", + "dev": "#toggle-notation" + }, + "tests": ["toggle(1px, 2px)", "toggle(italic, normal)", "toggle(disc, circle, square, box)"] + }, + "min()": { + "links": { + "tr": "#calc-notation", + "dev": "#comp-func" + }, + "tests": ["min(10 * (1vw + 1vh) / 2, 12px)"] + }, + "max()": { + "links": { + "tr": "#calc-notation", + "dev": "#comp-func" + }, + "tests": ["max(10 * (1vw + 1vh) / 2, 12px)"] + }, + "clamp()": { + "links": { + "tr": "#calc-notation", + "dev": "#comp-func" + }, + "tests": ["clamp(12px, 10 * (1vw + 1vh) / 2, 100px)"] + }, + "calc()": { + "links": { + "tr": "#calc-func", + "dev": "#calc-func" + }, + "tests": [ + "calc(1rem * pow(1.5, -1))", + "calc(pow(e, pi) - pi)", + "calc(-18px - sign(5px)*round(down, -18px*sign(5px), 5px))", + "calc(-18px - round(to-zero, -18px, 5px))" + ] + }, + "round()": { + "links": { + "tr": "#round-func", + "dev": "#round-func" + }, + "tests": [ + "round(down, 5.5px, 5px)", + "up(down, 5.5px, 5px)", + "down(down, 5.5px, 5px)", + "round(to-zero, 5.5px, 5px)" + ] + }, + "mod()": { + "links": { + "tr": "#round-func", + "dev": "#round-func" + }, + "tests": ["mod(18px, 5px)", "mod(-140deg, -90deg)"] + }, + "rem()": { + "links": { + "tr": "#round-func", + "dev": "#round-func" + }, + "tests": ["rem(140deg, -90deg)"] + }, + "sin()": { + "links": { + "tr": "#trig-funcs", + "dev": "#trig-funcs" + }, + "tests": ["sin(45deg)", "sin(.125turn)", "sin(3.14159 / 4)"] + }, + "cos()": { + "links": { + "tr": "#trig-funcs", + "dev": "#trig-funcs" + }, + "tests": ["cos(45deg)", "cos(.125turn)", "cos(3.14159 / 4)"] + }, + "tan()": { + "links": { + "tr": "#trig-funcs", + "dev": "#trig-funcs" + }, + "tests": ["tan(1)"] + }, + "asin()": { + "links": { + "tr": "#trig-funcs", + "dev": "#trig-funcs" + }, + "tests": ["asin(1)"] + }, + "acos()": { + "links": { + "tr": "#trig-funcs", + "dev": "#trig-funcs" + }, + "tests": ["acos(-1)"] + }, + "atan()": { + "links": { + "tr": "#trig-funcs", + "dev": "#trig-funcs" + }, + "tests": ["atan(-1)", "atan(tan(90deg))", "tan(atan(infinity))"] + }, + "atan2()": { + "links": { + "tr": "#trig-funcs", + "dev": "#trig-funcs" + }, + "tests": ["atan2(15deg, 90deg)"] + }, + "pow()": { + "links": { + "tr": "#exponent-funcs", + "dev": "#exponent-funcs" + }, + "tests": ["pow(1.5, -1)"] + }, + "sqrt()": { + "links": { + "tr": "#exponent-funcs", + "dev": "#exponent-funcs" + }, + "tests": ["sqrt(2)"] + }, + "hypot()": { + "links": { + "tr": "#exponent-funcs", + "dev": "#exponent-funcs" + }, + "tests": ["hypot(2)", "hypot(2, 2)"] + }, + "log()": { + "links": { + "tr": "#exponent-funcs", + "dev": "#exponent-funcs" + }, + "tests": ["log(2)"] + }, + "exp()": { + "links": { + "tr": "#exponent-funcs", + "dev": "#exponent-funcs" + }, + "tests": ["exp(2)"] + }, + "abs()": { + "links": { + "tr": "#sign-funcs", + "dev": "#sign-funcs" + }, + "tests": ["abs(-2)"] + }, + "sign()": { + "links": { + "tr": "#sign-funcs", + "dev": "#sign-funcs" + }, + "tests": ["sign(10%)"] + }, + "e": { + "links": { + "tr": "#calc-constants", + "dev": "#calc-constants" + }, + "tests": ["calc(e)"] + }, + "pi": { + "links": { + "tr": "#calc-constants", + "dev": "#calc-constants" + }, + "tests": ["calc(pi)"] + }, + "infinity": { + "links": { + "tr": "#calc-error-constants", + "dev": "#ccalc-error-constants" + }, + "tests": ["calc(infinity)"] + }, + "-infinity": { + "links": { + "tr": "#calc-error-constants", + "dev": "#ccalc-error-constants" + }, + "tests": ["calc(-infinity)"] + }, + "NaN": { + "links": { + "tr": "#calc-error-constants", + "dev": "#ccalc-error-constants" + }, + "tests": ["calc(NaN)"] + } + } +}; diff --git a/tests/css-variables-1.js b/tests/css-variables-1.js new file mode 100644 index 00000000..0fb395dc --- /dev/null +++ b/tests/css-variables-1.js @@ -0,0 +1,31 @@ +export default { + "title": "CSS Custom Properties for Cascading Variables Module Level 1", + "links": { + "tr": "css-variables-1", + "dev": "css-variables-1" + }, + "status": { + "stability": "stable", + "first-snapshot": 2018 + }, + "declaration": { + "--*": { + "links": { + "tr": "#defining-variables", + "dev": "#defining-variables" + }, + "tests": ["--foo: 2px"] + }, + "var(--*)": { + "links": { + "tr": "#using-variables", + "dev": "#using-variables", + "mdn": "--*" + }, + "tests": [ + "width: var(--foo)", "width: var(--FOO)", "width: var(--foo, 4px)", + "color: rgba(255, 255, 255, var(--foo, .2) )" + ] + } + } +}; diff --git a/tests/css-will-change-1.js b/tests/css-will-change-1.js new file mode 100644 index 00000000..bacea113 --- /dev/null +++ b/tests/css-will-change-1.js @@ -0,0 +1,19 @@ +export default { + "title": "CSS Will Change Module Level 1", + "links": { + "tr": "css-will-change-1", + "dev": "css-will-change-1" + }, + "status": { + "stability": "stable" + }, + "properties": { + "will-change": { + "links": { + "tr": "#will-change", + "dev": "#will-change" + }, + "tests": ["scroll-position", "contents", "transform", "top, left"] + } + } +}; diff --git a/tests/css-writing-modes-3.js b/tests/css-writing-modes-3.js new file mode 100644 index 00000000..abef0918 --- /dev/null +++ b/tests/css-writing-modes-3.js @@ -0,0 +1,41 @@ +export default { + "title": "CSS Writing Modes Level 3", + "links": { + "tr": "css-writing-modes-3", + "dev": "css-writing-modes-3" + }, + "status": { + "stability": "stable", + "first-snapshot": 2017 + }, + "properties": { + "unicode-bidi": { + "links": { + "tr": "#unicode-bidi", + "dev": "#unicode-bidi" + }, + "tests": ["isolate", "isolate-override", "plaintext"] + }, + "writing-mode": { + "links": { + "tr": "#block-flow", + "dev": "#block-flow" + }, + "tests": ["horizontal-tb", "vertical-rl", "vertical-lr"] + }, + "text-orientation": { + "links": { + "tr": "#text-orientation", + "dev": "#text-orientation" + }, + "tests": ["mixed", "upright", "sideways"] + }, + "text-combine-upright": { + "links": { + "tr": "#text-combine-upright", + "dev": "#text-combine-upright" + }, + "tests": ["none", "all"] + } + } +}; diff --git a/tests/css-writing-modes-4.js b/tests/css-writing-modes-4.js new file mode 100644 index 00000000..af9b4928 --- /dev/null +++ b/tests/css-writing-modes-4.js @@ -0,0 +1,26 @@ +export default { + "title": "CSS Writing Modes Level 4", + "links": { + "tr": "css-writing-modes-4", + "dev": "css-writing-modes-4" + }, + "status": { + "stability": "experimental" + }, + "properties": { + "writing-mode": { + "links": { + "tr": "#block-flow", + "dev": "#block-flow" + }, + "tests": ["sideways-rl", "sideways-lr"] + }, + "text-combine-upright": { + "links": { + "tr": "#text-combine-upright", + "dev": "#text-combine-upright" + }, + "tests": ["digits 2"] + } + } +}; diff --git a/tests/css2-cascade.js b/tests/css2-cascade.js new file mode 100644 index 00000000..8aa512ba --- /dev/null +++ b/tests/css2-cascade.js @@ -0,0 +1,26 @@ +export default { + "title": "CSS 2 Assigning property values, Cascading, and Inheritance", + "links": { + "tr": "CSS22/cascade.html", + "dev": "css2/" + }, + "status": { + "stability": "stable", + "first-snapshot": 1998, + "last-snapshot": 1998 + }, + "values": { + "properties": [ + "color", + "border-color" + ], + "inherit": { + "links": { + + "tr": "#value-def-inherit", + "dev": "#value-def-inherit" + }, + "tests": "inherit" + } + } +}; diff --git a/tests/css2-colors.js b/tests/css2-colors.js new file mode 100644 index 00000000..e7e83f17 --- /dev/null +++ b/tests/css2-colors.js @@ -0,0 +1,75 @@ +export default { + "title": "CSS 2 Colors and Backgrounds", + "links": { + "tr": "CSS22/colors.html", + "dev": "css2/" + }, + "status": { + "stability": "stable", + "first-snapshot": 1998, + "last-snapshot": 1998 + }, + "properties": { + "background-attachment": { + "links": { + "tr": "#propdef-background-attachment", + "dev": "#propdef-background-attachment" + }, + "tests": ["scroll", "fixed"] + }, + "background-color": { + "links": { + "tr": "#propdef-background-color", + "dev": "#propdef-background-color" + }, + "tests": [ + "black", "#00f", "#000000", "rgb(255, 255, 255)", + "rgb(100%, 50%, 50%)", "transparent" + ] + }, + "background-image": { + "links": { + "tr": "#propdef-background-image", + "dev": "#propdef-background-image" + }, + "tests": ["none", "url('image.png')", "url(image.png)"] + }, + "background-position": { + "links": { + "tr": "#propdef-background-position", + "dev": "#propdef-background-position" + }, + "tests": [ + "10% 100px", "100px center", "center 10%", "left", "center", + "right", "top", "bottom", "left center", "center bottom" + ] + }, + "background-repeat": { + "links": { + "tr": "#propdef-background-repeat", + "dev": "#propdef-background-repeat" + }, + "tests": ["repeat", "repeat-x", "repeat-y", "no-repeat"] + }, + "background": { + "links": { + "tr": "#propdef-background", + "dev": "#propdef-background" + }, + "tests": [ + "none", "black", "url('image.png')", "repeat-x", "fixed", "10% center", + "#ffffff url('image.png')", "url(image.png) repeat-y", "scroll center 100px" + ] + }, + "color": { + "links": { + "tr": "#colors", + "dev": "#colors" + }, + "tests": [ + "black", "#00f", "#000000", "rgb(255, 255, 255)", + "rgb(100%, 50%, 50%)" + ] + } + } +}; diff --git a/tests/css2-fonts.js b/tests/css2-fonts.js new file mode 100644 index 00000000..dd50dba6 --- /dev/null +++ b/tests/css2-fonts.js @@ -0,0 +1,70 @@ +export default { + "title": "CSS 2 Fonts", + "links": { + "tr": "CSS22/fonts.html", + "dev": "css2/" + }, + "status": { + "stability": "stable", + "first-snapshot": 1998, + "last-snapshot": 1998 + }, + "properties": { + "font-family": { + "links": { + "tr": "#font-family-prop", + "dev": "#font-family-prop" + }, + "tests": [ + "Arial", "\"Helvetica\"", "'Some font'", "serif", "sans-serif", + "cursive", "fantasy", "monospace", "'Some font', Arial, sans-serif" + ] + }, + "font-size": { + "links": { + "tr": "#font-size-props", + "dev": "#font-size-props" + }, + "tests": [ + "xx-small", "x-small", "small", "medium", "large", "x-large", "xx-large", + "larger", "smaller", "1.5em", "80%" + ] + }, + "font-style": { + "links": { + "tr": "#font-styling", + "dev": "#font-styling" + }, + "tests": ["normal", "italic", "oblique"] + }, + "font-variant": { + "links": { + "tr": "#small-caps", + "dev": "#small-caps" + }, + "tests": ["normal", "small-caps"] + }, + "font-weight": { + "links": { + "tr": "#font-boldness", + "dev": "#font-boldness" + }, + "tests": [ + "normal", "bold", "bolder", "lighter", "100", "200", "300", "400", "500", + "600", "700", "800", "900" + ] + }, + "font": { + "links": { + "tr": "#font-shorthand", + "dev": "#font-shorthand" + }, + "tests": [ + "caption", "icon", "menu", "message-box", "small-caption", "status-bar", + "2em Arial", "italic 2em Arial", "small-caps 2em Arial", "bold 2em Arial", + "italic 2em \'Custom font\', Arial, sans-serif", "small-caps 2em Arial", + "bolder 2em Arial", "italic 200 2em Arial", "2em / 2 Arial" + ] + } + } +}; diff --git a/tests/css2-generate.js b/tests/css2-generate.js new file mode 100644 index 00000000..bdd49ce2 --- /dev/null +++ b/tests/css2-generate.js @@ -0,0 +1,101 @@ +export default { + "title": "CSS 2 Generated Content, Automatic Numbering, and Lists", + "links": { + "tr": "CSS22/generate.html", + "dev": "css2/" + }, + "status": { + "stability": "stable", + "first-snapshot": 1998, + "last-snapshot": 1998 + }, + "properties": { + "content": { + "links": { + "tr": "#content", + "dev": "#content①" + }, + "tests": [ + "normal", "none", "\"content\"", "'content'", "url(image.png)", "attr(x)", + "open-quote", "close-quote", "no-open-quote", "no-close-quote", + "open-quote close-quote", "\"content\" url(image.png)" + ] + }, + "counter-increment": { + "links": { + "tr": "#counters", + "dev": "#counters" + }, + "tests": [ + "none", "example-counter 1", "example-counter1 2 example-counter2" + ] + }, + "counter-reset": { + "links": { + "tr": "#counters", + "dev": "#counters" + }, + "tests": [ + "none", "example-counter 1", "example-counter1 2 example-counter2" + ] + }, + "list-style-image": { + "links": { + "tr": "#propdef-list-style-image", + "dev": "#propdef-list-style-image" + }, + "tests": ["none", "url(image.png)"] + }, + "list-style-position": { + "links": { + "tr": "#propdef-list-style-position", + "dev": "#propdef-list-style-position" + }, + "tests": ["inside", "outside"] + }, + "list-style-type": { + "links": { + "tr": "#propdef-list-style-type", + "dev": "#propdef-list-style-type" + }, + "tests": [ + "disc", "circle", "square", "decimal", "decimal-leading-zero", + "lower-roman", "upper-roman", "lower-greek", "lower-latin", "upper-latin", + "armenian", "georgian", "lower-alpha", "upper-alpha", "none" + ] + }, + "list-style": { + "links": { + "tr": "#propdef-list-style", + "dev": "#propdef-list-style" + }, + "tests": [ + "disc", "inside", "url('image.png')", "circle outside", + "square url(image.png)", "decimal inside url(image.png)" + ] + }, + "quotes": { + "links": { + "tr": "#quotes-specify", + "dev": "#quotes-specify" + }, + "tests": ["none", "\"»\" \"«\"", "'\"' '\"' \"'\" \"'\""] + } + }, + "selectors": { + ":before": { + "links": { + "tr": "#before-after-content", + "dev": "#before-after-content" + }, + "tests": ":before" + }, + ":after": { + "links": { + "tr": "#before-after-content", + "dev": "#before-after-content" + }, + "tests": ":after" + } + } +}; diff --git a/tests/css2-media.js b/tests/css2-media.js new file mode 100644 index 00000000..fc0f4c5e --- /dev/null +++ b/tests/css2-media.js @@ -0,0 +1,26 @@ +export default { + "title": "CSS 2 Media types", + "links": { + "tr": "CSS22/media.html", + "dev": "css2/" + }, + "status": { + "stability": "stable", + "first-snapshot": 1998, + "last-snapshot": 1998 + }, + "@rules": { + "@media": { + "links": { + "tr": "#at-media-rule", + "dev": "#at-media-rule" + }, + "tests": [ + "@media all {\n p {\n color: green;\n }\n}", + "@media print {\n p {\n color: green;\n }\n}", + "@media screen {\n p {\n color: green;\n }\n}", + "@media print, screen {\n p {\n color: green;\n }\n}" + ] + } + } +}; diff --git a/tests/css2-page.js b/tests/css2-page.js new file mode 100644 index 00000000..90ab2574 --- /dev/null +++ b/tests/css2-page.js @@ -0,0 +1,120 @@ +export default { + "title": "CSS 2 Paged Media", + "links": { + "tr": "CSS22/page.html", + "dev": "css2/" + }, + "status": { + "stability": "stable", + "first-snapshot": 1998, + "last-snapshot": 1998 + }, + "@rules": { + "@page": { + "links": { + "tr": "#page-box", + "dev": "#page-box" + }, + "tests": [ + "@page { margin: 2cm; }", + "@page :left { margin: 2cm; }", + "@page :right { margin: 2cm; }", + "@page :first { margin: 2cm; }" + ] + } + }, + "descriptors": { + "@page/margin": { + "links": { + "tr": "#page-box", + "dev": "#page-box" + }, + "tests": [ + "2cm", + "4%", + "auto" + ] + }, + "@page/margin-top": { + "links": { + "tr": "#page-box", + "dev": "#page-box" + }, + "tests": [ + "2cm", + "4%", + "auto" + ] + }, + "@page/margin-right": { + "links": { + "tr": "#page-box", + "dev": "#page-box" + }, + "tests": [ + "2cm", + "4%", + "auto" + ] + }, + "@page/margin-bottom": { + "links": { + "tr": "#page-box", + "dev": "#page-box" + }, + "tests": [ + "2cm", + "4%", + "auto" + ] + }, + "@page/margin-left": { + "links": { + "tr": "#page-box", + "dev": "#page-box" + }, + "tests": [ + "2cm", + "4%", + "auto" + ] + }, + }, + "properties": { + "orphans": { + "links": { + "tr": "#break-inside", + "dev": "#break-inside" + }, + "tests": ["1", "2"] + }, + "page-break-after": { + "links": { + "tr": "#page-break-props", + "dev": "#page-break-props" + }, + "tests": ["auto", "always", "avoid", "left", "right"] + }, + "page-break-before": { + "links": { + "tr": "#page-break-props", + "dev": "#page-break-props" + }, + "tests": ["auto", "always", "avoid", "left", "right"] + }, + "page-break-inside": { + "links": { + "tr": "#page-break-props", + "dev": "#page-break-props" + }, + "tests": ["auto", "avoid"] + }, + "widows": { + "links": { + "tr": "#break-inside", + "dev": "#break-inside" + }, + "tests": ["1", "2"] + } + } +}; diff --git a/tests/css2-selectors.js b/tests/css2-selectors.js new file mode 100644 index 00000000..69d826c3 --- /dev/null +++ b/tests/css2-selectors.js @@ -0,0 +1,138 @@ +export default { + "title": "CSS 2 Selectors", + "links": { + "tr": "CSS22/selector.html", + "dev": "css2/" + }, + "status": { + "stability": "stable", + "first-snapshot": 1998, + "last-snapshot": 1998 + }, + "selectors": { + "Universal selector": { + "links": { + "tr": "#universal-selector", + "dev": "#universal-selector" + }, + "tests": "*" + }, + "Type selector": { + "links": { + "tr": "#type-selectors", + "dev": "#type-selectors" + }, + "tests": "h1" + }, + "Descendant selector": { + "links": { + "tr": "#descendant-selectors", + "dev": "#descendant-selectors" + }, + "tests": "div p" + }, + "Child selector": { + "links": { + "tr": "#child-selectors", + "dev": "#child-selectors" + }, + "tests": "div > p" + }, + "Adjacent sibling selector": { + "links": { + "tr": "#adjacent-selectors", + "dev": "#adjacent-selectors" + }, + "tests": "div + p" + }, + "Attribute selectors": { + "links": { + "tr": "#attribute-selectors", + "dev": "#attribute-selectors" + }, + "tests": [ + "[title]", "[title=example]", "[title=\"example\"]", "[rel~=copyright]", + "[rel~=\"copyright\"]", "[lang|=en]", "[lang|=\"en\"]" + ] + }, + "Class selector": { + "links": { + "tr": "#class-html", + "dev": "#class-html" + }, + "tests": [ + ".class" + ] + }, + "ID selector": { + "links": { + "tr": "#id-selectors", + "dev": "#id-selectors" + }, + "tests": "#id" + }, + ":first-child": { + "links": { + "tr": "#first-child", + "dev": "#first-child" + }, + "tests": ":first-child" + }, + ":link": { + "links": { + "tr": "#link-pseudo-classes", + "dev": "#link-pseudo-classes" + }, + "tests": ":link" + }, + ":visited": { + "links": { + "tr": "#link-pseudo-classes", + "dev": "#link-pseudo-classes" + }, + "tests": ":visited" + }, + ":hover": { + "links": { + "tr": "#dynamic-pseudo-classes", + "dev": "#dynamic-pseudo-classes" + }, + "tests": ":hover" + }, + ":active": { + "links": { + "tr": "#dynamic-pseudo-classes", + "dev": "#dynamic-pseudo-classes" + }, + "tests": ":active" + }, + ":focus": { + "links": { + "tr": "#dynamic-pseudo-classes", + "dev": "#dynamic-pseudo-classes" + }, + "tests": ":focus" + }, + ":lang()": { + "links": { + "tr": "#lang", + "dev": "#lang" + }, + "tests": [":lang(en)", ":lang(en-US)"] + }, + ":first-line": { + "links": { + "tr": "#first-line-pseudo", + "dev": "#first-line-pseudo" + }, + "tests": ":first-line" + }, + ":first-letter": { + "links": { + "tr": "#first-letter", + "dev": "#first-letter" + }, + "tests": ":first-letter" + } + } +}; \ No newline at end of file diff --git a/tests/css2-tables.js b/tests/css2-tables.js new file mode 100644 index 00000000..0cc8d9ee --- /dev/null +++ b/tests/css2-tables.js @@ -0,0 +1,49 @@ +export default { + "title": "CSS 2 Tables", + "links": { + "tr": "CSS22/tables.html", + "dev": "css2/" + }, + "status": { + "stability": "stable", + "first-snapshot": 1998, + "last-snapshot": 1998 + }, + "properties": { + "border-collapse": { + "links": { + "tr": "#propdef-border-collapse", + "dev": "#propdef-border-collapse" + }, + "tests": ["collapse", "separate"] + }, + "border-spacing": { + "links": { + "tr": "#propdef-border-spacing", + "dev": "#propdef-border-spacing" + }, + "tests": ["10px", "1em 0.5cm"] + }, + "caption-side": { + "links": { + "tr": "#caption-position", + "dev": "#caption-position" + }, + "tests": ["top", "bottom"] + }, + "empty-cells": { + "links": { + "tr": "#empty-cells", + "dev": "#empty-cells" + }, + "tests": ["show", "hide"] + }, + "table-layout": { + "links": { + "tr": "#width-layout", + "dev": "#width-layout" + }, + "tests": ["auto", "fixed"] + } + } +}; diff --git a/tests/css2-text.js b/tests/css2-text.js new file mode 100644 index 00000000..e3f5a002 --- /dev/null +++ b/tests/css2-text.js @@ -0,0 +1,66 @@ +export default { + "title": "CSS 2 Text", + "links": { + "tr": "CSS22/text.html", + "dev": "css2/" + }, + "status": { + "stability": "stable", + "first-snapshot": 1998, + "last-snapshot": 1998 + }, + "properties": { + "letter-spacing": { + "links": { + "tr": "#propdef-letter-spacing", + "dev": "#propdef-letter-spacing" + }, + "tests": ["normal", "10px"] + }, + "text-align": { + "links": { + "tr": "#alignment-prop", + "dev": "#alignment-prop" + }, + "tests": ["left", "right", "center", "justify"] + }, + "text-decoration": { + "links": { + "tr": "#lining-striking-props", + "dev": "#lining-striking-props" + }, + "tests": [ + "none", "underline", "overline", "line-through", "blink", + "underline overline", "underline overline line-through" + ] + }, + "text-indent": { + "links": { + "tr": "#indentation-prop", + "dev": "#indentation-prop" + }, + "tests": ["10px", "10%"] + }, + "text-transform": { + "links": { + "tr": "#caps-prop", + "dev": "#caps-prop" + }, + "tests": ["none", "capitalize", "uppercase", "lowercase"] + }, + "white-space": { + "links": { + "tr": "#white-space-prop", + "dev": "#white-space-prop" + }, + "tests": ["normal", "pre", "nowrap", "pre-wrap", "pre-line"] + }, + "word-spacing": { + "links": { + "tr": "#propdef-word-spacing", + "dev": "#propdef-word-spacing" + }, + "tests": ["normal", "10px"] + } + } +}; diff --git a/tests/css2-ui.js b/tests/css2-ui.js new file mode 100644 index 00000000..9116138f --- /dev/null +++ b/tests/css2-ui.js @@ -0,0 +1,63 @@ +export default { + "title": "CSS 2 User Interface", + "links": { + "tr": "CSS22/ui.html", + "dev": "css2/" + }, + "status": { + "stability": "stable", + "first-snapshot": 1998, + "last-snapshot": 1998 + }, + "properties": { + "cursor": { + "links": { + "tr": "#cursor-props", + "dev": "#cursor-props" + }, + "tests": [ + "auto", "crosshair", "default", "pointer", "move", "e-resize", + "ne-resize", "nw-resize", "n-resize", "se-resize", "sw-resize", + "s-resize", "w-resize", "text", "wait", "help", "progress", + "url(cursor.png), auto", "url(cursor.svg), url(cursor.png), pointer" + ] + }, + "outline-color": { + "links": { + "tr": "#dynamic-outlines", + "dev": "#dynamic-outlines" + }, + "tests": [ + "black", "#00f", "#000000", "rgb(255, 255, 255)", + "rgb(100%, 50%, 50%)" + ] + }, + "outline-style": { + "links": { + "tr": "#dynamic-outlines", + "dev": "#dynamic-outlines" + }, + "tests": [ + "none", "dotted", "dashed", "solid", "double", "groove", + "ridge", "inset", "outset" + ] + }, + "outline-width": { + "links": { + "tr": "#dynamic-outlines", + "dev": "#dynamic-outlines" + }, + "tests": ["thin", "medium", "thick", "5px"] + }, + "outline": { + "links": { + "tr": "#dynamic-outlines", + "dev": "#dynamic-outlines" + }, + "tests": [ + "black", "dotted", "5px", "#ff0000 dashed", "solid 0.2em", + "rgb(0, 0, 255) 0.1ex", "#0f0 double 0.8mm" + ] + } + } +}; diff --git a/tests/css2-visudet.js b/tests/css2-visudet.js new file mode 100644 index 00000000..da6623f7 --- /dev/null +++ b/tests/css2-visudet.js @@ -0,0 +1,73 @@ +export default { + "title": "CSS 2 Visual Formatting Model Details", + "links": { + "tr": "CSS22/visudet.html", + "dev": "css2/" + }, + "status": { + "stability": "stable", + "first-snapshot": 1998, + "last-snapshot": 1998 + }, + "properties": { + "height": { + "links": { + "tr": "#the-height-property", + "dev": "#the-height-property" + }, + "tests": ["auto", "100px", "10%"] + }, + "line-height": { + "links": { + "tr": "#propdef-line-height", + "dev": "#propdef-line-height" + }, + "tests": ["normal", "2", "2em", "150%"] + }, + "max-height": { + "links": { + "tr": "#min-max-heights", + "dev": "#min-max-heights" + }, + "tests": ["none", "100px", "80%"] + }, + "max-width": { + "links": { + "tr": "#min-max-widths", + "dev": "#min-max-widths" + }, + "tests": ["none", "100px", "80%"] + }, + "min-height": { + "links": { + "tr": "#min-max-heights", + "dev": "#min-max-heights" + }, + "tests": ["100px", "10%"] + }, + "min-width": { + "links": { + "tr": "#min-max-widths", + "dev": "#min-max-widths" + }, + "tests": ["100px", "10%"] + }, + "vertical-align": { + "links": { + "tr": "#propdef-vertical-align", + "dev": "#propdef-vertical-align" + }, + "tests": [ + "baseline", "sub", "super", "top", "text-top", "middle", "bottom", + "text-bottom", "10px", "10%" + ] + }, + "width": { + "links": { + "tr": "#the-width-property", + "dev": "#the-width-property" + }, + "tests": ["auto", "100px", "10%"] + } + } +}; diff --git a/tests/css2-visufx.js b/tests/css2-visufx.js new file mode 100644 index 00000000..1167240e --- /dev/null +++ b/tests/css2-visufx.js @@ -0,0 +1,35 @@ +export default { + "title": "CSS 2 Visual Effects", + "links": { + "tr": "CSS22/visufx.html", + "dev": "css2/" + }, + "status": { + "stability": "stable", + "first-snapshot": 1998, + "last-snapshot": 1998 + }, + "properties": { + "clip": { + "links": { + "tr": "#clipping", + "dev": "#clipping" + }, + "tests": ["auto", "rect(1px, 10em, 3ex, 0.2mm)"] + }, + "overflow": { + "links": { + "tr": "#overflow", + "dev": "#overflow①" + }, + "tests": ["auto", "visible", "hidden", "scroll"] + }, + "visibility": { + "links": { + "tr": "#visibility", + "dev": "#visibility" + }, + "tests": ["visible", "hidden", "collapse"] + } + } +}; diff --git a/tests/css2-visuren.js b/tests/css2-visuren.js new file mode 100644 index 00000000..a0d5d57d --- /dev/null +++ b/tests/css2-visuren.js @@ -0,0 +1,98 @@ +export default { + "title": "CSS 2 Visual Formatting Model", + "links": { + "tr": "CSS22/visuren.html", + "dev": "css2/" + }, + "status": { + "stability": "stable", + "first-snapshot": 1998, + "last-snapshot": 1998 + }, + "properties": { + "bottom": { + "links": { + "tr": "#position-props", + "dev": "#position-props" + }, + "tests": ["auto", "100px", "10%"] + }, + "clear": { + "links": { + "tr": "#flow-control", + "dev": "#flow-control" + }, + "tests": ["none", "left", "right", "both"] + }, + "direction": { + "links": { + "tr": "#propdef-direction", + "dev": "#propdef-direction" + }, + "tests": ["ltr", "rtl"] + }, + "display": { + "links": { + "tr": "#display-prop", + "dev": "#display-prop" + }, + "tests": [ + "none", "inline", "block", "list-item", "inline-block", "table", + "inline-table", "table-row-group", "table-header-group", + "table-footer-group", "table-row", "table-column-group", + "table-column", "table-cell", "table-caption" + ] + }, + "float": { + "links": { + "tr": "#float-position", + "dev": "#float-position" + }, + "tests": ["none", "left", "right"] + }, + "left": { + "links": { + "tr": "#position-props", + "dev": "#position-props" + }, + "tests": ["auto", "100px", "10%"] + }, + "position": { + "links": { + "tr": "#choose-position", + "dev": "#choose-position" + }, + "tests": ["static", "relative", "absolute", "fixed"] + }, + "right": { + "links": { + "tr": "#position-props", + "dev": "#position-props" + }, + "tests": ["auto", "100px", "10%"] + }, + "top": { + "links": { + "tr": "#position-props", + "dev": "#position-props" + }, + "tests": ["100px", "10%", "auto"] + }, + "unicode-bidi": { + "links": { + "tr": "#propdef-unicode-bidi", + "dev": "#propdef-unicode-bidi" + }, + "tests": ["normal", "embed", "bidi-override"] + }, + "z-index": { + "links": { + "tr": "#z-index", + "dev": "#z-index" + }, + "tests": [ + "auto", "1", "-1" + ] + } + } +}; diff --git a/tests/cssom-view-1.js b/tests/cssom-view-1.js new file mode 100644 index 00000000..6e77a520 --- /dev/null +++ b/tests/cssom-view-1.js @@ -0,0 +1,19 @@ +export default { + "title": "CSSOM View Module", + "links": { + "tr": "cssom-view-1", + "dev": "cssom-view-1" + }, + "status": { + "stability": "experimental" + }, + "properties": { + "scroll-behavior": { + "links": { + "tr": "#smooth-scrolling", + "dev": "#smooth-scrolling" + }, + "tests": ["auto", "smooth "] + } + } +}; diff --git a/tests/fill-stroke-3.js b/tests/fill-stroke-3.js new file mode 100644 index 00000000..d1263ae8 --- /dev/null +++ b/tests/fill-stroke-3.js @@ -0,0 +1,258 @@ +export default { + "title": "CSS Fill and Stroke Module Level 3", + "links": { + "tr": "fill-stroke-3", + "dev": "fill-stroke-3", + "devtype": "fxtf" + }, + "status": { + "stability": "experimental" + }, + "properties": { + "fill": { + "links": { + "tr": "#fill-shorthand", + "dev": "#fill-shorthand" + }, + "tests": [ + "url(foo.png), url(bar.svg)", + "top left / 50% 60%", + "border-box", + "border-box padding-box", + "url(foo.png) bottom right / cover padding-box content-box" + ] + }, + "fill-rule": { + "links": { + "tr": "#fill-rule", + "dev": "#fill-rule" + }, + "tests": ["nonzero", "evenodd"] + }, + "fill-break": { + "links": { + "tr": "#fill-break", + "dev": "#fill-break" + }, + "tests": ["bounding-box", "slice", "clone"] + }, + "fill-color": { + "links": { + "tr": "#fill-color", + "dev": "#fill-color" + }, + "tests": "green" + }, + "fill-image": { + "links": { + "tr": "#fill-image", + "dev": "#fill-image" + }, + "tests": [ + "url(foo.png)", + "image('sprites.png#xywh=10,30,60,20')", + "image('wavy.svg', 'wavy.png' , 'wavy.gif')", + "image('dark.png', black)", + "image(green)", + "linear-gradient(to bottom, yellow 0%, blue 100%)", + "child", + "child(2)" + ] + }, + "fill-origin": { + "links": { + "tr": "#fill-origin", + "dev": "#fill-origin" + }, + "tests": ["match-parent", "fill-box", "stroke-box", "content-box", "padding-box", "border-box"] + }, + "fill-position": { + "links": { + "tr": "#fill-position", + "dev": "#fill-position" + }, + "tests": ["center", "left 50%", "bottom 10px right 20px", "bottom 10px right", "top right 10px"] + }, + "fill-size": { + "links": { + "tr": "#fill-size", + "dev": "#fill-size" + }, + "tests": ["auto", "cover", "contain", "10px", "50%", "10px auto", "auto 10%", "50em 50%"] + }, + "fill-repeat": { + "links": { + "tr": "#fill-repeat", + "dev": "#fill-repeat" + }, + "tests": [ + "repeat-x", "repeat-y", "repeat", "space", "round", "no-repeat", "repeat repeat", + "space repeat", "round repeat", "no-repeat repeat", "repeat space", "space space", + "round space", "no-repeat space", "repeat round", "space round", "round round", + "no-repeat round", "repeat no-repeat", "space no-repeat", "round no-repeat", + "no-repeat no-repeat" + ] + }, + "fill-opacity": { + "links": { + "tr": "#fill-opacity", + "dev": "#fill-opacity" + }, + "tests": ["0.5", "45%"] + }, + "stroke": { + "links": { + "tr": "#stroke-shorthand", + "dev": "#stroke-shorthand" + }, + "tests": [ + "url(foo.png), url(bar.svg)", + "top left / 50% 60%", + "border-box", + "border-box padding-box", + "url(foo.png) bottom right / cover padding-box content-box" + ] + }, + "stroke-width": { + "links": { + "tr": "#stroke-width", + "dev": "#stroke-width" + }, + "tests": ["0", "1px", "25%"] + }, + "stroke-align": { + "links": { + "tr": "#stroke-align", + "dev": "#stroke-align" + }, + "tests": ["center", "inset", "outset "] + }, + "stroke-linecap": { + "links": { + "tr": "#stroke-linecap", + "dev": "#stroke-linecap" + }, + "tests": ["butt", "round", "square "] + }, + "stroke-linejoin": { + "links": { + "tr": "#stroke-linejoin", + "dev": "#stroke-linejoin" + }, + "tests": [ + "crop", "arcs", "miter", "bevel", "round", "fallback", + "crop bevel", "arcs round", "miter fallback" + ] + }, + "stroke-miterlimit": { + "links": { + "tr": "#stroke-miterlimit", + "dev": "#stroke-miterlimit" + }, + "tests": "4" + }, + "stroke-break": { + "links": { + "tr": "#stroke-break", + "dev": "#stroke-break" + }, + "tests": ["bounding-box", "slice", "clone "] + }, + "stroke-dasharray": { + "links": { + "tr": "#stroke-dasharray", + "dev": "#stroke-dasharray" + }, + "tests": ["none", "0", "4px", "4px 12%", "4px 12% 3em", "4px 12% 3em 5px", "4px 12% 3em 5px 10%"] + }, + "stroke-dashoffset": { + "links": { + "tr": "#stroke-dashoffset", + "dev": "#stroke-dashoffset" + }, + "tests": ["0", "4px", "12%"] + }, + "stroke-dash-corner": { + "links": { + "tr": "#corner-control", + "dev": "#corner-control" + }, + "tests": ["none", "15px"] + }, + "stroke-dash-justify": { + "links": { + "tr": "#corner-control", + "dev": "#corner-control" + }, + "tests": [ + "none", "stretch", "compress", "dashes", "gaps", + "stretch dashes", "compress gaps dashes", + "stretch gaps", "compress dashes gaps" + ] + }, + "stroke-color": { + "links": { + "tr": "#stroke-color", + "dev": "#stroke-color" + }, + "tests": "green" + }, + "stroke-image": { + "links": { + "tr": "#stroke-image", + "dev": "#stroke-image" + }, + "tests": [ + "url(foo.png)", + "image('sprites.png#xywh=10,30,60,20')", + "image('wavy.svg', 'wavy.png' , 'wavy.gif')", + "image('dark.png', black)", + "image(green)", + "linear-gradient(to bottom, yellow 0%, blue 100%)", + "child", + "child(2)" + ] + }, + "stroke-origin": { + "links": { + "tr": "#stroke-origin", + "dev": "#stroke-origin" + }, + "tests": ["match-parent", "fill-box", "stroke-box", "content-box", "padding-box", "border-box"] + }, + "stroke-position": { + "links": { + "tr": "#stroke-position", + "dev": "#stroke-position" + }, + "tests": ["center", "left 50%", "bottom 10px right 20px", "bottom 10px right", "top right 10px"] + }, + "stroke-size": { + "links": { + "tr": "#stroke-size", + "dev": "#stroke-size" + }, + "tests": ["auto", "cover", "contain", "10px", "50%", "10px auto", "auto 10%", "50em 50%"] + }, + "stroke-repeat": { + "links": { + "tr": "#stroke-repeat", + "dev": "#stroke-repeat" + }, + "tests": [ + "repeat-x", "repeat-y", "repeat", "space", "round", "no-repeat", "repeat repeat", + "space repeat", "round repeat", "no-repeat repeat", "repeat space", "space space", + "round space", "no-repeat space", "repeat round", "space round", "round round", + "no-repeat round", "repeat no-repeat", "space no-repeat", "round no-repeat", + "no-repeat no-repeat" + ] + }, + "stroke-opacity": { + "links": { + "tr": "#stroke-opacity", + "dev": "#stroke-opacity" + }, + "tests": ["0.5", "45%"] + } + } +}; diff --git a/tests/filter-effects-1.js b/tests/filter-effects-1.js new file mode 100644 index 00000000..8274c15b --- /dev/null +++ b/tests/filter-effects-1.js @@ -0,0 +1,63 @@ +export default { + "title": "Filter Effects Module Level 1", + "links": { + "tr": "filter-effects-1", + "dev": "filter-effects-1", + "devtype": "fxtf" + }, + "status": { + "stability": "stable" + }, + "properties": { + "filter": { + "links": { + "tr": "#FilterProperty", + "dev": "#FilterProperty" + }, + "tests": [ + "none", + "url(#id)", + "url(image.svg#id)", + "blur(5px)", + "brightness(0.5)", + "contrast(150%)", + "drop-shadow(15px 15px 15px black)", + "grayscale(50%)", + "hue-rotate(50deg)", + "invert(50%)", + "opacity(50%)", + "sepia(50%)", + "saturate(150%)", + "grayscale(100%) sepia(100%)" + ] + }, + "flood-color": { + "links": { + "tr": "#FloodColorProperty", + "dev": "#FloodColorProperty" + }, + "tests": ["black", "#FFF"] + }, + "flood-opacity": { + "links": { + "tr": "#FloodOpacityProperty", + "dev": "#FloodOpacityProperty" + }, + "tests": ["1", "0", "0.2", "45%"] + }, + "color-interpolation-filters": { + "links": { + "tr": "#ColorInterpolationFiltersProperty", + "dev": "#ColorInterpolationFiltersProperty" + }, + "tests": ["auto", "sRGB", "linearRGB"] + }, + "lighting-color": { + "links": { + "tr": "#LightingColorProperty", + "dev": "#LightingColorProperty" + }, + "tests": ["white", "#000"] + } + } +}; diff --git a/tests/filter-effects-2.js b/tests/filter-effects-2.js new file mode 100644 index 00000000..120dfcfe --- /dev/null +++ b/tests/filter-effects-2.js @@ -0,0 +1,33 @@ +export default { + "title": "Filter Effects Module Level 2", + "links": { + "dev": "filter-effects-2", + "devtype": "fxtf" + }, + "status": { + "stability": "experimental" + }, + "properties": { + "backdrop-filter": { + "links": { + "dev": "#BackdropFilterProperty" + }, + "tests": [ + "none", + "url(#id)", + "url(image.svg#id)", + "blur(5px)", + "brightness(0.5)", + "contrast(150%)", + "drop-shadow(15px 15px 15px black)", + "grayscale(50%)", + "hue-rotate(50deg)", + "invert(50%)", + "opacity(50%)", + "sepia(50%)", + "saturate(150%)", + "grayscale(100%) sepia(100%)" + ] + } + } +}; diff --git a/tests/fullscreen.js b/tests/fullscreen.js new file mode 100644 index 00000000..09f68bbe --- /dev/null +++ b/tests/fullscreen.js @@ -0,0 +1,24 @@ +export default { + "title": "Fullscreen API", + "links": { + "dev": "fullscreen", + "devtype": "whatwg" + }, + "status": { + "stability": "experimental" + }, + "selectors": { + "::backdrop": { + "links": { + "dev": "#::backdrop-pseudo-element" + }, + "tests": "::backdrop" + }, + ":fullscreen": { + "links": { + "dev": "#:fullscreen-pseudo-class" + }, + "tests": ":fullscreen" + } + } +}; diff --git a/tests/html.js b/tests/html.js new file mode 100644 index 00000000..4dfd124e --- /dev/null +++ b/tests/html.js @@ -0,0 +1,18 @@ +export default { + "title": "HTML Living Standard", + "links": { + "dev": "html", + "devtype": "whatwg" + }, + "status": { + "stability": "experimental" + }, + "selectors": { + ":autofill": { + "links": { + "dev": "#selector-autofill" + }, + "tests": ":autofill" + } + } +}; diff --git a/tests/mathml-core.js b/tests/mathml-core.js new file mode 100644 index 00000000..79196bb4 --- /dev/null +++ b/tests/mathml-core.js @@ -0,0 +1,55 @@ +export default { + "title": "MathML Core", + "links": { + "dev": "mathml-core/#css-extensions-for-math-layout", + "devtype": "math" + }, + "status": { + "stability": "experimental" + }, + "properties": { + "display": { + "links": { + "dev": "new-display-math-value" + }, + "tests": [ + "math", "block math", "inline math" + ] + }, + "text-transform": { + "links": { + "dev": "#new-text-transform-values" + }, + "tests": [ + "math-auto", "math-bold", "math-italic", "math-bold-italic", "math-double-struck", "math-bold-fraktur", + "math-script", "math-bold-script", "math-fraktur", "math-sans-serif", "math-bold-sans-serif", + "math-sans-serif-italic", "math-sans-serif-bold-italic", "math-monospace", "math-initial", + "math-tailed", "math-looped", "math-stretched" + ] + }, + "font-size": { + "links": { + "dev": "#the-math-script-level-property" + }, + "tests": ["math"] + }, + "math-style": { + "links": { + "dev": "#the-math-style-property" + }, + "tests": ["normal", "compact"] + }, + "math-shift": { + "links": { + "dev": "#the-math-shift" + }, + "tests": ["normal", "compact"] + }, + "math-depth": { + "links": { + "dev": "#the-math-script-level-property" + }, + "tests": ["auto-add", "add(0)", "add(1)", "0", "1"] + } + } +}; diff --git a/tests/mediaqueries-3.js b/tests/mediaqueries-3.js new file mode 100644 index 00000000..d4e31168 --- /dev/null +++ b/tests/mediaqueries-3.js @@ -0,0 +1,140 @@ +/* + * Note: the following media queries must be true in supporting UAs! + */ +export default { + "title": "Media Queries Level 3", + "links": { + "tr": "css3-mediaqueries", + "dev": "mediaqueries-3" + }, + "status": { + "stability": "stable", + "first-snapshot": 2010 + }, + "Media queries": { + "negation": { + "links": { + "tr": "#media0", + "dev": "#media0", + "mdn": "Media_Queries/Using_media_queries" + }, + "tests": ["not print", "not all and (width:1px)"] + }, + "width": { + "links": { + "tr": "#width", + "dev": "#width", + "mdn": "Media_Queries/Using_media_queries" + }, + "tests": ["(width)", "(min-width:1px)", "(max-width:1000000px)"] + }, + "height": { + "links": { + "tr": "#height", + "dev": "#height", + "mdn": "Media_Queries/Using_media_queries" + }, + "tests": ["(height)", "(min-height:1px)", "(max-height:1000000px)"] + }, + "device-width": { + "links": { + "tr": "#device-width", + "dev": "#device-width" + }, + "tests": ["(device-width)", "(min-device-width:1px)", "(max-device-width:1000000px)"] + }, + "device-height": { + "links": { + "tr": "#device-height", + "dev": "#device-height" + }, + "tests": ["(device-height)", "(min-device-height:1px)", "(max-device-height:1000000px)"] + }, + "orientation": { + "links": { + "tr": "#orientation", + "dev": "#orientation" + }, + "tests": "(orientation:portrait), (orientation:landscape)" + }, + "aspect-ratio": { + "links": { + "tr": "#aspect-ratio", + "dev": "#aspect-ratio" + }, + "tests": [ + "(aspect-ratio)", + "(min-aspect-ratio:1/1000000)", + "(min-aspect-ratio:1 / 1000000)", + "(max-aspect-ratio:1000000/1)", + ] + }, + "device-aspect-ratio": { + "links": { + "tr": "#device-aspect-ratio", + "dev": "#device-aspect-ratio" + }, + "tests": [ + "(device-aspect-ratio)", + "(min-device-aspect-ratio:1/1000000)", + "(min-device-aspect-ratio:1 / 1000000)", + "(max-device-aspect-ratio:1000000/1)", + ] + }, + "color": { + "links": { + "tr": "#color", + "dev": "#color" + }, + "tests": [ + "(color)", "(min-color: 0)", "(max-color: 100)" + ] + }, + "color-index": { + "links": { + "tr": "#color-index", + "dev": "#color-index" + }, + "tests": [ + "all, (color-index)", + "(min-color-index: 0)", + "(max-color-index: 10000000)" + ] + }, + "monochrome": { + "links": { + "tr": "#monochrome", + "dev": "#monochrome" + }, + "tests": [ + "all, (monochrome)", "(min-monochrome: 0)", "(max-monochrome: 10000)" + ] + }, + "resolution": { + "links": { + "tr": "#resolution", + "dev": "#resolution" + }, + "tests": [ + "(resolution)", + "(min-resolution: 1dpi)", + "(max-resolution: 1000000dpi)", + "(max-resolution: 1000000dpcm)" + ] + }, + "scan": { + "links": { + "tr": "#scan", + "dev": "#scan" + }, + "tests": ["not tv, (scan: progressive)", "not tv, (scan: interlace)"] + }, + "grid": { + "links": { + "tr": "#grid", + "dev": "#grid" + }, + "tests": ["all, (grid)", "(grid: 0), (grid: 1)"] + } + } +}; diff --git a/tests/mediaqueries-4.js b/tests/mediaqueries-4.js new file mode 100644 index 00000000..218f1c04 --- /dev/null +++ b/tests/mediaqueries-4.js @@ -0,0 +1,97 @@ +export default { + "title": "Media Queries Level 4", + "links": { + "tr": "mediaqueries-4", + "dev": "mediaqueries-4" + }, + "status": { + "stability": "stable" + }, + "Media queries": { + "resolution": { + "links": { + "tr": "#resolution", + "dev": "#resolution" + }, + "tests": ["(resolution: infinite)"] + }, + "hover": { + "links": { + "tr": "#hover", + "dev": "#hover" + }, + "tests": ["(hover)", "(hover: none)", "(hover: hover)"] + }, + "any-hover": { + "links": { + "tr": "#any-input", + "dev": "#any-input" + }, + "tests": ["(any-hover)", "(any-hover: none)", "(any-hover: hover)"] + }, + "pointer": { + "links": { + "tr": "#pointer", + "dev": "#pointer" + }, + "tests": ["(pointer)", "(pointer: none)", "(pointer: coarse)", "(pointer: fine)"] + }, + "any-pointer": { + "links": { + "tr": "#any-input", + "dev": "#any-input" + }, + "tests": ["(any-pointer)", "(any-pointer: none)", "(any-pointer: coarse)", "(any-pointer: fine)"] + }, + "update": { + "links": { + "tr": "#update", + "dev": "#update" + }, + "tests": ["(update)", "(update: none)", "(update: slow)", "(update: fast)"] + }, + "overflow-block": { + "links": { + "tr": "#mf-overflow-block", + "dev": "#mf-overflow-block" + }, + "tests": ["(overflow-block: none)", "(overflow-block: scroll)", "(overflow-block: optional-paged)", "(overflow-block: paged)"] + }, + "overflow-inline": { + "links": { + "tr": "#mf-overflow-inline", + "dev": "#mf-overflow-inline" + }, + "tests": ["(overflow-inline: none)", "(overflow-inline: scroll)"] + }, + "color-gamut": { + "links": { + "tr": "#color-gamut", + "dev": "#color-gamut" + }, + "tests": ["(color-gamut)", "(color-gamut: srgb)", "(color-gamut: p3)", "(color-gamut: rec2020)"] + }, + "aspect-ratio": { + "links": { + "tr": "#aspect-ratio", + "dev": "#aspect-ratio" + }, + "tests": [ + "(aspect-ratio: 1280.1/720.01)", + "(max-aspect-ratio: 1280.1/720.01)", + "(min-aspect-ratio: 0.2)", + ] + }, + "device-aspect-ratio": { + "links": { + "tr": "#device-aspect-ratio", + "dev": "#device-aspect-ratio" + }, + "tests": [ + "(device-aspect-ratio:1280.1/720.01)", + "(max-device-aspect-ratio:1280.1/720.01)", + "(min-device-aspect-ratio:0.2)", + ] + } + } +}; diff --git a/tests/mediaqueries-5.js b/tests/mediaqueries-5.js new file mode 100644 index 00000000..6943abb1 --- /dev/null +++ b/tests/mediaqueries-5.js @@ -0,0 +1,89 @@ +export default { + "title": "Media Queries Level 5", + "links": { + "tr": "mediaqueries-5", + "dev": "mediaqueries-5" + }, + "status": { + "stability": "experimental" + }, + "Media queries": { + "prefers-reduced-motion": { + "links": { + "tr": "#prefers-reduced-motion", + "dev": "#prefers-reduced-motion" + }, + "tests": ["(prefers-reduced-motion)", "(prefers-reduced-motion: no-preference)", "(prefers-reduced-motion: reduce)"] + }, + "prefers-reduced-transparency": { + "links": { + "tr": "#prefers-reduced-transparency", + "dev": "#prefers-reduced-transparency" + }, + "tests": ["(prefers-reduced-transparency)","(prefers-reduced-transparency: no-preference)", "(prefers-reduced-transparency: reduce)"] + }, + "prefers-contrast": { + "links": { + "tr": "#prefers-contrast", + "dev": "#prefers-contrast" + }, + "tests": ["(prefers-contrast)", "(prefers-contrast: no-preference)", "(prefers-contrast: less)", "(prefers-contrast: more)", "(prefers-contrast: custom)"] + }, + "prefers-color-scheme": { + "links": { + "tr": "#prefers-color-scheme", + "dev": "#prefers-color-scheme" + }, + "tests": ["(prefers-color-scheme)", "(prefers-color-scheme: light)", "(prefers-color-scheme: dark)"] + }, + "scripting": { + "links": { + "tr": "#scripting", + "dev": "#scripting" + }, + "tests": ["(scripting)", "(scripting: none)", "(scripting: initial-only)", "(scripting: enabled)"] + }, + "environment-blending": { + "links": { + "tr": "#environment-blending", + "dev": "#environment-blending" + }, + "tests": ["(environment-blending)", "(environment-blending: opaque)", "(environment-blending: additive)", "(environment-blending: subtractive)"] + }, + "forced-colors": { + "links": { + "tr": "#forced-colors", + "dev": "#prefers-contrast" + }, + "tests": ["(forced-colors)", "(forced-colors: none)", "(forced-color: active)"] + }, + "dynamic-range": { + "links": { + "tr": "#dynamic-range", + "dev": "#dynamic-range" + }, + "tests": ["(dynamic-range)", "(dynamic-range: standard)", "(dynamic-range: high)"] + }, + "inverted-colors": { + "links": { + "tr": "#inverted", + "dev": "#inverted" + }, + "tests": ["(inverted-colors)", "(inverted-colors: none)", "(light-level: inverted)"] + }, + "video-color-gamut": { + "links": { + "dev": "#video-color-gamut", + "tr": "#video-color-gamut" + }, + "tests": ["(video-color-gamut)", "(video-color-gamut: srgb)", "(video-color-gamut: p3)", "(video-color-gamut: rec2020)"] + }, + "video-dynamic-range": { + "links": { + "dev": "#video-dynamic-range", + "tr": "#video-dynamic-range" + }, + "tests": ["(video-dynamic-range)", "(video-dynamic-range: standard)", "(video-dynamic-range: high)"] + } + } +}; diff --git a/tests/motion-1.js b/tests/motion-1.js new file mode 100644 index 00000000..9b72d5e4 --- /dev/null +++ b/tests/motion-1.js @@ -0,0 +1,90 @@ +export default { + "title": "Motion Path Module Level 1", + "links": { + "dev": "motion-1", + "tr": "motion-1", + "devtype": "fxtf" + }, + "status": { + "stability": "experimental" + }, + "properties": { + "offset-anchor": { + "links": { + "dev": "#offset-anchor-property", + "tr": "#offset-anchor-property" + }, + "tests": ["auto", "center", "top left", "10px 20px", "30% 40%"] + }, + "offset-distance": { + "links": { + "dev": "#offset-distance-property", + "tr": "#offset-distance-property" + }, + "tests": ["20px", "30%"] + }, + "offset-path": { + "links": { + "dev": "#offset-path-property", + "tr": "#offset-path-property" + }, + "tests": [ + "none", + "ray(45deg closest-side)", + "ray(45deg closest-corner)", + "ray(45deg farthest-side)", + "ray(45deg farthest-corner)", + "ray(45deg sides)", + "ray(45deg closest-side contain)", + "path(\"M 100 100 L 300 100 L 200 300 z\")", + "url(shape.svg)", + "circle(200px)", + "circle(200px at top left)", + "ellipse(200px 100px)", + "inset(30px)", + "polygon(0 0, 100% 100%, 0 100%)", + "circle(200px)", + "circle(200px) content-box", + "circle(200px) padding-box", + "circle(200px) border-box", + "circle(200px) fill-box", + "circle(200px) stroke-box", + "circle(200px) view-box", + ] + }, + "offset-position": { + "links": { + "dev": "#offset-position-property", + "tr": "#offset-position-property" + }, + "tests": ["auto", "center", "top left", "10px 20px", "30% 40%"] + }, + "offset-rotate": { + "links": { + "dev": "#offset-rotate-property", + "tr": "#offset-rotate-property" + }, + "tests": ["auto", "reverse", "90deg", "auto 90deg", "reverse 90deg"] + }, + "offset": { + "links": { + "dev": "#offset-shorthand", + "tr": "#offset-shorthand" + }, + "tests": [ + "none", + "ray(45deg closest-side)", + "path(\"M 100 100 L 300 100 L 200 300 z\")", + "url(shape.svg)", + "circle(200px)", + "center", + "top left circle(200px)", + "circle(200px) 20px", + "circle(200px) 10deg", + "top left circle(200px) 20px", + "top left circle(200px) 20px 10deg", + "circle(200px) / top left" + ] + } + } +}; diff --git a/tests/pointerevents1.js b/tests/pointerevents1.js new file mode 100644 index 00000000..4c22c345 --- /dev/null +++ b/tests/pointerevents1.js @@ -0,0 +1,17 @@ +export default { + "title": "Pointer Events Level 1", + "links": { + "tr": "pointerevents1" + }, + "status": { + "stability": "stable" + }, + "properties": { + "touch-action": { + "links": { + "tr": "#the-touch-action-css-property" + }, + "tests": ["auto", "none", "pan-x", "pan-y", "pan-x pan-y", "manipulation"] + } + } +}; diff --git a/tests/pointerevents3.js b/tests/pointerevents3.js new file mode 100644 index 00000000..85a553f1 --- /dev/null +++ b/tests/pointerevents3.js @@ -0,0 +1,19 @@ +export default { + "title": "Pointer Events Level 3", + "links": { + "tr": "pointerevents3", + "dev": "pointerevents", + "devtype": "github" + }, + "status": { + "stability": "experimental" + }, + "properties": { + "touch-action": { + "links": { + "dev": "#the-touch-action-css-property" + }, + "tests": ["pan-left", "pan-right", "pan-up", "pan-down", "pan-left pan-up"] + } + } +}; diff --git a/tests/scroll-animations-1.js b/tests/scroll-animations-1.js new file mode 100644 index 00000000..7c6d56b7 --- /dev/null +++ b/tests/scroll-animations-1.js @@ -0,0 +1,54 @@ +export default { + "title": "Scroll-linked Animations", + "links": { + "tr": "scroll-animations-1", + "dev": "scroll-animations-1" + }, + "status": { + "stability": "experimental" + }, + "@rules": { + "@scroll-timeline": { + "links": { + "tr": "#scroll-timeline-at-rule", + "dev": "#scroll-timeline-at-rule" + }, + "tests": [ + "@scroll-timeline scroller { source: selector(#root); }" + ] + } + }, + "descriptors": { + "@scroll-timeline example/source": { + "links": { + "tr": "#scroll-timeline-descriptors", + "dev": "#scroll-timeline-descriptors" + }, + "tests": ["selector(#id)", "auto", "none"] + }, + "@scroll-timeline example/orientation": { + "links": { + "tr": "#scroll-timeline-descriptors", + "dev": "#scroll-timeline-descriptors" + }, + "required": { + '*': { "descriptor": "source: auto"} + }, + "tests": ["auto", "block", "inline", "horizontal", "vertical"] + }, + "@scroll-timeline example/offsets": { + "links": { + "tr": "#scroll-timeline-descriptors", + "dev": "#scroll-timeline-descriptors" + }, + "required": { + '*': { "descriptor": "source: auto"} + }, + "tests": [ + "none", "auto", "100px", "5%", "selector(#id)", "selector(#id) start", + "selector(#id) end", "selector(#id) 0.5", "selector(#id) start 0.5", + "selector(#id), 100px, auto" + ] + } + } +}; diff --git a/tests/selectors-3.js b/tests/selectors-3.js new file mode 100644 index 00000000..be397cbe --- /dev/null +++ b/tests/selectors-3.js @@ -0,0 +1,225 @@ +export default { + "title": "Selectors Level 3", + "links": { + "tr": "selectors-3", + "dev": "selectors-3", + "mdn": "Glossary/CSS_Selector" + }, + "status": { + "stability": "stable", + "first-snapshot": 2007 + }, + "selectors": { + "Sibling combinator": { + "links": { + "tr": "#sibling-combinators", + "dev": "#sibling-combinators", + "mdn": "General_sibling_combinator" + }, + "tests": "foo ~ bar" + }, + "::before": { + "links": { + "tr": "#gen-content", + "dev": "#gen-content" + }, + "tests": "::before" + }, + "::after": { + "links": { + "tr": "#gen-content", + "dev": "#gen-content" + }, + "tests": "::after" + }, + "::first-letter": { + "links": { + "tr": "#first-letter", + "dev": "#first-letter" + }, + "tests": "::first-letter" + }, + "::first-line": { + "links": { + "tr": "#first-line", + "dev": "#first-line" + }, + "tests": "::first-line" + }, + "[att^=val]": { + "links": { + "tr": "#attribute-substrings", + "dev": "#attribute-substrings", + "mdn": "Attribute_selectors" + }, + "tests": ["[att^=val]", "[att^=\"val\"]"] + }, + "[att*=val]": { + "links": { + "tr": "#attribute-substrings", + "dev": "#attribute-substrings", + "mdn": "Attribute_selectors" + }, + "tests": ["[att*=val]", "[att*=\"val\"]"] + }, + "[att$=val]": { + "links": { + "tr": "#attribute-substrings", + "dev": "#attribute-substrings", + "mdn": "Attribute_selectors" + }, + "tests": ["[att$=val]", "[att$=\"val\"]"] + }, + "Namespaces": { + "links": { + "tr": "#attrnmsp", + "dev": "#attrnmsp", + "mdn": "CSS_Namespaces" + }, + "tests": ["*|html", "[*|attr]", "[*|attr=val]", "*|html[*|attr]"] + }, + ":target": { + "links": { + "tr": "#target-pseudo", + "dev": "#target-pseudo" + }, + "tests": ":target" + }, + ":enabled": { + "links": { + "tr": "#enableddisabled", + "dev": "#enableddisabled" + }, + "tests": ":enabled" + }, + ":disabled": { + "links": { + "tr": "#enableddisabled", + "dev": "#enableddisabled" + }, + "tests": ":disabled" + }, + ":checked": { + "links": { + "tr": "#checked", + "dev": "#checked" + }, + "tests": ":checked" + }, + ":indeterminate": { + "links": { + "tr": "#indeterminate", + "dev": "#indeterminate" + }, + "tests": ":indeterminate" + }, + ":root": { + "links": { + "tr": "#root-pseudo", + "dev": "#root-pseudo" + }, + "tests": ":root" + }, + ":nth-child()": { + "links": { + "tr": "#nth-child-pseudo", + "dev": "#nth-child-pseudo" + }, + "tests": [ + ":nth-child(even)", ":nth-child(odd)", + ":nth-child(n)", ":nth-child(-n)", ":nth-child(0n)", + ":nth-child(1)", ":nth-child(-1)", ":nth-child(0)", + ":nth-child(n+1)", ":nth-child(3n+1)", ":nth-child(3n + 1)", + ":nth-child(-n+1)", ":nth-child(3n-1)" + ] + }, + ":nth-last-child()": { + "links": { + "tr": "#nth-last-child-pseudo", + "dev": "#nth-last-child-pseudo" + }, + "tests": [ + ":nth-last-child(even)", ":nth-last-child(odd)", + ":nth-last-child(n)", ":nth-last-child(-n)", ":nth-last-child(0n)", + ":nth-last-child(1)", ":nth-last-child(-1)", ":nth-last-child(0)", + ":nth-last-child(n+1)", ":nth-last-child(3n+1)", ":nth-last-child(3n + 1)", + ":nth-last-child(-n+1)", ":nth-last-child(3n-1)" + ] + }, + ":nth-of-type()": { + "links": { + "tr": "#nth-of-type-pseudo", + "dev": "#nth-of-type-pseudo" + }, + "tests": [ + ":nth-of-type(even)", ":nth-of-type(odd)", + ":nth-of-type(n)", ":nth-of-type(-n)", ":nth-of-type(0n)", + ":nth-of-type(1)", ":nth-of-type(-1)", ":nth-of-type(0)", + ":nth-of-type(n+1)", ":nth-of-type(3n+1)", ":nth-of-type(3n + 1)", + ":nth-of-type(-n+1)", ":nth-of-type(3n-1)" + ] + }, + ":nth-last-of-type()": { + "links": { + "tr": "#nth-last-of-type-pseudo", + "dev": "#nth-last-of-type-pseudo" + }, + "tests": [ + ":nth-last-of-type(even)", ":nth-last-of-type(odd)", + ":nth-last-of-type(n)", ":nth-last-of-type(-n)", ":nth-last-of-type(0n)", + ":nth-last-of-type(1)", ":nth-last-of-type(-1)", ":nth-last-of-type(0)", + ":nth-last-of-type(n+1)", ":nth-last-of-type(3n+1)", ":nth-last-of-type(3n + 1)", + ":nth-last-of-type(-n+1)", ":nth-last-of-type(3n-1)" + ] + }, + ":last-child": { + "links": { + "tr": "#last-child-pseudo", + "dev": "#last-child-pseudo" + }, + "tests": ":last-child" + }, + ":only-child": { + "links": { + "tr": "#only-child-pseudo", + "dev": "#only-child-pseudo" + }, + "tests": ":only-child" + }, + ":first-of-type": { + "links": { + "tr": "#first-of-type-pseudo", + "dev": "#first-of-type-pseudo" + }, + "tests": ":first-of-type" + }, + ":last-of-type": { + "links": { + "tr": "#last-of-type-pseudo", + "dev": "#last-of-type-pseudo" + }, + "tests": ":last-of-type" + }, + ":only-of-type": { + "links": { + "tr": "#only-of-type-pseudo", + "dev": "#only-of-type-pseudo" + }, + "tests": ":only-of-type" + }, + ":empty": { + "links": { + "tr": "#empty-pseudo", + "dev": "#empty-pseudo" + }, + "tests": ":empty" + }, + ":not()": { + "links": { + "tr": "#negation", + "dev": "#negation" + }, + "tests": [":not(*)", ":not(element)", ":not(.class):not(#id):not([attr]):not(:link)"] + } + } +}; diff --git a/tests/selectors-4.js b/tests/selectors-4.js new file mode 100644 index 00000000..4c0c8c7c --- /dev/null +++ b/tests/selectors-4.js @@ -0,0 +1,308 @@ +export default { + "title": "Selectors Level 4", + "links": { + "tr": "selectors-4", + "dev": "selectors-4" + }, + "status": { + "stability": "experimental" + }, + "selectors": { + ":indeterminate": { + "links": { + "tr": "#indeterminate", + "dev": "#indeterminate" + }, + "tests": ":indeterminate" + }, + ":blank": { + "links": { + "tr": "#blank", + "dev": "#blank" + }, + "tests": ":blank" + }, + ":placeholder-shown": { + "links": { + "tr": "#placeholder", + "dev": "#placeholder" + }, + "tests": ":placeholder-shown" + }, + ":default": { + "links": { + "tr": "#the-default-pseudo", + "dev": "#the-default-pseudo" + }, + "tests": ":default" + }, + ":valid": { + "links": { + "tr": "#validity-pseudos", + "dev": "#validity-pseudos" + }, + "tests": ":valid" + }, + ":invalid": { + "links": { + "tr": "#validity-pseudos", + "dev": "#validity-pseudos" + }, + "tests": ":invalid" + }, + ":in-range": { + "links": { + "tr": "#range-pseudos", + "dev": "#range-pseudos" + }, + "tests": ":in-range" + }, + ":out-of-range": { + "links": { + "tr": "#range-pseudos", + "dev": "#range-pseudos" + }, + "tests": ":out-of-range" + }, + ":user-invalid": { + "links": { + "tr": "#user-invalid-pseudo", + "dev": "#user-invalid-pseudo" + }, + "tests": ":user-invalid" + }, + ":required": { + "links": { + "tr": "#opt-pseudos", + "dev": "#opt-pseudos" + }, + "tests": ":required" + }, + ":optional": { + "links": { + "tr": "#opt-pseudos", + "dev": "#opt-pseudos" + }, + "tests": ":optional" + }, + ":read-only": { + "links": { + "tr": "#rw-pseudos", + "dev": "#rw-pseudos" + }, + "tests": ":read-only" + }, + ":read-write": { + "links": { + "tr": "#rw-pseudos", + "dev": "#rw-pseudos" + }, + "tests": ":read-write" + }, + ":focus-visible": { + "links": { + "tr": "#the-focus-visible-pseudo", + "dev": "#the-focus-visible-pseudo" + }, + "tests": ":focus-visible" + }, + ":focus-within": { + "links": { + "tr": "#the-focus-within-pseudo", + "dev": "#the-focus-within-pseudo" + }, + "tests": ":focus-within" + }, + ":current": { + "links": { + "tr": "#the-current-pseudo", + "dev": "#the-current-pseudo" + }, + "tests": ":current" + }, + ":current()": { + "links": { + "tr": "#the-current-pseudo", + "dev": "#the-current-pseudo" + }, + "tests": ":current(p, li, dt, dd)" + }, + ":past": { + "links": { + "tr": "#the-past-pseudo", + "dev": "#the-past-pseudo" + }, + "tests": ":past" + }, + ":future": { + "links": { + "tr": "#the-future-pseudo", + "dev": "#the-future-pseudo" + }, + "tests": ":future" + }, + ":scope": { + "links": { + "tr": "#the-scope-pseudo", + "dev": "#the-scope-pseudo" + }, + "tests": ":scope" + }, + ":any-link": { + "links": { + "tr": "#the-any-link-pseudo", + "dev": "#the-any-link-pseudo" + }, + "tests": ":any-link" + }, + ":local-link": { + "links": { + "tr": "#the-local-link-pseudo", + "dev": "#the-local-link-pseudo" + }, + "tests": ":local-link" + }, + ":target-within": { + "links": { + "tr": "#the-target-within-pseudo", + "dev": "#the-target-within-pseudo" + }, + "tests": ":target-within" + }, + ":lang()": { + "links": { + "tr": "#the-lang-pseudo", + "dev": "#the-lang-pseudo" + }, + "tests": [":lang(zh, \"*-hant\")"] + }, + ":not()": { + "links": { + "tr": "#negation", + "dev": "#negation" + }, + "tests": [":not(em, #foo)"] + }, + ":where()": { + "links": { + "tr": "#zero-matches", + "dev": "#zero-matches" + }, + "tests": [":where(em, #foo)", ":where(:not(:hover))"] + }, + ":is()": { + "links": { + "tr": "#matches", + "dev": "#matches" + }, + "tests": [":is(em, #foo)", ":is(:not(:hover))"] + }, + ":has()": { + "links": { + "tr": "#relational", + "dev": "#relational" + }, + "tests": [ + "a:has(> img)", + "dt:has(+ dt)", + "section:not(:has(h1, h2, h3, h4, h5, h6))", + "section:has(:not(h1, h2, h3, h4, h5, h6))" + ] + }, + ":defined": { + "links": { + "tr": "#the-defined-pseudo", + "dev": "the-defined-pseudo" + }, + "tests": [":defined"] + }, + ":nth-child()": { + "links": { + "tr": "#the-nth-child-pseudo", + "dev": "#the-nth-child-pseudo" + }, + "tests": [":nth-child(-n+3 of li.important)", ":nth-child(even of :not([hidden])"] + }, + "||": { + "links": { + "tr": "#the-column-combinator", + "dev": "#the-column-combinator" + }, + "tests": "foo || bar" + }, + ":nth-col()": { + "links": { + "tr": "#the-nth-col-pseudo", + "dev": "#the-nth-col-pseudo" + }, + "tests": [ + ":nth-col(even)", ":nth-col(odd)", + ":nth-col(n)", ":nth-col(-n)", ":nth-col(0n)", + ":nth-col(1)", ":nth-col(-1)", ":nth-col(0)", + ":nth-col(n+1)", ":nth-col(3n+1)", ":nth-col(3n + 1)", + ":nth-col(-n+1)", ":nth-col(3n-1)" + ] + }, + ":nth-last-col()": { + "links": { + "tr": "#the-nth-last-col-pseudo", + "dev": "#the-nth-last-col-pseudo" + }, + "tests": [ + ":nth-last-col(even)", ":nth-last-col(odd)", + ":nth-last-col(n)", ":nth-last-col(-n)", ":nth-last-col(0n)", + ":nth-last-col(1)", ":nth-last-col(-1)", ":nth-last-col(0)", + ":nth-last-col(n+1)", ":nth-last-col(3n+1)", ":nth-last-col(3n + 1)", + ":nth-last-col(-n+1)", ":nth-last-col(3n-1)" + ] + }, + "[att^=val i]": { + "links": { + "tr": "#attribute-case", + "dev": "#attribute-case", + "mdn": "Attribute_selectors" + }, + "tests": ["[att^=val i]", "[att^=\"val\" i]", "[att^=val I]", "[att^=\"val\" I]"] + }, + "[att*=val i]": { + "links": { + "tr": "#attribute-case", + "dev": "#attribute-case", + "mdn": "Attribute_selectors" + }, + "tests": ["[att*=val i]", "[att*=\"val\" i]", "[att*=val I]", "[att*=\"val\" I]"] + }, + "[att$=val i]": { + "links": { + "tr": "#attribute-case", + "dev": "#attribute-case", + "mdn": "Attribute_selectors" + }, + "tests": ["[att$=val i]", "[att$=\"val\" i]", "[att$=val I]", "[att$=\"val\" I]"] + }, + "[att^=val s]": { + "links": { + "tr": "#attribute-case", + "dev": "#attribute-case", + "mdn": "Attribute_selectors" + }, + "tests": ["[att^=val s]", "[att^=\"val\" s]", "[att^=val S]", "[att^=\"val\" S]"] + }, + "[att*=val s]": { + "links": { + "tr": "#attribute-case", + "dev": "#attribute-case", + "mdn": "Attribute_selectors" + }, + "tests": ["[att*=val s]", "[att*=\"val\" s]", "[att*=val S]", "[att*=\"val\" S]"] + }, + "[att$=val s]": { + "links": { + "tr": "#attribute-case", + "dev": "#attribute-case", + "mdn": "Attribute_selectors" + }, + "tests": ["[att$=val s]", "[att$=\"val\" s]", "[att$=val S]", "[att$=\"val\" S]"] + } + } +}; diff --git a/tests/svg2-coords.js b/tests/svg2-coords.js new file mode 100644 index 00000000..97a362d3 --- /dev/null +++ b/tests/svg2-coords.js @@ -0,0 +1,30 @@ +export default { + "title": "SVG 2 Coordinate Systems, Transformations and Units", + "links": { + "tr": "svg2/coords.html", + "dev": "svg2-draft/coords.html", + "devtype": "svgwg" + }, + "status": { + "stability": "experimental" + }, + "properties": { + "vector-effect": { + "links": { + "tr": "#VectorEffects", + "dev": "#VectorEffects", + "mdnGroup": "SVG" + }, + "tests": [ + "none", + "non-scaling-stroke", + "non-scaling-size", + "non-rotation", + "fixed-position", + "non-scaling-stroke non-scaling-stroke", + "non-scaling-stroke viewport", + "non-scaling-stroke screen", + ] + } + } +}; diff --git a/tests/svg2-geometry.js b/tests/svg2-geometry.js new file mode 100644 index 00000000..01d9e0a2 --- /dev/null +++ b/tests/svg2-geometry.js @@ -0,0 +1,69 @@ +export default { + "title": "SVG 2 Geometry Properties", + "links": { + "tr": "svg2/geometry.html", + "dev": "svg2-draft/geometry.html", + "devtype": "svgwg" + }, + "status": { + "stability": "experimental" + }, + "properties": { + "cx": { + "links": { + "tr": "#CX", + "dev": "#CX", + "mdnGroup": "SVG" + }, + "tests": ["0", "1px", "-5px", "25%"] + }, + "cy": { + "links": { + "tr": "#CY", + "dev": "#CY", + "mdnGroup": "SVG" + }, + "tests": ["0", "1px", "-5px", "25%"] + }, + "r": { + "links": { + "tr": "#R", + "dev": "#R", + "mdnGroup": "SVG" + }, + "tests": ["0", "1px", "25%"] + }, + "rx": { + "links": { + "tr": "#RX", + "dev": "#RX", + "mdnGroup": "SVG" + }, + "tests": ["auto", "0", "1px", "25%"] + }, + "ry": { + "links": { + "tr": "#RY", + "dev": "#RY", + "mdnGroup": "SVG" + }, + "tests": ["auto", "0", "1px", "25%"] + }, + "x": { + "links": { + "tr": "#X", + "dev": "#X", + "mdnGroup": "SVG" + }, + "tests": ["0", "1px", "-5px", "25%"] + }, + "y": { + "links": { + "tr": "#Y", + "dev": "#Y", + "mdnGroup": "SVG" + }, + "tests": ["0", "1px", "-5px", "25%"] + } + } +}; diff --git a/tests/svg2-interact.js b/tests/svg2-interact.js new file mode 100644 index 00000000..f5df0cbf --- /dev/null +++ b/tests/svg2-interact.js @@ -0,0 +1,20 @@ +export default { + "title": "SVG 2 Scripting and Interactivity", + "links": { + "tr": "svg2/interact.html", + "dev": "svg2-draft/interact.html", + "devtype": "svgwg" + }, + "status": { + "stability": "experimental" + }, + "properties": { + "pointer-events": { + "links": { + "tr": "#PointerEventsProp", + "dev": "#PointerEventsProp" + }, + "tests": ["auto", "bounding-box", "visiblePainted", "visibleFill", "visibleStroke", "visible", "painted", "fill", "stroke", "all", "none"] + } + } +}; diff --git a/tests/svg2-painting.js b/tests/svg2-painting.js new file mode 100644 index 00000000..8ca00b3f --- /dev/null +++ b/tests/svg2-painting.js @@ -0,0 +1,80 @@ +export default { + "title": "SVG 2 Painting: Filling, Stroking and Marker Symbols", + "links": { + "tr": "svg2/painting.html", + "dev": "svg2-draft/painting.html", + "devtype": "svgwg" + }, + "status": { + "stability": "experimental" + }, + "properties": { + "color-interpolation": { + "links": { + "tr": "#ColorInterpolation", + "dev": "#ColorInterpolation", + "mdnGroup": "SVG" + }, + "tests": ["auto", "sRGB", "linearRGB"] + }, + "color-rendering": { + "links": { + "tr": "#ColorRendering" + }, + "tests": ["auto", "optimizeSpeed", "optimizeQuality"] + }, + "marker": { + "links": { + "tr": "#MarkerShorthand", + "dev": "#MarkerShorthand" + }, + "tests": ["none", "url(#marker)"] + }, + "marker-end": { + "links": { + "tr": "#VertexMarkerProperties", + "dev": "#VertexMarkerProperties", + "mdnGroup": "SVG" + }, + "tests": ["none", "url(#marker)"] + }, + "marker-mid": { + "links": { + "tr": "#VertexMarkerProperties", + "dev": "#VertexMarkerProperties", + "mdnGroup": "SVG" + }, + "tests": ["none", "url(#marker)"] + }, + "marker-start": { + "links": { + "tr": "#VertexMarkerProperties", + "dev": "#VertexMarkerProperties", + "mdnGroup": "SVG" + }, + "tests": ["none", "url(#marker)"] + }, + "paint-order": { + "links": { + "tr": "#PaintOrder", + "dev": "#PaintOrder" + }, + "tests": ["normal", "fill", "stroke", "markers", "fill stroke markers"] + }, + "shape-rendering": { + "links": { + "tr": "#ShapeRendering", + "dev": "#ShapeRendering", + "mdnGroup": "SVG" + }, + "tests": ["auto", "optimizeSpeed", "crispEdges", "geometricPrecision"] + }, + "text-rendering": { + "links": { + "tr": "#TextRendering", + "dev": "#TextRendering" + }, + "tests": ["auto", "optimizeSpeed", "optimizeLegibility", "geometricPrecision"] + } + } +}; diff --git a/tests/svg2-paths.js b/tests/svg2-paths.js new file mode 100644 index 00000000..d6227ef4 --- /dev/null +++ b/tests/svg2-paths.js @@ -0,0 +1,21 @@ +export default { + "title": "SVG 2 Paths", + "links": { + "tr": "svg2/paths.html", + "dev": "svg2-draft/paths.html", + "devtype": "svgwg" + }, + "status": { + "stability": "experimental" + }, + "properties": { + "d": { + "links": { + "tr": "#TheDProperty", + "dev": "#TheDProperty", + "mdnGroup": "SVG" + }, + "tests": ["none", "'M 20 20 H 80 V 30'"] + } + } +}; diff --git a/tests/svg2-pservers.js b/tests/svg2-pservers.js new file mode 100644 index 00000000..2a640f17 --- /dev/null +++ b/tests/svg2-pservers.js @@ -0,0 +1,27 @@ +export default { + "title": "SVG 2 Paint Servers: Gradients and Patterns", + "links": { + "tr": "svg2/pservers.html", + "dev": "svg2-draft/pservers.html", + "devtype": "svgwg" + }, + "status": { + "stability": "experimental" + }, + "properties": { + "stop-color": { + "links": { + "dev": "#StopColorProperty", + "mdnGroup": "SVG" + }, + "tests": ["green"] + }, + "stop-opacity": { + "links": { + "dev": "#StopOpacityProperty", + "mdnGroup": "SVG" + }, + "tests": [".5", "45%"] + } + } +}; diff --git a/tests/svg2-text.js b/tests/svg2-text.js new file mode 100644 index 00000000..1f2b38e8 --- /dev/null +++ b/tests/svg2-text.js @@ -0,0 +1,65 @@ +export default { + "title": "SVG 2 Text", + "links": { + "tr": "svg2/text.html", + "dev": "svg2-draft/text.html", + "devtype": "svgwg" + }, + "status": { + "stability": "experimental" + }, + "properties": { + "shape-subtract": { + "links": { + "tr": "#TextShapeSubtract", + "dev": "#TextShapeSubtract" + }, + "tests": [ + "none", + "url('#shape')", + "inset(50%)", + "circle()", + "ellipse()", + "polygon(0 10px, 30px 0)", + "path('M 20 20 H 80 V 30')", + "url('#clip') circle()" + ] + }, + "text-anchor": { + "links": { + "tr": "#TextAnchoringProperties", + "dev": "#TextAnchoringProperties", + "mdnGroup": "SVG" + }, + "tests": ["start", "middle", "end"] + }, + "text-decoration-fill": { + "links": { + "tr": "#TextDecorationFillStroke" + }, + "tests": [ + "none", + "green", + "url(#pattern)", + "url(#pattern) none", + "url(#pattern) green", + "context-fill", + "context-stroke" + ] + }, + "text-decoration-stroke": { + "links": { + "tr": "#TextDecorationFillStroke" + }, + "tests": [ + "none", + "green", + "url(#pattern)", + "url(#pattern) none", + "url(#pattern) green", + "context-fill", + "context-stroke" + ] + } + } +}; diff --git a/tests/webvtt.js b/tests/webvtt.js new file mode 100644 index 00000000..539613c4 --- /dev/null +++ b/tests/webvtt.js @@ -0,0 +1,41 @@ +export default { + "title": "WebVTT: The Web Video Text Tracks Format", + "links": { + "tr": "webvtt1", + "dev": "webvtt", + "devtype": "github" + }, + "status": { + "stability": "experimental" + }, + "selectors": { + "::cue": { + "links": { + "tr": "#the-cue-pseudo-element", + "dev": "#the-cue-pseudo-element" + }, + "tests": ["::cue"] + }, + "::cue()": { + "links": { + "tr": "#the-cue-pseudo-element", + "dev": "#the-cue-pseudo-element" + }, + "tests": ["::cue(span)"] + }, + "::cue-region": { + "links": { + "tr": "#the-cue-region-pseudo-element", + "dev": "#the-cue-region-pseudo-element" + }, + "tests": ["::cue-region"] + }, + "::cue-region()": { + "links": { + "tr": "#the-cue-region-pseudo-element", + "dev": "#the-cue-region-pseudo-element" + }, + "tests": ['::cue-region(span)'] + } + } +}; From cba6568fa52863517e012f8f2b0964ff0ec5189b Mon Sep 17 00:00:00 2001 From: TrisTOON <36267812+TrisTOON@users.noreply.github.com> Date: Thu, 27 Jan 2022 23:29:41 +0100 Subject: [PATCH 385/668] Remove two duplicate tests and split one into two --- tests.js | 2 -- tests/css-ui-4.js | 2 +- tests/mediaqueries-3.js | 2 +- 3 files changed, 2 insertions(+), 4 deletions(-) diff --git a/tests.js b/tests.js index f06f9ef7..e68898ff 100644 --- a/tests.js +++ b/tests.js @@ -195,8 +195,6 @@ export default { "css-ruby-1": cssRuby1, "css-scoping-1": cssScoping1, "css-scroll-anchoring-1": cssScrollAnchoring1, - "css-scoping-1": cssScoping1, - "css-scroll-anchoring-1": cssScrollAnchoring1, "css-scroll-snap-1": cssScrollSnap1, "css-scrollbars-1": cssScrollbars1, "css-shadow-parts-1": cssShadowParts1, diff --git a/tests/css-ui-4.js b/tests/css-ui-4.js index 75be694b..e7708e27 100644 --- a/tests/css-ui-4.js +++ b/tests/css-ui-4.js @@ -53,7 +53,7 @@ export default { "dev": "#text-overflow" }, "tests": [ - "clip", "ellipsis", "fade", "fade(10px)", "fade(10%)", "'foo'", "clip clip", + "fade", "fade(10px)", "fade(10%)", "'foo'", "clip clip", "ellipsis clip", "fade clip", "fade(10px) clip", "fade(10%) clip", "'foo' clip", "clip ellipsis", "ellipsis ellipsis", "fade ellipsis", "fade(10px) ellipsis", "fade(10%) ellipsis", "'foo' ellipsis", "clip fade", diff --git a/tests/mediaqueries-3.js b/tests/mediaqueries-3.js index d4e31168..d9d9f13e 100644 --- a/tests/mediaqueries-3.js +++ b/tests/mediaqueries-3.js @@ -55,7 +55,7 @@ export default { "tr": "#orientation", "dev": "#orientation" }, - "tests": "(orientation:portrait), (orientation:landscape)" + "tests": ["(orientation:portrait)", "(orientation:landscape)"] }, "aspect-ratio": { "links": { From a02885bfa0e0d0c75266ef7bcc60ec660618a1a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Sat, 29 Jan 2022 23:21:18 +0100 Subject: [PATCH 386/668] Change bar width for 0.2em --- style.css | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/style.css b/style.css index 6b0c66ea..594fc5fb 100644 --- a/style.css +++ b/style.css @@ -175,7 +175,8 @@ details li[class] { details summary { list-style: none; cursor: pointer; - background: linear-gradient(rgb(0 0 0 / .3), rgb(0 0 0 / .3)) no-repeat 0 0 / calc(var(--progress) * 1%) .4em; + padding-top: .7em; + background: linear-gradient(rgb(0 0 0 / .3), rgb(0 0 0 / .3)) no-repeat 0 0 / calc(var(--progress) * 1%) .2em; } details summary::-webkit-details-marker { @@ -280,7 +281,7 @@ details li[class]::after, details summary::after, details li[class]::after { letter-spacing: -2px; - line-height: 35px; + padding-top: .7em; right: 10px; } From 467e5b1abd5d4d14bd999a0e885c01df06c01629 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Sun, 30 Jan 2022 21:29:03 +0100 Subject: [PATCH 387/668] Chonge to .6em padding-top --- style.css | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/style.css b/style.css index 594fc5fb..be916bda 100644 --- a/style.css +++ b/style.css @@ -175,7 +175,7 @@ details li[class] { details summary { list-style: none; cursor: pointer; - padding-top: .7em; + padding-top: .6em; background: linear-gradient(rgb(0 0 0 / .3), rgb(0 0 0 / .3)) no-repeat 0 0 / calc(var(--progress) * 1%) .2em; } @@ -281,7 +281,7 @@ details li[class]::after, details summary::after, details li[class]::after { letter-spacing: -2px; - padding-top: .7em; + padding-top: .6em; right: 10px; } From 75064caba80cff6a9d44b265a34ade29bc1f1e0e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Wed, 2 Feb 2022 09:31:30 +0100 Subject: [PATCH 388/668] color-adjust renamed to print-color-adjust The color-adjust shorthand is currently deprecated. --- tests/css-color-adjust-1.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/css-color-adjust-1.js b/tests/css-color-adjust-1.js index e9972cb1..0c9365e9 100644 --- a/tests/css-color-adjust-1.js +++ b/tests/css-color-adjust-1.js @@ -8,7 +8,7 @@ export default { "stability": "stable" }, "properties": { - "color-adjust": { + "print-color-adjust": { "links": { "tr": "#perf", "dev": "#perf" From a0de2d37f2959cc10869d76e98e96eea34198b19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Sun, 13 Feb 2022 01:24:15 +0100 Subject: [PATCH 389/668] Update Masking Level 1 for multiple masks --- tests/css-masking-1.js | 45 ++++++++++++++++++++++++++++++++++-------- 1 file changed, 37 insertions(+), 8 deletions(-) diff --git a/tests/css-masking-1.js b/tests/css-masking-1.js index edcaf44e..a307f9f1 100644 --- a/tests/css-masking-1.js +++ b/tests/css-masking-1.js @@ -44,14 +44,20 @@ export default { "tr": "#the-mask-image", "dev": "#the-mask-image" }, - "tests": ["none", "linear-gradient(black 0%, transparent 100%)", "url(image.png)"] + "tests": [ + "none", + "linear-gradient(black 0%, transparent 100%)", + "url(image.png)", + "url(masks.svg#mask1)", + "url(image.png), url(image2.png)" + ] }, "mask-mode": { "links": { "tr": "#the-mask-mode", "dev": "#the-mask-mode" }, - "tests": ["alpha", "luminance", "match-source"] + "tests": ["alpha", "luminance", "match-source", "alpha, match-source"] }, "mask-repeat": { "links": { @@ -63,7 +69,9 @@ export default { "space repeat", "round repeat", "no-repeat repeat", "repeat space", "space space", "round space", "no-repeat space", "repeat round", "space round", "round round", "no-repeat round", "repeat no-repeat", "space no-repeat", "round no-repeat", - "no-repeat no-repeat" + "no-repeat no-repeat", + "repeat-x, repeat-y", + "space no-repeat, no-repeat repeat, round" ] }, "mask-position": { @@ -71,28 +79,43 @@ export default { "tr": "#the-mask-position", "dev": "#the-mask-position" }, - "tests": ["center", "left 50%", "bottom 10px right 20px", "bottom 10px right", "top right 10px"] + "tests": [ + "left", "center", "right", "top", "bottom", + "left top", "left center", "center center", "right bottom", + "left 50%", + "bottom 10px right 20px", + "left, top", + "bottom 10px right 20px, left, center center"] }, "mask-clip": { "links": { "tr": "#the-mask-clip", "dev": "#the-mask-clip" }, - "tests": ["border-box", "padding-box", "content-box", "margin-box", "fill-box", "stroke-box", "view-box", "no-clip"] + "tests": [ + "border-box", "padding-box", "content-box", "margin-box", "fill-box", "stroke-box", "view-box", + "no-clip", "padding-box, no-clip" + ] }, "mask-origin": { "links": { "tr": "#the-mask-origin", "dev": "#the-mask-origin" }, - "tests": ["border-box", "padding-box", "content-box", "margin-box", "fill-box", "stroke-box", "view-box"] + "tests": [ + "border-box", "padding-box", "content-box", "margin-box", "fill-box", "stroke-box", "view-box", + "padding-box, content-box" + ] }, "mask-size": { "links": { "tr": "#the-mask-size", "dev": "#the-mask-size" }, - "tests": ["auto", "10px", "cover", "contain", "10px", "50%", "10px auto", "auto 10%", "50em 50%"] + "tests": [ + "auto", "10px", "cover", "contain", "10px", "50%", "10px auto", "auto 10%", "50em 50%", + "6px, auto, contain", "10px auto, auto, contain, 50em 50%" + ] }, "mask-composite": { "links": { @@ -106,7 +129,13 @@ export default { "tr": "#the-mask", "dev": "#the-mask" }, - "tests": ["top", "space", "url(image.png)", "url(image.png) luminance", "url(image.png) luminance top space"] + "tests": [ + "top", "space", + "url(image.png)", + "url(image.png) luminance", + "url(image.png) luminance top space", + "url(masks.svg#star) left / 16px repeat-y, url(masks.svg#circle) right / 16px repeat-y" + ] }, "mask-border-source": { "links": { From 240cf15d057243b9e454a5e8f3fab2d0fe5544dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Wed, 13 Apr 2022 14:43:24 +0200 Subject: [PATCH 390/668] Add viewport-percentage lengths --- tests/css-values-4.js | 128 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 128 insertions(+) diff --git a/tests/css-values-4.js b/tests/css-values-4.js index 7f14a704..38d43392 100644 --- a/tests/css-values-4.js +++ b/tests/css-values-4.js @@ -92,6 +92,134 @@ export default { }, "tests": "5rlh" }, + "svh": { + "links": { + "tr": "#viewport-relative-lengths", + "dev": "#viewport-relative-lengths", + "mdn": "length" + }, + "tests": "5svh" + }, + "lvh": { + "links": { + "tr": "#viewport-relative-lengths", + "dev": "#viewport-relative-lengths", + "mdn": "length" + }, + "tests": "5lvh" + }, + "dvh": { + "links": { + "tr": "#viewport-relative-lengths", + "dev": "#viewport-relative-lengths", + "mdn": "length" + }, + "tests": "5dvh" + }, + "svw": { + "links": { + "tr": "#viewport-relative-lengths", + "dev": "#viewport-relative-lengths", + "mdn": "length" + }, + "tests": "5svw" + }, + "lvw": { + "links": { + "tr": "#viewport-relative-lengths", + "dev": "#viewport-relative-lengths", + "mdn": "length" + }, + "tests": "5lvw" + }, + "dvw": { + "links": { + "tr": "#viewport-relative-lengths", + "dev": "#viewport-relative-lengths", + "mdn": "length" + }, + "tests": "5dvw" + }, + "dvmin": { + "links": { + "tr": "#viewport-relative-lengths", + "dev": "#viewport-relative-lengths", + "mdn": "length" + }, + "tests": "5dvmin" + }, + "dvmax": { + "links": { + "tr": "#viewport-relative-lengths", + "dev": "#viewport-relative-lengths", + "mdn": "length" + }, + "tests": "5dvmax" + }, + "vb": { + "links": { + "tr": "#viewport-relative-lengths", + "dev": "#viewport-relative-lengths", + "mdn": "length" + }, + "tests": "5vb" + }, + "vi": { + "links": { + "tr": "#viewport-relative-lengths", + "dev": "#viewport-relative-lengths", + "mdn": "length" + }, + "tests": "5vi" + }, + "svb": { + "links": { + "tr": "#viewport-relative-lengths", + "dev": "#viewport-relative-lengths", + "mdn": "length" + }, + "tests": "5dvb" + }, + "dvi": { + "links": { + "tr": "#viewport-relative-lengths", + "dev": "#viewport-relative-lengths", + "mdn": "length" + }, + "tests": "5dvi" + }, + "lvd": { + "links": { + "tr": "#viewport-relative-lengths", + "dev": "#viewport-relative-lengths", + "mdn": "length" + }, + "tests": "5lvb" + }, + "lvi": { + "links": { + "tr": "#viewport-relative-lengths", + "dev": "#viewport-relative-lengths", + "mdn": "length" + }, + "tests": "5lvi" + }, + "svb": { + "links": { + "tr": "#viewport-relative-lengths", + "dev": "#viewport-relative-lengths", + "mdn": "length" + }, + "tests": "5svb" + }, + "svi": { + "links": { + "tr": "#viewport-relative-lengths", + "dev": "#viewport-relative-lengths", + "mdn": "length" + }, + "tests": "5svi" + }, "toggle()": { "links": { "tr": "#toggle-notation", From c990211ad5ef8d5f55539573c83eec23814cb881 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Fri, 6 May 2022 23:09:10 +0200 Subject: [PATCH 391/668] Format all files with Prettier `npx prettier --write "**/*.js"` --- .prettierignore | 1 + .prettierrc | 9 + csstest.js | 305 +++++++------- filter.js | 4 +- supports.js | 135 ++++--- tests.js | 272 ++++++------- tests/compat.js | 26 +- tests/css-align-3.js | 295 +++++++++++--- tests/css-animations-1.js | 145 +++---- tests/css-animations-2.js | 54 +-- tests/css-backgrounds-3.js | 438 +++++++++++++-------- tests/css-backgrounds-4.js | 84 +++- tests/css-box-3.js | 414 ++++++++++--------- tests/css-box-4.js | 28 +- tests/css-break-3.js | 84 ++-- tests/css-break-4.js | 61 ++- tests/css-cascade-3.js | 53 ++- tests/css-cascade-4.js | 51 ++- tests/css-cascade-5.js | 73 ++-- tests/css-color-3.js | 102 +++-- tests/css-color-4.js | 259 ++++++------ tests/css-color-5.js | 103 +++-- tests/css-color-adjust-1.js | 65 +-- tests/css-composition-1.js | 87 ++-- tests/css-conditional-3.js | 44 +-- tests/css-conditional-4.js | 38 +- tests/css-conditional-5.js | 73 ++-- tests/css-containment-1.js | 43 +- tests/css-containment-2.js | 41 +- tests/css-containment-3.js | 200 +++++----- tests/css-content-3.js | 41 +- tests/css-counter-styles-3.js | 246 ++++++------ tests/css-display-3.js | 62 +-- tests/css-easing-1.js | 30 +- tests/css-env-1.js | 43 +- tests/css-exclusions-1.js | 38 +- tests/css-flexbox-1.js | 172 ++++---- tests/css-fonts-3.js | 386 +++++++++--------- tests/css-fonts-4.js | 256 ++++++------ tests/css-fonts-5.js | 49 +-- tests/css-grid-1.js | 361 +++++++++-------- tests/css-grid-2.js | 72 ++-- tests/css-grid-3.js | 112 ++++-- tests/css-highlight-api-1.js | 28 +- tests/css-images-3.js | 148 ++++--- tests/css-images-4.js | 185 +++++---- tests/css-inline-3.js | 170 ++++---- tests/css-layout-api-1.js | 30 +- tests/css-line-grid-1.js | 48 +-- tests/css-lists-3.js | 196 +++++---- tests/css-logical-1.js | 658 +++++++++++++++---------------- tests/css-masking-1.js | 456 ++++++++++++--------- tests/css-multicol-1.js | 110 +++--- tests/css-multicol-2.js | 24 +- tests/css-nav-1.js | 48 +-- tests/css-overflow-3.js | 113 +++--- tests/css-overflow-4.js | 48 ++- tests/css-overscroll-1.js | 75 ++-- tests/css-page-3.js | 123 +++--- tests/css-paint-api-1.js | 45 +-- tests/css-position-3.js | 96 ++--- tests/css-pseudo-4.js | 88 ++--- tests/css-regions-1.js | 48 +-- tests/css-rhythmic-1.js | 94 ++--- tests/css-ruby-1.js | 58 +-- tests/css-scoping-1.js | 60 +-- tests/css-scroll-anchoring-1.js | 26 +- tests/css-scroll-snap-1.js | 407 ++++++++++--------- tests/css-scrollbars-1.js | 38 +- tests/css-shadow-parts-1.js | 28 +- tests/css-shapes-1.js | 73 ++-- tests/css-shapes-2.js | 47 ++- tests/css-sizing-3.js | 88 ++--- tests/css-sizing-4.js | 198 +++++----- tests/css-speech-1.js | 361 +++++++++-------- tests/css-text-3.js | 181 +++++---- tests/css-text-4.js | 138 +++---- tests/css-text-decor-3.js | 129 +++--- tests/css-text-decor-4.js | 105 ++--- tests/css-transforms-1.js | 88 +++-- tests/css-transforms-2.js | 135 +++---- tests/css-transitions-1.js | 85 ++-- tests/css-ui-3.js | 115 +++--- tests/css-ui-4.js | 199 ++++++---- tests/css-values-3.js | 153 ++++---- tests/css-values-4.js | 677 ++++++++++++++++---------------- tests/css-variables-1.js | 50 +-- tests/css-will-change-1.js | 28 +- tests/css-writing-modes-3.js | 60 +-- tests/css-writing-modes-4.js | 38 +- tests/css2-cascade.js | 38 +- tests/css2-colors.js | 125 +++--- tests/css2-fonts.js | 148 ++++--- tests/css2-generate.js | 177 +++++---- tests/css2-media.js | 42 +- tests/css2-page.js | 168 ++++---- tests/css2-selectors.js | 207 +++++----- tests/css2-tables.js | 72 ++-- tests/css2-text.js | 103 ++--- tests/css2-ui.js | 114 +++--- tests/css2-visudet.js | 105 +++-- tests/css2-visufx.js | 52 +-- tests/css2-visuren.js | 155 ++++---- tests/cssom-view-1.js | 28 +- tests/fill-stroke-3.js | 433 +++++++++++--------- tests/filter-effects-1.js | 100 ++--- tests/filter-effects-2.js | 56 +-- tests/fullscreen.js | 34 +- tests/html.js | 26 +- tests/mathml-core.js | 92 +++-- tests/mediaqueries-3.js | 204 +++++----- tests/mediaqueries-4.js | 145 +++---- tests/mediaqueries-5.js | 152 ++++--- tests/motion-1.js | 150 +++---- tests/pointerevents1.js | 24 +- tests/pointerevents3.js | 28 +- tests/scroll-animations-1.js | 87 ++-- tests/selectors-3.js | 452 +++++++++++---------- tests/selectors-4.js | 534 +++++++++++++------------ tests/svg2-coords.js | 50 +-- tests/svg2-geometry.js | 104 ++--- tests/svg2-interact.js | 42 +- tests/svg2-painting.js | 118 +++--- tests/svg2-paths.js | 32 +- tests/svg2-pservers.js | 40 +- tests/svg2-text.js | 104 ++--- tests/webvtt.js | 60 +-- 127 files changed, 8747 insertions(+), 7705 deletions(-) create mode 100644 .prettierignore create mode 100644 .prettierrc diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 00000000..931aad99 --- /dev/null +++ b/.prettierignore @@ -0,0 +1 @@ +# Add files here to ignore them from prettier formatting diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 00000000..a72a84f5 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,9 @@ +{ + "singleQuote": true, + "semi": true, + "tabWidth": 4, + "printWidth": 120, + "arrowParens": "avoid", + "trailingComma": "all", + "bracketSpacing": true +} diff --git a/csstest.js b/csstest.js index a1c21db7..0c766a00 100644 --- a/csstest.js +++ b/csstest.js @@ -7,7 +7,9 @@ var Score = function (parent) { Score.prototype = { update: function (data) { - if (!data.total) { return; } + if (!data.total) { + return; + } this.passedTests += data.passed; this.totalTests += data.total; @@ -25,29 +27,29 @@ Score.prototype = { }, percent: function () { - return Math.round(100 * this.passed / this.total); - } + return Math.round((100 * this.passed) / this.total); + }, }; var mainScore = new Score(); var devLinkFormat = function (params) { switch (params.devtype) { - case "fxtf": + case 'fxtf': // FX Task Force Editor Drafts return 'https://drafts.fxtf.org/' + params.dev; - case "houdini": + case 'houdini': // CSS-TAG Houdini Editor Drafts return 'https://drafts.css-houdini.org/' + params.dev; - case "github": + case 'github': return 'https://w3c.github.io/' + params.dev; - case "svgwg": + case 'svgwg': // SVG Working Group Editor Drafts return 'https://svgwg.org/' + params.dev; - case "whatwg": + case 'whatwg': // WHATWG return 'https://' + params.dev + '.spec.whatwg.org/'; - case "math": + case 'math': // The MathML Refresh Community Group return 'https://mathml-refresh.github.io/' + params.dev; default: @@ -56,16 +58,15 @@ var devLinkFormat = function (params) { } }; - var devLinkLogo = function (params) { switch (params.devtype) { - case "whatwg": + case 'whatwg': return params.devtype; - case "svgwg": - case "houdini": - case "fxtf": - case "github": - case "math": + case 'svgwg': + case 'houdini': + case 'fxtf': + case 'github': + case 'math': default: return 'w3c'; } @@ -82,45 +83,51 @@ var Test = function (spec) { if (spec.tests.links) { if (spec.tests.links.tr) { - contents.push($.create({ - tag: 'a', - properties: { - href: 'https://www.w3.org/TR/' + spec.tests.links.tr, - target: '_blank', - textContent: 'TR', - className: 'spec-link w3c-link' - } - })); + contents.push( + $.create({ + tag: 'a', + properties: { + href: 'https://www.w3.org/TR/' + spec.tests.links.tr, + target: '_blank', + textContent: 'TR', + className: 'spec-link w3c-link', + }, + }), + ); } if (spec.tests.links.dev) { - contents.push($.create({ - tag: 'a', - properties: { - href: devLinkFormat(spec.tests.links), - target: '_blank', - textContent: 'DEV', - className: 'spec-link ' + devLinkLogo(spec.tests.links) + '-link' - } - })); + contents.push( + $.create({ + tag: 'a', + properties: { + href: devLinkFormat(spec.tests.links), + target: '_blank', + textContent: 'DEV', + className: 'spec-link ' + devLinkLogo(spec.tests.links) + '-link', + }, + }), + ); } if (spec.tests.links.mdn) { - contents.push($.create({ - tag: 'a', - properties: { - href: 'https://developer.mozilla.org/en-US/docs/' + spec.tests.links.mdn, - target: '_blank', - textContent: 'MDN', - className: 'spec-link mdn-link' - } - })); + contents.push( + $.create({ + tag: 'a', + properties: { + href: 'https://developer.mozilla.org/en-US/docs/' + spec.tests.links.mdn, + target: '_blank', + textContent: 'MDN', + className: 'spec-link mdn-link', + }, + }), + ); } } var h1 = $.create({ tag: 'h1', - contents: contents + contents: contents, }); // Wrapper section @@ -128,7 +135,7 @@ var Test = function (spec) { tag: 'section', id: this.id, className: 'tests', - contents: [h1] + contents: [h1], }); // Perform tests @@ -141,7 +148,7 @@ var Test = function (spec) { tag: 'span', contents: this.score + '', className: 'score', - inside: h1 + inside: h1, }); $('#all').appendChild(this.section); @@ -149,67 +156,77 @@ var Test = function (spec) { // Add to list of tested specs $.create({ tag: 'li', - className: passclass({ passed: this.score.passed, total: this.score.total }), + className: passclass({ + passed: this.score.passed, + total: this.score.total, + }), title: this.score + ' passed', contents: [ { tag: 'a', href: '#' + spec.id, - contents: this.title - } + contents: this.title, + }, ], - inside: $('#specsTested') + inside: $('#specsTested'), }); -} +}; Test.prototype = { group: function (what, testCallback) { - var thisSection, theseTests = this.tests[what]; + var thisSection, + theseTests = this.tests[what]; for (var feature in theseTests) { if (feature === 'properties') { continue; } - thisSection = thisSection || $.create({ - tag: 'section', - className: 'tests ' + what, - contents: { - tag: 'h1', - contents: what - }, - inside: this.section - }); + thisSection = + thisSection || + $.create({ + tag: 'section', + className: 'tests ' + what, + contents: { + tag: 'h1', + contents: what, + }, + inside: this.section, + }); var summaryContents = [ document.createTextNode(feature), - null // for prefix + null, // for prefix ]; var links = theseTests[feature].links; if (links) { if (links.tr) { - summaryContents.push($.create({ - tag: 'a', - properties: { - href: 'https://www.w3.org/TR/' + this.tests.links.tr + links.tr, - target: '_blank', - textContent: 'TR', - className: 'spec-link w3c-link' - } - })); + summaryContents.push( + $.create({ + tag: 'a', + properties: { + href: 'https://www.w3.org/TR/' + this.tests.links.tr + links.tr, + target: '_blank', + textContent: 'TR', + className: 'spec-link w3c-link', + }, + }), + ); } if (links.dev) { - summaryContents.push($.create({ - tag: 'a', - properties: { - href: devLinkFormat(this.tests.links).replace(/#.*/, '') + links.dev, - target: '_blank', - textContent: 'DEV', - className: 'spec-link ' + devLinkLogo(this.tests.links) + '-link' - } - })); + summaryContents.push( + $.create({ + tag: 'a', + properties: { + href: devLinkFormat(this.tests.links).replace(/#.*/, '') + links.dev, + target: '_blank', + textContent: 'DEV', + className: 'spec-link ' + devLinkLogo(this.tests.links) + '-link', + }, + }), + ); } var mdnLink = 'https://developer.mozilla.org/en-US/docs/Web/'; @@ -220,7 +237,7 @@ Test.prototype = { default: mdnLink += 'CSS/'; // add exception for Media Queries if no link define - if (what === "Media queries" && !links.mdn) { + if (what === 'Media queries' && !links.mdn) { mdnLink += '@media/'; } break; @@ -228,18 +245,20 @@ Test.prototype = { mdnLink += links.mdn ? links.mdn : feature.startsWith(':') - ? feature.replace('()', '') - : feature.replace(/(@[^ \/]+)[^\/]*(\/.*)/, '$1$2'); + ? feature.replace('()', '') + : feature.replace(/(@[^ \/]+)[^\/]*(\/.*)/, '$1$2'); - summaryContents.push($.create({ - tag: 'a', - properties: { - href: mdnLink, - target: '_blank', - textContent: 'MDN', - className: 'spec-link mdn-link' - } - })); + summaryContents.push( + $.create({ + tag: 'a', + properties: { + href: mdnLink, + target: '_blank', + textContent: 'MDN', + className: 'spec-link mdn-link', + }, + }), + ); } var passed = 0, @@ -249,9 +268,12 @@ Test.prototype = { tests = tests instanceof Array ? tests : [tests]; - for (var i = 0, test; test = tests[i++];) { + for (var i = 0, test; (test = tests[i++]); ) { var results = testCallback(test, feature, theseTests), - success, prefix, propertyPrefix, note; + success, + prefix, + propertyPrefix, + note; if (typeof results === 'object') { success = results.success; @@ -262,20 +284,26 @@ Test.prototype = { passed += +success; - testsResults.push($.create({ - tag: 'li', - innerHTML: test - + (prefix ? '' + prefix + '' : '') - + (note ? '' + note + '' : ''), - className: passclass({ passed: Math.round(success * 10000), total: 10000 }), - })); + testsResults.push( + $.create({ + tag: 'li', + innerHTML: + test + + (prefix ? '' + prefix + '' : '') + + (note ? '' + note + '' : ''), + className: passclass({ + passed: Math.round(success * 10000), + total: 10000, + }), + }), + ); } if (propertyPrefix) { summaryContents[1] = $.create({ tag: 'span', className: 'prefix', - textContent: propertyPrefix + textContent: propertyPrefix, }); } @@ -283,35 +311,38 @@ Test.prototype = { $.create({ tag: 'summary', properties: { - className: passclass({ passed: passed, total: tests.length }), - style: '--progress: ' + (passed / tests.length * 100), + className: passclass({ + passed: passed, + total: tests.length, + }), + style: '--progress: ' + (passed / tests.length) * 100, }, - contents: summaryContents + contents: summaryContents, }), $.create({ tag: 'ul', contents: testsResults, - }) + }), ]; var details = $.create({ tag: 'details', - contents: detailsContents + contents: detailsContents, }); thisSection.appendChild(details); this.score.update({ passed: passed, total: tests.length }); } - } -} + }, +}; Test.groups = { - 'values': function (test, label, tests) { + values: function (test, label, tests) { var properties = tests.properties, failed = []; - for (var j = 0, property; property = properties[j++];) { + for (var j = 0, property; (property = properties[j++]); ) { if (!Supports.property(property).success) { properties.splice(--j, 1); continue; @@ -326,31 +357,31 @@ Test.groups = { return { success: success, - note: success > 0 && success < 1 ? 'Failed in: ' + failed.join(', ') : '' - } + note: success > 0 && success < 1 ? 'Failed in: ' + failed.join(', ') : '', + }; }, - 'properties': function (value, property) { + properties: function (value, property) { return Supports.value(property, value); }, - 'descriptors': function (value, descriptor, tests) { + descriptors: function (value, descriptor, tests) { var required = undefined; if (tests[descriptor].required) { if (tests[descriptor].required[value]) { required = tests[descriptor].required[value]; - } else if (tests[descriptor].required['*'] ) { + } else if (tests[descriptor].required['*']) { required = tests[descriptor].required['*']; } } return Supports.descriptorvalue(descriptor, value, required); }, - 'selectors': function (test) { + selectors: function (test) { return Supports.selector(test); }, - 'declaration': function (test) { + declaration: function (test) { return Supports.declaration(test); }, @@ -362,12 +393,11 @@ Test.groups = { var matches = matchMedia(test); if (matches.media !== 'invalid' && matches.matches) { return { success: true }; - } - else { + } else { var matches = matchMedia('not ' + test); - return { success: matches.media !== 'invalid' && matches.matches } + return { success: matches.media !== 'invalid' && matches.matches }; } - } + }, }; function passclass(info) { @@ -375,27 +405,18 @@ function passclass(info) { if ('passed' in info) { success = info.passed / info.total; - } - else if ('failed' in info) { + } else if ('failed' in info) { success = 1 - info.failed / info.total; } - var classes = [ - 'epic-fail', - 'fail', - 'very-buggy', - 'buggy', - 'slightly-buggy', - 'almost-pass', - 'pass' - ]; + var classes = ['epic-fail', 'fail', 'very-buggy', 'buggy', 'slightly-buggy', 'almost-pass', 'pass']; var index = Math.round(success * (classes.length - 1)); return classes[index]; } -window.resetOutput = function() { +window.resetOutput = function () { mainScore = new Score(); // Output current score @@ -408,11 +429,11 @@ window.resetOutput = function() { // Display time taken $('#timeTaken').textContent = ''; -} +}; -window.runTests = function(filter = '') { +window.runTests = function (filter = '') { var specs = []; - var timeBefore = +new Date; + var timeBefore = +new Date(); var removedWords = / *(?:\([^)]*\)|:.*|\b(?:CSS(?! 2)|Module)\b)( *)/g; @@ -442,8 +463,8 @@ window.runTests = function(filter = '') { id: spec, // Shorten the title by removing parentheticals, // subheadings, CSS and Module words - title: Specs[spec].title.replace(removedWords, "$1").trim(), - tests: Specs[spec] + title: Specs[spec].title.replace(removedWords, '$1').trim(), + tests: Specs[spec], }); } @@ -461,10 +482,10 @@ window.runTests = function(filter = '') { $('#total').textContent = mainScore.total; // Display time taken - $('#timeTaken').textContent = +new Date - timeBefore + 'ms'; -} + $('#timeTaken').textContent = +new Date() - timeBefore + 'ms'; +}; onload = function () { $('#filter').value = localStorage.getItem('filter') || ''; runTests(localStorage.getItem('filter') || ''); -} +}; diff --git a/filter.js b/filter.js index 2d867ecf..971d69c2 100644 --- a/filter.js +++ b/filter.js @@ -1,7 +1,7 @@ -(function() { +(function () { $('#filter').addEventListener('change', evt => { localStorage.setItem('filter', evt.target.value); resetOutput(); runTests(evt.target.value); }); -})(); \ No newline at end of file +})(); diff --git a/supports.js b/supports.js index 7dcd190b..e75afd3d 100644 --- a/supports.js +++ b/supports.js @@ -1,34 +1,31 @@ /*! matchMedia() polyfill - Test a CSS media type/query in JS. Authors & copyright (c) 2012: Scott Jehl, Paul Irish, Nicholas Zakas. Dual MIT/BSD license */ -window.matchMedia = window.matchMedia || (function (doc, undefined) { - - var bool, - docElem = doc.documentElement, - refNode = docElem.firstElementChild || docElem.firstChild, - // fakeBody required for - fakeBody = doc.createElement('body'), - div = doc.createElement('div'); - - div.id = 'mq-test-1'; - div.style.cssText = "position:absolute;top:-100em"; - fakeBody.appendChild(div); - - return function (q) { - - div.innerHTML = '­'; - - docElem.insertBefore(fakeBody, refNode); - bool = div.offsetWidth == 42; - docElem.removeChild(fakeBody); - - return { matches: bool, media: q }; - }; - -})(document); - +window.matchMedia = + window.matchMedia || + (function (doc, undefined) { + var bool, + docElem = doc.documentElement, + refNode = docElem.firstElementChild || docElem.firstChild, + // fakeBody required for + fakeBody = doc.createElement('body'), + div = doc.createElement('div'); + + div.id = 'mq-test-1'; + div.style.cssText = 'position:absolute;top:-100em'; + fakeBody.appendChild(div); + + return function (q) { + div.innerHTML = '­'; + + docElem.insertBefore(fakeBody, refNode); + bool = div.offsetWidth == 42; + docElem.removeChild(fakeBody); + + return { matches: bool, media: q }; + }; + })(document); (function () { - /** * Setup dummy elements */ @@ -41,25 +38,24 @@ window.matchMedia = window.matchMedia || (function (doc, undefined) { dummy.setAttribute('data-px', '1px'); document.documentElement.appendChild(dummy); - var _ = window.Supports = { + var _ = (window.Supports = { prefixes: ['', '-moz-', '-webkit-', '-o-', '-ms-', 'ms-', '-khtml-'], property: function (property) { if (property.charAt(0) === '-') { return { success: camelCase(property) in inline ? true : false, - property: property + property: property, }; } if (!_.property.cached) { _.property.cached = {}; - } - else if (_.property.cached[property]) { + } else if (_.property.cached[property]) { return { success: true, property: _.property.cached[property].property, - prefix: _.property.cached[property].prefix + prefix: _.property.cached[property].prefix, }; } @@ -67,11 +63,14 @@ window.matchMedia = window.matchMedia || (function (doc, undefined) { var prefixed = _.prefixes[i] + property; if (camelCase(prefixed) in inline) { - _.property.cached[property] = { property: prefixed, prefix: _.prefixes[i] }; + _.property.cached[property] = { + property: prefixed, + prefix: _.prefixes[i], + }; return { success: true, property: prefixed, - prefix: _.prefixes[i] + prefix: _.prefixes[i], }; } } @@ -79,7 +78,7 @@ window.matchMedia = window.matchMedia || (function (doc, undefined) { _.property.cached[property] = false; return { success: false, - property: property + property: property, }; }, @@ -89,7 +88,7 @@ window.matchMedia = window.matchMedia || (function (doc, undefined) { if (!property.success) { return property; } - propertyPrefix = property.prefix + propertyPrefix = property.prefix; property = camelCase(property.property); inline.cssText = ''; @@ -100,25 +99,26 @@ window.matchMedia = window.matchMedia || (function (doc, undefined) { try { inline[property] = prefixed; - } catch (e) { } + } catch (e) {} if (inline.length > 0) { return { success: true, prefix: _.prefixes[i], - propertyPrefix: propertyPrefix + propertyPrefix: propertyPrefix, }; } } return { - success: false + success: false, }; }, descriptorvalue: function (descriptor, value, required) { /* doesn't handle prefixes for descriptor or value */ - var add = '', pos = 0; + var add = '', + pos = 0; if (descriptor.match(/@.*\//)) { var part = descriptor.split('/'); var rule = part[0]; @@ -134,16 +134,16 @@ window.matchMedia = window.matchMedia || (function (doc, undefined) { } } } else { - var rule = '@font-face' + var rule = '@font-face'; } - style.textContent = rule + " {" + add + descriptor + ":" + value + "}"; + style.textContent = rule + ' {' + add + descriptor + ':' + value + '}'; try { if (style.sheet.cssRules.length) { return { success: - style.sheet.cssRules[pos].style && style.sheet.cssRules[pos].style.length >= 1 || - !!style.sheet.cssRules[pos][camelCase(descriptor)] + (style.sheet.cssRules[pos].style && style.sheet.cssRules[pos].style.length >= 1) || + !!style.sheet.cssRules[pos][camelCase(descriptor)], }; } else { return { success: false }; @@ -156,10 +156,9 @@ window.matchMedia = window.matchMedia || (function (doc, undefined) { selector: function (selector) { if (!_.selector.cached) { _.selector.cached = {}; - } - else if (_.selector.cached[selector]) { + } else if (_.selector.cached[selector]) { return { - success: _.selector.cached[selector] + success: _.selector.cached[selector], }; } @@ -171,10 +170,9 @@ window.matchMedia = window.matchMedia || (function (doc, undefined) { _.selector.cached[selector] = true; return { success: true, - propertyPrefix: _.prefixes[i] + propertyPrefix: _.prefixes[i], }; - } - catch (e) { } + } catch (e) {} } _.selector.cached[selector] = false; @@ -184,23 +182,22 @@ window.matchMedia = window.matchMedia || (function (doc, undefined) { atrule: function (atrule) { if (!_.atrule.cached) { _.atrule.cached = {}; - } - else if (_.atrule.cached[atrule]) { + } else if (_.atrule.cached[atrule]) { return { - success: _.atrule.cached[atrule] + success: _.atrule.cached[atrule], }; } for (var i = 0; i < _.prefixes.length; i++) { var prefixed = atrule.replace(/^@/, '@' + _.prefixes[i]); - style.textContent = prefixed; // Safari 4 has issues with style.innerHTML + style.textContent = prefixed; // Safari 4 has issues with style.innerHTML if (style.sheet.cssRules.length > 0) { _.atrule.cached[atrule] = true; return { success: true, - prefix: _.prefixes[i] + prefix: _.prefixes[i], }; } } @@ -212,25 +209,22 @@ window.matchMedia = window.matchMedia || (function (doc, undefined) { mq: function (mq) { if (window.matchMedia) { return { - success: matchMedia(mq).media !== 'invalid' - ? true - : matchMedia('not ' + mq).media !== 'invalid' + success: matchMedia(mq).media !== 'invalid' ? true : matchMedia('not ' + mq).media !== 'invalid', }; - } - else { + } else { style.textContent = '@media ' + mq + '{ foo {} }'; if (style.sheet.cssRules.length > 0) { return { - success: true + success: true, }; } else { style.textContent = '@media not ' + mq + '{ foo {} }'; return { - success: style.sheet.cssRules.length > 0 ? mq : false + success: style.sheet.cssRules.length > 0 ? mq : false, }; - }; + } } }, @@ -239,7 +233,7 @@ window.matchMedia = window.matchMedia || (function (doc, undefined) { inline.setProperty('margin-right', 'var(' + name + ')'); var styles = window.getComputedStyle(dummy); return { - success: styles.marginRight === value + success: styles.marginRight === value, }; }, @@ -248,16 +242,19 @@ window.matchMedia = window.matchMedia || (function (doc, undefined) { return { success: !val[1].match(/--.*/) ? Supports.value(val[1], val[2]).success - : Supports.variable(val[1], val[2]).success + : Supports.variable(val[1], val[2]).success, }; - } - }; + }, + }); /** * Private */ function camelCase(str) { - return str.replace(/-([a-z])/g, function ($0, $1) { return $1.toUpperCase(); }).replace('-', ''); + return str + .replace(/-([a-z])/g, function ($0, $1) { + return $1.toUpperCase(); + }) + .replace('-', ''); } - })(); diff --git a/tests.js b/tests.js index e68898ff..48c513bf 100644 --- a/tests.js +++ b/tests.js @@ -1,17 +1,4 @@ -import compat from './tests/compat.js'; -import css2Cascade from './tests/css2-cascade.js'; -import css2Colors from './tests/css2-colors.js'; -import css2Fonts from './tests/css2-fonts.js'; -import css2Generate from './tests/css2-generate.js'; -import css2Media from './tests/css2-media.js'; -import css2Page from './tests/css2-page.js'; -import css2Selectors from './tests/css2-selectors.js'; -import css2Tables from './tests/css2-tables.js'; -import css2Text from './tests/css2-text.js'; -import css2Ui from './tests/css2-ui.js'; -import css2VisuDet from './tests/css2-visudet.js'; -import css2VisuFx from './tests/css2-visufx.js'; -import css2VisuRen from './tests/css2-visuren.js'; +import compat from './tests/compat.js'; import cssAlign3 from './tests/css-align-3.js'; import cssAnimations1 from './tests/css-animations-1.js'; import cssAnimations2 from './tests/css-animations-2.js'; @@ -95,6 +82,19 @@ import cssVariables1 from './tests/css-variables-1.js'; import cssWillChange1 from './tests/css-will-change-1.js'; import cssWritingModes3 from './tests/css-writing-modes-3.js'; import cssWritingModes4 from './tests/css-writing-modes-4.js'; +import css2Cascade from './tests/css2-cascade.js'; +import css2Colors from './tests/css2-colors.js'; +import css2Fonts from './tests/css2-fonts.js'; +import css2Generate from './tests/css2-generate.js'; +import css2Media from './tests/css2-media.js'; +import css2Page from './tests/css2-page.js'; +import css2Selectors from './tests/css2-selectors.js'; +import css2Tables from './tests/css2-tables.js'; +import css2Text from './tests/css2-text.js'; +import css2Ui from './tests/css2-ui.js'; +import css2VisuDet from './tests/css2-visudet.js'; +import css2VisuFx from './tests/css2-visufx.js'; +import css2VisuRen from './tests/css2-visuren.js'; import cssomView1 from './tests/cssom-view-1.js'; import fillStroke3 from './tests/fill-stroke-3.js'; import filterEffects1 from './tests/filter-effects-1.js'; @@ -121,125 +121,125 @@ import svg2Text from './tests/svg2-text.js'; import webVtt from './tests/webvtt.js'; export default { - "compat": compat, - "css2-cascade": css2Cascade, - "css2-colors": css2Colors, - "css2-fonts": css2Fonts, - "css2-generate": css2Generate, - "css2-media": css2Media, - "css2-page": css2Page, - "css2-selectors": css2Selectors, - "css2-tables": css2Tables, - "css2-text": css2Text, - "css2-ui": css2Ui, - "css2-visudet": css2VisuDet, - "css2-visufx": css2VisuFx, - "css2-visuren": css2VisuRen, - "css-align-3": cssAlign3, - "css-animation-1": cssAnimations1, - "css-animation-2": cssAnimations2, - "css-backgrounds-3": cssBackgrounds3, - "css-backgrounds-4": cssBackgrounds4, - "css-box-3": cssBox3, - "css-box-4": cssBox4, - "css-break-3": cssBreak3, - "css-break-4": cssBreak4, - "css-cascade-3": cssCascade3, - "css-cascade-4": cssCascade4, - "css-cascade-5": cssCascade5, - "css-colors-3": cssColor3, - "css-colors-4": cssColor4, - "css-colors-5": cssColor5, - "css-colors-adjust-1": cssColorAdjust1, - "css-composition-1": cssComposition1, - "css-conditional-3": cssConditional3, - "css-conditional-4": cssConditional4, - "css-conditional-5": cssConditional5, - "css-containment-1": cssContainment1, - "css-containment-2": cssContainment2, - "css-containment-3": cssContainment3, - "css-content-3": cssContent3, - "css-counter-styles-3": cssCounterStyles3, - "css-display-3": cssDisplay3, - "css-easing-1": cssEasing1, - "css-env-1": cssEnv1, - "css-exclusions-1": cssExclusions1, - "css-flexbox-1": cssFlexbox1, - "css-fonts-3": cssFonts3, - "css-fonts-4": cssFonts4, - "css-fonts-5": cssFonts5, - "css-grid-1": cssGrid1, - "css-grid-2": cssGrid2, - "css-grid-3": cssGrid3, - "css-highlight-api-1": cssHighlightApi1, - "css-images-3": cssImages3, - "css-images-4": cssImages4, - "css-inline-3": cssInline3, - "css-layout-api-1": cssLayoutApi1, - "css-line-grid-1": cssLineGrid1, - "css-lists-3": cssLists3, - "css-logical-1": cssLogical1, - "css-masking-1": cssMasking1, - "css-multicol-1": cssMulticol1, - "css-multicol-2": cssMulticol2, - "css-nav-1": cssNav1, - "css-overflow-3": cssOverflow3, - "css-overflow-4": cssOverflow4, - "css-overscroll-1": cssOverscroll1, - "css-page-3": cssPage3, - "css-paint-api-1": cssPaintApi1, - "css-position-3": cssPosition3, - "css-pseudo-4": cssPseudo4, - "css-regions-1": cssRegions1, - "css-rhythmic": cssRhythmic, - "css-ruby-1": cssRuby1, - "css-scoping-1": cssScoping1, - "css-scroll-anchoring-1": cssScrollAnchoring1, - "css-scroll-snap-1": cssScrollSnap1, - "css-scrollbars-1": cssScrollbars1, - "css-shadow-parts-1": cssShadowParts1, - "css-shapes-1": cssShapes1, - "css-shapes-2": cssShapes2, - "css-sizing-3": cssSizing3, - "css-sizing-4": cssSizing4, - "css-speech-1": cssSpeech1, - "css-text-3": cssText3, - "css-text-4": cssText4, - "css-text-decor-3": cssTextDecor3, - "css-text-decor-4": cssTextDecor4, - "css-transforms-1": cssTransforms1, - "css-transforms-2": cssTransforms2, - "css-transitions-1": cssTransitions1, - "css-ui-3": cssUi3, - "css-ui-4": cssUi4, - "css-values-3": cssValues3, - "css-values-4": cssValues4, - "css-variables-1": cssVariables1, - "css-will-change-1": cssWillChange1, - "css-writing-modes-3": cssWritingModes3, - "css-writing-modes-4": cssWritingModes4, - "cssom-view-1": cssomView1, - "fill-stroke-3": fillStroke3, - "filter-effects-1": filterEffects1, - "filter-effects-2": filterEffects2, - "fullscreen": fullscreen, - "html": html, - "mathml-core": mathmlCore, - "mediaqueries-3": mediaQueries3, - "mediaqueries-4": mediaQueries4, - "mediaqueries-5": mediaQueries5, - "motion-1": motion1, - "pointerevents-1": pointerEvents1, - "pointerevents-3": pointerEvents3, - "scroll-animations-1": scrollAnimations1, - "selectors-3": selectors3, - "selectors-4": selectors4, - "svg2-coords": svg2Coords, - "svg2-geometry": svg2Geometry, - "svg2-interact": svg2Interact, - "svg2-painting": svg2Painting, - "svg2-paths": svg2Paths, - "svg2-pServers": svg2PServers, - "svg2-text": svg2Text, - "webvtt": webVtt -} + compat: compat, + 'css2-cascade': css2Cascade, + 'css2-colors': css2Colors, + 'css2-fonts': css2Fonts, + 'css2-generate': css2Generate, + 'css2-media': css2Media, + 'css2-page': css2Page, + 'css2-selectors': css2Selectors, + 'css2-tables': css2Tables, + 'css2-text': css2Text, + 'css2-ui': css2Ui, + 'css2-visudet': css2VisuDet, + 'css2-visufx': css2VisuFx, + 'css2-visuren': css2VisuRen, + 'css-align-3': cssAlign3, + 'css-animation-1': cssAnimations1, + 'css-animation-2': cssAnimations2, + 'css-backgrounds-3': cssBackgrounds3, + 'css-backgrounds-4': cssBackgrounds4, + 'css-box-3': cssBox3, + 'css-box-4': cssBox4, + 'css-break-3': cssBreak3, + 'css-break-4': cssBreak4, + 'css-cascade-3': cssCascade3, + 'css-cascade-4': cssCascade4, + 'css-cascade-5': cssCascade5, + 'css-colors-3': cssColor3, + 'css-colors-4': cssColor4, + 'css-colors-5': cssColor5, + 'css-colors-adjust-1': cssColorAdjust1, + 'css-composition-1': cssComposition1, + 'css-conditional-3': cssConditional3, + 'css-conditional-4': cssConditional4, + 'css-conditional-5': cssConditional5, + 'css-containment-1': cssContainment1, + 'css-containment-2': cssContainment2, + 'css-containment-3': cssContainment3, + 'css-content-3': cssContent3, + 'css-counter-styles-3': cssCounterStyles3, + 'css-display-3': cssDisplay3, + 'css-easing-1': cssEasing1, + 'css-env-1': cssEnv1, + 'css-exclusions-1': cssExclusions1, + 'css-flexbox-1': cssFlexbox1, + 'css-fonts-3': cssFonts3, + 'css-fonts-4': cssFonts4, + 'css-fonts-5': cssFonts5, + 'css-grid-1': cssGrid1, + 'css-grid-2': cssGrid2, + 'css-grid-3': cssGrid3, + 'css-highlight-api-1': cssHighlightApi1, + 'css-images-3': cssImages3, + 'css-images-4': cssImages4, + 'css-inline-3': cssInline3, + 'css-layout-api-1': cssLayoutApi1, + 'css-line-grid-1': cssLineGrid1, + 'css-lists-3': cssLists3, + 'css-logical-1': cssLogical1, + 'css-masking-1': cssMasking1, + 'css-multicol-1': cssMulticol1, + 'css-multicol-2': cssMulticol2, + 'css-nav-1': cssNav1, + 'css-overflow-3': cssOverflow3, + 'css-overflow-4': cssOverflow4, + 'css-overscroll-1': cssOverscroll1, + 'css-page-3': cssPage3, + 'css-paint-api-1': cssPaintApi1, + 'css-position-3': cssPosition3, + 'css-pseudo-4': cssPseudo4, + 'css-regions-1': cssRegions1, + 'css-rhythmic': cssRhythmic, + 'css-ruby-1': cssRuby1, + 'css-scoping-1': cssScoping1, + 'css-scroll-anchoring-1': cssScrollAnchoring1, + 'css-scroll-snap-1': cssScrollSnap1, + 'css-scrollbars-1': cssScrollbars1, + 'css-shadow-parts-1': cssShadowParts1, + 'css-shapes-1': cssShapes1, + 'css-shapes-2': cssShapes2, + 'css-sizing-3': cssSizing3, + 'css-sizing-4': cssSizing4, + 'css-speech-1': cssSpeech1, + 'css-text-3': cssText3, + 'css-text-4': cssText4, + 'css-text-decor-3': cssTextDecor3, + 'css-text-decor-4': cssTextDecor4, + 'css-transforms-1': cssTransforms1, + 'css-transforms-2': cssTransforms2, + 'css-transitions-1': cssTransitions1, + 'css-ui-3': cssUi3, + 'css-ui-4': cssUi4, + 'css-values-3': cssValues3, + 'css-values-4': cssValues4, + 'css-variables-1': cssVariables1, + 'css-will-change-1': cssWillChange1, + 'css-writing-modes-3': cssWritingModes3, + 'css-writing-modes-4': cssWritingModes4, + 'cssom-view-1': cssomView1, + 'fill-stroke-3': fillStroke3, + 'filter-effects-1': filterEffects1, + 'filter-effects-2': filterEffects2, + fullscreen: fullscreen, + html: html, + 'mathml-core': mathmlCore, + 'mediaqueries-3': mediaQueries3, + 'mediaqueries-4': mediaQueries4, + 'mediaqueries-5': mediaQueries5, + 'motion-1': motion1, + 'pointerevents-1': pointerEvents1, + 'pointerevents-3': pointerEvents3, + 'scroll-animations-1': scrollAnimations1, + 'selectors-3': selectors3, + 'selectors-4': selectors4, + 'svg2-coords': svg2Coords, + 'svg2-geometry': svg2Geometry, + 'svg2-interact': svg2Interact, + 'svg2-painting': svg2Painting, + 'svg2-paths': svg2Paths, + 'svg2-pServers': svg2PServers, + 'svg2-text': svg2Text, + webvtt: webVtt, +}; diff --git a/tests/compat.js b/tests/compat.js index f47e579f..8fe8be7d 100644 --- a/tests/compat.js +++ b/tests/compat.js @@ -1,18 +1,18 @@ export default { - "title": "Compatibility", - "links": { - "dev": "compat", - "devtype": "whatwg" + title: 'Compatibility', + links: { + dev: 'compat', + devtype: 'whatwg', }, - "status": { - "stability": "stable" + status: { + stability: 'stable', }, - "properties": { - "touch-action": { - "links": { - "dev": "#touch-action" + properties: { + 'touch-action': { + links: { + dev: '#touch-action', }, - "tests": ["pinch-zoom", "pan-x pinch-zoom", "pan-y pinch-zoom", "pan-x pan-y pinch-zoom"] - } - } + tests: ['pinch-zoom', 'pan-x pinch-zoom', 'pan-y pinch-zoom', 'pan-x pan-y pinch-zoom'], + }, + }, }; diff --git a/tests/css-align-3.js b/tests/css-align-3.js index 79f53ead..4fe511f2 100644 --- a/tests/css-align-3.js +++ b/tests/css-align-3.js @@ -1,89 +1,256 @@ export default { - "title": "CSS Box Alignment Module Level 3", - "links": { - "tr": "css-align-3", - "dev": "css-align-3" + title: 'CSS Box Alignment Module Level 3', + links: { + tr: 'css-align-3', + dev: 'css-align-3', }, - "status": { - "stability": "stable" + status: { + stability: 'stable', }, - "properties": { - "align-self": { - "links": { - "tr": "#align-self-property", - "dev": "#align-self-property" + properties: { + 'align-self': { + links: { + tr: '#align-self-property', + dev: '#align-self-property', }, - "tests": ["auto", "normal", "stretch", "baseline", "first baseline", "last baseline", "center", "start", "end", "self-start", "self-end", "unsafe start ", "safe start"] + tests: [ + 'auto', + 'normal', + 'stretch', + 'baseline', + 'first baseline', + 'last baseline', + 'center', + 'start', + 'end', + 'self-start', + 'self-end', + 'unsafe start ', + 'safe start', + ], }, - "align-items": { - "links": { - "tr": "#align-items-property", - "dev": "#align-items-property" + 'align-items': { + links: { + tr: '#align-items-property', + dev: '#align-items-property', }, - "tests": ["normal", "stretch", "baseline", "first baseline", "last baseline", "center", "start", "end", "self-start", "self-end", "unsafe start ", "safe start"] + tests: [ + 'normal', + 'stretch', + 'baseline', + 'first baseline', + 'last baseline', + 'center', + 'start', + 'end', + 'self-start', + 'self-end', + 'unsafe start ', + 'safe start', + ], }, - "align-content": { - "links": { - "tr": "#align-justify-content", - "dev": "#align-justify-content" + 'align-content': { + links: { + tr: '#align-justify-content', + dev: '#align-justify-content', }, - "tests": ["normal", "baseline", "first baseline", "last baseline", "space-between", "space-around", "space-evenly", "stretch", "center", "start", "end", "flex-start", "flex-end", "unsafe start ", "safe start"] + tests: [ + 'normal', + 'baseline', + 'first baseline', + 'last baseline', + 'space-between', + 'space-around', + 'space-evenly', + 'stretch', + 'center', + 'start', + 'end', + 'flex-start', + 'flex-end', + 'unsafe start ', + 'safe start', + ], }, - "justify-self": { - "links": { - "tr": "#justify-self-property", - "dev": "#justify-self-property" + 'justify-self': { + links: { + tr: '#justify-self-property', + dev: '#justify-self-property', }, - "tests": ["auto", "normal", "stretch", "baseline", "first baseline", "last baseline", "center", "start", "end", "self-start", "self-end", "unsafe start ", "safe start", "left", "right", "safe right"] + tests: [ + 'auto', + 'normal', + 'stretch', + 'baseline', + 'first baseline', + 'last baseline', + 'center', + 'start', + 'end', + 'self-start', + 'self-end', + 'unsafe start ', + 'safe start', + 'left', + 'right', + 'safe right', + ], }, - "justify-items": { - "links": { - "tr": "#justify-items-property", - "dev": "#justify-items-property" + 'justify-items': { + links: { + tr: '#justify-items-property', + dev: '#justify-items-property', }, - "tests": ["normal", "stretch", "baseline", "first baseline", "last baseline", "center", "start", "end", "self-start", "self-end", "unsafe start ", "safe start", "left", "right", "safe right", "legacy", "legacy left", "legacy right", "legacy center"] + tests: [ + 'normal', + 'stretch', + 'baseline', + 'first baseline', + 'last baseline', + 'center', + 'start', + 'end', + 'self-start', + 'self-end', + 'unsafe start ', + 'safe start', + 'left', + 'right', + 'safe right', + 'legacy', + 'legacy left', + 'legacy right', + 'legacy center', + ], }, - "justify-content": { - "links": { - "tr": "#align-justify-content", - "dev": "#align-justify-content" + 'justify-content': { + links: { + tr: '#align-justify-content', + dev: '#align-justify-content', }, - "tests": ["normal", "space-between", "space-around", "space-evenly", "stretch", "center", "start", "end", "flex-start", "flex-end", "unsafe start ", "safe start", "left", "right", "safe right"] + tests: [ + 'normal', + 'space-between', + 'space-around', + 'space-evenly', + 'stretch', + 'center', + 'start', + 'end', + 'flex-start', + 'flex-end', + 'unsafe start ', + 'safe start', + 'left', + 'right', + 'safe right', + ], }, - "place-content": { - "links": { - "tr": "#place-content", - "dev": "#place-content" + 'place-content': { + links: { + tr: '#place-content', + dev: '#place-content', }, - "tests": ["normal", "baseline", "first baseline", "last baseline", "space-between", "space-around", "space-evenly", "stretch", "center", "start", "end", "flex-start", "flex-end", "unsafe start ", "safe start", "normal normal", "baseline normal", "first baseline normal", "space-between normal", "center normal", "unsafe start normal", "normal stretch", "baseline stretch", "first baseline stretch", "space-between stretch", "center stretch", "unsafe start stretch", "normal safe right", "baseline safe right", "first baseline safe right", "space-between safe right", "center safe right", "unsafe start safe right"] + tests: [ + 'normal', + 'baseline', + 'first baseline', + 'last baseline', + 'space-between', + 'space-around', + 'space-evenly', + 'stretch', + 'center', + 'start', + 'end', + 'flex-start', + 'flex-end', + 'unsafe start ', + 'safe start', + 'normal normal', + 'baseline normal', + 'first baseline normal', + 'space-between normal', + 'center normal', + 'unsafe start normal', + 'normal stretch', + 'baseline stretch', + 'first baseline stretch', + 'space-between stretch', + 'center stretch', + 'unsafe start stretch', + 'normal safe right', + 'baseline safe right', + 'first baseline safe right', + 'space-between safe right', + 'center safe right', + 'unsafe start safe right', + ], }, - "place-items": { - "links": { - "tr": "#place-items-property", - "dev": "#place-items-property" + 'place-items': { + links: { + tr: '#place-items-property', + dev: '#place-items-property', }, - "tests": ["normal", "stretch", "baseline", "first baseline", "last baseline", "center", "start", "end", "self-start", "self-end", "unsafe start ", "safe start", "normal normal", "stretch normal", "baseline normal", "first baseline normal", "self-start normal", "unsafe start normal", "normal stretch", "stretch stretch", "baseline stretch", "first baseline stretch", "self-start stretch", "unsafe start stretch", "normal last baseline", "stretch last baseline", "baseline last baseline", "first baseline last baseline", "self-start last baseline", "unsafe start last baseline", "normal legacy left", "stretch legacy left", "baseline legacy left", "first baseline legacy left", "self-start legacy left", "unsafe start legacy left"] + tests: [ + 'normal', + 'stretch', + 'baseline', + 'first baseline', + 'last baseline', + 'center', + 'start', + 'end', + 'self-start', + 'self-end', + 'unsafe start ', + 'safe start', + 'normal normal', + 'stretch normal', + 'baseline normal', + 'first baseline normal', + 'self-start normal', + 'unsafe start normal', + 'normal stretch', + 'stretch stretch', + 'baseline stretch', + 'first baseline stretch', + 'self-start stretch', + 'unsafe start stretch', + 'normal last baseline', + 'stretch last baseline', + 'baseline last baseline', + 'first baseline last baseline', + 'self-start last baseline', + 'unsafe start last baseline', + 'normal legacy left', + 'stretch legacy left', + 'baseline legacy left', + 'first baseline legacy left', + 'self-start legacy left', + 'unsafe start legacy left', + ], }, - "gap": { - "links": { - "tr": "#gap-shorthand", - "dev": "#gap-shorthand" + gap: { + links: { + tr: '#gap-shorthand', + dev: '#gap-shorthand', }, - "tests": ["0 0", "0 1em", "1em", "1em 1em"] + tests: ['0 0', '0 1em', '1em', '1em 1em'], }, - "column-gap": { - "links": { - "tr": "#column-row-gap", - "dev": "#column-row-gap" + 'column-gap': { + links: { + tr: '#column-row-gap', + dev: '#column-row-gap', }, - "tests": ["0", "1em", "normal"] + tests: ['0', '1em', 'normal'], }, - "row-gap": { - "links": { - "tr": "#column-row-gap", - "dev": "#column-row-gap" + 'row-gap': { + links: { + tr: '#column-row-gap', + dev: '#column-row-gap', }, - "tests": ["0", "1em"] - } - } + tests: ['0', '1em'], + }, + }, }; diff --git a/tests/css-animations-1.js b/tests/css-animations-1.js index 9e5f1acc..33696a80 100644 --- a/tests/css-animations-1.js +++ b/tests/css-animations-1.js @@ -1,92 +1,99 @@ export default { - "title": "CSS Animations Level 1", - "links": { - "tr": "css-animations-1", - "dev": "css-animations-1" + title: 'CSS Animations Level 1', + links: { + tr: 'css-animations-1', + dev: 'css-animations-1', }, - "status": { - "stability": "stable" + status: { + stability: 'stable', }, - "properties": { - "animation-name": { - "links": { - "tr": "#animation-name", - "dev": "#animation-name" + properties: { + 'animation-name': { + links: { + tr: '#animation-name', + dev: '#animation-name', }, - "tests": ["foo", "foo, bar"] + tests: ['foo', 'foo, bar'], }, - "animation-duration": { - "links": { - "tr": "#animation-duration", - "dev": "#animation-duration" + 'animation-duration': { + links: { + tr: '#animation-duration', + dev: '#animation-duration', }, - "tests": ["0s", "1s", "100ms"] + tests: ['0s', '1s', '100ms'], }, - "animation-timing-function": { - "links": { - "tr": "#animation-timing-function", - "dev": "#animation-timing-function" + 'animation-timing-function': { + links: { + tr: '#animation-timing-function', + dev: '#animation-timing-function', }, - "tests": [ - "ease", "linear", "ease-in", "ease-out", "ease-in-out", - "cubic-bezier(.5, .5, .5, .5)", - "cubic-bezier(.5, 1.5, .5, -2.5)", - "step-start", "step-end", "steps(3, start)", "steps(5, end)" - ] + tests: [ + 'ease', + 'linear', + 'ease-in', + 'ease-out', + 'ease-in-out', + 'cubic-bezier(.5, .5, .5, .5)', + 'cubic-bezier(.5, 1.5, .5, -2.5)', + 'step-start', + 'step-end', + 'steps(3, start)', + 'steps(5, end)', + ], }, - "animation-iteration-count": { - "links": { - "tr": "#animation-iteration-count", - "dev": "#animation-iteration-count" + 'animation-iteration-count': { + links: { + tr: '#animation-iteration-count', + dev: '#animation-iteration-count', }, - "tests": ["infinite", "8", "4.35"] + tests: ['infinite', '8', '4.35'], }, - "animation-direction": { - "links": { - "tr": "#animation-direction", - "dev": "#animation-direction" + 'animation-direction': { + links: { + tr: '#animation-direction', + dev: '#animation-direction', }, - "tests": ["normal", "alternate", "reverse", "alternate-reverse"] + tests: ['normal', 'alternate', 'reverse', 'alternate-reverse'], }, - "animation-play-state": { - "links": { - "tr": "#animation-play-state", - "dev": "#animation-play-state" + 'animation-play-state': { + links: { + tr: '#animation-play-state', + dev: '#animation-play-state', }, - "tests": ["running", "paused"] + tests: ['running', 'paused'], }, - "animation-delay": { - "links": { - "tr": "#animation-delay", - "dev": "#animation-delay" + 'animation-delay': { + links: { + tr: '#animation-delay', + dev: '#animation-delay', }, - "tests": ["1s", "-1s"] + tests: ['1s', '-1s'], }, - "animation-fill-mode": { - "links": { - "tr": "#animation-fill-mode", - "dev": "#animation-fill-mode" + 'animation-fill-mode': { + links: { + tr: '#animation-fill-mode', + dev: '#animation-fill-mode', }, - "tests": ["none", "forwards", "backwards", "both"] + tests: ['none', 'forwards', 'backwards', 'both'], }, - "animation": { - "links": { - "tr": "#animation", - "dev": "#animation" + animation: { + links: { + tr: '#animation', + dev: '#animation', }, - "tests": "foo 1s 2s infinite linear alternate both" - } + tests: 'foo 1s 2s infinite linear alternate both', + }, }, - "@rules": { - "@keyframes": { - "links": { - "tr": "#keyframes", - "dev": "#keyframes" + '@rules': { + '@keyframes': { + links: { + tr: '#keyframes', + dev: '#keyframes', }, - "tests": [ - "@keyframes foo {\n from: {\n color: blue;\n }\n to: {\n color: red;\n }\n}", - "@keyframes foo {\n from: {\n color: blue;\n }\n 50%: {\n color: green;\n }\n to: {\n color: red;\n }\n}" - ] - } - } + tests: [ + '@keyframes foo {\n from: {\n color: blue;\n }\n to: {\n color: red;\n }\n}', + '@keyframes foo {\n from: {\n color: blue;\n }\n 50%: {\n color: green;\n }\n to: {\n color: red;\n }\n}', + ], + }, + }, }; diff --git a/tests/css-animations-2.js b/tests/css-animations-2.js index fae49538..8ab5c378 100644 --- a/tests/css-animations-2.js +++ b/tests/css-animations-2.js @@ -1,33 +1,39 @@ export default { - "title": "CSS Animations Level 2", - "links": { - "tr": "css-animations-2", - "dev": "css-animations-2" + title: 'CSS Animations Level 2', + links: { + tr: 'css-animations-2', + dev: 'css-animations-2', }, - "status": { - "stability": "experimental" + status: { + stability: 'experimental', }, - "properties": { - "animation-composition": { - "links": { - "tr": "#animation-composition", - "dev": "#animation-composition" + properties: { + 'animation-composition': { + links: { + tr: '#animation-composition', + dev: '#animation-composition', }, - "tests": ["replace", "add", "accumulate", "replace, add, accumulate"] + tests: ['replace', 'add', 'accumulate', 'replace, add, accumulate'], }, - "animation-timeline": { - "links": { - "tr": "#animation-timeline", - "dev": "#animation-timeline" + 'animation-timeline': { + links: { + tr: '#animation-timeline', + dev: '#animation-timeline', }, - "tests": ["auto", "none", "custom-timeline", "\"custom-timeline\"", "auto, none, custom-timeline, \"custom-timeline\""] + tests: [ + 'auto', + 'none', + 'custom-timeline', + '"custom-timeline"', + 'auto, none, custom-timeline, "custom-timeline"', + ], }, - "animation": { - "links": { - "tr": "#animation-timeline", - "dev": "#animation-timeline" + animation: { + links: { + tr: '#animation-timeline', + dev: '#animation-timeline', }, - "tests": ["1s both infinite auto"] - } - } + tests: ['1s both infinite auto'], + }, + }, }; diff --git a/tests/css-backgrounds-3.js b/tests/css-backgrounds-3.js index 7b2bad35..f64adab6 100644 --- a/tests/css-backgrounds-3.js +++ b/tests/css-backgrounds-3.js @@ -1,179 +1,269 @@ export default { - "title": "CSS Backgrounds and Borders Module Level 3", - "links": { - "tr": "css-backgrounds-3", - "dev": "css-backgrounds-3" + title: 'CSS Backgrounds and Borders Module Level 3', + links: { + tr: 'css-backgrounds-3', + dev: 'css-backgrounds-3', }, - "status": { - "stability": "stable", - "first-snapshot": 2015 + status: { + stability: 'stable', + 'first-snapshot': 2015, }, - "properties": { - "background-repeat": { - "links": { - "tr": "#the-background-repeat", - "dev": "#background-repeat" + properties: { + 'background-repeat': { + links: { + tr: '#the-background-repeat', + dev: '#background-repeat', }, - "tests": [ - "space", "round", "repeat repeat", "space repeat", "round repeat", - "no-repeat repeat", "repeat space", "space space", "round space", - "no-repeat space", "repeat round", "space round", "round round", - "no-repeat round", "repeat no-repeat", "space no-repeat", "round no-repeat", - "no-repeat no-repeat" - ] - }, - "background-attachment": { - "links": { - "tr": "#the-background-attachment", - "dev": "#background-attachment" - }, - "tests": "local" - }, - "background-position": { - "links": { - "tr": "#the-background-position", - "dev": "#background-position" - }, - "tests": ["bottom 10px right 20px", "bottom 10px right", "top right 10px"] - }, - "background-clip": { - "links": { - "tr": "#the-background-clip", - "dev": "#background-clip" - }, - "tests": ["border-box", "padding-box", "content-box"] - }, - "background-origin": { - "links": { - "tr": "#the-background-origin", - "dev": "#background-origin" - }, - "tests": ["border-box", "padding-box", "content-box"] - }, - "background-size": { - "links": { - "tr": "#the-background-size", - "dev": "#background-size" - }, - "tests": ["auto", "cover", "contain", "10px", "50%", "10px auto", "auto 10%", "50em 50%"] - }, - "background": { - "links": { - "tr": "#the-background", - "dev": "#background" - }, - "tests": [ - "url(foo.png), url(bar.svg)", - "top left / 50% 60%", - "border-box", - "border-box padding-box", - "url(foo.png) bottom right / cover padding-box content-box" - ] - }, - "border-top-left-radius": { - "links": { - "tr": "#the-border-radius", - "dev": "#border-radius" - }, - "tests": ["0", "50%", "250px 100px"] - }, - "border-top-right-radius": { - "links": { - "tr": "#the-border-radius", - "dev": "#border-radius" - }, - "tests": ["0", "50%", "250px 100px"] - }, - "border-bottom-right-radius": { - "links": { - "tr": "#the-border-radius", - "dev": "#border-radius" - }, - "tests": ["0", "50%", "250px 100px"] - }, - "border-bottom-left-radius": { - "links": { - "tr": "#the-border-radius", - "dev": "#border-radius" - }, - "tests": ["0", "50%", "250px 100px"] - }, - "border-radius": { - "links": { - "tr": "#the-border-radius", - "dev": "#border-radius" - }, - "tests": ["10px", "50%", "10px / 20px", "2px 4px 8px 16px", "2px 4px 8px 16px / 2px 4px 8px 16px"] - }, - "border-image-source": { - "links": { - "tr": "#the-border-image-source", - "dev": "#border-image-source" - }, - "tests": ["none", "url(foo.png)"] - }, - "border-image-slice": { - "links": { - "tr": "#the-border-image-slice", - "dev": "#border-image-slice" - }, - "tests": [ - "10", "30%", "10 10", "30% 10", "10 30%", "30% 30%", "10 10 10", "30% 10 10", - "10 30% 10", "30% 30% 10", "10 10 30%", "30% 10 30%", "10 30% 30%", - "30% 30% 30%", "10 10 10 10", "30% 10 10 10", "10 30% 10 10", "30% 30% 10 10", - "10 10 30% 10", "30% 10 30% 10", "10 30% 30% 10", "30% 30% 30% 10", - "10 10 10 30%", "30% 10 10 30%", "10 30% 10 30%", "30% 30% 10 30%", - "10 10 30% 30%", "30% 10 30% 30%", "10 30% 30% 30%", "30% 30% 30% 30%", - "fill 30%", "fill 10", "fill 2 4 8% 16%", "30% fill", "10 fill", "2 4 8% 16% fill" - ] - }, - "border-image-width": { - "links": { - "tr": "#the-border-image-width", - "dev": "#border-image-width" - }, - "tests": ["10px", "5%", "28", "auto", "10px 10px", "5% 10px", "28 10px", "auto 10px", "10px 5%", "5% 5%", "28 5%", "auto 5%", "10px 28", "5% 28", "28 28", "auto 28", "10px auto", "5% auto", "28 auto", "auto auto", "10px 10% 10", "5% 10px 20 auto"] - }, - "border-image-outset": { - "links": { - "tr": "#the-border-image-outset", - "dev": "#border-image-outset" - }, - "tests": ["10px", "20", "10px 20", "10px 20px", "20 30", "2px 3px 4", "1 2px 3px 4"] - }, - "border-image-repeat": { - "links": { - "tr": "#the-border-image-repeat", - "dev": "#border-image-repeat" - }, - "tests": [ - "stretch", "repeat", "round", "space", "stretch stretch", "repeat stretch", - "round stretch", "space stretch", "stretch repeat", "repeat repeat", - "round repeat", "space repeat", "stretch round", "repeat round", "round round", - "space round", "stretch space", "repeat space", "round space", "space space" - ] - }, - "border-image": { - "links": { - "tr": "#the-border-image", - "dev": "#border-image" - }, - "tests": [ - "url(foo.png) 10", "url(foo.png) 10%", "url(foo.png) 10% fill", - "url(foo.png) 10 round", "url(foo.png) 10 stretch repeat", - "url(foo.png) 10 / 10px", "url(foo.png) 10 / 10% / 10px", - "url(foo.png) fill 10 / 10% / 10px", "url(foo.png) fill 10 / 10% / 10px space" - ] - }, - "box-shadow": { - "links": { - "tr": "#the-box-shadow", - "dev": "#box-shadow" - }, - "tests": [ - "1px 1px", "0 0 black", "1px 2px 3px black", "1px 2px 3px 4px black", - "inset 1px 1px", "1px 2px 3px 4px black inset" - ] - } - } + tests: [ + 'space', + 'round', + 'repeat repeat', + 'space repeat', + 'round repeat', + 'no-repeat repeat', + 'repeat space', + 'space space', + 'round space', + 'no-repeat space', + 'repeat round', + 'space round', + 'round round', + 'no-repeat round', + 'repeat no-repeat', + 'space no-repeat', + 'round no-repeat', + 'no-repeat no-repeat', + ], + }, + 'background-attachment': { + links: { + tr: '#the-background-attachment', + dev: '#background-attachment', + }, + tests: 'local', + }, + 'background-position': { + links: { + tr: '#the-background-position', + dev: '#background-position', + }, + tests: ['bottom 10px right 20px', 'bottom 10px right', 'top right 10px'], + }, + 'background-clip': { + links: { + tr: '#the-background-clip', + dev: '#background-clip', + }, + tests: ['border-box', 'padding-box', 'content-box'], + }, + 'background-origin': { + links: { + tr: '#the-background-origin', + dev: '#background-origin', + }, + tests: ['border-box', 'padding-box', 'content-box'], + }, + 'background-size': { + links: { + tr: '#the-background-size', + dev: '#background-size', + }, + tests: ['auto', 'cover', 'contain', '10px', '50%', '10px auto', 'auto 10%', '50em 50%'], + }, + background: { + links: { + tr: '#the-background', + dev: '#background', + }, + tests: [ + 'url(foo.png), url(bar.svg)', + 'top left / 50% 60%', + 'border-box', + 'border-box padding-box', + 'url(foo.png) bottom right / cover padding-box content-box', + ], + }, + 'border-top-left-radius': { + links: { + tr: '#the-border-radius', + dev: '#border-radius', + }, + tests: ['0', '50%', '250px 100px'], + }, + 'border-top-right-radius': { + links: { + tr: '#the-border-radius', + dev: '#border-radius', + }, + tests: ['0', '50%', '250px 100px'], + }, + 'border-bottom-right-radius': { + links: { + tr: '#the-border-radius', + dev: '#border-radius', + }, + tests: ['0', '50%', '250px 100px'], + }, + 'border-bottom-left-radius': { + links: { + tr: '#the-border-radius', + dev: '#border-radius', + }, + tests: ['0', '50%', '250px 100px'], + }, + 'border-radius': { + links: { + tr: '#the-border-radius', + dev: '#border-radius', + }, + tests: ['10px', '50%', '10px / 20px', '2px 4px 8px 16px', '2px 4px 8px 16px / 2px 4px 8px 16px'], + }, + 'border-image-source': { + links: { + tr: '#the-border-image-source', + dev: '#border-image-source', + }, + tests: ['none', 'url(foo.png)'], + }, + 'border-image-slice': { + links: { + tr: '#the-border-image-slice', + dev: '#border-image-slice', + }, + tests: [ + '10', + '30%', + '10 10', + '30% 10', + '10 30%', + '30% 30%', + '10 10 10', + '30% 10 10', + '10 30% 10', + '30% 30% 10', + '10 10 30%', + '30% 10 30%', + '10 30% 30%', + '30% 30% 30%', + '10 10 10 10', + '30% 10 10 10', + '10 30% 10 10', + '30% 30% 10 10', + '10 10 30% 10', + '30% 10 30% 10', + '10 30% 30% 10', + '30% 30% 30% 10', + '10 10 10 30%', + '30% 10 10 30%', + '10 30% 10 30%', + '30% 30% 10 30%', + '10 10 30% 30%', + '30% 10 30% 30%', + '10 30% 30% 30%', + '30% 30% 30% 30%', + 'fill 30%', + 'fill 10', + 'fill 2 4 8% 16%', + '30% fill', + '10 fill', + '2 4 8% 16% fill', + ], + }, + 'border-image-width': { + links: { + tr: '#the-border-image-width', + dev: '#border-image-width', + }, + tests: [ + '10px', + '5%', + '28', + 'auto', + '10px 10px', + '5% 10px', + '28 10px', + 'auto 10px', + '10px 5%', + '5% 5%', + '28 5%', + 'auto 5%', + '10px 28', + '5% 28', + '28 28', + 'auto 28', + '10px auto', + '5% auto', + '28 auto', + 'auto auto', + '10px 10% 10', + '5% 10px 20 auto', + ], + }, + 'border-image-outset': { + links: { + tr: '#the-border-image-outset', + dev: '#border-image-outset', + }, + tests: ['10px', '20', '10px 20', '10px 20px', '20 30', '2px 3px 4', '1 2px 3px 4'], + }, + 'border-image-repeat': { + links: { + tr: '#the-border-image-repeat', + dev: '#border-image-repeat', + }, + tests: [ + 'stretch', + 'repeat', + 'round', + 'space', + 'stretch stretch', + 'repeat stretch', + 'round stretch', + 'space stretch', + 'stretch repeat', + 'repeat repeat', + 'round repeat', + 'space repeat', + 'stretch round', + 'repeat round', + 'round round', + 'space round', + 'stretch space', + 'repeat space', + 'round space', + 'space space', + ], + }, + 'border-image': { + links: { + tr: '#the-border-image', + dev: '#border-image', + }, + tests: [ + 'url(foo.png) 10', + 'url(foo.png) 10%', + 'url(foo.png) 10% fill', + 'url(foo.png) 10 round', + 'url(foo.png) 10 stretch repeat', + 'url(foo.png) 10 / 10px', + 'url(foo.png) 10 / 10% / 10px', + 'url(foo.png) fill 10 / 10% / 10px', + 'url(foo.png) fill 10 / 10% / 10px space', + ], + }, + 'box-shadow': { + links: { + tr: '#the-box-shadow', + dev: '#box-shadow', + }, + tests: [ + '1px 1px', + '0 0 black', + '1px 2px 3px black', + '1px 2px 3px 4px black', + 'inset 1px 1px', + '1px 2px 3px 4px black inset', + ], + }, + }, }; diff --git a/tests/css-backgrounds-4.js b/tests/css-backgrounds-4.js index 9c17bc2d..6add1ece 100644 --- a/tests/css-backgrounds-4.js +++ b/tests/css-backgrounds-4.js @@ -1,23 +1,75 @@ export default { - "title": "CSS Backgrounds and Borders Module Level 4", - "links": { - "dev": "css-backgrounds-4", + title: 'CSS Backgrounds and Borders Module Level 4', + links: { + dev: 'css-backgrounds-4', }, - "status": { - "stability": "experimental" + status: { + stability: 'experimental', }, - "properties": { - "background-position-x": { - "links": { - "dev": "#background-position-longhands" + properties: { + 'background-position-x': { + links: { + dev: '#background-position-longhands', }, - "tests": ["right", "center", "50%", "left, left", "left, right", "right, left", "left, 0%", "10%, 20%, 40%", "0px", "30px", "0%, 10%, 20%, 30%", "left, left, left, left, left", "calc(20px)", "calc(20px + 1em)", "calc(20px / 2)", "calc(20px + 50%)", "calc(50% - 10px)", "calc(-20px)", "calc(-50%)", "calc(-20%)", "right 20px", "left 20px", "right -50px", "left -50px", "right 20px"] + tests: [ + 'right', + 'center', + '50%', + 'left, left', + 'left, right', + 'right, left', + 'left, 0%', + '10%, 20%, 40%', + '0px', + '30px', + '0%, 10%, 20%, 30%', + 'left, left, left, left, left', + 'calc(20px)', + 'calc(20px + 1em)', + 'calc(20px / 2)', + 'calc(20px + 50%)', + 'calc(50% - 10px)', + 'calc(-20px)', + 'calc(-50%)', + 'calc(-20%)', + 'right 20px', + 'left 20px', + 'right -50px', + 'left -50px', + 'right 20px', + ], }, - "background-position-y": { - "links": { - "dev": "#background-position-longhands" + 'background-position-y': { + links: { + dev: '#background-position-longhands', }, - "tests": ["bottom", "center", "50%", "top, top", "top, bottom", "bottom, top", "top, 0%", "10%, 20%, 40%", "0px", "30px", "0%, 10%, 20%, 30%", "top, top, top, top, top", "calc(20px)", "calc(20px + 1em)", "calc(20px / 2)", "calc(20px + 50%)", "calc(50% - 10px)", "calc(-20px)", "calc(-50%)", "calc(-20%)", "bottom 20px", "top 20px", "bottom -50px", "top -50px", "bottom 20px"] - } - } + tests: [ + 'bottom', + 'center', + '50%', + 'top, top', + 'top, bottom', + 'bottom, top', + 'top, 0%', + '10%, 20%, 40%', + '0px', + '30px', + '0%, 10%, 20%, 30%', + 'top, top, top, top, top', + 'calc(20px)', + 'calc(20px + 1em)', + 'calc(20px / 2)', + 'calc(20px + 50%)', + 'calc(50% - 10px)', + 'calc(-20px)', + 'calc(-50%)', + 'calc(-20%)', + 'bottom 20px', + 'top 20px', + 'bottom -50px', + 'top -50px', + 'bottom 20px', + ], + }, + }, }; diff --git a/tests/css-box-3.js b/tests/css-box-3.js index 91680211..1d5d1170 100644 --- a/tests/css-box-3.js +++ b/tests/css-box-3.js @@ -1,276 +1,264 @@ export default { - "title": "CSS 2 Box Model", - "links": { - "tr": "CSS22/box.html", - "dev": "css2/" + title: 'CSS 2 Box Model', + links: { + tr: 'CSS22/box.html', + dev: 'css2/', }, - "status": { - "stability": "stable", - "first-snapshot": 1998, - "last-snapshot": 1998 + status: { + stability: 'stable', + 'first-snapshot': 1998, + 'last-snapshot': 1998, }, - "properties": { - "border-color": { - "links": { - "tr": "#border-color-properties", - "dev": "#border-color-properties" + properties: { + 'border-color': { + links: { + tr: '#border-color-properties', + dev: '#border-color-properties', }, - "tests": [ - "black", "#ff0000 rgb(0, 255, 0)", - "rgb(0%, 0%, 100%) #0f0 transparent", - "red green blue yellow" - ] + tests: ['black', '#ff0000 rgb(0, 255, 0)', 'rgb(0%, 0%, 100%) #0f0 transparent', 'red green blue yellow'], }, - "border-style": { - "links": { - "tr": "#border-style-properties", - "dev": "#border-style-properties" + 'border-style': { + links: { + tr: '#border-style-properties', + dev: '#border-style-properties', }, - "tests": [ - "none", "hidden", "none dashed", "none dashed dotted", - "none dashed dotted solid" - ] + tests: ['none', 'hidden', 'none dashed', 'none dashed dotted', 'none dashed dotted solid'], }, - "border-top": { - "links": { - "tr": "#border-shorthand-properties", - "dev": "#border-shorthand-properties" + 'border-top': { + links: { + tr: '#border-shorthand-properties', + dev: '#border-shorthand-properties', }, - "tests": [ - "black", "dotted", "5px", "#ff0000 dashed", "solid 0.2em", - "rgb(0, 0, 255) 0.1ex", "#0f0 double 0.8mm" - ] + tests: [ + 'black', + 'dotted', + '5px', + '#ff0000 dashed', + 'solid 0.2em', + 'rgb(0, 0, 255) 0.1ex', + '#0f0 double 0.8mm', + ], }, - "border-right": { - "links": { - "tr": "#border-shorthand-properties", - "dev": "#border-shorthand-properties" + 'border-right': { + links: { + tr: '#border-shorthand-properties', + dev: '#border-shorthand-properties', }, - "tests": [ - "black", "dotted", "5px", "#ff0000 dashed", "solid 0.2em", - "rgb(0, 0, 255) 0.1ex", "#0f0 double 0.8mm" - ] + tests: [ + 'black', + 'dotted', + '5px', + '#ff0000 dashed', + 'solid 0.2em', + 'rgb(0, 0, 255) 0.1ex', + '#0f0 double 0.8mm', + ], }, - "border-bottom": { - "links": { - "tr": "#border-shorthand-properties", - "dev": "#border-shorthand-properties" + 'border-bottom': { + links: { + tr: '#border-shorthand-properties', + dev: '#border-shorthand-properties', }, - "tests": [ - "black", "dotted", "5px", "#ff0000 dashed", "solid 0.2em", - "rgb(0, 0, 255) 0.1ex", "#0f0 double 0.8mm" - ] + tests: [ + 'black', + 'dotted', + '5px', + '#ff0000 dashed', + 'solid 0.2em', + 'rgb(0, 0, 255) 0.1ex', + '#0f0 double 0.8mm', + ], }, - "border-left": { - "links": { - "tr": "#border-shorthand-properties", - "dev": "#border-shorthand-properties" + 'border-left': { + links: { + tr: '#border-shorthand-properties', + dev: '#border-shorthand-properties', }, - "tests": [ - "black", "dotted", "5px", "#ff0000 dashed", "solid 0.2em", - "rgb(0, 0, 255) 0.1ex", "#0f0 double 0.8mm" - ] + tests: [ + 'black', + 'dotted', + '5px', + '#ff0000 dashed', + 'solid 0.2em', + 'rgb(0, 0, 255) 0.1ex', + '#0f0 double 0.8mm', + ], }, - "border-top-color": { - "links": { - "tr": "#border-color-properties", - "dev": "#border-color-properties" + 'border-top-color': { + links: { + tr: '#border-color-properties', + dev: '#border-color-properties', }, - "tests": [ - "black", "#00f", "#000000", "rgb(255, 255, 255)", - "rgb(100%, 50%, 50%)", "transparent" - ] + tests: ['black', '#00f', '#000000', 'rgb(255, 255, 255)', 'rgb(100%, 50%, 50%)', 'transparent'], }, - "border-right-color": { - "links": { - "tr": "#border-color-properties", - "dev": "#border-color-properties" + 'border-right-color': { + links: { + tr: '#border-color-properties', + dev: '#border-color-properties', }, - "tests": [ - "black", "#00f", "#000000", "rgb(255, 255, 255)", - "rgb(100%, 50%, 50%)", "transparent" - ] + tests: ['black', '#00f', '#000000', 'rgb(255, 255, 255)', 'rgb(100%, 50%, 50%)', 'transparent'], }, - "border-bottom-color": { - "links": { - "tr": "#border-color-properties", - "dev": "#border-color-properties" + 'border-bottom-color': { + links: { + tr: '#border-color-properties', + dev: '#border-color-properties', }, - "tests": [ - "black", "#00f", "#000000", "rgb(255, 255, 255)", - "rgb(100%, 50%, 50%)", "transparent" - ] + tests: ['black', '#00f', '#000000', 'rgb(255, 255, 255)', 'rgb(100%, 50%, 50%)', 'transparent'], }, - "border-left-color": { - "links": { - "tr": "#border-color-properties", - "dev": "#border-color-properties" + 'border-left-color': { + links: { + tr: '#border-color-properties', + dev: '#border-color-properties', }, - "tests": [ - "black", "#00f", "#000000", "rgb(255, 255, 255)", - "rgb(100%, 50%, 50%)", "transparent" - ] + tests: ['black', '#00f', '#000000', 'rgb(255, 255, 255)', 'rgb(100%, 50%, 50%)', 'transparent'], }, - "border-top-style": { - "links": { - "tr": "#border-style-properties", - "dev": "#border-style-properties" + 'border-top-style': { + links: { + tr: '#border-style-properties', + dev: '#border-style-properties', }, - "tests": [ - "none", "hidden", "dotted", "dashed", "solid", "double", "groove", - "ridge", "inset", "outset" - ] + tests: ['none', 'hidden', 'dotted', 'dashed', 'solid', 'double', 'groove', 'ridge', 'inset', 'outset'], }, - "border-right-style": { - "links": { - "tr": "#border-style-properties", - "dev": "#border-style-properties" + 'border-right-style': { + links: { + tr: '#border-style-properties', + dev: '#border-style-properties', }, - "tests": [ - "none", "hidden", "dotted", "dashed", "solid", "double", "groove", - "ridge", "inset", "outset" - ] + tests: ['none', 'hidden', 'dotted', 'dashed', 'solid', 'double', 'groove', 'ridge', 'inset', 'outset'], }, - "border-bottom-style": { - "links": { - "tr": "#border-style-properties", - "dev": "#border-style-properties" + 'border-bottom-style': { + links: { + tr: '#border-style-properties', + dev: '#border-style-properties', }, - "tests": [ - "none", "hidden", "dotted", "dashed", "solid", "double", "groove", - "ridge", "inset", "outset" - ] + tests: ['none', 'hidden', 'dotted', 'dashed', 'solid', 'double', 'groove', 'ridge', 'inset', 'outset'], }, - "border-left-style": { - "links": { - "tr": "#border-style-properties", - "dev": "#border-style-properties" + 'border-left-style': { + links: { + tr: '#border-style-properties', + dev: '#border-style-properties', }, - "tests": [ - "none", "hidden", "dotted", "dashed", "solid", "double", "groove", - "ridge", "inset", "outset" - ] + tests: ['none', 'hidden', 'dotted', 'dashed', 'solid', 'double', 'groove', 'ridge', 'inset', 'outset'], }, - "border-top-width": { - "links": { - "tr": "#border-width-properties", - "dev": "#border-width-properties" + 'border-top-width': { + links: { + tr: '#border-width-properties', + dev: '#border-width-properties', }, - "tests": ["thin", "medium", "thick", "5px"] + tests: ['thin', 'medium', 'thick', '5px'], }, - "border-right-width": { - "links": { - "tr": "#border-width-properties", - "dev": "#border-width-properties" + 'border-right-width': { + links: { + tr: '#border-width-properties', + dev: '#border-width-properties', }, - "tests": ["thin", "medium", "thick", "5px"] + tests: ['thin', 'medium', 'thick', '5px'], }, - "border-bottom-width": { - "links": { - "tr": "#border-width-properties", - "dev": "#border-width-properties" + 'border-bottom-width': { + links: { + tr: '#border-width-properties', + dev: '#border-width-properties', }, - "tests": ["thin", "medium", "thick", "5px"] + tests: ['thin', 'medium', 'thick', '5px'], }, - "border-left-width": { - "links": { - "tr": "#border-width-properties", - "dev": "#border-width-properties" + 'border-left-width': { + links: { + tr: '#border-width-properties', + dev: '#border-width-properties', }, - "tests": ["thin", "medium", "thick", "5px"] + tests: ['thin', 'medium', 'thick', '5px'], }, - "border-width": { - "links": { - "tr": "#border-width-properties", - "dev": "#border-width-properties" + 'border-width': { + links: { + tr: '#border-width-properties', + dev: '#border-width-properties', }, - "tests": [ - "thin", "thin medium", "thin medium thick", "thin medium thick 5px" - ] + tests: ['thin', 'thin medium', 'thin medium thick', 'thin medium thick 5px'], }, - "border": { - "links": { - "tr": "#border-shorthand-properties", - "dev": "#border-shorthand-properties" + border: { + links: { + tr: '#border-shorthand-properties', + dev: '#border-shorthand-properties', }, - "tests": [ - "black", "dotted", "5px", "#ff0000 dashed", "solid 0.2em", - "rgb(0, 0, 255) 0.1ex", "rgb(100%, 50%, 50%) double 0.8mm" - ] + tests: [ + 'black', + 'dotted', + '5px', + '#ff0000 dashed', + 'solid 0.2em', + 'rgb(0, 0, 255) 0.1ex', + 'rgb(100%, 50%, 50%) double 0.8mm', + ], }, - "margin-right": { - "links": { - "tr": "#propdef-margin-right", - "dev": "#propdef-margin-right" + 'margin-right': { + links: { + tr: '#propdef-margin-right', + dev: '#propdef-margin-right', }, - "tests": ["auto", "10px", "5%"] + tests: ['auto', '10px', '5%'], }, - "margin-left": { - "links": { - "tr": "#propdef-margin-left", - "dev": "#propdef-margin-left" + 'margin-left': { + links: { + tr: '#propdef-margin-left', + dev: '#propdef-margin-left', }, - "tests": ["auto", "10px", "5%"] + tests: ['auto', '10px', '5%'], }, - "margin-top": { - "links": { - "tr": "#propdef-margin-top", - "dev": "#propdef-margin-top" + 'margin-top': { + links: { + tr: '#propdef-margin-top', + dev: '#propdef-margin-top', }, - "tests": ["auto", "10px", "5%"] + tests: ['auto', '10px', '5%'], }, - "margin-bottom": { - "links": { - "tr": "#propdef-margin-bottom", - "dev": "#propdef-margin-bottom" + 'margin-bottom': { + links: { + tr: '#propdef-margin-bottom', + dev: '#propdef-margin-bottom', }, - "tests": ["auto", "10px", "5%"] + tests: ['auto', '10px', '5%'], }, - "margin": { - "links": { - "tr": "#propdef-margin", - "dev": "#propdef-margin" + margin: { + links: { + tr: '#propdef-margin', + dev: '#propdef-margin', }, - "tests": [ - "10px", "10px 5%", "10px 5px auto", "10px 5px auto 1em" - ] + tests: ['10px', '10px 5%', '10px 5px auto', '10px 5px auto 1em'], }, - "padding-top": { - "links": { - "tr": "#padding-properties", - "dev": "#padding-properties" + 'padding-top': { + links: { + tr: '#padding-properties', + dev: '#padding-properties', }, - "tests": ["10px", "5%"] + tests: ['10px', '5%'], }, - "padding-right": { - "links": { - "tr": "#padding-properties", - "dev": "#padding-properties" + 'padding-right': { + links: { + tr: '#padding-properties', + dev: '#padding-properties', }, - "tests": ["10px", "5%"] + tests: ['10px', '5%'], }, - "padding-bottom": { - "links": { - "tr": "#padding-properties", - "dev": "#padding-properties" + 'padding-bottom': { + links: { + tr: '#padding-properties', + dev: '#padding-properties', }, - "tests": ["10px", "5%"] + tests: ['10px', '5%'], }, - "padding-left": { - "links": { - "tr": "#padding-properties", - "dev": "#padding-properties" + 'padding-left': { + links: { + tr: '#padding-properties', + dev: '#padding-properties', }, - "tests": ["10px", "5%"] + tests: ['10px', '5%'], }, - "padding": { - "links": { - "tr": "#padding-properties", - "dev": "#padding-properties" + padding: { + links: { + tr: '#padding-properties', + dev: '#padding-properties', }, - "tests": [ - "10px", "10px 5%", "10px 5% 0.5em", "10px 5% 0.5em 0.8mm" - ] - } - } + tests: ['10px', '10px 5%', '10px 5% 0.5em', '10px 5% 0.5em 0.8mm'], + }, + }, }; diff --git a/tests/css-box-4.js b/tests/css-box-4.js index def9a098..dfe9a438 100644 --- a/tests/css-box-4.js +++ b/tests/css-box-4.js @@ -1,19 +1,19 @@ export default { - "title": "CSS Box Model Module Level 4", - "links": { - "tr": "css-box-4", - "dev": "css-box-4" + title: 'CSS Box Model Module Level 4', + links: { + tr: 'css-box-4', + dev: 'css-box-4', }, - "status": { - "stability": "experimental" + status: { + stability: 'experimental', }, - "properties": { - "margin-trim": { - "links": { - "tr": "#margin-trim", - "dev": "#margin-trim" + properties: { + 'margin-trim': { + links: { + tr: '#margin-trim', + dev: '#margin-trim', }, - "tests": ["none", "in-flow", "all"] - } - } + tests: ['none', 'in-flow', 'all'], + }, + }, }; diff --git a/tests/css-break-3.js b/tests/css-break-3.js index 998fa9ce..cce7813c 100644 --- a/tests/css-break-3.js +++ b/tests/css-break-3.js @@ -1,40 +1,66 @@ export default { - "title": "CSS Fragmentation Module Level 3", - "links": { - "tr": "css-break-3", - "dev": "css-break-3" + title: 'CSS Fragmentation Module Level 3', + links: { + tr: 'css-break-3', + dev: 'css-break-3', }, - "status": { - "stability": "stable" + status: { + stability: 'stable', }, - "properties": { - "break-before": { - "links": { - "tr": "#break-between", - "dev": "#break-between" + properties: { + 'break-before': { + links: { + tr: '#break-between', + dev: '#break-between', }, - "tests": ["auto", "avoid", "avoid-page", "page", "left", "right", "recto", "verso", "avoid-column", "column", "avoid-region", "region "] + tests: [ + 'auto', + 'avoid', + 'avoid-page', + 'page', + 'left', + 'right', + 'recto', + 'verso', + 'avoid-column', + 'column', + 'avoid-region', + 'region ', + ], }, - "break-after": { - "links": { - "tr": "#break-between", - "dev": "#break-between" + 'break-after': { + links: { + tr: '#break-between', + dev: '#break-between', }, - "tests": ["auto", "avoid", "avoid-page", "page", "left", "right", "recto", "verso", "avoid-column", "column", "avoid-region", "region "] + tests: [ + 'auto', + 'avoid', + 'avoid-page', + 'page', + 'left', + 'right', + 'recto', + 'verso', + 'avoid-column', + 'column', + 'avoid-region', + 'region ', + ], }, - "break-inside": { - "links": { - "tr": "#break-within", - "dev": "#break-within" + 'break-inside': { + links: { + tr: '#break-within', + dev: '#break-within', }, - "tests": ["auto", "avoid", "avoid-page", "avoid-column", "avoid-region"] + tests: ['auto', 'avoid', 'avoid-page', 'avoid-column', 'avoid-region'], }, - "box-decoration-break": { - "links": { - "tr": "#break-decoration", - "dev": "#break-decoration" + 'box-decoration-break': { + links: { + tr: '#break-decoration', + dev: '#break-decoration', }, - "tests": ["slice", "clone"] - } - } + tests: ['slice', 'clone'], + }, + }, }; diff --git a/tests/css-break-4.js b/tests/css-break-4.js index 1764c368..42ed8cc5 100644 --- a/tests/css-break-4.js +++ b/tests/css-break-4.js @@ -1,41 +1,38 @@ export default { - "title": "CSS Fragmentation Module Level 4", - "links": { - "tr": "css-break-4", - "dev": "css-break-4" + title: 'CSS Fragmentation Module Level 4', + links: { + tr: 'css-break-4', + dev: 'css-break-4', }, - "status": { - "stability": "experimental", + status: { + stability: 'experimental', }, - "values": { - "properties": [ - "break-before", - "break-after" - ], - "always": { - "links": { - "tr": "#valdef-break-before-always", - "dev": "#valdef-break-before-always", - "mdn": "break-before#values" + values: { + properties: ['break-before', 'break-after'], + always: { + links: { + tr: '#valdef-break-before-always', + dev: '#valdef-break-before-always', + mdn: 'break-before#values', }, - "tests": "always" + tests: 'always', }, - "all": { - "links": { - "tr": "#valdef-break-before-all", - "dev": "#valdef-break-before-all", - "mdn": "break-before#values" + all: { + links: { + tr: '#valdef-break-before-all', + dev: '#valdef-break-before-all', + mdn: 'break-before#values', }, - "tests": "all" - } + tests: 'all', + }, }, - "properties": { - "margin-break": { - "links": { - "tr": "#break-margins", - "dev": "#break-margins" + properties: { + 'margin-break': { + links: { + tr: '#break-margins', + dev: '#break-margins', }, - "tests": ["auto", "keep", "discard"] - } - } + tests: ['auto', 'keep', 'discard'], + }, + }, }; diff --git a/tests/css-cascade-3.js b/tests/css-cascade-3.js index 45f87d23..24c252f0 100644 --- a/tests/css-cascade-3.js +++ b/tests/css-cascade-3.js @@ -1,36 +1,31 @@ export default { - "title": "CSS Cascading and Inheritance Level 3", - "links": { - "tr": "css-cascade-3", - "dev": "css-cascade-3" + title: 'CSS Cascading and Inheritance Level 3', + links: { + tr: 'css-cascade-3', + dev: 'css-cascade-3', }, - "status": { - "stability": "stable", - "first-snapshot": 2015, - "last-snapshot": 2018 + status: { + stability: 'stable', + 'first-snapshot': 2015, + 'last-snapshot': 2018, }, - "values": { - "properties": [ - "color", - "font-weight", - "background-image", - "width" - ], - "unset": { - "links": { - "tr": "#inherit-initial", - "dev": "#inherit-initial" + values: { + properties: ['color', 'font-weight', 'background-image', 'width'], + unset: { + links: { + tr: '#inherit-initial', + dev: '#inherit-initial', }, - "tests": "unset" - } + tests: 'unset', + }, }, - "properties": { - "all": { - "links": { - "tr": "#all-shorthand", - "dev": "#all-shorthand" + properties: { + all: { + links: { + tr: '#all-shorthand', + dev: '#all-shorthand', }, - "tests": ["initial", "unset"] - } - } + tests: ['initial', 'unset'], + }, + }, }; diff --git a/tests/css-cascade-4.js b/tests/css-cascade-4.js index f858b138..4b2613b3 100644 --- a/tests/css-cascade-4.js +++ b/tests/css-cascade-4.js @@ -1,35 +1,30 @@ export default { - "title": "CSS Cascading and Inheritance Level 4", - "links": { - "tr": "css-cascade-4", - "dev": "css-cascade-4" + title: 'CSS Cascading and Inheritance Level 4', + links: { + tr: 'css-cascade-4', + dev: 'css-cascade-4', }, - "status": { - "stability": "stable", - "first-snapshot": 2020 + status: { + stability: 'stable', + 'first-snapshot': 2020, }, - "values": { - "properties": [ - "color", - "font-weight", - "background-image", - "all" - ], - "revert": { - "links": { - "tr": "#default", - "dev": "#default" + values: { + properties: ['color', 'font-weight', 'background-image', 'all'], + revert: { + links: { + tr: '#default', + dev: '#default', }, - "tests": "revert" - } + tests: 'revert', + }, }, - "properties": { - "all": { - "links": { - "tr": "#all-shorthand", - "dev": "#all-shorthand" + properties: { + all: { + links: { + tr: '#all-shorthand', + dev: '#all-shorthand', }, - "tests": "revert" - } - } + tests: 'revert', + }, + }, }; diff --git a/tests/css-cascade-5.js b/tests/css-cascade-5.js index 42e6f92d..50f38660 100644 --- a/tests/css-cascade-5.js +++ b/tests/css-cascade-5.js @@ -1,48 +1,43 @@ export default { - "title": "CSS Cascading and Inheritance Level 5", - "links": { - "tr": "css-cascade-5", - "dev": "css-cascade-5" + title: 'CSS Cascading and Inheritance Level 5', + links: { + tr: 'css-cascade-5', + dev: 'css-cascade-5', }, - "status": { - "stability": "experimental" + status: { + stability: 'experimental', }, - "values": { - "properties": [ - "color", - "font-weight", - "background-image", - "all" - ], - "revert-layer": { - "links": { - "tr": "#revert-layer", - "dev": "#revert-layer" + values: { + properties: ['color', 'font-weight', 'background-image', 'all'], + 'revert-layer': { + links: { + tr: '#revert-layer', + dev: '#revert-layer', }, - "tests": "revert-layer" - } + tests: 'revert-layer', + }, }, - "properties": { - "all": { - "links": { - "tr": "#revert-layer", - "dev": "#revert-layer" + properties: { + all: { + links: { + tr: '#revert-layer', + dev: '#revert-layer', }, - "tests": "revert-layer" - } + tests: 'revert-layer', + }, }, - "@rules": { - "@layer": { - "links": { - "tr": "#at-layer", - "dev": "#at-layer" + '@rules': { + '@layer': { + links: { + tr: '#at-layer', + dev: '#at-layer', }, - "tests": [ - "@layer framework {\n h1, h2 { color: maroon; background: white; }\n}", - "@layer framework {\n h1, h2 { color: maroon; background: white; }\n \n @media (prefers-color-scheme: dark) {\n h1, h2 { color: red; background: black; }\n }\n}", - "@layer framework;", - "@layer default, framework;" - ] - } - } + tests: [ + '@layer framework {\n h1, h2 { color: maroon; background: white; }\n}', + '@layer framework {\n h1, h2 { color: maroon; background: white; }\n \n @media (prefers-color-scheme: dark) {\n h1, h2 { color: red; background: black; }\n }\n}', + '@layer framework;', + '@layer default, framework;', + ], + }, + }, }; diff --git a/tests/css-color-3.js b/tests/css-color-3.js index 9b2dc60d..72d5f0ae 100644 --- a/tests/css-color-3.js +++ b/tests/css-color-3.js @@ -1,69 +1,63 @@ export default { - "title": "CSS Color Module Level 3", - "links": { - "tr": "css-color-3", - "dev": "css-color-3" + title: 'CSS Color Module Level 3', + links: { + tr: 'css-color-3', + dev: 'css-color-3', }, - "status": { - "stability": "stable", - "first-snapshot": 2007 + status: { + stability: 'stable', + 'first-snapshot': 2007, }, - "values": { - "properties": [ - "color", - "background-color", - "border-color", - "text-decoration-color", - "column-rule-color" - ], - "rgba": { - "links": { - "tr": "#rgba-color", - "dev": "#rgba-color", - "mdn": "color_value/rgba()" + values: { + properties: ['color', 'background-color', 'border-color', 'text-decoration-color', 'column-rule-color'], + rgba: { + links: { + tr: '#rgba-color', + dev: '#rgba-color', + mdn: 'color_value/rgba()', }, - "tests": "rgba(0,0,0,.5)" + tests: 'rgba(0,0,0,.5)', }, - "hsl": { - "links": { - "tr": "#hsl-color", - "dev": "#hsl-color", - "mdn": "color_value/hsl()" + hsl: { + links: { + tr: '#hsl-color', + dev: '#hsl-color', + mdn: 'color_value/hsl()', }, - "tests": "hsl(0,0%,0%)" + tests: 'hsl(0,0%,0%)', }, - "hsla": { - "links": { - "tr": "#hsla-color", - "dev": "#hsla-color", - "mdn": "color_value/hsla()" + hsla: { + links: { + tr: '#hsla-color', + dev: '#hsla-color', + mdn: 'color_value/hsla()', }, - "tests": "hsl(0,0%,0%,.5)" + tests: 'hsl(0,0%,0%,.5)', }, - "currentColor": { - "links": { - "tr": "#currentcolor", - "dev": "#currentcolor", - "mdn": "color_value" + currentColor: { + links: { + tr: '#currentcolor', + dev: '#currentcolor', + mdn: 'color_value', }, - "tests": "currentColor" + tests: 'currentColor', }, - "transparent": { - "links": { - "tr": "#transparent", - "dev": "#transparent", - "mdn": "color_value" + transparent: { + links: { + tr: '#transparent', + dev: '#transparent', + mdn: 'color_value', }, - "tests": "transparent" - } + tests: 'transparent', + }, }, - "properties": { - "opacity": { - "links": { - "tr": "#transparency", - "dev": "#transparency" + properties: { + opacity: { + links: { + tr: '#transparency', + dev: '#transparency', }, - "tests": ["-5", "0", ".5", "1", "2"] - } - } + tests: ['-5', '0', '.5', '1', '2'], + }, + }, }; diff --git a/tests/css-color-4.js b/tests/css-color-4.js index 5799a631..78d5a93c 100644 --- a/tests/css-color-4.js +++ b/tests/css-color-4.js @@ -1,154 +1,169 @@ export default { - "title": "CSS Color Module Level 4", - "links": { - "tr": "css-color-4", - "dev": "css-color-4" + title: 'CSS Color Module Level 4', + links: { + tr: 'css-color-4', + dev: 'css-color-4', }, - "status": { - "stability": "stable" + status: { + stability: 'stable', }, - "values": { - "properties": [ - "color", - "background-color", - "border-color", - "text-decoration-color", - "column-rule-color" - ], - "comma-less colors": { - "links": { - "tr": "#funcdef-rgb", - "dev": "#funcdef-rgb", - "mdn": "color_value" + values: { + properties: ['color', 'background-color', 'border-color', 'text-decoration-color', 'column-rule-color'], + 'comma-less colors': { + links: { + tr: '#funcdef-rgb', + dev: '#funcdef-rgb', + mdn: 'color_value', }, - "tests": ["rgb(0% 20% 70%)", "rgb(0 64 185)", "hsl(0 0% 0%)"] + tests: ['rgb(0% 20% 70%)', 'rgb(0 64 185)', 'hsl(0 0% 0%)'], }, - "/ alpha": { - "links": { - "tr": "#funcdef-rgb", - "dev": "#funcdef-rgb", - "mdn": "color_value" + '/ alpha': { + links: { + tr: '#funcdef-rgb', + dev: '#funcdef-rgb', + mdn: 'color_value', }, - "tests": ["rgba(0% 20% 70% / 50%)", "rgba(0% 20% 70% / .5)", "rgba(0 64 185 / 50%)", "rgba(0 64 185 / .5)", "hsla(0 0% 0% /.5)"] + tests: [ + 'rgba(0% 20% 70% / 50%)', + 'rgba(0% 20% 70% / .5)', + 'rgba(0 64 185 / 50%)', + 'rgba(0 64 185 / .5)', + 'hsla(0 0% 0% /.5)', + ], }, - "optional alpha": { - "links": { - "tr": "#funcdef-rgb", - "dev": "#funcdef-rgb", - "mdn": "color_value" + 'optional alpha': { + links: { + tr: '#funcdef-rgb', + dev: '#funcdef-rgb', + mdn: 'color_value', }, - "tests": ["rgb(0% 20% 70% / 50%)", "rgb(0% 20% 70% / .5)", "rgb(0 64 185 / 50%)", "rgb(0 64 185 / .5)", "hsl(0 0% 0% / .5)"] + tests: [ + 'rgb(0% 20% 70% / 50%)', + 'rgb(0% 20% 70% / .5)', + 'rgb(0 64 185 / 50%)', + 'rgb(0 64 185 / .5)', + 'hsl(0 0% 0% / .5)', + ], }, - "Hex with alpha": { - "links": { - "tr": "#hex-notation", - "dev": "#hex-notation", - "mdn": "color_value" + 'Hex with alpha': { + links: { + tr: '#hex-notation', + dev: '#hex-notation', + mdn: 'color_value', }, - "tests": ["#000F", "#000000FF"] + tests: ['#000F', '#000000FF'], }, - "rebeccapurple": { - "links": { - "tr": "#named-colors", - "dev": "#named-colors", - "mdn": "color_value" + rebeccapurple: { + links: { + tr: '#named-colors', + dev: '#named-colors', + mdn: 'color_value', }, - "tests": "rebeccapurple" + tests: 'rebeccapurple', }, - "system colors": { - "links": { - "tr": "#css-system-colors", - "dev": "#css-system-colors", - "mdn": "color_value" + 'system colors': { + links: { + tr: '#css-system-colors', + dev: '#css-system-colors', + mdn: 'color_value', }, - "tests": [ - "Canvas", "CanvasText", "LinkText", "VisitedText", "ActiveText", "ButtonFace", "Field", "FieldText", - "Highlight", "HighlightText", "GrayText" - ] + tests: [ + 'Canvas', + 'CanvasText', + 'LinkText', + 'VisitedText', + 'ActiveText', + 'ButtonFace', + 'Field', + 'FieldText', + 'Highlight', + 'HighlightText', + 'GrayText', + ], }, - "hwb()": { - "links": { - "tr": "#the-hwb-notation", - "dev": "#the-hwb-notation", - "mdn": "color_value/hwb()" + 'hwb()': { + links: { + tr: '#the-hwb-notation', + dev: '#the-hwb-notation', + mdn: 'color_value/hwb()', }, - "tests": ["hwb(0 0% 0%)", "hwb(0 0% 0% / .5)"] + tests: ['hwb(0 0% 0%)', 'hwb(0 0% 0% / .5)'], }, - "lab()": { - "links": { - "tr": "#specifying-lab-lch", - "dev": "#specifying-lab-lch", - "mdn": "color_value/lab()" + 'lab()': { + links: { + tr: '#specifying-lab-lch', + dev: '#specifying-lab-lch', + mdn: 'color_value/lab()', }, - "tests": ["lab(0% 0 0)", "lab(0% 0 0 /.5)"] + tests: ['lab(0% 0 0)', 'lab(0% 0 0 /.5)'], }, - "oklab()": { - "links": { - "tr": "#specifying-oklab-lch", - "dev": "#specifying-oklab-lch", - "mdn": "color_value/oklab()" + 'oklab()': { + links: { + tr: '#specifying-oklab-lch', + dev: '#specifying-oklab-lch', + mdn: 'color_value/oklab()', }, - "tests": ["oklab(0% 0 0)", "oklab(40.101% 0.1147 0.0453 / .5)"] + tests: ['oklab(0% 0 0)', 'oklab(40.101% 0.1147 0.0453 / .5)'], }, - "lch()": { - "links": { - "tr": "#specifying-lch-lch", - "dev": "#specifying-lch-lch", - "mdn": "color_value/lch()" + 'lch()': { + links: { + tr: '#specifying-lch-lch', + dev: '#specifying-lch-lch', + mdn: 'color_value/lch()', }, - "tests": ["lch(0% 0 0)", "lch(none 0% none)", "lch(0% 0 0 / .5)"] + tests: ['lch(0% 0 0)', 'lch(none 0% none)', 'lch(0% 0 0 / .5)'], }, - "oklch()": { - "links": { - "tr": "#specifying-oklch-lch", - "dev": "#specifying-oklch-lch", - "mdn": "color_value/oklch()" + 'oklch()': { + links: { + tr: '#specifying-oklch-lch', + dev: '#specifying-oklch-lch', + mdn: 'color_value/oklch()', }, - "tests": ["oklch(0% 0 0)", "oklch(40.101% 0.12332 21.555 / .5)"] + tests: ['oklch(0% 0 0)', 'oklch(40.101% 0.12332 21.555 / .5)'], }, - "color()": { - "links": { - "tr": "#color-function", - "dev": "#color-function", - "mdn": "color_value/color()" + 'color()': { + links: { + tr: '#color-function', + dev: '#color-function', + mdn: 'color_value/color()', }, - "tests": [ - "color(.2 .4 .6)", - "color(display-p3 .2. 4 .6)", - "color(foo .2 .4 .6)", - "color(.2 .4 .6 / .5)", - "color(display-p3 .2 .4 .6 / .5)", - "color(--foo .2 .4 .6 / .5)", - "color(.2 .4 .6, #123456)", - "color(display-p3 .2. 4 .6, #654321)", - "color(20% 40% 60%)", - "color(display-p3 20% 40% 60%)", - "color(foo 20% 40% 60%)", - "color(20% 40% 60% / .5)", - "color(image-p3 20% 40% 60% / .5)", - "color(--foo 20% 40% 60% / .5)", - "color(20% 40% 60%, #123456)", - "color(display-p3 20% 40% 60%, #654321)", - "color(--mycmyk 0% 20% 30% 5%)" - ] + tests: [ + 'color(.2 .4 .6)', + 'color(display-p3 .2. 4 .6)', + 'color(foo .2 .4 .6)', + 'color(.2 .4 .6 / .5)', + 'color(display-p3 .2 .4 .6 / .5)', + 'color(--foo .2 .4 .6 / .5)', + 'color(.2 .4 .6, #123456)', + 'color(display-p3 .2. 4 .6, #654321)', + 'color(20% 40% 60%)', + 'color(display-p3 20% 40% 60%)', + 'color(foo 20% 40% 60%)', + 'color(20% 40% 60% / .5)', + 'color(image-p3 20% 40% 60% / .5)', + 'color(--foo 20% 40% 60% / .5)', + 'color(20% 40% 60%, #123456)', + 'color(display-p3 20% 40% 60%, #654321)', + 'color(--mycmyk 0% 20% 30% 5%)', + ], }, - "device-cmyk()": { - "links": { - "tr": "#cmyk-colors", - "dev": "#cmyk-colors", - "mdn": "color_value/device-cmyk()" + 'device-cmyk()': { + links: { + tr: '#cmyk-colors', + dev: '#cmyk-colors', + mdn: 'color_value/device-cmyk()', }, - "tests": ["device-cmyk(.2 .3 .4 .5)", "device-cmyk(.2 .3 .4 .5 / .5)", "device-cmyk(.2 .3 .4 .5 / 50%)"] - } + tests: ['device-cmyk(.2 .3 .4 .5)', 'device-cmyk(.2 .3 .4 .5 / .5)', 'device-cmyk(.2 .3 .4 .5 / 50%)'], + }, }, - "properties": { - "opacity": { - "links": { - "tr": "#transparency", - "dev": "#transparency" + properties: { + opacity: { + links: { + tr: '#transparency', + dev: '#transparency', }, - "tests": ["45%"] - } - } + tests: ['45%'], + }, + }, }; diff --git a/tests/css-color-5.js b/tests/css-color-5.js index ccf975a6..9dd4f239 100644 --- a/tests/css-color-5.js +++ b/tests/css-color-5.js @@ -1,68 +1,59 @@ export default { - "title": "CSS Color Module Level 5", - "links": { - "dev": "css-color-5" + title: 'CSS Color Module Level 5', + links: { + dev: 'css-color-5', }, - "status": { - "stability": "experimental" + status: { + stability: 'experimental', }, - "values": { - "properties": [ - "color", - "background-color", - "border-color", - "text-decoration-color", - "column-rule-color" - ], - "color-mix()": { - "links": { - "dev": "#color-mix", - "mdn": "color_value" + values: { + properties: ['color', 'background-color', 'border-color', 'text-decoration-color', 'column-rule-color'], + 'color-mix()': { + links: { + dev: '#color-mix', + mdn: 'color_value', }, - "tests": [ - "color-mix(in srgb, teal 65%, olive)", - "color-mix(in srgb, rgb(255, 0, 0, .2) 65%, olive)", - "color-mix(in srgb, currentColor, rgba(0, 0, 0, .5) 65%", - "color-mix(in srgb, currentColor 10%, rgba(0, 0, 0, .5) 65%", - "color-mix(in lch, teal 65%, olive)", - "color-mix(in hsl, teal 65%, olive)", - "color-mix(in hwb, teal 65%, olive)", - "color-mix(in xyz, teal 65%, olive)", - "color-mix(in lab, teal 65%, olive)", - ] + tests: [ + 'color-mix(in srgb, teal 65%, olive)', + 'color-mix(in srgb, rgb(255, 0, 0, .2) 65%, olive)', + 'color-mix(in srgb, currentColor, rgba(0, 0, 0, .5) 65%', + 'color-mix(in srgb, currentColor 10%, rgba(0, 0, 0, .5) 65%', + 'color-mix(in lch, teal 65%, olive)', + 'color-mix(in hsl, teal 65%, olive)', + 'color-mix(in hwb, teal 65%, olive)', + 'color-mix(in xyz, teal 65%, olive)', + 'color-mix(in lab, teal 65%, olive)', + ], }, - "color-contrast()": { - "links": { - "dev": "#colorcontrast", - "mdn": "color_value" + 'color-contrast()': { + links: { + dev: '#colorcontrast', + mdn: 'color_value', }, - "tests": [ - "color-contrast(wheat vs tan, sienna, #b22222, #d2691e)", - "color-contrast(hsl(200 50% 80%) vs hsl(200 83% 23%), purple, hsl(300 100% 25%))" - ] + tests: [ + 'color-contrast(wheat vs tan, sienna, #b22222, #d2691e)', + 'color-contrast(hsl(200 50% 80%) vs hsl(200 83% 23%), purple, hsl(300 100% 25%))', + ], }, - "color-adjust()": { - "links": { - - "dev": "#coloradjust", - "mdn": "color_value" + 'color-adjust()': { + links: { + dev: '#coloradjust', + mdn: 'color_value', }, - "tests": [ - "color-adjust(peru lightness -20%)" - ] + tests: ['color-adjust(peru lightness -20%)'], }, - "relative color": { - "links": { - "dev": "#relative-colors", - "mdn": "color_value" + 'relative color': { + links: { + dev: '#relative-colors', + mdn: 'color_value', }, - "tests": [ - "rgb(from indianred 255 g b)", - "hsl(from lightseagreen calc(h+180) s l)", - "lab(from orchid l 0 0)", - "lch(from peru calc(l * 0.8) c h)" - ] - } - } + tests: [ + 'rgb(from indianred 255 g b)', + 'hsl(from lightseagreen calc(h+180) s l)', + 'lab(from orchid l 0 0)', + 'lch(from peru calc(l * 0.8) c h)', + ], + }, + }, }; diff --git a/tests/css-color-adjust-1.js b/tests/css-color-adjust-1.js index 0c9365e9..199dfdcc 100644 --- a/tests/css-color-adjust-1.js +++ b/tests/css-color-adjust-1.js @@ -1,36 +1,47 @@ export default { - "title": "CSS Color Adjustment Module Level 1", - "links": { - "tr": "css-color-adjust-1", - "dev": "css-color-adjust-1" + title: 'CSS Color Adjustment Module Level 1', + links: { + tr: 'css-color-adjust-1', + dev: 'css-color-adjust-1', }, - "status": { - "stability": "stable" + status: { + stability: 'stable', }, - "properties": { - "print-color-adjust": { - "links": { - "tr": "#perf", - "dev": "#perf" + properties: { + 'print-color-adjust': { + links: { + tr: '#perf', + dev: '#perf', }, - "tests": ["economy", "exact"] + tests: ['economy', 'exact'], }, - "forced-color-adjust": { - "links": { - "tr": "#forced", - "dev": "#forced" + 'forced-color-adjust': { + links: { + tr: '#forced', + dev: '#forced', }, - "tests": ["auto", "none", "preserve-parent-color"] + tests: ['auto', 'none', 'preserve-parent-color'], }, - "color-scheme": { - "links": { - "tr": "#color-scheme-prop", - "dev": "#color-scheme-prop" + 'color-scheme': { + links: { + tr: '#color-scheme-prop', + dev: '#color-scheme-prop', }, - "tests": [ - "normal", "light", "dark", "light dark", "dark light", "only light", "light only", - "light light", "dark dark", "light purple", "purple dark interesting", "none", "light none" - ] - } - } + tests: [ + 'normal', + 'light', + 'dark', + 'light dark', + 'dark light', + 'only light', + 'light only', + 'light light', + 'dark dark', + 'light purple', + 'purple dark interesting', + 'none', + 'light none', + ], + }, + }, }; diff --git a/tests/css-composition-1.js b/tests/css-composition-1.js index 7503520e..271e26eb 100644 --- a/tests/css-composition-1.js +++ b/tests/css-composition-1.js @@ -1,35 +1,70 @@ export default { - "title": "Compositing and Blending Level 1", - "links": { - "tr": "compositing-1", - "dev": "compositing-1", - "devtype": "fxtf" + title: 'Compositing and Blending Level 1', + links: { + tr: 'compositing-1', + dev: 'compositing-1', + devtype: 'fxtf', }, - "status": { - "stability": "stable", - "first-snapshot": 2015 + status: { + stability: 'stable', + 'first-snapshot': 2015, }, - "properties": { - "mix-blend-mode": { - "links": { - "tr": "#mix-blend-mode", - "dev": "#mix-blend-mode" + properties: { + 'mix-blend-mode': { + links: { + tr: '#mix-blend-mode', + dev: '#mix-blend-mode', }, - "tests": ["normal", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "hue", "saturation", "color", "luminosity"] + tests: [ + 'normal', + 'multiply', + 'screen', + 'overlay', + 'darken', + 'lighten', + 'color-dodge', + 'color-burn', + 'hard-light', + 'soft-light', + 'difference', + 'exclusion', + 'hue', + 'saturation', + 'color', + 'luminosity', + ], }, - "isolation": { - "links": { - "tr": "#isolation", - "dev": "#isolation" + isolation: { + links: { + tr: '#isolation', + dev: '#isolation', }, - "tests": ["auto", "isolate"] + tests: ['auto', 'isolate'], }, - "background-blend-mode": { - "links": { - "tr": "#background-blend-mode", - "dev": "#background-blend-mode" + 'background-blend-mode': { + links: { + tr: '#background-blend-mode', + dev: '#background-blend-mode', }, - "tests": ["normal", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "hue", "saturation", "color", "luminosity", "normal, multiply"] - } - } + tests: [ + 'normal', + 'multiply', + 'screen', + 'overlay', + 'darken', + 'lighten', + 'color-dodge', + 'color-burn', + 'hard-light', + 'soft-light', + 'difference', + 'exclusion', + 'hue', + 'saturation', + 'color', + 'luminosity', + 'normal, multiply', + ], + }, + }, }; diff --git a/tests/css-conditional-3.js b/tests/css-conditional-3.js index ad151eab..a55b7ca8 100644 --- a/tests/css-conditional-3.js +++ b/tests/css-conditional-3.js @@ -1,27 +1,27 @@ export default { - "title": "CSS Conditional Rules Module Level 3", - "links": { - "tr": "css3-conditional", - "dev": "css-conditional-3" + title: 'CSS Conditional Rules Module Level 3', + links: { + tr: 'css3-conditional', + dev: 'css-conditional-3', }, - "status": { - "stability": "stable", - "first-snapshot": 2015 + status: { + stability: 'stable', + 'first-snapshot': 2015, }, - "@rules": { - "@supports": { - "links": { - "tr": "#at-supports", - "dev": "#at-supports" + '@rules': { + '@supports': { + links: { + tr: '#at-supports', + dev: '#at-supports', }, - "tests": [ - "@supports (color: green) {}", - "@supports not (foo: bar) {}", - "@supports (color: green) or (color: red) {}", - "@supports (color: green) and (color: red) {}", - "@supports (color: green) and (not (foo: bar)) {}", - "@supports (color: green) or (not (foo: bar)) {}" - ] - } - } + tests: [ + '@supports (color: green) {}', + '@supports not (foo: bar) {}', + '@supports (color: green) or (color: red) {}', + '@supports (color: green) and (color: red) {}', + '@supports (color: green) and (not (foo: bar)) {}', + '@supports (color: green) or (not (foo: bar)) {}', + ], + }, + }, }; diff --git a/tests/css-conditional-4.js b/tests/css-conditional-4.js index 6fce32b7..82275308 100644 --- a/tests/css-conditional-4.js +++ b/tests/css-conditional-4.js @@ -1,23 +1,23 @@ export default { - "title": "CSS Conditional Rules Module Level 4", - "links": { - "tr": "css-conditional-4", - "dev": "css-conditional-4" + title: 'CSS Conditional Rules Module Level 4', + links: { + tr: 'css-conditional-4', + dev: 'css-conditional-4', }, - "status": { - "stability": "experimental" + status: { + stability: 'experimental', }, - "@rules": { - "@supports": { - "links": { - "tr": "#at-supports-ext", - "dev": "#at-supports-ext" + '@rules': { + '@supports': { + links: { + tr: '#at-supports-ext', + dev: '#at-supports-ext', }, - "tests": [ - "@supports selector(::before) {}", - "@supports not selector(::-webkit-unknown-pseudo) {}", - "@supports selector(div, div) {}" - ] - } - } -} + tests: [ + '@supports selector(::before) {}', + '@supports not selector(::-webkit-unknown-pseudo) {}', + '@supports selector(div, div) {}', + ], + }, + }, +}; diff --git a/tests/css-conditional-5.js b/tests/css-conditional-5.js index ecf490ec..c16d02eb 100644 --- a/tests/css-conditional-5.js +++ b/tests/css-conditional-5.js @@ -1,47 +1,44 @@ export default { - "title": "CSS Conditional Rules Module Level 5", - "links": { - "tr": "css-conditional-5", - "dev": "css-conditional-5" + title: 'CSS Conditional Rules Module Level 5', + links: { + tr: 'css-conditional-5', + dev: 'css-conditional-5', }, - "status": { - "stability": "experimental" + status: { + stability: 'experimental', }, - "@rules": { - "@supports": { - "links": { - "tr": "#at-supports-ext", - "dev": "#at-supports-ext" + '@rules': { + '@supports': { + links: { + tr: '#at-supports-ext', + dev: '#at-supports-ext', }, - "tests": [ - "@supports font-tech(features-opentype) {}", - "@supports font-format(woff2) {}" - ] + tests: ['@supports font-tech(features-opentype) {}', '@supports font-format(woff2) {}'], }, - "@when": { - "links": { - "tr": "#when-rule", - "dev": "#when-rule" + '@when': { + links: { + tr: '#when-rule', + dev: '#when-rule', }, - "tests": [ - "@when media(min-width: 200px) {}", - "@when media(width >= 200px) {}", - "@when media(pointer) {}", - "@when supports(display: flex) {}" - ] + tests: [ + '@when media(min-width: 200px) {}', + '@when media(width >= 200px) {}', + '@when media(pointer) {}', + '@when supports(display: flex) {}', + ], }, - "@else": { - "links": { - "tr": "#else-rule", - "dev": "#else-rule" + '@else': { + links: { + tr: '#else-rule', + dev: '#else-rule', }, - "tests": [ - "@when media(min-width: 200px) {} @else {}", - "@when media(min-width: 200px) {} @else media(min-width: 100px) {}", - "@when media(min-width: 200px) {} @else media(min-width >= 100px) {}", - "@when media(min-width: 200px) {} @else supports(display: flex) {}", - "@when media(min-width: 200px) {} @else media(min-width: 100px) {} @else {}" - ] - } - } + tests: [ + '@when media(min-width: 200px) {} @else {}', + '@when media(min-width: 200px) {} @else media(min-width: 100px) {}', + '@when media(min-width: 200px) {} @else media(min-width >= 100px) {}', + '@when media(min-width: 200px) {} @else supports(display: flex) {}', + '@when media(min-width: 200px) {} @else media(min-width: 100px) {} @else {}', + ], + }, + }, }; diff --git a/tests/css-containment-1.js b/tests/css-containment-1.js index 295a5873..fc23fe94 100644 --- a/tests/css-containment-1.js +++ b/tests/css-containment-1.js @@ -1,23 +1,30 @@ export default { - "title": "CSS Containment Module Level 1", - "links": { - "tr": "css-contain-1", - "dev": "css-contain-1" + title: 'CSS Containment Module Level 1', + links: { + tr: 'css-contain-1', + dev: 'css-contain-1', }, - "status": { - "stability": "stable", - "first-snapshot": 2020 + status: { + stability: 'stable', + 'first-snapshot': 2020, }, - "properties": { - "contain": { - "links": { - "tr": "#contain-property", - "dev": "#contain-property" + properties: { + contain: { + links: { + tr: '#contain-property', + dev: '#contain-property', }, - "tests": [ - "none", "strict", "content", "size", "layout", "paint", - "size layout", "size paint", "size layout paint" - ] - } - } + tests: [ + 'none', + 'strict', + 'content', + 'size', + 'layout', + 'paint', + 'size layout', + 'size paint', + 'size layout paint', + ], + }, + }, }; diff --git a/tests/css-containment-2.js b/tests/css-containment-2.js index 2056cf75..6acf70f4 100644 --- a/tests/css-containment-2.js +++ b/tests/css-containment-2.js @@ -1,29 +1,26 @@ export default { - "title": "CSS Containment Module Level 2", - "links": { - "tr": "css-contain-2", - "dev": "css-contain-2" + title: 'CSS Containment Module Level 2', + links: { + tr: 'css-contain-2', + dev: 'css-contain-2', }, - "status": { - "stability": "experimental" + status: { + stability: 'experimental', }, - "properties": { - "contain": { - "links": { - "tr": "#contain-property", - "dev": "#contain-property" + properties: { + contain: { + links: { + tr: '#contain-property', + dev: '#contain-property', }, - "tests": [ - "style", - "size style", "size layout style", "size layout style paint" - ] + tests: ['style', 'size style', 'size layout style', 'size layout style paint'], }, - "content-visibility": { - "links": { - "tr": "#content-visibility", - "dev": "#content-visibility" + 'content-visibility': { + links: { + tr: '#content-visibility', + dev: '#content-visibility', }, - "tests": ["visible", "auto", "hidden"] - } - } + tests: ['visible', 'auto', 'hidden'], + }, + }, }; diff --git a/tests/css-containment-3.js b/tests/css-containment-3.js index 64710200..af5b8575 100644 --- a/tests/css-containment-3.js +++ b/tests/css-containment-3.js @@ -1,128 +1,118 @@ export default { - "title": "CSS Containment Module Level 3", - "links": { - "tr": "css-contain-3", - "dev": "css-contain-3" + title: 'CSS Containment Module Level 3', + links: { + tr: 'css-contain-3', + dev: 'css-contain-3', }, - "status": { - "stability": "experimental" + status: { + stability: 'experimental', }, - "@rules": { - "@container": { - "links": { - "tr": "#container-rule", - "dev": "#container-rule" + '@rules': { + '@container': { + links: { + tr: '#container-rule', + dev: '#container-rule', }, - "tests": [ - "@container size(width >= 150px) { div { margin: 10px } }", - "@container size(height >= 150px) { div { margin: 10px } }", - "@container size(inline-size >= 150px) { div { margin: 10px } }", - "@container size(block-size >= 150px) { div { margin: 10px } }", - "@container size(aspect-ratio >= 1 / 1) { div { margin: 10px } }", - "@container size(orientation = portrait) { div { margin: 10px } }", - "@container style(pointer) { div { margin: 10px } }", - "@container style(pointer: fine) { div { margin: 10px } }", - "@container x size(width >= 150px) { div { margin: 10px } }", - "@container name(x) size(width >= 150px) { div { margin: 10px } }", - "@container type(inline-size) size(width >= 150px) { div { margin: 10px } }", - "@container name(x) type(inline-size) size(width >= 150px) { div { margin: 10px } }" - ] - } + tests: [ + '@container size(width >= 150px) { div { margin: 10px } }', + '@container size(height >= 150px) { div { margin: 10px } }', + '@container size(inline-size >= 150px) { div { margin: 10px } }', + '@container size(block-size >= 150px) { div { margin: 10px } }', + '@container size(aspect-ratio >= 1 / 1) { div { margin: 10px } }', + '@container size(orientation = portrait) { div { margin: 10px } }', + '@container style(pointer) { div { margin: 10px } }', + '@container style(pointer: fine) { div { margin: 10px } }', + '@container x size(width >= 150px) { div { margin: 10px } }', + '@container name(x) size(width >= 150px) { div { margin: 10px } }', + '@container type(inline-size) size(width >= 150px) { div { margin: 10px } }', + '@container name(x) type(inline-size) size(width >= 150px) { div { margin: 10px } }', + '@container card (inline-size > 30em) and style(--responsive = true) { div { margin: 10px } }', + ], + }, }, - "values": { - "properties": [ - "width" - ], - "cqw": { - "links": { - "tr": "#container-lengths", - "dev": "#container-lengths", - "mdn": "length" + values: { + properties: ['width'], + cqw: { + links: { + tr: '#container-lengths', + dev: '#container-lengths', + mdn: 'length', }, - "tests": "5cqw" + tests: '5cqw', }, - "cqh": { - "links": { - "tr": "#container-lengths", - "dev": "#container-lengths", - "mdn": "length" + cqh: { + links: { + tr: '#container-lengths', + dev: '#container-lengths', + mdn: 'length', }, - "tests": "5cqh" + tests: '5cqh', }, - "cqi": { - "links": { - "tr": "#container-lengths", - "dev": "#container-lengths", - "mdn": "length" + cqi: { + links: { + tr: '#container-lengths', + dev: '#container-lengths', + mdn: 'length', }, - "tests": "5cqi" + tests: '5cqi', }, - "cqb": { - "links": { - "tr": "#container-lengths", - "dev": "#container-lengths", - "mdn": "length" + cqb: { + links: { + tr: '#container-lengths', + dev: '#container-lengths', + mdn: 'length', }, - "tests": "5cqb" + tests: '5cqb', }, - "cqmin": { - "links": { - "tr": "#container-lengths", - "dev": "#container-lengths", - "mdn": "length" + cqmin: { + links: { + tr: '#container-lengths', + dev: '#container-lengths', + mdn: 'length', }, - "tests": "5cqmin" + tests: '5cqmin', }, - "cqmax": { - "links": { - "tr": "#container-lengths", - "dev": "#container-lengths", - "mdn": "length" + cqmax: { + links: { + tr: '#container-lengths', + dev: '#container-lengths', + mdn: 'length', }, - "tests": "5cqmax" - } + tests: '5cqmax', + }, }, - "properties": { - "container-type": { - "links": { - "tr": "#container-type", - "dev": "#container-type" + properties: { + 'container-type': { + links: { + tr: '#container-type', + dev: '#container-type', }, - "tests": [ - "none", - "style", - "state", - "size", - "inline-size", - "block-size", - "style state", - "style state size", - "style state inline-size", - "style state block-size" - ] + tests: [ + 'none', + 'style', + 'state', + 'size', + 'inline-size', + 'block-size', + 'style state', + 'style state size', + 'style state inline-size', + 'style state block-size', + ], }, - "container-name": { - "links": { - "tr": "#container-name", - "dev": "#container-name" + 'container-name': { + links: { + tr: '#container-name', + dev: '#container-name', }, - "tests": [ - "none", - "x", - "\"x\"", - "x y" - ] + tests: ['none', 'x', '"x"', 'x y'], }, - "container": { - "links": { - "tr": "#container-shorthand", - "dev": "#container-shorthand" + container: { + links: { + tr: '#container-shorthand', + dev: '#container-shorthand', }, - "tests": [ - "none", - "style", - "size / x" - ] - } - } + tests: ['none', 'style', 'size / x'], + }, + }, }; diff --git a/tests/css-content-3.js b/tests/css-content-3.js index 731fcd94..d615e41a 100644 --- a/tests/css-content-3.js +++ b/tests/css-content-3.js @@ -1,29 +1,26 @@ export default { - "title": "CSS Generated Content Module Level 3", - "links": { - "tr": "css-content-3", - "dev": "css-content-3" + title: 'CSS Generated Content Module Level 3', + links: { + tr: 'css-content-3', + dev: 'css-content-3', }, - "status": { - "stability": "experimental" + status: { + stability: 'experimental', }, - "properties": { - "quotes": { - "links": { - "tr": "#quotes", - "dev": "#quotes" + properties: { + quotes: { + links: { + tr: '#quotes', + dev: '#quotes', }, - "tests": ["auto"] + tests: ['auto'], }, - "content": { - "links": { - "tr": "#alt", - "dev": "#alt" + content: { + links: { + tr: '#alt', + dev: '#alt', }, - "tests": [ - "url(./img/star.png) / \"New!\"", - "\"\\25BA\" / \"\"" - ] - } - } + tests: ['url(./img/star.png) / "New!"', '"\\25BA" / ""'], + }, + }, }; diff --git a/tests/css-counter-styles-3.js b/tests/css-counter-styles-3.js index a57f1df8..d35b75c7 100644 --- a/tests/css-counter-styles-3.js +++ b/tests/css-counter-styles-3.js @@ -1,149 +1,157 @@ export default { - "title": "CSS Counter Styles Level 3", - "links": { - "tr": "css-counter-styles-3", - "dev": "css-counter-styles-3" + title: 'CSS Counter Styles Level 3', + links: { + tr: 'css-counter-styles-3', + dev: 'css-counter-styles-3', }, - "status": { - "stability": "stable", - "first-snapshot": 2021 + status: { + stability: 'stable', + 'first-snapshot': 2021, }, - "@rules": { - "@counter-style": { - "links": { - "tr": "#the-counter-style-rule", - "dev": "#the-counter-style-rule" - }, - "tests": "@counter-style foo {\n system: numeric;\n symbols: '0' '1' '2' '3' '4' '5' '6' '7' '8' '9';\n}" - } + '@rules': { + '@counter-style': { + links: { + tr: '#the-counter-style-rule', + dev: '#the-counter-style-rule', + }, + tests: "@counter-style foo {\n system: numeric;\n symbols: '0' '1' '2' '3' '4' '5' '6' '7' '8' '9';\n}", + }, }, - "descriptors": { - "@counter-style example/system": { - "links": { - "tr": "#counter-style-system", - "dev": "#counter-style-system" - }, - "required" : { - '*' : { "descriptor" : "system: alphabetic; symbols: A B C D; additive-symbols: 1000 M, 500 C"}, - 'extends decimal' : { } - }, - "tests": [ - "cyclic", "numeric", "alphabetic", "symbolic", "additive", "fixed 3", "extends decimal" - ] + descriptors: { + '@counter-style example/system': { + links: { + tr: '#counter-style-system', + dev: '#counter-style-system', + }, + required: { + '*': { + descriptor: 'system: alphabetic; symbols: A B C D; additive-symbols: 1000 M, 500 C', + }, + 'extends decimal': {}, + }, + tests: ['cyclic', 'numeric', 'alphabetic', 'symbolic', 'additive', 'fixed 3', 'extends decimal'], }, - "@counter-style example/negative": { - "links": { - "tr": "#counter-style-negative", - "dev": "#counter-style-negative" + '@counter-style example/negative': { + links: { + tr: '#counter-style-negative', + dev: '#counter-style-negative', }, - "required" : { - '*' : { "descriptor" : "system: alphabetic; symbols: A B C D; additive-symbols: 1000 M, 500 C"} + required: { + '*': { + descriptor: 'system: alphabetic; symbols: A B C D; additive-symbols: 1000 M, 500 C', + }, }, - "tests": [ - "'-'", "'(' ')'" - ] + tests: ["'-'", "'(' ')'"], }, - "@counter-style example/prefix": { - "links": { - "tr": "#counter-style-prefix", - "dev": "#counter-style-prefix" + '@counter-style example/prefix': { + links: { + tr: '#counter-style-prefix', + dev: '#counter-style-prefix', }, - "required" : { - '*' : { "descriptor" : "system: alphabetic; symbols: A B C D; additive-symbols: 1000 M, 500 C"} + required: { + '*': { + descriptor: 'system: alphabetic; symbols: A B C D; additive-symbols: 1000 M, 500 C', + }, }, - "tests": [ - "»", "url(https://lea.verou.me/mark.svg)" - ] + tests: ['»', 'url(https://lea.verou.me/mark.svg)'], }, - "@counter-style example/suffix": { - "links": { - "tr": "#counter-style-suffix", - "dev": "#counter-style-suffix" + '@counter-style example/suffix': { + links: { + tr: '#counter-style-suffix', + dev: '#counter-style-suffix', }, - "required" : { - '*' : { "descriptor" : "system: alphabetic; symbols: A B C D; additive-symbols: 1000 M, 500 C"} + required: { + '*': { + descriptor: 'system: alphabetic; symbols: A B C D; additive-symbols: 1000 M, 500 C', + }, }, - "tests": [ - "»", "url(https://lea.verou.me/mark.svg)" - ] + tests: ['»', 'url(https://lea.verou.me/mark.svg)'], }, - "@counter-style example/range": { - "links": { - "tr": "#counter-style-range", - "dev": "#counter-style-range" - }, - "required" : { - '*' : { "descriptor" : "system: alphabetic; symbols: A B C D; additive-symbols: 1000 M, 500 C"} - }, - "tests": [ - "auto", "2 5", "infinite 10", "10 infinite", "infinite infinite", "2 5, 8 10", "infinite 8, 6 infinite" - ] + '@counter-style example/range': { + links: { + tr: '#counter-style-range', + dev: '#counter-style-range', + }, + required: { + '*': { + descriptor: 'system: alphabetic; symbols: A B C D; additive-symbols: 1000 M, 500 C', + }, + }, + tests: [ + 'auto', + '2 5', + 'infinite 10', + '10 infinite', + 'infinite infinite', + '2 5, 8 10', + 'infinite 8, 6 infinite', + ], }, - "@counter-style example/symbols": { - "links": { - "tr": "#counter-style-symbols", - "dev": "#counter-style-symbols" - }, - "required" : { - '*' : { "descriptor" : "system: alphabetic"}, - 'custom-numbers' : { "rule" : "@counter-style custom-numbers { system: fixed; symbols: A B C D E;}"} - }, - "tests": [ - "A B C D E F", + '@counter-style example/symbols': { + links: { + tr: '#counter-style-symbols', + dev: '#counter-style-symbols', + }, + required: { + '*': { descriptor: 'system: alphabetic' }, + 'custom-numbers': { + rule: '@counter-style custom-numbers { system: fixed; symbols: A B C D E;}', + }, + }, + tests: [ + 'A B C D E F', "'\\24B6' '\\24B7' '\\24B8' D E F", "'0' '1' '2' '4' '5' '6' '7'", "'1' url('second.svg') '2'", "url('first.svg') url('second.svg') url('third.svg')", - "custom-numbers" - ] + 'custom-numbers', + ], }, - "@counter-style example/additive-symbols": { - "links": { - "tr": "#additive-system", - "dev": "#descdef-counter-style-additive-symbols" + '@counter-style example/additive-symbols': { + links: { + tr: '#additive-system', + dev: '#descdef-counter-style-additive-symbols', }, - "required" : { - '*' : { "descriptor" : "system: additive"} + required: { + '*': { descriptor: 'system: additive' }, }, - "tests": [ - "3 '0'", "3 '1', 2 '\\2E\\20'", "3 '1', 2 url(symbol.svg)", - ] + tests: ["3 '0'", "3 '1', 2 '\\2E\\20'", "3 '1', 2 url(symbol.svg)"], }, - "@counter-style example/pad": { - "links": { - "tr": "#counter-style-pad", - "dev": "#counter-style-pad" + '@counter-style example/pad': { + links: { + tr: '#counter-style-pad', + dev: '#counter-style-pad', }, - "required" : { - '*' : { "descriptor" : "system: alphabetic; symbols: A B C D; additive-symbols: 1000 M, 500 C"} + required: { + '*': { + descriptor: 'system: alphabetic; symbols: A B C D; additive-symbols: 1000 M, 500 C', + }, }, - "tests": [ - "0 ''", "3 '0'", "'0' 3" - ] + tests: ["0 ''", "3 '0'", "'0' 3"], }, - "@counter-style example/fallback": { - "links": { - "tr": "#counter-style-fallback", - "dev": "#counter-style-fallback" + '@counter-style example/fallback': { + links: { + tr: '#counter-style-fallback', + dev: '#counter-style-fallback', }, - "required" : { - '*' : { "descriptor" : "system: alphabetic; symbols: A B C D; additive-symbols: 1000 M, 500 C"} + required: { + '*': { + descriptor: 'system: alphabetic; symbols: A B C D; additive-symbols: 1000 M, 500 C', + }, }, - "tests": [ - "decimal" - ] + tests: ['decimal'], }, - "@counter-style example/speak-as": { - "links": { - "tr": "#counter-style-speak-as", - "dev": "#counter-style-speak-as" - }, - "required" : { - '*' : { "descriptor" : "system: alphabetic; symbols: A B C D; additive-symbols: 1000 M, 500 C"} - }, - "tests": [ - "auto", "bullets", "numbers", "words", "spell-out", "example-counter", - ] - } - } + '@counter-style example/speak-as': { + links: { + tr: '#counter-style-speak-as', + dev: '#counter-style-speak-as', + }, + required: { + '*': { + descriptor: 'system: alphabetic; symbols: A B C D; additive-symbols: 1000 M, 500 C', + }, + }, + tests: ['auto', 'bullets', 'numbers', 'words', 'spell-out', 'example-counter'], + }, + }, }; diff --git a/tests/css-display-3.js b/tests/css-display-3.js index 70669829..121203c1 100644 --- a/tests/css-display-3.js +++ b/tests/css-display-3.js @@ -1,28 +1,44 @@ export default { - "title": "CSS Display Module Level 3", - "links": { - "tr": "css-display-3", - "dev": "css-display-3" + title: 'CSS Display Module Level 3', + links: { + tr: 'css-display-3', + dev: 'css-display-3', }, - "status": { - "stability": "stable" + status: { + stability: 'stable', }, - "properties": { - "display": { - "links": { - "tr": "#the-display-properties", - "dev": "#the-display-properties" + properties: { + display: { + links: { + tr: '#the-display-properties', + dev: '#the-display-properties', }, - "tests": [ - "run-in", "flow", "flow-root", - "block flow", "inline flow", "run-in flow", - "block flow-root", "inline flow-root", "run-in flow-root", - "block table", "inline table", "run-in table", - "block flex", "inline flex", "run-in flex", - "block grid", "inline grid", "run-in grid", - "block ruby", "inline ruby", "run-in ruby", - "inline list-item", "list-item inline flow", "list-item block flow" - ] - } - } + tests: [ + 'run-in', + 'flow', + 'flow-root', + 'block flow', + 'inline flow', + 'run-in flow', + 'block flow-root', + 'inline flow-root', + 'run-in flow-root', + 'block table', + 'inline table', + 'run-in table', + 'block flex', + 'inline flex', + 'run-in flex', + 'block grid', + 'inline grid', + 'run-in grid', + 'block ruby', + 'inline ruby', + 'run-in ruby', + 'inline list-item', + 'list-item inline flow', + 'list-item block flow', + ], + }, + }, }; diff --git a/tests/css-easing-1.js b/tests/css-easing-1.js index 24f9fcf0..def6c696 100644 --- a/tests/css-easing-1.js +++ b/tests/css-easing-1.js @@ -1,20 +1,20 @@ export default { - "title": "CSS Easing Functions Level 1", - "links": { - "tr": "css-easing-1", - "dev": "css-easing-1" + title: 'CSS Easing Functions Level 1', + links: { + tr: 'css-easing-1', + dev: 'css-easing-1', }, - "status": { - "stability": "stable", - "first-snapshot": 2020 + status: { + stability: 'stable', + 'first-snapshot': 2020, }, - "properties": { - "transition-timing-function": { - "links": { - "tr": "#easing-functions", - "dev": "#easing-functions" + properties: { + 'transition-timing-function': { + links: { + tr: '#easing-functions', + dev: '#easing-functions', }, - "tests": ["steps(2, jump-start)", "steps(2, jump-end)", "steps(1, jump-both)", "steps(2, jump-none)"] - } - } + tests: ['steps(2, jump-start)', 'steps(2, jump-end)', 'steps(1, jump-both)', 'steps(2, jump-none)'], + }, + }, }; diff --git a/tests/css-env-1.js b/tests/css-env-1.js index 546a81a0..d61fc95c 100644 --- a/tests/css-env-1.js +++ b/tests/css-env-1.js @@ -1,26 +1,27 @@ export default { - "title": "Environment Variables Level 1", - "links": { - "dev": "css-env-1" + title: 'Environment Variables Level 1', + links: { + dev: 'css-env-1', }, - "status": { - "stability": "experimental" + status: { + stability: 'experimental', }, - "values": { - "properties": [ - "width", - "padding" - ], - "env()": { - "links": { - "dev": "#env-function" + values: { + properties: ['width', 'padding'], + 'env()': { + links: { + dev: '#env-function', }, - "tests": [ - "env(safe-area-inset-top)", "env(safe-area-inset-top, 12px)", - "env(safe-area-inset-right)", "env(safe-area-inset-right, 12px)", - "env(safe-area-inset-bottom)", "env(safe-area-inset-bottom, 12px)", - "env(safe-area-inset-left)", "env(safe-area-inset-left, 12px)" - ] - } - } + tests: [ + 'env(safe-area-inset-top)', + 'env(safe-area-inset-top, 12px)', + 'env(safe-area-inset-right)', + 'env(safe-area-inset-right, 12px)', + 'env(safe-area-inset-bottom)', + 'env(safe-area-inset-bottom, 12px)', + 'env(safe-area-inset-left)', + 'env(safe-area-inset-left, 12px)', + ], + }, + }, }; diff --git a/tests/css-exclusions-1.js b/tests/css-exclusions-1.js index 48814373..912cc930 100644 --- a/tests/css-exclusions-1.js +++ b/tests/css-exclusions-1.js @@ -1,26 +1,26 @@ export default { - "title": "CSS Exclusions Module Level 1", - "links": { - "tr": "css3-exclusions", - "dev": "css-exclusions-1" + title: 'CSS Exclusions Module Level 1', + links: { + tr: 'css3-exclusions', + dev: 'css-exclusions-1', }, - "status": { - "stability": "experimental" + status: { + stability: 'experimental', }, - "properties": { - "wrap-flow": { - "links": { - "tr": "#wrap-flow-property", - "dev": "#wrap-flow-property" + properties: { + 'wrap-flow': { + links: { + tr: '#wrap-flow-property', + dev: '#wrap-flow-property', }, - "tests": ["auto", "both", "start", "end", "minimum", "maximum", "clear"] + tests: ['auto', 'both', 'start', 'end', 'minimum', 'maximum', 'clear'], }, - "wrap-through": { - "links": { - "tr": "#wrap-through-property", - "dev": "#wrap-through-property" + 'wrap-through': { + links: { + tr: '#wrap-through-property', + dev: '#wrap-through-property', }, - "tests": ["wrap", "none"] - } - } + tests: ['wrap', 'none'], + }, + }, }; diff --git a/tests/css-flexbox-1.js b/tests/css-flexbox-1.js index 513e2df5..1ca07d4e 100644 --- a/tests/css-flexbox-1.js +++ b/tests/css-flexbox-1.js @@ -1,119 +1,119 @@ export default { - "title": "CSS Flexible Box Layout Module Level 1", - "links": { - "tr": "css-flexbox-1", - "dev": "css-flexbox-1", - "mdn": "Glossary/Flexbox" + title: 'CSS Flexible Box Layout Module Level 1', + links: { + tr: 'css-flexbox-1', + dev: 'css-flexbox-1', + mdn: 'Glossary/Flexbox', }, - "status": { - "stability": "stable", - "first-snapshot": 2018 + status: { + stability: 'stable', + 'first-snapshot': 2018, }, - "properties": { - "align-content": { - "links": { - "tr": "#align-content-property", - "dev": "#align-content-property" + properties: { + 'align-content': { + links: { + tr: '#align-content-property', + dev: '#align-content-property', }, - "tests": ["flex-start", "flex-end", "space-between", "space-around"] + tests: ['flex-start', 'flex-end', 'space-between', 'space-around'], }, - "align-items": { - "links": { - "tr": "#align-items-property", - "dev": "#align-items-property" + 'align-items': { + links: { + tr: '#align-items-property', + dev: '#align-items-property', }, - "tests": ["flex-start", "flex-end"] + tests: ['flex-start', 'flex-end'], }, - "align-self": { - "links": { - "tr": "#align-items-property", - "dev": "#align-items-property" + 'align-self': { + links: { + tr: '#align-items-property', + dev: '#align-items-property', }, - "tests": ["flex-start", "flex-end"] + tests: ['flex-start', 'flex-end'], }, - "display": { - "links": { - "tr": "#flex-containers", - "dev": "#flex-containers" + display: { + links: { + tr: '#flex-containers', + dev: '#flex-containers', }, - "tests": ["flex", "inline-flex"] + tests: ['flex', 'inline-flex'], }, - "flex": { - "links": { - "tr": "#flex-property", - "dev": "#flex-property" + flex: { + links: { + tr: '#flex-property', + dev: '#flex-property', }, - "tests": ["none", "5 7 10%"] + tests: ['none', '5 7 10%'], }, - "flex-basis": { - "links": { - "tr": "#flex-basis-property", - "dev": "#flex-basis-property" + 'flex-basis': { + links: { + tr: '#flex-basis-property', + dev: '#flex-basis-property', }, - "tests": ["auto", "content", "1px"] + tests: ['auto', 'content', '1px'], }, - "flex-direction": { - "links": { - "tr": "#flex-direction-property", - "dev": "#flex-direction-property" + 'flex-direction': { + links: { + tr: '#flex-direction-property', + dev: '#flex-direction-property', }, - "tests": ["row", "row-reverse", "column", "column-reverse"] + tests: ['row', 'row-reverse', 'column', 'column-reverse'], }, - "flex-flow": { - "links": { - "tr": "#flex-flow-property", - "dev": "#flex-flow-property" + 'flex-flow': { + links: { + tr: '#flex-flow-property', + dev: '#flex-flow-property', }, - "tests": ["row", "row-reverse", "column", "column-reverse", "wrap", "wrap-reverse"] + tests: ['row', 'row-reverse', 'column', 'column-reverse', 'wrap', 'wrap-reverse'], }, - "flex-grow": { - "links": { - "tr": "#flex-grow-property", - "dev": "#flex-grow-property" + 'flex-grow': { + links: { + tr: '#flex-grow-property', + dev: '#flex-grow-property', }, - "tests": ["0", "5"] + tests: ['0', '5'], }, - "flex-shrink": { - "links": { - "tr": "#flex-shrink-property", - "dev": "#flex-shrink-property" + 'flex-shrink': { + links: { + tr: '#flex-shrink-property', + dev: '#flex-shrink-property', }, - "tests": ["1", "10"] + tests: ['1', '10'], }, - "flex-wrap": { - "links": { - "tr": "#flex-wrap-property", - "dev": "#flex-wrap-property" + 'flex-wrap': { + links: { + tr: '#flex-wrap-property', + dev: '#flex-wrap-property', }, - "tests": ["nowrap", "wrap", "wrap-reverse"] + tests: ['nowrap', 'wrap', 'wrap-reverse'], }, - "justify-content": { - "links": { - "tr": "#justify-content-property", - "dev": "#justify-content-property" + 'justify-content': { + links: { + tr: '#justify-content-property', + dev: '#justify-content-property', }, - "tests": ["flex-start", "flex-end", "space-between", "space-around"] + tests: ['flex-start', 'flex-end', 'space-between', 'space-around'], }, - "min-height": { - "links": { - "tr": "#min-size-auto", - "dev": "#min-size-auto" + 'min-height': { + links: { + tr: '#min-size-auto', + dev: '#min-size-auto', }, - "tests": ["auto"] + tests: ['auto'], }, - "min-width": { - "links": { - "tr": "#min-size-auto", - "dev": "#min-size-auto" + 'min-width': { + links: { + tr: '#min-size-auto', + dev: '#min-size-auto', }, - "tests": ["auto"] + tests: ['auto'], }, - "order": { - "links": { - "tr": "#order-property", - "dev": "#order-property" + order: { + links: { + tr: '#order-property', + dev: '#order-property', }, - "tests": ["0", "1"] - } - } + tests: ['0', '1'], + }, + }, }; diff --git a/tests/css-fonts-3.js b/tests/css-fonts-3.js index 3ba68909..009b603c 100644 --- a/tests/css-fonts-3.js +++ b/tests/css-fonts-3.js @@ -1,184 +1,220 @@ export default { - "title": "CSS Fonts Module Level 3", - "links": { - "tr": "css-fonts-3", - "dev": "css-fonts-3" + title: 'CSS Fonts Module Level 3', + links: { + tr: 'css-fonts-3', + dev: 'css-fonts-3', }, - "status": { - "stability": "stable", - "first-snapshot": 2015 + status: { + stability: 'stable', + 'first-snapshot': 2015, }, - "properties": { - "font-stretch": { - "links": { - "tr": "#font-stretch-prop", - "dev": "#font-stretch-prop" - }, - "tests": [ - "normal", "ultra-condensed", "extra-condensed", "condensed", "semi-condensed", "semi-expanded", - "expanded", "extra-expanded", "ultra-expanded" - ] - }, - "font-size-adjust": { - "links": { - "tr": "#font-size-adjust-prop", - "dev": "#font-size-adjust-prop" - }, - "tests": ["none", ".5"] - }, - "font-synthesis": { - "links": { - "tr": "#font-synthesis-prop", - "dev": "#font-synthesis-prop" - }, - "tests": ["none", "weight", "style", "weight style", "style weight"] - }, - "font-kerning": { - "links": { - "tr": "#font-kerning-prop", - "dev": "#font-kerning-prop" - }, - "tests": ["auto", "normal", "none"] - }, - "font-variant-position": { - "links": { - "tr": "#font-variant-position-prop", - "dev": "#font-variant-position-prop" - }, - "tests": ["normal", "sub", "super"] - }, - "font-variant-ligatures": { - "links": { - "tr": "#font-variant-ligatures-prop", - "dev": "#font-variant-ligatures-prop" - }, - "tests": [ - "normal", "none", - "common-ligatures", "no-common-ligatures", - "discretionary-ligatures", "no-discretionary-ligatures", - "historical-ligatures", "no-historical-ligatures", - "contextual", "no-contextual", - "common-ligatures discretionary-ligatures historical-ligatures contextual" - ] - }, - "font-variant-caps": { - "links": { - "tr": "#font-variant-caps-prop", - "dev": "#font-variant-caps-prop" - }, - "tests": [ - "normal", "small-caps", "all-small-caps", "petite-caps", "all-petite-caps", "titling-caps", "unicase" - ] - }, - "font-variant-numeric": { - "links": { - "tr": "#font-variant-numeric-prop", - "dev": "#font-variant-numeric-prop" - }, - "tests": [ - "normal", - "lining-nums", "oldstyle-nums", - "proportional-nums", "tabular-nums", - "diagonal-fractions", "stacked-fractions", - "ordinal", "slashed-zero", - "lining-nums proportional-nums diagonal-fractions", - "oldstyle-nums tabular-nums stacked-fractions ordinal slashed-zero", - "slashed-zero ordinal tabular-nums stacked-fractions oldstyle-nums" - ] - }, - "font-variant-east-asian": { - "links": { - "tr": "#font-variant-east-asian-prop", - "dev": "#font-variant-east-asian-prop" - }, - "tests": [ - "normal", - "jis78", "jis83", "jis90", "jis04", "simplified", "traditional", - "full-width", "proportional-width", - "ruby", "simplified full-width ruby" - ] + properties: { + 'font-stretch': { + links: { + tr: '#font-stretch-prop', + dev: '#font-stretch-prop', + }, + tests: [ + 'normal', + 'ultra-condensed', + 'extra-condensed', + 'condensed', + 'semi-condensed', + 'semi-expanded', + 'expanded', + 'extra-expanded', + 'ultra-expanded', + ], + }, + 'font-size-adjust': { + links: { + tr: '#font-size-adjust-prop', + dev: '#font-size-adjust-prop', + }, + tests: ['none', '.5'], + }, + 'font-synthesis': { + links: { + tr: '#font-synthesis-prop', + dev: '#font-synthesis-prop', + }, + tests: ['none', 'weight', 'style', 'weight style', 'style weight'], + }, + 'font-kerning': { + links: { + tr: '#font-kerning-prop', + dev: '#font-kerning-prop', + }, + tests: ['auto', 'normal', 'none'], + }, + 'font-variant-position': { + links: { + tr: '#font-variant-position-prop', + dev: '#font-variant-position-prop', + }, + tests: ['normal', 'sub', 'super'], + }, + 'font-variant-ligatures': { + links: { + tr: '#font-variant-ligatures-prop', + dev: '#font-variant-ligatures-prop', + }, + tests: [ + 'normal', + 'none', + 'common-ligatures', + 'no-common-ligatures', + 'discretionary-ligatures', + 'no-discretionary-ligatures', + 'historical-ligatures', + 'no-historical-ligatures', + 'contextual', + 'no-contextual', + 'common-ligatures discretionary-ligatures historical-ligatures contextual', + ], + }, + 'font-variant-caps': { + links: { + tr: '#font-variant-caps-prop', + dev: '#font-variant-caps-prop', + }, + tests: [ + 'normal', + 'small-caps', + 'all-small-caps', + 'petite-caps', + 'all-petite-caps', + 'titling-caps', + 'unicase', + ], + }, + 'font-variant-numeric': { + links: { + tr: '#font-variant-numeric-prop', + dev: '#font-variant-numeric-prop', + }, + tests: [ + 'normal', + 'lining-nums', + 'oldstyle-nums', + 'proportional-nums', + 'tabular-nums', + 'diagonal-fractions', + 'stacked-fractions', + 'ordinal', + 'slashed-zero', + 'lining-nums proportional-nums diagonal-fractions', + 'oldstyle-nums tabular-nums stacked-fractions ordinal slashed-zero', + 'slashed-zero ordinal tabular-nums stacked-fractions oldstyle-nums', + ], + }, + 'font-variant-east-asian': { + links: { + tr: '#font-variant-east-asian-prop', + dev: '#font-variant-east-asian-prop', + }, + tests: [ + 'normal', + 'jis78', + 'jis83', + 'jis90', + 'jis04', + 'simplified', + 'traditional', + 'full-width', + 'proportional-width', + 'ruby', + 'simplified full-width ruby', + ], }, - "font-feature-settings": { - "links": { - "tr": "#font-feature-settings-prop", - "dev": "#font-feature-settings-prop" + 'font-feature-settings': { + links: { + tr: '#font-feature-settings-prop', + dev: '#font-feature-settings-prop', }, - "tests": ["normal", "'c2sc'", "'smcp' on", "'liga' off", "'smcp', 'swsh' 2"] - } + tests: ['normal', "'c2sc'", "'smcp' on", "'liga' off", "'smcp', 'swsh' 2"], + }, + }, + descriptors: { + '@font-face/src': { + links: { + tr: '#descdef-src', + dev: '#descdef-src', + }, + tests: [ + 'url(http://example.com/fonts/Gentium.woff)', + 'url(ideal-sans-serif.woff2) format("woff2"), url(good-sans-serif.woff) format("woff"), url(basic-sans-serif.ttf) format("opentype")', + 'local(Gentium), url(Gentium.woff)', + ], + }, + '@font-face/font-family': { + links: { + tr: '#descdef-font-family', + dev: '#descdef-font-family', + }, + tests: ['Gentium'], + }, + '@font-face/font-style': { + links: { + tr: '#font-prop-desc', + dev: '#font-prop-desc', + }, + tests: ['normal', 'italic', 'oblique '], + }, + '@font-face/font-weight': { + links: { + tr: '#font-prop-desc', + dev: '#font-prop-desc', + }, + tests: ['normal', 'bold', '100', '200', '300', '400', '500', '600', '700', '800', '900'], + }, + '@font-face/font-stretch': { + links: { + tr: '#font-prop-desc', + dev: '#font-prop-desc', + }, + tests: [ + 'normal', + 'ultra-condensed', + 'extra-condensed', + 'condensed', + 'semi-condensed', + 'semi-expanded', + 'expanded', + 'extra-expanded', + 'ultra-expanded ', + ], + }, + '@font-face/font-feature-settings': { + links: { + tr: '#font-rend-desc', + dev: '#font-rend-desc', + }, + tests: ['normal', "'c2sc'", "'smcp' on", "'liga' off", "'smcp', 'swsh' 2"], + }, + '@font-face/font-variation-settings': { + links: { + tr: '#font-rend-desc', + dev: '#font-rend-desc', + }, + tests: ['normal', "'swsh' 2"], + }, + '@font-face/unicode-range': { + links: { + tr: '#unicode-range-desc', + dev: '#unicode-range-desc', + }, + tests: ['U+416', 'U+0-7F', 'U+A5, U+4E00-9FFF', 'U+30??'], + }, }, - "descriptors": { - "@font-face/src": { - "links": { - "tr": "#descdef-src", - "dev": "#descdef-src" - }, - "tests": [ - "url(http://example.com/fonts/Gentium.woff)", - "url(ideal-sans-serif.woff2) format(\"woff2\"), url(good-sans-serif.woff) format(\"woff\"), url(basic-sans-serif.ttf) format(\"opentype\")", - "local(Gentium), url(Gentium.woff)" - ] - }, - "@font-face/font-family": { - "links": { - "tr": "#descdef-font-family", - "dev": "#descdef-font-family" - }, - "tests": ["Gentium"] - }, - "@font-face/font-style": { - "links": { - "tr": "#font-prop-desc", - "dev": "#font-prop-desc" - }, - "tests": ["normal", "italic", "oblique "] - }, - "@font-face/font-weight": { - "links": { - "tr": "#font-prop-desc", - "dev": "#font-prop-desc" - }, - "tests": ["normal", "bold", "100", "200", "300", "400", "500", "600", "700", "800", "900"] - }, - "@font-face/font-stretch": { - "links": { - "tr": "#font-prop-desc", - "dev": "#font-prop-desc" - }, - "tests": [ - "normal", "ultra-condensed", "extra-condensed", "condensed", "semi-condensed", "semi-expanded", - "expanded", "extra-expanded", "ultra-expanded " - ] - }, - "@font-face/font-feature-settings": { - "links": { - "tr": "#font-rend-desc", - "dev": "#font-rend-desc" - }, - "tests": ["normal", "'c2sc'", "'smcp' on", "'liga' off", "'smcp', 'swsh' 2"] - }, - "@font-face/font-variation-settings": { - "links": { - "tr": "#font-rend-desc", - "dev": "#font-rend-desc" - }, - "tests": ["normal", "'swsh' 2"] - }, - "@font-face/unicode-range": { - "links": { - "tr": "#unicode-range-desc", - "dev": "#unicode-range-desc" - }, - "tests": ["U+416", "U+0-7F", "U+A5, U+4E00-9FFF", "U+30??"] - } + '@rules': { + '@font-face': { + links: { + tr: '#font-face-rule', + dev: '#font-face-rule', + }, + tests: "@font-face {\n font-family: foo;\n src: local('Arial');\n}", + }, }, - "@rules": { - "@font-face": { - "links": { - "tr": "#font-face-rule", - "dev": "#font-face-rule" - }, - "tests": "@font-face {\n font-family: foo;\n src: local('Arial');\n}" - } - } }; diff --git a/tests/css-fonts-4.js b/tests/css-fonts-4.js index b9fba846..1138f8a3 100644 --- a/tests/css-fonts-4.js +++ b/tests/css-fonts-4.js @@ -1,145 +1,153 @@ export default { - "title": "CSS Fonts Module Level 4", - "links": { - "tr": "css-fonts-4", - "dev": "css-fonts-4" + title: 'CSS Fonts Module Level 4', + links: { + tr: 'css-fonts-4', + dev: 'css-fonts-4', }, - "status": { - "stability": "stable" + status: { + stability: 'stable', }, - "properties": { - "font-size": { - "links": { - "tr": "#font-size-prop", - "dev": "#font-size-prop" - }, - "tests": ["xxx-large"] - }, - "font-variant": { - "links": { - "tr": "#font-variant-prop", - "dev": "#font-variant-prop" - }, - "tests": [ - "none", "all-petite-caps", "historical-forms", "super", - "sub lining-nums contextual ruby", - "annotation(circled)", - "discretionary-ligatures character-variant(leo-B, leo-M, leo-N, leo-T, leo-U)" - ] - }, - "font-variant-alternates": { - "links": { - "tr": "#font-variant-alternates-prop", - "dev": "#font-variant-alternates-prop" - }, - "tests": [ - "normal", "historical-forms", - "styleset(ss01)", "styleset(stacked-g, geometric-m)", - "character-variant(cv02)", "character-variant(beta-3, gamma)", - "swash(flowing)", "ornaments(leaves)", "annotation(blocky)" - ] - }, - "font-feature-settings": { - "links": { - "tr": "#font-feature-settings-prop", - "dev": "#font-feature-settings-prop" - }, - "tests": ["normal", "'swsh' 2"] - }, - "font-language-override": { - "links": { - "tr": "#font-language-override", - "dev": "#font-language-override" - }, - "tests": ["normal", "'SRB'"] - }, - "font-weight": { - "links": { - "tr": "#font-weight-prop", - "dev": "#font-weight-prop" - }, - "tests": ["1", "90", "750", "1000"] - }, - "font-style": { - "links": { - "tr": "#font-style-prop", - "dev": "#font-style-prop" - }, - "tests": ["oblique 15deg", "oblique -15deg", "oblique 0deg"] - }, - "font-optical-sizing": { - "links": { - "tr": "#font-optical-sizing-def", - "dev": "#font-optical-sizing-def" - }, - "tests": ["none", "auto"] - }, - "font-palette": { - "links": { - "tr": "#font-palette-prop", - "dev": "#font-palette-prop" - }, - "tests": ["normal", "light", "dark"] - } + properties: { + 'font-size': { + links: { + tr: '#font-size-prop', + dev: '#font-size-prop', + }, + tests: ['xxx-large'], + }, + 'font-variant': { + links: { + tr: '#font-variant-prop', + dev: '#font-variant-prop', + }, + tests: [ + 'none', + 'all-petite-caps', + 'historical-forms', + 'super', + 'sub lining-nums contextual ruby', + 'annotation(circled)', + 'discretionary-ligatures character-variant(leo-B, leo-M, leo-N, leo-T, leo-U)', + ], + }, + 'font-variant-alternates': { + links: { + tr: '#font-variant-alternates-prop', + dev: '#font-variant-alternates-prop', + }, + tests: [ + 'normal', + 'historical-forms', + 'styleset(ss01)', + 'styleset(stacked-g, geometric-m)', + 'character-variant(cv02)', + 'character-variant(beta-3, gamma)', + 'swash(flowing)', + 'ornaments(leaves)', + 'annotation(blocky)', + ], + }, + 'font-feature-settings': { + links: { + tr: '#font-feature-settings-prop', + dev: '#font-feature-settings-prop', + }, + tests: ['normal', "'swsh' 2"], + }, + 'font-language-override': { + links: { + tr: '#font-language-override', + dev: '#font-language-override', + }, + tests: ['normal', "'SRB'"], + }, + 'font-weight': { + links: { + tr: '#font-weight-prop', + dev: '#font-weight-prop', + }, + tests: ['1', '90', '750', '1000'], + }, + 'font-style': { + links: { + tr: '#font-style-prop', + dev: '#font-style-prop', + }, + tests: ['oblique 15deg', 'oblique -15deg', 'oblique 0deg'], + }, + 'font-optical-sizing': { + links: { + tr: '#font-optical-sizing-def', + dev: '#font-optical-sizing-def', + }, + tests: ['none', 'auto'], + }, + 'font-palette': { + links: { + tr: '#font-palette-prop', + dev: '#font-palette-prop', + }, + tests: ['normal', 'light', 'dark'], + }, }, - "@rules": { - "@font-feature-values": { - "links": { - "tr": "#font-feature-values", - "dev": "#font-feature-values" + '@rules': { + '@font-feature-values': { + links: { + tr: '#font-feature-values', + dev: '#font-feature-values', }, - "tests": "@font-feature-values Jupiter Sans {\n @styleset {\n some-style: 1;\n }\n}" + tests: '@font-feature-values Jupiter Sans {\n @styleset {\n some-style: 1;\n }\n}', }, - "@font-palette-values": { - "links": { - "tr": "#font-palette-values", - "dev": "#font-palette-values" + '@font-palette-values': { + links: { + tr: '#font-palette-values', + dev: '#font-palette-values', }, - "tests": "@font-palette-values Augusta {\n font-family: Handover Sans;\n base-palette: 3;\n}" + tests: '@font-palette-values Augusta {\n font-family: Handover Sans;\n base-palette: 3;\n}', }, }, - "descriptors": { - "@font-face/ascent-override": { - "links": { - "tr": "#descdef-font-face-ascent-override", - "dev": "#descdef-font-face-ascent-override" + descriptors: { + '@font-face/ascent-override': { + links: { + tr: '#descdef-font-face-ascent-override', + dev: '#descdef-font-face-ascent-override', }, - "tests": ["normal", "125%"] + tests: ['normal', '125%'], }, - "@font-face/descent-override": { - "links": { - "tr": "#descdef-font-face-descent-override", - "dev": "#descdef-font-face-descent-override" + '@font-face/descent-override': { + links: { + tr: '#descdef-font-face-descent-override', + dev: '#descdef-font-face-descent-override', }, - "tests": ["normal", "125%"] + tests: ['normal', '125%'], }, - "@font-face/line-gap-override": { - "links": { - "tr": "#descdef-font-face-line-gap-override", - "dev": "#descdef-font-face-line-gap-override" + '@font-face/line-gap-override': { + links: { + tr: '#descdef-font-face-line-gap-override', + dev: '#descdef-font-face-line-gap-override', }, - "tests": ["normal", "90%"] + tests: ['normal', '90%'], }, - "@font-face/font-named-instance": { - "links": { - "tr": "#font-named-instance", - "dev": "#font-named-instance" + '@font-face/font-named-instance': { + links: { + tr: '#font-named-instance', + dev: '#font-named-instance', }, - "tests": ["auto", "'Grotesque'"] + tests: ['auto', "'Grotesque'"], }, - "@font-face/font-display": { - "links": { - "tr": "#descdef-font-face-font-display", - "dev": "#descdef-font-face-font-display" + '@font-face/font-display': { + links: { + tr: '#descdef-font-face-font-display', + dev: '#descdef-font-face-font-display', }, - "tests": ["auto", "block", "swap", "fallback", "optional"] + tests: ['auto', 'block', 'swap', 'fallback', 'optional'], }, - "@font-feature-values/font-display": { - "links": { - "tr": "#font-display-font-feature-values", - "dev": "#font-display-font-feature-values" + '@font-feature-values/font-display': { + links: { + tr: '#font-display-font-feature-values', + dev: '#font-display-font-feature-values', }, - "tests": ["auto", "block", "swap", "fallback", "optional"] - } - } + tests: ['auto', 'block', 'swap', 'fallback', 'optional'], + }, + }, }; diff --git a/tests/css-fonts-5.js b/tests/css-fonts-5.js index 9cc171c0..5ac5ba19 100644 --- a/tests/css-fonts-5.js +++ b/tests/css-fonts-5.js @@ -1,31 +1,36 @@ export default { - "title": "CSS Fonts Module Level 5", - "links": { - "dev": "css-fonts-5" + title: 'CSS Fonts Module Level 5', + links: { + dev: 'css-fonts-5', }, - "status": { - "stability": "experimental" + status: { + stability: 'experimental', }, - "properties": { - "font-size-adjust": { - "links": { - "dev": "#font-size-adjust-prop" + properties: { + 'font-size-adjust': { + links: { + dev: '#font-size-adjust-prop', }, - "tests": [ - "ex-height 0.545", "ex-height from-font", - "cap-height 0.545", "cap-height from-font", - "ch-width 0.545", "ch-width from-font", - "ic-width 0.545", "ic-width from-font", - "ic-height 0.545", "ic-height from-font" - ] + tests: [ + 'ex-height 0.545', + 'ex-height from-font', + 'cap-height 0.545', + 'cap-height from-font', + 'ch-width 0.545', + 'ch-width from-font', + 'ic-width 0.545', + 'ic-width from-font', + 'ic-height 0.545', + 'ic-height from-font', + ], }, }, - "descriptors": { - "@font-face/size-adjust": { - "links": { - "dev": "#size-adjust-desc" + descriptors: { + '@font-face/size-adjust': { + links: { + dev: '#size-adjust-desc', }, - "tests": ["100%"] + tests: ['100%'], }, - } + }, }; diff --git a/tests/css-grid-1.js b/tests/css-grid-1.js index 14ba227e..3c7f7fef 100644 --- a/tests/css-grid-1.js +++ b/tests/css-grid-1.js @@ -1,175 +1,200 @@ export default { - "title": "CSS Grid Layout Module Level 1", - "links": { - "tr": "css-grid-1", - "dev": "css-grid-1", - "mdn": "Glossary/Grid" + title: 'CSS Grid Layout Module Level 1', + links: { + tr: 'css-grid-1', + dev: 'css-grid-1', + mdn: 'Glossary/Grid', }, - "status": { - "stability": "stable" + status: { + stability: 'stable', }, - "properties": { - "display": { - "links": { - "tr": "#grid-containers", - "dev": "#grid-containers" - }, - "tests": ["grid", "inline-grid"] - }, - "grid-template-columns": { - "links": { - "tr": "#track-sizing", - "dev": "#track-sizing" - }, - "tests": [ - "none", "auto", "100px", "1fr", "100px 1fr auto", - "repeat(2, 100px 1fr)", - "repeat(4, 10px [col-start] 250px [col-end]) 10px", - "100px 1fr max-content minmax(min-content, 1fr)", - "repeat(auto-fill, minmax(25ch, 1fr))", - "10px [col-start] 250px [col-end]", - "[first nav-start] 150px [main-start] 1fr [last]", - "10px [col-start] 250px [col-end] 10px [col-start] 250px [col-end] 10px", - "[a] auto [b] minmax(min-content, 1fr) [b c d] repeat(2, [e] 40px) repeat(5, auto)" - ] - }, - "grid-template-rows": { - "links": { - "tr": "#track-sizing", - "dev": "#track-sizing" - }, - "tests": [ - "none", "auto", "100px", "1fr", "100px 1fr auto", - "repeat(2, 100px 1fr)", - "100px 1fr max-content minmax(min-content, 1fr)", - "10px [row-start] 250px [row-end]", - "[first header-start] 50px [main-start] 1fr [footer-start] 50px [last]" - ] - }, - "grid-template-areas": { - "links": { - "tr": "#grid-template-areas-property", - "dev": "#grid-template-areas-property" - }, - "tests": ["none", "'articles'", "'head head'", "'head head' 'nav main' 'foot ....'"] - }, - "grid-template": { - "links": { - "tr": "#explicit-grid-shorthand", - "dev": "#explicit-grid-shorthand" - }, - "tests": ["none", "auto 1fr auto / auto 1fr", "[header-top] 'a a a' [header-bottom] [main-top] 'b b b' 1fr [main-bottom] / auto 1fr auto"] - }, - "grid-auto-columns": { - "links": { - "tr": "#auto-tracks", - "dev": "#auto-tracks" - }, - "tests": [ - "auto", "1fr", "100px", "max-content", "minmax(min-content, 1fr)", "min-content max-content auto", - "100px 150px 390px", "100px minmax(100px, auto) 10% 0.5fr fit-content(400px)" - ] - }, - "grid-auto-rows": { - "links": { - "tr": "#auto-tracks", - "dev": "#auto-tracks" - }, - "tests": [ - "auto", "1fr", "100px", "100px 30%", "100px 30% 1em", "min-content", "minmax(min-content, 1fr)", - "min-content max-content auto", "100px minmax(100px, auto) 10% 0.5fr fit-content(400px)" - ] - }, - "grid-auto-flow": { - "links": { - "tr": "#grid-auto-flow-property", - "dev": "#grid-auto-flow-property" - }, - "tests": ["row", "column", "row dense", "column dense"] - }, - "grid": { - "links": { - "tr": "#grid-shorthand", - "dev": "#grid-shorthand" - }, - "tests": [ - "auto-flow 1fr / 100px", - "none / auto-flow 1fr", - "auto-flow / auto 1fr", - "repeat(auto-fill, 5em) / auto-flow 1fr", - " auto-flow 1fr / repeat(auto-fill, 5em)", - "'H H ' 'A B ' 'F F ' 30px / auto 1fr" - ] - }, - "grid-row-start": { - "links": { - "tr": "#line-placement", - "dev": "#line-placement" - }, - "tests": ["auto", "4", "C", "C 2", "span C", "span 1"] - }, - "grid-column-start": { - "links": { - "tr": "#line-placement", - "dev": "#line-placement" - }, - "tests": ["auto", "4", "C", "C 2", "span C", "span 1"] - }, - "grid-row-end": { - "links": { - "tr": "#line-placement", - "dev": "#line-placement" - }, - "tests": ["auto", "4", "C", "C 2", "span C", "span 1"] - }, - "grid-column-end": { - "links": { - "tr": "#line-placement", - "dev": "#line-placement" - }, - "tests": ["auto", "4", "C", "C 2", "span C", "span 1"] - }, - "grid-column": { - "links": { - "tr": "#placement-shorthands", - "dev": "#placement-shorthands" - }, - "tests": ["auto", "1", "-1", "1 / 1", "1 / -1", "auto / auto", "2 / span 2"] - }, - "grid-row": { - "links": { - "tr": "#placement-shorthands", - "dev": "#placement-shorthands" - }, - "tests": ["auto", "1", "-1", "1 / 1", "1 / -1", "auto / auto", "2 / span 2"] - }, - "grid-area": { - "links": { - "tr": "#placement-shorthands", - "dev": "#placement-shorthands" - }, - "tests": ["1 / 1", "1 / span 1", "span / 10 / -1"] - }, - "grid-column-gap": { - "links": { - "tr": "#gutters", - "dev": "#gutters" + properties: { + display: { + links: { + tr: '#grid-containers', + dev: '#grid-containers', + }, + tests: ['grid', 'inline-grid'], + }, + 'grid-template-columns': { + links: { + tr: '#track-sizing', + dev: '#track-sizing', + }, + tests: [ + 'none', + 'auto', + '100px', + '1fr', + '100px 1fr auto', + 'repeat(2, 100px 1fr)', + 'repeat(4, 10px [col-start] 250px [col-end]) 10px', + '100px 1fr max-content minmax(min-content, 1fr)', + 'repeat(auto-fill, minmax(25ch, 1fr))', + '10px [col-start] 250px [col-end]', + '[first nav-start] 150px [main-start] 1fr [last]', + '10px [col-start] 250px [col-end] 10px [col-start] 250px [col-end] 10px', + '[a] auto [b] minmax(min-content, 1fr) [b c d] repeat(2, [e] 40px) repeat(5, auto)', + ], + }, + 'grid-template-rows': { + links: { + tr: '#track-sizing', + dev: '#track-sizing', + }, + tests: [ + 'none', + 'auto', + '100px', + '1fr', + '100px 1fr auto', + 'repeat(2, 100px 1fr)', + '100px 1fr max-content minmax(min-content, 1fr)', + '10px [row-start] 250px [row-end]', + '[first header-start] 50px [main-start] 1fr [footer-start] 50px [last]', + ], + }, + 'grid-template-areas': { + links: { + tr: '#grid-template-areas-property', + dev: '#grid-template-areas-property', + }, + tests: ['none', "'articles'", "'head head'", "'head head' 'nav main' 'foot ....'"], + }, + 'grid-template': { + links: { + tr: '#explicit-grid-shorthand', + dev: '#explicit-grid-shorthand', + }, + tests: [ + 'none', + 'auto 1fr auto / auto 1fr', + "[header-top] 'a a a' [header-bottom] [main-top] 'b b b' 1fr [main-bottom] / auto 1fr auto", + ], + }, + 'grid-auto-columns': { + links: { + tr: '#auto-tracks', + dev: '#auto-tracks', + }, + tests: [ + 'auto', + '1fr', + '100px', + 'max-content', + 'minmax(min-content, 1fr)', + 'min-content max-content auto', + '100px 150px 390px', + '100px minmax(100px, auto) 10% 0.5fr fit-content(400px)', + ], + }, + 'grid-auto-rows': { + links: { + tr: '#auto-tracks', + dev: '#auto-tracks', + }, + tests: [ + 'auto', + '1fr', + '100px', + '100px 30%', + '100px 30% 1em', + 'min-content', + 'minmax(min-content, 1fr)', + 'min-content max-content auto', + '100px minmax(100px, auto) 10% 0.5fr fit-content(400px)', + ], + }, + 'grid-auto-flow': { + links: { + tr: '#grid-auto-flow-property', + dev: '#grid-auto-flow-property', + }, + tests: ['row', 'column', 'row dense', 'column dense'], + }, + grid: { + links: { + tr: '#grid-shorthand', + dev: '#grid-shorthand', + }, + tests: [ + 'auto-flow 1fr / 100px', + 'none / auto-flow 1fr', + 'auto-flow / auto 1fr', + 'repeat(auto-fill, 5em) / auto-flow 1fr', + ' auto-flow 1fr / repeat(auto-fill, 5em)', + "'H H ' 'A B ' 'F F ' 30px / auto 1fr", + ], + }, + 'grid-row-start': { + links: { + tr: '#line-placement', + dev: '#line-placement', + }, + tests: ['auto', '4', 'C', 'C 2', 'span C', 'span 1'], + }, + 'grid-column-start': { + links: { + tr: '#line-placement', + dev: '#line-placement', + }, + tests: ['auto', '4', 'C', 'C 2', 'span C', 'span 1'], + }, + 'grid-row-end': { + links: { + tr: '#line-placement', + dev: '#line-placement', + }, + tests: ['auto', '4', 'C', 'C 2', 'span C', 'span 1'], + }, + 'grid-column-end': { + links: { + tr: '#line-placement', + dev: '#line-placement', + }, + tests: ['auto', '4', 'C', 'C 2', 'span C', 'span 1'], + }, + 'grid-column': { + links: { + tr: '#placement-shorthands', + dev: '#placement-shorthands', + }, + tests: ['auto', '1', '-1', '1 / 1', '1 / -1', 'auto / auto', '2 / span 2'], + }, + 'grid-row': { + links: { + tr: '#placement-shorthands', + dev: '#placement-shorthands', + }, + tests: ['auto', '1', '-1', '1 / 1', '1 / -1', 'auto / auto', '2 / span 2'], + }, + 'grid-area': { + links: { + tr: '#placement-shorthands', + dev: '#placement-shorthands', + }, + tests: ['1 / 1', '1 / span 1', 'span / 10 / -1'], + }, + 'grid-column-gap': { + links: { + tr: '#gutters', + dev: '#gutters', + }, + tests: ['0', '1em'], + }, + 'grid-row-gap': { + links: { + tr: '#gutters', + dev: '#gutters', }, - "tests": ["0", "1em"] - }, - "grid-row-gap": { - "links": { - "tr": "#gutters", - "dev": "#gutters" + tests: ['0', '1em'], + }, + 'grid-gap': { + links: { + tr: '#gutters', + dev: '#gutters', }, - "tests": ["0", "1em"] + tests: ['0 0', '0 1em', '1em', '1em 1em'], }, - "grid-gap": { - "links": { - "tr": "#gutters", - "dev": "#gutters" - }, - "tests": ["0 0", "0 1em", "1em", "1em 1em"] - } - } + }, }; diff --git a/tests/css-grid-2.js b/tests/css-grid-2.js index 0e0c884c..c69e8276 100644 --- a/tests/css-grid-2.js +++ b/tests/css-grid-2.js @@ -1,43 +1,43 @@ export default { - "title": "CSS Grid Layout Module Level 2", - "links": { - "tr": "css-grid-2", - "dev": "css-grid-2", - "mdn": "Glossary/Grid" + title: 'CSS Grid Layout Module Level 2', + links: { + tr: 'css-grid-2', + dev: 'css-grid-2', + mdn: 'Glossary/Grid', }, - "status": { - "stability": "stable" + status: { + stability: 'stable', }, - "properties": { - "grid-template-columns": { - "links": { - "tr": "#subgrid-per-axis", - "dev": "#subgrid-per-axis" + properties: { + 'grid-template-columns': { + links: { + tr: '#subgrid-per-axis', + dev: '#subgrid-per-axis', }, - "tests": [ - "subgrid", - "subgrid [sub-a]", - "subgrid [sub-a] [sub-b]", - "subgrid repeat(1, [sub-a])", - "subgrid repeat(2, [sub-a] [sub-b]) [sub-c]", - "subgrid repeat(auto-fill, [sub-a] [sub-b])", - "subgrid [sub-a] repeat(auto-fill, [sub-b] [sub-c] [sub-d]) [sub-e] repeat(1, [sub-g])" - ] + tests: [ + 'subgrid', + 'subgrid [sub-a]', + 'subgrid [sub-a] [sub-b]', + 'subgrid repeat(1, [sub-a])', + 'subgrid repeat(2, [sub-a] [sub-b]) [sub-c]', + 'subgrid repeat(auto-fill, [sub-a] [sub-b])', + 'subgrid [sub-a] repeat(auto-fill, [sub-b] [sub-c] [sub-d]) [sub-e] repeat(1, [sub-g])', + ], }, - "grid-template-rows": { - "links": { - "tr": "#subgrid-per-axis", - "dev": "#subgrid-per-axis" + 'grid-template-rows': { + links: { + tr: '#subgrid-per-axis', + dev: '#subgrid-per-axis', }, - "tests": [ - "subgrid", - "subgrid [sub-a]", - "subgrid [sub-a] [sub-b]", - "subgrid repeat(1, [sub-a])", - "subgrid repeat(2, [sub-a] [sub-b]) [sub-c]", - "subgrid repeat(auto-fill, [sub-a] [sub-b])", - "subgrid [sub-a] repeat(auto-fill, [sub-b] [sub-c] [sub-d]) [sub-e] repeat(1, [sub-g])" - ] - } - } + tests: [ + 'subgrid', + 'subgrid [sub-a]', + 'subgrid [sub-a] [sub-b]', + 'subgrid repeat(1, [sub-a])', + 'subgrid repeat(2, [sub-a] [sub-b]) [sub-c]', + 'subgrid repeat(auto-fill, [sub-a] [sub-b])', + 'subgrid [sub-a] repeat(auto-fill, [sub-b] [sub-c] [sub-d]) [sub-e] repeat(1, [sub-g])', + ], + }, + }, }; diff --git a/tests/css-grid-3.js b/tests/css-grid-3.js index ffe6fc02..f722cdb2 100644 --- a/tests/css-grid-3.js +++ b/tests/css-grid-3.js @@ -1,56 +1,82 @@ export default { - "title": "CSS Grid Layout Module Level 3", - "links": { - "dev": "css-grid-3", + title: 'CSS Grid Layout Module Level 3', + links: { + dev: 'css-grid-3', }, - "status": { - "stability": "experimental" + status: { + stability: 'experimental', }, - "properties": { - "grid-template-columns": { - "links": { - "dev": "#masonry-layout" + properties: { + 'grid-template-columns': { + links: { + dev: '#masonry-layout', }, - "tests": ["masonry"] + tests: ['masonry'], }, - "grid-template-rows": { - "links": { - "dev": "#masonry-layout" + 'grid-template-rows': { + links: { + dev: '#masonry-layout', }, - "tests": ["masonry "] + tests: ['masonry '], }, - "masonry-auto-flow": { - "links": { - "dev": "#masonry-auto-flow" + 'masonry-auto-flow': { + links: { + dev: '#masonry-auto-flow', }, - "tests": [ - "pack", "next", "definite-first", "ordered", - "pack definite-first", "pack ordered", "next definite-first", "next ordered", - "ordered pack", - ] + tests: [ + 'pack', + 'next', + 'definite-first', + 'ordered', + 'pack definite-first', + 'pack ordered', + 'next definite-first', + 'next ordered', + 'ordered pack', + ], }, - "align-tracks": { - "links": { - "dev": "#tracks-alignment" + 'align-tracks': { + links: { + dev: '#tracks-alignment', }, - "tests": [ - "normal", - "baseline", "first baseline", "last baseline", - "space-between", "space-around", "space-evenly", "stretch", - "center", "start", "end", "flex-start", "flex-end", - "unsafe center", "safe start" - ] + tests: [ + 'normal', + 'baseline', + 'first baseline', + 'last baseline', + 'space-between', + 'space-around', + 'space-evenly', + 'stretch', + 'center', + 'start', + 'end', + 'flex-start', + 'flex-end', + 'unsafe center', + 'safe start', + ], }, - "justify-tracks": { - "links": { - "dev": "#tracks-alignment" + 'justify-tracks': { + links: { + dev: '#tracks-alignment', }, - "tests": [ - "normal", - "space-between", "space-around", "space-evenly", "stretch", - "center", "start", "end", "flex-start", "flex-end", "left", "right", - "unsafe center", "safe start" - ] - } - } + tests: [ + 'normal', + 'space-between', + 'space-around', + 'space-evenly', + 'stretch', + 'center', + 'start', + 'end', + 'flex-start', + 'flex-end', + 'left', + 'right', + 'unsafe center', + 'safe start', + ], + }, + }, }; diff --git a/tests/css-highlight-api-1.js b/tests/css-highlight-api-1.js index 840161a5..ed8d2cac 100644 --- a/tests/css-highlight-api-1.js +++ b/tests/css-highlight-api-1.js @@ -1,19 +1,19 @@ export default { - "title": "CSS Custom Highlight API Module Level 1", - "links": { - "tr": "css-highlight-api-1", - "dev": "css-highlight-api-1" + title: 'CSS Custom Highlight API Module Level 1', + links: { + tr: 'css-highlight-api-1', + dev: 'css-highlight-api-1', }, - "status": { - "stability": "experimental" + status: { + stability: 'experimental', }, - "selectors": { - '::highlight()' : { - "links": { - "tr": "#custom-highlight-pseudo", - "dev": "#custom-highlight-pseudo" + selectors: { + '::highlight()': { + links: { + tr: '#custom-highlight-pseudo', + dev: '#custom-highlight-pseudo', }, - "tests": ['::highlight(example-highlight)'] - } - } + tests: ['::highlight(example-highlight)'], + }, + }, }; diff --git a/tests/css-images-3.js b/tests/css-images-3.js index 82402716..30b651ae 100644 --- a/tests/css-images-3.js +++ b/tests/css-images-3.js @@ -1,101 +1,95 @@ export default { - "title": "CSS Images Module Level 3", - "links": { - "tr": "css3-images", - "dev": "css-images-3" + title: 'CSS Images Module Level 3', + links: { + tr: 'css3-images', + dev: 'css-images-3', }, - "status": { - "stability": "stable", - "first-snapshot": 2015 + status: { + stability: 'stable', + 'first-snapshot': 2015, }, - "values": { - "properties": [ - "background-image", - "list-style-image", - "border-image", - "cursor", - "content" - ], - "linear-gradient()": { - "links": { - "tr": "#linear-gradients", - "dev": "#linear-gradients" + values: { + properties: ['background-image', 'list-style-image', 'border-image', 'cursor', 'content'], + 'linear-gradient()': { + links: { + tr: '#linear-gradients', + dev: '#linear-gradients', }, - "tests": [ - "linear-gradient(white, black)", - "linear-gradient(to right, white, black)", - "linear-gradient(45deg, white, black)", - "linear-gradient(white 50%, black)", - "linear-gradient(white 5px, black)", - "linear-gradient(white, #f06, black)", - "linear-gradient(currentColor, black)", - "linear-gradient(red -50px, white calc(-25px + 50%), blue 100%)" - ] + tests: [ + 'linear-gradient(white, black)', + 'linear-gradient(to right, white, black)', + 'linear-gradient(45deg, white, black)', + 'linear-gradient(white 50%, black)', + 'linear-gradient(white 5px, black)', + 'linear-gradient(white, #f06, black)', + 'linear-gradient(currentColor, black)', + 'linear-gradient(red -50px, white calc(-25px + 50%), blue 100%)', + ], }, - "radial-gradient()": { - "links": { - "tr": "#radial-gradients", - "dev": "#radial-gradients" + 'radial-gradient()': { + links: { + tr: '#radial-gradients', + dev: '#radial-gradients', }, - "tests": [ - "radial-gradient(white, black)", - "radial-gradient(circle, white, black)", - "radial-gradient(ellipse, white, black)", - "radial-gradient(closest-corner, white, black)", - "radial-gradient(circle closest-corner, white, black)", - "radial-gradient(farthest-side, white, black)", - "radial-gradient(circle farthest-side, white, black)", - "radial-gradient(50%, white, black)", - "radial-gradient(60% 60%, white, black)"/*, + tests: [ + 'radial-gradient(white, black)', + 'radial-gradient(circle, white, black)', + 'radial-gradient(ellipse, white, black)', + 'radial-gradient(closest-corner, white, black)', + 'radial-gradient(circle closest-corner, white, black)', + 'radial-gradient(farthest-side, white, black)', + 'radial-gradient(circle farthest-side, white, black)', + 'radial-gradient(50%, white, black)', + 'radial-gradient(60% 60%, white, black)' /*, "radial-gradient(at 60% 60%, white, black)", "radial-gradient(30% 30% at 20% 20%, white, black)", "radial-gradient(5em circle at top left, yellow, blue)", - "radial-gradient(circle farthest-side at top left, white, black)"*/ - ] + "radial-gradient(circle farthest-side at top left, white, black)"*/, + ], }, - "repeating-linear-gradient()": { - "links": { - "tr": "#repeating-gradients", - "dev": "#repeating-gradients" + 'repeating-linear-gradient()': { + links: { + tr: '#repeating-gradients', + dev: '#repeating-gradients', }, - "tests": "repeating-linear-gradient(white, black)" + tests: 'repeating-linear-gradient(white, black)', }, - "repeating-radial-gradient()": { - "links": { - "tr": "#repeating-gradients", - "dev": "#repeating-gradients" + 'repeating-radial-gradient()': { + links: { + tr: '#repeating-gradients', + dev: '#repeating-gradients', }, - "tests": "repeating-radial-gradient(white, black)" + tests: 'repeating-radial-gradient(white, black)', }, }, - "properties": { - "object-fit": { - "links": { - "tr": "#object-fit", - "dev": "#the-object-fit" + properties: { + 'object-fit': { + links: { + tr: '#object-fit', + dev: '#the-object-fit', }, - "tests": ["fill", "contain", "cover", "none", "scale-down"] + tests: ['fill', 'contain', 'cover', 'none', 'scale-down'], }, - "object-position": { - "links": { - "tr": "#object-position", - "dev": "#the-object-position" + 'object-position': { + links: { + tr: '#object-position', + dev: '#the-object-position', }, - "tests": ["50% 50%", "center", "top right", "bottom 10px right 20px"] + tests: ['50% 50%', 'center', 'top right', 'bottom 10px right 20px'], }, - "image-orientation": { - "links": { - "tr": "#image-orientation", - "dev": "#the-image-orientation" + 'image-orientation': { + links: { + tr: '#image-orientation', + dev: '#the-image-orientation', }, - "tests": ["from-image", "0deg", "90deg", "45deg", "45deg flip", "1turn", "100grad", "2rad"] + tests: ['from-image', '0deg', '90deg', '45deg', '45deg flip', '1turn', '100grad', '2rad'], }, - "image-rendering": { - "links": { - "tr": "#the-image-rendering", - "dev": "#the-image-rendering" + 'image-rendering': { + links: { + tr: '#the-image-rendering', + dev: '#the-image-rendering', }, - "tests": ["auto", "smooth", "high-quality", "crisp-edges", "pixelated"] + tests: ['auto', 'smooth', 'high-quality', 'crisp-edges', 'pixelated'], }, - } + }, }; diff --git a/tests/css-images-4.js b/tests/css-images-4.js index 0856e6c2..9cfb3c51 100644 --- a/tests/css-images-4.js +++ b/tests/css-images-4.js @@ -1,123 +1,120 @@ export default { - "title": "CSS Images Module Level 4", - "links": { - "tr": "css-images-4", - "dev": "css-images-4" + title: 'CSS Images Module Level 4', + links: { + tr: 'css-images-4', + dev: 'css-images-4', }, - "status": { - "stability": "experimental" + status: { + stability: 'experimental', }, - "values": { - "properties": [ - "background-image", - "list-style-image", - "border-image", - "cursor", - "content" - ], - "linear-gradient()": { - "links": { - "tr": "#linear-gradients", - "dev": "#linear-gradients" + values: { + properties: ['background-image', 'list-style-image', 'border-image', 'cursor', 'content'], + 'linear-gradient()': { + links: { + tr: '#linear-gradients', + dev: '#linear-gradients', }, - "tests": [ - "linear-gradient(45deg, #f06 25%, yellow 25% 50%, #f06 50% 75%, yellow 75%)" - ] + tests: ['linear-gradient(45deg, #f06 25%, yellow 25% 50%, #f06 50% 75%, yellow 75%)'], }, - "radial-gradient()": { - "links": { - "tr": "#radial-gradients", - "dev": "#radial-gradients" + 'radial-gradient()': { + links: { + tr: '#radial-gradients', + dev: '#radial-gradients', }, - "tests": [ - "radial-gradient(center, red 0% 25%, blue 25% 75%, red 75% 100%)" - ] + tests: ['radial-gradient(center, red 0% 25%, blue 25% 75%, red 75% 100%)'], }, - "conic-gradient()": { - "links": { - "tr": "#conic-gradients", - "dev": "#conic-gradients" + 'conic-gradient()': { + links: { + tr: '#conic-gradients', + dev: '#conic-gradients', }, - "tests": [ - "conic-gradient(white, black)", - "conic-gradient(from 5deg, white, black)", - "conic-gradient(at top left, white, black)", - "conic-gradient(white 50%, black)", - "conic-gradient(white 5deg, black)", - "conic-gradient(white, #f06, black)", - "conic-gradient(currentColor, black)", - "conic-gradient(black 25%, white 0deg 50%, black 0deg 75%, white 0deg)" - ] + tests: [ + 'conic-gradient(white, black)', + 'conic-gradient(from 5deg, white, black)', + 'conic-gradient(at top left, white, black)', + 'conic-gradient(white 50%, black)', + 'conic-gradient(white 5deg, black)', + 'conic-gradient(white, #f06, black)', + 'conic-gradient(currentColor, black)', + 'conic-gradient(black 25%, white 0deg 50%, black 0deg 75%, white 0deg)', + ], }, - "repeating-conic-gradient()": { - "links": { - "tr": "#repeating-gradients", - "dev": "#repeating-gradients" + 'repeating-conic-gradient()': { + links: { + tr: '#repeating-gradients', + dev: '#repeating-gradients', }, - "tests": [ - "repeating-conic-gradient(white, black)", - "repeating-conic-gradient(hsla(0, 0%, 100%, .2) 0deg 15deg, hsla(0, 0%, 100%, 0) 0deg 30deg)" - ] + tests: [ + 'repeating-conic-gradient(white, black)', + 'repeating-conic-gradient(hsla(0, 0%, 100%, .2) 0deg 15deg, hsla(0, 0%, 100%, 0) 0deg 30deg)', + ], }, - "image()": { - "links": { - "tr": "#image-notation", - "dev": "#image-notation" + 'image()': { + links: { + tr: '#image-notation', + dev: '#image-notation', }, - "tests": [ + tests: [ "image('sprites.png#xywh=10,30,60,20')", "image('wavy.svg', 'wavy.png' , 'wavy.gif')", "image('dark.png', black)", - "image(green)" - ] + 'image(green)', + ], }, - "image-set()": { - "links": { - "tr": "#image-set-notation", - "dev": "#image-set-notation" + 'image-set()': { + links: { + tr: '#image-set-notation', + dev: '#image-set-notation', }, - "tests": [ + tests: [ "image-set('foo.png' 1x, 'foo-2x.png' 2x, 'foo-print.png' 600dpi)", - "image-set(linear-gradient(green, green) 1x, url(foobar.png) 2x)", - "image-set(linear-gradient(red, red), url(foobar.png) 2x)", - "image-set(url(foobar.png) 2x)", - "image-set(url(foobar.png) 1x, url(bar.png) 2x, url(baz.png) 3x)", + 'image-set(linear-gradient(green, green) 1x, url(foobar.png) 2x)', + 'image-set(linear-gradient(red, red), url(foobar.png) 2x)', + 'image-set(url(foobar.png) 2x)', + 'image-set(url(foobar.png) 1x, url(bar.png) 2x, url(baz.png) 3x)', "image-set('foobar.png', 'bar.png' 2x, url(baz.png) 3x)", "image-set(image-set('foobar.png', 'bar.png' 2x) 1x, url(baz.png) 3x)", "image-set(url(foobar.png) type('image/png'))", "image-set(url(foobar.png) 1x type('image/png'))", - "image-set(url(foobar.png) type('image/png') 1x)" - ] + "image-set(url(foobar.png) type('image/png') 1x)", + ], }, - "element()": { - "links": { - "tr": "#element-notation", - "dev": "#element-notation" + 'element()': { + links: { + tr: '#element-notation', + dev: '#element-notation', }, - "tests": "element(#foo)" + tests: 'element(#foo)', }, - "cross-fade()": { - "links": { - "tr": "#cross-fade-function", - "dev": "#cross-fade-function" + 'cross-fade()': { + links: { + tr: '#cross-fade-function', + dev: '#cross-fade-function', }, - "tests": [ - "cross-fade(url(a.png), url(b.png))", - "cross-fade(url(a.png) 50%, url(b.png))", - "cross-fade(url(a.png) 50%, white)" - ] - } + tests: [ + 'cross-fade(url(a.png), url(b.png))', + 'cross-fade(url(a.png) 50%, url(b.png))', + 'cross-fade(url(a.png) 50%, white)', + ], + }, }, - "properties": { - "image-resolution": { - "links": { - "tr": "#the-image-resolution", - "dev": "#the-image-resolution" + properties: { + 'image-resolution': { + links: { + tr: '#the-image-resolution', + dev: '#the-image-resolution', }, - "tests": [ - "from-image", "from-image snap", "snap from-image", - "1dppx", "1dpcm", "300dpi", "from-image 300dpi", "300dpi from-image", "300dpi from-image snap" - ] - } - } + tests: [ + 'from-image', + 'from-image snap', + 'snap from-image', + '1dppx', + '1dpcm', + '300dpi', + 'from-image 300dpi', + '300dpi from-image', + '300dpi from-image snap', + ], + }, + }, }; diff --git a/tests/css-inline-3.js b/tests/css-inline-3.js index 952f10f1..a1f9809b 100644 --- a/tests/css-inline-3.js +++ b/tests/css-inline-3.js @@ -1,103 +1,117 @@ export default { - "title": "CSS Inline Layout Module Level 3", - "links": { - "dev": "css-inline-3", - "tr": "css-inline-3", + title: 'CSS Inline Layout Module Level 3', + links: { + dev: 'css-inline-3', + tr: 'css-inline-3', }, - "status": { - "stability": "experimental" + status: { + stability: 'experimental', }, - "properties": { - "alignment-baseline": { - "links": { - "dev": "#alignment-baseline-property", - "tr": "#alignment-baseline-property" + properties: { + 'alignment-baseline': { + links: { + dev: '#alignment-baseline-property', + tr: '#alignment-baseline-property', }, - "tests": [ - "baseline", "text-bottom", "alphabetic", "ideographic", "middle", - "central", "mathematical", "text-top" - ] + tests: [ + 'baseline', + 'text-bottom', + 'alphabetic', + 'ideographic', + 'middle', + 'central', + 'mathematical', + 'text-top', + ], }, - "baseline-shift": { - "links": { - "dev": "#baseline-shift-property", - "tr": "#baseline-shift-property" + 'baseline-shift': { + links: { + dev: '#baseline-shift-property', + tr: '#baseline-shift-property', }, - "tests": ["5px", "10%", "sub", "super", "top", "center", "bottom"] + tests: ['5px', '10%', 'sub', 'super', 'top', 'center', 'bottom'], }, - "baseline-source": { - "links": { - "dev": "#baseline-source", - "tr": "#baseline-source" + 'baseline-source': { + links: { + dev: '#baseline-source', + tr: '#baseline-source', }, - "tests": ["auto", "first", "last"] + tests: ['auto', 'first', 'last'], }, - "dominant-baseline": { - "links": { - "dev": "#dominant-baseline-property", - "tr": "#dominant-baseline-property" + 'dominant-baseline': { + links: { + dev: '#dominant-baseline-property', + tr: '#dominant-baseline-property', }, - "tests": [ - "auto", "text-bottom", "alphabetic", "ideographic", "middle", - "central", "mathematical", "hanging", "text-top" - ] + tests: [ + 'auto', + 'text-bottom', + 'alphabetic', + 'ideographic', + 'middle', + 'central', + 'mathematical', + 'hanging', + 'text-top', + ], }, - "initial-letter": { - "links": { - "dev": "#sizing-drop-initials", - "tr": "#sizing-drop-initials" + 'initial-letter': { + links: { + dev: '#sizing-drop-initials', + tr: '#sizing-drop-initials', }, - "tests": ["normal", "1.4 3", "1.4", "1.4 drop", "1.4 raise"] + tests: ['normal', '1.4 3', '1.4', '1.4 drop', '1.4 raise'], }, - "initial-letter-align": { - "links": { - "dev": "#aligning-initial-letter", - "tr": "#aligning-initial-letter" + 'initial-letter-align': { + links: { + dev: '#aligning-initial-letter', + tr: '#aligning-initial-letter', }, - "tests": [ - "border-box", "alphabetic", "ideographic", "hanging", "leading", - "border-box alphabetic" - ] + tests: ['border-box', 'alphabetic', 'ideographic', 'hanging', 'leading', 'border-box alphabetic'], }, - "initial-letter-wrap": { - "links": { - "dev": "#initial-letter-wrapping", - "tr": "#initial-letter-wrapping" + 'initial-letter-wrap': { + links: { + dev: '#initial-letter-wrapping', + tr: '#initial-letter-wrapping', }, - "tests": ["none", "first", "all", "grid", "30px", "10%"] + tests: ['none', 'first', 'all', 'grid', '30px', '10%'], }, - "inline-sizing": { - "links": { - "dev": "#line-fill", - "tr": "#line-fill" + 'inline-sizing': { + links: { + dev: '#line-fill', + tr: '#line-fill', }, - "tests": ["normal", "stretch"] + tests: ['normal', 'stretch'], }, - "leading-trim": { - "links": { - "dev": "#leading-trim", - "tr": "#leading-trim" + 'leading-trim': { + links: { + dev: '#leading-trim', + tr: '#leading-trim', }, - "tests": ["normal", "start", "end", "both"] + tests: ['normal', 'start', 'end', 'both'], }, - "text-edge": { - "links": { - "dev": "#text-edges", - "tr": "#text-edges" + 'text-edge': { + links: { + dev: '#text-edges', + tr: '#text-edges', }, - "tests": [ - "leading", "text", "cap", "ex", "ideographic", "ideographic-ink", - "text alphabetic", "cap ideographic-ink" - ] + tests: [ + 'leading', + 'text', + 'cap', + 'ex', + 'ideographic', + 'ideographic-ink', + 'text alphabetic', + 'cap ideographic-ink', + ], }, - "vertical-align": { - "links": { - "dev": "#transverse-alignment", - "tr": "#transverse-alignment" + 'vertical-align': { + links: { + dev: '#transverse-alignment', + tr: '#transverse-alignment', }, - "tests": [ - "first", "last", "first text-bottom", "last sub", "super text-bottom first" - ] - } - } + tests: ['first', 'last', 'first text-bottom', 'last sub', 'super text-bottom first'], + }, + }, }; diff --git a/tests/css-layout-api-1.js b/tests/css-layout-api-1.js index 0d69284c..c3098bfd 100644 --- a/tests/css-layout-api-1.js +++ b/tests/css-layout-api-1.js @@ -1,20 +1,20 @@ export default { - "title": "CSS Layout API Level 1", - "links": { - "tr": "css-layout-api-1", - "dev": "css-layout-api-1", - "devtype": "houdini" + title: 'CSS Layout API Level 1', + links: { + tr: 'css-layout-api-1', + dev: 'css-layout-api-1', + devtype: 'houdini', }, - "status": { - "stability": "experimental" + status: { + stability: 'experimental', }, - "properties": { - "display": { - "links": { - "tr": "#layout-api-containers", - "dev": "#layout-api-containers" + properties: { + display: { + links: { + tr: '#layout-api-containers', + dev: '#layout-api-containers', }, - "tests": "layout(foo)" - } - } + tests: 'layout(foo)', + }, + }, }; diff --git a/tests/css-line-grid-1.js b/tests/css-line-grid-1.js index 835886dd..c6d089dd 100644 --- a/tests/css-line-grid-1.js +++ b/tests/css-line-grid-1.js @@ -1,33 +1,33 @@ export default { - "title": "CSS Line Grid Module Level 1", - "links": { - "tr": "css-line-grid-1", - "dev": "css-line-grid-1" + title: 'CSS Line Grid Module Level 1', + links: { + tr: 'css-line-grid-1', + dev: 'css-line-grid-1', }, - "status": { - "stability": "experimental" + status: { + stability: 'experimental', }, - "properties": { - "box-snap": { - "links": { - "tr": "#box-snap", - "dev": "#box-snap" + properties: { + 'box-snap': { + links: { + tr: '#box-snap', + dev: '#box-snap', }, - "tests": ["none", "block-start", "block-end", "center", "baseline", "last-baseline"] + tests: ['none', 'block-start', 'block-end', 'center', 'baseline', 'last-baseline'], }, - "line-grid": { - "links": { - "tr": "#line-grid", - "dev": "#line-grid" + 'line-grid': { + links: { + tr: '#line-grid', + dev: '#line-grid', }, - "tests": ["match-parent", "create"] + tests: ['match-parent', 'create'], }, - "line-snap": { - "links": { - "tr": "#line-snap", - "dev": "#line-snap" + 'line-snap': { + links: { + tr: '#line-snap', + dev: '#line-snap', }, - "tests": ["none", "baseline", "contain"] - } - } + tests: ['none', 'baseline', 'contain'], + }, + }, }; diff --git a/tests/css-lists-3.js b/tests/css-lists-3.js index 0783051a..c980caf9 100644 --- a/tests/css-lists-3.js +++ b/tests/css-lists-3.js @@ -1,102 +1,134 @@ export default { - "title": "CSS Lists Module Level 3", - "links": { - "tr": "css-lists-3", - "dev": "css-lists-3" + title: 'CSS Lists Module Level 3', + links: { + tr: 'css-lists-3', + dev: 'css-lists-3', }, - "status": { - "stability": "stable" + status: { + stability: 'stable', }, - "properties": { - "list-style-type": { - "links": { - "tr": "#text-markers", - "dev": "#text-markers" + properties: { + 'list-style-type': { + links: { + tr: '#text-markers', + dev: '#text-markers', }, - "tests": [ - "disclosure-closed", "disclosure-open", - "hebrew", - "cjk-decimal", "cjk-ideographic", - "hiragana", "katakana", "hiragana-iroha", "katakana-iroha", - "japanese-informal", "japanese-formal", "korean-hangul-formal", - "korean-hanja-informal", "korean-hanja-formal", - "simp-chinese-informal", "simp-chinese-formal", - "trad-chinese-informal", "trad-chinese-formal", - "cjk-heavenly-stem", "cjk-earthly-branch", - "trad-chinese-informal", "trad-chinese-formal", - "simp-chinese-informal", "simp-chinese-formal", - "japanese-informal", "japanese-formal", - "arabic-indic", "persian", "urdu", - "devanagari", "gurmukhi", "gujarati", - "oriya", "kannada", "malayalam", "bengali", - "tamil", "telugu", "thai", "lao", - "myanmar", "khmer", - "hangul", "hangul-consonant", - "ethiopic-halehame", "ethiopic-numeric", - "ethiopic-halehame-am", - "ethiopic-halehame-ti-er", "ethiopic-halehame-ti-et", - "other-style", "inside", "outside", "\\32 style", - '"-"', "'-'", - "symbols(\"*\" \"\\2020\" \"\\2021\" \"\\A7\")", - "symbols(cyclic '*' '\\2020' '\\2021' '\\A7')" - ] + tests: [ + 'disclosure-closed', + 'disclosure-open', + 'hebrew', + 'cjk-decimal', + 'cjk-ideographic', + 'hiragana', + 'katakana', + 'hiragana-iroha', + 'katakana-iroha', + 'japanese-informal', + 'japanese-formal', + 'korean-hangul-formal', + 'korean-hanja-informal', + 'korean-hanja-formal', + 'simp-chinese-informal', + 'simp-chinese-formal', + 'trad-chinese-informal', + 'trad-chinese-formal', + 'cjk-heavenly-stem', + 'cjk-earthly-branch', + 'trad-chinese-informal', + 'trad-chinese-formal', + 'simp-chinese-informal', + 'simp-chinese-formal', + 'japanese-informal', + 'japanese-formal', + 'arabic-indic', + 'persian', + 'urdu', + 'devanagari', + 'gurmukhi', + 'gujarati', + 'oriya', + 'kannada', + 'malayalam', + 'bengali', + 'tamil', + 'telugu', + 'thai', + 'lao', + 'myanmar', + 'khmer', + 'hangul', + 'hangul-consonant', + 'ethiopic-halehame', + 'ethiopic-numeric', + 'ethiopic-halehame-am', + 'ethiopic-halehame-ti-er', + 'ethiopic-halehame-ti-et', + 'other-style', + 'inside', + 'outside', + '\\32 style', + '"-"', + "'-'", + 'symbols("*" "\\2020" "\\2021" "\\A7")', + "symbols(cyclic '*' '\\2020' '\\2021' '\\A7')", + ], }, - "marker-side": { - "links": { - "tr": "#marker-side", - "dev": "#marker-side" + 'marker-side': { + links: { + tr: '#marker-side', + dev: '#marker-side', }, - "tests": ["match-self", "match-parent"] + tests: ['match-self', 'match-parent'], }, - "counter-reset": { - "links": { - "tr": "#counter-reset", - "dev": "#counter-reset" + 'counter-reset': { + links: { + tr: '#counter-reset', + dev: '#counter-reset', }, - "tests": [ - "none", - "foo", - "foo 1", - "foo -3", - "foo 1 bar", - "foo 1 bar 2", - "list-item", - "list-item 1", - "list-item 1 bar 2", - "reversed(foo)", - "reversed(foo) -3", - "reversed(list-item)", - "reversed(foo1) 1 foo2 9 reversed(foo3) 4" - ] + tests: [ + 'none', + 'foo', + 'foo 1', + 'foo -3', + 'foo 1 bar', + 'foo 1 bar 2', + 'list-item', + 'list-item 1', + 'list-item 1 bar 2', + 'reversed(foo)', + 'reversed(foo) -3', + 'reversed(list-item)', + 'reversed(foo1) 1 foo2 9 reversed(foo3) 4', + ], }, - "counter-set": { - "links": { - "tr": "#increment-set", - "dev": "#increment-set" + 'counter-set': { + links: { + tr: '#increment-set', + dev: '#increment-set', }, - "tests": ["foo", "foo 1", "foo 1 bar", "foo 1 bar 2", "none"] + tests: ['foo', 'foo 1', 'foo 1 bar', 'foo 1 bar 2', 'none'], }, - "counter-increment": { - "links": { - "tr": "#increment-set", - "dev": "#increment-set" + 'counter-increment': { + links: { + tr: '#increment-set', + dev: '#increment-set', }, - "tests": ["foo", "foo 1", "foo 1 bar", "foo 1 bar 2", "none"] + tests: ['foo', 'foo 1', 'foo 1 bar', 'foo 1 bar 2', 'none'], }, - "content": { - "links": { - "tr": "#counter-functions", - "dev": "#counter-functions" + content: { + links: { + tr: '#counter-functions', + dev: '#counter-functions', }, - "tests": [ + tests: [ "counter(chno, upper-latin) '. '", "counter(section, upper-roman) ' - '", "' [' counter(bq, decimal) ']'", "counter(notecntr, disc) ' '", - "counter(p, none)", + 'counter(p, none)', "counter(h1, upper-alpha) '.' counter(h2, decimal) ' '", - "'(' counters(list-item, '.') ') '" - ] - } - } + "'(' counters(list-item, '.') ') '", + ], + }, + }, }; diff --git a/tests/css-logical-1.js b/tests/css-logical-1.js index 1821858d..6d2c724b 100644 --- a/tests/css-logical-1.js +++ b/tests/css-logical-1.js @@ -1,460 +1,460 @@ export default { - "title": "CSS Logical Properties and Values Level 1", - "links": { - "tr": "css-logical-1", - "dev": "css-logical-1" + title: 'CSS Logical Properties and Values Level 1', + links: { + tr: 'css-logical-1', + dev: 'css-logical-1', }, - "status": { - "stability": "stable" + status: { + stability: 'stable', }, - "properties": { - "caption-side": { - "links": { - "tr": "#caption-side", - "dev": "#caption-side" + properties: { + 'caption-side': { + links: { + tr: '#caption-side', + dev: '#caption-side', }, - "tests": ["inline-start", "inline-end"] + tests: ['inline-start', 'inline-end'], }, - "float": { - "links": { - "tr": "#float-clear", - "dev": "#float-clear" + float: { + links: { + tr: '#float-clear', + dev: '#float-clear', }, - "tests": ["inline-start", "inline-end"] + tests: ['inline-start', 'inline-end'], }, - "clear": { - "links": { - "tr": "#float-clear", - "dev": "#float-clear" + clear: { + links: { + tr: '#float-clear', + dev: '#float-clear', }, - "tests": ["inline-start", "inline-end"] + tests: ['inline-start', 'inline-end'], }, - "text-align": { - "links": { - "tr": "#text-align", - "dev": "#text-align" + 'text-align': { + links: { + tr: '#text-align', + dev: '#text-align', }, - "tests": ["start", "end"] + tests: ['start', 'end'], }, - "resize": { - "links": { - "tr": "#resize", - "dev": "#resize" + resize: { + links: { + tr: '#resize', + dev: '#resize', }, - "tests": ["block", "inline"] + tests: ['block', 'inline'], }, - "block-size": { - "links": { - "tr": "#dimension-properties", - "dev": "#dimension-properties" + 'block-size': { + links: { + tr: '#dimension-properties', + dev: '#dimension-properties', }, - "tests": ["100px"] + tests: ['100px'], }, - "inline-size": { - "links": { - "tr": "#dimension-properties", - "dev": "#dimension-properties" + 'inline-size': { + links: { + tr: '#dimension-properties', + dev: '#dimension-properties', }, - "tests": ["100px"] + tests: ['100px'], }, - "min-block-size": { - "links": { - "tr": "#dimension-properties", - "dev": "#dimension-properties" + 'min-block-size': { + links: { + tr: '#dimension-properties', + dev: '#dimension-properties', }, - "tests": ["100px"] + tests: ['100px'], }, - "min-inline-size": { - "links": { - "tr": "#dimension-properties", - "dev": "#dimension-properties" + 'min-inline-size': { + links: { + tr: '#dimension-properties', + dev: '#dimension-properties', }, - "tests": ["100px"] + tests: ['100px'], }, - "max-block-size": { - "links": { - "tr": "#dimension-properties", - "dev": "#dimension-properties" + 'max-block-size': { + links: { + tr: '#dimension-properties', + dev: '#dimension-properties', }, - "tests": ["100px"] + tests: ['100px'], }, - "max-inline-size": { - "links": { - "tr": "#dimension-properties", - "dev": "#dimension-properties" + 'max-inline-size': { + links: { + tr: '#dimension-properties', + dev: '#dimension-properties', }, - "tests": ["100px"] + tests: ['100px'], }, - "margin-block": { - "links": { - "tr": "#margin-properties", - "dev": "#margin-properties" + 'margin-block': { + links: { + tr: '#margin-properties', + dev: '#margin-properties', }, - "tests": ["10px", "10px 10px"] + tests: ['10px', '10px 10px'], }, - "margin-block-start": { - "links": { - "tr": "#margin-properties", - "dev": "#margin-properties" + 'margin-block-start': { + links: { + tr: '#margin-properties', + dev: '#margin-properties', }, - "tests": ["10px"] + tests: ['10px'], }, - "margin-block-end": { - "links": { - "tr": "#margin-properties", - "dev": "#margin-properties" + 'margin-block-end': { + links: { + tr: '#margin-properties', + dev: '#margin-properties', }, - "tests": ["10px"] + tests: ['10px'], }, - "margin-inline": { - "links": { - "tr": "#margin-properties", - "dev": "#margin-properties" + 'margin-inline': { + links: { + tr: '#margin-properties', + dev: '#margin-properties', }, - "tests": ["10px", "10px 10px"] + tests: ['10px', '10px 10px'], }, - "margin-inline-start": { - "links": { - "tr": "#margin-properties", - "dev": "#margin-properties" + 'margin-inline-start': { + links: { + tr: '#margin-properties', + dev: '#margin-properties', }, - "tests": ["10px"] + tests: ['10px'], }, - "margin-inline-end": { - "links": { - "tr": "#margin-properties", - "dev": "#margin-properties" + 'margin-inline-end': { + links: { + tr: '#margin-properties', + dev: '#margin-properties', }, - "tests": ["10px"] + tests: ['10px'], }, - "inset": { - "links": { - "tr": "#inset-properties", - "dev": "#inset-properties" + inset: { + links: { + tr: '#inset-properties', + dev: '#inset-properties', }, - "tests": ["10px", "10px 10px", "10px 10px 10px", "10px 10px 10px 10px"] + tests: ['10px', '10px 10px', '10px 10px 10px', '10px 10px 10px 10px'], }, - "inset-block": { - "links": { - "tr": "#inset-properties", - "dev": "#inset-properties" + 'inset-block': { + links: { + tr: '#inset-properties', + dev: '#inset-properties', }, - "tests": ["10px", "10px 10px"] + tests: ['10px', '10px 10px'], }, - "inset-block-start": { - "links": { - "tr": "#inset-properties", - "dev": "#inset-properties" + 'inset-block-start': { + links: { + tr: '#inset-properties', + dev: '#inset-properties', }, - "tests": ["10px"] + tests: ['10px'], }, - "inset-block-end": { - "links": { - "tr": "#inset-properties", - "dev": "#inset-properties" + 'inset-block-end': { + links: { + tr: '#inset-properties', + dev: '#inset-properties', }, - "tests": ["10px"] + tests: ['10px'], }, - "inset-inline": { - "links": { - "tr": "#inset-properties", - "dev": "#inset-properties" + 'inset-inline': { + links: { + tr: '#inset-properties', + dev: '#inset-properties', }, - "tests": ["10px", "10px 10px"] + tests: ['10px', '10px 10px'], }, - "inset-inline-start": { - "links": { - "tr": "#inset-properties", - "dev": "#inset-properties" + 'inset-inline-start': { + links: { + tr: '#inset-properties', + dev: '#inset-properties', }, - "tests": ["10px"] + tests: ['10px'], }, - "inset-inline-end": { - "links": { - "tr": "#inset-properties", - "dev": "#inset-properties" + 'inset-inline-end': { + links: { + tr: '#inset-properties', + dev: '#inset-properties', }, - "tests": ["10px"] + tests: ['10px'], }, - "padding-block": { - "links": { - "tr": "#padding-properties", - "dev": "#padding-properties" + 'padding-block': { + links: { + tr: '#padding-properties', + dev: '#padding-properties', }, - "tests": ["10px", "10px 10px"] + tests: ['10px', '10px 10px'], }, - "padding-block-start": { - "links": { - "tr": "#padding-properties", - "dev": "#padding-properties" + 'padding-block-start': { + links: { + tr: '#padding-properties', + dev: '#padding-properties', }, - "tests": ["10px"] + tests: ['10px'], }, - "padding-block-end": { - "links": { - "tr": "#padding-properties", - "dev": "#padding-properties" + 'padding-block-end': { + links: { + tr: '#padding-properties', + dev: '#padding-properties', }, - "tests": ["10px"] + tests: ['10px'], }, - "padding-inline": { - "links": { - "tr": "#padding-properties", - "dev": "#padding-properties" + 'padding-inline': { + links: { + tr: '#padding-properties', + dev: '#padding-properties', }, - "tests": ["10px", "10px 10px"] + tests: ['10px', '10px 10px'], }, - "padding-inline-start": { - "links": { - "tr": "#padding-properties", - "dev": "#padding-properties" + 'padding-inline-start': { + links: { + tr: '#padding-properties', + dev: '#padding-properties', }, - "tests": ["10px"] + tests: ['10px'], }, - "padding-inline-end": { - "links": { - "tr": "#padding-properties", - "dev": "#padding-properties" + 'padding-inline-end': { + links: { + tr: '#padding-properties', + dev: '#padding-properties', }, - "tests": ["10px"] + tests: ['10px'], }, - "border-block": { - "links": { - "tr": "#border-shorthands", - "dev": "#border-shorthands" + 'border-block': { + links: { + tr: '#border-shorthands', + dev: '#border-shorthands', }, - "tests": ["1px", "2px dotted", "medium dashed green"] + tests: ['1px', '2px dotted', 'medium dashed green'], }, - "border-block-start": { - "links": { - "tr": "#border-shorthands", - "dev": "#border-shorthands" + 'border-block-start': { + links: { + tr: '#border-shorthands', + dev: '#border-shorthands', }, - "tests": ["1px", "2px dotted", "medium dashed green"] + tests: ['1px', '2px dotted', 'medium dashed green'], }, - "border-block-start-width": { - "links": { - "tr": "#border-width", - "dev": "#border-width" + 'border-block-start-width': { + links: { + tr: '#border-width', + dev: '#border-width', }, - "tests": ["thin"] + tests: ['thin'], }, - "border-block-start-width": { - "links": { - "tr": "#border-width", - "dev": "#border-width" + 'border-block-start-width': { + links: { + tr: '#border-width', + dev: '#border-width', }, - "tests": ["thin"] + tests: ['thin'], }, - "border-block-start-style": { - "links": { - "tr": "#border-style", - "dev": "#border-style" + 'border-block-start-style': { + links: { + tr: '#border-style', + dev: '#border-style', }, - "tests": ["dotted"] + tests: ['dotted'], }, - "border-block-start-color": { - "links": { - "tr": "#border-color", - "dev": "#border-color" + 'border-block-start-color': { + links: { + tr: '#border-color', + dev: '#border-color', }, - "tests": ["navy"] + tests: ['navy'], }, - "border-block-end": { - "links": { - "tr": "#border-shorthands", - "dev": "#border-shorthands" + 'border-block-end': { + links: { + tr: '#border-shorthands', + dev: '#border-shorthands', }, - "tests": ["1px", "2px dotted", "medium dashed green"] + tests: ['1px', '2px dotted', 'medium dashed green'], }, - "border-block-end-width": { - "links": { - "tr": "#border-width", - "dev": "#border-width" + 'border-block-end-width': { + links: { + tr: '#border-width', + dev: '#border-width', }, - "tests": ["thin"] + tests: ['thin'], }, - "border-block-end-style": { - "links": { - "tr": "#border-style", - "dev": "#border-style" + 'border-block-end-style': { + links: { + tr: '#border-style', + dev: '#border-style', }, - "tests": ["dotted"] + tests: ['dotted'], }, - "border-block-end-color": { - "links": { - "tr": "#border-color", - "dev": "#border-color" + 'border-block-end-color': { + links: { + tr: '#border-color', + dev: '#border-color', }, - "tests": ["navy"] + tests: ['navy'], }, - "border-block-width": { - "links": { - "tr": "#border-width", - "dev": "#border-width" + 'border-block-width': { + links: { + tr: '#border-width', + dev: '#border-width', }, - "tests": ["thin 2px"] + tests: ['thin 2px'], }, - "border-block-style": { - "links": { - "tr": "#border-style", - "dev": "#border-style" + 'border-block-style': { + links: { + tr: '#border-style', + dev: '#border-style', }, - "tests": ["dotted dashed"] + tests: ['dotted dashed'], }, - "border-block-color": { - "links": { - "tr": "#border-color", - "dev": "#border-color" + 'border-block-color': { + links: { + tr: '#border-color', + dev: '#border-color', }, - "tests": ["navy blue"] + tests: ['navy blue'], }, - "border-inline": { - "links": { - "tr": "#border-shorthands", - "dev": "#border-shorthands" + 'border-inline': { + links: { + tr: '#border-shorthands', + dev: '#border-shorthands', }, - "tests": ["1px", "2px dotted", "medium dashed green"] + tests: ['1px', '2px dotted', 'medium dashed green'], }, - "border-inline-start": { - "links": { - "tr": "#border-shorthands", - "dev": "#border-shorthands" + 'border-inline-start': { + links: { + tr: '#border-shorthands', + dev: '#border-shorthands', }, - "tests": ["1px", "2px dotted", "medium dashed green"] + tests: ['1px', '2px dotted', 'medium dashed green'], }, - "border-inline-start-width": { - "links": { - "tr": "#border-width", - "dev": "#border-width" + 'border-inline-start-width': { + links: { + tr: '#border-width', + dev: '#border-width', }, - "tests": ["thin"] + tests: ['thin'], }, - "border-inline-start-style": { - "links": { - "tr": "#border-style", - "dev": "#border-style" + 'border-inline-start-style': { + links: { + tr: '#border-style', + dev: '#border-style', }, - "tests": ["dotted"] + tests: ['dotted'], }, - "border-inline-start-color": { - "links": { - "tr": "#border-color", - "dev": "#border-color" + 'border-inline-start-color': { + links: { + tr: '#border-color', + dev: '#border-color', }, - "tests": ["navy"] + tests: ['navy'], }, - "border-inline-end": { - "links": { - "tr": "#border-shorthands", - "dev": "#border-shorthands" + 'border-inline-end': { + links: { + tr: '#border-shorthands', + dev: '#border-shorthands', }, - "tests": ["1px", "2px dotted", "medium dashed green"] + tests: ['1px', '2px dotted', 'medium dashed green'], }, - "border-inline-end-width": { - "links": { - "tr": "#border-width", - "dev": "#border-width" + 'border-inline-end-width': { + links: { + tr: '#border-width', + dev: '#border-width', }, - "tests": ["thin"] + tests: ['thin'], }, - "border-inline-end-style": { - "links": { - "tr": "#border-style", - "dev": "#border-style" + 'border-inline-end-style': { + links: { + tr: '#border-style', + dev: '#border-style', }, - "tests": ["dotted"] + tests: ['dotted'], }, - "border-inline-end-color": { - "links": { - "tr": "#border-color", - "dev": "#border-color" + 'border-inline-end-color': { + links: { + tr: '#border-color', + dev: '#border-color', }, - "tests": ["navy"] + tests: ['navy'], }, - "border-inline-width": { - "links": { - "tr": "#border-width", - "dev": "#border-width" + 'border-inline-width': { + links: { + tr: '#border-width', + dev: '#border-width', }, - "tests": ["thin 2px"] + tests: ['thin 2px'], }, - "border-inline-style": { - "links": { - "tr": "#border-style", - "dev": "#border-style" + 'border-inline-style': { + links: { + tr: '#border-style', + dev: '#border-style', }, - "tests": ["dotted dashed"] + tests: ['dotted dashed'], }, - "border-inline-color": { - "links": { - "tr": "#border-color", - "dev": "#border-color" + 'border-inline-color': { + links: { + tr: '#border-color', + dev: '#border-color', }, - "tests": ["navy blue"] + tests: ['navy blue'], }, - "border-start-start-radius": { - "links": { - "tr": "#border-radius-shorthands", - "dev": "#border-radius-properties" + 'border-start-start-radius': { + links: { + tr: '#border-radius-shorthands', + dev: '#border-radius-properties', }, - "tests": ["0", "50%", "250px 100px"] + tests: ['0', '50%', '250px 100px'], }, - "border-start-end-radius": { - "links": { - "tr": "#border-radius-shorthands", - "dev": "#border-radius-properties" + 'border-start-end-radius': { + links: { + tr: '#border-radius-shorthands', + dev: '#border-radius-properties', }, - "tests": ["0", "50%", "250px 100px"] + tests: ['0', '50%', '250px 100px'], }, - "border-end-start-radius": { - "links": { - "tr": "#border-radius-shorthands", - "dev": "#border-radius-properties" + 'border-end-start-radius': { + links: { + tr: '#border-radius-shorthands', + dev: '#border-radius-properties', }, - "tests": ["0", "50%", "250px 100px"] + tests: ['0', '50%', '250px 100px'], }, - "border-end-end-radius": { - "links": { - "tr": "#border-radius-shorthands", - "dev": "#border-radius-properties" + 'border-end-end-radius': { + links: { + tr: '#border-radius-shorthands', + dev: '#border-radius-properties', }, - "tests": ["0", "50%", "250px 100px"] + tests: ['0', '50%', '250px 100px'], }, - "margin": { - "links": { - "tr": "#logical-shorthand-keyword", - "dev": "#logical-shorthand-keyword" + margin: { + links: { + tr: '#logical-shorthand-keyword', + dev: '#logical-shorthand-keyword', }, - "tests": ["logical 5px 10px 15px 20px"] + tests: ['logical 5px 10px 15px 20px'], }, - "padding": { - "links": { - "tr": "#logical-shorthand-keyword", - "dev": "#logical-shorthand-keyword" + padding: { + links: { + tr: '#logical-shorthand-keyword', + dev: '#logical-shorthand-keyword', }, - "tests": ["logical 5px 10px 15px 20px"] + tests: ['logical 5px 10px 15px 20px'], }, - "border-color": { - "links": { - "tr": "#logical-shorthand-keyword", - "dev": "#logical-shorthand-keyword" + 'border-color': { + links: { + tr: '#logical-shorthand-keyword', + dev: '#logical-shorthand-keyword', }, - "tests": ["logical red green blue yellow"] + tests: ['logical red green blue yellow'], }, - "border-style": { - "links": { - "tr": "#logical-shorthand-keyword", - "dev": "#logical-shorthand-keyword" + 'border-style': { + links: { + tr: '#logical-shorthand-keyword', + dev: '#logical-shorthand-keyword', }, - "tests": ["logical solid dotted dashed none"] + tests: ['logical solid dotted dashed none'], }, - "border-width": { - "links": { - "tr": "#logical-shorthand-keyword", - "dev": "#logical-shorthand-keyword" + 'border-width': { + links: { + tr: '#logical-shorthand-keyword', + dev: '#logical-shorthand-keyword', }, - "tests": ["logical 5px 10px 15px 20px"] - } - } + tests: ['logical 5px 10px 15px 20px'], + }, + }, }; diff --git a/tests/css-masking-1.js b/tests/css-masking-1.js index a307f9f1..8d782ac5 100644 --- a/tests/css-masking-1.js +++ b/tests/css-masking-1.js @@ -1,203 +1,267 @@ export default { - "title": "CSS Masking Module Level 1", - "links": { - "tr": "css-masking-1", - "dev": "css-masking-1", - "devtype": "fxtf" + title: 'CSS Masking Module Level 1', + links: { + tr: 'css-masking-1', + dev: 'css-masking-1', + devtype: 'fxtf', }, - "status": { - "stability": "stable" + status: { + stability: 'stable', }, - "properties": { - "clip-path": { - "links": { - "tr": "#the-clip-path", - "dev": "#the-clip-path" + properties: { + 'clip-path': { + links: { + tr: '#the-clip-path', + dev: '#the-clip-path', }, - "tests": [ + tests: [ "url('#clip')", - "inset(50%)", - "circle()", - "ellipse()", - "polygon(0 10px, 30px 0)", + 'inset(50%)', + 'circle()', + 'ellipse()', + 'polygon(0 10px, 30px 0)', "path('M 20 20 H 80 V 30')", - "circle() border-box", - "border-box", - "padding-box", - "content-box", - "margin-box", - "fill-box", - "stroke-box", - "view-box", - "none" - ] - }, - "clip-rule": { - "links": { - "tr": "#the-clip-rule", - "dev": "#the-clip-rule" - }, - "tests": ["nonzero", "evenodd"] - }, - "mask-image": { - "links": { - "tr": "#the-mask-image", - "dev": "#the-mask-image" - }, - "tests": [ - "none", - "linear-gradient(black 0%, transparent 100%)", - "url(image.png)", - "url(masks.svg#mask1)", - "url(image.png), url(image2.png)" - ] - }, - "mask-mode": { - "links": { - "tr": "#the-mask-mode", - "dev": "#the-mask-mode" - }, - "tests": ["alpha", "luminance", "match-source", "alpha, match-source"] - }, - "mask-repeat": { - "links": { - "tr": "#the-mask-repeat", - "dev": "#the-mask-repeat" - }, - "tests": [ - "repeat-x", "repeat-y", "repeat", "space", "round", "no-repeat", "repeat repeat", - "space repeat", "round repeat", "no-repeat repeat", "repeat space", "space space", - "round space", "no-repeat space", "repeat round", "space round", "round round", - "no-repeat round", "repeat no-repeat", "space no-repeat", "round no-repeat", - "no-repeat no-repeat", - "repeat-x, repeat-y", - "space no-repeat, no-repeat repeat, round" - ] - }, - "mask-position": { - "links": { - "tr": "#the-mask-position", - "dev": "#the-mask-position" - }, - "tests": [ - "left", "center", "right", "top", "bottom", - "left top", "left center", "center center", "right bottom", - "left 50%", - "bottom 10px right 20px", - "left, top", - "bottom 10px right 20px, left, center center"] - }, - "mask-clip": { - "links": { - "tr": "#the-mask-clip", - "dev": "#the-mask-clip" - }, - "tests": [ - "border-box", "padding-box", "content-box", "margin-box", "fill-box", "stroke-box", "view-box", - "no-clip", "padding-box, no-clip" - ] - }, - "mask-origin": { - "links": { - "tr": "#the-mask-origin", - "dev": "#the-mask-origin" - }, - "tests": [ - "border-box", "padding-box", "content-box", "margin-box", "fill-box", "stroke-box", "view-box", - "padding-box, content-box" - ] - }, - "mask-size": { - "links": { - "tr": "#the-mask-size", - "dev": "#the-mask-size" - }, - "tests": [ - "auto", "10px", "cover", "contain", "10px", "50%", "10px auto", "auto 10%", "50em 50%", - "6px, auto, contain", "10px auto, auto, contain, 50em 50%" - ] - }, - "mask-composite": { - "links": { - "tr": "#the-mask-composite", - "dev": "#the-mask-composite" - }, - "tests": ["add", "subtract", "intersect", "exclude"] - }, - "mask": { - "links": { - "tr": "#the-mask", - "dev": "#the-mask" - }, - "tests": [ - "top", "space", - "url(image.png)", - "url(image.png) luminance", - "url(image.png) luminance top space", - "url(masks.svg#star) left / 16px repeat-y, url(masks.svg#circle) right / 16px repeat-y" - ] - }, - "mask-border-source": { - "links": { - "tr": "#the-mask-border-source", - "dev": "#the-mask-border-source" - }, - "tests": ["none", "url(image.png)"] - }, - "mask-border-slice": { - "links": { - "tr": "#the-mask-border-slice", - "dev": "#the-mask-border-slice" - }, - "tests": ["0 fill", "50% fill", "1.1 fill", "0 1 fill", "0 1 2 fill", "0 1 2 3 fill"] - }, - "mask-border-width": { - "links": { - "tr": "#the-mask-border-width", - "dev": "#the-mask-border-width" - }, - "tests": ["auto", "10px", "50%", "1", "1.0", "auto 1", "auto 1 50%", "auto 1 50% 1.1"] - }, - "mask-border-outset": { - "links": { - "tr": "#the-mask-border-outset", - "dev": "#the-mask-border-outset" - }, - "tests": ["0", "1.1", "0 1", "0 1 2", "0 1 2 3"] - }, - "mask-border-repeat": { - "links": { - "tr": "#the-mask-border-repeat", - "dev": "#the-mask-border-repeat" - }, - "tests": [ - "stretch", "repeat", "round", "space", "stretch stretch", "repeat stretch", - "round stretch", "space stretch", "stretch repeat", "repeat repeat", - "round repeat", "space repeat", "stretch round", "repeat round", "round round", - "space round", "stretch space", "repeat space", "round space", "space space" - ] - }, - "mask-border": { - "links": { - "tr": "#the-mask-border", - "dev": "#the-mask-border" - }, - "tests": [ - "url(image.png)", - "url(image.png) 10px", - "url(image.png) space", - "url(image.png) 1 fill", - "url(image.png) 1 fill 10px", - "url(image.png) 1 fill 10px", - "url(image.png) 1 fill 10px 2" - ] - }, - "mask-type": { - "links": { - "tr": "#the-mask-type", - "dev": "#the-mask-type" - }, - "tests": ["luminance", "alpha"] - } - } + 'circle() border-box', + 'border-box', + 'padding-box', + 'content-box', + 'margin-box', + 'fill-box', + 'stroke-box', + 'view-box', + 'none', + ], + }, + 'clip-rule': { + links: { + tr: '#the-clip-rule', + dev: '#the-clip-rule', + }, + tests: ['nonzero', 'evenodd'], + }, + 'mask-image': { + links: { + tr: '#the-mask-image', + dev: '#the-mask-image', + }, + tests: [ + 'none', + 'linear-gradient(black 0%, transparent 100%)', + 'url(image.png)', + 'url(masks.svg#mask1)', + 'url(image.png), url(image2.png)', + ], + }, + 'mask-mode': { + links: { + tr: '#the-mask-mode', + dev: '#the-mask-mode', + }, + tests: ['alpha', 'luminance', 'match-source', 'alpha, match-source'], + }, + 'mask-repeat': { + links: { + tr: '#the-mask-repeat', + dev: '#the-mask-repeat', + }, + tests: [ + 'repeat-x', + 'repeat-y', + 'repeat', + 'space', + 'round', + 'no-repeat', + 'repeat repeat', + 'space repeat', + 'round repeat', + 'no-repeat repeat', + 'repeat space', + 'space space', + 'round space', + 'no-repeat space', + 'repeat round', + 'space round', + 'round round', + 'no-repeat round', + 'repeat no-repeat', + 'space no-repeat', + 'round no-repeat', + 'no-repeat no-repeat', + 'repeat-x, repeat-y', + 'space no-repeat, no-repeat repeat, round', + ], + }, + 'mask-position': { + links: { + tr: '#the-mask-position', + dev: '#the-mask-position', + }, + tests: [ + 'left', + 'center', + 'right', + 'top', + 'bottom', + 'left top', + 'left center', + 'center center', + 'right bottom', + 'left 50%', + 'bottom 10px right 20px', + 'left, top', + 'bottom 10px right 20px, left, center center', + ], + }, + 'mask-clip': { + links: { + tr: '#the-mask-clip', + dev: '#the-mask-clip', + }, + tests: [ + 'border-box', + 'padding-box', + 'content-box', + 'margin-box', + 'fill-box', + 'stroke-box', + 'view-box', + 'no-clip', + 'padding-box, no-clip', + ], + }, + 'mask-origin': { + links: { + tr: '#the-mask-origin', + dev: '#the-mask-origin', + }, + tests: [ + 'border-box', + 'padding-box', + 'content-box', + 'margin-box', + 'fill-box', + 'stroke-box', + 'view-box', + 'padding-box, content-box', + ], + }, + 'mask-size': { + links: { + tr: '#the-mask-size', + dev: '#the-mask-size', + }, + tests: [ + 'auto', + '10px', + 'cover', + 'contain', + '10px', + '50%', + '10px auto', + 'auto 10%', + '50em 50%', + '6px, auto, contain', + '10px auto, auto, contain, 50em 50%', + ], + }, + 'mask-composite': { + links: { + tr: '#the-mask-composite', + dev: '#the-mask-composite', + }, + tests: ['add', 'subtract', 'intersect', 'exclude'], + }, + mask: { + links: { + tr: '#the-mask', + dev: '#the-mask', + }, + tests: [ + 'top', + 'space', + 'url(image.png)', + 'url(image.png) luminance', + 'url(image.png) luminance top space', + 'url(masks.svg#star) left / 16px repeat-y, url(masks.svg#circle) right / 16px repeat-y', + ], + }, + 'mask-border-source': { + links: { + tr: '#the-mask-border-source', + dev: '#the-mask-border-source', + }, + tests: ['none', 'url(image.png)'], + }, + 'mask-border-slice': { + links: { + tr: '#the-mask-border-slice', + dev: '#the-mask-border-slice', + }, + tests: ['0 fill', '50% fill', '1.1 fill', '0 1 fill', '0 1 2 fill', '0 1 2 3 fill'], + }, + 'mask-border-width': { + links: { + tr: '#the-mask-border-width', + dev: '#the-mask-border-width', + }, + tests: ['auto', '10px', '50%', '1', '1.0', 'auto 1', 'auto 1 50%', 'auto 1 50% 1.1'], + }, + 'mask-border-outset': { + links: { + tr: '#the-mask-border-outset', + dev: '#the-mask-border-outset', + }, + tests: ['0', '1.1', '0 1', '0 1 2', '0 1 2 3'], + }, + 'mask-border-repeat': { + links: { + tr: '#the-mask-border-repeat', + dev: '#the-mask-border-repeat', + }, + tests: [ + 'stretch', + 'repeat', + 'round', + 'space', + 'stretch stretch', + 'repeat stretch', + 'round stretch', + 'space stretch', + 'stretch repeat', + 'repeat repeat', + 'round repeat', + 'space repeat', + 'stretch round', + 'repeat round', + 'round round', + 'space round', + 'stretch space', + 'repeat space', + 'round space', + 'space space', + ], + }, + 'mask-border': { + links: { + tr: '#the-mask-border', + dev: '#the-mask-border', + }, + tests: [ + 'url(image.png)', + 'url(image.png) 10px', + 'url(image.png) space', + 'url(image.png) 1 fill', + 'url(image.png) 1 fill 10px', + 'url(image.png) 1 fill 10px', + 'url(image.png) 1 fill 10px 2', + ], + }, + 'mask-type': { + links: { + tr: '#the-mask-type', + dev: '#the-mask-type', + }, + tests: ['luminance', 'alpha'], + }, + }, }; diff --git a/tests/css-multicol-1.js b/tests/css-multicol-1.js index da3d3de4..6e7fa799 100644 --- a/tests/css-multicol-1.js +++ b/tests/css-multicol-1.js @@ -1,76 +1,76 @@ export default { - "title": "CSS Multi-column Layout Module Level 1", - "links": { - "tr": "css-multicol-1", - "dev": "css-multicol-1" + title: 'CSS Multi-column Layout Module Level 1', + links: { + tr: 'css-multicol-1', + dev: 'css-multicol-1', }, - "status": { - "stability": "stable", - "first-snapshot": 2015 + status: { + stability: 'stable', + 'first-snapshot': 2015, }, - "properties": { - "column-width": { - "links": { - "tr": "#cw", - "dev": "#cw" + properties: { + 'column-width': { + links: { + tr: '#cw', + dev: '#cw', }, - "tests": ["10em", "auto"] + tests: ['10em', 'auto'], }, - "column-count": { - "links": { - "tr": "#cc", - "dev": "#cc" + 'column-count': { + links: { + tr: '#cc', + dev: '#cc', }, - "tests": ["2", "auto"] + tests: ['2', 'auto'], }, - "columns": { - "links": { - "tr": "#columns", - "dev": "#columns" + columns: { + links: { + tr: '#columns', + dev: '#columns', }, - "tests": ["100px", "3", "10em 2", "auto 2", "10em auto", "auto auto", "2 10em", "auto 10em", "2 auto"] + tests: ['100px', '3', '10em 2', 'auto 2', '10em auto', 'auto auto', '2 10em', 'auto 10em', '2 auto'], }, - "column-rule-color": { - "links": { - "tr": "#crc", - "dev": "#crc" + 'column-rule-color': { + links: { + tr: '#crc', + dev: '#crc', }, - "tests": "red" + tests: 'red', }, - "column-rule-style": { - "links": { - "tr": "#crs", - "dev": "#crs" + 'column-rule-style': { + links: { + tr: '#crs', + dev: '#crs', }, - "tests": ["none", "solid", "dotted"] + tests: ['none', 'solid', 'dotted'], }, - "column-rule-width": { - "links": { - "tr": "#crw", - "dev": "#crw" + 'column-rule-width': { + links: { + tr: '#crw', + dev: '#crw', }, - "tests": "1px" + tests: '1px', }, - "column-rule": { - "links": { - "tr": "#column-rule", - "dev": "#cr" + 'column-rule': { + links: { + tr: '#column-rule', + dev: '#cr', }, - "tests": ["transparent", "1px solid black"] + tests: ['transparent', '1px solid black'], }, - "column-span": { - "links": { - "tr": "#column-span", - "dev": "#column-span" + 'column-span': { + links: { + tr: '#column-span', + dev: '#column-span', }, - "tests": ["none", "all"] + tests: ['none', 'all'], }, - "column-fill": { - "links": { - "tr": "#cf", - "dev": "#cf" + 'column-fill': { + links: { + tr: '#cf', + dev: '#cf', }, - "tests": ["auto", "balance", "balance-all"] - } - } + tests: ['auto', 'balance', 'balance-all'], + }, + }, }; diff --git a/tests/css-multicol-2.js b/tests/css-multicol-2.js index 2d4c7ab1..b888d669 100644 --- a/tests/css-multicol-2.js +++ b/tests/css-multicol-2.js @@ -1,17 +1,17 @@ export default { - "title": "CSS Multi-column Layout Module Level 2", - "links": { - "dev": "css-multicol-2" + title: 'CSS Multi-column Layout Module Level 2', + links: { + dev: 'css-multicol-2', }, - "status": { - "stability": "experimental" + status: { + stability: 'experimental', }, - "properties": { - "column-span": { - "links": { - "dev": "#column-span" + properties: { + 'column-span': { + links: { + dev: '#column-span', }, - "tests": ["2", "auto"] - } - } + tests: ['2', 'auto'], + }, + }, }; diff --git a/tests/css-nav-1.js b/tests/css-nav-1.js index d6214c96..6c3c998b 100644 --- a/tests/css-nav-1.js +++ b/tests/css-nav-1.js @@ -1,33 +1,33 @@ export default { - "title": "CSS Spatial Navigation Level 1", - "links": { - "tr": "css-nav-1", - "dev": "css-nav-1" + title: 'CSS Spatial Navigation Level 1', + links: { + tr: 'css-nav-1', + dev: 'css-nav-1', }, - "status": { - "stability": "experimental" + status: { + stability: 'experimental', }, - "properties": { - "spatial-navigation-action": { - "links": { - "tr": "#css-property-spatialnavigationaction", - "dev": "#css-property-spatialnavigationaction" + properties: { + 'spatial-navigation-action': { + links: { + tr: '#css-property-spatialnavigationaction', + dev: '#css-property-spatialnavigationaction', }, - "tests": ["auto", "focus", "scroll"] + tests: ['auto', 'focus', 'scroll'], }, - "spatial-navigation-contain": { - "links": { - "tr": "#container", - "dev": "#container" + 'spatial-navigation-contain': { + links: { + tr: '#container', + dev: '#container', }, - "tests": ["auto", "contain"] + tests: ['auto', 'contain'], }, - "spatial-navigation-function": { - "links": { - "tr": "#css-property-spatialnavigationfunction", - "dev": "#css-property-spatialnavigationfunction" + 'spatial-navigation-function': { + links: { + tr: '#css-property-spatialnavigationfunction', + dev: '#css-property-spatialnavigationfunction', }, - "tests": ["normal", "grid"] - } - } + tests: ['normal', 'grid'], + }, + }, }; diff --git a/tests/css-overflow-3.js b/tests/css-overflow-3.js index 2c751015..059a1e5d 100644 --- a/tests/css-overflow-3.js +++ b/tests/css-overflow-3.js @@ -1,79 +1,76 @@ export default { - "title": "CSS Overflow Module Level 3", - "links": { - "tr": "css-overflow-3", - "dev": "css-overflow-3" + title: 'CSS Overflow Module Level 3', + links: { + tr: 'css-overflow-3', + dev: 'css-overflow-3', }, - "status": { - "stability": "experimental" + status: { + stability: 'experimental', }, - "properties": { - "line-clamp": { - "links": { - "tr": "#line-clamp", - "dev": "#line-clamp", - "mdn": "-webkit-line-clamp" + properties: { + 'line-clamp': { + links: { + tr: '#line-clamp', + dev: '#line-clamp', + mdn: '-webkit-line-clamp', }, - "tests": ["none", "1", "5 clip", "5 ellipsis", "5 \"… (continued on next page)\""] + tests: ['none', '1', '5 clip', '5 ellipsis', '5 "… (continued on next page)"'], }, - "max-lines": { - "links": { - "tr": "#max-lines", - "dev": "#max-lines" + 'max-lines': { + links: { + tr: '#max-lines', + dev: '#max-lines', }, - "tests": ["none", "1"] + tests: ['none', '1'], }, - "overflow-x": { - "links": { - "tr": "#overflow-properties", - "dev": "#overflow-properties" + 'overflow-x': { + links: { + tr: '#overflow-properties', + dev: '#overflow-properties', }, - "tests": ["visible", "hidden", "clip", "scroll", "auto"] + tests: ['visible', 'hidden', 'clip', 'scroll', 'auto'], }, - "overflow-y": { - "links": { - "tr": "#overflow-properties", - "dev": "#overflow-properties" + 'overflow-y': { + links: { + tr: '#overflow-properties', + dev: '#overflow-properties', }, - "tests": ["visible", "hidden", "clip", "scroll", "auto"] + tests: ['visible', 'hidden', 'clip', 'scroll', 'auto'], }, - "overflow-inline": { - "links": { - "tr": "#logical", - "dev": "#logical" + 'overflow-inline': { + links: { + tr: '#logical', + dev: '#logical', }, - "tests": ["visible", "hidden", "clip", "scroll", "auto"] + tests: ['visible', 'hidden', 'clip', 'scroll', 'auto'], }, - "overflow-block": { - "links": { - "tr": "#logical", - "dev": "#logical" + 'overflow-block': { + links: { + tr: '#logical', + dev: '#logical', }, - "tests": ["visible", "hidden", "clip", "scroll", "auto"] + tests: ['visible', 'hidden', 'clip', 'scroll', 'auto'], }, - "overflow-clip-margin": { - "links": { - "tr": "#overflow-clip-margin", - "dev": "#overflow-clip-margin" + 'overflow-clip-margin': { + links: { + tr: '#overflow-clip-margin', + dev: '#overflow-clip-margin', }, - "tests": ["content-box", "padding-box", "border-box", "20px"] - + tests: ['content-box', 'padding-box', 'border-box', '20px'], }, - "continue": { - "links": { - "tr": "#continue", - "dev": "#continue" + continue: { + links: { + tr: '#continue', + dev: '#continue', }, - "tests": ["auto", "discard"] + tests: ['auto', 'discard'], }, - "scrollbar-gutter": { - "links": { - "tr": "scrollbar-gutter-property", - "dev": "#scrollbar-gutter-property" + 'scrollbar-gutter': { + links: { + tr: 'scrollbar-gutter-property', + dev: '#scrollbar-gutter-property', }, - "tests": [ - "auto", "stable", "both-edges stable", "stable both-edges", - ] - } - } + tests: ['auto', 'stable', 'both-edges stable', 'stable both-edges'], + }, + }, }; diff --git a/tests/css-overflow-4.js b/tests/css-overflow-4.js index 84ac89fa..a1edb288 100644 --- a/tests/css-overflow-4.js +++ b/tests/css-overflow-4.js @@ -1,25 +1,33 @@ export default { - "title": "CSS Overflow Module Level 4", - "links": { - "tr": "css-overflow-4", - "dev": "css-overflow-4" + title: 'CSS Overflow Module Level 4', + links: { + tr: 'css-overflow-4', + dev: 'css-overflow-4', }, - "status": { - "stability": "experimental" + status: { + stability: 'experimental', }, - "selectors": { - "::nth-fragment()": { - "links": { - "tr": "#fragment-pseudo-element", - "dev": "#fragment-pseudo-element" + selectors: { + '::nth-fragment()': { + links: { + tr: '#fragment-pseudo-element', + dev: '#fragment-pseudo-element', }, - "tests": [ - ":nth-fragment(even)", ":nth-fragment(odd)", - ":nth-fragment(n)", ":nth-fragment(-n)", ":nth-fragment(0n)", - ":nth-fragment(1)", ":nth-fragment(-1)", ":nth-fragment(0)", - ":nth-fragment(n+1)", ":nth-fragment(3n+1)", ":nth-fragment(3n + 1)", - ":nth-fragment(-n+1)", ":nth-fragment(3n-1)" - ] - } - } + tests: [ + ':nth-fragment(even)', + ':nth-fragment(odd)', + ':nth-fragment(n)', + ':nth-fragment(-n)', + ':nth-fragment(0n)', + ':nth-fragment(1)', + ':nth-fragment(-1)', + ':nth-fragment(0)', + ':nth-fragment(n+1)', + ':nth-fragment(3n+1)', + ':nth-fragment(3n + 1)', + ':nth-fragment(-n+1)', + ':nth-fragment(3n-1)', + ], + }, + }, }; diff --git a/tests/css-overscroll-1.js b/tests/css-overscroll-1.js index 743c108e..eb50c112 100644 --- a/tests/css-overscroll-1.js +++ b/tests/css-overscroll-1.js @@ -1,46 +1,55 @@ export default { - "title": "CSS Overscroll Behavior Module Level 1", - "links": { - "tr": "css-overscroll-1", - "dev": "css-overscroll-1" + title: 'CSS Overscroll Behavior Module Level 1', + links: { + tr: 'css-overscroll-1', + dev: 'css-overscroll-1', }, - "status": { - "stability": "experimental" + status: { + stability: 'experimental', }, - "properties": { - "overscroll-behavior": { - "links": { - "dev": "#overscroll-behavior-properties" + properties: { + 'overscroll-behavior': { + links: { + dev: '#overscroll-behavior-properties', }, - "tests": [ - "contain", "none", "auto", "contain contain", "none contain", - "auto contain", "contain none", "none none", "auto none", - "contain auto", "none auto", "auto auto" - ] + tests: [ + 'contain', + 'none', + 'auto', + 'contain contain', + 'none contain', + 'auto contain', + 'contain none', + 'none none', + 'auto none', + 'contain auto', + 'none auto', + 'auto auto', + ], }, - "overscroll-behavior-x": { - "links": { - "dev": "#overscroll-behavior-longhands-physical" + 'overscroll-behavior-x': { + links: { + dev: '#overscroll-behavior-longhands-physical', }, - "tests": ["contain", "none", "auto"] + tests: ['contain', 'none', 'auto'], }, - "overscroll-behavior-y": { - "links": { - "dev": "#overscroll-behavior-longhands-physical" + 'overscroll-behavior-y': { + links: { + dev: '#overscroll-behavior-longhands-physical', }, - "tests": ["contain", "none", "auto"] + tests: ['contain', 'none', 'auto'], }, - "overscroll-behavior-inline": { - "links": { - "dev": "#overscroll-behavior-longhands-logical" + 'overscroll-behavior-inline': { + links: { + dev: '#overscroll-behavior-longhands-logical', }, - "tests": ["contain", "none", "auto"] + tests: ['contain', 'none', 'auto'], }, - "overscroll-behavior-block": { - "links": { - "dev": "#overscroll-behavior-longhands-logical" + 'overscroll-behavior-block': { + links: { + dev: '#overscroll-behavior-longhands-logical', }, - "tests": ["contain", "none", "auto"] - } - } + tests: ['contain', 'none', 'auto'], + }, + }, }; diff --git a/tests/css-page-3.js b/tests/css-page-3.js index 8fda13e3..32c10fe5 100644 --- a/tests/css-page-3.js +++ b/tests/css-page-3.js @@ -1,77 +1,78 @@ export default { - "title": "Paged Media Module Level 3", - "links": { - "tr": "css-page-3", - "dev": "css-page-3" + title: 'Paged Media Module Level 3', + links: { + tr: 'css-page-3', + dev: 'css-page-3', }, - "status": { - "stability": "experimental" + status: { + stability: 'experimental', }, - "properties": { - "page": { - "links": { - "tr": "#using-named-pages", - "dev": "#using-named-pagest" + properties: { + page: { + links: { + tr: '#using-named-pages', + dev: '#using-named-pagest', }, - "tests": ["auto", "customName"] + tests: ['auto', 'customName'], }, }, - "@rules": { - "@page": { - "links": { - "tr": "#at-page-rule", - "dev": "#at-page-rule" + '@rules': { + '@page': { + links: { + tr: '#at-page-rule', + dev: '#at-page-rule', }, - "tests": [ - "@page :blank { margin: 2cm }", - "@page customName { margin: 2cm }" - ] - } + tests: ['@page :blank { margin: 2cm }', '@page customName { margin: 2cm }'], + }, }, - "descriptors": { - "@page/size": { - "links": { - "tr": "#page-size-prop", - "dev": "#page-size-prop" + descriptors: { + '@page/size': { + links: { + tr: '#page-size-prop', + dev: '#page-size-prop', }, - "tests": [ - "4in 6in", "4em 6em", - "auto", - "landscape", - "portrait", - "a3", "a4", "a5", "b4", "b5", "jis-b4", "jis-b5", "ledger", "legal", "letter", - "a3 landscape", - "a3 portrait", - "landscape a3", - "portrait a3" - ] + tests: [ + '4in 6in', + '4em 6em', + 'auto', + 'landscape', + 'portrait', + 'a3', + 'a4', + 'a5', + 'b4', + 'b5', + 'jis-b4', + 'jis-b5', + 'ledger', + 'legal', + 'letter', + 'a3 landscape', + 'a3 portrait', + 'landscape a3', + 'portrait a3', + ], }, - "@page/page-orientation": { - "links": { - "tr": "#page-orientation-prop", - "dev": "#page-orientation-prop" + '@page/page-orientation': { + links: { + tr: '#page-orientation-prop', + dev: '#page-orientation-prop', }, - "tests": [ - "upright", "rotate-left", "rotate-right" - ] + tests: ['upright', 'rotate-left', 'rotate-right'], }, - "@page/marks": { - "links": { - "tr": "#marks", - "dev": "#marks" + '@page/marks': { + links: { + tr: '#marks', + dev: '#marks', }, - "tests": [ - "none", "crop", "cross", "crop cross" - ] + tests: ['none', 'crop', 'cross', 'crop cross'], }, - "@page/bleed": { - "links": { - "tr": "#bleed", - "dev": "#bleed" + '@page/bleed': { + links: { + tr: '#bleed', + dev: '#bleed', }, - "tests": [ - "auto", "6pt" - ] - } - } + tests: ['auto', '6pt'], + }, + }, }; diff --git a/tests/css-paint-api-1.js b/tests/css-paint-api-1.js index 41400040..34a57af4 100644 --- a/tests/css-paint-api-1.js +++ b/tests/css-paint-api-1.js @@ -1,29 +1,26 @@ export default { - "title": "CSS Painting API Level 1", - "links": { - "tr": "css-paint-api-1", - "dev": "css-paint-api-1", - "devtype": "houdini" + title: 'CSS Painting API Level 1', + links: { + tr: 'css-paint-api-1', + dev: 'css-paint-api-1', + devtype: 'houdini', }, - "status": { - "stability": "experimental" + status: { + stability: 'experimental', }, - "values": { - "properties": [ - "background-image", - "list-style-image", - "border-image", - "cursor", - "content" - ], - "paint()": { - "links": { - "tr": "#paint-notation", - "dev": "#paint-notation" + values: { + properties: ['background-image', 'list-style-image', 'border-image', 'cursor', 'content'], + 'paint()': { + links: { + tr: '#paint-notation', + dev: '#paint-notation', }, - "tests": [ - "paint(company-logo)", "paint(chat-bubble, blue)", "paint(failing-argument-syntax, 1px, 2px)", "paint(arc, purple, 0.4turn, 0.8turn, 40px, 15px)" - ] - } - } + tests: [ + 'paint(company-logo)', + 'paint(chat-bubble, blue)', + 'paint(failing-argument-syntax, 1px, 2px)', + 'paint(arc, purple, 0.4turn, 0.8turn, 40px, 15px)', + ], + }, + }, }; diff --git a/tests/css-position-3.js b/tests/css-position-3.js index 8dde0eaf..181566c4 100644 --- a/tests/css-position-3.js +++ b/tests/css-position-3.js @@ -1,68 +1,68 @@ export default { - "title": "CSS Positioned Layout Module Level 3", - "links": { - "tr": "css-position-3", - "dev": "css-position-3" + title: 'CSS Positioned Layout Module Level 3', + links: { + tr: 'css-position-3', + dev: 'css-position-3', }, - "status": { - "stability": "stable" + status: { + stability: 'stable', }, - "properties": { - "position": { - "links": { - "tr": "#position-property", - "dev": "#position-property" + properties: { + position: { + links: { + tr: '#position-property', + dev: '#position-property', }, - "tests": ["sticky"] + tests: ['sticky'], }, - "inset": { - "links": { - "tr": "#inset-shorthands", - "dev": "#inset-shorthands" + inset: { + links: { + tr: '#inset-shorthands', + dev: '#inset-shorthands', }, - "tests": ["auto", "10px", "50%", "10px 5%", "10px 5% 20px", "10px 5% 20px 10%"] + tests: ['auto', '10px', '50%', '10px 5%', '10px 5% 20px', '10px 5% 20px 10%'], }, - "inset-block": { - "links": { - "tr": "#inset-shorthands", - "dev": "#inset-shorthands" + 'inset-block': { + links: { + tr: '#inset-shorthands', + dev: '#inset-shorthands', }, - "tests": ["auto", "10px", "50%", "10px 5%"] + tests: ['auto', '10px', '50%', '10px 5%'], }, - "inset-inline": { - "links": { - "tr": "#inset-shorthands", - "dev": "#inset-shorthands" + 'inset-inline': { + links: { + tr: '#inset-shorthands', + dev: '#inset-shorthands', }, - "tests": ["auto", "10px", "50%", "10px 5%"] + tests: ['auto', '10px', '50%', '10px 5%'], }, - "inset-block-start": { - "links": { - "tr": "#insets", - "dev": "#insets" + 'inset-block-start': { + links: { + tr: '#insets', + dev: '#insets', }, - "tests": ["auto", "10px", "50%"] + tests: ['auto', '10px', '50%'], }, - "inset-block-end": { - "links": { - "tr": "#insets", - "dev": "#insets" + 'inset-block-end': { + links: { + tr: '#insets', + dev: '#insets', }, - "tests": ["auto", "10px", "50%"] + tests: ['auto', '10px', '50%'], }, - "inset-inline-start": { - "links": { - "tr": "#insets", - "dev": "#insets" + 'inset-inline-start': { + links: { + tr: '#insets', + dev: '#insets', }, - "tests": ["auto", "10px", "50%"] + tests: ['auto', '10px', '50%'], }, - "inset-inline-end": { - "links": { - "tr": "#insets", - "dev": "#insets" + 'inset-inline-end': { + links: { + tr: '#insets', + dev: '#insets', }, - "tests": ["auto", "10px", "50%"] + tests: ['auto', '10px', '50%'], }, - } + }, }; diff --git a/tests/css-pseudo-4.js b/tests/css-pseudo-4.js index 0fc6a591..f3301785 100644 --- a/tests/css-pseudo-4.js +++ b/tests/css-pseudo-4.js @@ -1,61 +1,61 @@ export default { - "title": "CSS Pseudo-Elements Module Level 4", - "links": { - "tr": "css-pseudo-4", - "dev": "css-pseudo-4" + title: 'CSS Pseudo-Elements Module Level 4', + links: { + tr: 'css-pseudo-4', + dev: 'css-pseudo-4', }, - "status": { - "stability": "experimental" + status: { + stability: 'experimental', }, - "selectors": { - "::selection": { - "links": { - "tr": "#selectordef-selection", - "dev": "#selectordef-selection" + selectors: { + '::selection': { + links: { + tr: '#selectordef-selection', + dev: '#selectordef-selection', }, - "tests": ["::selection"] + tests: ['::selection'], }, - "::target-text": { - "links": { - "tr": "#selectordef-target-text", - "dev": "#selectordef-target-text" + '::target-text': { + links: { + tr: '#selectordef-target-text', + dev: '#selectordef-target-text', }, - "tests": ["::target-text"] + tests: ['::target-text'], }, - "::spelling-error": { - "links": { - "tr": "#selectordef-spelling-error", - "dev": "#selectordef-spelling-error" + '::spelling-error': { + links: { + tr: '#selectordef-spelling-error', + dev: '#selectordef-spelling-error', }, - "tests": ["::spelling-error"] + tests: ['::spelling-error'], }, - "::grammar-error": { - "links": { - "tr": "#selectordef-grammar-error", - "dev": "#selectordef-grammar-error" + '::grammar-error': { + links: { + tr: '#selectordef-grammar-error', + dev: '#selectordef-grammar-error', }, - "tests": ["::grammar-error"] + tests: ['::grammar-error'], }, - "::file-selector-button": { - "links": { - "tr": "#marker-pseudo", - "dev": "#marker-pseudo" + '::file-selector-button': { + links: { + tr: '#marker-pseudo', + dev: '#marker-pseudo', }, - "tests": ["::file-selector-button"] + tests: ['::file-selector-button'], }, - "::marker": { - "links": { - "tr": "#marker-pseudo", - "dev": "#marker-pseudo" + '::marker': { + links: { + tr: '#marker-pseudo', + dev: '#marker-pseudo', }, - "tests": ["::marker"] + tests: ['::marker'], }, - "::placeholder": { - "links": { - "tr": "#placeholder-pseudo", - "dev": "#placeholder-pseudo" + '::placeholder': { + links: { + tr: '#placeholder-pseudo', + dev: '#placeholder-pseudo', }, - "tests": ["::placeholder"] - } - } + tests: ['::placeholder'], + }, + }, }; diff --git a/tests/css-regions-1.js b/tests/css-regions-1.js index 3a24192e..7b692305 100644 --- a/tests/css-regions-1.js +++ b/tests/css-regions-1.js @@ -1,33 +1,33 @@ export default { - "title": "CSS Regions Module Level 1", - "links": { - "tr": "css-regions-1", - "dev": "css-regions-1" + title: 'CSS Regions Module Level 1', + links: { + tr: 'css-regions-1', + dev: 'css-regions-1', }, - "status": { - "stability": "experimental" + status: { + stability: 'experimental', }, - "properties": { - "flow-from": { - "links": { - "tr": "#flow-from", - "dev": "#flow-from" + properties: { + 'flow-from': { + links: { + tr: '#flow-from', + dev: '#flow-from', }, - "tests": ["none", "named-flow"] + tests: ['none', 'named-flow'], }, - "flow-into": { - "links": { - "tr": "#the-flow-into-property", - "dev": "#the-flow-into-property" + 'flow-into': { + links: { + tr: '#the-flow-into-property', + dev: '#the-flow-into-property', }, - "tests": ["none", "named-flow", "named-flow element", "named-flow content"] + tests: ['none', 'named-flow', 'named-flow element', 'named-flow content'], }, - "region-fragment": { - "links": { - "tr": "#the-region-fragment-property", - "dev": "#the-region-fragment-property" + 'region-fragment': { + links: { + tr: '#the-region-fragment-property', + dev: '#the-region-fragment-property', }, - "tests": ["auto", "break"] - } - } + tests: ['auto', 'break'], + }, + }, }; diff --git a/tests/css-rhythmic-1.js b/tests/css-rhythmic-1.js index 1d5bc7f2..c412be19 100644 --- a/tests/css-rhythmic-1.js +++ b/tests/css-rhythmic-1.js @@ -1,62 +1,62 @@ export default { - "title": "CSS Rhythmic Sizing", - "links": { - "tr": "css-rhythm-1", - "dev": "css-rhythm-1" + title: 'CSS Rhythmic Sizing', + links: { + tr: 'css-rhythm-1', + dev: 'css-rhythm-1', }, - "status": { - "stability": "experimental" + status: { + stability: 'experimental', }, - "properties": { - "line-height-step": { - "links": { - "tr": "#line-height-step", - "dev": "#line-height-step" + properties: { + 'line-height-step': { + links: { + tr: '#line-height-step', + dev: '#line-height-step', }, - "tests": ["none", "30px", "2em"] + tests: ['none', '30px', '2em'], }, - "block-step-size": { - "links": { - "tr": "#block-step-size", - "dev": "#block-step-size" + 'block-step-size': { + links: { + tr: '#block-step-size', + dev: '#block-step-size', }, - "tests": ["none", "30px", "2em"] + tests: ['none', '30px', '2em'], }, - "block-step-insert": { - "links": { - "tr": "#block-step-insert", - "dev": "#block-step-insert" + 'block-step-insert': { + links: { + tr: '#block-step-insert', + dev: '#block-step-insert', }, - "tests": ["margin", "padding"] + tests: ['margin', 'padding'], }, - "block-step-align": { - "links": { - "tr": "#block-step-align", - "dev": "#block-step-align" + 'block-step-align': { + links: { + tr: '#block-step-align', + dev: '#block-step-align', }, - "tests": ["auto", "center", "start", "end"] + tests: ['auto', 'center', 'start', 'end'], }, - "block-step-round": { - "links": { - "tr": "#block-step-round", - "dev": "#block-step-round" + 'block-step-round': { + links: { + tr: '#block-step-round', + dev: '#block-step-round', }, - "tests": ["up", "down", "nearest"] + tests: ['up', 'down', 'nearest'], }, - "block-step": { - "links": { - "tr": "#block-step", - "dev": "#block-step" + 'block-step': { + links: { + tr: '#block-step', + dev: '#block-step', }, - "tests": [ - "none", - "padding", - "end", - "down", - "30px margin", - "30px padding center", - "2em padding start nearest" - ] - } - } + tests: [ + 'none', + 'padding', + 'end', + 'down', + '30px margin', + '30px padding center', + '2em padding start nearest', + ], + }, + }, }; diff --git a/tests/css-ruby-1.js b/tests/css-ruby-1.js index eb69974c..aaed9d45 100644 --- a/tests/css-ruby-1.js +++ b/tests/css-ruby-1.js @@ -1,40 +1,40 @@ export default { - "title": "CSS Ruby Layout Module Level 1", - "links": { - "tr": "css-ruby-1", - "dev": "css-ruby-1" + title: 'CSS Ruby Layout Module Level 1', + links: { + tr: 'css-ruby-1', + dev: 'css-ruby-1', }, - "status": { - "stability": "experimental" + status: { + stability: 'experimental', }, - "properties": { - "display": { - "links": { - "tr": "#ruby-display", - "dev": "#ruby-display" + properties: { + display: { + links: { + tr: '#ruby-display', + dev: '#ruby-display', }, - "tests": ["ruby", "ruby-base", "ruby-text", "ruby-base-container", "ruby-text-container"] + tests: ['ruby', 'ruby-base', 'ruby-text', 'ruby-base-container', 'ruby-text-container'], }, - "ruby-position": { - "links": { - "tr": "#rubypos", - "dev": "#rubypos" + 'ruby-position': { + links: { + tr: '#rubypos', + dev: '#rubypos', }, - "tests": ["alternate", "over", "under", "alternate over", "alternate under", "inter-character"] + tests: ['alternate', 'over', 'under', 'alternate over', 'alternate under', 'inter-character'], }, - "ruby-merge": { - "links": { - "tr": "#collapsed-ruby", - "dev": "#collapsed-ruby" + 'ruby-merge': { + links: { + tr: '#collapsed-ruby', + dev: '#collapsed-ruby', }, - "tests": ["separate", "collapse", "auto"] + tests: ['separate', 'collapse', 'auto'], }, - "ruby-align": { - "links": { - "tr": "#ruby-align-property", - "dev": "#ruby-align-property" + 'ruby-align': { + links: { + tr: '#ruby-align-property', + dev: '#ruby-align-property', }, - "tests": ["start", "center", "space-between", "space-around"] - } - } + tests: ['start', 'center', 'space-between', 'space-around'], + }, + }, }; diff --git a/tests/css-scoping-1.js b/tests/css-scoping-1.js index c44ed947..46412a8f 100644 --- a/tests/css-scoping-1.js +++ b/tests/css-scoping-1.js @@ -1,41 +1,41 @@ export default { - "title": "CSS Scoping Module Level 1", - "links": { - "tr": "css-scoping-1", - "dev": "css-scoping-1" + title: 'CSS Scoping Module Level 1', + links: { + tr: 'css-scoping-1', + dev: 'css-scoping-1', }, - "status": { - "stability": "experimental" + status: { + stability: 'experimental', }, - "selectors": { - ":host": { - "links": { - "tr": "#host-selector", - "dev": "#host-selector" + selectors: { + ':host': { + links: { + tr: '#host-selector', + dev: '#host-selector', }, - "tests": ":host" + tests: ':host', }, - ":host()": { - "links": { - "tr": "#host-selector", - "dev": "#host-selector", - "mdn": ":host()" + ':host()': { + links: { + tr: '#host-selector', + dev: '#host-selector', + mdn: ':host()', }, - "tests": [":host(*)", ":host(.foo)"] + tests: [':host(*)', ':host(.foo)'], }, - ":host-context()": { - "links": { - "tr": "#host-selector", - "dev": "#host-selector", - "mdn": ":host-context()" + ':host-context()': { + links: { + tr: '#host-selector', + dev: '#host-selector', + mdn: ':host-context()', }, - "tests": [":host-context(*)", ":host-context(.foo)"] + tests: [':host-context(*)', ':host-context(.foo)'], }, - "::slotted()": { - "links": { - "dev": "#slotted-pseudo" + '::slotted()': { + links: { + dev: '#slotted-pseudo', }, - "tests": ["::slotted(*)", "::slotted(.foo)"] - } - } + tests: ['::slotted(*)', '::slotted(.foo)'], + }, + }, }; diff --git a/tests/css-scroll-anchoring-1.js b/tests/css-scroll-anchoring-1.js index 17e56d8e..f727131b 100644 --- a/tests/css-scroll-anchoring-1.js +++ b/tests/css-scroll-anchoring-1.js @@ -1,18 +1,18 @@ export default { - "title": "CSS Scroll Anchoring Module Level 1", - "links": { - "tr": "css-scroll-anchoring-1", - "dev": "css-scroll-anchoring-1" + title: 'CSS Scroll Anchoring Module Level 1', + links: { + tr: 'css-scroll-anchoring-1', + dev: 'css-scroll-anchoring-1', }, - "status": { - "stability": "experimental" + status: { + stability: 'experimental', }, - "properties": { - "overflow-anchor": { - "links": { - "dev": "#exclusion-api" + properties: { + 'overflow-anchor': { + links: { + dev: '#exclusion-api', }, - "tests": ["none", "auto"] - } - } + tests: ['none', 'auto'], + }, + }, }; diff --git a/tests/css-scroll-snap-1.js b/tests/css-scroll-snap-1.js index 37e270ea..bbfca3dd 100644 --- a/tests/css-scroll-snap-1.js +++ b/tests/css-scroll-snap-1.js @@ -1,190 +1,231 @@ export default { - "title": "CSS Scroll Snap Module Level 1", - "links": { - "tr": "css-scroll-snap-1", - "dev": "css-scroll-snap-1" + title: 'CSS Scroll Snap Module Level 1', + links: { + tr: 'css-scroll-snap-1', + dev: 'css-scroll-snap-1', }, - "status": { - "stability": "stable" + status: { + stability: 'stable', }, - "properties": { - "scroll-margin": { - "links": { - "tr": "#scroll-margin", - "dev": "#scroll-margin" + properties: { + 'scroll-margin': { + links: { + tr: '#scroll-margin', + dev: '#scroll-margin', + }, + tests: [ + '0px', + '6px 5px', + '10px 20px 30px', + '10px 20px 30px 40px', + '20px 3em 1in 5rem', + 'calc(2px)', + 'calc(3 * 25px)', + 'calc(3 * 25px) 5px 10em calc(1vw - 5px)', + ], + }, + 'scroll-margin-block': { + links: { + tr: '#margin-longhands-logical', + dev: '#margin-longhands-logical', + }, + tests: ['10px', '10px 10px'], + }, + 'scroll-margin-block-end': { + links: { + tr: '#margin-longhands-logical', + dev: '#margin-longhands-logical', + }, + tests: ['10px'], + }, + 'scroll-margin-block-start': { + links: { + tr: '#margin-longhands-logical', + dev: '#margin-longhands-logical', + }, + tests: ['10px'], + }, + 'scroll-margin-bottom': { + links: { + tr: '#margin-longhands-physical', + dev: '#margin-longhands-physical', + }, + tests: ['10px'], + }, + 'scroll-margin-inline': { + links: { + tr: '#margin-longhands-logical', + dev: '#margin-longhands-logical', + }, + tests: ['10px', '10px 10px'], + }, + 'scroll-margin-inline-start': { + links: { + tr: '#margin-longhands-logical', + dev: '#margin-longhands-logical', + }, + tests: ['10px'], + }, + 'scroll-margin-inline-end': { + links: { + tr: '#margin-longhands-logical', + dev: '#margin-longhands-logical', + }, + tests: ['10px'], + }, + 'scroll-margin-left': { + links: { + tr: '#margin-longhands-physical', + dev: '#margin-longhands-physical', }, - "tests": ["0px", "6px 5px", "10px 20px 30px", "10px 20px 30px 40px", "20px 3em 1in 5rem", "calc(2px)", "calc(3 * 25px)", "calc(3 * 25px) 5px 10em calc(1vw - 5px)"] - }, - "scroll-margin-block": { - "links": { - "tr": "#margin-longhands-logical", - "dev": "#margin-longhands-logical" - }, - "tests": ["10px", "10px 10px"] - }, - "scroll-margin-block-end": { - "links": { - "tr": "#margin-longhands-logical", - "dev": "#margin-longhands-logical" - }, - "tests": ["10px"] - }, - "scroll-margin-block-start": { - "links": { - "tr": "#margin-longhands-logical", - "dev": "#margin-longhands-logical" - }, - "tests": ["10px"] - }, - "scroll-margin-bottom": { - "links": { - "tr": "#margin-longhands-physical", - "dev": "#margin-longhands-physical" - }, - "tests": ["10px"] - }, - "scroll-margin-inline": { - "links": { - "tr": "#margin-longhands-logical", - "dev": "#margin-longhands-logical" - }, - "tests": ["10px", "10px 10px"] - }, - "scroll-margin-inline-start": { - "links": { - "tr": "#margin-longhands-logical", - "dev": "#margin-longhands-logical" - }, - "tests": ["10px"] - }, - "scroll-margin-inline-end": { - "links": { - "tr": "#margin-longhands-logical", - "dev": "#margin-longhands-logical" - }, - "tests": ["10px"] - }, - "scroll-margin-left": { - "links": { - "tr": "#margin-longhands-physical", - "dev": "#margin-longhands-physical" - }, - "tests": ["10px"] - }, - "scroll-margin-right": { - "links": { - "tr": "#margin-longhands-physical", - "dev": "#margin-longhands-physical" - }, - "tests": ["10px"] - }, - "scroll-margin-top": { - "links": { - "tr": "#margin-longhands-physical", - "dev": "#margin-longhands-physical" - }, - "tests": ["10px"] - }, - "scroll-padding": { - "links": { - "tr": "#scroll-padding", - "dev": "#scroll-padding" + tests: ['10px'], + }, + 'scroll-margin-right': { + links: { + tr: '#margin-longhands-physical', + dev: '#margin-longhands-physical', }, - "tests": ["auto", "0px", "6px 5px", "10px 20px 30px", "10px 20px 30px 40px", "10px auto 30px auto", "10%", "20% 3em 1in 5rem", "calc(2px)", "calc(50%)", "calc(3 * 25px)", "calc(3 * 25px) 5px 10% calc(10% - 5px)"] + tests: ['10px'], + }, + 'scroll-margin-top': { + links: { + tr: '#margin-longhands-physical', + dev: '#margin-longhands-physical', + }, + tests: ['10px'], + }, + 'scroll-padding': { + links: { + tr: '#scroll-padding', + dev: '#scroll-padding', + }, + tests: [ + 'auto', + '0px', + '6px 5px', + '10px 20px 30px', + '10px 20px 30px 40px', + '10px auto 30px auto', + '10%', + '20% 3em 1in 5rem', + 'calc(2px)', + 'calc(50%)', + 'calc(3 * 25px)', + 'calc(3 * 25px) 5px 10% calc(10% - 5px)', + ], + }, + 'scroll-padding-block': { + links: { + tr: '#padding-longhands-logical', + dev: '#padding-longhands-logical', + }, + tests: ['10px', '50%', '10px 50%', '50% 50%'], + }, + 'scroll-padding-block-end': { + links: { + tr: '#padding-longhands-logical', + dev: '#padding-longhands-logical', + }, + tests: ['10px', '50%'], + }, + 'scroll-padding-block-start': { + links: { + tr: '#padding-longhands-logical', + dev: '#padding-longhands-logical', + }, + tests: ['10px', '50%'], + }, + 'scroll-padding-bottom': { + links: { + tr: '#padding-longhands-physical', + dev: '#padding-longhands-physical', + }, + tests: ['10px', '50%'], + }, + 'scroll-padding-inline': { + links: { + tr: '#padding-longhands-logical', + dev: '#padding-longhands-logical', + }, + tests: ['10px', '50%', '10px 50%', '50% 50%'], + }, + 'scroll-padding-inline-end': { + links: { + tr: '#padding-longhands-logical', + dev: '#padding-longhands-logical', + }, + tests: ['10px', '50%'], + }, + 'scroll-padding-inline-start': { + links: { + tr: '#padding-longhands-logical', + dev: '#padding-longhands-logical', + }, + tests: ['10px', '50%'], + }, + 'scroll-padding-left': { + links: { + tr: '#padding-longhands-physical', + dev: '#padding-longhands-physical', + }, + tests: ['10px', '50%'], + }, + 'scroll-padding-right': { + links: { + tr: '#padding-longhands-physical', + dev: '#padding-longhands-physical', + }, + tests: ['10px', '50%'], + }, + 'scroll-padding-top': { + links: { + tr: '#padding-longhands-physical', + dev: '#padding-longhands-physical', + }, + tests: ['10px', '50%'], + }, + 'scroll-snap-align': { + links: { + tr: '#scroll-snap-align', + dev: '#scroll-snap-align', + }, + tests: [ + 'none', + 'start', + 'end', + 'center', + 'none start', + 'end center', + 'center start', + 'end none', + 'center center', + ], + }, + 'scroll-snap-stop': { + links: { + tr: '#scroll-snap-stop', + dev: '#scroll-snap-stop', + }, + tests: ['normal', 'always'], + }, + 'scroll-snap-type': { + links: { + tr: '#scroll-snap-type', + dev: '#scroll-snap-type', + }, + tests: [ + 'none', + 'x mandatory', + 'y mandatory', + 'block mandatory', + 'inline mandatory', + 'both mandatory', + 'x proximity', + 'y proximity', + 'block proximity', + 'inline proximity', + 'both proximity', + ], }, - "scroll-padding-block": { - "links": { - "tr": "#padding-longhands-logical", - "dev": "#padding-longhands-logical" - }, - "tests": ["10px", "50%", "10px 50%", "50% 50%"] - }, - "scroll-padding-block-end": { - "links": { - "tr": "#padding-longhands-logical", - "dev": "#padding-longhands-logical" - }, - "tests": ["10px", "50%"] - }, - "scroll-padding-block-start": { - "links": { - "tr": "#padding-longhands-logical", - "dev": "#padding-longhands-logical" - }, - "tests": ["10px", "50%"] - }, - "scroll-padding-bottom": { - "links": { - "tr": "#padding-longhands-physical", - "dev": "#padding-longhands-physical" - }, - "tests": ["10px", "50%"] - }, - "scroll-padding-inline": { - "links": { - "tr": "#padding-longhands-logical", - "dev": "#padding-longhands-logical" - }, - "tests": ["10px", "50%", "10px 50%", "50% 50%"] - }, - "scroll-padding-inline-end": { - "links": { - "tr": "#padding-longhands-logical", - "dev": "#padding-longhands-logical" - }, - "tests": ["10px", "50%"] - }, - "scroll-padding-inline-start": { - "links": { - "tr": "#padding-longhands-logical", - "dev": "#padding-longhands-logical" - }, - "tests": ["10px", "50%"] - }, - "scroll-padding-left": { - "links": { - "tr": "#padding-longhands-physical", - "dev": "#padding-longhands-physical" - }, - "tests": ["10px", "50%"] - }, - "scroll-padding-right": { - "links": { - "tr": "#padding-longhands-physical", - "dev": "#padding-longhands-physical" - }, - "tests": ["10px", "50%"] - }, - "scroll-padding-top": { - "links": { - "tr": "#padding-longhands-physical", - "dev": "#padding-longhands-physical" - }, - "tests": ["10px", "50%"] - }, - "scroll-snap-align": { - "links": { - "tr": "#scroll-snap-align", - "dev": "#scroll-snap-align" - }, - "tests": ["none", "start", "end", "center", "none start", "end center", "center start", "end none", "center center"] - }, - "scroll-snap-stop": { - "links": { - "tr": "#scroll-snap-stop", - "dev": "#scroll-snap-stop" - }, - "tests": ["normal", "always"] - }, - "scroll-snap-type": { - "links": { - "tr": "#scroll-snap-type", - "dev": "#scroll-snap-type" - }, - "tests": [ - "none", "x mandatory", "y mandatory", "block mandatory", "inline mandatory", "both mandatory", - "x proximity", "y proximity", "block proximity", "inline proximity", "both proximity" - ] - } - } + }, }; diff --git a/tests/css-scrollbars-1.js b/tests/css-scrollbars-1.js index c8d4e52c..d4a84f87 100644 --- a/tests/css-scrollbars-1.js +++ b/tests/css-scrollbars-1.js @@ -1,26 +1,26 @@ export default { - "title": "CSS Scrollbars Module Level 1", - "links": { - "tr": "css-scrollbars-1", - "dev": "css-scrollbars-1" + title: 'CSS Scrollbars Module Level 1', + links: { + tr: 'css-scrollbars-1', + dev: 'css-scrollbars-1', }, - "status": { - "stability": "stable" + status: { + stability: 'stable', }, - "properties": { - "scrollbar-color": { - "links": { - "tr": "#scrollbar-color", - "dev": "#scrollbar-color" + properties: { + 'scrollbar-color': { + links: { + tr: '#scrollbar-color', + dev: '#scrollbar-color', }, - "tests": ["auto", "red blue"] + tests: ['auto', 'red blue'], }, - "scrollbar-width": { - "links": { - "tr": "#scrollbar-width", - "dev": "#scrollbar-width" + 'scrollbar-width': { + links: { + tr: '#scrollbar-width', + dev: '#scrollbar-width', }, - "tests": ["auto", "thin", "none"] - } - } + tests: ['auto', 'thin', 'none'], + }, + }, }; diff --git a/tests/css-shadow-parts-1.js b/tests/css-shadow-parts-1.js index 01fbc528..a5a1db50 100644 --- a/tests/css-shadow-parts-1.js +++ b/tests/css-shadow-parts-1.js @@ -1,19 +1,19 @@ export default { - "title": "CSS Shadow Parts", - "links": { - "tr": "css-shadow-parts-1", - "dev": "css-shadow-parts-1" + title: 'CSS Shadow Parts', + links: { + tr: 'css-shadow-parts-1', + dev: 'css-shadow-parts-1', }, - "status": { - "stability": "experimental" + status: { + stability: 'experimental', }, - "selectors": { - "::part()": { - "links": { - "tr": "#part", - "dev": "#part" + selectors: { + '::part()': { + links: { + tr: '#part', + dev: '#part', }, - "tests": ["::part(label)"] - } - } + tests: ['::part(label)'], + }, + }, }; diff --git a/tests/css-shapes-1.js b/tests/css-shapes-1.js index e3aaa93b..996f24c2 100644 --- a/tests/css-shapes-1.js +++ b/tests/css-shapes-1.js @@ -1,40 +1,51 @@ export default { - "title": "CSS Shapes Module Level 1", - "links": { - "tr": "css-shapes-1", - "dev": "css-shapes-1" + title: 'CSS Shapes Module Level 1', + links: { + tr: 'css-shapes-1', + dev: 'css-shapes-1', }, - "status": { - "stability": "stable" + status: { + stability: 'stable', }, - "properties": { - "shape-outside": { - "links": { - "tr": "#shape-outside-property", - "dev": "#shape-outside-property" + properties: { + 'shape-outside': { + links: { + tr: '#shape-outside-property', + dev: '#shape-outside-property', }, - "tests": [ - "none", "inset(10% round 10% 40% 10% 40%)", "ellipse(at top 50% left 20%)", "circle(at right 5% top)", - "polygon(100% 0, 100% 100%, 0 100%)", "path('M 20 20 H 80 V 30')", - "margin-box", "border-box", "padding-box", "content-box", - "inset(10% round 10% 40% 10% 40%) margin-box", "ellipse(at top 50% left 20%) margin-box", - "circle(at right 5% top) margin-box", "polygon(100% 0, 100% 100%, 0 100%) margin-box", "path('M 20 20 H 80 V 30') margin-box", - "attr(src url)", "url(image.png)" - ] + tests: [ + 'none', + 'inset(10% round 10% 40% 10% 40%)', + 'ellipse(at top 50% left 20%)', + 'circle(at right 5% top)', + 'polygon(100% 0, 100% 100%, 0 100%)', + "path('M 20 20 H 80 V 30')", + 'margin-box', + 'border-box', + 'padding-box', + 'content-box', + 'inset(10% round 10% 40% 10% 40%) margin-box', + 'ellipse(at top 50% left 20%) margin-box', + 'circle(at right 5% top) margin-box', + 'polygon(100% 0, 100% 100%, 0 100%) margin-box', + "path('M 20 20 H 80 V 30') margin-box", + 'attr(src url)', + 'url(image.png)', + ], }, - "shape-image-threshold": { - "links": { - "tr": "#shape-image-threshold-property", - "dev": "#shape-image-threshold-property" + 'shape-image-threshold': { + links: { + tr: '#shape-image-threshold-property', + dev: '#shape-image-threshold-property', }, - "tests": ["0", "1", "0.0", "0.1"] + tests: ['0', '1', '0.0', '0.1'], }, - "shape-margin": { - "links": { - "tr": "#shape-margin-property", - "dev": "#shape-margin-property" + 'shape-margin': { + links: { + tr: '#shape-margin-property', + dev: '#shape-margin-property', }, - "tests": ["0", "10px", "50%"] - } - } + tests: ['0', '10px', '50%'], + }, + }, }; diff --git a/tests/css-shapes-2.js b/tests/css-shapes-2.js index 5d465b62..e000a63a 100644 --- a/tests/css-shapes-2.js +++ b/tests/css-shapes-2.js @@ -1,27 +1,34 @@ export default { - "title": "CSS Shapes Module Level 2", - "links": { - "dev": "css-shapes-2" + title: 'CSS Shapes Module Level 2', + links: { + dev: 'css-shapes-2', }, - "status": { - "stability": "experimental" + status: { + stability: 'experimental', }, - "properties": { - "shape-inside": { - "links": { - "dev": "#shape-inside-property" + properties: { + 'shape-inside': { + links: { + dev: '#shape-inside-property', }, - "tests": [ - "auto", "outside-shape", "shape-box", "display", "inset(10% round 10% 40% 10% 40%)", - "ellipse(at top 50% left 20%)", "circle(at right 5% top)", "polygon(100% 0, 100% 100%, 0 100%)", "path('M 20 20 H 80 V 30')", - "url(image.png)" - ] + tests: [ + 'auto', + 'outside-shape', + 'shape-box', + 'display', + 'inset(10% round 10% 40% 10% 40%)', + 'ellipse(at top 50% left 20%)', + 'circle(at right 5% top)', + 'polygon(100% 0, 100% 100%, 0 100%)', + "path('M 20 20 H 80 V 30')", + 'url(image.png)', + ], }, - "shape-padding": { - "links": { - "dev": "#shape-padding-property" + 'shape-padding': { + links: { + dev: '#shape-padding-property', }, - "tests": ["0", "10px", "50%"] - } - } + tests: ['0', '10px', '50%'], + }, + }, }; diff --git a/tests/css-sizing-3.js b/tests/css-sizing-3.js index 0e44846b..e181fc1e 100644 --- a/tests/css-sizing-3.js +++ b/tests/css-sizing-3.js @@ -1,61 +1,61 @@ export default { - "title": "CSS Box Sizing Module Level 3", - "links": { - "tr": "css-sizing-3", - "dev": "css-sizing-3" + title: 'CSS Box Sizing Module Level 3', + links: { + tr: 'css-sizing-3', + dev: 'css-sizing-3', }, - "status": { - "stability": "stable" + status: { + stability: 'stable', }, - "properties": { - "width": { - "links": { - "tr": "#preferred-size-properties", - "dev": "#preferred-size-properties" + properties: { + width: { + links: { + tr: '#preferred-size-properties', + dev: '#preferred-size-properties', }, - "tests": ["max-content", "min-content", "fit-content(10%)"] + tests: ['max-content', 'min-content', 'fit-content(10%)'], }, - "min-width": { - "links": { - "tr": "#min-size-properties", - "dev": "#min-size-properties" + 'min-width': { + links: { + tr: '#min-size-properties', + dev: '#min-size-properties', }, - "tests": ["max-content", "min-content", "fit-content(10%)"] + tests: ['max-content', 'min-content', 'fit-content(10%)'], }, - "max-width": { - "links": { - "tr": "#max-size-properties", - "dev": "#max-size-properties" + 'max-width': { + links: { + tr: '#max-size-properties', + dev: '#max-size-properties', }, - "tests": ["max-content", "min-content", "fit-content(10%)"] + tests: ['max-content', 'min-content', 'fit-content(10%)'], }, - "height": { - "links": { - "tr": "#preferred-size-properties", - "dev": "#preferred-size-properties" + height: { + links: { + tr: '#preferred-size-properties', + dev: '#preferred-size-properties', }, - "tests": ["max-content", "min-content", "fit-content(10%)"] + tests: ['max-content', 'min-content', 'fit-content(10%)'], }, - "min-height": { - "links": { - "tr": "#min-size-properties", - "dev": "#min-size-properties" + 'min-height': { + links: { + tr: '#min-size-properties', + dev: '#min-size-properties', }, - "tests": ["max-content", "min-content", "fit-content(10%)"] + tests: ['max-content', 'min-content', 'fit-content(10%)'], }, - "max-height": { - "links": { - "tr": "#max-size-properties", - "dev": "#max-size-properties" + 'max-height': { + links: { + tr: '#max-size-properties', + dev: '#max-size-properties', }, - "tests": ["max-content", "min-content", "fit-content(10%)"] + tests: ['max-content', 'min-content', 'fit-content(10%)'], }, - "column-width": { - "links": { - "tr": "#column-sizing", - "dev": "#column-sizing" + 'column-width': { + links: { + tr: '#column-sizing', + dev: '#column-sizing', }, - "tests": ["max-content", "min-content", "fit-content(10%)"] - } - } + tests: ['max-content', 'min-content', 'fit-content(10%)'], + }, + }, }; diff --git a/tests/css-sizing-4.js b/tests/css-sizing-4.js index 9a882b1a..06bde941 100644 --- a/tests/css-sizing-4.js +++ b/tests/css-sizing-4.js @@ -1,138 +1,138 @@ export default { - "title": "CSS Box Sizing Module Level 4", - "links": { - "tr": "css-sizing-4", - "dev": "css-sizing-4" + title: 'CSS Box Sizing Module Level 4', + links: { + tr: 'css-sizing-4', + dev: 'css-sizing-4', }, - "status": { - "stability": "experimental" + status: { + stability: 'experimental', }, - "properties": { - "aspect-ratio": { - "links": { - "tr": "#aspect-ratio", - "dev": "#aspect-ratio" + properties: { + 'aspect-ratio': { + links: { + tr: '#aspect-ratio', + dev: '#aspect-ratio', }, - "tests": ["auto", "2", "16 / 9", "auto 16 / 9"] + tests: ['auto', '2', '16 / 9', 'auto 16 / 9'], }, - "contain-intrinsic-size": { - "links": { - "tr": "#propdef-contain-intrinsic-size", - "dev": "#propdef-contain-intrinsic-size" + 'contain-intrinsic-size': { + links: { + tr: '#propdef-contain-intrinsic-size', + dev: '#propdef-contain-intrinsic-size', }, - "tests": ["none", "10px", "10px 15px"] + tests: ['none', '10px', '10px 15px'], }, - "contain-intrinsic-width": { - "links": { - "tr": "#intrinsic-size-override", - "dev": "#intrinsic-size-override" + 'contain-intrinsic-width': { + links: { + tr: '#intrinsic-size-override', + dev: '#intrinsic-size-override', }, - "tests": ["none", "10px"] + tests: ['none', '10px'], }, - "contain-intrinsic-height": { - "links": { - "tr": "#intrinsic-size-override", - "dev": "#intrinsic-size-override" + 'contain-intrinsic-height': { + links: { + tr: '#intrinsic-size-override', + dev: '#intrinsic-size-override', }, - "tests": ["none", "10px"] + tests: ['none', '10px'], }, - "contain-intrinsic-block-size": { - "links": { - "tr": "#intrinsic-size-override", - "dev": "#intrinsic-size-override" + 'contain-intrinsic-block-size': { + links: { + tr: '#intrinsic-size-override', + dev: '#intrinsic-size-override', }, - "tests": ["none", "10px"] + tests: ['none', '10px'], }, - "contain-intrinsic-inline-size": { - "links": { - "tr": "#intrinsic-size-override", - "dev": "#intrinsic-size-override" + 'contain-intrinsic-inline-size': { + links: { + tr: '#intrinsic-size-override', + dev: '#intrinsic-size-override', }, - "tests": ["none", "10px"] + tests: ['none', '10px'], }, - "width": { - "links": { - "tr": "#sizing-values", - "dev": "#sizing-values" + width: { + links: { + tr: '#sizing-values', + dev: '#sizing-values', }, - "tests": ["stretch", "fit-content", "contain"] + tests: ['stretch', 'fit-content', 'contain'], }, - "min-width": { - "links": { - "tr": "#sizing-values", - "dev": "#sizing-values" + 'min-width': { + links: { + tr: '#sizing-values', + dev: '#sizing-values', }, - "tests": ["stretch", "fit-content", "contain"] + tests: ['stretch', 'fit-content', 'contain'], }, - "max-width": { - "links": { - "tr": "#sizing-values", - "dev": "#sizing-values" + 'max-width': { + links: { + tr: '#sizing-values', + dev: '#sizing-values', }, - "tests": ["stretch", "fit-content", "contain"] + tests: ['stretch', 'fit-content', 'contain'], }, - "height": { - "links": { - "tr": "#sizing-values", - "dev": "#sizing-values" + height: { + links: { + tr: '#sizing-values', + dev: '#sizing-values', }, - "tests": ["stretch", "fit-content", "contain"] + tests: ['stretch', 'fit-content', 'contain'], }, - "min-height": { - "links": { - "tr": "#sizing-values", - "dev": "#sizing-values" + 'min-height': { + links: { + tr: '#sizing-values', + dev: '#sizing-values', }, - "tests": ["stretch", "fit-content", "contain"] + tests: ['stretch', 'fit-content', 'contain'], }, - "max-height": { - "links": { - "tr": "#sizing-values", - "dev": "#sizing-values" + 'max-height': { + links: { + tr: '#sizing-values', + dev: '#sizing-values', }, - "tests": ["stretch", "fit-content", "contain"] + tests: ['stretch', 'fit-content', 'contain'], }, - "inline-size": { - "links": { - "tr": "#sizing-values", - "dev": "#sizing-values" + 'inline-size': { + links: { + tr: '#sizing-values', + dev: '#sizing-values', }, - "tests": ["stretch", "fit-content", "contain"] + tests: ['stretch', 'fit-content', 'contain'], }, - "min-inline-size": { - "links": { - "tr": "#sizing-values", - "dev": "#sizing-values" + 'min-inline-size': { + links: { + tr: '#sizing-values', + dev: '#sizing-values', }, - "tests": ["stretch", "fit-content", "contain"] + tests: ['stretch', 'fit-content', 'contain'], }, - "max-inline-size": { - "links": { - "tr": "#sizing-values", - "dev": "#sizing-values" + 'max-inline-size': { + links: { + tr: '#sizing-values', + dev: '#sizing-values', }, - "tests": ["stretch", "fit-content", "contain"] + tests: ['stretch', 'fit-content', 'contain'], }, - "block-size": { - "links": { - "tr": "#sizing-values", - "dev": "#sizing-values" + 'block-size': { + links: { + tr: '#sizing-values', + dev: '#sizing-values', }, - "tests": ["stretch", "fit-content", "contain"] + tests: ['stretch', 'fit-content', 'contain'], }, - "min-block-size": { - "links": { - "tr": "#sizing-values", - "dev": "#sizing-values" + 'min-block-size': { + links: { + tr: '#sizing-values', + dev: '#sizing-values', }, - "tests": ["stretch", "fit-content", "contain"] + tests: ['stretch', 'fit-content', 'contain'], }, - "max-block-size": { - "links": { - "tr": "#sizing-values", - "dev": "#sizing-values" + 'max-block-size': { + links: { + tr: '#sizing-values', + dev: '#sizing-values', }, - "tests": ["stretch", "fit-content", "contain"] - } - } + tests: ['stretch', 'fit-content', 'contain'], + }, + }, }; diff --git a/tests/css-speech-1.js b/tests/css-speech-1.js index 4d377707..f56885b3 100644 --- a/tests/css-speech-1.js +++ b/tests/css-speech-1.js @@ -1,166 +1,205 @@ export default { - "title": "CSS Speech Module Level 1", - "links": { - "tr": "css-speech-1", - "dev": "css-speech-1" + title: 'CSS Speech Module Level 1', + links: { + tr: 'css-speech-1', + dev: 'css-speech-1', }, - "status": { - "stability": "stable" + status: { + stability: 'stable', }, - "properties": { - "cue": { - "links": { - "tr": "#cue-props-cue", - "dev": "#cue-props-cue" - }, - "tests": [ - "none", "url(beforeafter.wav)", "url(beforeafter.wav) +3dB", "url(beforeafter.wav) -3dB", - "url(before.wav) url(after.wav)", "url(before.wav) +3dB url(after.wav) -3dB" - ] - }, - "cue-before": { - "links": { - "tr": "#cue-props-cue-before-after", - "dev": "#cue-props-cue-before-after" - }, - "tests": ["none", "url(after.wav)", "url(after.wav) +3dB", "url(after.wav) -3dB"] - }, - "cue-after": { - "links": { - "tr": "#cue-props-cue-before-after", - "dev": "#cue-props-cue-before-after" - }, - "tests": ["none", "url(after.wav)", "url(after.wav) +3dB", "url(after.wav) -3dB"] - }, - "pause": { - "links": { - "tr": "#pause-props-pause", - "dev": "#pause-props-pause" - }, - "tests": [ - "1s", "none", "x-weak", "weak", "medium", "strong", "x-strong", - "1s weak", "none 200ms" - ] - }, - "pause-before": { - "links": { - "tr": "#pause-props-pause-before-after", - "dev": "#pause-props-pause-before-after" - }, - "tests": ["1s", "none", "x-weak", "weak", "medium", "strong", "x-strong"] - }, - "pause-after": { - "links": { - "tr": "#pause-props-pause-before-after", - "dev": "#pause-props-pause-before-after" - }, - "tests": ["1s", "none", "x-weak", "weak", "medium", "strong", "x-strong"] - }, - "rest": { - "links": { - "tr": "#rest-props-rest", - "dev": "#rest-props-rest" - }, - "tests": [ - "1s", "none", "x-weak", "weak", "medium", "strong", "x-strong", - "1s weak", "none 200ms" - ] - }, - "rest-before": { - "links": { - "tr": "#rest-props-rest-before-after", - "dev": "#rest-props-rest-before-after" - }, - "tests": ["1s", "none", "x-weak", "weak", "medium", "strong", "x-strong"] - }, - "rest-after": { - "links": { - "tr": "#rest-props-rest-before-after", - "dev": "#rest-props-rest-before-after" - }, - "tests": ["1s", "none", "x-weak", "weak", "medium", "strong", "x-strong"] - }, - "speak": { - "links": { - "tr": "#speaking-props-speak", - "dev": "#speaking-props-speak" - }, - "tests": ["auto", "never", "always"] - }, - "speak-as": { - "links": { - "tr": "#speaking-props-speak-as", - "dev": "#speaking-props-speak-as" - }, - "tests": [ - "normal", "spell-out", "digits", "literal-punctuation", "no-punctuation", - "spell-out digits", "spell-out literal-punctuation", "digits no-punctuation" - ] - }, - "voice-balance": { - "links": { - "tr": "#mixing-props-voice-balance", - "dev": "#mixing-props-voice-balance" - }, - "tests": ["20.4", "left", "center", "right", "leftwards", "rightwards"] - }, - "voice-duration": { - "links": { - "tr": "#mixing-props-voice-duration", - "dev": "#mixing-props-voice-duration" - }, - "tests": ["auto", "1s"] - }, - "voice-family": { - "links": { - "tr": "#voice-props-voice-family", - "dev": "#voice-props-voice-family" - }, - "tests": [ - "voice-family", "male", "female", "neutral", "preserve", "child male", "young female", - "old neutral", "female 2", "young male 1", "voice-family1, voice-family2, male" - ] - }, - "voice-pitch": { - "links": { - "tr": "#voice-props-voice-pitch", - "dev": "#voice-props-voice-pitch" - }, - "tests": [ - "250Hz", "+30Hz", "-20Hz absolute", "x-low", "low", "medium", "high", "x-high", - "1.059st", "25%", "+25%", "-25%", "low +20Hz", "high -25%", "medium -1.02st" - ] - }, - "voice-range": { - "links": { - "tr": "#voice-props-voice-range", - "dev": "#voice-props-voice-range" - }, - "tests": [ - "250Hz", "+30Hz", "-20Hz absolute", "x-low", "low", "medium", "high", "x-high", - "1.059st", "25%", "+25%", "-25%", "low +20Hz", "high -25%", "medium -1.02st" - ] + properties: { + cue: { + links: { + tr: '#cue-props-cue', + dev: '#cue-props-cue', + }, + tests: [ + 'none', + 'url(beforeafter.wav)', + 'url(beforeafter.wav) +3dB', + 'url(beforeafter.wav) -3dB', + 'url(before.wav) url(after.wav)', + 'url(before.wav) +3dB url(after.wav) -3dB', + ], + }, + 'cue-before': { + links: { + tr: '#cue-props-cue-before-after', + dev: '#cue-props-cue-before-after', + }, + tests: ['none', 'url(after.wav)', 'url(after.wav) +3dB', 'url(after.wav) -3dB'], + }, + 'cue-after': { + links: { + tr: '#cue-props-cue-before-after', + dev: '#cue-props-cue-before-after', + }, + tests: ['none', 'url(after.wav)', 'url(after.wav) +3dB', 'url(after.wav) -3dB'], + }, + pause: { + links: { + tr: '#pause-props-pause', + dev: '#pause-props-pause', + }, + tests: ['1s', 'none', 'x-weak', 'weak', 'medium', 'strong', 'x-strong', '1s weak', 'none 200ms'], + }, + 'pause-before': { + links: { + tr: '#pause-props-pause-before-after', + dev: '#pause-props-pause-before-after', + }, + tests: ['1s', 'none', 'x-weak', 'weak', 'medium', 'strong', 'x-strong'], + }, + 'pause-after': { + links: { + tr: '#pause-props-pause-before-after', + dev: '#pause-props-pause-before-after', + }, + tests: ['1s', 'none', 'x-weak', 'weak', 'medium', 'strong', 'x-strong'], + }, + rest: { + links: { + tr: '#rest-props-rest', + dev: '#rest-props-rest', + }, + tests: ['1s', 'none', 'x-weak', 'weak', 'medium', 'strong', 'x-strong', '1s weak', 'none 200ms'], + }, + 'rest-before': { + links: { + tr: '#rest-props-rest-before-after', + dev: '#rest-props-rest-before-after', + }, + tests: ['1s', 'none', 'x-weak', 'weak', 'medium', 'strong', 'x-strong'], + }, + 'rest-after': { + links: { + tr: '#rest-props-rest-before-after', + dev: '#rest-props-rest-before-after', + }, + tests: ['1s', 'none', 'x-weak', 'weak', 'medium', 'strong', 'x-strong'], + }, + speak: { + links: { + tr: '#speaking-props-speak', + dev: '#speaking-props-speak', + }, + tests: ['auto', 'never', 'always'], + }, + 'speak-as': { + links: { + tr: '#speaking-props-speak-as', + dev: '#speaking-props-speak-as', + }, + tests: [ + 'normal', + 'spell-out', + 'digits', + 'literal-punctuation', + 'no-punctuation', + 'spell-out digits', + 'spell-out literal-punctuation', + 'digits no-punctuation', + ], + }, + 'voice-balance': { + links: { + tr: '#mixing-props-voice-balance', + dev: '#mixing-props-voice-balance', + }, + tests: ['20.4', 'left', 'center', 'right', 'leftwards', 'rightwards'], + }, + 'voice-duration': { + links: { + tr: '#mixing-props-voice-duration', + dev: '#mixing-props-voice-duration', + }, + tests: ['auto', '1s'], + }, + 'voice-family': { + links: { + tr: '#voice-props-voice-family', + dev: '#voice-props-voice-family', + }, + tests: [ + 'voice-family', + 'male', + 'female', + 'neutral', + 'preserve', + 'child male', + 'young female', + 'old neutral', + 'female 2', + 'young male 1', + 'voice-family1, voice-family2, male', + ], + }, + 'voice-pitch': { + links: { + tr: '#voice-props-voice-pitch', + dev: '#voice-props-voice-pitch', + }, + tests: [ + '250Hz', + '+30Hz', + '-20Hz absolute', + 'x-low', + 'low', + 'medium', + 'high', + 'x-high', + '1.059st', + '25%', + '+25%', + '-25%', + 'low +20Hz', + 'high -25%', + 'medium -1.02st', + ], + }, + 'voice-range': { + links: { + tr: '#voice-props-voice-range', + dev: '#voice-props-voice-range', + }, + tests: [ + '250Hz', + '+30Hz', + '-20Hz absolute', + 'x-low', + 'low', + 'medium', + 'high', + 'x-high', + '1.059st', + '25%', + '+25%', + '-25%', + 'low +20Hz', + 'high -25%', + 'medium -1.02st', + ], + }, + 'voice-rate': { + links: { + tr: '#voice-props-voice-rate', + dev: '#voice-props-voice-rate', + }, + tests: ['normal', 'x-slow', 'slow', 'fast', 'x-fast', '20%', 'slow 80%'], + }, + 'voice-stress': { + links: { + tr: '#voice-props-voice-stress', + dev: '#voice-props-voice-stress', + }, + tests: ['normal', 'strong', 'moderate', 'none', 'reduced'], + }, + 'voice-volume': { + links: { + tr: '#mixing-props-voice-volume', + dev: '#mixing-props-voice-volume', + }, + tests: ['silent', 'x-soft', 'soft', 'medium', 'loud', 'x-loud', '20dB', 'loud -10dB'], }, - "voice-rate": { - "links": { - "tr": "#voice-props-voice-rate", - "dev": "#voice-props-voice-rate" - }, - "tests": ["normal", "x-slow", "slow", "fast", "x-fast", "20%", "slow 80%"] - }, - "voice-stress": { - "links": { - "tr": "#voice-props-voice-stress", - "dev": "#voice-props-voice-stress" - }, - "tests": ["normal", "strong", "moderate", "none", "reduced"] - }, - "voice-volume": { - "links": { - "tr": "#mixing-props-voice-volume", - "dev": "#mixing-props-voice-volume" - }, - "tests": ["silent", "x-soft", "soft", "medium", "loud", "x-loud", "20dB", "loud -10dB"] - } - } + }, }; diff --git a/tests/css-text-3.js b/tests/css-text-3.js index f95f1ffe..bbf4328f 100644 --- a/tests/css-text-3.js +++ b/tests/css-text-3.js @@ -1,120 +1,127 @@ export default { - "title": "CSS Text Module Level 3", - "links": { - "tr": "css-text-3", - "dev": "css-text-3" + title: 'CSS Text Module Level 3', + links: { + tr: 'css-text-3', + dev: 'css-text-3', }, - "status": { - "stability": "stable" + status: { + stability: 'stable', }, - "properties": { - "text-transform": { - "links": { - "tr": "#text-transform", - "dev": "#text-transform-property" + properties: { + 'text-transform': { + links: { + tr: '#text-transform', + dev: '#text-transform-property', }, - "tests": ["full-width", "full-size-kana", "capitalize full-width", "capitalize full-width full-size-kana"] + tests: ['full-width', 'full-size-kana', 'capitalize full-width', 'capitalize full-width full-size-kana'], }, - "tab-size": { - "links": { - "tr": "#tab-size-property", - "dev": "#tab-size-property" + 'tab-size': { + links: { + tr: '#tab-size-property', + dev: '#tab-size-property', }, - "tests": ["4", "1em"] + tests: ['4', '1em'], }, - "line-break": { - "links": { - "tr": "#line-break-property", - "dev": "#line-break-property" + 'line-break': { + links: { + tr: '#line-break-property', + dev: '#line-break-property', }, - "tests": ["auto", "loose", "normal", "strict", "anywhere"] + tests: ['auto', 'loose', 'normal', 'strict', 'anywhere'], }, - "word-break": { - "links": { - "tr": "#word-break-property", - "dev": "#word-break-property" + 'word-break': { + links: { + tr: '#word-break-property', + dev: '#word-break-property', }, - "tests": ["normal", "keep-all", "break-all"] + tests: ['normal', 'keep-all', 'break-all'], }, - "white-space": { - "links": { - "tr": "#white-space-property", - "dev": "#white-space-property" + 'white-space': { + links: { + tr: '#white-space-property', + dev: '#white-space-property', }, - "tests": ["break-spaces"] + tests: ['break-spaces'], }, - "hyphens": { - "links": { - "tr": "#hyphenation", - "dev": "#hyphenation" + hyphens: { + links: { + tr: '#hyphenation', + dev: '#hyphenation', }, - "tests": ["auto", "manual", "none"] + tests: ['auto', 'manual', 'none'], }, - "overflow-wrap": { - "links": { - "tr": "#overflow-wrap-property", - "dev": "#overflow-wrap-property" + 'overflow-wrap': { + links: { + tr: '#overflow-wrap-property', + dev: '#overflow-wrap-property', }, - "tests": ["normal", "break-word", "anywhere"] + tests: ['normal', 'break-word', 'anywhere'], }, - "word-wrap": { - "links": { - "tr": "#overflow-wrap-property", - "dev": "#overflow-wrap-property" + 'word-wrap': { + links: { + tr: '#overflow-wrap-property', + dev: '#overflow-wrap-property', }, - "tests": ["normal", "break-word", "anywhere"] + tests: ['normal', 'break-word', 'anywhere'], }, - "text-align": { - "links": { - "tr": "#text-align-property", - "dev": "#text-align-property" + 'text-align': { + links: { + tr: '#text-align-property', + dev: '#text-align-property', }, - "tests": ["start", "end", "match-parent", "justify-all"] + tests: ['start', 'end', 'match-parent', 'justify-all'], }, - "text-align-all": { - "links": { - "tr": "#text-align-all-property", - "dev": "#text-align-all-property" + 'text-align-all': { + links: { + tr: '#text-align-all-property', + dev: '#text-align-all-property', }, - "tests": ["start", "end", "left", "right", "center", "justify", "match-parent"] + tests: ['start', 'end', 'left', 'right', 'center', 'justify', 'match-parent'], }, - "text-align-last": { - "links": { - "tr": "#text-align-last-property", - "dev": "#text-align-last-property" + 'text-align-last': { + links: { + tr: '#text-align-last-property', + dev: '#text-align-last-property', }, - "tests": ["auto", "start", "end", "left", "right", "center", "justify", "match-parent"] + tests: ['auto', 'start', 'end', 'left', 'right', 'center', 'justify', 'match-parent'], }, - "text-justify": { - "links": { - "tr": "#text-justify-property", - "dev": "#text-justify-property" + 'text-justify': { + links: { + tr: '#text-justify-property', + dev: '#text-justify-property', }, - "tests": ["auto", "none", "inter-word", "inter-character"] + tests: ['auto', 'none', 'inter-word', 'inter-character'], }, - "word-spacing": { - "links": { - "tr": "#word-spacing-property", - "dev": "#word-spacing-property" + 'word-spacing': { + links: { + tr: '#word-spacing-property', + dev: '#word-spacing-property', }, - "tests": ["50%"] + tests: ['50%'], }, - "text-indent": { - "links": { - "tr": "#text-indent-property", - "dev": "#text-indent-property" + 'text-indent': { + links: { + tr: '#text-indent-property', + dev: '#text-indent-property', }, - "tests": ["1em hanging", "1em each-line", "1em hanging each-line"] + tests: ['1em hanging', '1em each-line', '1em hanging each-line'], }, - "hanging-punctuation": { - "links": { - "tr": "#hanging-punctuation-property", - "dev": "#hanging-punctuation-property" + 'hanging-punctuation': { + links: { + tr: '#hanging-punctuation-property', + dev: '#hanging-punctuation-property', }, - "tests": [ - "none", "first", "last", "force-end", "allow-end", "first last", "first force-end", - "first force-end last", "first allow-end last" - ] - } - } + tests: [ + 'none', + 'first', + 'last', + 'force-end', + 'allow-end', + 'first last', + 'first force-end', + 'first force-end last', + 'first allow-end last', + ], + }, + }, }; diff --git a/tests/css-text-4.js b/tests/css-text-4.js index 7faffdea..5ab92729 100644 --- a/tests/css-text-4.js +++ b/tests/css-text-4.js @@ -1,92 +1,96 @@ export default { - "title": "CSS Text Module Level 4", - "links": { - "tr": "css-text-4", - "dev": "css-text-4" + title: 'CSS Text Module Level 4', + links: { + tr: 'css-text-4', + dev: 'css-text-4', }, - "status": { - "stability": "experimental" + status: { + stability: 'experimental', }, - "properties": { - "text-space-collapse": { - "links": { - "tr": "#white-space-collapsing", - "dev": "#white-space-collapsing" + properties: { + 'text-space-collapse': { + links: { + tr: '#white-space-collapsing', + dev: '#white-space-collapsing', }, - "tests": ["collapse", "discard", "preserve", "preserve-breaks", "preserve-spaces"] + tests: ['collapse', 'discard', 'preserve', 'preserve-breaks', 'preserve-spaces'], }, - "text-space-trim": { - "links": { - "tr": "#white-space-trim", - "dev": "#white-space-trim" + 'text-space-trim': { + links: { + tr: '#white-space-trim', + dev: '#white-space-trim', }, - "tests": [ - "none", "trim-inner", " discard-before", "discard-after", - "trim-inner discard-before", "trim-inner discard-before discard-after" - ] + tests: [ + 'none', + 'trim-inner', + ' discard-before', + 'discard-after', + 'trim-inner discard-before', + 'trim-inner discard-before discard-after', + ], }, - "text-wrap": { - "links": { - "tr": "#text-wrap", - "dev": "#text-wrap" + 'text-wrap': { + links: { + tr: '#text-wrap', + dev: '#text-wrap', }, - "tests": ["wrap", "nowrap", "balance "] + tests: ['wrap', 'nowrap', 'balance '], }, - "wrap-before": { - "links": { - "tr": "#wrap-before", - "dev": "#wrap-before" + 'wrap-before': { + links: { + tr: '#wrap-before', + dev: '#wrap-before', }, - "tests": ["auto", "avoid", "avoid-line", "avoid-flex", "line", "flex"] + tests: ['auto', 'avoid', 'avoid-line', 'avoid-flex', 'line', 'flex'], }, - "wrap-after": { - "links": { - "tr": "#wrap-before", - "dev": "#wrap-before" + 'wrap-after': { + links: { + tr: '#wrap-before', + dev: '#wrap-before', }, - "tests": ["auto", "avoid", "avoid-line", "avoid-flex", "line", "flex"] + tests: ['auto', 'avoid', 'avoid-line', 'avoid-flex', 'line', 'flex'], }, - "wrap-inside": { - "links": { - "tr": "#wrap-inside", - "dev": "#wrap-inside" + 'wrap-inside': { + links: { + tr: '#wrap-inside', + dev: '#wrap-inside', }, - "tests": ["auto", "avoid"] + tests: ['auto', 'avoid'], }, - "hyphenate-character": { - "links": { - "tr": "#hyphenate-character", - "dev": "#hyphenate-character" + 'hyphenate-character': { + links: { + tr: '#hyphenate-character', + dev: '#hyphenate-character', }, - "tests": ["auto", "'\\2010'"] + tests: ['auto', "'\\2010'"], }, - "hyphenate-limit-zone": { - "links": { - "tr": "#hyphenate-size-limits", - "dev": "#hyphenate-size-limits" + 'hyphenate-limit-zone': { + links: { + tr: '#hyphenate-size-limits', + dev: '#hyphenate-size-limits', }, - "tests": ["1%", "1em"] + tests: ['1%', '1em'], }, - "hyphenate-limit-chars": { - "links": { - "tr": "#hyphenate-char-limits", - "dev": "#hyphenate-char-limits" + 'hyphenate-limit-chars': { + links: { + tr: '#hyphenate-char-limits', + dev: '#hyphenate-char-limits', }, - "tests": ["auto", "5", "auto 3", "5 4 3"] + tests: ['auto', '5', 'auto 3', '5 4 3'], }, - "hyphenate-limit-lines": { - "links": { - "tr": "#hyphenate-line-limits", - "dev": "#hyphenate-line-limits" + 'hyphenate-limit-lines': { + links: { + tr: '#hyphenate-line-limits', + dev: '#hyphenate-line-limits', }, - "tests": ["no-limit", "2"] + tests: ['no-limit', '2'], }, - "hyphenate-limit-last": { - "links": { - "tr": "#hyphenate-line-limits", - "dev": "#hyphenate-line-limits" + 'hyphenate-limit-last': { + links: { + tr: '#hyphenate-line-limits', + dev: '#hyphenate-line-limits', }, - "tests": ["none", "always", "column", "page", "spread"] - } - } + tests: ['none', 'always', 'column', 'page', 'spread'], + }, + }, }; diff --git a/tests/css-text-decor-3.js b/tests/css-text-decor-3.js index d186198d..d9193df5 100644 --- a/tests/css-text-decor-3.js +++ b/tests/css-text-decor-3.js @@ -1,82 +1,93 @@ export default { - "title": "CSS Text Decoration Module Level 3", - "links": { - "tr": "css-text-decor-3", - "dev": "css-text-decor-3" + title: 'CSS Text Decoration Module Level 3', + links: { + tr: 'css-text-decor-3', + dev: 'css-text-decor-3', }, - "status": { - "stability": "stable" + status: { + stability: 'stable', }, - "properties": { - "text-decoration": { - "links": { - "tr": "#text-decoration-property", - "dev": "#text-decoration-property" + properties: { + 'text-decoration': { + links: { + tr: '#text-decoration-property', + dev: '#text-decoration-property', }, - "tests": "underline dotted green" + tests: 'underline dotted green', }, - "text-decoration-line": { - "links": { - "tr": "#text-decoration-line-property", - "dev": "#text-decoration-line-property" + 'text-decoration-line': { + links: { + tr: '#text-decoration-line-property', + dev: '#text-decoration-line-property', }, - "tests": ["none", "underline", "overline", "line-through", "underline overline"] + tests: ['none', 'underline', 'overline', 'line-through', 'underline overline'], }, - "text-decoration-color": { - "links": { - "tr": "#text-decoration-color-property", - "dev": "#text-decoration-color-property" + 'text-decoration-color': { + links: { + tr: '#text-decoration-color-property', + dev: '#text-decoration-color-property', }, - "tests": "white" + tests: 'white', }, - "text-decoration-style": { - "links": { - "tr": "#text-decoration-style-property", - "dev": "#text-decoration-style-property" + 'text-decoration-style': { + links: { + tr: '#text-decoration-style-property', + dev: '#text-decoration-style-property', }, - "tests": ["solid", "double", "dotted", "dashed", "wavy"] + tests: ['solid', 'double', 'dotted', 'dashed', 'wavy'], }, - "text-underline-position": { - "links": { - "tr": "#text-underline-position-property", - "dev": "#text-underline-position-property" + 'text-underline-position': { + links: { + tr: '#text-underline-position-property', + dev: '#text-underline-position-property', }, - "tests": ["auto", "under", "left", "right", "under left", "under right"] + tests: ['auto', 'under', 'left', 'right', 'under left', 'under right'], }, - "text-emphasis-style": { - "links": { - "tr": "#text-emphasis-style-property", - "dev": "#text-emphasis-style-property" + 'text-emphasis-style': { + links: { + tr: '#text-emphasis-style-property', + dev: '#text-emphasis-style-property', }, - "tests": ["none", "filled", "open", "dot", "circle", "double-circle", "triangle", "sesame", "open dot", "'foo'"] + tests: [ + 'none', + 'filled', + 'open', + 'dot', + 'circle', + 'double-circle', + 'triangle', + 'sesame', + 'open dot', + "'foo'", + ], }, - "text-emphasis-color": { - "links": { - "tr": "#text-emphasis-color-property", - "dev": "#text-emphasis-color-property" + 'text-emphasis-color': { + links: { + tr: '#text-emphasis-color-property', + dev: '#text-emphasis-color-property', }, - "tests": "green" + tests: 'green', }, - "text-emphasis": { - "links": { - "tr": "#text-emphasis-property", - "dev": "#text-emphasis-property" + 'text-emphasis': { + links: { + tr: '#text-emphasis-property', + dev: '#text-emphasis-property', }, - "tests": "open dot green" + tests: 'open dot green', }, - "text-emphasis-position": { - "links": { - "tr": "#text-emphasis-position-property", - "dev": "#text-emphasis-position-property" + 'text-emphasis-position': { + links: { + tr: '#text-emphasis-position-property', + dev: '#text-emphasis-position-property', }, - "tests": ["over left", "over right", "under left", "under right"] + tests: ['over left', 'over right', 'under left', 'under right'], }, - "text-shadow": { - "links": { - "tr": "#text-shadow-property", - "dev": "#text-shadow-property" + 'text-shadow': { + links: { + tr: '#text-shadow-property', + dev: '#text-shadow-property', }, - "tests": ["none", "1px 1px", "0 0 black", "1px 2px 3px black"] - } - } + tests: ['none', '1px 1px', '0 0 black', '1px 2px 3px black'], + }, + }, }; diff --git a/tests/css-text-decor-4.js b/tests/css-text-decor-4.js index e26507ea..ef56bce5 100644 --- a/tests/css-text-decor-4.js +++ b/tests/css-text-decor-4.js @@ -1,60 +1,75 @@ export default { - "title": "CSS Text Decoration Module Level 4", - "links": { - "tr": "css-text-decor-4", - "dev": "css-text-decor-4" + title: 'CSS Text Decoration Module Level 4', + links: { + tr: 'css-text-decor-4', + dev: 'css-text-decor-4', }, - "status": { - "stability": "experimental" + status: { + stability: 'experimental', }, - "properties": { - "text-decoration": { - "links": { - "tr": "#text-decoration-property", - "dev": "#text-decoration-property" + properties: { + 'text-decoration': { + links: { + tr: '#text-decoration-property', + dev: '#text-decoration-property', }, - "tests": ["underline solid blue 1px"] + tests: ['underline solid blue 1px'], }, - "text-decoration-skip": { - "links": { - "tr": "#text-decoration-skip-property", - "dev": "#text-decoration-skip-property" + 'text-decoration-skip': { + links: { + tr: '#text-decoration-skip-property', + dev: '#text-decoration-skip-property', }, - "tests": [ - "none", "objects", "objects spaces", "objects leading-spaces", "objects trailing-spaces", "objects leading-spaces trailing-spaces", - "objects leading-spaces trailing-spaces edges", "objects leading-spaces trailing-spaces edges box-decoration", "objects edges", - "objects box-decoration", "spaces", "spaces edges", "spaces edges box-decoration", "spaces box-decoration", "leading-spaces", - "leading-spaces trailing-spaces edges", "leading-spaces trailing-spaces edges box-decoration", "edges", "edges box-decoration", - "box-decoration" - ] + tests: [ + 'none', + 'objects', + 'objects spaces', + 'objects leading-spaces', + 'objects trailing-spaces', + 'objects leading-spaces trailing-spaces', + 'objects leading-spaces trailing-spaces edges', + 'objects leading-spaces trailing-spaces edges box-decoration', + 'objects edges', + 'objects box-decoration', + 'spaces', + 'spaces edges', + 'spaces edges box-decoration', + 'spaces box-decoration', + 'leading-spaces', + 'leading-spaces trailing-spaces edges', + 'leading-spaces trailing-spaces edges box-decoration', + 'edges', + 'edges box-decoration', + 'box-decoration', + ], }, - "text-decoration-skip-ink": { - "links": { - "tr": "#text-decoration-skip-ink-property", - "dev": "#text-decoration-skip-ink-property" + 'text-decoration-skip-ink': { + links: { + tr: '#text-decoration-skip-ink-property', + dev: '#text-decoration-skip-ink-property', }, - "tests": ["none", "auto"] + tests: ['none', 'auto'], }, - "text-underline-offset": { - "links": { - "tr": "#underline-offset", - "dev": "#underline-offset" + 'text-underline-offset': { + links: { + tr: '#underline-offset', + dev: '#underline-offset', }, - "tests": ["auto", "3px", "10%"] + tests: ['auto', '3px', '10%'], }, - "text-decoration-thickness": { - "links": { - "tr": "#underline-offset", - "dev": "#text-decoration-width-property" + 'text-decoration-thickness': { + links: { + tr: '#underline-offset', + dev: '#text-decoration-width-property', }, - "tests": ["auto", "from-font", "3px", "10%"] + tests: ['auto', 'from-font', '3px', '10%'], }, - "text-shadow": { - "links": { - "tr": "#text-shadow-property", - "dev": "#text-shadow-property" + 'text-shadow': { + links: { + tr: '#text-shadow-property', + dev: '#text-shadow-property', }, - "tests": ["1px 2px 3px 4px black"] - } - } + tests: ['1px 2px 3px 4px black'], + }, + }, }; diff --git a/tests/css-transforms-1.js b/tests/css-transforms-1.js index ba1d7e71..7f58c3cc 100644 --- a/tests/css-transforms-1.js +++ b/tests/css-transforms-1.js @@ -1,46 +1,60 @@ export default { - "title": "CSS Transforms Module Level 1", - "links": { - "tr": "css-transforms-1", - "dev": "css-transforms-1" + title: 'CSS Transforms Module Level 1', + links: { + tr: 'css-transforms-1', + dev: 'css-transforms-1', }, - "status": { - "stability": "stable", - "first-snapshot": 2017 + status: { + stability: 'stable', + 'first-snapshot': 2017, }, - "properties": { - "transform": { - "links": { - "tr": "#transform-property", - "dev": "#transform-property" + properties: { + transform: { + links: { + tr: '#transform-property', + dev: '#transform-property', }, - "tests": [ - "none", - "translate(5px)", "translate(5px, 10px)", "translateY(5px)", "translateX(5px)", "translateY(5%)", "translateX(5%)", - "scale(2)", "scale(2, -1)", "scaleX(2)", "scaleY(2.5)", - "rotate(45deg)", - "skew(45deg)", "skew(45deg, 15deg)", "skewX(45deg)", "skewY(45deg)", - "matrix(1,-.2,0,1,0,0)", "matrix(1,-.2,0,1,10,10)", - "translate(50px, -24px) rotate(180deg) scale(.5) skew(0, 22.5deg)", - "translateZ(5px)", - "scaleZ(1.5)", - "rotateX(-45deg)", "rotateY(-45deg)", "rotateZ(-45deg)", - "perspective(600px)" - ] + tests: [ + 'none', + 'translate(5px)', + 'translate(5px, 10px)', + 'translateY(5px)', + 'translateX(5px)', + 'translateY(5%)', + 'translateX(5%)', + 'scale(2)', + 'scale(2, -1)', + 'scaleX(2)', + 'scaleY(2.5)', + 'rotate(45deg)', + 'skew(45deg)', + 'skew(45deg, 15deg)', + 'skewX(45deg)', + 'skewY(45deg)', + 'matrix(1,-.2,0,1,0,0)', + 'matrix(1,-.2,0,1,10,10)', + 'translate(50px, -24px) rotate(180deg) scale(.5) skew(0, 22.5deg)', + 'translateZ(5px)', + 'scaleZ(1.5)', + 'rotateX(-45deg)', + 'rotateY(-45deg)', + 'rotateZ(-45deg)', + 'perspective(600px)', + ], }, - "transform-origin": { - "links": { - "tr": "#transform-origin-property", - "dev": "#transform-origin-property" + 'transform-origin': { + links: { + tr: '#transform-origin-property', + dev: '#transform-origin-property', }, - "tests": ["10px", "top", "top left", "50% 100%", "left 0%", "left 50% 0"] + tests: ['10px', 'top', 'top left', '50% 100%', 'left 0%', 'left 50% 0'], }, - "transform-box": { - "links": { - "tr": "#transform-box", - "dev": "#transform-box" + 'transform-box': { + links: { + tr: '#transform-box', + dev: '#transform-box', }, - "tests": ["border-box", "fill-box", "view-box"] - } - } + tests: ['border-box', 'fill-box', 'view-box'], + }, + }, }; diff --git a/tests/css-transforms-2.js b/tests/css-transforms-2.js index ee6e2732..5a678e26 100644 --- a/tests/css-transforms-2.js +++ b/tests/css-transforms-2.js @@ -1,86 +1,87 @@ export default { - "title": "CSS Transforms Module Level 2", - "links": { - "tr": "css-transforms-2", - "dev": "css-transforms-2" + title: 'CSS Transforms Module Level 2', + links: { + tr: 'css-transforms-2', + dev: 'css-transforms-2', }, - "status": { - "stability": "stable" + status: { + stability: 'stable', }, - "properties": { - "translate": { - "links": { - "tr": "#individual-transforms", - "dev": "#individual-transforms" + properties: { + translate: { + links: { + tr: '#individual-transforms', + dev: '#individual-transforms', }, - "tests": ["none", "50%", "50% 50%", "50% 50% 10px"] + tests: ['none', '50%', '50% 50%', '50% 50% 10px'], }, - "scale": { - "links": { - "tr": "#individual-transforms", - "dev": "#individual-transforms" + scale: { + links: { + tr: '#individual-transforms', + dev: '#individual-transforms', }, - "tests": ["none", "2", "2 2", "2 2 2"] + tests: ['none', '2', '2 2', '2 2 2'], }, - "rotate": { - "links": { - "tr": "#individual-transforms", - "dev": "#individual-transforms" + rotate: { + links: { + tr: '#individual-transforms', + dev: '#individual-transforms', }, - "tests": [ - "none", - " 45deg", - "x 45deg", - "y 45deg", - "z 45deg", - "-1 0 2 45deg", - "45deg x", - "45deg y", - "45deg z", - "45deg -1 0 2" - ] + tests: [ + 'none', + ' 45deg', + 'x 45deg', + 'y 45deg', + 'z 45deg', + '-1 0 2 45deg', + '45deg x', + '45deg y', + '45deg z', + '45deg -1 0 2', + ], }, - "transform": { - "links": { - "tr": "#transform-property", - "dev": "#transform-property" + transform: { + links: { + tr: '#transform-property', + dev: '#transform-property', }, - "tests": [ - "perspective(none)", - "translate3d(0, 0, 5px)", - "scale3d(1, 0, -1)", - "rotate3d(1, 1, 1, 45deg)", - "matrix3d(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)", "matrix3d(0,0,0,0,0,0,0,0,0,0,1,0,10,10,0,1)", - "translate3d(50px, -24px, 5px) rotate3d(1, 2, 3, 180deg) scale3d(-1, 0, .5)", - ] + tests: [ + 'perspective(none)', + 'translate3d(0, 0, 5px)', + 'scale3d(1, 0, -1)', + 'rotate3d(1, 1, 1, 45deg)', + 'matrix3d(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)', + 'matrix3d(0,0,0,0,0,0,0,0,0,0,1,0,10,10,0,1)', + 'translate3d(50px, -24px, 5px) rotate3d(1, 2, 3, 180deg) scale3d(-1, 0, .5)', + ], }, - "transform-style": { - "links": { - "tr": "#transform-style-property", - "dev": "#transform-style-property" + 'transform-style': { + links: { + tr: '#transform-style-property', + dev: '#transform-style-property', }, - "tests": ["flat", "preserve-3d"] + tests: ['flat', 'preserve-3d'], }, - "perspective": { - "links": { - "tr": "#perspective-property", - "dev": "#perspective-property" + perspective: { + links: { + tr: '#perspective-property', + dev: '#perspective-property', }, - "tests": ["none", "600px"] + tests: ['none', '600px'], }, - "perspective-origin": { - "links": { - "tr": "#perspective-origin-property", - "dev": "#perspective-origin-property" + 'perspective-origin': { + links: { + tr: '#perspective-origin-property', + dev: '#perspective-origin-property', }, - "tests": ["10px", "top", "top left", "50% 100%", "left 0%"] + tests: ['10px', 'top', 'top left', '50% 100%', 'left 0%'], }, - "backface-visibility": { - "links": { - "tr": "#backface-visibility-property", - "dev": "#backface-visibility-property" + 'backface-visibility': { + links: { + tr: '#backface-visibility-property', + dev: '#backface-visibility-property', }, - "tests": ["visible", "hidden"] - } - } + tests: ['visible', 'hidden'], + }, + }, }; diff --git a/tests/css-transitions-1.js b/tests/css-transitions-1.js index 5442b5f0..f73bd6ef 100644 --- a/tests/css-transitions-1.js +++ b/tests/css-transitions-1.js @@ -1,52 +1,59 @@ export default { - "title": "CSS Transitions", - "links": { - "tr": "css-transitions-1", - "dev": "css-transitions-1" + title: 'CSS Transitions', + links: { + tr: 'css-transitions-1', + dev: 'css-transitions-1', }, - "status": { - "stability": "stable" + status: { + stability: 'stable', }, - "properties": { - "transition-property": { - "links": { - "tr": "#transition-property-property", - "dev": "#transition-property-property" + properties: { + 'transition-property': { + links: { + tr: '#transition-property-property', + dev: '#transition-property-property', }, - "tests": ["none", "all", "width", "width, height"] + tests: ['none', 'all', 'width', 'width, height'], }, - "transition-duration": { - "links": { - "tr": "#transition-duration-property", - "dev": "#transition-duration-property" + 'transition-duration': { + links: { + tr: '#transition-duration-property', + dev: '#transition-duration-property', }, - "tests": ["0s", "1s", "100ms"] + tests: ['0s', '1s', '100ms'], }, - "transition-timing-function": { - "links": { - "tr": "#transition-timing-function-property", - "dev": "#transition-timing-function-property" + 'transition-timing-function': { + links: { + tr: '#transition-timing-function-property', + dev: '#transition-timing-function-property', }, - "tests": [ - "ease", "linear", "ease-in", "ease-out", "ease-in-out", - "cubic-bezier(.5, .5, .5, .5)", - "cubic-bezier(.5, 1.5, .5, -2.5)", - "step-start", "step-end", "steps(3, start)", "steps(5, end)" - ] + tests: [ + 'ease', + 'linear', + 'ease-in', + 'ease-out', + 'ease-in-out', + 'cubic-bezier(.5, .5, .5, .5)', + 'cubic-bezier(.5, 1.5, .5, -2.5)', + 'step-start', + 'step-end', + 'steps(3, start)', + 'steps(5, end)', + ], }, - "transition-delay": { - "links": { - "tr": "#transition-delay-property", - "dev": "#transition-delay-property" + 'transition-delay': { + links: { + tr: '#transition-delay-property', + dev: '#transition-delay-property', }, - "tests": ["1s", "-1s"] + tests: ['1s', '-1s'], }, - "transition": { - "links": { - "tr": "#transition-shorthand-property", - "dev": "#transition-shorthand-property" + transition: { + links: { + tr: '#transition-shorthand-property', + dev: '#transition-shorthand-property', }, - "tests": "1s 2s width linear" - } - } + tests: '1s 2s width linear', + }, + }, }; diff --git a/tests/css-ui-3.js b/tests/css-ui-3.js index 9ea06818..e050849d 100644 --- a/tests/css-ui-3.js +++ b/tests/css-ui-3.js @@ -1,66 +1,83 @@ export default { - "title": "CSS Basic User Interface Module Level 3 (CSS3 UI)", - "links": { - "tr": "css-ui-3", - "dev": "css-ui-3" + title: 'CSS Basic User Interface Module Level 3 (CSS3 UI)', + links: { + tr: 'css-ui-3', + dev: 'css-ui-3', }, - "status": { - "stability": "stable", - "first-snapshot": 2015 + status: { + stability: 'stable', + 'first-snapshot': 2015, }, - "properties": { - "box-sizing": { - "links": { - "tr": "#box-sizing", - "dev": "#box-sizing" + properties: { + 'box-sizing': { + links: { + tr: '#box-sizing', + dev: '#box-sizing', }, - "tests": ["border-box", "content-box"] + tests: ['border-box', 'content-box'], }, - "outline-style": { - "links": { - "tr": "#outline-style", - "dev": "#outline-style" + 'outline-style': { + links: { + tr: '#outline-style', + dev: '#outline-style', }, - "tests": ["auto"] + tests: ['auto'], }, - "outline-offset": { - "links": { - "tr": "#outline-offset", - "dev": "#outline-offset" + 'outline-offset': { + links: { + tr: '#outline-offset', + dev: '#outline-offset', }, - "tests": ["-5px", "0", "5px"] + tests: ['-5px', '0', '5px'], }, - "resize": { - "links": { - "tr": "#resize", - "dev": "#resize" + resize: { + links: { + tr: '#resize', + dev: '#resize', }, - "tests": ["none", "both", "horizontal", "vertical"] + tests: ['none', 'both', 'horizontal', 'vertical'], }, - "text-overflow": { - "links": { - "tr": "#text-overflow", - "dev": "#text-overflow" + 'text-overflow': { + links: { + tr: '#text-overflow', + dev: '#text-overflow', }, - "tests": ["clip", "ellipsis"] + tests: ['clip', 'ellipsis'], }, - "cursor": { - "links": { - "tr": "#cursor", - "dev": "#cursor" + cursor: { + links: { + tr: '#cursor', + dev: '#cursor', }, - "tests": [ - "url(foo.png) 2 2, auto", "none", "context-menu", "cell", "vertical-text", "alias", "copy", "no-drop", "not-allowed", - "grab", "grabbing", "ew-resize", "ns-resize", "nesw-resize", "nwse-resize", "col-resize", "row-resize", "all-scroll", "zoom-in", - "zoom-out" - ] + tests: [ + 'url(foo.png) 2 2, auto', + 'none', + 'context-menu', + 'cell', + 'vertical-text', + 'alias', + 'copy', + 'no-drop', + 'not-allowed', + 'grab', + 'grabbing', + 'ew-resize', + 'ns-resize', + 'nesw-resize', + 'nwse-resize', + 'col-resize', + 'row-resize', + 'all-scroll', + 'zoom-in', + 'zoom-out', + ], }, - "caret-color": { - "links": { - "tr": "#caret-color", - "dev": "#caret-color" + 'caret-color': { + links: { + tr: '#caret-color', + dev: '#caret-color', }, - "tests": ["auto", "green"] - } - } + tests: ['auto', 'green'], + }, + }, }; diff --git a/tests/css-ui-4.js b/tests/css-ui-4.js index e7708e27..2edede10 100644 --- a/tests/css-ui-4.js +++ b/tests/css-ui-4.js @@ -1,104 +1,147 @@ export default { - "title": "CSS Basic User Interface Module Level 4", - "links": { - "tr": "css-ui-4", - "dev": "css-ui-4" + title: 'CSS Basic User Interface Module Level 4', + links: { + tr: 'css-ui-4', + dev: 'css-ui-4', }, - "status": { - "stability": "experimental" + status: { + stability: 'experimental', }, - "properties": { - "accent-color": { - "links": { - "tr": "#widget-accent", - "dev": "#widget-accent" + properties: { + 'accent-color': { + links: { + tr: '#widget-accent', + dev: '#widget-accent', }, - "tests": ["auto", "red"] + tests: ['auto', 'red'], }, - "appearance": { - "links": { - "tr": "#appearance-switching", - "dev": "#appearance-switching" + appearance: { + links: { + tr: '#appearance-switching', + dev: '#appearance-switching', }, - "tests": [ - "auto", "none", "textfield", "menulist-button", "searchfield", "textarea", "push-button", - "slider-horizontal", "checkbox", "radio", "square-button", "menulist", "listbox", "meter", - "progress-bar", "button" + tests: [ + 'auto', + 'none', + 'textfield', + 'menulist-button', + 'searchfield', + 'textarea', + 'push-button', + 'slider-horizontal', + 'checkbox', + 'radio', + 'square-button', + 'menulist', + 'listbox', + 'meter', + 'progress-bar', + 'button', ], }, - "input-security": { - "links": { - "tr": "#input-security", - "dev": "#input-security" + 'input-security': { + links: { + tr: '#input-security', + dev: '#input-security', }, - "tests": ["auto", "red"] + tests: ['auto', 'red'], }, - "caret": { - "links": { - "tr": "#caret", - "dev": "#caret" + caret: { + links: { + tr: '#caret', + dev: '#caret', }, - "tests": ["auto", "green", "bar", "green bar"] + tests: ['auto', 'green', 'bar', 'green bar'], }, - "caret-shape": { - "links": { - "tr": "#caret-shape", - "dev": "#caret-shape" + 'caret-shape': { + links: { + tr: '#caret-shape', + dev: '#caret-shape', }, - "tests": ["auto", "bar", "block", "underscore"] + tests: ['auto', 'bar', 'block', 'underscore'], }, - "text-overflow": { - "links": { - "tr": "#text-overflow", - "dev": "#text-overflow" + 'text-overflow': { + links: { + tr: '#text-overflow', + dev: '#text-overflow', }, - "tests": [ - "fade", "fade(10px)", "fade(10%)", "'foo'", "clip clip", - "ellipsis clip", "fade clip", "fade(10px) clip", "fade(10%) clip", - "'foo' clip", "clip ellipsis", "ellipsis ellipsis", "fade ellipsis", - "fade(10px) ellipsis", "fade(10%) ellipsis", "'foo' ellipsis", "clip fade", - "ellipsis fade", "fade fade", "fade(10px) fade", "fade(10%) fade", "'foo' fade", - "clip fade(10px)", "ellipsis fade(10px)", "fade fade(10px)", - "fade(10px) fade(10px)", "fade(10%) fade(10px)", "'foo' fade(10px)", - "clip fade(10%)", "ellipsis fade(10%)", "fade fade(10%)", "fade(10px) fade(10%)", - "fade(10%) fade(10%)", "'foo' fade(10%)", "clip 'foo'", "ellipsis 'foo'", - "fade 'foo'", "fade(10px) 'foo'", "fade(10%) 'foo'", "'foo' 'foo'" - ] + tests: [ + 'fade', + 'fade(10px)', + 'fade(10%)', + "'foo'", + 'clip clip', + 'ellipsis clip', + 'fade clip', + 'fade(10px) clip', + 'fade(10%) clip', + "'foo' clip", + 'clip ellipsis', + 'ellipsis ellipsis', + 'fade ellipsis', + 'fade(10px) ellipsis', + 'fade(10%) ellipsis', + "'foo' ellipsis", + 'clip fade', + 'ellipsis fade', + 'fade fade', + 'fade(10px) fade', + 'fade(10%) fade', + "'foo' fade", + 'clip fade(10px)', + 'ellipsis fade(10px)', + 'fade fade(10px)', + 'fade(10px) fade(10px)', + 'fade(10%) fade(10px)', + "'foo' fade(10px)", + 'clip fade(10%)', + 'ellipsis fade(10%)', + 'fade fade(10%)', + 'fade(10px) fade(10%)', + 'fade(10%) fade(10%)', + "'foo' fade(10%)", + "clip 'foo'", + "ellipsis 'foo'", + "fade 'foo'", + "fade(10px) 'foo'", + "fade(10%) 'foo'", + "'foo' 'foo'", + ], }, - "user-select": { - "links": { - "tr": "#content-selection", - "dev": "#content-selection" + 'user-select': { + links: { + tr: '#content-selection', + dev: '#content-selection', }, - "tests": ["auto", "text", "none", "contain", "all"] + tests: ['auto', 'text', 'none', 'contain', 'all'], }, - "nav-up": { - "links": { - "tr": "#nav-dir", - "dev": "#nav-dir" + 'nav-up': { + links: { + tr: '#nav-dir', + dev: '#nav-dir', }, - "tests": ["auto", "#foo", "#foo current", "#foo root"] + tests: ['auto', '#foo', '#foo current', '#foo root'], }, - "nav-right": { - "links": { - "tr": "#nav-dir", - "dev": "#nav-dir" + 'nav-right': { + links: { + tr: '#nav-dir', + dev: '#nav-dir', }, - "tests": ["auto", "#foo", "#foo current", "#foo root"] + tests: ['auto', '#foo', '#foo current', '#foo root'], }, - "nav-down": { - "links": { - "tr": "#nav-dir", - "dev": "#nav-dir" + 'nav-down': { + links: { + tr: '#nav-dir', + dev: '#nav-dir', }, - "tests": ["auto", "#foo", "#foo current", "#foo root"] + tests: ['auto', '#foo', '#foo current', '#foo root'], }, - "nav-left": { - "links": { - "tr": "#nav-dir", - "dev": "#nav-dir" + 'nav-left': { + links: { + tr: '#nav-dir', + dev: '#nav-dir', }, - "tests": ["auto", "#foo", "#foo current", "#foo root"] - } - } + tests: ['auto', '#foo', '#foo current', '#foo root'], + }, + }, }; diff --git a/tests/css-values-3.js b/tests/css-values-3.js index 9f9ce7ac..623aaca1 100644 --- a/tests/css-values-3.js +++ b/tests/css-values-3.js @@ -1,101 +1,96 @@ export default { - "title": "CSS Values and Units Module Level 3", - "links": { - "tr": "css-values-3", - "dev": "css-values-3" + title: 'CSS Values and Units Module Level 3', + links: { + tr: 'css-values-3', + dev: 'css-values-3', }, - "status": { - "stability": "stable", - "first-snapshot": 2015 + status: { + stability: 'stable', + 'first-snapshot': 2015, }, - "values": { - "properties": [ - "width", - "padding" - ], - "rem": { - "links": { - "tr": "#rem", - "dev": "#rem", - "mdn": "length" + values: { + properties: ['width', 'padding'], + rem: { + links: { + tr: '#rem', + dev: '#rem', + mdn: 'length', }, - "tests": "5rem" + tests: '5rem', }, - "ch": { - "links": { - "tr": "#ch", - "dev": "#ch", - "mdn": "length" + ch: { + links: { + tr: '#ch', + dev: '#ch', + mdn: 'length', }, - "tests": "5ch" + tests: '5ch', }, - "vw": { - "links": { - "tr": "#vw", - "dev": "#vw", - "mdn": "length" + vw: { + links: { + tr: '#vw', + dev: '#vw', + mdn: 'length', }, - "tests": "5vw" + tests: '5vw', }, - "vh": { - "links": { - "tr": "#vh", - "dev": "#vh", - "mdn": "length" + vh: { + links: { + tr: '#vh', + dev: '#vh', + mdn: 'length', }, - "tests": "5vh" + tests: '5vh', }, - "vmin": { - "links": { - "tr": "#vmin", - "dev": "#vmin", - "mdn": "length" + vmin: { + links: { + tr: '#vmin', + dev: '#vmin', + mdn: 'length', }, - "tests": "5vmin" + tests: '5vmin', }, - "vmax": { - "links": { - "tr": "#vmax", - "dev": "#vmax", - "mdn": "length" + vmax: { + links: { + tr: '#vmax', + dev: '#vmax', + mdn: 'length', }, - "tests": "5vmax" + tests: '5vmax', }, - "Q": { - "links": { - "tr": "#Q", - "dev": "#Q", - "mdn": "length" + Q: { + links: { + tr: '#Q', + dev: '#Q', + mdn: 'length', }, - "tests": "5Q" + tests: '5Q', }, - "attr()": { - "links": { - "tr": "#attr-notation", - "dev": "#attr-notation" + 'attr()': { + links: { + tr: '#attr-notation', + dev: '#attr-notation', }, - "tests": ["attr(data-px)", "attr(data-px px)", "attr(data-px px, initial)"] + tests: ['attr(data-px)', 'attr(data-px px)', 'attr(data-px px, initial)'], }, - "calc()": { - "links": { - "tr": "#calc-notation", - "dev": "#calc-notation" + 'calc()': { + links: { + tr: '#calc-notation', + dev: '#calc-notation', }, - "tests": [ - "calc(1px + 2px)", - "calc(5px*2)", - "calc(5px/2)", - "calc(100%/3 - 2*1em - 2*1px)", - "calc(attr(data-px)*2)", - "calc(5px - 10px)", - "calc(1vw - 1px)", - "calc(calc(100%))" - ] - } + tests: [ + 'calc(1px + 2px)', + 'calc(5px*2)', + 'calc(5px/2)', + 'calc(100%/3 - 2*1em - 2*1px)', + 'calc(attr(data-px)*2)', + 'calc(5px - 10px)', + 'calc(1vw - 1px)', + 'calc(calc(100%))', + ], + }, + }, + properties: { + transform: ['rotate(calc(15deg + 30deg))'], }, - "properties": { - "transform": [ - "rotate(calc(15deg + 30deg))" - ] - } }; diff --git a/tests/css-values-4.js b/tests/css-values-4.js index 38d43392..1b3fc048 100644 --- a/tests/css-values-4.js +++ b/tests/css-values-4.js @@ -1,423 +1,420 @@ export default { - "title": "CSS Values and Units Module Level 4", - "links": { - "tr": "css-values-4", - "dev": "css-values-4" + title: 'CSS Values and Units Module Level 4', + links: { + tr: 'css-values-4', + dev: 'css-values-4', }, - "status": { - "stability": "experimental" + status: { + stability: 'experimental', }, - "values": { - "properties": [ - "width", - "padding" - ], - "ex": { - "links": { - "tr": "#ex", - "dev": "#ex", - "mdn": "length" - }, - "tests": "5ex" - }, - "rex": { - "links": { - "tr": "#rex", - "dev": "#rex", - "mdn": "length" - }, - "tests": "5rex" - }, - "cap": { - "links": { - "tr": "#cap", - "dev": "#cap", - "mdn": "length" - }, - "tests": "5cap" - }, - "rcap": { - "links": { - "tr": "#rcap", - "dev": "#rcap", - "mdn": "length" - }, - "tests": "5rcap" - }, - "rch": { - "links": { - "tr": "#rch", - "dev": "#rcap", - "mdn": "length" - }, - "tests": "5rch" - }, - "rch": { - "links": { - "tr": "#rch", - "dev": "#rcap", - "mdn": "length" - }, - "tests": "5rch" - }, - "ic": { - "links": { - "tr": "#ic", - "dev": "#ic", - "mdn": "length" - }, - "tests": "5ic" - }, - "ric": { - "links": { - "tr": "#ric", - "dev": "#ric", - "mdn": "length" - }, - "tests": "5ric" - }, - "lh": { - "links": { - "tr": "#lh", - "dev": "#lh", - "mdn": "length" - }, - "tests": "5lh" - }, - "rlh": { - "links": { - "tr": "#rlh", - "dev": "#rlh", - "mdn": "length" - }, - "tests": "5rlh" - }, - "svh": { - "links": { - "tr": "#viewport-relative-lengths", - "dev": "#viewport-relative-lengths", - "mdn": "length" - }, - "tests": "5svh" - }, - "lvh": { - "links": { - "tr": "#viewport-relative-lengths", - "dev": "#viewport-relative-lengths", - "mdn": "length" - }, - "tests": "5lvh" - }, - "dvh": { - "links": { - "tr": "#viewport-relative-lengths", - "dev": "#viewport-relative-lengths", - "mdn": "length" + values: { + properties: ['width', 'padding'], + ex: { + links: { + tr: '#ex', + dev: '#ex', + mdn: 'length', + }, + tests: '5ex', + }, + rex: { + links: { + tr: '#rex', + dev: '#rex', + mdn: 'length', + }, + tests: '5rex', + }, + cap: { + links: { + tr: '#cap', + dev: '#cap', + mdn: 'length', + }, + tests: '5cap', + }, + rcap: { + links: { + tr: '#rcap', + dev: '#rcap', + mdn: 'length', + }, + tests: '5rcap', + }, + rch: { + links: { + tr: '#rch', + dev: '#rcap', + mdn: 'length', + }, + tests: '5rch', + }, + rch: { + links: { + tr: '#rch', + dev: '#rcap', + mdn: 'length', + }, + tests: '5rch', + }, + ic: { + links: { + tr: '#ic', + dev: '#ic', + mdn: 'length', + }, + tests: '5ic', + }, + ric: { + links: { + tr: '#ric', + dev: '#ric', + mdn: 'length', + }, + tests: '5ric', + }, + lh: { + links: { + tr: '#lh', + dev: '#lh', + mdn: 'length', + }, + tests: '5lh', + }, + rlh: { + links: { + tr: '#rlh', + dev: '#rlh', + mdn: 'length', + }, + tests: '5rlh', + }, + svh: { + links: { + tr: '#viewport-relative-lengths', + dev: '#viewport-relative-lengths', + mdn: 'length', + }, + tests: '5svh', + }, + lvh: { + links: { + tr: '#viewport-relative-lengths', + dev: '#viewport-relative-lengths', + mdn: 'length', + }, + tests: '5lvh', + }, + dvh: { + links: { + tr: '#viewport-relative-lengths', + dev: '#viewport-relative-lengths', + mdn: 'length', }, - "tests": "5dvh" + tests: '5dvh', }, - "svw": { - "links": { - "tr": "#viewport-relative-lengths", - "dev": "#viewport-relative-lengths", - "mdn": "length" + svw: { + links: { + tr: '#viewport-relative-lengths', + dev: '#viewport-relative-lengths', + mdn: 'length', }, - "tests": "5svw" + tests: '5svw', }, - "lvw": { - "links": { - "tr": "#viewport-relative-lengths", - "dev": "#viewport-relative-lengths", - "mdn": "length" + lvw: { + links: { + tr: '#viewport-relative-lengths', + dev: '#viewport-relative-lengths', + mdn: 'length', }, - "tests": "5lvw" + tests: '5lvw', }, - "dvw": { - "links": { - "tr": "#viewport-relative-lengths", - "dev": "#viewport-relative-lengths", - "mdn": "length" + dvw: { + links: { + tr: '#viewport-relative-lengths', + dev: '#viewport-relative-lengths', + mdn: 'length', }, - "tests": "5dvw" + tests: '5dvw', }, - "dvmin": { - "links": { - "tr": "#viewport-relative-lengths", - "dev": "#viewport-relative-lengths", - "mdn": "length" + dvmin: { + links: { + tr: '#viewport-relative-lengths', + dev: '#viewport-relative-lengths', + mdn: 'length', }, - "tests": "5dvmin" + tests: '5dvmin', }, - "dvmax": { - "links": { - "tr": "#viewport-relative-lengths", - "dev": "#viewport-relative-lengths", - "mdn": "length" + dvmax: { + links: { + tr: '#viewport-relative-lengths', + dev: '#viewport-relative-lengths', + mdn: 'length', }, - "tests": "5dvmax" + tests: '5dvmax', }, - "vb": { - "links": { - "tr": "#viewport-relative-lengths", - "dev": "#viewport-relative-lengths", - "mdn": "length" + vb: { + links: { + tr: '#viewport-relative-lengths', + dev: '#viewport-relative-lengths', + mdn: 'length', }, - "tests": "5vb" + tests: '5vb', }, - "vi": { - "links": { - "tr": "#viewport-relative-lengths", - "dev": "#viewport-relative-lengths", - "mdn": "length" - }, - "tests": "5vi" + vi: { + links: { + tr: '#viewport-relative-lengths', + dev: '#viewport-relative-lengths', + mdn: 'length', + }, + tests: '5vi', }, - "svb": { - "links": { - "tr": "#viewport-relative-lengths", - "dev": "#viewport-relative-lengths", - "mdn": "length" - }, - "tests": "5dvb" + svb: { + links: { + tr: '#viewport-relative-lengths', + dev: '#viewport-relative-lengths', + mdn: 'length', + }, + tests: '5dvb', }, - "dvi": { - "links": { - "tr": "#viewport-relative-lengths", - "dev": "#viewport-relative-lengths", - "mdn": "length" + dvi: { + links: { + tr: '#viewport-relative-lengths', + dev: '#viewport-relative-lengths', + mdn: 'length', }, - "tests": "5dvi" + tests: '5dvi', }, - "lvd": { - "links": { - "tr": "#viewport-relative-lengths", - "dev": "#viewport-relative-lengths", - "mdn": "length" + lvd: { + links: { + tr: '#viewport-relative-lengths', + dev: '#viewport-relative-lengths', + mdn: 'length', }, - "tests": "5lvb" + tests: '5lvb', }, - "lvi": { - "links": { - "tr": "#viewport-relative-lengths", - "dev": "#viewport-relative-lengths", - "mdn": "length" + lvi: { + links: { + tr: '#viewport-relative-lengths', + dev: '#viewport-relative-lengths', + mdn: 'length', }, - "tests": "5lvi" + tests: '5lvi', }, - "svb": { - "links": { - "tr": "#viewport-relative-lengths", - "dev": "#viewport-relative-lengths", - "mdn": "length" + svb: { + links: { + tr: '#viewport-relative-lengths', + dev: '#viewport-relative-lengths', + mdn: 'length', }, - "tests": "5svb" + tests: '5svb', }, - "svi": { - "links": { - "tr": "#viewport-relative-lengths", - "dev": "#viewport-relative-lengths", - "mdn": "length" + svi: { + links: { + tr: '#viewport-relative-lengths', + dev: '#viewport-relative-lengths', + mdn: 'length', }, - "tests": "5svi" + tests: '5svi', }, - "toggle()": { - "links": { - "tr": "#toggle-notation", - "dev": "#toggle-notation" + 'toggle()': { + links: { + tr: '#toggle-notation', + dev: '#toggle-notation', }, - "tests": ["toggle(1px, 2px)", "toggle(italic, normal)", "toggle(disc, circle, square, box)"] + tests: ['toggle(1px, 2px)', 'toggle(italic, normal)', 'toggle(disc, circle, square, box)'], }, - "min()": { - "links": { - "tr": "#calc-notation", - "dev": "#comp-func" + 'min()': { + links: { + tr: '#calc-notation', + dev: '#comp-func', }, - "tests": ["min(10 * (1vw + 1vh) / 2, 12px)"] + tests: ['min(10 * (1vw + 1vh) / 2, 12px)'], }, - "max()": { - "links": { - "tr": "#calc-notation", - "dev": "#comp-func" + 'max()': { + links: { + tr: '#calc-notation', + dev: '#comp-func', }, - "tests": ["max(10 * (1vw + 1vh) / 2, 12px)"] + tests: ['max(10 * (1vw + 1vh) / 2, 12px)'], }, - "clamp()": { - "links": { - "tr": "#calc-notation", - "dev": "#comp-func" + 'clamp()': { + links: { + tr: '#calc-notation', + dev: '#comp-func', }, - "tests": ["clamp(12px, 10 * (1vw + 1vh) / 2, 100px)"] + tests: ['clamp(12px, 10 * (1vw + 1vh) / 2, 100px)'], }, - "calc()": { - "links": { - "tr": "#calc-func", - "dev": "#calc-func" + 'calc()': { + links: { + tr: '#calc-func', + dev: '#calc-func', }, - "tests": [ - "calc(1rem * pow(1.5, -1))", - "calc(pow(e, pi) - pi)", - "calc(-18px - sign(5px)*round(down, -18px*sign(5px), 5px))", - "calc(-18px - round(to-zero, -18px, 5px))" - ] + tests: [ + 'calc(1rem * pow(1.5, -1))', + 'calc(pow(e, pi) - pi)', + 'calc(-18px - sign(5px)*round(down, -18px*sign(5px), 5px))', + 'calc(-18px - round(to-zero, -18px, 5px))', + ], }, - "round()": { - "links": { - "tr": "#round-func", - "dev": "#round-func" + 'round()': { + links: { + tr: '#round-func', + dev: '#round-func', }, - "tests": [ - "round(down, 5.5px, 5px)", - "up(down, 5.5px, 5px)", - "down(down, 5.5px, 5px)", - "round(to-zero, 5.5px, 5px)" - ] + tests: [ + 'round(down, 5.5px, 5px)', + 'up(down, 5.5px, 5px)', + 'down(down, 5.5px, 5px)', + 'round(to-zero, 5.5px, 5px)', + ], }, - "mod()": { - "links": { - "tr": "#round-func", - "dev": "#round-func" + 'mod()': { + links: { + tr: '#round-func', + dev: '#round-func', }, - "tests": ["mod(18px, 5px)", "mod(-140deg, -90deg)"] + tests: ['mod(18px, 5px)', 'mod(-140deg, -90deg)'], }, - "rem()": { - "links": { - "tr": "#round-func", - "dev": "#round-func" + 'rem()': { + links: { + tr: '#round-func', + dev: '#round-func', }, - "tests": ["rem(140deg, -90deg)"] + tests: ['rem(140deg, -90deg)'], }, - "sin()": { - "links": { - "tr": "#trig-funcs", - "dev": "#trig-funcs" + 'sin()': { + links: { + tr: '#trig-funcs', + dev: '#trig-funcs', }, - "tests": ["sin(45deg)", "sin(.125turn)", "sin(3.14159 / 4)"] + tests: ['sin(45deg)', 'sin(.125turn)', 'sin(3.14159 / 4)'], }, - "cos()": { - "links": { - "tr": "#trig-funcs", - "dev": "#trig-funcs" + 'cos()': { + links: { + tr: '#trig-funcs', + dev: '#trig-funcs', }, - "tests": ["cos(45deg)", "cos(.125turn)", "cos(3.14159 / 4)"] + tests: ['cos(45deg)', 'cos(.125turn)', 'cos(3.14159 / 4)'], }, - "tan()": { - "links": { - "tr": "#trig-funcs", - "dev": "#trig-funcs" + 'tan()': { + links: { + tr: '#trig-funcs', + dev: '#trig-funcs', }, - "tests": ["tan(1)"] + tests: ['tan(1)'], }, - "asin()": { - "links": { - "tr": "#trig-funcs", - "dev": "#trig-funcs" + 'asin()': { + links: { + tr: '#trig-funcs', + dev: '#trig-funcs', }, - "tests": ["asin(1)"] + tests: ['asin(1)'], }, - "acos()": { - "links": { - "tr": "#trig-funcs", - "dev": "#trig-funcs" + 'acos()': { + links: { + tr: '#trig-funcs', + dev: '#trig-funcs', }, - "tests": ["acos(-1)"] + tests: ['acos(-1)'], }, - "atan()": { - "links": { - "tr": "#trig-funcs", - "dev": "#trig-funcs" + 'atan()': { + links: { + tr: '#trig-funcs', + dev: '#trig-funcs', }, - "tests": ["atan(-1)", "atan(tan(90deg))", "tan(atan(infinity))"] + tests: ['atan(-1)', 'atan(tan(90deg))', 'tan(atan(infinity))'], }, - "atan2()": { - "links": { - "tr": "#trig-funcs", - "dev": "#trig-funcs" + 'atan2()': { + links: { + tr: '#trig-funcs', + dev: '#trig-funcs', }, - "tests": ["atan2(15deg, 90deg)"] + tests: ['atan2(15deg, 90deg)'], }, - "pow()": { - "links": { - "tr": "#exponent-funcs", - "dev": "#exponent-funcs" + 'pow()': { + links: { + tr: '#exponent-funcs', + dev: '#exponent-funcs', }, - "tests": ["pow(1.5, -1)"] + tests: ['pow(1.5, -1)'], }, - "sqrt()": { - "links": { - "tr": "#exponent-funcs", - "dev": "#exponent-funcs" + 'sqrt()': { + links: { + tr: '#exponent-funcs', + dev: '#exponent-funcs', }, - "tests": ["sqrt(2)"] + tests: ['sqrt(2)'], }, - "hypot()": { - "links": { - "tr": "#exponent-funcs", - "dev": "#exponent-funcs" + 'hypot()': { + links: { + tr: '#exponent-funcs', + dev: '#exponent-funcs', }, - "tests": ["hypot(2)", "hypot(2, 2)"] + tests: ['hypot(2)', 'hypot(2, 2)'], }, - "log()": { - "links": { - "tr": "#exponent-funcs", - "dev": "#exponent-funcs" + 'log()': { + links: { + tr: '#exponent-funcs', + dev: '#exponent-funcs', }, - "tests": ["log(2)"] + tests: ['log(2)'], }, - "exp()": { - "links": { - "tr": "#exponent-funcs", - "dev": "#exponent-funcs" + 'exp()': { + links: { + tr: '#exponent-funcs', + dev: '#exponent-funcs', }, - "tests": ["exp(2)"] + tests: ['exp(2)'], }, - "abs()": { - "links": { - "tr": "#sign-funcs", - "dev": "#sign-funcs" + 'abs()': { + links: { + tr: '#sign-funcs', + dev: '#sign-funcs', }, - "tests": ["abs(-2)"] + tests: ['abs(-2)'], }, - "sign()": { - "links": { - "tr": "#sign-funcs", - "dev": "#sign-funcs" + 'sign()': { + links: { + tr: '#sign-funcs', + dev: '#sign-funcs', }, - "tests": ["sign(10%)"] + tests: ['sign(10%)'], }, - "e": { - "links": { - "tr": "#calc-constants", - "dev": "#calc-constants" + e: { + links: { + tr: '#calc-constants', + dev: '#calc-constants', }, - "tests": ["calc(e)"] + tests: ['calc(e)'], }, - "pi": { - "links": { - "tr": "#calc-constants", - "dev": "#calc-constants" + pi: { + links: { + tr: '#calc-constants', + dev: '#calc-constants', }, - "tests": ["calc(pi)"] + tests: ['calc(pi)'], }, - "infinity": { - "links": { - "tr": "#calc-error-constants", - "dev": "#ccalc-error-constants" + infinity: { + links: { + tr: '#calc-error-constants', + dev: '#ccalc-error-constants', }, - "tests": ["calc(infinity)"] + tests: ['calc(infinity)'], }, - "-infinity": { - "links": { - "tr": "#calc-error-constants", - "dev": "#ccalc-error-constants" + '-infinity': { + links: { + tr: '#calc-error-constants', + dev: '#ccalc-error-constants', }, - "tests": ["calc(-infinity)"] + tests: ['calc(-infinity)'], }, - "NaN": { - "links": { - "tr": "#calc-error-constants", - "dev": "#ccalc-error-constants" + NaN: { + links: { + tr: '#calc-error-constants', + dev: '#ccalc-error-constants', }, - "tests": ["calc(NaN)"] - } - } + tests: ['calc(NaN)'], + }, + }, }; diff --git a/tests/css-variables-1.js b/tests/css-variables-1.js index 0fb395dc..01eb5a33 100644 --- a/tests/css-variables-1.js +++ b/tests/css-variables-1.js @@ -1,31 +1,33 @@ export default { - "title": "CSS Custom Properties for Cascading Variables Module Level 1", - "links": { - "tr": "css-variables-1", - "dev": "css-variables-1" + title: 'CSS Custom Properties for Cascading Variables Module Level 1', + links: { + tr: 'css-variables-1', + dev: 'css-variables-1', }, - "status": { - "stability": "stable", - "first-snapshot": 2018 + status: { + stability: 'stable', + 'first-snapshot': 2018, }, - "declaration": { - "--*": { - "links": { - "tr": "#defining-variables", - "dev": "#defining-variables" + declaration: { + '--*': { + links: { + tr: '#defining-variables', + dev: '#defining-variables', }, - "tests": ["--foo: 2px"] + tests: ['--foo: 2px'], }, - "var(--*)": { - "links": { - "tr": "#using-variables", - "dev": "#using-variables", - "mdn": "--*" + 'var(--*)': { + links: { + tr: '#using-variables', + dev: '#using-variables', + mdn: '--*', }, - "tests": [ - "width: var(--foo)", "width: var(--FOO)", "width: var(--foo, 4px)", - "color: rgba(255, 255, 255, var(--foo, .2) )" - ] - } - } + tests: [ + 'width: var(--foo)', + 'width: var(--FOO)', + 'width: var(--foo, 4px)', + 'color: rgba(255, 255, 255, var(--foo, .2) )', + ], + }, + }, }; diff --git a/tests/css-will-change-1.js b/tests/css-will-change-1.js index bacea113..a2726cd9 100644 --- a/tests/css-will-change-1.js +++ b/tests/css-will-change-1.js @@ -1,19 +1,19 @@ export default { - "title": "CSS Will Change Module Level 1", - "links": { - "tr": "css-will-change-1", - "dev": "css-will-change-1" + title: 'CSS Will Change Module Level 1', + links: { + tr: 'css-will-change-1', + dev: 'css-will-change-1', }, - "status": { - "stability": "stable" + status: { + stability: 'stable', }, - "properties": { - "will-change": { - "links": { - "tr": "#will-change", - "dev": "#will-change" + properties: { + 'will-change': { + links: { + tr: '#will-change', + dev: '#will-change', }, - "tests": ["scroll-position", "contents", "transform", "top, left"] - } - } + tests: ['scroll-position', 'contents', 'transform', 'top, left'], + }, + }, }; diff --git a/tests/css-writing-modes-3.js b/tests/css-writing-modes-3.js index abef0918..af679378 100644 --- a/tests/css-writing-modes-3.js +++ b/tests/css-writing-modes-3.js @@ -1,41 +1,41 @@ export default { - "title": "CSS Writing Modes Level 3", - "links": { - "tr": "css-writing-modes-3", - "dev": "css-writing-modes-3" + title: 'CSS Writing Modes Level 3', + links: { + tr: 'css-writing-modes-3', + dev: 'css-writing-modes-3', }, - "status": { - "stability": "stable", - "first-snapshot": 2017 + status: { + stability: 'stable', + 'first-snapshot': 2017, }, - "properties": { - "unicode-bidi": { - "links": { - "tr": "#unicode-bidi", - "dev": "#unicode-bidi" + properties: { + 'unicode-bidi': { + links: { + tr: '#unicode-bidi', + dev: '#unicode-bidi', }, - "tests": ["isolate", "isolate-override", "plaintext"] + tests: ['isolate', 'isolate-override', 'plaintext'], }, - "writing-mode": { - "links": { - "tr": "#block-flow", - "dev": "#block-flow" + 'writing-mode': { + links: { + tr: '#block-flow', + dev: '#block-flow', }, - "tests": ["horizontal-tb", "vertical-rl", "vertical-lr"] + tests: ['horizontal-tb', 'vertical-rl', 'vertical-lr'], }, - "text-orientation": { - "links": { - "tr": "#text-orientation", - "dev": "#text-orientation" + 'text-orientation': { + links: { + tr: '#text-orientation', + dev: '#text-orientation', }, - "tests": ["mixed", "upright", "sideways"] + tests: ['mixed', 'upright', 'sideways'], }, - "text-combine-upright": { - "links": { - "tr": "#text-combine-upright", - "dev": "#text-combine-upright" + 'text-combine-upright': { + links: { + tr: '#text-combine-upright', + dev: '#text-combine-upright', }, - "tests": ["none", "all"] - } - } + tests: ['none', 'all'], + }, + }, }; diff --git a/tests/css-writing-modes-4.js b/tests/css-writing-modes-4.js index af9b4928..1f498389 100644 --- a/tests/css-writing-modes-4.js +++ b/tests/css-writing-modes-4.js @@ -1,26 +1,26 @@ export default { - "title": "CSS Writing Modes Level 4", - "links": { - "tr": "css-writing-modes-4", - "dev": "css-writing-modes-4" + title: 'CSS Writing Modes Level 4', + links: { + tr: 'css-writing-modes-4', + dev: 'css-writing-modes-4', }, - "status": { - "stability": "experimental" + status: { + stability: 'experimental', }, - "properties": { - "writing-mode": { - "links": { - "tr": "#block-flow", - "dev": "#block-flow" + properties: { + 'writing-mode': { + links: { + tr: '#block-flow', + dev: '#block-flow', }, - "tests": ["sideways-rl", "sideways-lr"] + tests: ['sideways-rl', 'sideways-lr'], }, - "text-combine-upright": { - "links": { - "tr": "#text-combine-upright", - "dev": "#text-combine-upright" + 'text-combine-upright': { + links: { + tr: '#text-combine-upright', + dev: '#text-combine-upright', }, - "tests": ["digits 2"] - } - } + tests: ['digits 2'], + }, + }, }; diff --git a/tests/css2-cascade.js b/tests/css2-cascade.js index 8aa512ba..d4c195a6 100644 --- a/tests/css2-cascade.js +++ b/tests/css2-cascade.js @@ -1,26 +1,22 @@ export default { - "title": "CSS 2 Assigning property values, Cascading, and Inheritance", - "links": { - "tr": "CSS22/cascade.html", - "dev": "css2/" + title: 'CSS 2 Assigning property values, Cascading, and Inheritance', + links: { + tr: 'CSS22/cascade.html', + dev: 'css2/', }, - "status": { - "stability": "stable", - "first-snapshot": 1998, - "last-snapshot": 1998 + status: { + stability: 'stable', + 'first-snapshot': 1998, + 'last-snapshot': 1998, }, - "values": { - "properties": [ - "color", - "border-color" - ], - "inherit": { - "links": { - - "tr": "#value-def-inherit", - "dev": "#value-def-inherit" + values: { + properties: ['color', 'border-color'], + inherit: { + links: { + tr: '#value-def-inherit', + dev: '#value-def-inherit', }, - "tests": "inherit" - } - } + tests: 'inherit', + }, + }, }; diff --git a/tests/css2-colors.js b/tests/css2-colors.js index e7e83f17..c413a2cd 100644 --- a/tests/css2-colors.js +++ b/tests/css2-colors.js @@ -1,75 +1,84 @@ export default { - "title": "CSS 2 Colors and Backgrounds", - "links": { - "tr": "CSS22/colors.html", - "dev": "css2/" + title: 'CSS 2 Colors and Backgrounds', + links: { + tr: 'CSS22/colors.html', + dev: 'css2/', }, - "status": { - "stability": "stable", - "first-snapshot": 1998, - "last-snapshot": 1998 + status: { + stability: 'stable', + 'first-snapshot': 1998, + 'last-snapshot': 1998, }, - "properties": { - "background-attachment": { - "links": { - "tr": "#propdef-background-attachment", - "dev": "#propdef-background-attachment" + properties: { + 'background-attachment': { + links: { + tr: '#propdef-background-attachment', + dev: '#propdef-background-attachment', }, - "tests": ["scroll", "fixed"] + tests: ['scroll', 'fixed'], }, - "background-color": { - "links": { - "tr": "#propdef-background-color", - "dev": "#propdef-background-color" + 'background-color': { + links: { + tr: '#propdef-background-color', + dev: '#propdef-background-color', }, - "tests": [ - "black", "#00f", "#000000", "rgb(255, 255, 255)", - "rgb(100%, 50%, 50%)", "transparent" - ] + tests: ['black', '#00f', '#000000', 'rgb(255, 255, 255)', 'rgb(100%, 50%, 50%)', 'transparent'], }, - "background-image": { - "links": { - "tr": "#propdef-background-image", - "dev": "#propdef-background-image" + 'background-image': { + links: { + tr: '#propdef-background-image', + dev: '#propdef-background-image', }, - "tests": ["none", "url('image.png')", "url(image.png)"] + tests: ['none', "url('image.png')", 'url(image.png)'], }, - "background-position": { - "links": { - "tr": "#propdef-background-position", - "dev": "#propdef-background-position" + 'background-position': { + links: { + tr: '#propdef-background-position', + dev: '#propdef-background-position', }, - "tests": [ - "10% 100px", "100px center", "center 10%", "left", "center", - "right", "top", "bottom", "left center", "center bottom" - ] + tests: [ + '10% 100px', + '100px center', + 'center 10%', + 'left', + 'center', + 'right', + 'top', + 'bottom', + 'left center', + 'center bottom', + ], }, - "background-repeat": { - "links": { - "tr": "#propdef-background-repeat", - "dev": "#propdef-background-repeat" + 'background-repeat': { + links: { + tr: '#propdef-background-repeat', + dev: '#propdef-background-repeat', }, - "tests": ["repeat", "repeat-x", "repeat-y", "no-repeat"] + tests: ['repeat', 'repeat-x', 'repeat-y', 'no-repeat'], }, - "background": { - "links": { - "tr": "#propdef-background", - "dev": "#propdef-background" + background: { + links: { + tr: '#propdef-background', + dev: '#propdef-background', }, - "tests": [ - "none", "black", "url('image.png')", "repeat-x", "fixed", "10% center", - "#ffffff url('image.png')", "url(image.png) repeat-y", "scroll center 100px" - ] + tests: [ + 'none', + 'black', + "url('image.png')", + 'repeat-x', + 'fixed', + '10% center', + "#ffffff url('image.png')", + 'url(image.png) repeat-y', + 'scroll center 100px', + ], }, - "color": { - "links": { - "tr": "#colors", - "dev": "#colors" + color: { + links: { + tr: '#colors', + dev: '#colors', }, - "tests": [ - "black", "#00f", "#000000", "rgb(255, 255, 255)", - "rgb(100%, 50%, 50%)" - ] - } - } + tests: ['black', '#00f', '#000000', 'rgb(255, 255, 255)', 'rgb(100%, 50%, 50%)'], + }, + }, }; diff --git a/tests/css2-fonts.js b/tests/css2-fonts.js index dd50dba6..61a0d06a 100644 --- a/tests/css2-fonts.js +++ b/tests/css2-fonts.js @@ -1,70 +1,108 @@ export default { - "title": "CSS 2 Fonts", - "links": { - "tr": "CSS22/fonts.html", - "dev": "css2/" + title: 'CSS 2 Fonts', + links: { + tr: 'CSS22/fonts.html', + dev: 'css2/', }, - "status": { - "stability": "stable", - "first-snapshot": 1998, - "last-snapshot": 1998 + status: { + stability: 'stable', + 'first-snapshot': 1998, + 'last-snapshot': 1998, }, - "properties": { - "font-family": { - "links": { - "tr": "#font-family-prop", - "dev": "#font-family-prop" + properties: { + 'font-family': { + links: { + tr: '#font-family-prop', + dev: '#font-family-prop', }, - "tests": [ - "Arial", "\"Helvetica\"", "'Some font'", "serif", "sans-serif", - "cursive", "fantasy", "monospace", "'Some font', Arial, sans-serif" - ] + tests: [ + 'Arial', + '"Helvetica"', + "'Some font'", + 'serif', + 'sans-serif', + 'cursive', + 'fantasy', + 'monospace', + "'Some font', Arial, sans-serif", + ], }, - "font-size": { - "links": { - "tr": "#font-size-props", - "dev": "#font-size-props" + 'font-size': { + links: { + tr: '#font-size-props', + dev: '#font-size-props', }, - "tests": [ - "xx-small", "x-small", "small", "medium", "large", "x-large", "xx-large", - "larger", "smaller", "1.5em", "80%" - ] + tests: [ + 'xx-small', + 'x-small', + 'small', + 'medium', + 'large', + 'x-large', + 'xx-large', + 'larger', + 'smaller', + '1.5em', + '80%', + ], }, - "font-style": { - "links": { - "tr": "#font-styling", - "dev": "#font-styling" + 'font-style': { + links: { + tr: '#font-styling', + dev: '#font-styling', }, - "tests": ["normal", "italic", "oblique"] + tests: ['normal', 'italic', 'oblique'], }, - "font-variant": { - "links": { - "tr": "#small-caps", - "dev": "#small-caps" + 'font-variant': { + links: { + tr: '#small-caps', + dev: '#small-caps', }, - "tests": ["normal", "small-caps"] + tests: ['normal', 'small-caps'], }, - "font-weight": { - "links": { - "tr": "#font-boldness", - "dev": "#font-boldness" + 'font-weight': { + links: { + tr: '#font-boldness', + dev: '#font-boldness', }, - "tests": [ - "normal", "bold", "bolder", "lighter", "100", "200", "300", "400", "500", - "600", "700", "800", "900" - ] + tests: [ + 'normal', + 'bold', + 'bolder', + 'lighter', + '100', + '200', + '300', + '400', + '500', + '600', + '700', + '800', + '900', + ], }, - "font": { - "links": { - "tr": "#font-shorthand", - "dev": "#font-shorthand" + font: { + links: { + tr: '#font-shorthand', + dev: '#font-shorthand', }, - "tests": [ - "caption", "icon", "menu", "message-box", "small-caption", "status-bar", - "2em Arial", "italic 2em Arial", "small-caps 2em Arial", "bold 2em Arial", - "italic 2em \'Custom font\', Arial, sans-serif", "small-caps 2em Arial", - "bolder 2em Arial", "italic 200 2em Arial", "2em / 2 Arial" - ] - } - } + tests: [ + 'caption', + 'icon', + 'menu', + 'message-box', + 'small-caption', + 'status-bar', + '2em Arial', + 'italic 2em Arial', + 'small-caps 2em Arial', + 'bold 2em Arial', + "italic 2em 'Custom font', Arial, sans-serif", + 'small-caps 2em Arial', + 'bolder 2em Arial', + 'italic 200 2em Arial', + '2em / 2 Arial', + ], + }, + }, }; diff --git a/tests/css2-generate.js b/tests/css2-generate.js index bdd49ce2..d47aef6c 100644 --- a/tests/css2-generate.js +++ b/tests/css2-generate.js @@ -1,101 +1,122 @@ export default { - "title": "CSS 2 Generated Content, Automatic Numbering, and Lists", - "links": { - "tr": "CSS22/generate.html", - "dev": "css2/" + title: 'CSS 2 Generated Content, Automatic Numbering, and Lists', + links: { + tr: 'CSS22/generate.html', + dev: 'css2/', }, - "status": { - "stability": "stable", - "first-snapshot": 1998, - "last-snapshot": 1998 + status: { + stability: 'stable', + 'first-snapshot': 1998, + 'last-snapshot': 1998, }, - "properties": { - "content": { - "links": { - "tr": "#content", - "dev": "#content①" + properties: { + content: { + links: { + tr: '#content', + dev: '#content①', }, - "tests": [ - "normal", "none", "\"content\"", "'content'", "url(image.png)", "attr(x)", - "open-quote", "close-quote", "no-open-quote", "no-close-quote", - "open-quote close-quote", "\"content\" url(image.png)" - ] + tests: [ + 'normal', + 'none', + '"content"', + "'content'", + 'url(image.png)', + 'attr(x)', + 'open-quote', + 'close-quote', + 'no-open-quote', + 'no-close-quote', + 'open-quote close-quote', + '"content" url(image.png)', + ], }, - "counter-increment": { - "links": { - "tr": "#counters", - "dev": "#counters" + 'counter-increment': { + links: { + tr: '#counters', + dev: '#counters', }, - "tests": [ - "none", "example-counter 1", "example-counter1 2 example-counter2" - ] + tests: ['none', 'example-counter 1', 'example-counter1 2 example-counter2'], }, - "counter-reset": { - "links": { - "tr": "#counters", - "dev": "#counters" + 'counter-reset': { + links: { + tr: '#counters', + dev: '#counters', }, - "tests": [ - "none", "example-counter 1", "example-counter1 2 example-counter2" - ] + tests: ['none', 'example-counter 1', 'example-counter1 2 example-counter2'], }, - "list-style-image": { - "links": { - "tr": "#propdef-list-style-image", - "dev": "#propdef-list-style-image" + 'list-style-image': { + links: { + tr: '#propdef-list-style-image', + dev: '#propdef-list-style-image', }, - "tests": ["none", "url(image.png)"] + tests: ['none', 'url(image.png)'], }, - "list-style-position": { - "links": { - "tr": "#propdef-list-style-position", - "dev": "#propdef-list-style-position" + 'list-style-position': { + links: { + tr: '#propdef-list-style-position', + dev: '#propdef-list-style-position', }, - "tests": ["inside", "outside"] + tests: ['inside', 'outside'], }, - "list-style-type": { - "links": { - "tr": "#propdef-list-style-type", - "dev": "#propdef-list-style-type" + 'list-style-type': { + links: { + tr: '#propdef-list-style-type', + dev: '#propdef-list-style-type', }, - "tests": [ - "disc", "circle", "square", "decimal", "decimal-leading-zero", - "lower-roman", "upper-roman", "lower-greek", "lower-latin", "upper-latin", - "armenian", "georgian", "lower-alpha", "upper-alpha", "none" - ] + tests: [ + 'disc', + 'circle', + 'square', + 'decimal', + 'decimal-leading-zero', + 'lower-roman', + 'upper-roman', + 'lower-greek', + 'lower-latin', + 'upper-latin', + 'armenian', + 'georgian', + 'lower-alpha', + 'upper-alpha', + 'none', + ], }, - "list-style": { - "links": { - "tr": "#propdef-list-style", - "dev": "#propdef-list-style" + 'list-style': { + links: { + tr: '#propdef-list-style', + dev: '#propdef-list-style', }, - "tests": [ - "disc", "inside", "url('image.png')", "circle outside", - "square url(image.png)", "decimal inside url(image.png)" - ] + tests: [ + 'disc', + 'inside', + "url('image.png')", + 'circle outside', + 'square url(image.png)', + 'decimal inside url(image.png)', + ], }, - "quotes": { - "links": { - "tr": "#quotes-specify", - "dev": "#quotes-specify" + quotes: { + links: { + tr: '#quotes-specify', + dev: '#quotes-specify', }, - "tests": ["none", "\"»\" \"«\"", "'\"' '\"' \"'\" \"'\""] - } + tests: ['none', '"»" "«"', '\'"\' \'"\' "\'" "\'"'], + }, }, - "selectors": { - ":before": { - "links": { - "tr": "#before-after-content", - "dev": "#before-after-content" + selectors: { + ':before': { + links: { + tr: '#before-after-content', + dev: '#before-after-content', }, - "tests": ":before" + tests: ':before', }, - ":after": { - "links": { - "tr": "#before-after-content", - "dev": "#before-after-content" + ':after': { + links: { + tr: '#before-after-content', + dev: '#before-after-content', }, - "tests": ":after" - } - } + tests: ':after', + }, + }, }; diff --git a/tests/css2-media.js b/tests/css2-media.js index fc0f4c5e..448451a9 100644 --- a/tests/css2-media.js +++ b/tests/css2-media.js @@ -1,26 +1,26 @@ export default { - "title": "CSS 2 Media types", - "links": { - "tr": "CSS22/media.html", - "dev": "css2/" + title: 'CSS 2 Media types', + links: { + tr: 'CSS22/media.html', + dev: 'css2/', }, - "status": { - "stability": "stable", - "first-snapshot": 1998, - "last-snapshot": 1998 + status: { + stability: 'stable', + 'first-snapshot': 1998, + 'last-snapshot': 1998, }, - "@rules": { - "@media": { - "links": { - "tr": "#at-media-rule", - "dev": "#at-media-rule" + '@rules': { + '@media': { + links: { + tr: '#at-media-rule', + dev: '#at-media-rule', }, - "tests": [ - "@media all {\n p {\n color: green;\n }\n}", - "@media print {\n p {\n color: green;\n }\n}", - "@media screen {\n p {\n color: green;\n }\n}", - "@media print, screen {\n p {\n color: green;\n }\n}" - ] - } - } + tests: [ + '@media all {\n p {\n color: green;\n }\n}', + '@media print {\n p {\n color: green;\n }\n}', + '@media screen {\n p {\n color: green;\n }\n}', + '@media print, screen {\n p {\n color: green;\n }\n}', + ], + }, + }, }; diff --git a/tests/css2-page.js b/tests/css2-page.js index 90ab2574..600a32f6 100644 --- a/tests/css2-page.js +++ b/tests/css2-page.js @@ -1,120 +1,100 @@ export default { - "title": "CSS 2 Paged Media", - "links": { - "tr": "CSS22/page.html", - "dev": "css2/" + title: 'CSS 2 Paged Media', + links: { + tr: 'CSS22/page.html', + dev: 'css2/', }, - "status": { - "stability": "stable", - "first-snapshot": 1998, - "last-snapshot": 1998 + status: { + stability: 'stable', + 'first-snapshot': 1998, + 'last-snapshot': 1998, }, - "@rules": { - "@page": { - "links": { - "tr": "#page-box", - "dev": "#page-box" + '@rules': { + '@page': { + links: { + tr: '#page-box', + dev: '#page-box', }, - "tests": [ - "@page { margin: 2cm; }", - "@page :left { margin: 2cm; }", - "@page :right { margin: 2cm; }", - "@page :first { margin: 2cm; }" - ] - } + tests: [ + '@page { margin: 2cm; }', + '@page :left { margin: 2cm; }', + '@page :right { margin: 2cm; }', + '@page :first { margin: 2cm; }', + ], + }, }, - "descriptors": { - "@page/margin": { - "links": { - "tr": "#page-box", - "dev": "#page-box" + descriptors: { + '@page/margin': { + links: { + tr: '#page-box', + dev: '#page-box', }, - "tests": [ - "2cm", - "4%", - "auto" - ] + tests: ['2cm', '4%', 'auto'], }, - "@page/margin-top": { - "links": { - "tr": "#page-box", - "dev": "#page-box" + '@page/margin-top': { + links: { + tr: '#page-box', + dev: '#page-box', }, - "tests": [ - "2cm", - "4%", - "auto" - ] + tests: ['2cm', '4%', 'auto'], }, - "@page/margin-right": { - "links": { - "tr": "#page-box", - "dev": "#page-box" + '@page/margin-right': { + links: { + tr: '#page-box', + dev: '#page-box', }, - "tests": [ - "2cm", - "4%", - "auto" - ] + tests: ['2cm', '4%', 'auto'], }, - "@page/margin-bottom": { - "links": { - "tr": "#page-box", - "dev": "#page-box" + '@page/margin-bottom': { + links: { + tr: '#page-box', + dev: '#page-box', }, - "tests": [ - "2cm", - "4%", - "auto" - ] + tests: ['2cm', '4%', 'auto'], }, - "@page/margin-left": { - "links": { - "tr": "#page-box", - "dev": "#page-box" + '@page/margin-left': { + links: { + tr: '#page-box', + dev: '#page-box', }, - "tests": [ - "2cm", - "4%", - "auto" - ] + tests: ['2cm', '4%', 'auto'], }, }, - "properties": { - "orphans": { - "links": { - "tr": "#break-inside", - "dev": "#break-inside" + properties: { + orphans: { + links: { + tr: '#break-inside', + dev: '#break-inside', }, - "tests": ["1", "2"] + tests: ['1', '2'], }, - "page-break-after": { - "links": { - "tr": "#page-break-props", - "dev": "#page-break-props" + 'page-break-after': { + links: { + tr: '#page-break-props', + dev: '#page-break-props', }, - "tests": ["auto", "always", "avoid", "left", "right"] + tests: ['auto', 'always', 'avoid', 'left', 'right'], }, - "page-break-before": { - "links": { - "tr": "#page-break-props", - "dev": "#page-break-props" + 'page-break-before': { + links: { + tr: '#page-break-props', + dev: '#page-break-props', }, - "tests": ["auto", "always", "avoid", "left", "right"] + tests: ['auto', 'always', 'avoid', 'left', 'right'], }, - "page-break-inside": { - "links": { - "tr": "#page-break-props", - "dev": "#page-break-props" + 'page-break-inside': { + links: { + tr: '#page-break-props', + dev: '#page-break-props', }, - "tests": ["auto", "avoid"] + tests: ['auto', 'avoid'], }, - "widows": { - "links": { - "tr": "#break-inside", - "dev": "#break-inside" + widows: { + links: { + tr: '#break-inside', + dev: '#break-inside', }, - "tests": ["1", "2"] - } - } + tests: ['1', '2'], + }, + }, }; diff --git a/tests/css2-selectors.js b/tests/css2-selectors.js index 69d826c3..38da7f15 100644 --- a/tests/css2-selectors.js +++ b/tests/css2-selectors.js @@ -1,138 +1,141 @@ export default { - "title": "CSS 2 Selectors", - "links": { - "tr": "CSS22/selector.html", - "dev": "css2/" + title: 'CSS 2 Selectors', + links: { + tr: 'CSS22/selector.html', + dev: 'css2/', }, - "status": { - "stability": "stable", - "first-snapshot": 1998, - "last-snapshot": 1998 + status: { + stability: 'stable', + 'first-snapshot': 1998, + 'last-snapshot': 1998, }, - "selectors": { - "Universal selector": { - "links": { - "tr": "#universal-selector", - "dev": "#universal-selector" + selectors: { + 'Universal selector': { + links: { + tr: '#universal-selector', + dev: '#universal-selector', }, - "tests": "*" + tests: '*', }, - "Type selector": { - "links": { - "tr": "#type-selectors", - "dev": "#type-selectors" + 'Type selector': { + links: { + tr: '#type-selectors', + dev: '#type-selectors', }, - "tests": "h1" + tests: 'h1', }, - "Descendant selector": { - "links": { - "tr": "#descendant-selectors", - "dev": "#descendant-selectors" + 'Descendant selector': { + links: { + tr: '#descendant-selectors', + dev: '#descendant-selectors', }, - "tests": "div p" + tests: 'div p', }, - "Child selector": { - "links": { - "tr": "#child-selectors", - "dev": "#child-selectors" + 'Child selector': { + links: { + tr: '#child-selectors', + dev: '#child-selectors', }, - "tests": "div > p" + tests: 'div > p', }, - "Adjacent sibling selector": { - "links": { - "tr": "#adjacent-selectors", - "dev": "#adjacent-selectors" + 'Adjacent sibling selector': { + links: { + tr: '#adjacent-selectors', + dev: '#adjacent-selectors', }, - "tests": "div + p" + tests: 'div + p', }, - "Attribute selectors": { - "links": { - "tr": "#attribute-selectors", - "dev": "#attribute-selectors" + 'Attribute selectors': { + links: { + tr: '#attribute-selectors', + dev: '#attribute-selectors', }, - "tests": [ - "[title]", "[title=example]", "[title=\"example\"]", "[rel~=copyright]", - "[rel~=\"copyright\"]", "[lang|=en]", "[lang|=\"en\"]" - ] + tests: [ + '[title]', + '[title=example]', + '[title="example"]', + '[rel~=copyright]', + '[rel~="copyright"]', + '[lang|=en]', + '[lang|="en"]', + ], }, - "Class selector": { - "links": { - "tr": "#class-html", - "dev": "#class-html" + 'Class selector': { + links: { + tr: '#class-html', + dev: '#class-html', }, - "tests": [ - ".class" - ] + tests: ['.class'], }, - "ID selector": { - "links": { - "tr": "#id-selectors", - "dev": "#id-selectors" + 'ID selector': { + links: { + tr: '#id-selectors', + dev: '#id-selectors', }, - "tests": "#id" + tests: '#id', }, - ":first-child": { - "links": { - "tr": "#first-child", - "dev": "#first-child" + ':first-child': { + links: { + tr: '#first-child', + dev: '#first-child', }, - "tests": ":first-child" + tests: ':first-child', }, - ":link": { - "links": { - "tr": "#link-pseudo-classes", - "dev": "#link-pseudo-classes" + ':link': { + links: { + tr: '#link-pseudo-classes', + dev: '#link-pseudo-classes', }, - "tests": ":link" + tests: ':link', }, - ":visited": { - "links": { - "tr": "#link-pseudo-classes", - "dev": "#link-pseudo-classes" + ':visited': { + links: { + tr: '#link-pseudo-classes', + dev: '#link-pseudo-classes', }, - "tests": ":visited" + tests: ':visited', }, - ":hover": { - "links": { - "tr": "#dynamic-pseudo-classes", - "dev": "#dynamic-pseudo-classes" + ':hover': { + links: { + tr: '#dynamic-pseudo-classes', + dev: '#dynamic-pseudo-classes', }, - "tests": ":hover" + tests: ':hover', }, - ":active": { - "links": { - "tr": "#dynamic-pseudo-classes", - "dev": "#dynamic-pseudo-classes" + ':active': { + links: { + tr: '#dynamic-pseudo-classes', + dev: '#dynamic-pseudo-classes', }, - "tests": ":active" + tests: ':active', }, - ":focus": { - "links": { - "tr": "#dynamic-pseudo-classes", - "dev": "#dynamic-pseudo-classes" + ':focus': { + links: { + tr: '#dynamic-pseudo-classes', + dev: '#dynamic-pseudo-classes', }, - "tests": ":focus" + tests: ':focus', }, - ":lang()": { - "links": { - "tr": "#lang", - "dev": "#lang" + ':lang()': { + links: { + tr: '#lang', + dev: '#lang', }, - "tests": [":lang(en)", ":lang(en-US)"] + tests: [':lang(en)', ':lang(en-US)'], }, - ":first-line": { - "links": { - "tr": "#first-line-pseudo", - "dev": "#first-line-pseudo" + ':first-line': { + links: { + tr: '#first-line-pseudo', + dev: '#first-line-pseudo', }, - "tests": ":first-line" + tests: ':first-line', }, - ":first-letter": { - "links": { - "tr": "#first-letter", - "dev": "#first-letter" + ':first-letter': { + links: { + tr: '#first-letter', + dev: '#first-letter', }, - "tests": ":first-letter" - } - } -}; \ No newline at end of file + tests: ':first-letter', + }, + }, +}; diff --git a/tests/css2-tables.js b/tests/css2-tables.js index 0cc8d9ee..f8465ae5 100644 --- a/tests/css2-tables.js +++ b/tests/css2-tables.js @@ -1,49 +1,49 @@ export default { - "title": "CSS 2 Tables", - "links": { - "tr": "CSS22/tables.html", - "dev": "css2/" + title: 'CSS 2 Tables', + links: { + tr: 'CSS22/tables.html', + dev: 'css2/', }, - "status": { - "stability": "stable", - "first-snapshot": 1998, - "last-snapshot": 1998 + status: { + stability: 'stable', + 'first-snapshot': 1998, + 'last-snapshot': 1998, }, - "properties": { - "border-collapse": { - "links": { - "tr": "#propdef-border-collapse", - "dev": "#propdef-border-collapse" + properties: { + 'border-collapse': { + links: { + tr: '#propdef-border-collapse', + dev: '#propdef-border-collapse', }, - "tests": ["collapse", "separate"] + tests: ['collapse', 'separate'], }, - "border-spacing": { - "links": { - "tr": "#propdef-border-spacing", - "dev": "#propdef-border-spacing" + 'border-spacing': { + links: { + tr: '#propdef-border-spacing', + dev: '#propdef-border-spacing', }, - "tests": ["10px", "1em 0.5cm"] + tests: ['10px', '1em 0.5cm'], }, - "caption-side": { - "links": { - "tr": "#caption-position", - "dev": "#caption-position" + 'caption-side': { + links: { + tr: '#caption-position', + dev: '#caption-position', }, - "tests": ["top", "bottom"] + tests: ['top', 'bottom'], }, - "empty-cells": { - "links": { - "tr": "#empty-cells", - "dev": "#empty-cells" + 'empty-cells': { + links: { + tr: '#empty-cells', + dev: '#empty-cells', }, - "tests": ["show", "hide"] + tests: ['show', 'hide'], }, - "table-layout": { - "links": { - "tr": "#width-layout", - "dev": "#width-layout" + 'table-layout': { + links: { + tr: '#width-layout', + dev: '#width-layout', }, - "tests": ["auto", "fixed"] - } - } + tests: ['auto', 'fixed'], + }, + }, }; diff --git a/tests/css2-text.js b/tests/css2-text.js index e3f5a002..96619965 100644 --- a/tests/css2-text.js +++ b/tests/css2-text.js @@ -1,66 +1,71 @@ export default { - "title": "CSS 2 Text", - "links": { - "tr": "CSS22/text.html", - "dev": "css2/" + title: 'CSS 2 Text', + links: { + tr: 'CSS22/text.html', + dev: 'css2/', }, - "status": { - "stability": "stable", - "first-snapshot": 1998, - "last-snapshot": 1998 + status: { + stability: 'stable', + 'first-snapshot': 1998, + 'last-snapshot': 1998, }, - "properties": { - "letter-spacing": { - "links": { - "tr": "#propdef-letter-spacing", - "dev": "#propdef-letter-spacing" + properties: { + 'letter-spacing': { + links: { + tr: '#propdef-letter-spacing', + dev: '#propdef-letter-spacing', }, - "tests": ["normal", "10px"] + tests: ['normal', '10px'], }, - "text-align": { - "links": { - "tr": "#alignment-prop", - "dev": "#alignment-prop" + 'text-align': { + links: { + tr: '#alignment-prop', + dev: '#alignment-prop', }, - "tests": ["left", "right", "center", "justify"] + tests: ['left', 'right', 'center', 'justify'], }, - "text-decoration": { - "links": { - "tr": "#lining-striking-props", - "dev": "#lining-striking-props" + 'text-decoration': { + links: { + tr: '#lining-striking-props', + dev: '#lining-striking-props', }, - "tests": [ - "none", "underline", "overline", "line-through", "blink", - "underline overline", "underline overline line-through" - ] + tests: [ + 'none', + 'underline', + 'overline', + 'line-through', + 'blink', + 'underline overline', + 'underline overline line-through', + ], }, - "text-indent": { - "links": { - "tr": "#indentation-prop", - "dev": "#indentation-prop" + 'text-indent': { + links: { + tr: '#indentation-prop', + dev: '#indentation-prop', }, - "tests": ["10px", "10%"] + tests: ['10px', '10%'], }, - "text-transform": { - "links": { - "tr": "#caps-prop", - "dev": "#caps-prop" + 'text-transform': { + links: { + tr: '#caps-prop', + dev: '#caps-prop', }, - "tests": ["none", "capitalize", "uppercase", "lowercase"] + tests: ['none', 'capitalize', 'uppercase', 'lowercase'], }, - "white-space": { - "links": { - "tr": "#white-space-prop", - "dev": "#white-space-prop" + 'white-space': { + links: { + tr: '#white-space-prop', + dev: '#white-space-prop', }, - "tests": ["normal", "pre", "nowrap", "pre-wrap", "pre-line"] + tests: ['normal', 'pre', 'nowrap', 'pre-wrap', 'pre-line'], }, - "word-spacing": { - "links": { - "tr": "#propdef-word-spacing", - "dev": "#propdef-word-spacing" + 'word-spacing': { + links: { + tr: '#propdef-word-spacing', + dev: '#propdef-word-spacing', }, - "tests": ["normal", "10px"] - } - } + tests: ['normal', '10px'], + }, + }, }; diff --git a/tests/css2-ui.js b/tests/css2-ui.js index 9116138f..64732b99 100644 --- a/tests/css2-ui.js +++ b/tests/css2-ui.js @@ -1,63 +1,77 @@ export default { - "title": "CSS 2 User Interface", - "links": { - "tr": "CSS22/ui.html", - "dev": "css2/" + title: 'CSS 2 User Interface', + links: { + tr: 'CSS22/ui.html', + dev: 'css2/', }, - "status": { - "stability": "stable", - "first-snapshot": 1998, - "last-snapshot": 1998 + status: { + stability: 'stable', + 'first-snapshot': 1998, + 'last-snapshot': 1998, }, - "properties": { - "cursor": { - "links": { - "tr": "#cursor-props", - "dev": "#cursor-props" + properties: { + cursor: { + links: { + tr: '#cursor-props', + dev: '#cursor-props', }, - "tests": [ - "auto", "crosshair", "default", "pointer", "move", "e-resize", - "ne-resize", "nw-resize", "n-resize", "se-resize", "sw-resize", - "s-resize", "w-resize", "text", "wait", "help", "progress", - "url(cursor.png), auto", "url(cursor.svg), url(cursor.png), pointer" - ] + tests: [ + 'auto', + 'crosshair', + 'default', + 'pointer', + 'move', + 'e-resize', + 'ne-resize', + 'nw-resize', + 'n-resize', + 'se-resize', + 'sw-resize', + 's-resize', + 'w-resize', + 'text', + 'wait', + 'help', + 'progress', + 'url(cursor.png), auto', + 'url(cursor.svg), url(cursor.png), pointer', + ], }, - "outline-color": { - "links": { - "tr": "#dynamic-outlines", - "dev": "#dynamic-outlines" + 'outline-color': { + links: { + tr: '#dynamic-outlines', + dev: '#dynamic-outlines', }, - "tests": [ - "black", "#00f", "#000000", "rgb(255, 255, 255)", - "rgb(100%, 50%, 50%)" - ] + tests: ['black', '#00f', '#000000', 'rgb(255, 255, 255)', 'rgb(100%, 50%, 50%)'], }, - "outline-style": { - "links": { - "tr": "#dynamic-outlines", - "dev": "#dynamic-outlines" + 'outline-style': { + links: { + tr: '#dynamic-outlines', + dev: '#dynamic-outlines', }, - "tests": [ - "none", "dotted", "dashed", "solid", "double", "groove", - "ridge", "inset", "outset" - ] + tests: ['none', 'dotted', 'dashed', 'solid', 'double', 'groove', 'ridge', 'inset', 'outset'], }, - "outline-width": { - "links": { - "tr": "#dynamic-outlines", - "dev": "#dynamic-outlines" + 'outline-width': { + links: { + tr: '#dynamic-outlines', + dev: '#dynamic-outlines', }, - "tests": ["thin", "medium", "thick", "5px"] + tests: ['thin', 'medium', 'thick', '5px'], }, - "outline": { - "links": { - "tr": "#dynamic-outlines", - "dev": "#dynamic-outlines" + outline: { + links: { + tr: '#dynamic-outlines', + dev: '#dynamic-outlines', }, - "tests": [ - "black", "dotted", "5px", "#ff0000 dashed", "solid 0.2em", - "rgb(0, 0, 255) 0.1ex", "#0f0 double 0.8mm" - ] - } - } + tests: [ + 'black', + 'dotted', + '5px', + '#ff0000 dashed', + 'solid 0.2em', + 'rgb(0, 0, 255) 0.1ex', + '#0f0 double 0.8mm', + ], + }, + }, }; diff --git a/tests/css2-visudet.js b/tests/css2-visudet.js index da6623f7..5cbc9ace 100644 --- a/tests/css2-visudet.js +++ b/tests/css2-visudet.js @@ -1,73 +1,70 @@ export default { - "title": "CSS 2 Visual Formatting Model Details", - "links": { - "tr": "CSS22/visudet.html", - "dev": "css2/" + title: 'CSS 2 Visual Formatting Model Details', + links: { + tr: 'CSS22/visudet.html', + dev: 'css2/', }, - "status": { - "stability": "stable", - "first-snapshot": 1998, - "last-snapshot": 1998 + status: { + stability: 'stable', + 'first-snapshot': 1998, + 'last-snapshot': 1998, }, - "properties": { - "height": { - "links": { - "tr": "#the-height-property", - "dev": "#the-height-property" + properties: { + height: { + links: { + tr: '#the-height-property', + dev: '#the-height-property', }, - "tests": ["auto", "100px", "10%"] + tests: ['auto', '100px', '10%'], }, - "line-height": { - "links": { - "tr": "#propdef-line-height", - "dev": "#propdef-line-height" + 'line-height': { + links: { + tr: '#propdef-line-height', + dev: '#propdef-line-height', }, - "tests": ["normal", "2", "2em", "150%"] + tests: ['normal', '2', '2em', '150%'], }, - "max-height": { - "links": { - "tr": "#min-max-heights", - "dev": "#min-max-heights" + 'max-height': { + links: { + tr: '#min-max-heights', + dev: '#min-max-heights', }, - "tests": ["none", "100px", "80%"] + tests: ['none', '100px', '80%'], }, - "max-width": { - "links": { - "tr": "#min-max-widths", - "dev": "#min-max-widths" + 'max-width': { + links: { + tr: '#min-max-widths', + dev: '#min-max-widths', }, - "tests": ["none", "100px", "80%"] + tests: ['none', '100px', '80%'], }, - "min-height": { - "links": { - "tr": "#min-max-heights", - "dev": "#min-max-heights" + 'min-height': { + links: { + tr: '#min-max-heights', + dev: '#min-max-heights', }, - "tests": ["100px", "10%"] + tests: ['100px', '10%'], }, - "min-width": { - "links": { - "tr": "#min-max-widths", - "dev": "#min-max-widths" + 'min-width': { + links: { + tr: '#min-max-widths', + dev: '#min-max-widths', }, - "tests": ["100px", "10%"] + tests: ['100px', '10%'], }, - "vertical-align": { - "links": { - "tr": "#propdef-vertical-align", - "dev": "#propdef-vertical-align" + 'vertical-align': { + links: { + tr: '#propdef-vertical-align', + dev: '#propdef-vertical-align', }, - "tests": [ - "baseline", "sub", "super", "top", "text-top", "middle", "bottom", - "text-bottom", "10px", "10%" - ] + tests: ['baseline', 'sub', 'super', 'top', 'text-top', 'middle', 'bottom', 'text-bottom', '10px', '10%'], }, - "width": { - "links": { - "tr": "#the-width-property", - "dev": "#the-width-property" + width: { + links: { + tr: '#the-width-property', + dev: '#the-width-property', }, - "tests": ["auto", "100px", "10%"] - } - } + tests: ['auto', '100px', '10%'], + }, + }, }; diff --git a/tests/css2-visufx.js b/tests/css2-visufx.js index 1167240e..d4f44482 100644 --- a/tests/css2-visufx.js +++ b/tests/css2-visufx.js @@ -1,35 +1,35 @@ export default { - "title": "CSS 2 Visual Effects", - "links": { - "tr": "CSS22/visufx.html", - "dev": "css2/" + title: 'CSS 2 Visual Effects', + links: { + tr: 'CSS22/visufx.html', + dev: 'css2/', }, - "status": { - "stability": "stable", - "first-snapshot": 1998, - "last-snapshot": 1998 + status: { + stability: 'stable', + 'first-snapshot': 1998, + 'last-snapshot': 1998, }, - "properties": { - "clip": { - "links": { - "tr": "#clipping", - "dev": "#clipping" + properties: { + clip: { + links: { + tr: '#clipping', + dev: '#clipping', }, - "tests": ["auto", "rect(1px, 10em, 3ex, 0.2mm)"] + tests: ['auto', 'rect(1px, 10em, 3ex, 0.2mm)'], }, - "overflow": { - "links": { - "tr": "#overflow", - "dev": "#overflow①" + overflow: { + links: { + tr: '#overflow', + dev: '#overflow①', }, - "tests": ["auto", "visible", "hidden", "scroll"] + tests: ['auto', 'visible', 'hidden', 'scroll'], }, - "visibility": { - "links": { - "tr": "#visibility", - "dev": "#visibility" + visibility: { + links: { + tr: '#visibility', + dev: '#visibility', }, - "tests": ["visible", "hidden", "collapse"] - } - } + tests: ['visible', 'hidden', 'collapse'], + }, + }, }; diff --git a/tests/css2-visuren.js b/tests/css2-visuren.js index a0d5d57d..2025775a 100644 --- a/tests/css2-visuren.js +++ b/tests/css2-visuren.js @@ -1,98 +1,107 @@ export default { - "title": "CSS 2 Visual Formatting Model", - "links": { - "tr": "CSS22/visuren.html", - "dev": "css2/" + title: 'CSS 2 Visual Formatting Model', + links: { + tr: 'CSS22/visuren.html', + dev: 'css2/', }, - "status": { - "stability": "stable", - "first-snapshot": 1998, - "last-snapshot": 1998 + status: { + stability: 'stable', + 'first-snapshot': 1998, + 'last-snapshot': 1998, }, - "properties": { - "bottom": { - "links": { - "tr": "#position-props", - "dev": "#position-props" + properties: { + bottom: { + links: { + tr: '#position-props', + dev: '#position-props', }, - "tests": ["auto", "100px", "10%"] + tests: ['auto', '100px', '10%'], }, - "clear": { - "links": { - "tr": "#flow-control", - "dev": "#flow-control" + clear: { + links: { + tr: '#flow-control', + dev: '#flow-control', }, - "tests": ["none", "left", "right", "both"] + tests: ['none', 'left', 'right', 'both'], }, - "direction": { - "links": { - "tr": "#propdef-direction", - "dev": "#propdef-direction" + direction: { + links: { + tr: '#propdef-direction', + dev: '#propdef-direction', }, - "tests": ["ltr", "rtl"] + tests: ['ltr', 'rtl'], }, - "display": { - "links": { - "tr": "#display-prop", - "dev": "#display-prop" + display: { + links: { + tr: '#display-prop', + dev: '#display-prop', }, - "tests": [ - "none", "inline", "block", "list-item", "inline-block", "table", - "inline-table", "table-row-group", "table-header-group", - "table-footer-group", "table-row", "table-column-group", - "table-column", "table-cell", "table-caption" - ] + tests: [ + 'none', + 'inline', + 'block', + 'list-item', + 'inline-block', + 'table', + 'inline-table', + 'table-row-group', + 'table-header-group', + 'table-footer-group', + 'table-row', + 'table-column-group', + 'table-column', + 'table-cell', + 'table-caption', + ], }, - "float": { - "links": { - "tr": "#float-position", - "dev": "#float-position" + float: { + links: { + tr: '#float-position', + dev: '#float-position', }, - "tests": ["none", "left", "right"] + tests: ['none', 'left', 'right'], }, - "left": { - "links": { - "tr": "#position-props", - "dev": "#position-props" + left: { + links: { + tr: '#position-props', + dev: '#position-props', }, - "tests": ["auto", "100px", "10%"] + tests: ['auto', '100px', '10%'], }, - "position": { - "links": { - "tr": "#choose-position", - "dev": "#choose-position" + position: { + links: { + tr: '#choose-position', + dev: '#choose-position', }, - "tests": ["static", "relative", "absolute", "fixed"] + tests: ['static', 'relative', 'absolute', 'fixed'], }, - "right": { - "links": { - "tr": "#position-props", - "dev": "#position-props" + right: { + links: { + tr: '#position-props', + dev: '#position-props', }, - "tests": ["auto", "100px", "10%"] + tests: ['auto', '100px', '10%'], }, - "top": { - "links": { - "tr": "#position-props", - "dev": "#position-props" + top: { + links: { + tr: '#position-props', + dev: '#position-props', }, - "tests": ["100px", "10%", "auto"] + tests: ['100px', '10%', 'auto'], }, - "unicode-bidi": { - "links": { - "tr": "#propdef-unicode-bidi", - "dev": "#propdef-unicode-bidi" + 'unicode-bidi': { + links: { + tr: '#propdef-unicode-bidi', + dev: '#propdef-unicode-bidi', }, - "tests": ["normal", "embed", "bidi-override"] + tests: ['normal', 'embed', 'bidi-override'], }, - "z-index": { - "links": { - "tr": "#z-index", - "dev": "#z-index" + 'z-index': { + links: { + tr: '#z-index', + dev: '#z-index', }, - "tests": [ - "auto", "1", "-1" - ] - } - } + tests: ['auto', '1', '-1'], + }, + }, }; diff --git a/tests/cssom-view-1.js b/tests/cssom-view-1.js index 6e77a520..f9995817 100644 --- a/tests/cssom-view-1.js +++ b/tests/cssom-view-1.js @@ -1,19 +1,19 @@ export default { - "title": "CSSOM View Module", - "links": { - "tr": "cssom-view-1", - "dev": "cssom-view-1" + title: 'CSSOM View Module', + links: { + tr: 'cssom-view-1', + dev: 'cssom-view-1', }, - "status": { - "stability": "experimental" + status: { + stability: 'experimental', }, - "properties": { - "scroll-behavior": { - "links": { - "tr": "#smooth-scrolling", - "dev": "#smooth-scrolling" + properties: { + 'scroll-behavior': { + links: { + tr: '#smooth-scrolling', + dev: '#smooth-scrolling', }, - "tests": ["auto", "smooth "] - } - } + tests: ['auto', 'smooth '], + }, + }, }; diff --git a/tests/fill-stroke-3.js b/tests/fill-stroke-3.js index d1263ae8..e6db7496 100644 --- a/tests/fill-stroke-3.js +++ b/tests/fill-stroke-3.js @@ -1,258 +1,305 @@ export default { - "title": "CSS Fill and Stroke Module Level 3", - "links": { - "tr": "fill-stroke-3", - "dev": "fill-stroke-3", - "devtype": "fxtf" + title: 'CSS Fill and Stroke Module Level 3', + links: { + tr: 'fill-stroke-3', + dev: 'fill-stroke-3', + devtype: 'fxtf', }, - "status": { - "stability": "experimental" + status: { + stability: 'experimental', }, - "properties": { - "fill": { - "links": { - "tr": "#fill-shorthand", - "dev": "#fill-shorthand" + properties: { + fill: { + links: { + tr: '#fill-shorthand', + dev: '#fill-shorthand', }, - "tests": [ - "url(foo.png), url(bar.svg)", - "top left / 50% 60%", - "border-box", - "border-box padding-box", - "url(foo.png) bottom right / cover padding-box content-box" - ] + tests: [ + 'url(foo.png), url(bar.svg)', + 'top left / 50% 60%', + 'border-box', + 'border-box padding-box', + 'url(foo.png) bottom right / cover padding-box content-box', + ], }, - "fill-rule": { - "links": { - "tr": "#fill-rule", - "dev": "#fill-rule" + 'fill-rule': { + links: { + tr: '#fill-rule', + dev: '#fill-rule', }, - "tests": ["nonzero", "evenodd"] + tests: ['nonzero', 'evenodd'], }, - "fill-break": { - "links": { - "tr": "#fill-break", - "dev": "#fill-break" + 'fill-break': { + links: { + tr: '#fill-break', + dev: '#fill-break', }, - "tests": ["bounding-box", "slice", "clone"] + tests: ['bounding-box', 'slice', 'clone'], }, - "fill-color": { - "links": { - "tr": "#fill-color", - "dev": "#fill-color" + 'fill-color': { + links: { + tr: '#fill-color', + dev: '#fill-color', }, - "tests": "green" + tests: 'green', }, - "fill-image": { - "links": { - "tr": "#fill-image", - "dev": "#fill-image" + 'fill-image': { + links: { + tr: '#fill-image', + dev: '#fill-image', }, - "tests": [ - "url(foo.png)", + tests: [ + 'url(foo.png)', "image('sprites.png#xywh=10,30,60,20')", "image('wavy.svg', 'wavy.png' , 'wavy.gif')", "image('dark.png', black)", - "image(green)", - "linear-gradient(to bottom, yellow 0%, blue 100%)", - "child", - "child(2)" - ] + 'image(green)', + 'linear-gradient(to bottom, yellow 0%, blue 100%)', + 'child', + 'child(2)', + ], }, - "fill-origin": { - "links": { - "tr": "#fill-origin", - "dev": "#fill-origin" + 'fill-origin': { + links: { + tr: '#fill-origin', + dev: '#fill-origin', }, - "tests": ["match-parent", "fill-box", "stroke-box", "content-box", "padding-box", "border-box"] + tests: ['match-parent', 'fill-box', 'stroke-box', 'content-box', 'padding-box', 'border-box'], }, - "fill-position": { - "links": { - "tr": "#fill-position", - "dev": "#fill-position" + 'fill-position': { + links: { + tr: '#fill-position', + dev: '#fill-position', }, - "tests": ["center", "left 50%", "bottom 10px right 20px", "bottom 10px right", "top right 10px"] + tests: ['center', 'left 50%', 'bottom 10px right 20px', 'bottom 10px right', 'top right 10px'], }, - "fill-size": { - "links": { - "tr": "#fill-size", - "dev": "#fill-size" + 'fill-size': { + links: { + tr: '#fill-size', + dev: '#fill-size', }, - "tests": ["auto", "cover", "contain", "10px", "50%", "10px auto", "auto 10%", "50em 50%"] + tests: ['auto', 'cover', 'contain', '10px', '50%', '10px auto', 'auto 10%', '50em 50%'], }, - "fill-repeat": { - "links": { - "tr": "#fill-repeat", - "dev": "#fill-repeat" + 'fill-repeat': { + links: { + tr: '#fill-repeat', + dev: '#fill-repeat', }, - "tests": [ - "repeat-x", "repeat-y", "repeat", "space", "round", "no-repeat", "repeat repeat", - "space repeat", "round repeat", "no-repeat repeat", "repeat space", "space space", - "round space", "no-repeat space", "repeat round", "space round", "round round", - "no-repeat round", "repeat no-repeat", "space no-repeat", "round no-repeat", - "no-repeat no-repeat" - ] + tests: [ + 'repeat-x', + 'repeat-y', + 'repeat', + 'space', + 'round', + 'no-repeat', + 'repeat repeat', + 'space repeat', + 'round repeat', + 'no-repeat repeat', + 'repeat space', + 'space space', + 'round space', + 'no-repeat space', + 'repeat round', + 'space round', + 'round round', + 'no-repeat round', + 'repeat no-repeat', + 'space no-repeat', + 'round no-repeat', + 'no-repeat no-repeat', + ], }, - "fill-opacity": { - "links": { - "tr": "#fill-opacity", - "dev": "#fill-opacity" + 'fill-opacity': { + links: { + tr: '#fill-opacity', + dev: '#fill-opacity', }, - "tests": ["0.5", "45%"] + tests: ['0.5', '45%'], }, - "stroke": { - "links": { - "tr": "#stroke-shorthand", - "dev": "#stroke-shorthand" + stroke: { + links: { + tr: '#stroke-shorthand', + dev: '#stroke-shorthand', }, - "tests": [ - "url(foo.png), url(bar.svg)", - "top left / 50% 60%", - "border-box", - "border-box padding-box", - "url(foo.png) bottom right / cover padding-box content-box" - ] + tests: [ + 'url(foo.png), url(bar.svg)', + 'top left / 50% 60%', + 'border-box', + 'border-box padding-box', + 'url(foo.png) bottom right / cover padding-box content-box', + ], }, - "stroke-width": { - "links": { - "tr": "#stroke-width", - "dev": "#stroke-width" + 'stroke-width': { + links: { + tr: '#stroke-width', + dev: '#stroke-width', }, - "tests": ["0", "1px", "25%"] + tests: ['0', '1px', '25%'], }, - "stroke-align": { - "links": { - "tr": "#stroke-align", - "dev": "#stroke-align" + 'stroke-align': { + links: { + tr: '#stroke-align', + dev: '#stroke-align', }, - "tests": ["center", "inset", "outset "] + tests: ['center', 'inset', 'outset '], }, - "stroke-linecap": { - "links": { - "tr": "#stroke-linecap", - "dev": "#stroke-linecap" + 'stroke-linecap': { + links: { + tr: '#stroke-linecap', + dev: '#stroke-linecap', }, - "tests": ["butt", "round", "square "] + tests: ['butt', 'round', 'square '], }, - "stroke-linejoin": { - "links": { - "tr": "#stroke-linejoin", - "dev": "#stroke-linejoin" + 'stroke-linejoin': { + links: { + tr: '#stroke-linejoin', + dev: '#stroke-linejoin', }, - "tests": [ - "crop", "arcs", "miter", "bevel", "round", "fallback", - "crop bevel", "arcs round", "miter fallback" - ] + tests: [ + 'crop', + 'arcs', + 'miter', + 'bevel', + 'round', + 'fallback', + 'crop bevel', + 'arcs round', + 'miter fallback', + ], }, - "stroke-miterlimit": { - "links": { - "tr": "#stroke-miterlimit", - "dev": "#stroke-miterlimit" + 'stroke-miterlimit': { + links: { + tr: '#stroke-miterlimit', + dev: '#stroke-miterlimit', }, - "tests": "4" + tests: '4', }, - "stroke-break": { - "links": { - "tr": "#stroke-break", - "dev": "#stroke-break" + 'stroke-break': { + links: { + tr: '#stroke-break', + dev: '#stroke-break', }, - "tests": ["bounding-box", "slice", "clone "] + tests: ['bounding-box', 'slice', 'clone '], }, - "stroke-dasharray": { - "links": { - "tr": "#stroke-dasharray", - "dev": "#stroke-dasharray" + 'stroke-dasharray': { + links: { + tr: '#stroke-dasharray', + dev: '#stroke-dasharray', }, - "tests": ["none", "0", "4px", "4px 12%", "4px 12% 3em", "4px 12% 3em 5px", "4px 12% 3em 5px 10%"] + tests: ['none', '0', '4px', '4px 12%', '4px 12% 3em', '4px 12% 3em 5px', '4px 12% 3em 5px 10%'], }, - "stroke-dashoffset": { - "links": { - "tr": "#stroke-dashoffset", - "dev": "#stroke-dashoffset" + 'stroke-dashoffset': { + links: { + tr: '#stroke-dashoffset', + dev: '#stroke-dashoffset', }, - "tests": ["0", "4px", "12%"] + tests: ['0', '4px', '12%'], }, - "stroke-dash-corner": { - "links": { - "tr": "#corner-control", - "dev": "#corner-control" + 'stroke-dash-corner': { + links: { + tr: '#corner-control', + dev: '#corner-control', }, - "tests": ["none", "15px"] + tests: ['none', '15px'], }, - "stroke-dash-justify": { - "links": { - "tr": "#corner-control", - "dev": "#corner-control" + 'stroke-dash-justify': { + links: { + tr: '#corner-control', + dev: '#corner-control', }, - "tests": [ - "none", "stretch", "compress", "dashes", "gaps", - "stretch dashes", "compress gaps dashes", - "stretch gaps", "compress dashes gaps" - ] + tests: [ + 'none', + 'stretch', + 'compress', + 'dashes', + 'gaps', + 'stretch dashes', + 'compress gaps dashes', + 'stretch gaps', + 'compress dashes gaps', + ], }, - "stroke-color": { - "links": { - "tr": "#stroke-color", - "dev": "#stroke-color" + 'stroke-color': { + links: { + tr: '#stroke-color', + dev: '#stroke-color', }, - "tests": "green" + tests: 'green', }, - "stroke-image": { - "links": { - "tr": "#stroke-image", - "dev": "#stroke-image" + 'stroke-image': { + links: { + tr: '#stroke-image', + dev: '#stroke-image', }, - "tests": [ - "url(foo.png)", + tests: [ + 'url(foo.png)', "image('sprites.png#xywh=10,30,60,20')", "image('wavy.svg', 'wavy.png' , 'wavy.gif')", "image('dark.png', black)", - "image(green)", - "linear-gradient(to bottom, yellow 0%, blue 100%)", - "child", - "child(2)" - ] + 'image(green)', + 'linear-gradient(to bottom, yellow 0%, blue 100%)', + 'child', + 'child(2)', + ], }, - "stroke-origin": { - "links": { - "tr": "#stroke-origin", - "dev": "#stroke-origin" + 'stroke-origin': { + links: { + tr: '#stroke-origin', + dev: '#stroke-origin', }, - "tests": ["match-parent", "fill-box", "stroke-box", "content-box", "padding-box", "border-box"] + tests: ['match-parent', 'fill-box', 'stroke-box', 'content-box', 'padding-box', 'border-box'], }, - "stroke-position": { - "links": { - "tr": "#stroke-position", - "dev": "#stroke-position" + 'stroke-position': { + links: { + tr: '#stroke-position', + dev: '#stroke-position', }, - "tests": ["center", "left 50%", "bottom 10px right 20px", "bottom 10px right", "top right 10px"] + tests: ['center', 'left 50%', 'bottom 10px right 20px', 'bottom 10px right', 'top right 10px'], }, - "stroke-size": { - "links": { - "tr": "#stroke-size", - "dev": "#stroke-size" + 'stroke-size': { + links: { + tr: '#stroke-size', + dev: '#stroke-size', }, - "tests": ["auto", "cover", "contain", "10px", "50%", "10px auto", "auto 10%", "50em 50%"] + tests: ['auto', 'cover', 'contain', '10px', '50%', '10px auto', 'auto 10%', '50em 50%'], }, - "stroke-repeat": { - "links": { - "tr": "#stroke-repeat", - "dev": "#stroke-repeat" + 'stroke-repeat': { + links: { + tr: '#stroke-repeat', + dev: '#stroke-repeat', }, - "tests": [ - "repeat-x", "repeat-y", "repeat", "space", "round", "no-repeat", "repeat repeat", - "space repeat", "round repeat", "no-repeat repeat", "repeat space", "space space", - "round space", "no-repeat space", "repeat round", "space round", "round round", - "no-repeat round", "repeat no-repeat", "space no-repeat", "round no-repeat", - "no-repeat no-repeat" - ] + tests: [ + 'repeat-x', + 'repeat-y', + 'repeat', + 'space', + 'round', + 'no-repeat', + 'repeat repeat', + 'space repeat', + 'round repeat', + 'no-repeat repeat', + 'repeat space', + 'space space', + 'round space', + 'no-repeat space', + 'repeat round', + 'space round', + 'round round', + 'no-repeat round', + 'repeat no-repeat', + 'space no-repeat', + 'round no-repeat', + 'no-repeat no-repeat', + ], }, - "stroke-opacity": { - "links": { - "tr": "#stroke-opacity", - "dev": "#stroke-opacity" + 'stroke-opacity': { + links: { + tr: '#stroke-opacity', + dev: '#stroke-opacity', }, - "tests": ["0.5", "45%"] - } - } + tests: ['0.5', '45%'], + }, + }, }; diff --git a/tests/filter-effects-1.js b/tests/filter-effects-1.js index 8274c15b..af0fdda0 100644 --- a/tests/filter-effects-1.js +++ b/tests/filter-effects-1.js @@ -1,63 +1,63 @@ export default { - "title": "Filter Effects Module Level 1", - "links": { - "tr": "filter-effects-1", - "dev": "filter-effects-1", - "devtype": "fxtf" + title: 'Filter Effects Module Level 1', + links: { + tr: 'filter-effects-1', + dev: 'filter-effects-1', + devtype: 'fxtf', }, - "status": { - "stability": "stable" + status: { + stability: 'stable', }, - "properties": { - "filter": { - "links": { - "tr": "#FilterProperty", - "dev": "#FilterProperty" + properties: { + filter: { + links: { + tr: '#FilterProperty', + dev: '#FilterProperty', }, - "tests": [ - "none", - "url(#id)", - "url(image.svg#id)", - "blur(5px)", - "brightness(0.5)", - "contrast(150%)", - "drop-shadow(15px 15px 15px black)", - "grayscale(50%)", - "hue-rotate(50deg)", - "invert(50%)", - "opacity(50%)", - "sepia(50%)", - "saturate(150%)", - "grayscale(100%) sepia(100%)" - ] + tests: [ + 'none', + 'url(#id)', + 'url(image.svg#id)', + 'blur(5px)', + 'brightness(0.5)', + 'contrast(150%)', + 'drop-shadow(15px 15px 15px black)', + 'grayscale(50%)', + 'hue-rotate(50deg)', + 'invert(50%)', + 'opacity(50%)', + 'sepia(50%)', + 'saturate(150%)', + 'grayscale(100%) sepia(100%)', + ], }, - "flood-color": { - "links": { - "tr": "#FloodColorProperty", - "dev": "#FloodColorProperty" + 'flood-color': { + links: { + tr: '#FloodColorProperty', + dev: '#FloodColorProperty', }, - "tests": ["black", "#FFF"] + tests: ['black', '#FFF'], }, - "flood-opacity": { - "links": { - "tr": "#FloodOpacityProperty", - "dev": "#FloodOpacityProperty" + 'flood-opacity': { + links: { + tr: '#FloodOpacityProperty', + dev: '#FloodOpacityProperty', }, - "tests": ["1", "0", "0.2", "45%"] + tests: ['1', '0', '0.2', '45%'], }, - "color-interpolation-filters": { - "links": { - "tr": "#ColorInterpolationFiltersProperty", - "dev": "#ColorInterpolationFiltersProperty" + 'color-interpolation-filters': { + links: { + tr: '#ColorInterpolationFiltersProperty', + dev: '#ColorInterpolationFiltersProperty', }, - "tests": ["auto", "sRGB", "linearRGB"] + tests: ['auto', 'sRGB', 'linearRGB'], }, - "lighting-color": { - "links": { - "tr": "#LightingColorProperty", - "dev": "#LightingColorProperty" + 'lighting-color': { + links: { + tr: '#LightingColorProperty', + dev: '#LightingColorProperty', }, - "tests": ["white", "#000"] - } - } + tests: ['white', '#000'], + }, + }, }; diff --git a/tests/filter-effects-2.js b/tests/filter-effects-2.js index 120dfcfe..9c0bbc4c 100644 --- a/tests/filter-effects-2.js +++ b/tests/filter-effects-2.js @@ -1,33 +1,33 @@ export default { - "title": "Filter Effects Module Level 2", - "links": { - "dev": "filter-effects-2", - "devtype": "fxtf" + title: 'Filter Effects Module Level 2', + links: { + dev: 'filter-effects-2', + devtype: 'fxtf', }, - "status": { - "stability": "experimental" + status: { + stability: 'experimental', }, - "properties": { - "backdrop-filter": { - "links": { - "dev": "#BackdropFilterProperty" + properties: { + 'backdrop-filter': { + links: { + dev: '#BackdropFilterProperty', }, - "tests": [ - "none", - "url(#id)", - "url(image.svg#id)", - "blur(5px)", - "brightness(0.5)", - "contrast(150%)", - "drop-shadow(15px 15px 15px black)", - "grayscale(50%)", - "hue-rotate(50deg)", - "invert(50%)", - "opacity(50%)", - "sepia(50%)", - "saturate(150%)", - "grayscale(100%) sepia(100%)" - ] - } - } + tests: [ + 'none', + 'url(#id)', + 'url(image.svg#id)', + 'blur(5px)', + 'brightness(0.5)', + 'contrast(150%)', + 'drop-shadow(15px 15px 15px black)', + 'grayscale(50%)', + 'hue-rotate(50deg)', + 'invert(50%)', + 'opacity(50%)', + 'sepia(50%)', + 'saturate(150%)', + 'grayscale(100%) sepia(100%)', + ], + }, + }, }; diff --git a/tests/fullscreen.js b/tests/fullscreen.js index 09f68bbe..e4e34145 100644 --- a/tests/fullscreen.js +++ b/tests/fullscreen.js @@ -1,24 +1,24 @@ export default { - "title": "Fullscreen API", - "links": { - "dev": "fullscreen", - "devtype": "whatwg" + title: 'Fullscreen API', + links: { + dev: 'fullscreen', + devtype: 'whatwg', }, - "status": { - "stability": "experimental" + status: { + stability: 'experimental', }, - "selectors": { - "::backdrop": { - "links": { - "dev": "#::backdrop-pseudo-element" + selectors: { + '::backdrop': { + links: { + dev: '#::backdrop-pseudo-element', }, - "tests": "::backdrop" + tests: '::backdrop', }, - ":fullscreen": { - "links": { - "dev": "#:fullscreen-pseudo-class" + ':fullscreen': { + links: { + dev: '#:fullscreen-pseudo-class', }, - "tests": ":fullscreen" - } - } + tests: ':fullscreen', + }, + }, }; diff --git a/tests/html.js b/tests/html.js index 4dfd124e..36746d1c 100644 --- a/tests/html.js +++ b/tests/html.js @@ -1,18 +1,18 @@ export default { - "title": "HTML Living Standard", - "links": { - "dev": "html", - "devtype": "whatwg" + title: 'HTML Living Standard', + links: { + dev: 'html', + devtype: 'whatwg', }, - "status": { - "stability": "experimental" + status: { + stability: 'experimental', }, - "selectors": { - ":autofill": { - "links": { - "dev": "#selector-autofill" + selectors: { + ':autofill': { + links: { + dev: '#selector-autofill', }, - "tests": ":autofill" - } - } + tests: ':autofill', + }, + }, }; diff --git a/tests/mathml-core.js b/tests/mathml-core.js index 79196bb4..2d4cf820 100644 --- a/tests/mathml-core.js +++ b/tests/mathml-core.js @@ -1,55 +1,67 @@ export default { - "title": "MathML Core", - "links": { - "dev": "mathml-core/#css-extensions-for-math-layout", - "devtype": "math" + title: 'MathML Core', + links: { + dev: 'mathml-core/#css-extensions-for-math-layout', + devtype: 'math', }, - "status": { - "stability": "experimental" + status: { + stability: 'experimental', }, - "properties": { - "display": { - "links": { - "dev": "new-display-math-value" + properties: { + display: { + links: { + dev: 'new-display-math-value', }, - "tests": [ - "math", "block math", "inline math" - ] + tests: ['math', 'block math', 'inline math'], }, - "text-transform": { - "links": { - "dev": "#new-text-transform-values" + 'text-transform': { + links: { + dev: '#new-text-transform-values', }, - "tests": [ - "math-auto", "math-bold", "math-italic", "math-bold-italic", "math-double-struck", "math-bold-fraktur", - "math-script", "math-bold-script", "math-fraktur", "math-sans-serif", "math-bold-sans-serif", - "math-sans-serif-italic", "math-sans-serif-bold-italic", "math-monospace", "math-initial", - "math-tailed", "math-looped", "math-stretched" - ] + tests: [ + 'math-auto', + 'math-bold', + 'math-italic', + 'math-bold-italic', + 'math-double-struck', + 'math-bold-fraktur', + 'math-script', + 'math-bold-script', + 'math-fraktur', + 'math-sans-serif', + 'math-bold-sans-serif', + 'math-sans-serif-italic', + 'math-sans-serif-bold-italic', + 'math-monospace', + 'math-initial', + 'math-tailed', + 'math-looped', + 'math-stretched', + ], }, - "font-size": { - "links": { - "dev": "#the-math-script-level-property" + 'font-size': { + links: { + dev: '#the-math-script-level-property', }, - "tests": ["math"] + tests: ['math'], }, - "math-style": { - "links": { - "dev": "#the-math-style-property" + 'math-style': { + links: { + dev: '#the-math-style-property', }, - "tests": ["normal", "compact"] + tests: ['normal', 'compact'], }, - "math-shift": { - "links": { - "dev": "#the-math-shift" + 'math-shift': { + links: { + dev: '#the-math-shift', }, - "tests": ["normal", "compact"] + tests: ['normal', 'compact'], }, - "math-depth": { - "links": { - "dev": "#the-math-script-level-property" + 'math-depth': { + links: { + dev: '#the-math-script-level-property', }, - "tests": ["auto-add", "add(0)", "add(1)", "0", "1"] - } - } + tests: ['auto-add', 'add(0)', 'add(1)', '0', '1'], + }, + }, }; diff --git a/tests/mediaqueries-3.js b/tests/mediaqueries-3.js index d9d9f13e..9bc25ad5 100644 --- a/tests/mediaqueries-3.js +++ b/tests/mediaqueries-3.js @@ -2,139 +2,131 @@ * Note: the following media queries must be true in supporting UAs! */ export default { - "title": "Media Queries Level 3", - "links": { - "tr": "css3-mediaqueries", - "dev": "mediaqueries-3" + title: 'Media Queries Level 3', + links: { + tr: 'css3-mediaqueries', + dev: 'mediaqueries-3', }, - "status": { - "stability": "stable", - "first-snapshot": 2010 + status: { + stability: 'stable', + 'first-snapshot': 2010, }, - "Media queries": { - "negation": { - "links": { - "tr": "#media0", - "dev": "#media0", - "mdn": "Media_Queries/Using_media_queries" + 'Media queries': { + negation: { + links: { + tr: '#media0', + dev: '#media0', + mdn: 'Media_Queries/Using_media_queries', }, - "tests": ["not print", "not all and (width:1px)"] + tests: ['not print', 'not all and (width:1px)'], }, - "width": { - "links": { - "tr": "#width", - "dev": "#width", - "mdn": "Media_Queries/Using_media_queries" + width: { + links: { + tr: '#width', + dev: '#width', + mdn: 'Media_Queries/Using_media_queries', }, - "tests": ["(width)", "(min-width:1px)", "(max-width:1000000px)"] + tests: ['(width)', '(min-width:1px)', '(max-width:1000000px)'], }, - "height": { - "links": { - "tr": "#height", - "dev": "#height", - "mdn": "Media_Queries/Using_media_queries" + height: { + links: { + tr: '#height', + dev: '#height', + mdn: 'Media_Queries/Using_media_queries', }, - "tests": ["(height)", "(min-height:1px)", "(max-height:1000000px)"] + tests: ['(height)', '(min-height:1px)', '(max-height:1000000px)'], }, - "device-width": { - "links": { - "tr": "#device-width", - "dev": "#device-width" + 'device-width': { + links: { + tr: '#device-width', + dev: '#device-width', }, - "tests": ["(device-width)", "(min-device-width:1px)", "(max-device-width:1000000px)"] + tests: ['(device-width)', '(min-device-width:1px)', '(max-device-width:1000000px)'], }, - "device-height": { - "links": { - "tr": "#device-height", - "dev": "#device-height" + 'device-height': { + links: { + tr: '#device-height', + dev: '#device-height', }, - "tests": ["(device-height)", "(min-device-height:1px)", "(max-device-height:1000000px)"] + tests: ['(device-height)', '(min-device-height:1px)', '(max-device-height:1000000px)'], }, - "orientation": { - "links": { - "tr": "#orientation", - "dev": "#orientation" + orientation: { + links: { + tr: '#orientation', + dev: '#orientation', }, - "tests": ["(orientation:portrait)", "(orientation:landscape)"] + tests: ['(orientation:portrait)', '(orientation:landscape)'], }, - "aspect-ratio": { - "links": { - "tr": "#aspect-ratio", - "dev": "#aspect-ratio" + 'aspect-ratio': { + links: { + tr: '#aspect-ratio', + dev: '#aspect-ratio', }, - "tests": [ - "(aspect-ratio)", - "(min-aspect-ratio:1/1000000)", - "(min-aspect-ratio:1 / 1000000)", - "(max-aspect-ratio:1000000/1)", - ] + tests: [ + '(aspect-ratio)', + '(min-aspect-ratio:1/1000000)', + '(min-aspect-ratio:1 / 1000000)', + '(max-aspect-ratio:1000000/1)', + ], }, - "device-aspect-ratio": { - "links": { - "tr": "#device-aspect-ratio", - "dev": "#device-aspect-ratio" + 'device-aspect-ratio': { + links: { + tr: '#device-aspect-ratio', + dev: '#device-aspect-ratio', }, - "tests": [ - "(device-aspect-ratio)", - "(min-device-aspect-ratio:1/1000000)", - "(min-device-aspect-ratio:1 / 1000000)", - "(max-device-aspect-ratio:1000000/1)", - ] + tests: [ + '(device-aspect-ratio)', + '(min-device-aspect-ratio:1/1000000)', + '(min-device-aspect-ratio:1 / 1000000)', + '(max-device-aspect-ratio:1000000/1)', + ], }, - "color": { - "links": { - "tr": "#color", - "dev": "#color" + color: { + links: { + tr: '#color', + dev: '#color', }, - "tests": [ - "(color)", "(min-color: 0)", "(max-color: 100)" - ] + tests: ['(color)', '(min-color: 0)', '(max-color: 100)'], }, - "color-index": { - "links": { - "tr": "#color-index", - "dev": "#color-index" + 'color-index': { + links: { + tr: '#color-index', + dev: '#color-index', }, - "tests": [ - "all, (color-index)", - "(min-color-index: 0)", - "(max-color-index: 10000000)" - ] + tests: ['all, (color-index)', '(min-color-index: 0)', '(max-color-index: 10000000)'], }, - "monochrome": { - "links": { - "tr": "#monochrome", - "dev": "#monochrome" + monochrome: { + links: { + tr: '#monochrome', + dev: '#monochrome', }, - "tests": [ - "all, (monochrome)", "(min-monochrome: 0)", "(max-monochrome: 10000)" - ] + tests: ['all, (monochrome)', '(min-monochrome: 0)', '(max-monochrome: 10000)'], }, - "resolution": { - "links": { - "tr": "#resolution", - "dev": "#resolution" + resolution: { + links: { + tr: '#resolution', + dev: '#resolution', }, - "tests": [ - "(resolution)", - "(min-resolution: 1dpi)", - "(max-resolution: 1000000dpi)", - "(max-resolution: 1000000dpcm)" - ] + tests: [ + '(resolution)', + '(min-resolution: 1dpi)', + '(max-resolution: 1000000dpi)', + '(max-resolution: 1000000dpcm)', + ], }, - "scan": { - "links": { - "tr": "#scan", - "dev": "#scan" + scan: { + links: { + tr: '#scan', + dev: '#scan', }, - "tests": ["not tv, (scan: progressive)", "not tv, (scan: interlace)"] + tests: ['not tv, (scan: progressive)', 'not tv, (scan: interlace)'], }, - "grid": { - "links": { - "tr": "#grid", - "dev": "#grid" + grid: { + links: { + tr: '#grid', + dev: '#grid', }, - "tests": ["all, (grid)", "(grid: 0), (grid: 1)"] - } - } + tests: ['all, (grid)', '(grid: 0), (grid: 1)'], + }, + }, }; diff --git a/tests/mediaqueries-4.js b/tests/mediaqueries-4.js index 218f1c04..d1e90ef5 100644 --- a/tests/mediaqueries-4.js +++ b/tests/mediaqueries-4.js @@ -1,97 +1,98 @@ export default { - "title": "Media Queries Level 4", - "links": { - "tr": "mediaqueries-4", - "dev": "mediaqueries-4" + title: 'Media Queries Level 4', + links: { + tr: 'mediaqueries-4', + dev: 'mediaqueries-4', }, - "status": { - "stability": "stable" + status: { + stability: 'stable', }, - "Media queries": { - "resolution": { - "links": { - "tr": "#resolution", - "dev": "#resolution" + 'Media queries': { + resolution: { + links: { + tr: '#resolution', + dev: '#resolution', }, - "tests": ["(resolution: infinite)"] + tests: ['(resolution: infinite)'], }, - "hover": { - "links": { - "tr": "#hover", - "dev": "#hover" + hover: { + links: { + tr: '#hover', + dev: '#hover', }, - "tests": ["(hover)", "(hover: none)", "(hover: hover)"] + tests: ['(hover)', '(hover: none)', '(hover: hover)'], }, - "any-hover": { - "links": { - "tr": "#any-input", - "dev": "#any-input" + 'any-hover': { + links: { + tr: '#any-input', + dev: '#any-input', }, - "tests": ["(any-hover)", "(any-hover: none)", "(any-hover: hover)"] + tests: ['(any-hover)', '(any-hover: none)', '(any-hover: hover)'], }, - "pointer": { - "links": { - "tr": "#pointer", - "dev": "#pointer" + pointer: { + links: { + tr: '#pointer', + dev: '#pointer', }, - "tests": ["(pointer)", "(pointer: none)", "(pointer: coarse)", "(pointer: fine)"] + tests: ['(pointer)', '(pointer: none)', '(pointer: coarse)', '(pointer: fine)'], }, - "any-pointer": { - "links": { - "tr": "#any-input", - "dev": "#any-input" + 'any-pointer': { + links: { + tr: '#any-input', + dev: '#any-input', }, - "tests": ["(any-pointer)", "(any-pointer: none)", "(any-pointer: coarse)", "(any-pointer: fine)"] + tests: ['(any-pointer)', '(any-pointer: none)', '(any-pointer: coarse)', '(any-pointer: fine)'], }, - "update": { - "links": { - "tr": "#update", - "dev": "#update" + update: { + links: { + tr: '#update', + dev: '#update', }, - "tests": ["(update)", "(update: none)", "(update: slow)", "(update: fast)"] + tests: ['(update)', '(update: none)', '(update: slow)', '(update: fast)'], }, - "overflow-block": { - "links": { - "tr": "#mf-overflow-block", - "dev": "#mf-overflow-block" + 'overflow-block': { + links: { + tr: '#mf-overflow-block', + dev: '#mf-overflow-block', }, - "tests": ["(overflow-block: none)", "(overflow-block: scroll)", "(overflow-block: optional-paged)", "(overflow-block: paged)"] + tests: [ + '(overflow-block: none)', + '(overflow-block: scroll)', + '(overflow-block: optional-paged)', + '(overflow-block: paged)', + ], }, - "overflow-inline": { - "links": { - "tr": "#mf-overflow-inline", - "dev": "#mf-overflow-inline" + 'overflow-inline': { + links: { + tr: '#mf-overflow-inline', + dev: '#mf-overflow-inline', }, - "tests": ["(overflow-inline: none)", "(overflow-inline: scroll)"] + tests: ['(overflow-inline: none)', '(overflow-inline: scroll)'], }, - "color-gamut": { - "links": { - "tr": "#color-gamut", - "dev": "#color-gamut" + 'color-gamut': { + links: { + tr: '#color-gamut', + dev: '#color-gamut', }, - "tests": ["(color-gamut)", "(color-gamut: srgb)", "(color-gamut: p3)", "(color-gamut: rec2020)"] + tests: ['(color-gamut)', '(color-gamut: srgb)', '(color-gamut: p3)', '(color-gamut: rec2020)'], }, - "aspect-ratio": { - "links": { - "tr": "#aspect-ratio", - "dev": "#aspect-ratio" + 'aspect-ratio': { + links: { + tr: '#aspect-ratio', + dev: '#aspect-ratio', }, - "tests": [ - "(aspect-ratio: 1280.1/720.01)", - "(max-aspect-ratio: 1280.1/720.01)", - "(min-aspect-ratio: 0.2)", - ] + tests: ['(aspect-ratio: 1280.1/720.01)', '(max-aspect-ratio: 1280.1/720.01)', '(min-aspect-ratio: 0.2)'], }, - "device-aspect-ratio": { - "links": { - "tr": "#device-aspect-ratio", - "dev": "#device-aspect-ratio" + 'device-aspect-ratio': { + links: { + tr: '#device-aspect-ratio', + dev: '#device-aspect-ratio', }, - "tests": [ - "(device-aspect-ratio:1280.1/720.01)", - "(max-device-aspect-ratio:1280.1/720.01)", - "(min-device-aspect-ratio:0.2)", - ] - } - } + tests: [ + '(device-aspect-ratio:1280.1/720.01)', + '(max-device-aspect-ratio:1280.1/720.01)', + '(min-device-aspect-ratio:0.2)', + ], + }, + }, }; diff --git a/tests/mediaqueries-5.js b/tests/mediaqueries-5.js index 6943abb1..95fbf274 100644 --- a/tests/mediaqueries-5.js +++ b/tests/mediaqueries-5.js @@ -1,89 +1,113 @@ export default { - "title": "Media Queries Level 5", - "links": { - "tr": "mediaqueries-5", - "dev": "mediaqueries-5" + title: 'Media Queries Level 5', + links: { + tr: 'mediaqueries-5', + dev: 'mediaqueries-5', }, - "status": { - "stability": "experimental" + status: { + stability: 'experimental', }, - "Media queries": { - "prefers-reduced-motion": { - "links": { - "tr": "#prefers-reduced-motion", - "dev": "#prefers-reduced-motion" + 'Media queries': { + 'prefers-reduced-motion': { + links: { + tr: '#prefers-reduced-motion', + dev: '#prefers-reduced-motion', }, - "tests": ["(prefers-reduced-motion)", "(prefers-reduced-motion: no-preference)", "(prefers-reduced-motion: reduce)"] + tests: [ + '(prefers-reduced-motion)', + '(prefers-reduced-motion: no-preference)', + '(prefers-reduced-motion: reduce)', + ], }, - "prefers-reduced-transparency": { - "links": { - "tr": "#prefers-reduced-transparency", - "dev": "#prefers-reduced-transparency" + 'prefers-reduced-transparency': { + links: { + tr: '#prefers-reduced-transparency', + dev: '#prefers-reduced-transparency', }, - "tests": ["(prefers-reduced-transparency)","(prefers-reduced-transparency: no-preference)", "(prefers-reduced-transparency: reduce)"] + tests: [ + '(prefers-reduced-transparency)', + '(prefers-reduced-transparency: no-preference)', + '(prefers-reduced-transparency: reduce)', + ], }, - "prefers-contrast": { - "links": { - "tr": "#prefers-contrast", - "dev": "#prefers-contrast" + 'prefers-contrast': { + links: { + tr: '#prefers-contrast', + dev: '#prefers-contrast', }, - "tests": ["(prefers-contrast)", "(prefers-contrast: no-preference)", "(prefers-contrast: less)", "(prefers-contrast: more)", "(prefers-contrast: custom)"] + tests: [ + '(prefers-contrast)', + '(prefers-contrast: no-preference)', + '(prefers-contrast: less)', + '(prefers-contrast: more)', + '(prefers-contrast: custom)', + ], }, - "prefers-color-scheme": { - "links": { - "tr": "#prefers-color-scheme", - "dev": "#prefers-color-scheme" + 'prefers-color-scheme': { + links: { + tr: '#prefers-color-scheme', + dev: '#prefers-color-scheme', }, - "tests": ["(prefers-color-scheme)", "(prefers-color-scheme: light)", "(prefers-color-scheme: dark)"] + tests: ['(prefers-color-scheme)', '(prefers-color-scheme: light)', '(prefers-color-scheme: dark)'], }, - "scripting": { - "links": { - "tr": "#scripting", - "dev": "#scripting" + scripting: { + links: { + tr: '#scripting', + dev: '#scripting', }, - "tests": ["(scripting)", "(scripting: none)", "(scripting: initial-only)", "(scripting: enabled)"] + tests: ['(scripting)', '(scripting: none)', '(scripting: initial-only)', '(scripting: enabled)'], }, - "environment-blending": { - "links": { - "tr": "#environment-blending", - "dev": "#environment-blending" + 'environment-blending': { + links: { + tr: '#environment-blending', + dev: '#environment-blending', }, - "tests": ["(environment-blending)", "(environment-blending: opaque)", "(environment-blending: additive)", "(environment-blending: subtractive)"] + tests: [ + '(environment-blending)', + '(environment-blending: opaque)', + '(environment-blending: additive)', + '(environment-blending: subtractive)', + ], }, - "forced-colors": { - "links": { - "tr": "#forced-colors", - "dev": "#prefers-contrast" + 'forced-colors': { + links: { + tr: '#forced-colors', + dev: '#prefers-contrast', }, - "tests": ["(forced-colors)", "(forced-colors: none)", "(forced-color: active)"] + tests: ['(forced-colors)', '(forced-colors: none)', '(forced-color: active)'], }, - "dynamic-range": { - "links": { - "tr": "#dynamic-range", - "dev": "#dynamic-range" + 'dynamic-range': { + links: { + tr: '#dynamic-range', + dev: '#dynamic-range', }, - "tests": ["(dynamic-range)", "(dynamic-range: standard)", "(dynamic-range: high)"] + tests: ['(dynamic-range)', '(dynamic-range: standard)', '(dynamic-range: high)'], }, - "inverted-colors": { - "links": { - "tr": "#inverted", - "dev": "#inverted" + 'inverted-colors': { + links: { + tr: '#inverted', + dev: '#inverted', }, - "tests": ["(inverted-colors)", "(inverted-colors: none)", "(light-level: inverted)"] + tests: ['(inverted-colors)', '(inverted-colors: none)', '(light-level: inverted)'], }, - "video-color-gamut": { - "links": { - "dev": "#video-color-gamut", - "tr": "#video-color-gamut" + 'video-color-gamut': { + links: { + dev: '#video-color-gamut', + tr: '#video-color-gamut', }, - "tests": ["(video-color-gamut)", "(video-color-gamut: srgb)", "(video-color-gamut: p3)", "(video-color-gamut: rec2020)"] + tests: [ + '(video-color-gamut)', + '(video-color-gamut: srgb)', + '(video-color-gamut: p3)', + '(video-color-gamut: rec2020)', + ], }, - "video-dynamic-range": { - "links": { - "dev": "#video-dynamic-range", - "tr": "#video-dynamic-range" + 'video-dynamic-range': { + links: { + dev: '#video-dynamic-range', + tr: '#video-dynamic-range', }, - "tests": ["(video-dynamic-range)", "(video-dynamic-range: standard)", "(video-dynamic-range: high)"] - } - } + tests: ['(video-dynamic-range)', '(video-dynamic-range: standard)', '(video-dynamic-range: high)'], + }, + }, }; diff --git a/tests/motion-1.js b/tests/motion-1.js index 9b72d5e4..8dc2f487 100644 --- a/tests/motion-1.js +++ b/tests/motion-1.js @@ -1,90 +1,90 @@ export default { - "title": "Motion Path Module Level 1", - "links": { - "dev": "motion-1", - "tr": "motion-1", - "devtype": "fxtf" + title: 'Motion Path Module Level 1', + links: { + dev: 'motion-1', + tr: 'motion-1', + devtype: 'fxtf', }, - "status": { - "stability": "experimental" + status: { + stability: 'experimental', }, - "properties": { - "offset-anchor": { - "links": { - "dev": "#offset-anchor-property", - "tr": "#offset-anchor-property" + properties: { + 'offset-anchor': { + links: { + dev: '#offset-anchor-property', + tr: '#offset-anchor-property', }, - "tests": ["auto", "center", "top left", "10px 20px", "30% 40%"] + tests: ['auto', 'center', 'top left', '10px 20px', '30% 40%'], }, - "offset-distance": { - "links": { - "dev": "#offset-distance-property", - "tr": "#offset-distance-property" + 'offset-distance': { + links: { + dev: '#offset-distance-property', + tr: '#offset-distance-property', }, - "tests": ["20px", "30%"] + tests: ['20px', '30%'], }, - "offset-path": { - "links": { - "dev": "#offset-path-property", - "tr": "#offset-path-property" + 'offset-path': { + links: { + dev: '#offset-path-property', + tr: '#offset-path-property', }, - "tests": [ - "none", - "ray(45deg closest-side)", - "ray(45deg closest-corner)", - "ray(45deg farthest-side)", - "ray(45deg farthest-corner)", - "ray(45deg sides)", - "ray(45deg closest-side contain)", - "path(\"M 100 100 L 300 100 L 200 300 z\")", - "url(shape.svg)", - "circle(200px)", - "circle(200px at top left)", - "ellipse(200px 100px)", - "inset(30px)", - "polygon(0 0, 100% 100%, 0 100%)", - "circle(200px)", - "circle(200px) content-box", - "circle(200px) padding-box", - "circle(200px) border-box", - "circle(200px) fill-box", - "circle(200px) stroke-box", - "circle(200px) view-box", - ] + tests: [ + 'none', + 'ray(45deg closest-side)', + 'ray(45deg closest-corner)', + 'ray(45deg farthest-side)', + 'ray(45deg farthest-corner)', + 'ray(45deg sides)', + 'ray(45deg closest-side contain)', + 'path("M 100 100 L 300 100 L 200 300 z")', + 'url(shape.svg)', + 'circle(200px)', + 'circle(200px at top left)', + 'ellipse(200px 100px)', + 'inset(30px)', + 'polygon(0 0, 100% 100%, 0 100%)', + 'circle(200px)', + 'circle(200px) content-box', + 'circle(200px) padding-box', + 'circle(200px) border-box', + 'circle(200px) fill-box', + 'circle(200px) stroke-box', + 'circle(200px) view-box', + ], }, - "offset-position": { - "links": { - "dev": "#offset-position-property", - "tr": "#offset-position-property" + 'offset-position': { + links: { + dev: '#offset-position-property', + tr: '#offset-position-property', }, - "tests": ["auto", "center", "top left", "10px 20px", "30% 40%"] + tests: ['auto', 'center', 'top left', '10px 20px', '30% 40%'], }, - "offset-rotate": { - "links": { - "dev": "#offset-rotate-property", - "tr": "#offset-rotate-property" + 'offset-rotate': { + links: { + dev: '#offset-rotate-property', + tr: '#offset-rotate-property', }, - "tests": ["auto", "reverse", "90deg", "auto 90deg", "reverse 90deg"] + tests: ['auto', 'reverse', '90deg', 'auto 90deg', 'reverse 90deg'], }, - "offset": { - "links": { - "dev": "#offset-shorthand", - "tr": "#offset-shorthand" + offset: { + links: { + dev: '#offset-shorthand', + tr: '#offset-shorthand', }, - "tests": [ - "none", - "ray(45deg closest-side)", - "path(\"M 100 100 L 300 100 L 200 300 z\")", - "url(shape.svg)", - "circle(200px)", - "center", - "top left circle(200px)", - "circle(200px) 20px", - "circle(200px) 10deg", - "top left circle(200px) 20px", - "top left circle(200px) 20px 10deg", - "circle(200px) / top left" - ] - } - } + tests: [ + 'none', + 'ray(45deg closest-side)', + 'path("M 100 100 L 300 100 L 200 300 z")', + 'url(shape.svg)', + 'circle(200px)', + 'center', + 'top left circle(200px)', + 'circle(200px) 20px', + 'circle(200px) 10deg', + 'top left circle(200px) 20px', + 'top left circle(200px) 20px 10deg', + 'circle(200px) / top left', + ], + }, + }, }; diff --git a/tests/pointerevents1.js b/tests/pointerevents1.js index 4c22c345..1a3020e4 100644 --- a/tests/pointerevents1.js +++ b/tests/pointerevents1.js @@ -1,17 +1,17 @@ export default { - "title": "Pointer Events Level 1", - "links": { - "tr": "pointerevents1" + title: 'Pointer Events Level 1', + links: { + tr: 'pointerevents1', }, - "status": { - "stability": "stable" + status: { + stability: 'stable', }, - "properties": { - "touch-action": { - "links": { - "tr": "#the-touch-action-css-property" + properties: { + 'touch-action': { + links: { + tr: '#the-touch-action-css-property', }, - "tests": ["auto", "none", "pan-x", "pan-y", "pan-x pan-y", "manipulation"] - } - } + tests: ['auto', 'none', 'pan-x', 'pan-y', 'pan-x pan-y', 'manipulation'], + }, + }, }; diff --git a/tests/pointerevents3.js b/tests/pointerevents3.js index 85a553f1..1bf67788 100644 --- a/tests/pointerevents3.js +++ b/tests/pointerevents3.js @@ -1,19 +1,19 @@ export default { - "title": "Pointer Events Level 3", - "links": { - "tr": "pointerevents3", - "dev": "pointerevents", - "devtype": "github" + title: 'Pointer Events Level 3', + links: { + tr: 'pointerevents3', + dev: 'pointerevents', + devtype: 'github', }, - "status": { - "stability": "experimental" + status: { + stability: 'experimental', }, - "properties": { - "touch-action": { - "links": { - "dev": "#the-touch-action-css-property" + properties: { + 'touch-action': { + links: { + dev: '#the-touch-action-css-property', }, - "tests": ["pan-left", "pan-right", "pan-up", "pan-down", "pan-left pan-up"] - } - } + tests: ['pan-left', 'pan-right', 'pan-up', 'pan-down', 'pan-left pan-up'], + }, + }, }; diff --git a/tests/scroll-animations-1.js b/tests/scroll-animations-1.js index 7c6d56b7..fdb6fdb8 100644 --- a/tests/scroll-animations-1.js +++ b/tests/scroll-animations-1.js @@ -1,54 +1,59 @@ export default { - "title": "Scroll-linked Animations", - "links": { - "tr": "scroll-animations-1", - "dev": "scroll-animations-1" + title: 'Scroll-linked Animations', + links: { + tr: 'scroll-animations-1', + dev: 'scroll-animations-1', }, - "status": { - "stability": "experimental" + status: { + stability: 'experimental', }, - "@rules": { - "@scroll-timeline": { - "links": { - "tr": "#scroll-timeline-at-rule", - "dev": "#scroll-timeline-at-rule" + '@rules': { + '@scroll-timeline': { + links: { + tr: '#scroll-timeline-at-rule', + dev: '#scroll-timeline-at-rule', }, - "tests": [ - "@scroll-timeline scroller { source: selector(#root); }" - ] - } + tests: ['@scroll-timeline scroller { source: selector(#root); }'], + }, }, - "descriptors": { - "@scroll-timeline example/source": { - "links": { - "tr": "#scroll-timeline-descriptors", - "dev": "#scroll-timeline-descriptors" + descriptors: { + '@scroll-timeline example/source': { + links: { + tr: '#scroll-timeline-descriptors', + dev: '#scroll-timeline-descriptors', }, - "tests": ["selector(#id)", "auto", "none"] + tests: ['selector(#id)', 'auto', 'none'], }, - "@scroll-timeline example/orientation": { - "links": { - "tr": "#scroll-timeline-descriptors", - "dev": "#scroll-timeline-descriptors" + '@scroll-timeline example/orientation': { + links: { + tr: '#scroll-timeline-descriptors', + dev: '#scroll-timeline-descriptors', }, - "required": { - '*': { "descriptor": "source: auto"} + required: { + '*': { descriptor: 'source: auto' }, }, - "tests": ["auto", "block", "inline", "horizontal", "vertical"] + tests: ['auto', 'block', 'inline', 'horizontal', 'vertical'], }, - "@scroll-timeline example/offsets": { - "links": { - "tr": "#scroll-timeline-descriptors", - "dev": "#scroll-timeline-descriptors" + '@scroll-timeline example/offsets': { + links: { + tr: '#scroll-timeline-descriptors', + dev: '#scroll-timeline-descriptors', }, - "required": { - '*': { "descriptor": "source: auto"} + required: { + '*': { descriptor: 'source: auto' }, }, - "tests": [ - "none", "auto", "100px", "5%", "selector(#id)", "selector(#id) start", - "selector(#id) end", "selector(#id) 0.5", "selector(#id) start 0.5", - "selector(#id), 100px, auto" - ] - } - } + tests: [ + 'none', + 'auto', + '100px', + '5%', + 'selector(#id)', + 'selector(#id) start', + 'selector(#id) end', + 'selector(#id) 0.5', + 'selector(#id) start 0.5', + 'selector(#id), 100px, auto', + ], + }, + }, }; diff --git a/tests/selectors-3.js b/tests/selectors-3.js index be397cbe..8c4c51ad 100644 --- a/tests/selectors-3.js +++ b/tests/selectors-3.js @@ -1,225 +1,257 @@ export default { - "title": "Selectors Level 3", - "links": { - "tr": "selectors-3", - "dev": "selectors-3", - "mdn": "Glossary/CSS_Selector" + title: 'Selectors Level 3', + links: { + tr: 'selectors-3', + dev: 'selectors-3', + mdn: 'Glossary/CSS_Selector', }, - "status": { - "stability": "stable", - "first-snapshot": 2007 + status: { + stability: 'stable', + 'first-snapshot': 2007, }, - "selectors": { - "Sibling combinator": { - "links": { - "tr": "#sibling-combinators", - "dev": "#sibling-combinators", - "mdn": "General_sibling_combinator" + selectors: { + 'Sibling combinator': { + links: { + tr: '#sibling-combinators', + dev: '#sibling-combinators', + mdn: 'General_sibling_combinator', }, - "tests": "foo ~ bar" + tests: 'foo ~ bar', }, - "::before": { - "links": { - "tr": "#gen-content", - "dev": "#gen-content" + '::before': { + links: { + tr: '#gen-content', + dev: '#gen-content', }, - "tests": "::before" + tests: '::before', }, - "::after": { - "links": { - "tr": "#gen-content", - "dev": "#gen-content" + '::after': { + links: { + tr: '#gen-content', + dev: '#gen-content', }, - "tests": "::after" + tests: '::after', }, - "::first-letter": { - "links": { - "tr": "#first-letter", - "dev": "#first-letter" + '::first-letter': { + links: { + tr: '#first-letter', + dev: '#first-letter', }, - "tests": "::first-letter" + tests: '::first-letter', }, - "::first-line": { - "links": { - "tr": "#first-line", - "dev": "#first-line" + '::first-line': { + links: { + tr: '#first-line', + dev: '#first-line', }, - "tests": "::first-line" + tests: '::first-line', }, - "[att^=val]": { - "links": { - "tr": "#attribute-substrings", - "dev": "#attribute-substrings", - "mdn": "Attribute_selectors" + '[att^=val]': { + links: { + tr: '#attribute-substrings', + dev: '#attribute-substrings', + mdn: 'Attribute_selectors', }, - "tests": ["[att^=val]", "[att^=\"val\"]"] - }, - "[att*=val]": { - "links": { - "tr": "#attribute-substrings", - "dev": "#attribute-substrings", - "mdn": "Attribute_selectors" - }, - "tests": ["[att*=val]", "[att*=\"val\"]"] - }, - "[att$=val]": { - "links": { - "tr": "#attribute-substrings", - "dev": "#attribute-substrings", - "mdn": "Attribute_selectors" - }, - "tests": ["[att$=val]", "[att$=\"val\"]"] - }, - "Namespaces": { - "links": { - "tr": "#attrnmsp", - "dev": "#attrnmsp", - "mdn": "CSS_Namespaces" - }, - "tests": ["*|html", "[*|attr]", "[*|attr=val]", "*|html[*|attr]"] - }, - ":target": { - "links": { - "tr": "#target-pseudo", - "dev": "#target-pseudo" - }, - "tests": ":target" - }, - ":enabled": { - "links": { - "tr": "#enableddisabled", - "dev": "#enableddisabled" - }, - "tests": ":enabled" - }, - ":disabled": { - "links": { - "tr": "#enableddisabled", - "dev": "#enableddisabled" - }, - "tests": ":disabled" - }, - ":checked": { - "links": { - "tr": "#checked", - "dev": "#checked" - }, - "tests": ":checked" - }, - ":indeterminate": { - "links": { - "tr": "#indeterminate", - "dev": "#indeterminate" - }, - "tests": ":indeterminate" - }, - ":root": { - "links": { - "tr": "#root-pseudo", - "dev": "#root-pseudo" - }, - "tests": ":root" - }, - ":nth-child()": { - "links": { - "tr": "#nth-child-pseudo", - "dev": "#nth-child-pseudo" - }, - "tests": [ - ":nth-child(even)", ":nth-child(odd)", - ":nth-child(n)", ":nth-child(-n)", ":nth-child(0n)", - ":nth-child(1)", ":nth-child(-1)", ":nth-child(0)", - ":nth-child(n+1)", ":nth-child(3n+1)", ":nth-child(3n + 1)", - ":nth-child(-n+1)", ":nth-child(3n-1)" - ] - }, - ":nth-last-child()": { - "links": { - "tr": "#nth-last-child-pseudo", - "dev": "#nth-last-child-pseudo" - }, - "tests": [ - ":nth-last-child(even)", ":nth-last-child(odd)", - ":nth-last-child(n)", ":nth-last-child(-n)", ":nth-last-child(0n)", - ":nth-last-child(1)", ":nth-last-child(-1)", ":nth-last-child(0)", - ":nth-last-child(n+1)", ":nth-last-child(3n+1)", ":nth-last-child(3n + 1)", - ":nth-last-child(-n+1)", ":nth-last-child(3n-1)" - ] - }, - ":nth-of-type()": { - "links": { - "tr": "#nth-of-type-pseudo", - "dev": "#nth-of-type-pseudo" - }, - "tests": [ - ":nth-of-type(even)", ":nth-of-type(odd)", - ":nth-of-type(n)", ":nth-of-type(-n)", ":nth-of-type(0n)", - ":nth-of-type(1)", ":nth-of-type(-1)", ":nth-of-type(0)", - ":nth-of-type(n+1)", ":nth-of-type(3n+1)", ":nth-of-type(3n + 1)", - ":nth-of-type(-n+1)", ":nth-of-type(3n-1)" - ] - }, - ":nth-last-of-type()": { - "links": { - "tr": "#nth-last-of-type-pseudo", - "dev": "#nth-last-of-type-pseudo" - }, - "tests": [ - ":nth-last-of-type(even)", ":nth-last-of-type(odd)", - ":nth-last-of-type(n)", ":nth-last-of-type(-n)", ":nth-last-of-type(0n)", - ":nth-last-of-type(1)", ":nth-last-of-type(-1)", ":nth-last-of-type(0)", - ":nth-last-of-type(n+1)", ":nth-last-of-type(3n+1)", ":nth-last-of-type(3n + 1)", - ":nth-last-of-type(-n+1)", ":nth-last-of-type(3n-1)" - ] - }, - ":last-child": { - "links": { - "tr": "#last-child-pseudo", - "dev": "#last-child-pseudo" - }, - "tests": ":last-child" - }, - ":only-child": { - "links": { - "tr": "#only-child-pseudo", - "dev": "#only-child-pseudo" - }, - "tests": ":only-child" - }, - ":first-of-type": { - "links": { - "tr": "#first-of-type-pseudo", - "dev": "#first-of-type-pseudo" - }, - "tests": ":first-of-type" - }, - ":last-of-type": { - "links": { - "tr": "#last-of-type-pseudo", - "dev": "#last-of-type-pseudo" - }, - "tests": ":last-of-type" - }, - ":only-of-type": { - "links": { - "tr": "#only-of-type-pseudo", - "dev": "#only-of-type-pseudo" - }, - "tests": ":only-of-type" - }, - ":empty": { - "links": { - "tr": "#empty-pseudo", - "dev": "#empty-pseudo" - }, - "tests": ":empty" - }, - ":not()": { - "links": { - "tr": "#negation", - "dev": "#negation" - }, - "tests": [":not(*)", ":not(element)", ":not(.class):not(#id):not([attr]):not(:link)"] - } - } + tests: ['[att^=val]', '[att^="val"]'], + }, + '[att*=val]': { + links: { + tr: '#attribute-substrings', + dev: '#attribute-substrings', + mdn: 'Attribute_selectors', + }, + tests: ['[att*=val]', '[att*="val"]'], + }, + '[att$=val]': { + links: { + tr: '#attribute-substrings', + dev: '#attribute-substrings', + mdn: 'Attribute_selectors', + }, + tests: ['[att$=val]', '[att$="val"]'], + }, + Namespaces: { + links: { + tr: '#attrnmsp', + dev: '#attrnmsp', + mdn: 'CSS_Namespaces', + }, + tests: ['*|html', '[*|attr]', '[*|attr=val]', '*|html[*|attr]'], + }, + ':target': { + links: { + tr: '#target-pseudo', + dev: '#target-pseudo', + }, + tests: ':target', + }, + ':enabled': { + links: { + tr: '#enableddisabled', + dev: '#enableddisabled', + }, + tests: ':enabled', + }, + ':disabled': { + links: { + tr: '#enableddisabled', + dev: '#enableddisabled', + }, + tests: ':disabled', + }, + ':checked': { + links: { + tr: '#checked', + dev: '#checked', + }, + tests: ':checked', + }, + ':indeterminate': { + links: { + tr: '#indeterminate', + dev: '#indeterminate', + }, + tests: ':indeterminate', + }, + ':root': { + links: { + tr: '#root-pseudo', + dev: '#root-pseudo', + }, + tests: ':root', + }, + ':nth-child()': { + links: { + tr: '#nth-child-pseudo', + dev: '#nth-child-pseudo', + }, + tests: [ + ':nth-child(even)', + ':nth-child(odd)', + ':nth-child(n)', + ':nth-child(-n)', + ':nth-child(0n)', + ':nth-child(1)', + ':nth-child(-1)', + ':nth-child(0)', + ':nth-child(n+1)', + ':nth-child(3n+1)', + ':nth-child(3n + 1)', + ':nth-child(-n+1)', + ':nth-child(3n-1)', + ], + }, + ':nth-last-child()': { + links: { + tr: '#nth-last-child-pseudo', + dev: '#nth-last-child-pseudo', + }, + tests: [ + ':nth-last-child(even)', + ':nth-last-child(odd)', + ':nth-last-child(n)', + ':nth-last-child(-n)', + ':nth-last-child(0n)', + ':nth-last-child(1)', + ':nth-last-child(-1)', + ':nth-last-child(0)', + ':nth-last-child(n+1)', + ':nth-last-child(3n+1)', + ':nth-last-child(3n + 1)', + ':nth-last-child(-n+1)', + ':nth-last-child(3n-1)', + ], + }, + ':nth-of-type()': { + links: { + tr: '#nth-of-type-pseudo', + dev: '#nth-of-type-pseudo', + }, + tests: [ + ':nth-of-type(even)', + ':nth-of-type(odd)', + ':nth-of-type(n)', + ':nth-of-type(-n)', + ':nth-of-type(0n)', + ':nth-of-type(1)', + ':nth-of-type(-1)', + ':nth-of-type(0)', + ':nth-of-type(n+1)', + ':nth-of-type(3n+1)', + ':nth-of-type(3n + 1)', + ':nth-of-type(-n+1)', + ':nth-of-type(3n-1)', + ], + }, + ':nth-last-of-type()': { + links: { + tr: '#nth-last-of-type-pseudo', + dev: '#nth-last-of-type-pseudo', + }, + tests: [ + ':nth-last-of-type(even)', + ':nth-last-of-type(odd)', + ':nth-last-of-type(n)', + ':nth-last-of-type(-n)', + ':nth-last-of-type(0n)', + ':nth-last-of-type(1)', + ':nth-last-of-type(-1)', + ':nth-last-of-type(0)', + ':nth-last-of-type(n+1)', + ':nth-last-of-type(3n+1)', + ':nth-last-of-type(3n + 1)', + ':nth-last-of-type(-n+1)', + ':nth-last-of-type(3n-1)', + ], + }, + ':last-child': { + links: { + tr: '#last-child-pseudo', + dev: '#last-child-pseudo', + }, + tests: ':last-child', + }, + ':only-child': { + links: { + tr: '#only-child-pseudo', + dev: '#only-child-pseudo', + }, + tests: ':only-child', + }, + ':first-of-type': { + links: { + tr: '#first-of-type-pseudo', + dev: '#first-of-type-pseudo', + }, + tests: ':first-of-type', + }, + ':last-of-type': { + links: { + tr: '#last-of-type-pseudo', + dev: '#last-of-type-pseudo', + }, + tests: ':last-of-type', + }, + ':only-of-type': { + links: { + tr: '#only-of-type-pseudo', + dev: '#only-of-type-pseudo', + }, + tests: ':only-of-type', + }, + ':empty': { + links: { + tr: '#empty-pseudo', + dev: '#empty-pseudo', + }, + tests: ':empty', + }, + ':not()': { + links: { + tr: '#negation', + dev: '#negation', + }, + tests: [':not(*)', ':not(element)', ':not(.class):not(#id):not([attr]):not(:link)'], + }, + }, }; diff --git a/tests/selectors-4.js b/tests/selectors-4.js index 4c0c8c7c..6350191f 100644 --- a/tests/selectors-4.js +++ b/tests/selectors-4.js @@ -1,308 +1,324 @@ export default { - "title": "Selectors Level 4", - "links": { - "tr": "selectors-4", - "dev": "selectors-4" + title: 'Selectors Level 4', + links: { + tr: 'selectors-4', + dev: 'selectors-4', }, - "status": { - "stability": "experimental" + status: { + stability: 'experimental', }, - "selectors": { - ":indeterminate": { - "links": { - "tr": "#indeterminate", - "dev": "#indeterminate" + selectors: { + ':indeterminate': { + links: { + tr: '#indeterminate', + dev: '#indeterminate', }, - "tests": ":indeterminate" + tests: ':indeterminate', }, - ":blank": { - "links": { - "tr": "#blank", - "dev": "#blank" + ':blank': { + links: { + tr: '#blank', + dev: '#blank', }, - "tests": ":blank" + tests: ':blank', }, - ":placeholder-shown": { - "links": { - "tr": "#placeholder", - "dev": "#placeholder" + ':placeholder-shown': { + links: { + tr: '#placeholder', + dev: '#placeholder', }, - "tests": ":placeholder-shown" + tests: ':placeholder-shown', }, - ":default": { - "links": { - "tr": "#the-default-pseudo", - "dev": "#the-default-pseudo" + ':default': { + links: { + tr: '#the-default-pseudo', + dev: '#the-default-pseudo', }, - "tests": ":default" + tests: ':default', }, - ":valid": { - "links": { - "tr": "#validity-pseudos", - "dev": "#validity-pseudos" + ':valid': { + links: { + tr: '#validity-pseudos', + dev: '#validity-pseudos', }, - "tests": ":valid" + tests: ':valid', }, - ":invalid": { - "links": { - "tr": "#validity-pseudos", - "dev": "#validity-pseudos" + ':invalid': { + links: { + tr: '#validity-pseudos', + dev: '#validity-pseudos', }, - "tests": ":invalid" + tests: ':invalid', }, - ":in-range": { - "links": { - "tr": "#range-pseudos", - "dev": "#range-pseudos" + ':in-range': { + links: { + tr: '#range-pseudos', + dev: '#range-pseudos', }, - "tests": ":in-range" + tests: ':in-range', }, - ":out-of-range": { - "links": { - "tr": "#range-pseudos", - "dev": "#range-pseudos" + ':out-of-range': { + links: { + tr: '#range-pseudos', + dev: '#range-pseudos', }, - "tests": ":out-of-range" + tests: ':out-of-range', }, - ":user-invalid": { - "links": { - "tr": "#user-invalid-pseudo", - "dev": "#user-invalid-pseudo" + ':user-invalid': { + links: { + tr: '#user-invalid-pseudo', + dev: '#user-invalid-pseudo', }, - "tests": ":user-invalid" + tests: ':user-invalid', }, - ":required": { - "links": { - "tr": "#opt-pseudos", - "dev": "#opt-pseudos" + ':required': { + links: { + tr: '#opt-pseudos', + dev: '#opt-pseudos', }, - "tests": ":required" + tests: ':required', }, - ":optional": { - "links": { - "tr": "#opt-pseudos", - "dev": "#opt-pseudos" + ':optional': { + links: { + tr: '#opt-pseudos', + dev: '#opt-pseudos', }, - "tests": ":optional" + tests: ':optional', }, - ":read-only": { - "links": { - "tr": "#rw-pseudos", - "dev": "#rw-pseudos" + ':read-only': { + links: { + tr: '#rw-pseudos', + dev: '#rw-pseudos', }, - "tests": ":read-only" + tests: ':read-only', }, - ":read-write": { - "links": { - "tr": "#rw-pseudos", - "dev": "#rw-pseudos" + ':read-write': { + links: { + tr: '#rw-pseudos', + dev: '#rw-pseudos', }, - "tests": ":read-write" + tests: ':read-write', }, - ":focus-visible": { - "links": { - "tr": "#the-focus-visible-pseudo", - "dev": "#the-focus-visible-pseudo" + ':focus-visible': { + links: { + tr: '#the-focus-visible-pseudo', + dev: '#the-focus-visible-pseudo', }, - "tests": ":focus-visible" + tests: ':focus-visible', }, - ":focus-within": { - "links": { - "tr": "#the-focus-within-pseudo", - "dev": "#the-focus-within-pseudo" + ':focus-within': { + links: { + tr: '#the-focus-within-pseudo', + dev: '#the-focus-within-pseudo', }, - "tests": ":focus-within" + tests: ':focus-within', }, - ":current": { - "links": { - "tr": "#the-current-pseudo", - "dev": "#the-current-pseudo" + ':current': { + links: { + tr: '#the-current-pseudo', + dev: '#the-current-pseudo', }, - "tests": ":current" + tests: ':current', }, - ":current()": { - "links": { - "tr": "#the-current-pseudo", - "dev": "#the-current-pseudo" + ':current()': { + links: { + tr: '#the-current-pseudo', + dev: '#the-current-pseudo', }, - "tests": ":current(p, li, dt, dd)" + tests: ':current(p, li, dt, dd)', }, - ":past": { - "links": { - "tr": "#the-past-pseudo", - "dev": "#the-past-pseudo" + ':past': { + links: { + tr: '#the-past-pseudo', + dev: '#the-past-pseudo', }, - "tests": ":past" + tests: ':past', }, - ":future": { - "links": { - "tr": "#the-future-pseudo", - "dev": "#the-future-pseudo" + ':future': { + links: { + tr: '#the-future-pseudo', + dev: '#the-future-pseudo', }, - "tests": ":future" + tests: ':future', }, - ":scope": { - "links": { - "tr": "#the-scope-pseudo", - "dev": "#the-scope-pseudo" + ':scope': { + links: { + tr: '#the-scope-pseudo', + dev: '#the-scope-pseudo', }, - "tests": ":scope" + tests: ':scope', }, - ":any-link": { - "links": { - "tr": "#the-any-link-pseudo", - "dev": "#the-any-link-pseudo" + ':any-link': { + links: { + tr: '#the-any-link-pseudo', + dev: '#the-any-link-pseudo', }, - "tests": ":any-link" + tests: ':any-link', }, - ":local-link": { - "links": { - "tr": "#the-local-link-pseudo", - "dev": "#the-local-link-pseudo" + ':local-link': { + links: { + tr: '#the-local-link-pseudo', + dev: '#the-local-link-pseudo', }, - "tests": ":local-link" + tests: ':local-link', }, - ":target-within": { - "links": { - "tr": "#the-target-within-pseudo", - "dev": "#the-target-within-pseudo" - }, - "tests": ":target-within" - }, - ":lang()": { - "links": { - "tr": "#the-lang-pseudo", - "dev": "#the-lang-pseudo" - }, - "tests": [":lang(zh, \"*-hant\")"] - }, - ":not()": { - "links": { - "tr": "#negation", - "dev": "#negation" - }, - "tests": [":not(em, #foo)"] - }, - ":where()": { - "links": { - "tr": "#zero-matches", - "dev": "#zero-matches" - }, - "tests": [":where(em, #foo)", ":where(:not(:hover))"] + ':target-within': { + links: { + tr: '#the-target-within-pseudo', + dev: '#the-target-within-pseudo', + }, + tests: ':target-within', + }, + ':lang()': { + links: { + tr: '#the-lang-pseudo', + dev: '#the-lang-pseudo', + }, + tests: [':lang(zh, "*-hant")'], + }, + ':not()': { + links: { + tr: '#negation', + dev: '#negation', + }, + tests: [':not(em, #foo)'], + }, + ':where()': { + links: { + tr: '#zero-matches', + dev: '#zero-matches', + }, + tests: [':where(em, #foo)', ':where(:not(:hover))'], + }, + ':is()': { + links: { + tr: '#matches', + dev: '#matches', + }, + tests: [':is(em, #foo)', ':is(:not(:hover))'], + }, + ':has()': { + links: { + tr: '#relational', + dev: '#relational', + }, + tests: [ + 'a:has(> img)', + 'dt:has(+ dt)', + 'section:not(:has(h1, h2, h3, h4, h5, h6))', + 'section:has(:not(h1, h2, h3, h4, h5, h6))', + ], + }, + ':defined': { + links: { + tr: '#the-defined-pseudo', + dev: 'the-defined-pseudo', + }, + tests: [':defined'], + }, + ':nth-child()': { + links: { + tr: '#the-nth-child-pseudo', + dev: '#the-nth-child-pseudo', + }, + tests: [':nth-child(-n+3 of li.important)', ':nth-child(even of :not([hidden])'], + }, + '||': { + links: { + tr: '#the-column-combinator', + dev: '#the-column-combinator', + }, + tests: 'foo || bar', + }, + ':nth-col()': { + links: { + tr: '#the-nth-col-pseudo', + dev: '#the-nth-col-pseudo', + }, + tests: [ + ':nth-col(even)', + ':nth-col(odd)', + ':nth-col(n)', + ':nth-col(-n)', + ':nth-col(0n)', + ':nth-col(1)', + ':nth-col(-1)', + ':nth-col(0)', + ':nth-col(n+1)', + ':nth-col(3n+1)', + ':nth-col(3n + 1)', + ':nth-col(-n+1)', + ':nth-col(3n-1)', + ], + }, + ':nth-last-col()': { + links: { + tr: '#the-nth-last-col-pseudo', + dev: '#the-nth-last-col-pseudo', + }, + tests: [ + ':nth-last-col(even)', + ':nth-last-col(odd)', + ':nth-last-col(n)', + ':nth-last-col(-n)', + ':nth-last-col(0n)', + ':nth-last-col(1)', + ':nth-last-col(-1)', + ':nth-last-col(0)', + ':nth-last-col(n+1)', + ':nth-last-col(3n+1)', + ':nth-last-col(3n + 1)', + ':nth-last-col(-n+1)', + ':nth-last-col(3n-1)', + ], + }, + '[att^=val i]': { + links: { + tr: '#attribute-case', + dev: '#attribute-case', + mdn: 'Attribute_selectors', + }, + tests: ['[att^=val i]', '[att^="val" i]', '[att^=val I]', '[att^="val" I]'], + }, + '[att*=val i]': { + links: { + tr: '#attribute-case', + dev: '#attribute-case', + mdn: 'Attribute_selectors', + }, + tests: ['[att*=val i]', '[att*="val" i]', '[att*=val I]', '[att*="val" I]'], + }, + '[att$=val i]': { + links: { + tr: '#attribute-case', + dev: '#attribute-case', + mdn: 'Attribute_selectors', + }, + tests: ['[att$=val i]', '[att$="val" i]', '[att$=val I]', '[att$="val" I]'], + }, + '[att^=val s]': { + links: { + tr: '#attribute-case', + dev: '#attribute-case', + mdn: 'Attribute_selectors', + }, + tests: ['[att^=val s]', '[att^="val" s]', '[att^=val S]', '[att^="val" S]'], + }, + '[att*=val s]': { + links: { + tr: '#attribute-case', + dev: '#attribute-case', + mdn: 'Attribute_selectors', + }, + tests: ['[att*=val s]', '[att*="val" s]', '[att*=val S]', '[att*="val" S]'], + }, + '[att$=val s]': { + links: { + tr: '#attribute-case', + dev: '#attribute-case', + mdn: 'Attribute_selectors', + }, + tests: ['[att$=val s]', '[att$="val" s]', '[att$=val S]', '[att$="val" S]'], }, - ":is()": { - "links": { - "tr": "#matches", - "dev": "#matches" - }, - "tests": [":is(em, #foo)", ":is(:not(:hover))"] - }, - ":has()": { - "links": { - "tr": "#relational", - "dev": "#relational" - }, - "tests": [ - "a:has(> img)", - "dt:has(+ dt)", - "section:not(:has(h1, h2, h3, h4, h5, h6))", - "section:has(:not(h1, h2, h3, h4, h5, h6))" - ] - }, - ":defined": { - "links": { - "tr": "#the-defined-pseudo", - "dev": "the-defined-pseudo" - }, - "tests": [":defined"] - }, - ":nth-child()": { - "links": { - "tr": "#the-nth-child-pseudo", - "dev": "#the-nth-child-pseudo" - }, - "tests": [":nth-child(-n+3 of li.important)", ":nth-child(even of :not([hidden])"] - }, - "||": { - "links": { - "tr": "#the-column-combinator", - "dev": "#the-column-combinator" - }, - "tests": "foo || bar" - }, - ":nth-col()": { - "links": { - "tr": "#the-nth-col-pseudo", - "dev": "#the-nth-col-pseudo" - }, - "tests": [ - ":nth-col(even)", ":nth-col(odd)", - ":nth-col(n)", ":nth-col(-n)", ":nth-col(0n)", - ":nth-col(1)", ":nth-col(-1)", ":nth-col(0)", - ":nth-col(n+1)", ":nth-col(3n+1)", ":nth-col(3n + 1)", - ":nth-col(-n+1)", ":nth-col(3n-1)" - ] - }, - ":nth-last-col()": { - "links": { - "tr": "#the-nth-last-col-pseudo", - "dev": "#the-nth-last-col-pseudo" - }, - "tests": [ - ":nth-last-col(even)", ":nth-last-col(odd)", - ":nth-last-col(n)", ":nth-last-col(-n)", ":nth-last-col(0n)", - ":nth-last-col(1)", ":nth-last-col(-1)", ":nth-last-col(0)", - ":nth-last-col(n+1)", ":nth-last-col(3n+1)", ":nth-last-col(3n + 1)", - ":nth-last-col(-n+1)", ":nth-last-col(3n-1)" - ] - }, - "[att^=val i]": { - "links": { - "tr": "#attribute-case", - "dev": "#attribute-case", - "mdn": "Attribute_selectors" - }, - "tests": ["[att^=val i]", "[att^=\"val\" i]", "[att^=val I]", "[att^=\"val\" I]"] - }, - "[att*=val i]": { - "links": { - "tr": "#attribute-case", - "dev": "#attribute-case", - "mdn": "Attribute_selectors" - }, - "tests": ["[att*=val i]", "[att*=\"val\" i]", "[att*=val I]", "[att*=\"val\" I]"] - }, - "[att$=val i]": { - "links": { - "tr": "#attribute-case", - "dev": "#attribute-case", - "mdn": "Attribute_selectors" - }, - "tests": ["[att$=val i]", "[att$=\"val\" i]", "[att$=val I]", "[att$=\"val\" I]"] - }, - "[att^=val s]": { - "links": { - "tr": "#attribute-case", - "dev": "#attribute-case", - "mdn": "Attribute_selectors" - }, - "tests": ["[att^=val s]", "[att^=\"val\" s]", "[att^=val S]", "[att^=\"val\" S]"] - }, - "[att*=val s]": { - "links": { - "tr": "#attribute-case", - "dev": "#attribute-case", - "mdn": "Attribute_selectors" - }, - "tests": ["[att*=val s]", "[att*=\"val\" s]", "[att*=val S]", "[att*=\"val\" S]"] - }, - "[att$=val s]": { - "links": { - "tr": "#attribute-case", - "dev": "#attribute-case", - "mdn": "Attribute_selectors" - }, - "tests": ["[att$=val s]", "[att$=\"val\" s]", "[att$=val S]", "[att$=\"val\" S]"] - } - } + }, }; diff --git a/tests/svg2-coords.js b/tests/svg2-coords.js index 97a362d3..454c290e 100644 --- a/tests/svg2-coords.js +++ b/tests/svg2-coords.js @@ -1,30 +1,30 @@ export default { - "title": "SVG 2 Coordinate Systems, Transformations and Units", - "links": { - "tr": "svg2/coords.html", - "dev": "svg2-draft/coords.html", - "devtype": "svgwg" + title: 'SVG 2 Coordinate Systems, Transformations and Units', + links: { + tr: 'svg2/coords.html', + dev: 'svg2-draft/coords.html', + devtype: 'svgwg', }, - "status": { - "stability": "experimental" + status: { + stability: 'experimental', }, - "properties": { - "vector-effect": { - "links": { - "tr": "#VectorEffects", - "dev": "#VectorEffects", - "mdnGroup": "SVG" + properties: { + 'vector-effect': { + links: { + tr: '#VectorEffects', + dev: '#VectorEffects', + mdnGroup: 'SVG', }, - "tests": [ - "none", - "non-scaling-stroke", - "non-scaling-size", - "non-rotation", - "fixed-position", - "non-scaling-stroke non-scaling-stroke", - "non-scaling-stroke viewport", - "non-scaling-stroke screen", - ] - } - } + tests: [ + 'none', + 'non-scaling-stroke', + 'non-scaling-size', + 'non-rotation', + 'fixed-position', + 'non-scaling-stroke non-scaling-stroke', + 'non-scaling-stroke viewport', + 'non-scaling-stroke screen', + ], + }, + }, }; diff --git a/tests/svg2-geometry.js b/tests/svg2-geometry.js index 01d9e0a2..3fe9d615 100644 --- a/tests/svg2-geometry.js +++ b/tests/svg2-geometry.js @@ -1,69 +1,69 @@ export default { - "title": "SVG 2 Geometry Properties", - "links": { - "tr": "svg2/geometry.html", - "dev": "svg2-draft/geometry.html", - "devtype": "svgwg" + title: 'SVG 2 Geometry Properties', + links: { + tr: 'svg2/geometry.html', + dev: 'svg2-draft/geometry.html', + devtype: 'svgwg', }, - "status": { - "stability": "experimental" + status: { + stability: 'experimental', }, - "properties": { - "cx": { - "links": { - "tr": "#CX", - "dev": "#CX", - "mdnGroup": "SVG" + properties: { + cx: { + links: { + tr: '#CX', + dev: '#CX', + mdnGroup: 'SVG', }, - "tests": ["0", "1px", "-5px", "25%"] + tests: ['0', '1px', '-5px', '25%'], }, - "cy": { - "links": { - "tr": "#CY", - "dev": "#CY", - "mdnGroup": "SVG" + cy: { + links: { + tr: '#CY', + dev: '#CY', + mdnGroup: 'SVG', }, - "tests": ["0", "1px", "-5px", "25%"] + tests: ['0', '1px', '-5px', '25%'], }, - "r": { - "links": { - "tr": "#R", - "dev": "#R", - "mdnGroup": "SVG" + r: { + links: { + tr: '#R', + dev: '#R', + mdnGroup: 'SVG', }, - "tests": ["0", "1px", "25%"] + tests: ['0', '1px', '25%'], }, - "rx": { - "links": { - "tr": "#RX", - "dev": "#RX", - "mdnGroup": "SVG" + rx: { + links: { + tr: '#RX', + dev: '#RX', + mdnGroup: 'SVG', }, - "tests": ["auto", "0", "1px", "25%"] + tests: ['auto', '0', '1px', '25%'], }, - "ry": { - "links": { - "tr": "#RY", - "dev": "#RY", - "mdnGroup": "SVG" + ry: { + links: { + tr: '#RY', + dev: '#RY', + mdnGroup: 'SVG', }, - "tests": ["auto", "0", "1px", "25%"] + tests: ['auto', '0', '1px', '25%'], }, - "x": { - "links": { - "tr": "#X", - "dev": "#X", - "mdnGroup": "SVG" + x: { + links: { + tr: '#X', + dev: '#X', + mdnGroup: 'SVG', }, - "tests": ["0", "1px", "-5px", "25%"] + tests: ['0', '1px', '-5px', '25%'], }, - "y": { - "links": { - "tr": "#Y", - "dev": "#Y", - "mdnGroup": "SVG" + y: { + links: { + tr: '#Y', + dev: '#Y', + mdnGroup: 'SVG', }, - "tests": ["0", "1px", "-5px", "25%"] - } - } + tests: ['0', '1px', '-5px', '25%'], + }, + }, }; diff --git a/tests/svg2-interact.js b/tests/svg2-interact.js index f5df0cbf..aa5a2f26 100644 --- a/tests/svg2-interact.js +++ b/tests/svg2-interact.js @@ -1,20 +1,32 @@ export default { - "title": "SVG 2 Scripting and Interactivity", - "links": { - "tr": "svg2/interact.html", - "dev": "svg2-draft/interact.html", - "devtype": "svgwg" + title: 'SVG 2 Scripting and Interactivity', + links: { + tr: 'svg2/interact.html', + dev: 'svg2-draft/interact.html', + devtype: 'svgwg', }, - "status": { - "stability": "experimental" + status: { + stability: 'experimental', }, - "properties": { - "pointer-events": { - "links": { - "tr": "#PointerEventsProp", - "dev": "#PointerEventsProp" + properties: { + 'pointer-events': { + links: { + tr: '#PointerEventsProp', + dev: '#PointerEventsProp', }, - "tests": ["auto", "bounding-box", "visiblePainted", "visibleFill", "visibleStroke", "visible", "painted", "fill", "stroke", "all", "none"] - } - } + tests: [ + 'auto', + 'bounding-box', + 'visiblePainted', + 'visibleFill', + 'visibleStroke', + 'visible', + 'painted', + 'fill', + 'stroke', + 'all', + 'none', + ], + }, + }, }; diff --git a/tests/svg2-painting.js b/tests/svg2-painting.js index 8ca00b3f..662017d4 100644 --- a/tests/svg2-painting.js +++ b/tests/svg2-painting.js @@ -1,80 +1,80 @@ export default { - "title": "SVG 2 Painting: Filling, Stroking and Marker Symbols", - "links": { - "tr": "svg2/painting.html", - "dev": "svg2-draft/painting.html", - "devtype": "svgwg" + title: 'SVG 2 Painting: Filling, Stroking and Marker Symbols', + links: { + tr: 'svg2/painting.html', + dev: 'svg2-draft/painting.html', + devtype: 'svgwg', }, - "status": { - "stability": "experimental" + status: { + stability: 'experimental', }, - "properties": { - "color-interpolation": { - "links": { - "tr": "#ColorInterpolation", - "dev": "#ColorInterpolation", - "mdnGroup": "SVG" + properties: { + 'color-interpolation': { + links: { + tr: '#ColorInterpolation', + dev: '#ColorInterpolation', + mdnGroup: 'SVG', }, - "tests": ["auto", "sRGB", "linearRGB"] + tests: ['auto', 'sRGB', 'linearRGB'], }, - "color-rendering": { - "links": { - "tr": "#ColorRendering" + 'color-rendering': { + links: { + tr: '#ColorRendering', }, - "tests": ["auto", "optimizeSpeed", "optimizeQuality"] + tests: ['auto', 'optimizeSpeed', 'optimizeQuality'], }, - "marker": { - "links": { - "tr": "#MarkerShorthand", - "dev": "#MarkerShorthand" + marker: { + links: { + tr: '#MarkerShorthand', + dev: '#MarkerShorthand', }, - "tests": ["none", "url(#marker)"] + tests: ['none', 'url(#marker)'], }, - "marker-end": { - "links": { - "tr": "#VertexMarkerProperties", - "dev": "#VertexMarkerProperties", - "mdnGroup": "SVG" + 'marker-end': { + links: { + tr: '#VertexMarkerProperties', + dev: '#VertexMarkerProperties', + mdnGroup: 'SVG', }, - "tests": ["none", "url(#marker)"] + tests: ['none', 'url(#marker)'], }, - "marker-mid": { - "links": { - "tr": "#VertexMarkerProperties", - "dev": "#VertexMarkerProperties", - "mdnGroup": "SVG" + 'marker-mid': { + links: { + tr: '#VertexMarkerProperties', + dev: '#VertexMarkerProperties', + mdnGroup: 'SVG', }, - "tests": ["none", "url(#marker)"] + tests: ['none', 'url(#marker)'], }, - "marker-start": { - "links": { - "tr": "#VertexMarkerProperties", - "dev": "#VertexMarkerProperties", - "mdnGroup": "SVG" + 'marker-start': { + links: { + tr: '#VertexMarkerProperties', + dev: '#VertexMarkerProperties', + mdnGroup: 'SVG', }, - "tests": ["none", "url(#marker)"] + tests: ['none', 'url(#marker)'], }, - "paint-order": { - "links": { - "tr": "#PaintOrder", - "dev": "#PaintOrder" + 'paint-order': { + links: { + tr: '#PaintOrder', + dev: '#PaintOrder', }, - "tests": ["normal", "fill", "stroke", "markers", "fill stroke markers"] + tests: ['normal', 'fill', 'stroke', 'markers', 'fill stroke markers'], }, - "shape-rendering": { - "links": { - "tr": "#ShapeRendering", - "dev": "#ShapeRendering", - "mdnGroup": "SVG" + 'shape-rendering': { + links: { + tr: '#ShapeRendering', + dev: '#ShapeRendering', + mdnGroup: 'SVG', }, - "tests": ["auto", "optimizeSpeed", "crispEdges", "geometricPrecision"] + tests: ['auto', 'optimizeSpeed', 'crispEdges', 'geometricPrecision'], }, - "text-rendering": { - "links": { - "tr": "#TextRendering", - "dev": "#TextRendering" + 'text-rendering': { + links: { + tr: '#TextRendering', + dev: '#TextRendering', }, - "tests": ["auto", "optimizeSpeed", "optimizeLegibility", "geometricPrecision"] - } - } + tests: ['auto', 'optimizeSpeed', 'optimizeLegibility', 'geometricPrecision'], + }, + }, }; diff --git a/tests/svg2-paths.js b/tests/svg2-paths.js index d6227ef4..a34ef127 100644 --- a/tests/svg2-paths.js +++ b/tests/svg2-paths.js @@ -1,21 +1,21 @@ export default { - "title": "SVG 2 Paths", - "links": { - "tr": "svg2/paths.html", - "dev": "svg2-draft/paths.html", - "devtype": "svgwg" + title: 'SVG 2 Paths', + links: { + tr: 'svg2/paths.html', + dev: 'svg2-draft/paths.html', + devtype: 'svgwg', }, - "status": { - "stability": "experimental" + status: { + stability: 'experimental', }, - "properties": { - "d": { - "links": { - "tr": "#TheDProperty", - "dev": "#TheDProperty", - "mdnGroup": "SVG" + properties: { + d: { + links: { + tr: '#TheDProperty', + dev: '#TheDProperty', + mdnGroup: 'SVG', }, - "tests": ["none", "'M 20 20 H 80 V 30'"] - } - } + tests: ['none', "'M 20 20 H 80 V 30'"], + }, + }, }; diff --git a/tests/svg2-pservers.js b/tests/svg2-pservers.js index 2a640f17..04787a7d 100644 --- a/tests/svg2-pservers.js +++ b/tests/svg2-pservers.js @@ -1,27 +1,27 @@ export default { - "title": "SVG 2 Paint Servers: Gradients and Patterns", - "links": { - "tr": "svg2/pservers.html", - "dev": "svg2-draft/pservers.html", - "devtype": "svgwg" + title: 'SVG 2 Paint Servers: Gradients and Patterns', + links: { + tr: 'svg2/pservers.html', + dev: 'svg2-draft/pservers.html', + devtype: 'svgwg', }, - "status": { - "stability": "experimental" + status: { + stability: 'experimental', }, - "properties": { - "stop-color": { - "links": { - "dev": "#StopColorProperty", - "mdnGroup": "SVG" + properties: { + 'stop-color': { + links: { + dev: '#StopColorProperty', + mdnGroup: 'SVG', }, - "tests": ["green"] + tests: ['green'], }, - "stop-opacity": { - "links": { - "dev": "#StopOpacityProperty", - "mdnGroup": "SVG" + 'stop-opacity': { + links: { + dev: '#StopOpacityProperty', + mdnGroup: 'SVG', }, - "tests": [".5", "45%"] - } - } + tests: ['.5', '45%'], + }, + }, }; diff --git a/tests/svg2-text.js b/tests/svg2-text.js index 1f2b38e8..ad33bd39 100644 --- a/tests/svg2-text.js +++ b/tests/svg2-text.js @@ -1,65 +1,65 @@ export default { - "title": "SVG 2 Text", - "links": { - "tr": "svg2/text.html", - "dev": "svg2-draft/text.html", - "devtype": "svgwg" + title: 'SVG 2 Text', + links: { + tr: 'svg2/text.html', + dev: 'svg2-draft/text.html', + devtype: 'svgwg', }, - "status": { - "stability": "experimental" + status: { + stability: 'experimental', }, - "properties": { - "shape-subtract": { - "links": { - "tr": "#TextShapeSubtract", - "dev": "#TextShapeSubtract" + properties: { + 'shape-subtract': { + links: { + tr: '#TextShapeSubtract', + dev: '#TextShapeSubtract', }, - "tests": [ - "none", + tests: [ + 'none', "url('#shape')", - "inset(50%)", - "circle()", - "ellipse()", - "polygon(0 10px, 30px 0)", + 'inset(50%)', + 'circle()', + 'ellipse()', + 'polygon(0 10px, 30px 0)', "path('M 20 20 H 80 V 30')", - "url('#clip') circle()" - ] + "url('#clip') circle()", + ], }, - "text-anchor": { - "links": { - "tr": "#TextAnchoringProperties", - "dev": "#TextAnchoringProperties", - "mdnGroup": "SVG" + 'text-anchor': { + links: { + tr: '#TextAnchoringProperties', + dev: '#TextAnchoringProperties', + mdnGroup: 'SVG', }, - "tests": ["start", "middle", "end"] + tests: ['start', 'middle', 'end'], }, - "text-decoration-fill": { - "links": { - "tr": "#TextDecorationFillStroke" + 'text-decoration-fill': { + links: { + tr: '#TextDecorationFillStroke', }, - "tests": [ - "none", - "green", - "url(#pattern)", - "url(#pattern) none", - "url(#pattern) green", - "context-fill", - "context-stroke" - ] + tests: [ + 'none', + 'green', + 'url(#pattern)', + 'url(#pattern) none', + 'url(#pattern) green', + 'context-fill', + 'context-stroke', + ], }, - "text-decoration-stroke": { - "links": { - "tr": "#TextDecorationFillStroke" + 'text-decoration-stroke': { + links: { + tr: '#TextDecorationFillStroke', }, - "tests": [ - "none", - "green", - "url(#pattern)", - "url(#pattern) none", - "url(#pattern) green", - "context-fill", - "context-stroke" - ] - } - } + tests: [ + 'none', + 'green', + 'url(#pattern)', + 'url(#pattern) none', + 'url(#pattern) green', + 'context-fill', + 'context-stroke', + ], + }, + }, }; diff --git a/tests/webvtt.js b/tests/webvtt.js index 539613c4..629add3b 100644 --- a/tests/webvtt.js +++ b/tests/webvtt.js @@ -1,41 +1,41 @@ export default { - "title": "WebVTT: The Web Video Text Tracks Format", - "links": { - "tr": "webvtt1", - "dev": "webvtt", - "devtype": "github" + title: 'WebVTT: The Web Video Text Tracks Format', + links: { + tr: 'webvtt1', + dev: 'webvtt', + devtype: 'github', }, - "status": { - "stability": "experimental" + status: { + stability: 'experimental', }, - "selectors": { - "::cue": { - "links": { - "tr": "#the-cue-pseudo-element", - "dev": "#the-cue-pseudo-element" + selectors: { + '::cue': { + links: { + tr: '#the-cue-pseudo-element', + dev: '#the-cue-pseudo-element', }, - "tests": ["::cue"] + tests: ['::cue'], }, - "::cue()": { - "links": { - "tr": "#the-cue-pseudo-element", - "dev": "#the-cue-pseudo-element" + '::cue()': { + links: { + tr: '#the-cue-pseudo-element', + dev: '#the-cue-pseudo-element', }, - "tests": ["::cue(span)"] + tests: ['::cue(span)'], }, - "::cue-region": { - "links": { - "tr": "#the-cue-region-pseudo-element", - "dev": "#the-cue-region-pseudo-element" + '::cue-region': { + links: { + tr: '#the-cue-region-pseudo-element', + dev: '#the-cue-region-pseudo-element', }, - "tests": ["::cue-region"] + tests: ['::cue-region'], }, - "::cue-region()": { - "links": { - "tr": "#the-cue-region-pseudo-element", - "dev": "#the-cue-region-pseudo-element" + '::cue-region()': { + links: { + tr: '#the-cue-region-pseudo-element', + dev: '#the-cue-region-pseudo-element', }, - "tests": ['::cue-region(span)'] - } - } + tests: ['::cue-region(span)'], + }, + }, }; From face10b7a23d7be7d68b1c7ea95588d9ce13429f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Fri, 6 May 2022 23:15:20 +0200 Subject: [PATCH 392/668] Add Compositing and Blending Level 2 --- tests.js | 3 +++ tests/css-composition-2.js | 23 +++++++++++++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 tests/css-composition-2.js diff --git a/tests.js b/tests.js index 48c513bf..7b4f7742 100644 --- a/tests.js +++ b/tests.js @@ -16,6 +16,7 @@ import cssColor4 from './tests/css-color-4.js'; import cssColor5 from './tests/css-color-5.js'; import cssColorAdjust1 from './tests/css-color-adjust-1.js'; import cssComposition1 from './tests/css-composition-1.js'; +import cssComposition2 from './tests/css-composition-2.js'; import cssConditional3 from './tests/css-conditional-3.js'; import cssConditional4 from './tests/css-conditional-4.js'; import cssConditional5 from './tests/css-conditional-5.js'; @@ -120,6 +121,7 @@ import svg2PServers from './tests/svg2-pservers.js'; import svg2Text from './tests/svg2-text.js'; import webVtt from './tests/webvtt.js'; + export default { compat: compat, 'css2-cascade': css2Cascade, @@ -152,6 +154,7 @@ export default { 'css-colors-5': cssColor5, 'css-colors-adjust-1': cssColorAdjust1, 'css-composition-1': cssComposition1, + 'css-composition-2': cssComposition2, 'css-conditional-3': cssConditional3, 'css-conditional-4': cssConditional4, 'css-conditional-5': cssConditional5, diff --git a/tests/css-composition-2.js b/tests/css-composition-2.js new file mode 100644 index 00000000..35f9c93e --- /dev/null +++ b/tests/css-composition-2.js @@ -0,0 +1,23 @@ +export default { + title: 'Compositing and Blending Level 2', + links: { + tr: 'compositing-2', + dev: 'compositing-2', + devtype: 'fxtf', + }, + status: { + stability: 'experimental', + }, + properties: { + 'mix-blend-mode': { + links: { + tr: '#mix-blend-mode', + dev: '#mix-blend-mode', + }, + tests: [ + 'plus-darker', + 'plus-lighter' + ], + }, + }, +}; From ce61590818f60c852fe5744c005f08d514fc3dfb Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Mon, 20 Jun 2022 00:41:16 +0200 Subject: [PATCH 393/668] Updated css-contain-3 to the latest draft --- tests/css-containment-3.js | 34 ++++++++++++++++------------------ 1 file changed, 16 insertions(+), 18 deletions(-) diff --git a/tests/css-containment-3.js b/tests/css-containment-3.js index af5b8575..eedd8fcf 100644 --- a/tests/css-containment-3.js +++ b/tests/css-containment-3.js @@ -14,18 +14,20 @@ export default { dev: '#container-rule', }, tests: [ - '@container size(width >= 150px) { div { margin: 10px } }', - '@container size(height >= 150px) { div { margin: 10px } }', - '@container size(inline-size >= 150px) { div { margin: 10px } }', - '@container size(block-size >= 150px) { div { margin: 10px } }', - '@container size(aspect-ratio >= 1 / 1) { div { margin: 10px } }', - '@container size(orientation = portrait) { div { margin: 10px } }', + '@container (min-width: 150px) { div { margin: 10px } }', + '@container (max-width: 1000px) { div { margin: 10px } }', + '@container (width >= 150px) { div { margin: 10px } }', + '@container (height >= 150px) { div { margin: 10px } }', + '@container (inline-size >= 150px) { div { margin: 10px } }', + '@container (block-size >= 150px) { div { margin: 10px } }', + '@container (aspect-ratio >= 1 / 1) { div { margin: 10px } }', + '@container (orientation = portrait) { div { margin: 10px } }', + '@container (width >= 150px) and (orientation = portrait) { div { margin: 10px } }', + '@container (width >= 150px) or (orientation = portrait) { div { margin: 10px } }', + '@container not (width < 150px) { div { margin: 10px } }', '@container style(pointer) { div { margin: 10px } }', '@container style(pointer: fine) { div { margin: 10px } }', - '@container x size(width >= 150px) { div { margin: 10px } }', - '@container name(x) size(width >= 150px) { div { margin: 10px } }', - '@container type(inline-size) size(width >= 150px) { div { margin: 10px } }', - '@container name(x) type(inline-size) size(width >= 150px) { div { margin: 10px } }', + '@container x (width >= 150px) { div { margin: 10px } }', '@container card (inline-size > 30em) and style(--responsive = true) { div { margin: 10px } }', ], }, @@ -90,14 +92,10 @@ export default { tests: [ 'none', 'style', - 'state', 'size', 'inline-size', - 'block-size', - 'style state', - 'style state size', - 'style state inline-size', - 'style state block-size', + 'style size', + 'style inline-size', ], }, 'container-name': { @@ -105,14 +103,14 @@ export default { tr: '#container-name', dev: '#container-name', }, - tests: ['none', 'x', '"x"', 'x y'], + tests: ['none', 'x', 'x y'], }, container: { links: { tr: '#container-shorthand', dev: '#container-shorthand', }, - tests: ['none', 'style', 'size / x'], + tests: ['none', 'style', 'x / size', 'x y / size', 'x / size style'], }, }, }; From 94d9fc4876b40bbe05337f28b54265935d1a3864 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Mon, 18 Jul 2022 19:54:32 +0200 Subject: [PATCH 394/668] Fix test: forced-colors: active --- tests/mediaqueries-5.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/mediaqueries-5.js b/tests/mediaqueries-5.js index 95fbf274..31194b04 100644 --- a/tests/mediaqueries-5.js +++ b/tests/mediaqueries-5.js @@ -74,7 +74,7 @@ export default { tr: '#forced-colors', dev: '#prefers-contrast', }, - tests: ['(forced-colors)', '(forced-colors: none)', '(forced-color: active)'], + tests: ['(forced-colors)', '(forced-colors: none)', '(forced-colors: active)'], }, 'dynamic-range': { links: { From ec60e63d22f52ab14ded8157bb48a129754d4051 Mon Sep 17 00:00:00 2001 From: Simon Fraser Date: Sun, 14 Aug 2022 02:47:23 -0700 Subject: [PATCH 395/668] https://github.com/LeaVerou/css3test/issues/230 (#231) --- index.html | 7 ------- 1 file changed, 7 deletions(-) diff --git a/index.html b/index.html index fed44eab..c806b0d6 100644 --- a/index.html +++ b/index.html @@ -62,13 +62,6 @@

      Specs tested:

        Want more tests? Be my guest!
        - -
        -

        Cheaters

        -
          -
        • WebKit claims to support CSS3 background-repeat, but it’s LYING
        • -
        -
        From 590300db4284eed1070966e9c9ffe3bdf5e59f00 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Sun, 14 Aug 2022 18:19:17 +0200 Subject: [PATCH 396/668] Fix tests css-values-4 #233 --- tests/css-values-4.js | 48 +++++++++++++++++++++---------------------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/tests/css-values-4.js b/tests/css-values-4.js index 1b3fc048..1857db0c 100644 --- a/tests/css-values-4.js +++ b/tests/css-values-4.js @@ -252,7 +252,7 @@ export default { }, tests: [ 'calc(1rem * pow(1.5, -1))', - 'calc(pow(e, pi) - pi)', + 'calc(1rem * (pow(e, pi) - pi))', 'calc(-18px - sign(5px)*round(down, -18px*sign(5px), 5px))', 'calc(-18px - round(to-zero, -18px, 5px))', ], @@ -264,8 +264,8 @@ export default { }, tests: [ 'round(down, 5.5px, 5px)', - 'up(down, 5.5px, 5px)', - 'down(down, 5.5px, 5px)', + 'round(up, 5.5px, 5px)', + 'round(nearest, 5.5px, 5px)', 'round(to-zero, 5.5px, 5px)', ], }, @@ -274,147 +274,147 @@ export default { tr: '#round-func', dev: '#round-func', }, - tests: ['mod(18px, 5px)', 'mod(-140deg, -90deg)'], + tests: ['mod(18px, 5px)', 'calc(1px * sin(mod(-140deg, -90deg))'], }, 'rem()': { links: { tr: '#round-func', dev: '#round-func', }, - tests: ['rem(140deg, -90deg)'], + tests: ['rem(-18px, 5px)'], }, 'sin()': { links: { tr: '#trig-funcs', dev: '#trig-funcs', }, - tests: ['sin(45deg)', 'sin(.125turn)', 'sin(3.14159 / 4)'], + tests: ['calc(1px * sin(45deg)', 'calc(1px * sin(.125turn))', 'calc(1px * sin(3.14159 / 4))'], }, 'cos()': { links: { tr: '#trig-funcs', dev: '#trig-funcs', }, - tests: ['cos(45deg)', 'cos(.125turn)', 'cos(3.14159 / 4)'], + tests: ['calc(1px * cos(45deg))', 'calc(1px * cos(.125turn))', 'calc(1px * cos(3.14159 / 4))'], }, 'tan()': { links: { tr: '#trig-funcs', dev: '#trig-funcs', }, - tests: ['tan(1)'], + tests: ['calc(1px * tan(1))'], }, 'asin()': { links: { tr: '#trig-funcs', dev: '#trig-funcs', }, - tests: ['asin(1)'], + tests: ['calc(1px * sin(asin(1)))'], }, 'acos()': { links: { tr: '#trig-funcs', dev: '#trig-funcs', }, - tests: ['acos(-1)'], + tests: ['calc(1px * sin(acos(-1)))'], }, 'atan()': { links: { tr: '#trig-funcs', dev: '#trig-funcs', }, - tests: ['atan(-1)', 'atan(tan(90deg))', 'tan(atan(infinity))'], + tests: ['calc(1px * sin(atan(-1)))', 'calc(1px * sin(atan(tan(90deg))))'], }, 'atan2()': { links: { tr: '#trig-funcs', dev: '#trig-funcs', }, - tests: ['atan2(15deg, 90deg)'], + tests: ['calc(1px * sin(atan2(15deg, 90deg)))'], }, 'pow()': { links: { tr: '#exponent-funcs', dev: '#exponent-funcs', }, - tests: ['pow(1.5, -1)'], + tests: ['calc(1px * pow(1.5, -1))'], }, 'sqrt()': { links: { tr: '#exponent-funcs', dev: '#exponent-funcs', }, - tests: ['sqrt(2)'], + tests: ['calc(1px * sqrt(2))'], }, 'hypot()': { links: { tr: '#exponent-funcs', dev: '#exponent-funcs', }, - tests: ['hypot(2)', 'hypot(2, 2)'], + tests: ['calc(1px * hypot(2))', 'calc(1px * hypot(2, 2))'], }, 'log()': { links: { tr: '#exponent-funcs', dev: '#exponent-funcs', }, - tests: ['log(2)'], + tests: ['calc(1px * log(2))'], }, 'exp()': { links: { tr: '#exponent-funcs', dev: '#exponent-funcs', }, - tests: ['exp(2)'], + tests: ['calc(1px * exp(2))'], }, 'abs()': { links: { tr: '#sign-funcs', dev: '#sign-funcs', }, - tests: ['abs(-2)'], + tests: ['calc(1px * abs(-2))'], }, 'sign()': { links: { tr: '#sign-funcs', dev: '#sign-funcs', }, - tests: ['sign(10%)'], + tests: ['calc(1px * sign(10%))'], }, e: { links: { tr: '#calc-constants', dev: '#calc-constants', }, - tests: ['calc(e)'], + tests: ['calc(1px * calc(e))'], }, pi: { links: { tr: '#calc-constants', dev: '#calc-constants', }, - tests: ['calc(pi)'], + tests: ['calc(1px * calc(pi))'], }, infinity: { links: { tr: '#calc-error-constants', dev: '#ccalc-error-constants', }, - tests: ['calc(infinity)'], + tests: ['calc(1px * sin(tan(atan(infinity))))'], }, '-infinity': { links: { tr: '#calc-error-constants', dev: '#ccalc-error-constants', }, - tests: ['calc(-infinity)'], + tests: ['calc(1px * sin(tan(atan(-infinity))))'], }, NaN: { links: { tr: '#calc-error-constants', dev: '#ccalc-error-constants', }, - tests: ['calc(NaN)'], + tests: ['calc(1px * sin(tan(atan(NaN))))'], }, }, }; From 588bc9722144795dc6abf9aac831a499b503cd2a Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Sat, 20 Aug 2022 23:28:03 +0200 Subject: [PATCH 397/668] Corrected syntax for circle() in shape-outside Fixes #232 --- tests/css-shapes-1.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/css-shapes-1.js b/tests/css-shapes-1.js index 996f24c2..2a721c0a 100644 --- a/tests/css-shapes-1.js +++ b/tests/css-shapes-1.js @@ -17,7 +17,7 @@ export default { 'none', 'inset(10% round 10% 40% 10% 40%)', 'ellipse(at top 50% left 20%)', - 'circle(at right 5% top)', + 'circle(at top left)', 'polygon(100% 0, 100% 100%, 0 100%)', "path('M 20 20 H 80 V 30')", 'margin-box', @@ -26,7 +26,7 @@ export default { 'content-box', 'inset(10% round 10% 40% 10% 40%) margin-box', 'ellipse(at top 50% left 20%) margin-box', - 'circle(at right 5% top) margin-box', + 'circle(at top left) margin-box', 'polygon(100% 0, 100% 100%, 0 100%) margin-box', "path('M 20 20 H 80 V 30') margin-box", 'attr(src url)', From faaaf835eb073a85de5ea2de85624b59359ae329 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Sun, 21 Aug 2022 00:03:17 +0200 Subject: [PATCH 398/668] Added tests for functions rect() and xywh() --- tests/css-shapes-1.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tests/css-shapes-1.js b/tests/css-shapes-1.js index 2a721c0a..569a37af 100644 --- a/tests/css-shapes-1.js +++ b/tests/css-shapes-1.js @@ -20,6 +20,8 @@ export default { 'circle(at top left)', 'polygon(100% 0, 100% 100%, 0 100%)', "path('M 20 20 H 80 V 30')", + 'rect(10% 20px 30% 40px)', + 'xywh(10% 40% 100px 200px round 10% 40% 10% 40%)', 'margin-box', 'border-box', 'padding-box', @@ -29,6 +31,8 @@ export default { 'circle(at top left) margin-box', 'polygon(100% 0, 100% 100%, 0 100%) margin-box', "path('M 20 20 H 80 V 30') margin-box", + 'rect(10% 20px 30% 40px) margin-box', + 'xywh(10% 40% 100px 200px round 10% 40% 10% 40%) margin-box', 'attr(src url)', 'url(image.png)', ], From 6d2c07ca6639d928efa4873d32b9c9c1265f2904 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Sun, 21 Aug 2022 01:44:45 +0200 Subject: [PATCH 399/668] Added tests for corner-shape from CSS Backgrounds 4 --- tests/css-backgrounds-4.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/tests/css-backgrounds-4.js b/tests/css-backgrounds-4.js index 6add1ece..b616a6de 100644 --- a/tests/css-backgrounds-4.js +++ b/tests/css-backgrounds-4.js @@ -71,5 +71,17 @@ export default { 'bottom 20px', ], }, + 'corner-shape': { + links: { + dev: '#corner-shaping', + }, + tests: [ + 'round', + 'angle', + 'round angle', + 'round angle round', + 'round angle round angle', + ], + }, }, }; From 31da5e8a9e4ccfa8b155decdeabcb1bd14286fd4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Tue, 23 Aug 2022 12:06:29 +0200 Subject: [PATCH 400/668] Updated selectors-4.js to the latest draft --- tests/fullscreen.js | 6 --- tests/selectors-4.js | 91 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 91 insertions(+), 6 deletions(-) diff --git a/tests/fullscreen.js b/tests/fullscreen.js index e4e34145..71979a35 100644 --- a/tests/fullscreen.js +++ b/tests/fullscreen.js @@ -14,11 +14,5 @@ export default { }, tests: '::backdrop', }, - ':fullscreen': { - links: { - dev: '#:fullscreen-pseudo-class', - }, - tests: ':fullscreen', - }, }, }; diff --git a/tests/selectors-4.js b/tests/selectors-4.js index 6350191f..83e80b4b 100644 --- a/tests/selectors-4.js +++ b/tests/selectors-4.js @@ -85,6 +85,20 @@ export default { }, tests: ':optional', }, + ':user-invalid': { + links: { + tr: '#user-pseudos', + dev: '#user-pseudos', + }, + tests: ':user-invalid', + }, + ':user-valid': { + links: { + tr: '#user-pseudos', + dev: '#user-pseudos', + }, + tests: ':user-valid', + }, ':read-only': { links: { tr: '#rw-pseudos', @@ -99,6 +113,13 @@ export default { }, tests: ':read-write', }, + ':autofill': { + links: { + tr: '#autofill', + dev: '#autofill', + }, + tests: ':autofill', + }, ':focus-visible': { links: { tr: '#the-focus-visible-pseudo', @@ -141,6 +162,76 @@ export default { }, tests: ':future', }, + ':playing': { + links: { + tr: '#selectordef-playing', + dev: '#selectordef-playing', + }, + tests: ':playing', + }, + ':paused': { + links: { + tr: '#selectordef-paused', + dev: '#selectordef-paused', + }, + tests: ':paused', + }, + ':muted': { + links: { + tr: '#selectordef-muted', + dev: '#selectordef-muted', + }, + tests: ':muted', + }, + ':volume-locked': { + links: { + tr: '#selectordef-volume-locked', + dev: '#selectordef-volume-locked', + }, + tests: ':volume-locked', + }, + ':seeking': { + links: { + tr: '#selectordef-seeking', + dev: '#selectordef-seeking', + }, + tests: ':seeking', + }, + ':buffering': { + links: { + tr: '#selectordef-buffering', + dev: '#selectordef-buffering', + }, + tests: ':buffering', + }, + ':stalled': { + links: { + tr: '#selectordef-stalled', + dev: '#selectordef-stalled', + }, + tests: ':stalled', + }, + ':modal': { + links: { + tr: '#modal-state', + dev: '#modal-state', + }, + tests: ':modal', + }, + ':fullscreen': { + links: { + tr: '#fullscreen-state', + dev: '#fullscreen-state', + }, + tests: ':fullscreen', + }, + ':picture-in-picture': { + links: { + tr: '#pip-state', + dev: '#pip-state', + }, + tests: ':picture-in-picture', + }, ':scope': { links: { tr: '#the-scope-pseudo', From 7dfce151d388af510bf1de6344d1019937e9168f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Sun, 28 Aug 2022 19:10:16 +0200 Subject: [PATCH 401/668] Correted MDN links for color --- tests/css-color-4.js | 14 +++++++------- tests/css-color-5.js | 4 ++-- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/tests/css-color-4.js b/tests/css-color-4.js index 78d5a93c..6159f8e4 100644 --- a/tests/css-color-4.js +++ b/tests/css-color-4.js @@ -85,7 +85,7 @@ export default { links: { tr: '#the-hwb-notation', dev: '#the-hwb-notation', - mdn: 'color_value/hwb()', + mdn: 'color_value/hwb', }, tests: ['hwb(0 0% 0%)', 'hwb(0 0% 0% / .5)'], }, @@ -93,7 +93,7 @@ export default { links: { tr: '#specifying-lab-lch', dev: '#specifying-lab-lch', - mdn: 'color_value/lab()', + mdn: 'color_value/lab', }, tests: ['lab(0% 0 0)', 'lab(0% 0 0 /.5)'], }, @@ -101,7 +101,7 @@ export default { links: { tr: '#specifying-oklab-lch', dev: '#specifying-oklab-lch', - mdn: 'color_value/oklab()', + mdn: 'color_value/oklab', }, tests: ['oklab(0% 0 0)', 'oklab(40.101% 0.1147 0.0453 / .5)'], }, @@ -110,7 +110,7 @@ export default { links: { tr: '#specifying-lch-lch', dev: '#specifying-lch-lch', - mdn: 'color_value/lch()', + mdn: 'color_value/lch', }, tests: ['lch(0% 0 0)', 'lch(none 0% none)', 'lch(0% 0 0 / .5)'], }, @@ -118,7 +118,7 @@ export default { links: { tr: '#specifying-oklch-lch', dev: '#specifying-oklch-lch', - mdn: 'color_value/oklch()', + mdn: 'color_value/oklch', }, tests: ['oklch(0% 0 0)', 'oklch(40.101% 0.12332 21.555 / .5)'], }, @@ -126,7 +126,7 @@ export default { links: { tr: '#color-function', dev: '#color-function', - mdn: 'color_value/color()', + mdn: 'color_value/color', }, tests: [ 'color(.2 .4 .6)', @@ -152,7 +152,7 @@ export default { links: { tr: '#cmyk-colors', dev: '#cmyk-colors', - mdn: 'color_value/device-cmyk()', + mdn: 'color_value/device-cmyk', }, tests: ['device-cmyk(.2 .3 .4 .5)', 'device-cmyk(.2 .3 .4 .5 / .5)', 'device-cmyk(.2 .3 .4 .5 / 50%)'], }, diff --git a/tests/css-color-5.js b/tests/css-color-5.js index 9dd4f239..9d41e833 100644 --- a/tests/css-color-5.js +++ b/tests/css-color-5.js @@ -11,7 +11,7 @@ export default { 'color-mix()': { links: { dev: '#color-mix', - mdn: 'color_value', + mdn: 'color_value/color-mix', }, tests: [ 'color-mix(in srgb, teal 65%, olive)', @@ -28,7 +28,7 @@ export default { 'color-contrast()': { links: { dev: '#colorcontrast', - mdn: 'color_value', + mdn: 'color_value/color-contrast', }, tests: [ 'color-contrast(wheat vs tan, sienna, #b22222, #d2691e)', From a0873c6020175e5d97c2c10f143f9bfaf71901b9 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Tue, 13 Sep 2022 23:11:50 +0200 Subject: [PATCH 402/668] Added tests for block-ellipsis from CSS Overflow 3 --- tests/css-overflow-3.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tests/css-overflow-3.js b/tests/css-overflow-3.js index 059a1e5d..46f323e8 100644 --- a/tests/css-overflow-3.js +++ b/tests/css-overflow-3.js @@ -8,6 +8,13 @@ export default { stability: 'experimental', }, properties: { + 'block-ellipsis': { + links: { + tr: '#block-ellipsis', + dev: '#block-ellipsis', + }, + tests: ['none', 'auto', '"… (continued on next page)"'], + }, 'line-clamp': { links: { tr: '#line-clamp', From 888ffd61db6155bd1aa4cf4b7eb81a96b43381d6 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Mon, 26 Sep 2022 21:54:44 +0200 Subject: [PATCH 403/668] Added CSS Cascade 6 There are more features in the specification than the two added here. Namely, there is an `:in()` pseudo-class and and in-selector definition of scope start and end. Though the former seems to be removed from the spec. and the latter is also going to be removed. --- tests.js | 2 ++ tests/css-cascade-6.js | 31 +++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 tests/css-cascade-6.js diff --git a/tests.js b/tests.js index 7b4f7742..3f27b7fd 100644 --- a/tests.js +++ b/tests.js @@ -11,6 +11,7 @@ import cssBreak4 from './tests/css-break-4.js'; import cssCascade3 from './tests/css-cascade-3.js'; import cssCascade4 from './tests/css-cascade-4.js'; import cssCascade5 from './tests/css-cascade-5.js'; +import cssCascade6 from './tests/css-cascade-6.js'; import cssColor3 from './tests/css-color-3.js'; import cssColor4 from './tests/css-color-4.js'; import cssColor5 from './tests/css-color-5.js'; @@ -149,6 +150,7 @@ export default { 'css-cascade-3': cssCascade3, 'css-cascade-4': cssCascade4, 'css-cascade-5': cssCascade5, + 'css-cascade-6': cssCascade6, 'css-colors-3': cssColor3, 'css-colors-4': cssColor4, 'css-colors-5': cssColor5, diff --git a/tests/css-cascade-6.js b/tests/css-cascade-6.js new file mode 100644 index 00000000..ab390d67 --- /dev/null +++ b/tests/css-cascade-6.js @@ -0,0 +1,31 @@ +export default { + title: 'CSS Cascading and Inheritance Level 6', + links: { + tr: 'css-cascade-6', + dev: 'css-cascade-6', + }, + status: { + stability: 'experimental', + }, + '@rules': { + '@scope': { + links: { + tr: '#scope-atrule', + dev: '#scope-atrule', + }, + tests: [ + '@scope (#hero) {\n img {\n border-radius: 50%;\n }\n}', + '@scope ([data-scope="main-component"]) to ([data-scope]) {\n p {\n color: red;\n }\n\n section {\n background-color: snow;\n }\n}', + ], + }, + }, + selectors: { + 'Scoped Descendant Combinator': { + links: { + tr: '#scope-combinator', + dev: '#scope-combinator', + }, + tests: 'foo >> bar', + }, + }, +} \ No newline at end of file From c4e8a3e711e9c5a59bcf1668d5236e633dc36e51 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Mon, 26 Sep 2022 22:09:32 +0200 Subject: [PATCH 404/668] Added CSS Color 6 and moved color-contrast() to it --- tests.js | 2 ++ tests/css-color-5.js | 10 ---------- tests/css-color-6.js | 22 ++++++++++++++++++++++ 3 files changed, 24 insertions(+), 10 deletions(-) create mode 100644 tests/css-color-6.js diff --git a/tests.js b/tests.js index 3f27b7fd..c2a3feb0 100644 --- a/tests.js +++ b/tests.js @@ -15,6 +15,7 @@ import cssCascade6 from './tests/css-cascade-6.js'; import cssColor3 from './tests/css-color-3.js'; import cssColor4 from './tests/css-color-4.js'; import cssColor5 from './tests/css-color-5.js'; +import cssColor6 from './tests/css-color-6.js'; import cssColorAdjust1 from './tests/css-color-adjust-1.js'; import cssComposition1 from './tests/css-composition-1.js'; import cssComposition2 from './tests/css-composition-2.js'; @@ -154,6 +155,7 @@ export default { 'css-colors-3': cssColor3, 'css-colors-4': cssColor4, 'css-colors-5': cssColor5, + 'css-colors-6': cssColor6, 'css-colors-adjust-1': cssColorAdjust1, 'css-composition-1': cssComposition1, 'css-composition-2': cssComposition2, diff --git a/tests/css-color-5.js b/tests/css-color-5.js index 9d41e833..d7549957 100644 --- a/tests/css-color-5.js +++ b/tests/css-color-5.js @@ -25,16 +25,6 @@ export default { 'color-mix(in lab, teal 65%, olive)', ], }, - 'color-contrast()': { - links: { - dev: '#colorcontrast', - mdn: 'color_value/color-contrast', - }, - tests: [ - 'color-contrast(wheat vs tan, sienna, #b22222, #d2691e)', - 'color-contrast(hsl(200 50% 80%) vs hsl(200 83% 23%), purple, hsl(300 100% 25%))', - ], - }, 'color-adjust()': { links: { dev: '#coloradjust', diff --git a/tests/css-color-6.js b/tests/css-color-6.js new file mode 100644 index 00000000..572e5767 --- /dev/null +++ b/tests/css-color-6.js @@ -0,0 +1,22 @@ +export default { + title: 'CSS Color Module Level 6', + links: { + dev: 'css-color-6', + }, + status: { + stability: 'experimental', + }, + values: { + properties: ['color', 'background-color', 'border-color', 'text-decoration-color', 'column-rule-color'], + 'color-contrast()': { + links: { + dev: '#colorcontrast', + mdn: 'color_value/color-contrast', + }, + tests: [ + 'color-contrast(wheat vs tan, sienna, #b22222, #d2691e)', + 'color-contrast(hsl(200 50% 80%) vs hsl(200 83% 23%), purple, hsl(300 100% 25%))', + ], + }, + }, +}; From 3755ccb50ad20fc4b9de73788b095426cd6d6741 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Sat, 15 Oct 2022 09:42:19 +0200 Subject: [PATCH 405/668] Updated `margin-trim` to new syntax --- tests/css-box-4.js | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/tests/css-box-4.js b/tests/css-box-4.js index dfe9a438..283cbe13 100644 --- a/tests/css-box-4.js +++ b/tests/css-box-4.js @@ -13,7 +13,22 @@ export default { tr: '#margin-trim', dev: '#margin-trim', }, - tests: ['none', 'in-flow', 'all'], + tests: [ + 'none', + 'block', + 'inline', + 'block-start', + 'inline-start', + 'block-end', + 'inline-end', + 'block-start inline-start', + 'block-end inline-start', + 'block-end inline-start', + 'block-end inline-end', + 'block-start inline-start inline-end', + 'block-start block-end inline-start inline-end', + ], }, }, }; +// none | block | inline | [ block-start || inline-start || block-end || inline-end ] \ No newline at end of file From 4735f0c6e11172853fc3686646fa2f6f2c181fcc Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Sat, 15 Oct 2022 23:38:01 +0200 Subject: [PATCH 406/668] Defined colors as variables --- style.css | 122 +++++++++++++++++++++++++++++++++++------------------- 1 file changed, 80 insertions(+), 42 deletions(-) diff --git a/style.css b/style.css index be916bda..8a000ac2 100644 --- a/style.css +++ b/style.css @@ -1,5 +1,39 @@ +:root { + --primary-background-color: hsl(24 20% 95%); + --primary-foreground-color: hsl(24 20% 5%); + --secondary-background-color: hsl(200 10% 20%); + --secondary-foreground-color: white; + --tertiary-background-color: transparent; + --tertiary-foreground-color: hsl(200 10% 20%); + --primary-shadow-color: white; + --secondary-shadow-color: hsl(0 0% 0% / .5); + --primary-border-color: hsl(0 0% 0% / .25); + --secondary-border-color: var(--secondary-background-color); + --shade-color: hsl(0 0% 0% / .3); + + --spec-link-background-color: var(--secondary-background-color); + --spec-link-foreground-color: var(--secondary-foreground-color); + --highlight-background-color: #f06; + --highlight-foreground-color: white; + --prefix-background-color: var(--shade-color); + --prefix-foreground-color: var(--spec-link-foreground-color); + --progress-color: var(--shade-color); + + --pass-color: #490; + --almost-pass-color: #8c0; + --slightly-buggy-color: #bb0; + --buggy-color: #e80; + --very-buggy-color: #e40; + --fail-color: #e20; + --epic-fail-color: #b00; + + --aside-border-color: hsl(0 0% 80% / .8); + --aside-background-color: hsl(0 0% 98% / .6); + --aside-foreground-color: black; +} + :focus { - outline: .1em dotted #f06; + outline: .1em dotted var(--highlight-background-color); outline-offset: .1em; } @@ -7,13 +41,15 @@ body { max-width: 60em; padding: 1em; margin: auto; - background: url(https://dabblet.com/img/noise.png) hsl(24, 20%, 95%); + background: url(https://dabblet.com/img/noise.png) var(--primary-background-color); + color: var(--primary-foreground-color); font: 100%/1.5 sans-serif; - text-shadow: 0 1px white; + text-shadow: 0 1px var(--primary-shadow-color); } a { - color: hsl(200, 10%, 20%); + background-color: var(--tertiary-background-color); + color: var(--tertiary-foreground-color); font-weight: bold; text-decoration: none; } @@ -30,7 +66,8 @@ body > section section section h1 { } section section section section h1 { - color: hsla(200, 10%, 20%, .5); + background-color: var(--tertiary-background-color); + color: var(--tertiary-foreground-color); font-size: 120%; font-weight: bold; text-transform: capitalize; @@ -47,17 +84,18 @@ h1 > .score { margin: -.5em 0 -.5em .3em; font-family: sans-serif; font-size: 0.9rem; - background: hsl(200, 10%, 20%); - color: white; + background-color: var(--spec-link-background-color); + color: var(--spec-link-foreground-color); border-radius: .3em; vertical-align: middle; - text-shadow: 0 .1em .1em black; + text-shadow: 0 .1em .1em var(--secondary-shadow-color); } .spec-link:hover, .spec-link:focus { outline: none; - background: #f06; + background-color: var(--highlight-background-color); + color: var(--highlight-foreground-color); } .w3c-link::before, @@ -103,13 +141,13 @@ body > h1 { left: 0; top: 0; padding: .5em 1em; - background: hsl(200, 10%, 20%); - box-shadow: -2px 2px 10px rgba(0,0,0,.5); - color: white; + background: var(--secondary-background-color); + box-shadow: -2px 2px 10px var(--secondary-shadow-color); + color: var(--secondary-foreground-color); font-size: 150%; font-weight: bold; text-transform: uppercase; - text-shadow: 0 .1em .1em black; + text-shadow: 0 .1em .1em var(--secondary-shadow-color); z-index: 1; transform: rotate(-90deg) translateX(-100%); @@ -127,7 +165,7 @@ body > h1 { display: block; width: 50px; border-radius: 50%; - box-shadow: 2px 2px 10px rgba(0,0,0,.5); + box-shadow: 2px 2px 10px var(--secondary-shadow-color); transform: rotate(-15deg); } @@ -168,7 +206,7 @@ details li[class] { background: gray; color: white; border-radius: .3em; - text-shadow: 0 -.05em .1em rgba(0,0,0,.5); + text-shadow: 0 -.05em .1em var(--secondary-shadow-color); position: relative; } @@ -176,7 +214,7 @@ details summary { list-style: none; cursor: pointer; padding-top: .6em; - background: linear-gradient(rgb(0 0 0 / .3), rgb(0 0 0 / .3)) no-repeat 0 0 / calc(var(--progress) * 1%) .2em; + background: linear-gradient(var(--progress-color), var(--progress-color)) no-repeat 0 0 / calc(var(--progress) * 1%) .2em; } details summary::-webkit-details-marker { @@ -204,43 +242,43 @@ details li[class] small { details summary.pass, details li.pass, #specsTested li.pass::before { - background-color: #490; + background-color: var(--pass-color); } details summary.almost-pass, details li.almost-pass, #specsTested li.almost-pass::before { - background-color: #8c0; + background-color: var(--almost-pass-color); } details summary.slightly-buggy, details li.slightly-buggy, #specsTested li.slightly-buggy::before { - background-color: #bb0; + background-color: var(--slightly-buggy-color); } details summary.buggy, details li.buggy, #specsTested li.buggy::before { - background-color: #e80; + background-color: var(--buggy-color); } details summary.very-buggy, details li.very-buggy, #specsTested li.very-buggy::before { - background-color: #e40; + background-color: var(--very-buggy-color); } details summary.fail, details li.fail, #specsTested li.fail::before { - background-color: #e20; + background-color: var(--fail-color); } details summary.epic-fail, details li.epic-fail, #specsTested li.epic-fail::before { - background-color: #b00; + background-color: var(--epic-fail-color); } details summary::before { @@ -261,11 +299,11 @@ details[open] summary::before { margin: -.5em 0 -.5em .3em; font-family: sans-serif; font-size: 0.7rem; - background: hsla(0, 0%, 0%, 0.3); - color: white; + background: var(--prefix-background-color); + color: var(--prefix-foreground-color); border-radius: .3em; vertical-align: middle; - text-shadow: 0 .1em .1em black; + text-shadow: 0 .1em .1em var(--secondary-shadow-color); } /* Emoticons */ @@ -331,9 +369,9 @@ aside section { aside .caution p { padding: 1em; margin-left: 2em; - background: hsl(200, 10%, 20%); - color: white; - text-shadow: 0 -.1em .2em black; + background: var(--secondary-background-color); + color: var(--secondary-foreground-color); + text-shadow: 0 -.1em .2em var(--secondary-shadow-color); } aside h1 { @@ -348,8 +386,7 @@ aside ul { aside li { list-style: none; padding: .3em 0; - border-bottom: 2px dotted rgba(0,0,0,.25); - border-top: 2px dotted white; + border-bottom: 2px dotted var(--primary-border-color); } aside li:first-child { @@ -372,7 +409,7 @@ aside li:last-child { margin-right: .5em; vertical-align: -.2em; border-radius: 50%; - box-shadow: 0 2px white; + box-shadow: 0 2px var(--primary-shadow-color); } footer { @@ -384,24 +421,25 @@ footer { footer > p { margin-left: 2em; padding: 1em 0; - border-top: 1px solid hsl(200, 10%, 20%); + border-top: 1px solid var(--secondary-border-color); text-align: center; } /* Carbon Ads */ #carbonads { - display: block; - overflow: hidden; - padding: 1em; - border: solid 1px hsla(0, 0%, 80%, .8); - background-color: hsla(0, 0%, 98%, .6); - box-shadow: inset 0 1px hsla(0, 0%, 100%, .6); - font-size: 12px; - line-height: 1.5; + display: block; + overflow: hidden; + padding: 1em; + border: solid 1px var(--aside-border-color); + background-color: var(--aside-background-color); + font-size: 12px; + line-height: 1.5; } #carbonads a { - font-weight: 400; + font-weight: 400; + color: var(--aside-foreground-color); + text-shadow: none; } #carbonads span { From dc91a8085ad26f872b1660b4933dcb2b039e5f1a Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Sat, 15 Oct 2022 23:38:29 +0200 Subject: [PATCH 407/668] Added dark color scheme --- style.css | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/style.css b/style.css index 8a000ac2..3b1feeef 100644 --- a/style.css +++ b/style.css @@ -32,6 +32,35 @@ --aside-foreground-color: black; } +@media (prefers-color-scheme: dark) { + :root { + --primary-background-color: hsl(24 20% 5%); + --primary-foreground-color: hsl(24 20% 95%); + --secondary-background-color: hsl(200 10% 20%); + --secondary-foreground-color: white; + --tertiary-background-color: transparent; + --tertiary-foreground-color: hsl(200 10% 90%); + --primary-shadow-color: black; + --secondary-shadow-color: hsl(0 0% 25% / .5); + --primary-border-color: hsl(0 0% 25% / .25); + --secondary-border-color: var(--secondary-background-color); + + --pass-color: #370; + --almost-pass-color: #7a0; + --slightly-buggy-color: #990; + --buggy-color: #c70; + --very-buggy-color: #c30; + --fail-color: #c10; + --epic-fail-color: #900; + + --aside-border-color: hsl(0 0% 20% / .8); + --aside-background-color: hsl(0 0% 2% / .6); + --aside-foreground-color: white; + + color-scheme: dark; + } +} + :focus { outline: .1em dotted var(--highlight-background-color); outline-offset: .1em; From ade9b87cdbf7b53f9f20820ace42e48004749ba3 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Sun, 16 Oct 2022 22:14:54 +0200 Subject: [PATCH 408/668] Updated and fixed CSS UI 4 --- tests/css-logical-1.js | 7 ----- tests/css-ui-4.js | 62 ++++++++++++++++++++++++++++++++++++++---- 2 files changed, 57 insertions(+), 12 deletions(-) diff --git a/tests/css-logical-1.js b/tests/css-logical-1.js index 6d2c724b..53a0c3f7 100644 --- a/tests/css-logical-1.js +++ b/tests/css-logical-1.js @@ -36,13 +36,6 @@ export default { }, tests: ['start', 'end'], }, - resize: { - links: { - tr: '#resize', - dev: '#resize', - }, - tests: ['block', 'inline'], - }, 'block-size': { links: { tr: '#dimension-properties', diff --git a/tests/css-ui-4.js b/tests/css-ui-4.js index 2edede10..efc57e87 100644 --- a/tests/css-ui-4.js +++ b/tests/css-ui-4.js @@ -44,7 +44,7 @@ export default { tr: '#input-security', dev: '#input-security', }, - tests: ['auto', 'red'], + tests: ['auto', 'none'], }, caret: { links: { @@ -60,6 +60,23 @@ export default { }, tests: ['auto', 'bar', 'block', 'underscore'], }, + cursor: { + links: { + tr: '#cursor', + dev: '#cursor', + }, + tests: [ + 'image-set(url("foo.png") 1x, url("foo-2x.png") 2x) 2 2, auto', + 'image-set(url("foo.png") 96dpi, url("foo-2x.png") 192dpi) 2 2, auto', + ], + }, + resize: { + links: { + tr: '#resize', + dev: '#resize', + }, + tests: ['block', 'inline'], + }, 'text-overflow': { links: { tr: '#text-overflow', @@ -120,28 +137,63 @@ export default { tr: '#nav-dir', dev: '#nav-dir', }, - tests: ['auto', '#foo', '#foo current', '#foo root'], + tests: [ + 'auto', + '#foo', + '#foo current', + '#foo root', + '#foo "bar"', + "#foo 'bar'", + ], }, 'nav-right': { links: { tr: '#nav-dir', dev: '#nav-dir', }, - tests: ['auto', '#foo', '#foo current', '#foo root'], + tests: [ + 'auto', + '#foo', + '#foo current', + '#foo root', + '#foo "bar"', + "#foo 'bar'", + ], }, 'nav-down': { links: { tr: '#nav-dir', dev: '#nav-dir', }, - tests: ['auto', '#foo', '#foo current', '#foo root'], + tests: [ + 'auto', + '#foo', + '#foo current', + '#foo root', + '#foo "bar"', + "#foo 'bar'", + ], }, 'nav-left': { links: { tr: '#nav-dir', dev: '#nav-dir', }, - tests: ['auto', '#foo', '#foo current', '#foo root'], + tests: [ + 'auto', + '#foo', + '#foo current', + '#foo root', + '#foo "bar"', + "#foo 'bar'", + ], + }, + 'pointer-events': { + links: { + tr: '#pointer-events-control', + dev: '#pointer-events-control', + }, + tests: ['auto', 'none'] }, }, }; From 1f30fa83a2a74e828601e6dd5e941e53634e3b17 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Mon, 17 Oct 2022 20:03:29 +0200 Subject: [PATCH 409/668] Switched all colors to HSL --- style.css | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/style.css b/style.css index 3b1feeef..2032c112 100644 --- a/style.css +++ b/style.css @@ -2,10 +2,10 @@ --primary-background-color: hsl(24 20% 95%); --primary-foreground-color: hsl(24 20% 5%); --secondary-background-color: hsl(200 10% 20%); - --secondary-foreground-color: white; + --secondary-foreground-color: hsl(0 0% 100%); --tertiary-background-color: transparent; --tertiary-foreground-color: hsl(200 10% 20%); - --primary-shadow-color: white; + --primary-shadow-color: hsl(0 0% 100%); --secondary-shadow-color: hsl(0 0% 0% / .5); --primary-border-color: hsl(0 0% 0% / .25); --secondary-border-color: var(--secondary-background-color); @@ -13,23 +13,23 @@ --spec-link-background-color: var(--secondary-background-color); --spec-link-foreground-color: var(--secondary-foreground-color); - --highlight-background-color: #f06; - --highlight-foreground-color: white; + --highlight-background-color: hsl(336 100% 50%); + --highlight-foreground-color: hsl(0 0% 100%); --prefix-background-color: var(--shade-color); --prefix-foreground-color: var(--spec-link-foreground-color); --progress-color: var(--shade-color); - --pass-color: #490; - --almost-pass-color: #8c0; - --slightly-buggy-color: #bb0; - --buggy-color: #e80; - --very-buggy-color: #e40; - --fail-color: #e20; - --epic-fail-color: #b00; + --pass-color: hsl(93 100% 30%); + --almost-pass-color: hsl(80 100% 40%); + --slightly-buggy-color: hsl(60 100% 37%); + --buggy-color: hsl(34 100% 47%); + --very-buggy-color: hsl(17 100% 47%); + --fail-color: hsl(9 100% 47%); + --epic-fail-color: hsl(0 100% 37%); --aside-border-color: hsl(0 0% 80% / .8); --aside-background-color: hsl(0 0% 98% / .6); - --aside-foreground-color: black; + --aside-foreground-color: hsl(0 0% 0%); } @media (prefers-color-scheme: dark) { @@ -37,25 +37,25 @@ --primary-background-color: hsl(24 20% 5%); --primary-foreground-color: hsl(24 20% 95%); --secondary-background-color: hsl(200 10% 20%); - --secondary-foreground-color: white; + --secondary-foreground-color: hsl(0 0% 100%); --tertiary-background-color: transparent; --tertiary-foreground-color: hsl(200 10% 90%); - --primary-shadow-color: black; + --primary-shadow-color: hsl(0 0% 0%); --secondary-shadow-color: hsl(0 0% 25% / .5); --primary-border-color: hsl(0 0% 25% / .25); --secondary-border-color: var(--secondary-background-color); - --pass-color: #370; - --almost-pass-color: #7a0; - --slightly-buggy-color: #990; - --buggy-color: #c70; - --very-buggy-color: #c30; - --fail-color: #c10; - --epic-fail-color: #900; + --pass-color: hsl(93 100% 25%); + --almost-pass-color: hsl(80 100% 35%); + --slightly-buggy-color: hsl(60 100% 32%); + --buggy-color: hsl(34 100% 42%); + --very-buggy-color: hsl(17 100% 42%); + --fail-color: hsl(9 100% 42%); + --epic-fail-color: hsl(0 100% 32%); --aside-border-color: hsl(0 0% 20% / .8); --aside-background-color: hsl(0 0% 2% / .6); - --aside-foreground-color: white; + --aside-foreground-color: hsl(0 0% 100%); color-scheme: dark; } From 12bf7331410a696d924bb8688e3e05d8a1fb6c56 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Mon, 17 Oct 2022 21:38:36 +0200 Subject: [PATCH 410/668] Split hue + saturation and lightness values for simpler overwriting in dark mode --- style.css | 65 +++++++++++++++++++++++++++++++++---------------------- 1 file changed, 39 insertions(+), 26 deletions(-) diff --git a/style.css b/style.css index 2032c112..ef68c669 100644 --- a/style.css +++ b/style.css @@ -1,15 +1,29 @@ :root { - --primary-background-color: hsl(24 20% 95%); - --primary-foreground-color: hsl(24 20% 5%); - --secondary-background-color: hsl(200 10% 20%); - --secondary-foreground-color: hsl(0 0% 100%); + --primary-hue-saturation: 24 20%; + --secondary-hue-saturation: 200 10%; + --tertiary-hue-saturation: 0 0%; + + --lightness-0: 0%; + --lightness-5: 5%; + --lightness-80: 80%; + --lightness-95: 95%; + --lightness-98: 98%; + + --primary-shadow-lightness: 100%; + --secondary-shadow-lightness: 0%; + --primary-border-lightness: var(--secondary-shadow-lightness); + + --primary-background-color: hsl(var(--primary-hue-saturation) var(--lightness-95)); + --primary-foreground-color: hsl(var(--primary-hue-saturation) var(--lightness-5)); + --secondary-background-color: hsl(var(--secondary-hue-saturation) 20%); + --secondary-foreground-color: hsl(var(--tertiary-hue-saturation) 100%); --tertiary-background-color: transparent; - --tertiary-foreground-color: hsl(200 10% 20%); - --primary-shadow-color: hsl(0 0% 100%); - --secondary-shadow-color: hsl(0 0% 0% / .5); - --primary-border-color: hsl(0 0% 0% / .25); + --tertiary-foreground-color: hsl(var(--secondary-hue-saturation) 20%); + --primary-shadow-color: hsl(var(--tertiary-hue-saturation) var(--primary-shadow-lightness)); + --secondary-shadow-color: hsl(var(--tertiary-hue-saturation) var(--secondary-shadow-lightness) / .5); + --primary-border-color: hsl(var(--tertiary-hue-saturation) var(--primary-border-lightness) / .25); --secondary-border-color: var(--secondary-background-color); - --shade-color: hsl(0 0% 0% / .3); + --shade-color: hsl(var(--tertiary-hue-saturation) 0% / .3); --spec-link-background-color: var(--secondary-background-color); --spec-link-foreground-color: var(--secondary-foreground-color); @@ -19,6 +33,8 @@ --prefix-foreground-color: var(--spec-link-foreground-color); --progress-color: var(--shade-color); + --test-result-darkening: 0%; + --pass-color: hsl(93 100% 30%); --almost-pass-color: hsl(80 100% 40%); --slightly-buggy-color: hsl(60 100% 37%); @@ -27,23 +43,24 @@ --fail-color: hsl(9 100% 47%); --epic-fail-color: hsl(0 100% 37%); - --aside-border-color: hsl(0 0% 80% / .8); - --aside-background-color: hsl(0 0% 98% / .6); - --aside-foreground-color: hsl(0 0% 0%); + --aside-border-color: hsl(var(--tertiary-hue-saturation) var(--lightness-80) / .8); + --aside-background-color: hsl(var(--tertiary-hue-saturation) var(--lightness-98) / .6); + --aside-foreground-color: hsl(var(--tertiary-hue-saturation) var(--lightness-0)); } @media (prefers-color-scheme: dark) { :root { - --primary-background-color: hsl(24 20% 5%); - --primary-foreground-color: hsl(24 20% 95%); - --secondary-background-color: hsl(200 10% 20%); - --secondary-foreground-color: hsl(0 0% 100%); - --tertiary-background-color: transparent; - --tertiary-foreground-color: hsl(200 10% 90%); - --primary-shadow-color: hsl(0 0% 0%); - --secondary-shadow-color: hsl(0 0% 25% / .5); - --primary-border-color: hsl(0 0% 25% / .25); - --secondary-border-color: var(--secondary-background-color); + --lightness-0: 100%; + --lightness-5: 95%; + --lightness-80: 20%; + --lightness-95: 5%; + --lightness-98: 2%; + + --primary-shadow-lightness: 0%; + --secondary-shadow-lightness: 25%; + + --tertiary-foreground-color: hsl(var(--secondary-hue-saturation) 90%); + --primary-shadow-color: hsl(var(--secondary-hue-saturation) 25% / .25); --pass-color: hsl(93 100% 25%); --almost-pass-color: hsl(80 100% 35%); @@ -53,10 +70,6 @@ --fail-color: hsl(9 100% 42%); --epic-fail-color: hsl(0 100% 32%); - --aside-border-color: hsl(0 0% 20% / .8); - --aside-background-color: hsl(0 0% 2% / .6); - --aside-foreground-color: hsl(0 0% 100%); - color-scheme: dark; } } From 1ab4ed9b28197ae4eba901c1cc564669db5a83ee Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Mon, 17 Oct 2022 23:44:45 +0200 Subject: [PATCH 411/668] Added test for length in fit-content() for CSS Box Sizing 3 --- tests/css-sizing-3.js | 49 ++++++++++++++++++++++++++++++++++++------- 1 file changed, 42 insertions(+), 7 deletions(-) diff --git a/tests/css-sizing-3.js b/tests/css-sizing-3.js index e181fc1e..d1c88357 100644 --- a/tests/css-sizing-3.js +++ b/tests/css-sizing-3.js @@ -13,49 +13,84 @@ export default { tr: '#preferred-size-properties', dev: '#preferred-size-properties', }, - tests: ['max-content', 'min-content', 'fit-content(10%)'], + tests: [ + 'max-content', + 'min-content', + 'fit-content(200px)', + 'fit-content(10%)', + ], }, 'min-width': { links: { tr: '#min-size-properties', dev: '#min-size-properties', }, - tests: ['max-content', 'min-content', 'fit-content(10%)'], + tests: [ + 'max-content', + 'min-content', + 'fit-content(200px)', + 'fit-content(10%)', + ], }, 'max-width': { links: { tr: '#max-size-properties', dev: '#max-size-properties', }, - tests: ['max-content', 'min-content', 'fit-content(10%)'], + tests: [ + 'max-content', + 'min-content', + 'fit-content(200px)', + 'fit-content(10%)', + ], }, height: { links: { tr: '#preferred-size-properties', dev: '#preferred-size-properties', }, - tests: ['max-content', 'min-content', 'fit-content(10%)'], + tests: [ + 'max-content', + 'min-content', + 'fit-content(200px)', + 'fit-content(10%)', + ], }, 'min-height': { links: { tr: '#min-size-properties', dev: '#min-size-properties', }, - tests: ['max-content', 'min-content', 'fit-content(10%)'], + tests: [ + 'max-content', + 'min-content', + 'fit-content(200px)', + 'fit-content(10%)', + ], }, 'max-height': { links: { tr: '#max-size-properties', dev: '#max-size-properties', }, - tests: ['max-content', 'min-content', 'fit-content(10%)'], + tests: [ + 'max-content', + 'min-content', + 'fit-content(200px)', + 'fit-content(10%)', + ], }, 'column-width': { links: { tr: '#column-sizing', dev: '#column-sizing', }, - tests: ['max-content', 'min-content', 'fit-content(10%)'], + tests: [ + 'max-content', + 'min-content', + 'fit-content(200px)', + 'fit-content(10%)', + ], }, }, }; From f8abfedab57240447f713d888d1b7dfca1fb7fa5 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Tue, 18 Oct 2022 00:12:09 +0200 Subject: [PATCH 412/668] Updated CSS Box Sizing 4 --- tests/css-sizing-4.js | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/tests/css-sizing-4.js b/tests/css-sizing-4.js index 06bde941..9e804464 100644 --- a/tests/css-sizing-4.js +++ b/tests/css-sizing-4.js @@ -20,35 +20,47 @@ export default { tr: '#propdef-contain-intrinsic-size', dev: '#propdef-contain-intrinsic-size', }, - tests: ['none', '10px', '10px 15px'], + tests: ['none', '10px', 'auto 10px', '10px 15px', 'auto 10px auto 15px'], }, 'contain-intrinsic-width': { links: { tr: '#intrinsic-size-override', dev: '#intrinsic-size-override', }, - tests: ['none', '10px'], + tests: ['none', '10px', 'auto 10px'], }, 'contain-intrinsic-height': { links: { tr: '#intrinsic-size-override', dev: '#intrinsic-size-override', }, - tests: ['none', '10px'], + tests: ['none', '10px', 'auto 10px'], }, 'contain-intrinsic-block-size': { links: { tr: '#intrinsic-size-override', dev: '#intrinsic-size-override', }, - tests: ['none', '10px'], + tests: ['none', '10px', 'auto 10px'], }, 'contain-intrinsic-inline-size': { links: { tr: '#intrinsic-size-override', dev: '#intrinsic-size-override', }, - tests: ['none', '10px'], + tests: ['none', '10px', 'auto 10px'], + }, + 'min-intrinsic-sizing': { + links: { + tr: '#intrinsic-contribution-override', + dev: '#intrinsic-contribution-override', + }, + tests: [ + 'legacy', + 'zero-if-scroll', + 'zero-if-extrinsic', + 'zero-if-scroll zero-if-extrinsic' + ], }, width: { links: { From 39546bfcf84ae1262e0584ab04c75abbb7205012 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Tue, 1 Nov 2022 18:46:19 +0100 Subject: [PATCH 413/668] Fixed MDN links with () --- csstest.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/csstest.js b/csstest.js index 0c766a00..3f4d503c 100644 --- a/csstest.js +++ b/csstest.js @@ -244,9 +244,7 @@ Test.prototype = { } mdnLink += links.mdn ? links.mdn - : feature.startsWith(':') - ? feature.replace('()', '') - : feature.replace(/(@[^ \/]+)[^\/]*(\/.*)/, '$1$2'); + : feature.replace('()', '').replace(/(@[^ \/]+)[^\/]*(\/.*)/, '$1$2'); summaryContents.push( $.create({ From 7ef5860a4b8330d1212db2d7c045ebd0737b3a23 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Sun, 13 Nov 2022 22:06:12 +0100 Subject: [PATCH 414/668] Added CSS Easing 2 --- tests.js | 2 ++ tests/css-easing-2.js | 20 ++++++++++++++++++++ 2 files changed, 22 insertions(+) create mode 100644 tests/css-easing-2.js diff --git a/tests.js b/tests.js index c2a3feb0..ae13a420 100644 --- a/tests.js +++ b/tests.js @@ -29,6 +29,7 @@ import cssContent3 from './tests/css-content-3.js'; import cssCounterStyles3 from './tests/css-counter-styles-3.js'; import cssDisplay3 from './tests/css-display-3.js'; import cssEasing1 from './tests/css-easing-1.js'; +import cssEasing2 from './tests/css-easing-2.js'; import cssEnv1 from './tests/css-env-1.js'; import cssExclusions1 from './tests/css-exclusions-1.js'; import cssFlexbox1 from './tests/css-flexbox-1.js'; @@ -169,6 +170,7 @@ export default { 'css-counter-styles-3': cssCounterStyles3, 'css-display-3': cssDisplay3, 'css-easing-1': cssEasing1, + 'css-easing-2': cssEasing2, 'css-env-1': cssEnv1, 'css-exclusions-1': cssExclusions1, 'css-flexbox-1': cssFlexbox1, diff --git a/tests/css-easing-2.js b/tests/css-easing-2.js new file mode 100644 index 00000000..ea393e1b --- /dev/null +++ b/tests/css-easing-2.js @@ -0,0 +1,20 @@ +export default { + title: 'CSS Easing Functions Level 2', + links: { + tr: 'css-easing-2', + dev: 'css-easing-2', + }, + status: { + stability: 'experimental', + }, + values: { + properties: ['transition-timing-function'], + "linear()": { + links: { + dev: '#the-linear-easing-function', + mdn: 'easing-function#linear_easing_function', + }, + tests: ['linear(0, 0.25, 0.5, 0.75, 1)', 'linear(0, 0.25 50%, 0.5 75%, 0.75 90%, 1)'], + }, + }, +}; From 1a13815956de52b6a992676f277e7e94cc62f741 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Sun, 13 Nov 2022 22:42:16 +0100 Subject: [PATCH 415/668] Added CSS Namespaces 3 --- tests.js | 2 ++ tests/css-namespaces-3.js | 23 +++++++++++++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 tests/css-namespaces-3.js diff --git a/tests.js b/tests.js index ae13a420..fb40144b 100644 --- a/tests.js +++ b/tests.js @@ -50,6 +50,7 @@ import cssLogical1 from './tests/css-logical-1.js'; import cssMasking1 from './tests/css-masking-1.js'; import cssMulticol1 from './tests/css-multicol-1.js'; import cssMulticol2 from './tests/css-multicol-2.js'; +import cssNamespaces3 from './tests/css-namespaces-3.js'; import cssNav1 from './tests/css-nav-1.js'; import cssOverflow3 from './tests/css-overflow-3.js'; import cssOverflow4 from './tests/css-overflow-4.js'; @@ -191,6 +192,7 @@ export default { 'css-masking-1': cssMasking1, 'css-multicol-1': cssMulticol1, 'css-multicol-2': cssMulticol2, + 'css-namespaces-3': cssNamespaces3, 'css-nav-1': cssNav1, 'css-overflow-3': cssOverflow3, 'css-overflow-4': cssOverflow4, diff --git a/tests/css-namespaces-3.js b/tests/css-namespaces-3.js new file mode 100644 index 00000000..8dc50868 --- /dev/null +++ b/tests/css-namespaces-3.js @@ -0,0 +1,23 @@ +export default { + title: 'CSS Namespaces Module Level 3', + links: { + tr: 'css-namespaces-3', + dev: 'css-namespaces-3', + }, + status: { + stability: 'stable', + 'first-snapshot': 2007, + }, + '@rules': { + '@namespace': { + links: { + tr: '#declaration', + dev: '#declaration', + }, + tests: [ + "@namespace \"http://www.w3.org/1999/xhtml\";", + "@namespace svg \"http://www.w3.org/2000/svg\";", + ], + }, + }, +}; From 131fdd6d10f42457a953604d0d3c7d649619e695 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Sun, 13 Nov 2022 23:06:48 +0100 Subject: [PATCH 416/668] Added CSS Values 5 and moved attr() and toggle() to it --- tests.js | 2 ++ tests/css-values-3.js | 7 ------- tests/css-values-4.js | 7 ------- tests/css-values-5.js | 39 +++++++++++++++++++++++++++++++++++++++ 4 files changed, 41 insertions(+), 14 deletions(-) create mode 100644 tests/css-values-5.js diff --git a/tests.js b/tests.js index fb40144b..9bfcb52a 100644 --- a/tests.js +++ b/tests.js @@ -83,6 +83,7 @@ import cssUi3 from './tests/css-ui-3.js'; import cssUi4 from './tests/css-ui-4.js'; import cssValues3 from './tests/css-values-3.js'; import cssValues4 from './tests/css-values-4.js'; +import cssValues5 from './tests/css-values-5.js'; import cssVariables1 from './tests/css-variables-1.js'; import cssWillChange1 from './tests/css-will-change-1.js'; import cssWritingModes3 from './tests/css-writing-modes-3.js'; @@ -225,6 +226,7 @@ export default { 'css-ui-4': cssUi4, 'css-values-3': cssValues3, 'css-values-4': cssValues4, + 'css-values-5': cssValues5, 'css-variables-1': cssVariables1, 'css-will-change-1': cssWillChange1, 'css-writing-modes-3': cssWritingModes3, diff --git a/tests/css-values-3.js b/tests/css-values-3.js index 623aaca1..950db469 100644 --- a/tests/css-values-3.js +++ b/tests/css-values-3.js @@ -66,13 +66,6 @@ export default { }, tests: '5Q', }, - 'attr()': { - links: { - tr: '#attr-notation', - dev: '#attr-notation', - }, - tests: ['attr(data-px)', 'attr(data-px px)', 'attr(data-px px, initial)'], - }, 'calc()': { links: { tr: '#calc-notation', diff --git a/tests/css-values-4.js b/tests/css-values-4.js index 1857db0c..70923c87 100644 --- a/tests/css-values-4.js +++ b/tests/css-values-4.js @@ -217,13 +217,6 @@ export default { }, tests: '5svi', }, - 'toggle()': { - links: { - tr: '#toggle-notation', - dev: '#toggle-notation', - }, - tests: ['toggle(1px, 2px)', 'toggle(italic, normal)', 'toggle(disc, circle, square, box)'], - }, 'min()': { links: { tr: '#calc-notation', diff --git a/tests/css-values-5.js b/tests/css-values-5.js new file mode 100644 index 00000000..ff07f535 --- /dev/null +++ b/tests/css-values-5.js @@ -0,0 +1,39 @@ +export default { + title: 'CSS Values and Units Module Level 5', + links: { + dev: 'css-values-5', + }, + status: { + stability: 'experimental', + }, + values: { + properties: ['width', 'padding'], + 'attr()': { + links: { + dev: '#attr-notation', + }, + tests: [ + 'attr(data-px)', + 'attr(data-px px)', + 'attr(data-px px, initial)', + 'attr(data-string string)', + 'attr(data-url url)', + 'attr(data-ident ident)', + 'attr(data-color color)', + 'attr(data-number number)', + 'attr(data-percentage percentage)', + 'attr(data-length length)', + 'attr(data-angle angle)', + 'attr(data-time time)', + 'attr(data-frequency frequency)', + 'attr(data-flex flex)', + ], + }, + 'toggle()': { + links: { + dev: '#toggle-notation', + }, + tests: ['toggle(1px, 2px)', 'toggle(italic, normal)', 'toggle(disc, circle, square, box)'], + }, + }, +}; From 535e034df54a0baf0997c2f9869571f333ac601e Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Sun, 13 Nov 2022 23:35:21 +0100 Subject: [PATCH 417/668] Updated Media Queries 5 --- tests/mediaqueries-5.js | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/tests/mediaqueries-5.js b/tests/mediaqueries-5.js index 31194b04..19e092b9 100644 --- a/tests/mediaqueries-5.js +++ b/tests/mediaqueries-5.js @@ -8,6 +8,18 @@ export default { stability: 'experimental', }, 'Media queries': { + 'display-mode': { + links: { + tr: '#display-modes', + dev: '#display-modes', + }, + tests: [ + '(display-mode: fullscreen)', + '(display-mode: standalone)', + '(display-mode: minimal-ui)', + '(display-mode: browser)', + ], + }, 'prefers-reduced-motion': { links: { tr: '#prefers-reduced-motion', @@ -83,6 +95,20 @@ export default { }, tests: ['(dynamic-range)', '(dynamic-range: standard)', '(dynamic-range: high)'], }, + 'horizontal-viewport-segments': { + links: { + tr: '#mf-horizontal-viewport-segments', + dev: '#mf-horizontal-viewport-segments', + }, + tests: ['(horizontal-viewport-segments: 2)'], + }, + 'vertical-viewport-segments': { + links: { + tr: '#mf-vertical-viewport-segments', + dev: '#mf-vertical-viewport-segments', + }, + tests: ['(vertical-viewport-segments: 2)'], + }, 'inverted-colors': { links: { tr: '#inverted', @@ -90,6 +116,13 @@ export default { }, tests: ['(inverted-colors)', '(inverted-colors: none)', '(light-level: inverted)'], }, + 'nav-controls': { + links: { + tr: '#nav-controls', + dev: '#nav-controls', + }, + tests: ['(nav-controls)', '(nav-controls: none)', '(nav-controls: back)'], + }, 'video-color-gamut': { links: { dev: '#video-color-gamut', From 70a2e8817d9fb0f9dde32aabbd7db2947316d6fa Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Mon, 21 Nov 2022 22:56:45 +0100 Subject: [PATCH 418/668] Added filter for CSS 2022 CSS 2022 isn't finished yet and there will probably still be some updates, so there need to be adjustments made. Though it's going to be published soon and this is the first step in adding it. --- index.html | 1 + tests/css-color-3.js | 1 + tests/css-color-4.js | 1 + 3 files changed, 3 insertions(+) diff --git a/index.html b/index.html index c806b0d6..83aea7c5 100644 --- a/index.html +++ b/index.html @@ -52,6 +52,7 @@

        Filter:

        + diff --git a/tests/css-color-3.js b/tests/css-color-3.js index 72d5f0ae..eac21e9e 100644 --- a/tests/css-color-3.js +++ b/tests/css-color-3.js @@ -7,6 +7,7 @@ export default { status: { stability: 'stable', 'first-snapshot': 2007, + 'last-snapshot': 2021, }, values: { properties: ['color', 'background-color', 'border-color', 'text-decoration-color', 'column-rule-color'], diff --git a/tests/css-color-4.js b/tests/css-color-4.js index 6159f8e4..e1955527 100644 --- a/tests/css-color-4.js +++ b/tests/css-color-4.js @@ -6,6 +6,7 @@ export default { }, status: { stability: 'stable', + 'first-snapshot': 2022, }, values: { properties: ['color', 'background-color', 'border-color', 'text-decoration-color', 'column-rule-color'], From 38d1ccddb9b902adf8c7742c669f812bd18f2eb6 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Sun, 18 Dec 2022 01:15:43 +0100 Subject: [PATCH 419/668] Added CSS Images 5 --- tests.js | 2 ++ tests/css-images-5.js | 22 ++++++++++++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 tests/css-images-5.js diff --git a/tests.js b/tests.js index 9bfcb52a..d32e6301 100644 --- a/tests.js +++ b/tests.js @@ -42,6 +42,7 @@ import cssGrid3 from './tests/css-grid-3.js'; import cssHighlightApi1 from './tests/css-highlight-api-1.js'; import cssImages3 from './tests/css-images-3.js'; import cssImages4 from './tests/css-images-4.js'; +import cssImages5 from './tests/css-images-5.js'; import cssInline3 from './tests/css-inline-3.js'; import cssLayoutApi1 from './tests/css-layout-api-1.js'; import cssLineGrid1 from './tests/css-line-grid-1.js'; @@ -185,6 +186,7 @@ export default { 'css-highlight-api-1': cssHighlightApi1, 'css-images-3': cssImages3, 'css-images-4': cssImages4, + 'css-images-5': cssImages5, 'css-inline-3': cssInline3, 'css-layout-api-1': cssLayoutApi1, 'css-line-grid-1': cssLineGrid1, diff --git a/tests/css-images-5.js b/tests/css-images-5.js new file mode 100644 index 00000000..24ab2c8f --- /dev/null +++ b/tests/css-images-5.js @@ -0,0 +1,22 @@ +export default { + title: 'CSS Images Module Level 5', + links: { + dev: 'css-images-5', + }, + status: { + stability: 'experimental', + }, + properties: { + 'object-view-box': { + links: { + dev: '#the-object-view-box', + }, + tests: [ + 'none', + 'inset(10% round 10% 40% 10% 40%)', + 'rect(10% 20px 30% 40px)', + 'xywh(10% 40% 100px 200px round 10% 40% 10% 40%)', + ], + }, + }, +}; From 27284335f58101d5fc60744338f8b039400b555a Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Sun, 18 Dec 2022 23:36:28 +0100 Subject: [PATCH 420/668] Updated CSS Fonts 4 --- tests/css-fonts-4.js | 216 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 212 insertions(+), 4 deletions(-) diff --git a/tests/css-fonts-4.js b/tests/css-fonts-4.js index 1138f8a3..2a3fe5c7 100644 --- a/tests/css-fonts-4.js +++ b/tests/css-fonts-4.js @@ -7,13 +7,87 @@ export default { status: { stability: 'stable', }, + values: { + properties: ['font-family'], + 'system-ui': { + links: { + tr: '#system-ui-def', + dev: '#system-ui-def', + mdn: 'font-family', + }, + tests: 'system-ui', + }, + 'emoji': { + links: { + tr: '#emoji-def', + dev: '#emoji-def', + mdn: 'font-family', + }, + tests: 'emoji', + }, + 'math': { + links: { + tr: '#math-def', + dev: '#math-def', + mdn: 'font-family', + }, + tests: 'math', + }, + 'fangsong': { + links: { + tr: '#fangsong-def', + dev: '#fangsong-def', + mdn: 'font-family', + }, + tests: 'fangsong', + }, + 'ui-serif': { + links: { + tr: '#ui-serif-def', + dev: '#ui-serif-def', + mdn: 'font-family', + }, + tests: 'ui-serif', + }, + 'ui-sans-serif': { + links: { + tr: '#ui-sans-serif-def', + dev: '#ui-sans-serif-def', + mdn: 'font-family', + }, + tests: 'ui-sans-serif', + }, + 'ui-monospace': { + links: { + tr: '#ui-monospace-def', + dev: '#ui-monospace-def', + mdn: 'font-family', + }, + tests: 'ui-monospace', + }, + 'ui-rounded': { + links: { + tr: '#ui-rounded-def', + dev: '#ui-rounded-def', + mdn: 'font-family', + }, + tests: 'ui-rounded', + }, + }, properties: { 'font-size': { links: { tr: '#font-size-prop', dev: '#font-size-prop', }, - tests: ['xxx-large'], + tests: ['xxx-large', 'math'], + }, + 'font-size-adjust': { + links: { + tr: '#font-size-adjust-prop', + dev: '#font-size-adjust-prop', + }, + tests: ['none', '0', '1.234'], }, 'font-variant': { links: { @@ -37,6 +111,7 @@ export default { }, tests: [ 'normal', + 'stylistic(salt01)', 'historical-forms', 'styleset(ss01)', 'styleset(stacked-g, geometric-m)', @@ -47,6 +122,29 @@ export default { 'annotation(blocky)', ], }, + 'font-variant-emoji': { + links: { + tr: '#font-variant-emoji-prop', + dev: '#font-variant-emoji-prop', + }, + tests: [ + 'normal', + 'text', + 'emoji', + 'unicode', + ], + }, + 'font-variation-settings': { + links: { + tr: '#font-variation-settings-def', + dev: '#font-variation-settings-def', + }, + tests: [ + 'normal', + '"wght" 2', + '"wght" 2, "ital" 1.2', + ], + }, 'font-feature-settings': { links: { tr: '#font-feature-settings-prop', @@ -75,6 +173,39 @@ export default { }, tests: ['oblique 15deg', 'oblique -15deg', 'oblique 0deg'], }, + 'font-synthesis-weight': { + links: { + tr: '#font-synthesis-weight', + dev: '#font-synthesis-weight', + }, + tests: ['auto', 'none'], + }, + 'font-synthesis-style': { + links: { + tr: '#font-synthesis-style', + dev: '#font-synthesis-style', + }, + tests: ['auto', 'none'], + }, + 'font-synthesis-small-caps': { + links: { + tr: '#font-synthesis-small-caps', + dev: '#font-synthesis-small-caps', + }, + tests: ['auto', 'none'], + }, + 'font-synthesis': { + links: { + tr: '#font-synthesis', + dev: '#font-synthesis', + }, + tests: [ + 'small-caps', + 'weight small-caps', + 'style small-caps', + 'style small-caps weight', + ], + }, 'font-optical-sizing': { links: { tr: '#font-optical-sizing-def', @@ -87,7 +218,7 @@ export default { tr: '#font-palette-prop', dev: '#font-palette-prop', }, - tests: ['normal', 'light', 'dark'], + tests: ['normal', 'light', 'dark', '--custom-palette'], }, }, '@rules': { @@ -96,14 +227,28 @@ export default { tr: '#font-feature-values', dev: '#font-feature-values', }, - tests: '@font-feature-values Jupiter Sans {\n @styleset {\n some-style: 1;\n }\n}', + tests: [ + '@font-feature-values Jupiter Sans {\n @stylistic {\n some-style: 1;\n }\n}', + '@font-feature-values Jupiter Sans {\n @historical-forms {\n some-style: 1;\n }\n}', + '@font-feature-values Jupiter Sans {\n @styleset {\n some-style: 1;\n }\n}', + '@font-feature-values Jupiter Sans {\n @character-variant {\n some-style: 1;\n }\n}', + '@font-feature-values Jupiter Sans {\n @swash {\n some-style: 1;\n }\n}', + '@font-feature-values Jupiter Sans {\n @ornaments {\n some-style: 1;\n }\n}', + '@font-feature-values Jupiter Sans {\n @annotation {\n some-style: 1;\n }\n}', + '@font-feature-values Jupiter Sans, Foo Bar {\n @styleset {\n some-style: 1;\n }\n}', + '@font-feature-values Jupiter Sans {\n @styleset {\n some-style: 1 2 3;\n }\n}', + '@font-feature-values Jupiter Sans {\n @styleset {\n some-style: 1;\n }\n@styleset {\n other-style: 2;\n }\n}', + ], }, '@font-palette-values': { links: { tr: '#font-palette-values', dev: '#font-palette-values', }, - tests: '@font-palette-values Augusta {\n font-family: Handover Sans;\n base-palette: 3;\n}', + tests: [ + '@font-palette-values --custom-palette {\n font-family: Handover Sans;\n base-palette: 3;\n}', + '@font-palette-values --custom-palette {\n font-family: Handover Sans;\n override-colors: 0 #000, 1 red;\n}', + ], }, }, descriptors: { @@ -142,6 +287,69 @@ export default { }, tests: ['auto', 'block', 'swap', 'fallback', 'optional'], }, + '@font-face/font-stretch': { + links: { + tr: '#descdef-font-face-font-stretch', + dev: '#descdef-font-face-font-stretch', + }, + tests: [ + 'auto', + 'condensed normal', + ], + }, + '@font-face/font-style': { + links: { + tr: '#descdef-font-face-font-style', + dev: '#descdef-font-face-font-style', + }, + tests: [ + 'auto', + '10deg', + '10deg 5deg', + ], + }, + '@font-face/font-variation-settings': { + links: { + tr: '#descdef-font-face-font-variation-settings', + dev: '#descdef-font-face-font-variation-settings', + }, + tests: [ + 'normal', + '"wght" 2', + '"wght" 2, "ital" 1.2', + ], + }, + '@font-face/font-weight': { + links: { + tr: '#descdef-font-face-font-weight', + dev: '#descdef-font-face-font-weight', + }, + tests: [ + 'auto', + '100 300', + ], + }, + '@font-face/src': { + links: { + tr: '#font-face-src-parsing', + dev: '#font-face-src-parsing', + }, + tests: [ + 'url("foo") format("woff") tech(features-opentype)', + 'url("foo") format("woff") tech(features-graphite)', + 'url("foo") format("woff") tech(features-aat)', + 'url("foo") format("woff") tech(color-COLRv0)', + 'url("foo") format("woff") tech(color-COLRv1)', + 'url("foo") format("woff") tech(color-SVG)', + 'url("foo") format("woff") tech(color-sbix)', + 'url("foo") format("woff") tech(color-CBDT)', + 'url("foo") format("woff") tech(variations)', + 'url("foo") format("woff") tech(palettes)', + 'url("foo") format("woff") tech(incremental)', + 'url("foo") tech(color-COLRv1)', + 'url("foo") format("woff") tech(features-opentype, color-COLRv1)', + ], + }, '@font-feature-values/font-display': { links: { tr: '#font-display-font-feature-values', From 65539f5af9298ea082083f074989bec0f7b6ca16 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Wed, 4 Jan 2023 22:45:16 +0100 Subject: [PATCH 421/668] Added CSS Display 4 --- tests.js | 2 ++ tests/css-display-4.js | 24 ++++++++++++++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 tests/css-display-4.js diff --git a/tests.js b/tests.js index d32e6301..79c937cd 100644 --- a/tests.js +++ b/tests.js @@ -28,6 +28,7 @@ import cssContainment3 from './tests/css-containment-3.js'; import cssContent3 from './tests/css-content-3.js'; import cssCounterStyles3 from './tests/css-counter-styles-3.js'; import cssDisplay3 from './tests/css-display-3.js'; +import cssDisplay4 from './tests/css-display-4.js'; import cssEasing1 from './tests/css-easing-1.js'; import cssEasing2 from './tests/css-easing-2.js'; import cssEnv1 from './tests/css-env-1.js'; @@ -172,6 +173,7 @@ export default { 'css-content-3': cssContent3, 'css-counter-styles-3': cssCounterStyles3, 'css-display-3': cssDisplay3, + 'css-display-4': cssDisplay4, 'css-easing-1': cssEasing1, 'css-easing-2': cssEasing2, 'css-env-1': cssEnv1, diff --git a/tests/css-display-4.js b/tests/css-display-4.js new file mode 100644 index 00000000..59ea2e74 --- /dev/null +++ b/tests/css-display-4.js @@ -0,0 +1,24 @@ +export default { + title: 'CSS Display Module Level 4', + links: { + tr: 'css-display-4', + dev: 'css-display-4', + }, + status: { + stability: 'experimental', + }, + properties: { + 'layout-order': { + links: { + dev: '#propdef-layout-order', + }, + tests: ['-1', '0', '1'], + }, + 'reading-order': { + links: { + dev: '#propdef-reading-order', + }, + tests: ['-1', '0', '1'], + }, + }, +}; From af514971ed983a1c91ae5db0633175774b7a3f3c Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Wed, 4 Jan 2023 23:19:31 +0100 Subject: [PATCH 422/668] Updated CSS Fonts 5 --- tests/css-fonts-5.js | 98 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 97 insertions(+), 1 deletion(-) diff --git a/tests/css-fonts-5.js b/tests/css-fonts-5.js index 5ac5ba19..e5936ef7 100644 --- a/tests/css-fonts-5.js +++ b/tests/css-fonts-5.js @@ -1,6 +1,7 @@ export default { title: 'CSS Fonts Module Level 5', links: { + tr: 'css-fonts-5', dev: 'css-fonts-5', }, status: { @@ -9,6 +10,7 @@ export default { properties: { 'font-size-adjust': { links: { + tr: '#font-size-adjust-prop', dev: '#font-size-adjust-prop', }, tests: [ @@ -22,15 +24,109 @@ export default { 'ic-width from-font', 'ic-height 0.545', 'ic-height from-font', + 'from-font', ], }, }, descriptors: { + '@font-face/ascent-override': { + links: { + tr: '#descdef-font-face-ascent-override', + dev: '#descdef-font-face-ascent-override', + }, + tests: ['normal 125%', '125% normal'], + }, + '@font-face/descent-override': { + links: { + tr: '#descdef-font-face-descent-override', + dev: '#descdef-font-face-descent-override', + }, + tests: ['normal 125%', '125% normal'], + }, + '@font-face/font-size': { + links: { + tr: '#font-size-desc', + dev: '#font-size-desc', + }, + tests: ['auto', '0.7', '0.7 0.9'], + }, + '@font-face/line-gap-override': { + links: { + tr: '#descdef-font-face-line-gap-override', + dev: '#descdef-font-face-line-gap-override', + }, + tests: ['normal 125%', '125% normal'], + }, '@font-face/size-adjust': { links: { + tr: '#size-adjust-desc', dev: '#size-adjust-desc', }, - tests: ['100%'], + tests: ['125%'], + }, + '@font-face/subscript-position-override': { + links: { + tr: '#descdef-font-face-subscript-position-override', + dev: '#descdef-font-face-subscript-position-override', + }, + tests: [ + 'normal', + 'from-font', + '125%', + 'normal normal', + 'normal 125%', + 'normal from-font', + '125% normal', + 'from-font normal', + ], + }, + '@font-face/subscript-size-override': { + links: { + tr: '#descdef-font-face-subscript-size-override', + dev: '#descdef-font-face-subscript-size-override', + }, + tests: [ + 'normal', + 'from-font', + '125%', + 'normal normal', + 'normal 125%', + 'normal from-font', + '125% normal', + 'from-font normal', + ], + }, + '@font-face/superscript-size-override': { + links: { + tr: '#descdef-font-face-superscript-size-override', + dev: '#descdef-font-face-superscript-size-override', + }, + tests: [ + 'normal', + 'from-font', + '125%', + 'normal normal', + 'normal 125%', + 'normal from-font', + '125% normal', + 'from-font normal', + ], + }, + '@font-face/superscript-position-override': { + links: { + tr: '#descdef-font-face-superscript-position-override', + dev: '#descdef-font-face-superscript-position-override', + }, + tests: [ + 'normal', + 'from-font', + '125%', + 'normal normal', + 'normal 125%', + 'normal from-font', + '125% normal', + 'from-font normal', + ], }, }, }; From ae2f958c32879a62e6f0b7235c4176e1420b42b0 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Wed, 4 Jan 2023 23:29:22 +0100 Subject: [PATCH 423/668] Added CSS Linked Parameters 1 --- tests.js | 2 ++ tests/css-link-params-1.js | 23 +++++++++++++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 tests/css-link-params-1.js diff --git a/tests.js b/tests.js index 79c937cd..167eacb6 100644 --- a/tests.js +++ b/tests.js @@ -47,6 +47,7 @@ import cssImages5 from './tests/css-images-5.js'; import cssInline3 from './tests/css-inline-3.js'; import cssLayoutApi1 from './tests/css-layout-api-1.js'; import cssLineGrid1 from './tests/css-line-grid-1.js'; +import cssLinkParams1 from './tests/css-link-params-1.js'; import cssLists3 from './tests/css-lists-3.js'; import cssLogical1 from './tests/css-logical-1.js'; import cssMasking1 from './tests/css-masking-1.js'; @@ -192,6 +193,7 @@ export default { 'css-inline-3': cssInline3, 'css-layout-api-1': cssLayoutApi1, 'css-line-grid-1': cssLineGrid1, + 'css-link-params-1': cssLinkParams1, 'css-lists-3': cssLists3, 'css-logical-1': cssLogical1, 'css-masking-1': cssMasking1, diff --git a/tests/css-link-params-1.js b/tests/css-link-params-1.js new file mode 100644 index 00000000..877e1f85 --- /dev/null +++ b/tests/css-link-params-1.js @@ -0,0 +1,23 @@ +export default { + title: 'CSS Linked Parameters', + links: { + dev: 'css-link-params-1', + }, + status: { + stability: 'experimental', + }, + properties: { + 'link-parameters': { + links: { + dev: '#link-param-prop', + }, + tests: [ + 'none', + 'param(--foo)', + 'param(--foo 10px)', + 'param(--foo, --bar)', + 'param(--foo 10px, --bar)', + ], + }, + }, +}; From 2b6b9364a7cdc37c8be20dddda8d0e9c0b92260f Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Wed, 4 Jan 2023 23:52:05 +0100 Subject: [PATCH 424/668] Added CSS Scroll Snap 2 --- tests.js | 2 + tests/css-scroll-snap-2.js | 122 +++++++++++++++++++++++++++++++++++++ 2 files changed, 124 insertions(+) create mode 100644 tests/css-scroll-snap-2.js diff --git a/tests.js b/tests.js index 167eacb6..13ba8f94 100644 --- a/tests.js +++ b/tests.js @@ -68,6 +68,7 @@ import cssRuby1 from './tests/css-ruby-1.js'; import cssScoping1 from './tests/css-scoping-1.js'; import cssScrollAnchoring1 from './tests/css-scroll-anchoring-1.js'; import cssScrollSnap1 from './tests/css-scroll-snap-1.js'; +import cssScrollSnap2 from './tests/css-scroll-snap-2.js'; import cssScrollbars1 from './tests/css-scrollbars-1.js'; import cssShadowParts1 from './tests/css-shadow-parts-1.js'; import cssShapes1 from './tests/css-shapes-1.js'; @@ -214,6 +215,7 @@ export default { 'css-scoping-1': cssScoping1, 'css-scroll-anchoring-1': cssScrollAnchoring1, 'css-scroll-snap-1': cssScrollSnap1, + 'css-scroll-snap-2': cssScrollSnap2, 'css-scrollbars-1': cssScrollbars1, 'css-shadow-parts-1': cssShadowParts1, 'css-shapes-1': cssShapes1, diff --git a/tests/css-scroll-snap-2.js b/tests/css-scroll-snap-2.js new file mode 100644 index 00000000..8a3a9f4d --- /dev/null +++ b/tests/css-scroll-snap-2.js @@ -0,0 +1,122 @@ +export default { + title: 'CSS Scroll Snap Module Level 2', + links: { + dev: 'css-scroll-snap-2', + }, + status: { + stability: 'experimental', + }, + properties: { + 'scroll-start': { + links: { + dev: '#scroll-start', + }, + tests: [ + 'auto', + 'start', + 'end', + 'center', + 'left', + 'right', + 'top', + 'bottom', + '100px', + '10%', + '100px 10%', + ], + }, + 'scroll-start-target': { + links: { + dev: '#scroll-start-target', + }, + tests: [ + 'none', + 'auto', + ], + }, + 'scroll-start-x': { + links: { + dev: '#scroll-start-longhands-physical', + }, + tests: [ + 'auto', + 'start', + 'end', + 'center', + '100px', + '10%', + ], + }, + 'scroll-start-y': { + links: { + dev: '#scroll-start-longhands-physical', + }, + tests: [ + 'auto', + 'start', + 'end', + 'center', + '100px', + '10%', + ], + }, + 'scroll-start-inline': { + links: { + dev: '#scroll-start-longhands-logical', + }, + tests: [ + 'auto', + 'start', + 'end', + 'center', + '100px', + '10%', + ], + }, + 'scroll-start-block': { + links: { + dev: '#scroll-start-longhands-logical', + }, + tests: [ + 'auto', + 'start', + 'end', + 'center', + '100px', + '10%', + ], + }, + }, + selectors: { + ':snapped': { + links: { + dev: '#snapped', + }, + tests: ':snapped', + }, + ':snapped-x': { + links: { + dev: '#selectordef-snapped-x', + }, + tests: ':snapped-x', + }, + ':snapped-y': { + links: { + dev: '#selectordef-snapped-y', + }, + tests: ':snapped-y', + }, + ':snapped-inline': { + links: { + dev: '#selectordef-snapped-inline', + }, + tests: ':snapped-inline', + }, + ':snapped-block': { + links: { + dev: '#selectordef-snapped-block', + }, + tests: ':snapped-block', + }, + }, +}; From 4ba32c657cb9ed3358c88d67c116a1edd3f3c10f Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Thu, 5 Jan 2023 00:14:05 +0100 Subject: [PATCH 425/668] Added CSS View Transitions 1 --- tests.js | 2 + tests/css-view-transitions-1.js | 68 +++++++++++++++++++++++++++++++++ 2 files changed, 70 insertions(+) create mode 100644 tests/css-view-transitions-1.js diff --git a/tests.js b/tests.js index 13ba8f94..98735836 100644 --- a/tests.js +++ b/tests.js @@ -89,6 +89,7 @@ import cssValues3 from './tests/css-values-3.js'; import cssValues4 from './tests/css-values-4.js'; import cssValues5 from './tests/css-values-5.js'; import cssVariables1 from './tests/css-variables-1.js'; +import cssViewTransitions1 from './tests/css-view-transitions-1.js'; import cssWillChange1 from './tests/css-will-change-1.js'; import cssWritingModes3 from './tests/css-writing-modes-3.js'; import cssWritingModes4 from './tests/css-writing-modes-4.js'; @@ -236,6 +237,7 @@ export default { 'css-values-4': cssValues4, 'css-values-5': cssValues5, 'css-variables-1': cssVariables1, + 'css-view-transitions-1': cssViewTransitions1, 'css-will-change-1': cssWillChange1, 'css-writing-modes-3': cssWritingModes3, 'css-writing-modes-4': cssWritingModes4, diff --git a/tests/css-view-transitions-1.js b/tests/css-view-transitions-1.js new file mode 100644 index 00000000..3a89aa98 --- /dev/null +++ b/tests/css-view-transitions-1.js @@ -0,0 +1,68 @@ +export default { + title: 'CSS View Transitions Module Level 1', + links: { + tr: 'css-view-transitions-1', + dev: 'css-view-transitions-1', + }, + status: { + stability: 'experimental', + }, + properties: { + 'view-transition-name': { + links: { + tr: '#view-transition-name-prop', + dev: '#view-transition-name-prop', + }, + tests: ['none', '--view-transition'], + }, + }, + selectors: { + '::view-transition': { + links: { + tr: '#selectordef-view-transition', + dev: '#selectordef-view-transition', + }, + tests: ['::view-transition'], + }, + '::view-transition-group()': { + links: { + tr: '#selectordef-view-transition-group-pt-name-selector', + dev: '#selectordef-view-transition-group-pt-name-selector', + }, + tests: [ + '::view-transition-group(*)', + '::view-transition-group(--foo)', + ], + }, + '::view-transition-image-pair()': { + links: { + tr: '#selectordef-view-transition-image-pair-pt-name-selector', + dev: '#selectordef-view-transition-image-pair-pt-name-selector', + }, + tests: [ + '::view-transition-image-pair(*)', + '::view-transition-image-pair(--foo)', + ], + }, + '::view-transition-new()': { + links: { + tr: '#selectordef-view-transition-new-pt-name-selector', + dev: '#selectordef-view-transition-new-pt-name-selector', + }, + tests: [ + '::view-transition-new(*)', + '::view-transition-new(--foo)', + ], + }, + '::view-transition-old()': { + links: { + tr: '#selectordef-view-transition-old-pt-name-selector', + dev: '#selectordef-view-transition-old-pt-name-selector', + }, + tests: [ + '::view-transition-old(*)', + '::view-transition-old(--foo)', + ], + }, + }, +}; From 1166c45ef13ac24bdb90d6fc0ee8b448f4592dc7 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Thu, 5 Jan 2023 00:21:18 +0100 Subject: [PATCH 426/668] Removed cursor from gradient properties as it's optional --- tests/css-images-3.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/css-images-3.js b/tests/css-images-3.js index 30b651ae..e077d673 100644 --- a/tests/css-images-3.js +++ b/tests/css-images-3.js @@ -9,7 +9,7 @@ export default { 'first-snapshot': 2015, }, values: { - properties: ['background-image', 'list-style-image', 'border-image', 'cursor', 'content'], + properties: ['background-image', 'list-style-image', 'border-image', 'content'], 'linear-gradient()': { links: { tr: '#linear-gradients', From 9facd1072d43da64475aa6529e45d161a72d376b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Sat, 21 Jan 2023 00:40:25 +0100 Subject: [PATCH 427/668] Added nth-last-child for selector 4 --- tests/selectors-4.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tests/selectors-4.js b/tests/selectors-4.js index 83e80b4b..0694df02 100644 --- a/tests/selectors-4.js +++ b/tests/selectors-4.js @@ -314,6 +314,13 @@ export default { }, tests: [':nth-child(-n+3 of li.important)', ':nth-child(even of :not([hidden])'], }, + ':nth-last-child()': { + links: { + tr: '#the-nth-last-child-pseudo', + dev: '#the-nth-last-child-pseudo', + }, + tests: [':nth-last-child(-n+3 of li.important)', ':nth-last-child(even of :not([hidden])'], + }, '||': { links: { tr: '#the-column-combinator', From cd0eee8a5e16ea91f1d2f968eb07c0bea64d487e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Sat, 21 Jan 2023 00:49:15 +0100 Subject: [PATCH 428/668] Removed attr() test for Values and Units 3 --- tests/css-values-3.js | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/css-values-3.js b/tests/css-values-3.js index 950db469..4ca6160e 100644 --- a/tests/css-values-3.js +++ b/tests/css-values-3.js @@ -76,7 +76,6 @@ export default { 'calc(5px*2)', 'calc(5px/2)', 'calc(100%/3 - 2*1em - 2*1px)', - 'calc(attr(data-px)*2)', 'calc(5px - 10px)', 'calc(1vw - 1px)', 'calc(calc(100%))', From 32c83432cafc3eb44b9076b656e7222f10b598fb Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Thu, 2 Mar 2023 22:07:48 +0100 Subject: [PATCH 429/668] Updated CSS Animations 2 --- tests/css-animations-2.js | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/tests/css-animations-2.js b/tests/css-animations-2.js index 8ab5c378..dc10c1f7 100644 --- a/tests/css-animations-2.js +++ b/tests/css-animations-2.js @@ -24,8 +24,32 @@ export default { 'auto', 'none', 'custom-timeline', - '"custom-timeline"', - 'auto, none, custom-timeline, "custom-timeline"', + 'scroll()', + 'scroll(root)', + 'scroll(nearest)', + 'scroll(block)', + 'scroll(inline)', + 'scroll(vertical)', + 'scroll(horizontal)', + 'scroll(nearest inline)', + 'scroll(vertical root)', + 'view()', + 'view(block)', + 'view(inline)', + 'view(vertical)', + 'view(horizontal)', + 'view(auto)', + 'view(100px)', + 'view(-100px)', + 'view(10%)', + 'view(100px auto)', + 'view(100px 10%)', + 'view(100px, 10%, 200px auto)', + 'view(100px inline)', + 'view(vertical 10%)', + 'view(block 100px 10%)', + 'view(100px, 10% horizontal)', + 'auto, none, custom-timeline, scroll(), view()', ], }, animation: { From 50d1a8f934f696c50174b93dee7c285b42ce5c3f Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Thu, 2 Mar 2023 22:09:52 +0100 Subject: [PATCH 430/668] Fixed link for animation property --- tests/css-animations-2.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/css-animations-2.js b/tests/css-animations-2.js index dc10c1f7..f6aad0f9 100644 --- a/tests/css-animations-2.js +++ b/tests/css-animations-2.js @@ -54,8 +54,8 @@ export default { }, animation: { links: { - tr: '#animation-timeline', - dev: '#animation-timeline', + tr: '#animation-shorthand', + dev: '#animation-shorthand', }, tests: ['1s both infinite auto'], }, From 6b9c5bf82728ef6a5b8e16e58e1c412640adc31d Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Fri, 3 Mar 2023 00:17:09 +0100 Subject: [PATCH 431/668] Added support for testing DOM features --- csstest.js | 7 ++++ supports.js | 107 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 114 insertions(+) diff --git a/csstest.js b/csstest.js index 3f4d503c..8d6726cf 100644 --- a/csstest.js +++ b/csstest.js @@ -234,6 +234,9 @@ Test.prototype = { case 'SVG': mdnLink += 'SVG/Attribute/'; break; + case 'DOM': + mdnLink += 'API/'; + break; default: mdnLink += 'CSS/'; // add exception for Media Queries if no link define @@ -387,6 +390,10 @@ Test.groups = { return Supports.atrule(test); }, + interfaces: function (value, name, tests) { + return Supports.attributeOrMethod(name, value, tests[name].required, tests[name].interface); + }, + 'Media queries': function (test) { var matches = matchMedia(test); if (matches.media !== 'invalid' && matches.matches) { diff --git a/supports.js b/supports.js index e75afd3d..a313e917 100644 --- a/supports.js +++ b/supports.js @@ -40,6 +40,7 @@ window.matchMedia = var _ = (window.Supports = { prefixes: ['', '-moz-', '-webkit-', '-o-', '-ms-', 'ms-', '-khtml-'], + domPrefixes: ['', 'Moz', 'Webkit', 'WebKit'], property: function (property) { if (property.charAt(0) === '-') { @@ -245,6 +246,105 @@ window.matchMedia = : Supports.variable(val[1], val[2]).success, }; }, + + interface: function (interface) { + if (!_.interface.cached) { + _.interface.cached = {}; + } else if (_.interface.cached[interface]) { + return { + success: true, + interface: _.interface.cached[interface].interface, + prefix: _.interface.cached[interface].prefix, + }; + } + + for (var i = 0; i < _.domPrefixes.length; i++) { + var prefixed = getPrefixedVariants(interface, _.domPrefixes[i]); + + for (var j = 0; j < prefixed.length; j++) { + if (prefixed[j] in window) { + _.interface.cached[interface] = { + interface: prefixed[j], + prefix: _.domPrefixes[i], + }; + + return { + success: true, + interface: prefixed[j], + prefix: _.domPrefixes[i], + }; + } + } + } + + _.interface.cached[interface] = false; + return { + success: false, + interface: interface, + }; + }, + + attributeOrMethod: function (interface, attributeOrMethod, required, interfaceCallback) { + function getInterfaceFromRules(rules, interfaceName) { + for (var i = 0; i < rules.length; i++) { + if (rules[i].constructor.name === interfaceName) { + return rules[i]; + } + + if (rules[i].cssRules) { + var interface = getInterfaceFromRules(rules[i].cssRules, interfaceName); + if (interface) { + return interface; + } + } + } + + return null; + } + + interface = _.interface(interface); + + if (!interface.success) { + return interface; + } + + // If no CSS rules are defined to test against and no interface is defined explicitly, + // only return the interface info + if (!required && !interfaceCallback) { + return interface; + } + + style.textContent = required; + + var cssInterface = null; + try { + if (interfaceCallback) { + cssInterface = interfaceCallback(style); + } else { + cssInterface = getInterfaceFromRules(style.sheet.cssRules, interface.interface); + } + } catch (e) { + return interface; + } + + if (cssInterface) { + for (var i = 0; i < _.domPrefixes.length; i++) { + var prefixed = _.domPrefixes[i] + attributeOrMethod; + + if (prefixed in cssInterface) { + return { + success: true, + prefix: _.domPrefixes[i], + interfacePrefix: interface.prefix, + }; + } + } + } + + return { + success: false, + }; + }, }); /** @@ -257,4 +357,11 @@ window.matchMedia = }) .replace('-', ''); } + + function getPrefixedVariants(featureName, prefix) { + return [ + prefix + featureName, + featureName.replace('CSS', 'CSS' + prefix), + ] + } })(); From 14de244158605b563875bbbeea013ac2e9fa6152 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Sun, 5 Mar 2023 23:39:57 +0100 Subject: [PATCH 432/668] Added tests for DOM features --- tests.js | 14 ++ tests/css-animations-1.js | 54 +++++++ tests/css-animations-2.js | 19 +++ tests/css-cascade-5.js | 31 ++++ tests/css-cascade-6.js | 10 ++ tests/css-color-5.js | 10 ++ tests/css-conditional-3.js | 61 ++++++++ tests/css-containment-2.js | 9 ++ tests/css-containment-3.js | 14 ++ tests/css-counter-styles-3.js | 41 +++++ tests/css-font-loading-3.js | 119 +++++++++++++++ tests/css-fonts-3.js | 11 ++ tests/css-fonts-4.js | 80 ++++++++++ tests/css-highlight-api-1.js | 38 +++++ tests/css-images-4.js | 13 ++ tests/css-nav-1.js | 32 ++++ tests/css-nesting-1.js | 21 +++ tests/css-pseudo-4.js | 24 +++ tests/css-regions-1.js | 60 ++++++++ tests/css-shadow-parts-1.js | 13 ++ tests/css-transitions-1.js | 21 +++ tests/css-transitions-2.js | 51 +++++++ tests/css-view-transitions-1.js | 24 +++ tests/cssom-1.js | 251 +++++++++++++++++++++++++++++++ tests/cssom-view-1.js | 256 ++++++++++++++++++++++++++++++++ tests/resize-observer-1.js | 39 +++++ tests/scroll-animations-1.js | 38 +++++ tests/web-animations-1.js | 160 ++++++++++++++++++++ tests/web-animations-2.js | 170 +++++++++++++++++++++ 29 files changed, 1684 insertions(+) create mode 100644 tests/css-font-loading-3.js create mode 100644 tests/css-nesting-1.js create mode 100644 tests/css-transitions-2.js create mode 100644 tests/cssom-1.js create mode 100644 tests/resize-observer-1.js create mode 100644 tests/web-animations-1.js create mode 100644 tests/web-animations-2.js diff --git a/tests.js b/tests.js index 98735836..dcf5defa 100644 --- a/tests.js +++ b/tests.js @@ -34,6 +34,7 @@ import cssEasing2 from './tests/css-easing-2.js'; import cssEnv1 from './tests/css-env-1.js'; import cssExclusions1 from './tests/css-exclusions-1.js'; import cssFlexbox1 from './tests/css-flexbox-1.js'; +import cssFontLoading3 from './tests/css-font-loading-3.js'; import cssFonts3 from './tests/css-fonts-3.js'; import cssFonts4 from './tests/css-fonts-4.js'; import cssFonts5 from './tests/css-fonts-5.js'; @@ -55,6 +56,7 @@ import cssMulticol1 from './tests/css-multicol-1.js'; import cssMulticol2 from './tests/css-multicol-2.js'; import cssNamespaces3 from './tests/css-namespaces-3.js'; import cssNav1 from './tests/css-nav-1.js'; +import cssNesting1 from './tests/css-nesting-1.js'; import cssOverflow3 from './tests/css-overflow-3.js'; import cssOverflow4 from './tests/css-overflow-4.js'; import cssOverscroll1 from './tests/css-overscroll-1.js'; @@ -83,6 +85,7 @@ import cssTextDecor4 from './tests/css-text-decor-4.js'; import cssTransforms1 from './tests/css-transforms-1.js'; import cssTransforms2 from './tests/css-transforms-2.js'; import cssTransitions1 from './tests/css-transitions-1.js'; +import cssTransitions2 from './tests/css-transitions-2.js'; import cssUi3 from './tests/css-ui-3.js'; import cssUi4 from './tests/css-ui-4.js'; import cssValues3 from './tests/css-values-3.js'; @@ -106,6 +109,7 @@ import css2Ui from './tests/css2-ui.js'; import css2VisuDet from './tests/css2-visudet.js'; import css2VisuFx from './tests/css2-visufx.js'; import css2VisuRen from './tests/css2-visuren.js'; +import cssom1 from './tests/cssom-1.js'; import cssomView1 from './tests/cssom-view-1.js'; import fillStroke3 from './tests/fill-stroke-3.js'; import filterEffects1 from './tests/filter-effects-1.js'; @@ -119,6 +123,7 @@ import mediaQueries5 from './tests/mediaqueries-5.js'; import motion1 from './tests/motion-1.js'; import pointerEvents1 from './tests/pointerevents1.js'; import pointerEvents3 from './tests/pointerevents3.js'; +import resizeObserver1 from './tests/resize-observer-1.js'; import scrollAnimations1 from './tests/scroll-animations-1.js'; import selectors3 from './tests/selectors-3.js'; import selectors4 from './tests/selectors-4.js'; @@ -129,6 +134,8 @@ import svg2Painting from './tests/svg2-painting.js'; import svg2Paths from './tests/svg2-paths.js'; import svg2PServers from './tests/svg2-pservers.js'; import svg2Text from './tests/svg2-text.js'; +import webAnimations1 from './tests/web-animations-1.js'; +import webAnimations2 from './tests/web-animations-2.js'; import webVtt from './tests/webvtt.js'; @@ -182,6 +189,7 @@ export default { 'css-env-1': cssEnv1, 'css-exclusions-1': cssExclusions1, 'css-flexbox-1': cssFlexbox1, + 'css-font-loading-3': cssFontLoading3, 'css-fonts-3': cssFonts3, 'css-fonts-4': cssFonts4, 'css-fonts-5': cssFonts5, @@ -203,6 +211,7 @@ export default { 'css-multicol-2': cssMulticol2, 'css-namespaces-3': cssNamespaces3, 'css-nav-1': cssNav1, + 'css-nesting-1': cssNesting1, 'css-overflow-3': cssOverflow3, 'css-overflow-4': cssOverflow4, 'css-overscroll-1': cssOverscroll1, @@ -231,6 +240,7 @@ export default { 'css-transforms-1': cssTransforms1, 'css-transforms-2': cssTransforms2, 'css-transitions-1': cssTransitions1, + 'css-transitions-2': cssTransitions2, 'css-ui-3': cssUi3, 'css-ui-4': cssUi4, 'css-values-3': cssValues3, @@ -241,6 +251,7 @@ export default { 'css-will-change-1': cssWillChange1, 'css-writing-modes-3': cssWritingModes3, 'css-writing-modes-4': cssWritingModes4, + 'cssom-1': cssom1, 'cssom-view-1': cssomView1, 'fill-stroke-3': fillStroke3, 'filter-effects-1': filterEffects1, @@ -254,6 +265,7 @@ export default { 'motion-1': motion1, 'pointerevents-1': pointerEvents1, 'pointerevents-3': pointerEvents3, + 'resize-observer-1': resizeObserver1, 'scroll-animations-1': scrollAnimations1, 'selectors-3': selectors3, 'selectors-4': selectors4, @@ -264,5 +276,7 @@ export default { 'svg2-paths': svg2Paths, 'svg2-pServers': svg2PServers, 'svg2-text': svg2Text, + 'web-animations-1': webAnimations1, + 'web-animations-2': webAnimations2, webvtt: webVtt, }; diff --git a/tests/css-animations-1.js b/tests/css-animations-1.js index 33696a80..ce8eedd6 100644 --- a/tests/css-animations-1.js +++ b/tests/css-animations-1.js @@ -96,4 +96,58 @@ export default { ], }, }, + interfaces: { + AnimationEvent: { + links: { + tr: '#interface-animationevent', + dev: '#interface-animationevent', + mdnGroup: 'DOM', + }, + tests: ['AnimationEvent'], + }, + CSSRule: { + links: { + tr: '#interface-cssrule', + dev: '#interface-cssrule', + mdnGroup: 'DOM', + }, + tests: [ + 'KEYFRAMES_RULE', + 'KEYFRAME_RULE', + ], + required: 'div { }', + interface: function(style) { + return style.sheet.cssRules[0]; + } + }, + CSSKeyframesRule: { + links: { + tr: '#interface-csskeyframesrule', + dev: '#interface-csskeyframesrule', + mdnGroup: 'DOM', + }, + tests: ['name', 'cssRules', 'length', 'appendRule', 'deleteRule', 'findRule'], + required: '@keyframes foo { from {} to {} }', + }, + CSSKeyframeRule: { + links: { + tr: '#interface-csskeyframerule', + dev: '#interface-csskeyframerule', + mdnGroup: 'DOM', + }, + tests: ['keyText', 'style'], + required: '@keyframes foo { from {} to {} }', + }, + Element: { + links: { + tr: '#interface-globaleventhandlers', + dev: '#interface-globaleventhandlers', + mdnGroup: 'DOM', + }, + tests: ['onanimationstart', 'onanimationiteration', 'onanimationend', 'onanimationcancel'], + interface: function(style) { + return document.body; + }, + } + }, }; diff --git a/tests/css-animations-2.js b/tests/css-animations-2.js index f6aad0f9..0a3f5bb4 100644 --- a/tests/css-animations-2.js +++ b/tests/css-animations-2.js @@ -60,4 +60,23 @@ export default { tests: ['1s both infinite auto'], }, }, + interfaces: { + CSSAnimation: { + links: { + tr: '#the-CSSAnimation-interface', + dev: '#the-CSSAnimation-interface', + mdnGroup: 'DOM', + }, + tests: ['animationName'], + required: '@keyframes slide-in { 0% { transform: translateY(-1000px); } 100% { transform: translateY(0); } } .animate { animation: slide-in 0.7s both; }', + interface: function(style) { + var div = document.createElement('div'); + div.className = 'animate'; + body.append(div); + var animations = div.getAnimations && div.getAnimations(); + div.remove(); + return animations.length > 0 && animations[0]; + } + }, + }, }; diff --git a/tests/css-cascade-5.js b/tests/css-cascade-5.js index 50f38660..87b72be3 100644 --- a/tests/css-cascade-5.js +++ b/tests/css-cascade-5.js @@ -40,4 +40,35 @@ export default { ], }, }, + interfaces: { + /* Doesn't currently work because style sheet is only available once imported + CSSImportRule: { + links: { + tr: '#extensions-to-cssimportrule-interface', + dev: '#extensions-to-cssimportrule-interface', + mdnGroup: 'DOM', + }, + tests: ['layerName'], + required: '@import url("foo.css") layer(mylayer);', + }, + */ + CSSLayerBlockRule: { + links: { + tr: '#the-csslayerblockrule-interface', + dev: '#the-csslayerblockrule-interface', + mdnGroup: 'DOM', + }, + tests: ['name', 'cssRules', 'insertRule', 'deleteRule'], + required: '@layer mylayer { }', + }, + CSSLayerStatementRule: { + links: { + tr: '#the-csslayerstatementrule-interface', + dev: '#the-csslayerstatementrule-interface', + mdnGroup: 'DOM', + }, + tests: ['nameList', 'cssText', 'parentRule', 'parentStyleSheet'], + required: '@layer firstLayer, secondLayer;', + }, + }, }; diff --git a/tests/css-cascade-6.js b/tests/css-cascade-6.js index ab390d67..8dd85feb 100644 --- a/tests/css-cascade-6.js +++ b/tests/css-cascade-6.js @@ -28,4 +28,14 @@ export default { tests: 'foo >> bar', }, }, + interfaces: { + CSSScopeRule: { + links: { + dev: '#the-cssscoperule-interface', + mdnGroup: 'DOM', + }, + tests: ['start', 'end', 'cssRules', 'insertRule', 'deleteRule'], + required: '@scope (foo) to (bar) {}', + } + } } \ No newline at end of file diff --git a/tests/css-color-5.js b/tests/css-color-5.js index d7549957..e8881148 100644 --- a/tests/css-color-5.js +++ b/tests/css-color-5.js @@ -46,4 +46,14 @@ export default { ], }, }, + interfaces: { + CSSColorProfileRule: { + links: { + dev: '#the-csscolorprofilerule-interface', + mdnGroup: 'DOM', + }, + tests: ['name', 'src', 'renderingIntent', 'components', 'cssText', 'parentRule', 'parentStyleSheet'], + required: '@color-profile { name: "sRGB"; src: url("sRGB.icc"); }', + }, + } }; diff --git a/tests/css-conditional-3.js b/tests/css-conditional-3.js index a55b7ca8..13594767 100644 --- a/tests/css-conditional-3.js +++ b/tests/css-conditional-3.js @@ -24,4 +24,65 @@ export default { ], }, }, + interfaces: { + CSSRule: { + links: { + tr: '#extensions-to-cssrule-interface', + dev: '#extensions-to-cssrule-interface', + mdnGroup: 'DOM', + }, + tests: ['SUPPORTS_RULE'], + required: 'div { }', + interface: function(style) { + return style.sheet.cssRules[0]; + } + }, + CSSConditionRule: { + links: { + tr: '#the-cssconditionrule-interface', + dev: '#the-cssconditionrule-interface', + mdnGroup: 'DOM', + }, + tests: ['conditionText', 'cssRules', 'insertRule', 'deleteRule'], + required: '@supports (color: green) { }', + interface: function(style) { + return style.sheet.cssRules[0]; + } + }, + CSSMediaRule: { + links: { + tr: '#the-cssmediarule-interface', + dev: '#the-cssmediarule-interface', + mdnGroup: 'DOM', + }, + tests: ['media', 'conditionText'], + required: '@media (min-width: 500px) { }', + interface: function(style) { + return style.sheet.cssRules[0]; + } + }, + CSSSupportsRule: { + links: { + tr: '#the-csssupportsrule-interface', + dev: '#the-csssupportsrule-interface', + mdnGroup: 'DOM', + }, + tests: ['conditionText'], + required: '@supports (display: grid) { }', + interface: function(style) { + return style.sheet.cssRules[0]; + } + }, + CSS: { + links: { + tr: '#the-css-namespace', + dev: '#the-css-namespace', + mdnGroup: 'DOM', + }, + tests: ['supports'], + interface: function() { + return CSS; + } + }, + }, }; diff --git a/tests/css-containment-2.js b/tests/css-containment-2.js index 6acf70f4..feac3b8e 100644 --- a/tests/css-containment-2.js +++ b/tests/css-containment-2.js @@ -23,4 +23,13 @@ export default { tests: ['visible', 'auto', 'hidden'], }, }, + interfaces: { + ContentVisibilityAutoStateChangeEvent: { + links: { + dev: '#content-visibility-auto-state-change', + mdnGroup: 'DOM', + }, + tests: ['ContentVisibilityAutoStateChangeEvent'], + }, + } }; diff --git a/tests/css-containment-3.js b/tests/css-containment-3.js index eedd8fcf..6f73699e 100644 --- a/tests/css-containment-3.js +++ b/tests/css-containment-3.js @@ -113,4 +113,18 @@ export default { tests: ['none', 'style', 'x / size', 'x y / size', 'x / size style'], }, }, + interfaces: { + CSSContainerRule: { + links: { + tr: '#the-csscontainerrule-interface', + dev: '#the-csscontainerrule-interface', + mdnGroup: 'DOM', + }, + tests: ['containerName', 'containerQuery', 'conditionText'], + required: '@container (min-width: 500px) { }', + interface: function(style) { + return style.sheet.cssRules[0]; + } + }, + }, }; diff --git a/tests/css-counter-styles-3.js b/tests/css-counter-styles-3.js index d35b75c7..dad3c2e7 100644 --- a/tests/css-counter-styles-3.js +++ b/tests/css-counter-styles-3.js @@ -154,4 +154,45 @@ export default { tests: ['auto', 'bullets', 'numbers', 'words', 'spell-out', 'example-counter'], }, }, + interfaces: { + CSSRule: { + links: { + tr: '#extensions-to-cssrule-interface', + dev: '#extensions-to-cssrule-interface', + mdnGroup: 'DOM', + }, + tests: ['COUNTER_STYLE_RULE'], + required: 'div { }', + interface: function(style) { + return style.sheet.cssRules[0]; + } + }, + CSSCounterStyleRule: { + links: { + tr: '#the-csscounterstylerule-interface', + dev: '#the-csscounterstylerule-interface', + mdnGroup: 'DOM', + }, + tests: [ + 'name', + 'system', + 'symbols', + 'additiveSymbols', + 'negative', + 'prefix', + 'suffix', + 'range', + 'pad', + 'speakAs', + 'fallback', + 'cssText', + 'parentRule', + 'parentStyleSheet', + ], + required: '@counter-style example { system: alphabetic; symbols: A B C D; additive-symbols: 1000 M, 500 C; }', + interface: function(style) { + return style.sheet.cssRules[0]; + } + }, + }, }; diff --git a/tests/css-font-loading-3.js b/tests/css-font-loading-3.js new file mode 100644 index 00000000..1b7bbcb1 --- /dev/null +++ b/tests/css-font-loading-3.js @@ -0,0 +1,119 @@ +export default { + title: 'CSS Font Loading Module Level 3', + links: { + tr: 'css-font-loading-3', + dev: 'css-font-loading-3', + }, + status: { + stability: 'stable', + }, + interfaces: { + FontFace: { + links: { + tr: '#fontface-interface', + dev: '#fontface-interface', + mdnGroup: 'DOM', + }, + tests: [ + 'family', + 'style', + 'weight', + 'stretch', + 'unicodeRange', + 'variant', + 'featureSettings', + 'variationSettings', + 'display', + 'ascenderOverride', + 'descenderOverride', + 'lineGapOverride', + 'status', + 'load', + 'loaded', + 'features', + 'variations', + 'palettes', + ], + interface: function() { + return new FontFace('test', 'url("test.woff")'); + }, + }, + FontFaceFeatures: { + links: { + dev: '#fontfacefeatures', + mdnGroup: 'DOM', + }, + tests: ['FontFaceFeatures'], + interface: function() { + return new FontFace('test', 'url("test.woff")').features; + }, + }, + FontFaceVariationAxis: { + links: { + dev: '#fontfacevariationaxis', + mdnGroup: 'DOM', + }, + tests: ['name', 'axisTag', 'minimumValue', 'maximumValue', 'defaultValue'], + interface: function() { + return new FontFace('test', 'url("test.woff")').variations; + }, + }, + FontFacePalettes: { + links: { + dev: '#fontfacepalettes', + mdnGroup: 'DOM', + }, + tests: ['length'], + interface: function() { + return new FontFace('test', 'url("test.woff")').palettes; + }, + }, + FontFacePalette: { + links: { + dev: '#fontfacepalette', + mdnGroup: 'DOM', + }, + tests: ['FontFacePalette'], + }, + FontFaceSet: { + links: { + tr: '#FontFaceSet-interface', + dev: '#FontFaceSet-interface', + mdnGroup: 'DOM', + }, + tests: [ + 'add', + 'delete', + 'clear', + 'onloading', + 'onloadingdone', + 'onloadingerror', + 'load', + 'check', + 'ready', + 'status', + ], + interface: function() { + return document.fonts; + } + }, + FontFaceSetLoadEvent: { + links: { + dev: '#fontfacesetloadevent', + mdnGroup: 'DOM', + }, + tests: ['FontFaceSetLoadEvent'], + }, + Document: { + links: { + tr: '#font-face-source', + dev: '#font-face-source', + mdnGroup: 'DOM', + }, + tests: ['fonts'], + interface: function() { + return document; + }, + } + }, +}; diff --git a/tests/css-fonts-3.js b/tests/css-fonts-3.js index 009b603c..5e4484e1 100644 --- a/tests/css-fonts-3.js +++ b/tests/css-fonts-3.js @@ -217,4 +217,15 @@ export default { tests: "@font-face {\n font-family: foo;\n src: local('Arial');\n}", }, }, + interfaces: { + CSSFontFaceRule: { + links: { + tr: '#om-fontface', + dev: '#om-fontface', + mdnGroup: 'DOM', + }, + tests: ['style', 'cssText', 'parentRule', 'parentStyleSheet'], + required: '@font-face { font-family: "Foo"; src: local("Foo") }', + }, + }, }; diff --git a/tests/css-fonts-4.js b/tests/css-fonts-4.js index 2a3fe5c7..b2c22eac 100644 --- a/tests/css-fonts-4.js +++ b/tests/css-fonts-4.js @@ -358,4 +358,84 @@ export default { tests: ['auto', 'block', 'swap', 'fallback', 'optional'], }, }, + interfaces: { + CSSRule: { + links: { + tr: '#om-fontfeaturevalues', + dev: '#om-fontfeaturevalues', + mdnGroup: 'DOM', + }, + tests: ['FONT_FEATURE_VALUES_RULE'], + required: 'div { }', + interface: function(style) { + return style.sheet.cssRules[0]; + } + }, + CSSFontFeatureValuesRule: { + links: { + tr: '#om-fontfeaturevalues', + dev: '#om-fontfeaturevalues', + mdnGroup: 'DOM', + }, + tests: [ + 'fontFamily', + 'annotation', + 'ornaments', + 'stylistic', + 'swash', + 'characterVariant', + 'styleset', + 'cssText', + 'parentRule', + 'parentStyleSheet', + ], + required: '@font-feature-values Font One { @styleset { nice-style: 12; } }', + interface: function(style) { + return style.sheet.cssRules[0]; + } + }, + CSSFontFeatureValuesMap: { + links: { + tr: '#cssfontfeaturevaluesmap', + dev: '#cssfontfeaturevaluesmap', + mdnGroup: 'DOM', + }, + tests: [ + 'has', + 'get', + 'set', + 'keys', + 'values', + 'entries', + 'forEach', + 'clear', + 'delete', + 'size', + ], + required: '@font-feature-values Font One { @styleset { nice-style: 12; } }', + interface: function(style) { + return style.sheet.cssRules[0].styleset; + }, + }, + CSSFontPaletteValuesRule: { + links: { + tr: '#om-fontpalettevalues', + dev: '#om-fontpalettevalues', + mdnGroup: 'DOM', + }, + tests: [ + 'name', + 'fontFamily', + 'basePalette', + 'overrideColors', + 'cssText', + 'parentRule', + 'parentStyleSheet', + ], + required: '@font-palette-values --identifier { font-family: foo; override-colors: 0 #00ffbb, 1 #007744; }', + interface: function(style) { + return style.sheet.cssRules[0]; + } + }, + }, }; diff --git a/tests/css-highlight-api-1.js b/tests/css-highlight-api-1.js index ed8d2cac..65282f38 100644 --- a/tests/css-highlight-api-1.js +++ b/tests/css-highlight-api-1.js @@ -16,4 +16,42 @@ export default { tests: ['::highlight(example-highlight)'], }, }, + interfaces: { + CSS: { + links: { + tr: '#registration', + dev: '#registration', + mdnGroup: 'DOM', + }, + tests: ['highlights'], + interface: function() { + return CSS; + } + }, + Highlight: { + links: { + tr: '#creation', + dev: '#creation', + mdnGroup: 'DOM', + }, + tests: [ + 'priority', + 'type', + 'has', + 'add', + 'delete', + 'clear', + 'values', + 'keys', + 'entries', + 'forEach', + ], + interface: function(style) { + var range = new Range(); + range.setStart(document.body, 10); + range.setEnd(document.body, 20); + return new Highlight(range); + } + }, + } }; diff --git a/tests/css-images-4.js b/tests/css-images-4.js index 9cfb3c51..3824f9bc 100644 --- a/tests/css-images-4.js +++ b/tests/css-images-4.js @@ -117,4 +117,17 @@ export default { ], }, }, + interfaces: { + CSS: { + links: { + tr: '#elementsources', + dev: '#elementsources', + mdnGroup: 'DOM', + }, + tests: ['elementSources'], + interface: function() { + return CSS; + } + }, + }, }; diff --git a/tests/css-nav-1.js b/tests/css-nav-1.js index 6c3c998b..a98803dc 100644 --- a/tests/css-nav-1.js +++ b/tests/css-nav-1.js @@ -30,4 +30,36 @@ export default { tests: ['normal', 'grid'], }, }, + interfaces: { + Window: { + links: { + tr: '#high-level-api', + dev: '#high-level-api', + mdnGroup: 'DOM', + }, + tests: ['navigate'], + interface: function() { + return window; + } + }, + Element: { + links: { + tr: '#low-level-api', + dev: '#low-level-api', + mdnGroup: 'DOM', + }, + tests: ['getSpatialNavigationContainer', 'focusableAreas', 'spatialNavigationSearch'], + interface: function() { + return document.body; + } + }, + NavigationEvent: { + links: { + tr: '#events-navigationevent', + dev: '#events-navigationevent', + mdnGroup: 'DOM', + }, + tests: ['NavigationEvent'], + }, + }, }; diff --git a/tests/css-nesting-1.js b/tests/css-nesting-1.js new file mode 100644 index 00000000..15a5d559 --- /dev/null +++ b/tests/css-nesting-1.js @@ -0,0 +1,21 @@ +export default { + title: 'CSS Nesting Module', + links: { + tr: 'css-nesting-1', + dev: 'css-nesting-1', + }, + status: { + stability: 'experimental', + }, + interfaces: { + CSSStyleRule: { + links: { + tr: '#cssom-style', + dev: '#cssom-style', + mdnGroup: 'DOM', + }, + tests: ['cssRules', 'insertRule', 'deleteRule'], + required: 'div { }', + }, + }, +}; diff --git a/tests/css-pseudo-4.js b/tests/css-pseudo-4.js index f3301785..392eb4e0 100644 --- a/tests/css-pseudo-4.js +++ b/tests/css-pseudo-4.js @@ -58,4 +58,28 @@ export default { tests: ['::placeholder'], }, }, + interfaces: { + Element: { + links: { + tr: '#window-interface', + dev: '#window-interface', + mdnGroup: 'DOM', + }, + tests: ['pseudo'], + interface: function() { + return document.body; + }, + }, + CSSPseudoElement: { + links: { + tr: '#CSSPseudoElement-interface', + dev: '#CSSPseudoElement-interface', + mdnGroup: 'DOM', + }, + tests: ['type', 'element', 'parent', 'pseudo'], + interface: function() { + return document.body.pseudo('::selection'); + }, + }, + }, }; diff --git a/tests/css-regions-1.js b/tests/css-regions-1.js index 7b692305..1e4d2511 100644 --- a/tests/css-regions-1.js +++ b/tests/css-regions-1.js @@ -30,4 +30,64 @@ export default { tests: ['auto', 'break'], }, }, + interfaces: { + Document: { + links: { + tr: '#the-namedflow-interface', + dev: '#the-namedflow-interface', + mdnGroup: 'DOM', + }, + tests: ['namedFlows'], + interface: function() { + return document; + } + }, + Element: { + links: { + tr: '#the-region-interface', + dev: '#the-region-interface', + mdnGroup: 'DOM', + }, + tests: ['regionOverset', 'getRegionFlowRanges'], + interface: function() { + return document.body; + } + }, + NamedFlowMap: { + links: { + dev: '#namedflowmap', + mdnGroup: 'DOM', + }, + tests: [ + 'has', + 'get', + 'set', + 'keys', + 'values', + 'entries', + 'forEach', + ], + interface: function() { + return document.namedFlows; + } + }, + NamedFlow: { + links: { + dev: '#namedflow', + mdnGroup: 'DOM', + }, + tests: [ + 'name', + 'overset', + 'getRegions', + 'firstEmptyRegionIndex', + 'getContent', + 'getRegionsByContent', + ], + required: 'div { flow-from: --named-flow; }', + interface: function() { + return document.namedFlows.get('--named-flow'); + } + }, + }, }; diff --git a/tests/css-shadow-parts-1.js b/tests/css-shadow-parts-1.js index a5a1db50..63d06c8c 100644 --- a/tests/css-shadow-parts-1.js +++ b/tests/css-shadow-parts-1.js @@ -16,4 +16,17 @@ export default { tests: ['::part(label)'], }, }, + interfaces: { + Element: { + links: { + tr: '#idl', + dev: '#idl', + mdnGroup: 'DOM', + }, + tests: ['part'], + interface: function() { + return document.body; + }, + }, + }, }; diff --git a/tests/css-transitions-1.js b/tests/css-transitions-1.js index f73bd6ef..30702d6b 100644 --- a/tests/css-transitions-1.js +++ b/tests/css-transitions-1.js @@ -56,4 +56,25 @@ export default { tests: '1s 2s width linear', }, }, + interfaces: { + TransitionEvent: { + links: { + tr: '#interface-transitionevent', + dev: '#interface-transitionevent', + mdnGroup: 'DOM', + }, + tests: ['TransitionEvent'], + }, + Element: { + links: { + tr: '#interface-dom', + dev: '#interface-dom', + mdnGroup: 'DOM', + }, + tests: ['ontransitionstart', 'ontransitionrun', 'ontransitionend', 'ontransitioncancel'], + interface: function() { + return document.body; + }, + }, + }, }; diff --git a/tests/css-transitions-2.js b/tests/css-transitions-2.js new file mode 100644 index 00000000..f57f6741 --- /dev/null +++ b/tests/css-transitions-2.js @@ -0,0 +1,51 @@ +export default { + title: 'CSS Transitions 2', + links: { + dev: 'css-transitions-2', + }, + status: { + stability: 'experimental', + }, + interfaces: { + CSSTransition: { + links: { + dev: '#the-CSSTransition-interface', + mdnGroup: 'DOM', + }, + tests: [ + 'transitionProperty', + 'id', + 'effect', + 'timeline', + 'startTime', + 'currentTime', + 'playbackRate', + 'playState', + 'replaceState', + 'pending', + 'ready', + 'finished', + 'onfinish', + 'oncancel', + 'onremove', + 'cancel', + 'finish', + 'play', + 'pause', + 'updatePlaybackRate', + 'reverse', + 'persist', + 'commitStyles', + ], + interface: function() { + var div = document.createElement('div'); + document.body.append(div); + div.style.transition = 'opacity 100s'; + div.style.opacity = '0'; + getComputedStyle(div).opacity; + div.style.opacity = '1'; + return div.getAnimations()[0]; + } + }, + }, +}; diff --git a/tests/css-view-transitions-1.js b/tests/css-view-transitions-1.js index 3a89aa98..f81f0e60 100644 --- a/tests/css-view-transitions-1.js +++ b/tests/css-view-transitions-1.js @@ -65,4 +65,28 @@ export default { ], }, }, + interfaces: { + Document: { + links: { + tr: '#additions-to-document-api', + dev: '#additions-to-document-api', + mdnGroup: 'DOM', + }, + tests: ['startViewTransition'], + interface: function() { + return document; + }, + }, + ViewTransition: { + links: { + tr: '#the-domtransition-interface', + dev: '#the-domtransition-interface', + mdnGroup: 'DOM', + }, + tests: ['updateCallbackDone', 'ready', 'finished', 'skipTransition'], + interface: function() { + return document.startViewTransition(); + }, + }, + }, }; diff --git a/tests/cssom-1.js b/tests/cssom-1.js new file mode 100644 index 00000000..b53cfef6 --- /dev/null +++ b/tests/cssom-1.js @@ -0,0 +1,251 @@ +export default { + title: 'CSS Object Model (CSSOM)', + links: { + tr: 'cssom-1', + dev: 'cssom-1', + }, + status: { + stability: 'experimental', + }, + interfaces: { + CSS: { + links: { + tr: '#namespacedef-css', + dev: '#namespacedef-css', + mdnGroup: 'DOM', + }, + tests: ['escape'], + interface: function() { + return CSS; + } + }, + StyleSheet: { + links: { + tr: '#the-stylesheet-interface', + dev: '#the-stylesheet-interface', + mdnGroup: 'DOM', + }, + tests: [ + 'type', + 'href', + 'ownerNode', + 'parentStyleSheet', + 'title', + 'media', + 'disabled', + ], + interface: function(style) { + return style.sheet; + } + }, + CSSStyleSheet: { + links: { + tr: '#the-cssstylesheet-interface', + dev: '#the-cssstylesheet-interface', + mdnGroup: 'DOM', + }, + tests: [ + 'type', + 'href', + 'title', + 'media', + 'ownerNode', + 'parentStyleSheet', + 'title', + 'media', + 'disabled', + 'ownerRule', + 'cssRules', + 'insertRule', + 'deleteRule', + 'rules', + 'addRule', + 'removeRule', + 'replace', + 'replaceSync', + ], + interface: function(style) { + return style.sheet; + } + }, + StyleSheetList: { + links: { + tr: '#the-stylesheetlist-interface', + dev: '#the-stylesheetlist-interface', + mdnGroup: 'DOM', + }, + tests: ['item', 'length'], + interface: function() { + return document.styleSheets; + } + }, + Document: { + links: { + tr: '#extensions-to-the-document-or-shadow-root-interface', + dev: '#extensions-to-the-document-or-shadow-root-interface', + mdnGroup: 'DOM', + }, + tests: ['styleSheets', 'adoptedStyleSheets'], + interface: function() { + return document; + }, + }, + Element: { + links: { + tr: '#the-linkstyle-interface', + dev: '#the-linkstyle-interface', + mdnGroup: 'DOM', + }, + tests: ['sheet', 'style'], + interface: function(style) { + return style; + }, + }, + Window: { + links: { + tr: '#extensions-to-the-window-interface', + dev: '#extensions-to-the-window-interface', + mdnGroup: 'DOM', + }, + tests: ['getComputedStyle'], + interface: function() { + return window; + }, + }, + MediaList: { + links: { + tr: '#the-medialist-interface', + dev: '#the-medialist-interface', + mdnGroup: 'DOM', + }, + tests: ['mediaText', 'length', 'item', 'appendMedium', 'deleteMedium'], + interface: function(style) { + return style.sheet.media; + } + }, + CSSRuleList: { + links: { + tr: '#the-cssrulelist-interface', + dev: '#the-cssrulelist-interface', + mdnGroup: 'DOM', + }, + tests: ['item', 'length'], + interface: function(style) { + return style.sheet.cssRules; + } + }, + CSSRule: { + links: { + tr: '#the-cssrule-interface', + dev: '#the-cssrule-interface', + mdnGroup: 'DOM', + }, + tests: [ + 'cssText', + 'parentRule', + 'parentStyleSheet', + 'type', + 'STYLE_RULE', + 'CHARSET_RULE', + 'IMPORT_RULE', + 'MEDIA_RULE', + 'FONT_FACE_RULE', + 'PAGE_RULE', + 'MARGIN_RULE', + 'NAMESPACE_RULE', + ], + required: 'div { }', + interface: function(style) { + return style.sheet.cssRules[0]; + } + }, + CSSStyleRule: { + links: { + tr: '#the-cssstylerule-interface', + dev: '#the-cssstylerule-interface', + mdnGroup: 'DOM', + }, + tests: ['selectorText', 'style', 'cssText', 'parentRule', 'parentStyleSheet'], + required: 'div { }', + }, + /* Doesn't currently work because style sheet is only available once imported + CSSImportRule: { + links: { + tr: '#the-cssimportrule-interface', + dev: '#the-cssimportrule-interface', + mdnGroup: 'DOM', + }, + tests: ['href', 'media', 'styleSheet'], + required: '@import url("foo.css");', + }, + */ + CSSGroupingRule: { + links: { + tr: '#the-cssgroupingrule-interface', + dev: '#the-cssgroupingrule-interface', + mdnGroup: 'DOM', + }, + tests: [ + 'cssRules', + 'insertRule', + 'deleteRule', + 'cssText', + 'parentRule', + 'parentStyleSheet', + ], + required: '@media { }', + interface: function(style) { + return style.sheet.cssRules[0]; + }, + }, + CSSPageRule: { + links: { + tr: '#the-csspagerule-interface', + dev: '#the-csspagerule-interface', + mdnGroup: 'DOM', + }, + tests: ['selectorText', 'style', 'cssRules', 'insertRule', 'deleteRule'], + required: '@page { }', + }, + CSSMarginRule: { + links: { + tr: '#the-cssmarginrule-interface', + dev: '#the-cssmarginrule-interface', + mdnGroup: 'DOM', + }, + tests: ['selectorText', 'style', 'cssText', 'parentRule', 'parentStyleSheet'], + required: '@page { @top-left { content: "foo"; } }', + }, + CSSNamespaceRule: { + links: { + tr: '#the-cssnamespacerule-interface', + dev: '#the-cssnamespacerule-interface', + mdnGroup: 'DOM', + }, + tests: ['namespaceURI', 'prefix', 'cssText', 'parentRule', 'parentStyleSheet'], + required: '@namespace svg url("http://www.w3.org/2000/svg");', + }, + CSSStyleDeclaration: { + links: { + tr: '#the-cssstyledeclaration-interface', + dev: '#the-cssstyledeclaration-interface', + mdnGroup: 'DOM', + }, + tests: [ + 'cssText', + 'length', + 'item', + 'getPropertyValue', + 'getPropertyPriority', + 'setProperty', + 'removeProperty', + 'parentRule', + 'cssFloat' + ], + required: 'div { color: red; }', + interface: function(style) { + return style.sheet.cssRules[0].style; + } + }, + }, +}; diff --git a/tests/cssom-view-1.js b/tests/cssom-view-1.js index f9995817..042c3cb2 100644 --- a/tests/cssom-view-1.js +++ b/tests/cssom-view-1.js @@ -16,4 +16,260 @@ export default { tests: ['auto', 'smooth '], }, }, + interfaces: { + Window: { + links: { + tr: '#extensions-to-the-window-interface', + dev: '#extensions-to-the-window-interface', + mdnGroup: 'DOM', + }, + tests: [ + 'matchMedia', + 'screen', + 'visualViewport', + 'moveTo', + 'moveBy', + 'resizeTo', + 'resizeBy', + 'innerWidth', + 'innerHeight', + 'scrollX', + 'pageXOffset', + 'scrollY', + 'pageYOffset', + 'scroll', + 'scrollTo', + 'scrollBy', + 'screenX', + 'screenLeft', + 'screenY', + 'screenTop', + 'outerWidth', + 'outerHeight', + 'devicePixelRatio', + ], + interface: function() { + return window; + }, + }, + MediaQueryList: { + links: { + tr: '#the-mediaquerylist-interface', + dev: '#the-mediaquerylist-interface', + mdnGroup: 'DOM', + }, + tests: ['media', 'matches', 'addListener', 'removeListener', 'onchange'], + interface: function() { + return window.matchMedia(''); + }, + }, + MediaQueryListEvent: { + links: { + tr: '#mediaquerylistevent', + dev: '#mediaquerylistevent', + mdnGroup: 'DOM', + }, + tests: ['matches'], + interface: function() { + return new MediaQueryListEvent('change', {matches: true}); + }, + }, + Screen: { + links: { + tr: '#the-screen-interface', + dev: '#the-screen-interface', + mdnGroup: 'DOM', + }, + tests: [ + 'availWidth', + 'availHeight', + 'width', + 'height', + 'colorDepth', + 'pixelDepth', + ], + interface: function() { + return window.screen; + }, + }, + Document: { + links: { + tr: '#extensions-to-the-document-interface', + dev: '#extensions-to-the-document-interface', + mdnGroup: 'DOM', + }, + tests: [ + 'elementFromPoint', + 'elementsFromPoint', + 'caretPositionFromPoint', + 'scrollingElement', + 'getBoxQuads', + 'convertQuadFromNode', + 'convertRectFromNode', + 'convertPointFromNode', + ], + interface: function() { + return document; + }, + }, + CaretPosition: { + links: { + tr: '#caretposition', + dev: '#caretposition', + mdnGroup: 'DOM', + }, + tests: ['offsetNode', 'offset', 'getClientRect'], + interface: function() { + return document.caretPositionFromPoint(0, 0); + }, + }, + Element: { + links: { + tr: '#extension-to-the-element-interface', + dev: '#extension-to-the-element-interface', + mdnGroup: 'DOM', + }, + tests: [ + 'getClientRects', + 'getBoundingClientRect', + 'checkVisibility', + 'scrollIntoView', + 'scroll', + 'scrollTo', + 'scrollBy', + 'scrollTop', + 'scrollLeft', + 'scrollWidth', + 'scrollHeight', + 'clientTop', + 'clientLeft', + 'clientWidth', + 'clientHeight', + 'getBoxQuads', + 'convertQuadFromNode', + 'convertRectFromNode', + 'convertPointFromNode', + ], + interface: function() { + return document.createElement('div'); + }, + }, + HTMLElement: { + links: { + tr: '#extensions-to-the-htmlelement-interface', + dev: '#extensions-to-the-htmlelement-interface', + mdnGroup: 'DOM', + }, + tests: [ + 'offsetParent', + 'offsetTop', + 'offsetLeft', + 'offsetWidth', + 'offsetHeight', + ], + interface: function() { + return document.createElement('div'); + }, + }, + HTMLImageElement: { + links: { + tr: '#extensions-to-the-htmlimageelement-interface', + dev: '#extensions-to-the-htmlimageelement-interface', + mdnGroup: 'DOM', + }, + tests: ['x', 'y'], + interface: function() { + return document.createElement('img'); + }, + }, + Range: { + links: { + tr: '#extensions-to-the-range-interface', + dev: '#extensions-to-the-range-interface', + mdnGroup: 'DOM', + }, + tests: ['getClientRects', 'getBoundingClientRect'], + interface: function() { + return document.createRange(); + }, + }, + MouseEvent: { + links: { + tr: '#extensions-to-the-mouseevent-interface', + dev: '#extensions-to-the-mouseevent-interface', + mdnGroup: 'DOM', + }, + tests: [ + 'screenX', + 'screenY', + 'pageX', + 'pageY', + 'clientX', + 'clientY', + 'x', + 'y', + 'offsetX', + 'offsetY', + ], + interface: function() { + return new MouseEvent('click', {screenX: 0, screenY: 0, clientX: 0, clientY: 0}); + }, + }, + Text: { + links: { + tr: '#geometryutils', + dev: '#geometryutils', + mdnGroup: 'DOM', + }, + tests: [ + 'getBoxQuads', + 'convertQuadFromNode', + 'convertRectFromNode', + 'convertPointFromNode', + ], + interface: function() { + return document.createTextNode(''); + }, + }, + CSSPseudoElement: { + links: { + tr: '#geometryutils', + dev: '#geometryutils', + mdnGroup: 'DOM', + }, + tests: [ + 'getBoxQuads', + 'convertQuadFromNode', + 'convertRectFromNode', + 'convertPointFromNode', + ], + interface: function() { + return document.createTextNode(''); + }, + }, + VisualViewport: { + links: { + dev: '#the-visualviewport-interface', + mdnGroup: 'DOM', + }, + tests: [ + 'offsetLeft', + 'offsetTop', + 'pageLeft', + 'pageTop', + 'width', + 'height', + 'scale', + 'onresize', + 'onscroll', + 'onscrollend', + 'addEventListener', + 'removeEventListener', + 'dispatchEvent', + ], + interface: function() { + return window.visualViewport; + }, + }, + }, }; diff --git a/tests/resize-observer-1.js b/tests/resize-observer-1.js new file mode 100644 index 00000000..09b9fa5f --- /dev/null +++ b/tests/resize-observer-1.js @@ -0,0 +1,39 @@ +export default { + title: 'Resize Observer', + links: { + tr: 'resize-observer-1', + dev: 'resize-observer-1', + }, + status: { + stability: 'experimental', + }, + interfaces: { + ResizeObserver: { + links: { + tr: '#api', + dev: '#api', + mdnGroup: 'DOM', + }, + tests: ['observe', 'unobserve', 'disconnect'], + interface: function() { + return new ResizeObserver(function() {}); + } + }, + ResizeObserverEntry: { + links: { + tr: '#resize-observer-entry-interface', + dev: '#resize-observer-entry-interface', + mdnGroup: 'DOM', + }, + tests: ['ResizeObserverEntry'], + }, + ResizeObserverSize: { + links: { + tr: '#resizeobserversize', + dev: '#resizeobserversize', + mdnGroup: 'DOM', + }, + tests: ['ResizeObserverEntry'], + }, + }, +}; diff --git a/tests/scroll-animations-1.js b/tests/scroll-animations-1.js index fdb6fdb8..376686d1 100644 --- a/tests/scroll-animations-1.js +++ b/tests/scroll-animations-1.js @@ -56,4 +56,42 @@ export default { ], }, }, + interfaces: { + ScrollTimeline: { + links: { + tr: '#scrolltimeline', + dev: '#scrolltimeline', + mdnGroup: 'DOM', + }, + tests: ['source', 'axis'], + interface: function() { + return new ScrollTimeline({ + source: document.scrollingElement, + }); + } + }, + ViewTimeline: { + links: { + tr: '#viewtimeline', + dev: '#viewtimeline', + mdnGroup: 'DOM', + }, + tests: ['subject', 'startOffset', 'endOffset'], + interface: function() { + return new ViewTimeline({ + source: document.scrollingElement, + }); + } + }, + AnimationTimeline: { + links: { + dev: '#named-range-get-time', + mdnGroup: 'DOM', + }, + tests: ['getCurrentTime'], + interface: function() { + return document.timeline; + }, + }, + }, }; diff --git a/tests/web-animations-1.js b/tests/web-animations-1.js new file mode 100644 index 00000000..f36bac3a --- /dev/null +++ b/tests/web-animations-1.js @@ -0,0 +1,160 @@ +export default { + title: 'Web Animations', + links: { + tr: 'web-animations-1', + dev: 'web-animations-1', + }, + status: { + stability: 'experimental', + }, + interfaces: { + Animation: { + links: { + tr: '#the-animation-interface', + dev: '#the-animation-interface', + mdnGroup: 'DOM', + }, + tests: [ + 'id', + 'effect', + 'timeline', + 'startTime', + 'currentTime', + 'playbackRate', + 'playState', + 'replaceState', + 'pending', + 'ready', + 'finished', + 'onfinish', + 'oncancel', + 'onremove', + 'cancel', + 'finish', + 'play', + 'pause', + 'updatePlaybackRate', + 'reverse', + 'persist', + 'commitStyles', + 'addEventListener', + 'removeEventListener', + 'dispatchEvent', + ], + interface: function() { + var div = document.createElement('div'); + var keyFrames = new KeyframeEffect( + div, + [ + { transform: 'translateY(0%)' }, + { transform: 'translateY(100%)' } + ], + { duration: 3000, fill: 'forwards' } + ) + return new Animation(keyFrames, document.timeline); + } + }, + AnimationTimeline: { + links: { + tr: '#the-animationtimeline-interface', + dev: '#the-animationtimeline-interface', + mdnGroup: 'DOM', + }, + tests: ['currentTime'], + interface: function() { + return document.timeline; + } + }, + AnimationEffect: { + links: { + tr: '#animationeffect', + dev: '#animationeffect', + mdnGroup: 'DOM', + }, + tests: ['getTiming', 'getComputedTiming', 'updateTiming'], + interface: function() { + var div = document.createElement('div'); + return new KeyframeEffect( + div, + [ + { transform: "translateY(0%)" }, + { transform: "translateY(100%)" }, + ], + { duration: 3000, fill: "forwards" } + ); + } + }, + KeyframeEffect: { + links: { + tr: '#the-keyframeeffect-interface', + dev: '#the-keyframeeffect-interface', + mdnGroup: 'DOM', + }, + tests: [ + 'target', + 'pseudoElement', + 'composite', + 'getKeyframes', + 'setKeyframes', + 'getTiming', + 'getComputedTiming', + 'updateTiming', + ], + interface: function() { + var div = document.createElement('div'); + return new KeyframeEffect( + div, + [ + { transform: "translateY(0%)" }, + { transform: "translateY(100%)" }, + ], + { duration: 3000, fill: "forwards" } + ); + } + }, + Element: { + links: { + tr: '#the-animatable-interface-mixin', + dev: '#the-animatable-interface-mixin', + mdnGroup: 'DOM', + }, + tests: ['animate', 'getAnimations'], + interface: function() { + return document.body; + } + }, + Document: { + links: { + tr: '#extensions-to-the-documentorshadowroot-interface-mixin', + dev: '#extensions-to-the-documentorshadowroot-interface-mixin', + mdnGroup: 'DOM', + }, + tests: ['timeline', 'getAnimations'], + interface: function() { + return document; + } + }, + DocumentTimeline: { + links: { + tr: '#the-documenttimeline-interface', + dev: '#the-documenttimeline-interface', + mdnGroup: 'DOM', + }, + tests: ['currentTime'], + interface: function() { + return document.timeline; + } + }, + AnimationPlaybackEvent: { + links: { + tr: '#the-animationplaybackevent-interface', + dev: '#the-animationplaybackevent-interface', + mdnGroup: 'DOM', + }, + tests: ['currentTime', 'timelineTime'], + interface: function() { + return new AnimationPlaybackEvent('finish'); + }, + }, + }, +}; diff --git a/tests/web-animations-2.js b/tests/web-animations-2.js new file mode 100644 index 00000000..ad1cdb5e --- /dev/null +++ b/tests/web-animations-2.js @@ -0,0 +1,170 @@ +export default { + title: 'Web Animations Level 2', + links: { + tr: 'web-animations-2', + dev: 'web-animations-2', + }, + status: { + stability: 'experimental', + }, + interfaces: { + AnimationTimeline: { + links: { + tr: '#the-animationtimeline-interface', + dev: '#the-animationtimeline-interface', + mdnGroup: 'DOM', + }, + tests: ['duration', 'play'], + interface: function() { + return document.timeline; + } + }, + AnimationEffect: { + links: { + tr: '#the-animationeffect-interface', + dev: '#the-animationeffect-interface', + mdnGroup: 'DOM', + }, + tests: [ + 'parent', + 'previousSibling', + 'nextSibling', + 'before', + 'after', + 'replace', + 'remove' + ], + interface: function() { + var div = document.createElement('div'); + return new KeyframeEffect( + div, + [ + { transform: "translateY(0%)" }, + { transform: "translateY(100%)" }, + ], + { duration: 3000, fill: "forwards" } + ); + } + }, + GroupEffect: { + links: { + tr: '#the-groupeffect-interface', + dev: '#the-groupeffect-interface', + mdnGroup: 'DOM', + }, + tests: [ + 'children', + 'firstChild', + 'lastChild', + 'clone', + 'prepend', + 'append', + ], + interface: function() { + var div = document.createElement('div'); + return new GroupEffect( + new KeyframeEffect( + div, + [ + { transform: "translateY(0%)" }, + { transform: "translateY(100%)" }, + ], + { duration: 3000, fill: "forwards" } + ), + new KeyframeEffect( + div, + [ + { opacity: 0 }, + { opacity: 1 }, + ], + { duration: 3000, fill: "forwards" } + ), + ); + } + }, + AnimationNodeList: { + links: { + tr: '#the-animationnodelist-interface', + dev: '#the-animationnodelist-interface', + mdnGroup: 'DOM', + }, + tests: ['length', 'item'], + interface: function() { + var div = document.createElement('div'); + return new GroupEffect( + new KeyframeEffect( + div, + [ + { transform: "translateY(0%)" }, + { transform: "translateY(100%)" }, + ], + { duration: 3000, fill: "forwards" } + ), + new KeyframeEffect( + div, + [ + { opacity: 0 }, + { opacity: 1 }, + ], + { duration: 3000, fill: "forwards" } + ), + ).children; + } + }, + SequenceEffect: { + links: { + tr: '#the-sequenceeffect-interface', + dev: '#the-sequenceeffect-interface', + mdnGroup: 'DOM', + }, + tests: [ + 'children', + 'firstChild', + 'lastChild', + 'clone', + 'prepend', + 'append', + ], + interface: function() { + var div = document.createElement('div'); + return new SequenceEffect( + new KeyframeEffect( + div, + [ + { transform: "translateY(0%)" }, + { transform: "translateY(100%)" }, + ], + { duration: 3000, fill: "forwards" } + ), + new KeyframeEffect( + div, + [ + { opacity: 0 }, + { opacity: 1 }, + ], + { duration: 3000, fill: "forwards" } + ), + ); + } + }, + KeyframeEffect: { + links: { + tr: '#the-keyframeeffect-interface', + dev: '#the-keyframeeffect-interface', + mdnGroup: 'DOM', + }, + tests: ['iteratonComposite'], + interface: function() { + var div = document.createElement('div'); + return new KeyframeEffect( + div, + [ + { transform: "translateY(0%)" }, + { transform: "translateY(100%)" }, + ], + { duration: 3000, fill: "forwards" } + ); + } + }, + }, +}; From 537290913c4c7b42108333962158070a319232a2 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Fri, 10 Mar 2023 08:19:42 +0100 Subject: [PATCH 433/668] Mentioned and linked to contributors --- index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.html b/index.html index 83aea7c5..55e69431 100644 --- a/index.html +++ b/index.html @@ -69,7 +69,7 @@

        Specs tested:

        Lea Verou was here

        Results - ✿ Handcrafted by Lea Verou + ✿ Handcrafted by Lea Verou and friendsDonate

        From 355c882bf58f49f4430d3f39a24286bc3d9a5de8 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Thu, 16 Mar 2023 21:52:24 +0100 Subject: [PATCH 434/668] Escaped arrow brackets in test outputs --- csstest.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/csstest.js b/csstest.js index 8d6726cf..f7c848a6 100644 --- a/csstest.js +++ b/csstest.js @@ -289,7 +289,7 @@ Test.prototype = { $.create({ tag: 'li', innerHTML: - test + + test.replace(//g, '>') + (prefix ? '' + prefix + '' : '') + (note ? '' + note + '' : ''), className: passclass({ From b82e44f4286634ff78241a00b1b230434ab26084 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Thu, 16 Mar 2023 21:53:11 +0100 Subject: [PATCH 435/668] Added tests for different CSS Houdini APIs --- tests.js | 6 + tests/css-animation-worklet-1.js | 47 ++ tests/css-layout-api-1.js | 22 + tests/css-paint-api-1.js | 26 +- tests/css-properties-values-api-1.js | 85 ++++ tests/css-typed-om-1.js | 641 +++++++++++++++++++++++++++ 6 files changed, 824 insertions(+), 3 deletions(-) create mode 100644 tests/css-animation-worklet-1.js create mode 100644 tests/css-properties-values-api-1.js create mode 100644 tests/css-typed-om-1.js diff --git a/tests.js b/tests.js index dcf5defa..bc75bf3f 100644 --- a/tests.js +++ b/tests.js @@ -1,5 +1,6 @@ import compat from './tests/compat.js'; import cssAlign3 from './tests/css-align-3.js'; +import cssAnimationWorklet1 from './tests/css-animation-worklet-1.js'; import cssAnimations1 from './tests/css-animations-1.js'; import cssAnimations2 from './tests/css-animations-2.js'; import cssBackgrounds3 from './tests/css-backgrounds-3.js'; @@ -63,6 +64,7 @@ import cssOverscroll1 from './tests/css-overscroll-1.js'; import cssPage3 from './tests/css-page-3.js'; import cssPaintApi1 from './tests/css-paint-api-1.js'; import cssPosition3 from './tests/css-position-3.js'; +import cssPropertiesValuesApi1 from './tests/css-properties-values-api-1.js'; import cssPseudo4 from './tests/css-pseudo-4.js'; import cssRegions1 from './tests/css-regions-1.js'; import cssRhythmic from './tests/css-rhythmic-1.js'; @@ -86,6 +88,7 @@ import cssTransforms1 from './tests/css-transforms-1.js'; import cssTransforms2 from './tests/css-transforms-2.js'; import cssTransitions1 from './tests/css-transitions-1.js'; import cssTransitions2 from './tests/css-transitions-2.js'; +import cssTypedOm1 from './tests/css-typed-om-1.js'; import cssUi3 from './tests/css-ui-3.js'; import cssUi4 from './tests/css-ui-4.js'; import cssValues3 from './tests/css-values-3.js'; @@ -157,6 +160,7 @@ export default { 'css-align-3': cssAlign3, 'css-animation-1': cssAnimations1, 'css-animation-2': cssAnimations2, + 'css-animation-worklet-1': cssAnimationWorklet1, 'css-backgrounds-3': cssBackgrounds3, 'css-backgrounds-4': cssBackgrounds4, 'css-box-3': cssBox3, @@ -218,6 +222,7 @@ export default { 'css-page-3': cssPage3, 'css-paint-api-1': cssPaintApi1, 'css-position-3': cssPosition3, + 'css-properties-values-api-1': cssPropertiesValuesApi1, 'css-pseudo-4': cssPseudo4, 'css-regions-1': cssRegions1, 'css-rhythmic': cssRhythmic, @@ -241,6 +246,7 @@ export default { 'css-transforms-2': cssTransforms2, 'css-transitions-1': cssTransitions1, 'css-transitions-2': cssTransitions2, + 'css-typed-om-1': cssTypedOm1, 'css-ui-3': cssUi3, 'css-ui-4': cssUi4, 'css-values-3': cssValues3, diff --git a/tests/css-animation-worklet-1.js b/tests/css-animation-worklet-1.js new file mode 100644 index 00000000..4b52d03b --- /dev/null +++ b/tests/css-animation-worklet-1.js @@ -0,0 +1,47 @@ +export default { + title: 'CSS Animation Worklet Level 1', + links: { + tr: 'css-animation-worklet-1', + dev: 'css-animation-worklet-1', + devtype: 'houdini', + }, + status: { + stability: 'experimental', + }, + interfaces: { + CSS: { + links: { + tr: '#animation-worklet-desc', + dev: '#animation-worklet-desc', + }, + tests: ['animationWorklet'], + interface: function() { + return CSS; + }, + }, + Worklet: { + links: { + tr: '#animation-worklet-desc', + dev: '#animation-worklet-desc', + }, + tests: ['addModule'], + interface: function() { + return CSS.animationWorklet; + }, + }, + WorkletAnimation: { + links: { + tr: '#worklet-animation-interface', + dev: '#worklet-animation-interface', + }, + tests: ['animatorName'], + interface: function() { + return new WorkletAnimation('Animator', new KeyframeEffect( + document.body, + {transform: ['translateX(0)', 'translateX(50vw)']}, + {duration: 1000} + )); + }, + }, + }, +}; diff --git a/tests/css-layout-api-1.js b/tests/css-layout-api-1.js index c3098bfd..910c2200 100644 --- a/tests/css-layout-api-1.js +++ b/tests/css-layout-api-1.js @@ -17,4 +17,26 @@ export default { tests: 'layout(foo)', }, }, + interfaces: { + CSS: { + links: { + tr: '#layout-worklet', + dev: '#layout-worklet', + }, + tests: ['layoutWorklet'], + interface: function() { + return CSS; + }, + }, + Worklet: { + links: { + tr: '#layout-worklet', + dev: '#layout-worklet', + }, + tests: ['addModule'], + interface: function() { + return CSS.layoutWorklet; + }, + }, + }, }; diff --git a/tests/css-paint-api-1.js b/tests/css-paint-api-1.js index 34a57af4..dba53834 100644 --- a/tests/css-paint-api-1.js +++ b/tests/css-paint-api-1.js @@ -17,10 +17,30 @@ export default { }, tests: [ 'paint(company-logo)', - 'paint(chat-bubble, blue)', - 'paint(failing-argument-syntax, 1px, 2px)', - 'paint(arc, purple, 0.4turn, 0.8turn, 40px, 15px)', + 'paint(simple, blue)', ], }, }, + interfaces: { + CSS: { + links: { + tr: '#paint-worklet', + dev: '#paint-worklet', + }, + tests: ['paintWorklet'], + interface: function() { + return CSS; + }, + }, + Worklet: { + links: { + tr: '#paint-worklet', + dev: '#paint-worklet', + }, + tests: ['addModule'], + interface: function() { + return CSS.paintWorklet; + }, + }, + } }; diff --git a/tests/css-properties-values-api-1.js b/tests/css-properties-values-api-1.js new file mode 100644 index 00000000..51bebafc --- /dev/null +++ b/tests/css-properties-values-api-1.js @@ -0,0 +1,85 @@ +export default { + title: 'CSS Properties and Values API Level 1', + links: { + tr: 'css-properties-values-api-1', + dev: 'css-properties-values-api-1', + }, + status: { + stability: 'experimental', + }, + descriptors: { + '@property --foo/syntax': { + links: { + tr: '#the-syntax-descriptor', + dev: '#the-syntax-descriptor', + }, + required: { + '*': { + descriptor: 'inherits: false', + }, + }, + tests: [ + "'x | y'", + "''", + ], + }, + '@property --foo/inherits': { + links: { + tr: '#the-inherits-descriptor', + dev: '#the-inherits-descriptor', + }, + required: { + '*': { + descriptor: "syntax: ''", + }, + }, + tests: ['true', 'false'], + }, + '@property --foo/initial-value': { + links: { + tr: '#the-initial-value-descriptor', + dev: '#the-initial-value-descriptor', + }, + required: { + '*': { + descriptor: "syntax: '' inherits: true", + }, + }, + tests: ['blue', '#00f', 'rgb(0, 0, 255)'], + }, + }, + '@rules': { + '@property': { + links: { + tr: '#at-property-rule', + dev: '#at-property-rule', + }, + tests: "@property --cool-color {\n syntax: '';\n inherits: true;\n}", + }, + }, + interfaces: { + CSS: { + links: { + tr: '#registering-custom-properties', + dev: '#registering-custom-properties', + mdnGroup: 'DOM', + }, + tests: ['registerProperty'], + interface: function() { + return CSS; + }, + }, + CSSPropertyRule: { + links: { + tr: '#the-css-property-rule-interface', + dev: '#the-css-property-rule-interface', + mdnGroup: 'DOM', + }, + tests: ['name', 'syntax', 'inherits', 'initialValue'], + required: "@property --foo { syntax: ''; inherits: true; initial-value: blue; }", + interface: function(style) { + return style.sheet.cssRules[0]; + }, + }, + }, +}; diff --git a/tests/css-typed-om-1.js b/tests/css-typed-om-1.js new file mode 100644 index 00000000..5b5c32f6 --- /dev/null +++ b/tests/css-typed-om-1.js @@ -0,0 +1,641 @@ +export default { + title: 'CSS Typed OM Level 1', + links: { + dev: 'css-typed-om-1', + devtype: 'houdini', + }, + status: { + stability: 'experimental', + }, + interfaces: { + Element: { + links: { + dev: '#computed-stylepropertymapreadonly-objects', + mdnGroup: 'DOM', + }, + tests: ['computedStyleMap'], + interface: function() { + return document.body; + }, + }, + StylePropertyMapReadOnly: { + links: { + dev: '#the-stylepropertymap', + mdnGroup: 'DOM', + }, + tests: [ + 'get', + 'getAll', + 'has', + 'size', + ], + interface: function() { + return document.body.computedStyleMap(); + }, + }, + StylePropertyMap: { + links: { + dev: '#the-stylepropertymap', + mdnGroup: 'DOM', + }, + tests: [ + 'get', + 'getAll', + 'has', + 'size', + 'set', + 'append', + 'delete', + 'clear', + ], + interface: function() { + return document.body.attributeStyleMap; + }, + }, + CSSStyleValue: { + links: { + dev: '#stylevalue-objects', + mdnGroup: 'DOM', + }, + tests: ['parse', 'parseAll'], + interface: function() { + return CSSStyleValue + }, + }, + CSSUnparsedValue: { + links: { + dev: '#unparsedvalue-objects', + mdnGroup: 'DOM', + }, + tests: [ + 'length', + 'entries', + 'keys', + 'values', + 'forEach', + ], + required: ':root { --foo: 1px; }', + interface: function(style) { + return style.sheet.cssRules[0].styleMap.get('--foo'); + }, + }, + CSSVariableReferenceValue: { + links: { + dev: '#unparsedvalue-objects', + mdnGroup: 'DOM', + }, + tests: ['variable', 'fallback'], + required: ':root { --foo: 1px; margin-top: var(--foo, 2px); }', + interface: function(style) { + return style.sheet.cssRules[0].styleMap.get('margin-top')[0]; + }, + }, + CSSKeywordValue: { + links: { + dev: '#keywordvalue-objects', + mdnGroup: 'DOM', + }, + tests: ['value'], + required: ':root { display: grid; }', + interface: function(style) { + return style.sheet.cssRules[0].styleMap.get('display'); + }, + }, + CSSNumericValue: { + links: { + dev: '#numeric-value', + mdnGroup: 'DOM', + }, + tests: [ + 'add', + 'sub', + 'mul', + 'div', + 'min', + 'max', + 'equals', + 'to', + 'toSum', + 'type', + ], + required: ':root { opacity: 1; }', + interface: function(style) { + return style.sheet.cssRules[0].styleMap.get('opacity'); + }, + }, + CSSUnitValue: { + links: { + dev: '#simple-numeric', + mdnGroup: 'DOM', + }, + tests: [ + 'value', + 'unit', + 'add', + 'sub', + 'mul', + 'div', + 'min', + 'max', + 'equals', + 'to', + 'toSum', + 'type', + ], + required: ':root { margin-top: 1px; }', + interface: function(style) { + return style.sheet.cssRules[0].styleMap.get('margin-top'); + }, + }, + CSSMathValue: { + links: { + dev: '#complex-numeric', + mdnGroup: 'DOM', + }, + tests: [ + 'operator', + 'add', + 'sub', + 'mul', + 'div', + 'min', + 'max', + 'equals', + 'to', + 'toSum', + 'type', + ], + required: ':root { margin-top: calc(1vh + 10px); }', + interface: function(style) { + return style.sheet.cssRules[0].styleMap.get('margin-top'); + }, + }, + CSSMathSum: { + links: { + dev: '#cssmathsum', + mdnGroup: 'DOM', + }, + tests: [ + 'values', + 'operator', + 'add', + 'sub', + 'mul', + 'div', + 'min', + 'max', + 'equals', + 'to', + 'toSum', + 'type', + ], + required: ':root { margin-top: calc(1vh + 10px); }', + interface: function(style) { + return style.sheet.cssRules[0].styleMap.get('margin-top'); + }, + }, + CSSMathProduct: { + links: { + dev: '#cssmathproduct', + mdnGroup: 'DOM', + }, + tests: [ + 'values', + 'operator', + 'add', + 'sub', + 'mul', + 'div', + 'min', + 'max', + 'equals', + 'to', + 'toSum', + 'type', + ], + interface: function(style) { + return new CSSMathProduct(2, 3); + }, + }, + CSSMathNegate: { + links: { + dev: '#cssmathnegate', + mdnGroup: 'DOM', + }, + tests: [ + 'value', + 'operator', + 'add', + 'sub', + 'mul', + 'div', + 'min', + 'max', + 'equals', + 'to', + 'toSum', + 'type', + ], + interface: function(style) { + return new CSSMathNegate(3); + }, + }, + CSSMathInvert: { + links: { + dev: '#cssmathinvert', + mdnGroup: 'DOM', + }, + tests: [ + 'value', + 'operator', + 'add', + 'sub', + 'mul', + 'div', + 'min', + 'max', + 'equals', + 'to', + 'toSum', + 'type', + ], + interface: function(style) { + return new CSSMathInvert(3); + }, + }, + CSSMathMin: { + links: { + dev: '#cssmathmin', + mdnGroup: 'DOM', + }, + tests: [ + 'values', + 'operator', + 'add', + 'sub', + 'mul', + 'div', + 'min', + 'max', + 'equals', + 'to', + 'toSum', + 'type', + ], + required: ':root { margin-top: min(20vh, 100px); }', + interface: function(style) { + return style.sheet.cssRules[0].styleMap.get('margin-top'); + }, + }, + CSSMathMax: { + links: { + dev: '#cssmathmax', + mdnGroup: 'DOM', + }, + tests: [ + 'values', + 'operator', + 'add', + 'sub', + 'mul', + 'div', + 'min', + 'max', + 'equals', + 'to', + 'toSum', + 'type', + ], + required: ':root { margin-top: max(20vh, 400px); }', + interface: function(style) { + return style.sheet.cssRules[0].styleMap.get('margin-top'); + }, + }, + CSSMathClamp: { + links: { + dev: '#cssmathclamp', + mdnGroup: 'DOM', + }, + tests: [ + 'lower', + 'value', + 'upper', + 'operator', + 'add', + 'sub', + 'mul', + 'div', + 'min', + 'max', + 'equals', + 'to', + 'toSum', + 'type', + ], + required: ':root { margin-top: clamp(100px, 20vh, 400px); }', + interface: function(style) { + return style.sheet.cssRules[0].styleMap.get('margin-top'); + }, + }, + CSSNumericArray: { + links: { + dev: '##cssnumericarray', + mdnGroup: 'DOM', + }, + tests: ['length'], + required: ':root { margin-top: calc(1% + 10px); }', + interface: function(style) { + return style.sheet.cssRules[0].styleMap.get('margin-top').values; + }, + }, + CSS: { + links: { + dev: '#numeric-factory', + mdnGroup: 'DOM', + }, + tests: [ + 'number', + 'percent', + 'em', + 'ex', + 'ch', + 'ic', + 'rem', + 'lh', + 'rlh', + 'vw', + 'vh', + 'vi', + 'vb', + 'vmin', + 'vmax', + 'svw', + 'svh', + 'svi', + 'svb', + 'svmin', + 'svmax', + 'lvw', + 'lvh', + 'lvi', + 'lvb', + 'lvmin', + 'lvmax', + 'dvw', + 'dvh', + 'dvi', + 'dvb', + 'dvmin', + 'dvmax', + 'cqw', + 'cqh', + 'cqi', + 'cqb', + 'cqmin', + 'cqmax', + 'cm', + 'mm', + 'Q', + 'in', + 'pt', + 'pc', + 'px', + 'deg', + 'grad', + 'rad', + 'turn', + 's', + 'ms', + 'Hz', + 'kHz', + 'dpi', + 'dpcm', + 'dppx', + 'fr', + ], + interface: function() { + return CSS; + }, + }, + CSSTransformValue: { + links: { + dev: '#transformvalue-objects', + mdnGroup: 'DOM', + }, + tests: [ + 'length', + 'is2D', + 'toMatrix', + 'entries', + 'forEach', + 'keys', + 'values', + ], + required: ':root { transform: translate(10px, 20px); }', + interface: function(style) { + return style.sheet.cssRules[0].styleMap.get('transform'); + }, + }, + CSSTransformComponent: { + links: { + dev: '#csstransformcomponent', + mdnGroup: 'DOM', + }, + tests: ['is2D', 'toMatrix'], + required: ':root { transform: translate(10px, 20px); }', + interface: function(style) { + return style.sheet.cssRules[0].styleMap.get('transform')[0]; + }, + }, + CSSTranslate: { + links: { + dev: '#csstranslate', + mdnGroup: 'DOM', + }, + tests: ['x', 'y', 'z'], + required: ':root { transform: translate(10px, 20px); }', + interface: function(style) { + return style.sheet.cssRules[0].styleMap.get('transform')[0]; + }, + }, + CSSRotate: { + links: { + dev: '#cssrotate', + mdnGroup: 'DOM', + }, + tests: ['x', 'y', 'z', 'angle'], + required: ':root { transform: rotate(10deg); }', + interface: function(style) { + return style.sheet.cssRules[0].styleMap.get('transform')[0]; + }, + }, + CSSScale: { + links: { + dev: '#cssscale', + mdnGroup: 'DOM', + }, + tests: ['x', 'y', 'z'], + required: ':root { transform: scale(2); }', + interface: function(style) { + return style.sheet.cssRules[0].styleMap.get('transform')[0]; + }, + }, + CSSSkew: { + links: { + dev: '#cssskew', + mdnGroup: 'DOM', + }, + tests: ['ax', 'ay'], + required: ':root { transform: skew(10deg, 20deg); }', + interface: function(style) { + return style.sheet.cssRules[0].styleMap.get('transform')[0]; + }, + }, + CSSSkewX: { + links: { + dev: '#cssskewx', + mdnGroup: 'DOM', + }, + tests: ['ax'], + required: ':root { transform: skewX(10deg); }', + interface: function(style) { + return style.sheet.cssRules[0].styleMap.get('transform')[0]; + }, + }, + CSSSkewY: { + links: { + dev: '#cssskewy', + mdnGroup: 'DOM', + }, + tests: ['ay'], + required: ':root { transform: skewY(10deg); }', + interface: function(style) { + return style.sheet.cssRules[0].styleMap.get('transform')[0]; + }, + }, + CSSPerspective: { + links: { + dev: '#cssperspective', + mdnGroup: 'DOM', + }, + tests: ['length'], + required: ':root { transform: perspective(10px); }', + interface: function(style) { + return style.sheet.cssRules[0].styleMap.get('transform')[0]; + }, + }, + CSSMatrixComponent: { + links: { + dev: '#cssmatrixcomponent', + mdnGroup: 'DOM', + }, + tests: ['matrix'], + required: ':root { transform: matrix(1, 0, 0, 1, 0, 0); }', + interface: function(style) { + return style.sheet.cssRules[0].styleMap.get('transform')[0]; + }, + }, + CSSImageValue: { + links: { + dev: '#imagevalue-objects', + mdnGroup: 'DOM', + }, + tests: ['CSSImageValue'], + }, + CSSColorValue: { + links: { + dev: '#colorvalue-objects', + mdnGroup: 'DOM', + }, + tests: ['CSSColorValue'], + }, + CSSRGB: { + links: { + dev: '#cssrgb', + mdnGroup: 'DOM', + }, + tests: ['r', 'g', 'b', 'alpha'], + required: ':root { color: rgb(255, 0, 0); }', + interface: function(style) { + return style.sheet.cssRules[0].styleMap.get('color'); + }, + }, + CSSHSL: { + links: { + dev: '#csshsl', + mdnGroup: 'DOM', + }, + tests: ['h', 's', 'l', 'alpha'], + required: ':root { color: hsl(0, 100%, 50%); }', + interface: function(style) { + return style.sheet.cssRules[0].styleMap.get('color'); + }, + }, + CSSHWB: { + links: { + dev: '#csshwb', + mdnGroup: 'DOM', + }, + tests: ['h', 'w', 'b', 'alpha'], + required: ':root { color: hwb(0, 0%, 0%); }', + interface: function(style) { + return style.sheet.cssRules[0].styleMap.get('color'); + }, + }, + CSSLab: { + links: { + dev: '#csslab', + mdnGroup: 'DOM', + }, + tests: ['l', 'a', 'b', 'alpha'], + required: ':root { color: lab(0%, 0%, 0%); }', + interface: function(style) { + return style.sheet.cssRules[0].styleMap.get('color'); + }, + }, + CSSLCH: { + links: { + dev: '#csslch', + mdnGroup: 'DOM', + }, + tests: ['l', 'c', 'h', 'alpha'], + required: ':root { color: lch(0%, 0%, 0deg); }', + interface: function(style) { + return style.sheet.cssRules[0].styleMap.get('color'); + }, + }, + CSSOKLab: { + links: { + dev: '#cssoklab', + mdnGroup: 'DOM', + }, + tests: ['l', 'a', 'b', 'alpha'], + required: ':root { color: oklab(0%, 0%, 0%); }', + interface: function(style) { + return style.sheet.cssRules[0].styleMap.get('color'); + }, + }, + CSSOKLCH: { + links: { + dev: '#cssoklch', + mdnGroup: 'DOM', + }, + tests: ['l', 'c', 'h', 'alpha'], + required: ':root { color: oklch(0%, 0%, 0deg); }', + interface: function(style) { + return style.sheet.cssRules[0].styleMap.get('color'); + }, + }, + CSSColor: { + links: { + dev: '#csscolor', + mdnGroup: 'DOM', + }, + tests: ['colorSpace', 'channels', 'alpha'], + required: ':root { color: color(display-p3 1 0 0); }', + interface: function(style) { + return style.sheet.cssRules[0].styleMap.get('color'); + }, + }, + }, +}; From a9fe7a2820e16c96c54af1b1d82294e539382abc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Fri, 17 Mar 2023 01:04:25 +0100 Subject: [PATCH 436/668] Forgot a ; --- tests/css-properties-values-api-1.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/css-properties-values-api-1.js b/tests/css-properties-values-api-1.js index 51bebafc..1ea2d15f 100644 --- a/tests/css-properties-values-api-1.js +++ b/tests/css-properties-values-api-1.js @@ -42,7 +42,7 @@ export default { }, required: { '*': { - descriptor: "syntax: '' inherits: true", + descriptor: "syntax: ''; inherits: true", }, }, tests: ['blue', '#00f', 'rgb(0, 0, 255)'], From 4d38281f5720bf1461d24f0e2981fc8e99bb5c8d Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Thu, 23 Mar 2023 21:06:21 +0100 Subject: [PATCH 437/668] Allowed defining properties for specific value tests --- csstest.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/csstest.js b/csstest.js index f7c848a6..39438ae3 100644 --- a/csstest.js +++ b/csstest.js @@ -339,8 +339,8 @@ Test.prototype = { }; Test.groups = { - values: function (test, label, tests) { - var properties = tests.properties, + values: function (test, name, tests) { + var properties = tests[name].properties || tests.properties, failed = []; for (var j = 0, property; (property = properties[j++]); ) { From ceab6ed28ae9cb0d5f21b3401ff27a6de7978678 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Thu, 23 Mar 2023 21:23:33 +0100 Subject: [PATCH 438/668] Moved property tests to and added new value tests --- tests/css-color-4.js | 6 ++-- tests/css-fonts-4.js | 69 ++++++++++++++++++++++++++++++++----------- tests/css-values-3.js | 8 +++++ tests/css-values-5.js | 18 +++++++++-- 4 files changed, 77 insertions(+), 24 deletions(-) diff --git a/tests/css-color-4.js b/tests/css-color-4.js index e1955527..d7fe6577 100644 --- a/tests/css-color-4.js +++ b/tests/css-color-4.js @@ -106,7 +106,6 @@ export default { }, tests: ['oklab(0% 0 0)', 'oklab(40.101% 0.1147 0.0453 / .5)'], }, - 'lch()': { links: { tr: '#specifying-lch-lch', @@ -157,13 +156,12 @@ export default { }, tests: ['device-cmyk(.2 .3 .4 .5)', 'device-cmyk(.2 .3 .4 .5 / .5)', 'device-cmyk(.2 .3 .4 .5 / 50%)'], }, - }, - properties: { - opacity: { + 'percentages in opacity': { links: { tr: '#transparency', dev: '#transparency', }, + properties: ['opacity'], tests: ['45%'], }, }, diff --git a/tests/css-fonts-4.js b/tests/css-fonts-4.js index b2c22eac..88c9e8f8 100644 --- a/tests/css-fonts-4.js +++ b/tests/css-fonts-4.js @@ -73,15 +73,62 @@ export default { }, tests: 'ui-rounded', }, - }, - properties: { - 'font-size': { + 'xxx-large': { + links: { + tr: '#font-size-prop', + dev: '#font-size-prop', + }, + properties: ['font-size'], + tests: ['xxx-large'], + }, + 'math in font-size': { links: { tr: '#font-size-prop', dev: '#font-size-prop', }, - tests: ['xxx-large', 'math'], + properties: ['font-size'], + tests: ['math'], }, + 'arbitrary font weights': { + links: { + tr: '#font-weight-prop', + dev: '#font-weight-prop', + }, + properties: ['font-weight'], + tests: ['1', '90', '750', '1000'], + }, + 'angle for oblique': { + links: { + tr: '#font-style-prop', + dev: '#font-style-prop', + }, + properties: ['font-style'], + tests: ['oblique 15deg', 'oblique -15deg', 'oblique 0deg'], + }, + 'font-variant functions and keywords': { + links: { + tr: '#font-variant-prop', + dev: '#font-variant-prop', + }, + properties: ['font-variant'], + tests: [ + 'stylistic(salt01)', + 'historical-forms', + 'styleset(ss01)', + 'styleset(stacked-g, geometric-m)', + 'character-variant(cv02)', + 'character-variant(beta-3, gamma)', + 'swash(flowing)', + 'ornaments(leaves)', + 'annotation(blocky)', + 'text', + 'emoji', + 'unicode', + 'discretionary-ligatures character-variant(leo-B, leo-M, leo-N, leo-T, leo-U)', + ], + }, + }, + properties: { 'font-size-adjust': { links: { tr: '#font-size-adjust-prop', @@ -159,20 +206,6 @@ export default { }, tests: ['normal', "'SRB'"], }, - 'font-weight': { - links: { - tr: '#font-weight-prop', - dev: '#font-weight-prop', - }, - tests: ['1', '90', '750', '1000'], - }, - 'font-style': { - links: { - tr: '#font-style-prop', - dev: '#font-style-prop', - }, - tests: ['oblique 15deg', 'oblique -15deg', 'oblique 0deg'], - }, 'font-synthesis-weight': { links: { tr: '#font-synthesis-weight', diff --git a/tests/css-values-3.js b/tests/css-values-3.js index 4ca6160e..27b46fc6 100644 --- a/tests/css-values-3.js +++ b/tests/css-values-3.js @@ -81,6 +81,14 @@ export default { 'calc(calc(100%))', ], }, + 'calc() in other functions': { + links: { + tr: '#calc-notation', + dev: '#calc-notation', + }, + properties: ['transform'], + tests: ['translateX(calc(1px + 2px))'], + } }, properties: { transform: ['rotate(calc(15deg + 30deg))'], diff --git a/tests/css-values-5.js b/tests/css-values-5.js index ff07f535..4b9b0480 100644 --- a/tests/css-values-5.js +++ b/tests/css-values-5.js @@ -29,11 +29,25 @@ export default { 'attr(data-flex flex)', ], }, - 'toggle()': { + 'toggle() with lengths': { links: { dev: '#toggle-notation', }, - tests: ['toggle(1px, 2px)', 'toggle(italic, normal)', 'toggle(disc, circle, square, box)'], + tests: ['toggle(1px, 2px)'], + }, + 'toggle() with keywords': { + links: { + dev: '#toggle-notation', + }, + properties: ['font-style'], + tests: ['toggle(italic, normal)'], + }, + 'toggle() with mixed keywords and lengths': { + links: { + dev: '#toggle-notation', + }, + properties: ['background-position'], + tests: ['toggle(top left, 100% 50%)'], }, }, }; From a39d6e19714bc4d0b5805bcb99da21f3984ed494 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Sun, 26 Mar 2023 21:20:53 +0200 Subject: [PATCH 439/668] Added CSS Anchor Positioning 1 --- tests.js | 2 + tests/css-anchor-position-1.js | 123 +++++++++++++++++++++++++++++++++ 2 files changed, 125 insertions(+) create mode 100644 tests/css-anchor-position-1.js diff --git a/tests.js b/tests.js index bc75bf3f..5337388b 100644 --- a/tests.js +++ b/tests.js @@ -1,5 +1,6 @@ import compat from './tests/compat.js'; import cssAlign3 from './tests/css-align-3.js'; +import cssAnchorPosition1 from './tests/css-anchor-position-1.js'; import cssAnimationWorklet1 from './tests/css-animation-worklet-1.js'; import cssAnimations1 from './tests/css-animations-1.js'; import cssAnimations2 from './tests/css-animations-2.js'; @@ -158,6 +159,7 @@ export default { 'css2-visufx': css2VisuFx, 'css2-visuren': css2VisuRen, 'css-align-3': cssAlign3, + 'css-anchor-position-1': cssAnchorPosition1, 'css-animation-1': cssAnimations1, 'css-animation-2': cssAnimations2, 'css-animation-worklet-1': cssAnimationWorklet1, diff --git a/tests/css-anchor-position-1.js b/tests/css-anchor-position-1.js new file mode 100644 index 00000000..456c7876 --- /dev/null +++ b/tests/css-anchor-position-1.js @@ -0,0 +1,123 @@ +export default { + title: 'CSS Anchor Positioning', + links: { + tr: 'css-anchor-position-1', + dev: 'css-anchor-position-1', + }, + status: { + stability: 'experimental', + }, + values: { + 'anchor()': { + links: { + tr: '#anchor-pos', + dev: '#anchor-pos', + }, + properties: [ + 'top', + 'right', + 'bottom', + 'left', + 'inset-block-start', + 'inset-block-end', + 'inset-inline-start', + 'inset-inline-end', + 'inset-block', + 'inset-inline', + 'inset', + ], + tests: [ + 'anchor(auto)', + 'anchor(auto-same)', + 'anchor(top)', + 'anchor(left)', + 'anchor(right)', + 'anchor(bottom)', + 'anchor(start)', + 'anchor(end)', + 'anchor(self-start)', + 'anchor(self-end)', + 'anchor(center)', + 'anchor(30%)', + 'anchor(auto, 20px)', + 'anchor(auto-same, 20px)', + 'anchor(top, 20px)', + 'anchor(start, 20px)', + 'anchor(30%, 20px)', + 'anchor(--anchor top)', + 'anchor(--anchor top, 20px)', + 'anchor(--anchor top, 5%)', + 'anchor(implicit top)', + 'anchor(implicit top, 20px)', + 'anchor(implicit top, 5%)', + ], + }, + 'anchor-size()': { + links: { + tr: '#anchor-pos', + dev: '#anchor-pos', + }, + properties: [ + 'width', + 'height', + 'min-width', + 'min-height', + 'max-width', + 'max-height', + ], + tests: [ + 'anchor-size(width)', + 'anchor-size(height)', + 'anchor-size(block)', + 'anchor-size(inline)', + 'anchor-size(self-block)', + 'anchor-size(self-inline)', + 'anchor-size(--anchor width)', + 'anchor-size(--anchor width, 20px)', + 'anchor-size(--anchor width, 5%)', + 'anchor-size(implicit width)', + 'anchor-size(implicit width, 20px)', + 'anchor-size(implicit width, 5%)', + ], + }, + }, + properties: { + 'anchor-default': { + links: { + tr: '#anchor-default', + dev: '#anchor-default', + }, + tests: ['--anchor', 'implicit'], + }, + 'anchor-name': { + links: { + tr: '#determining', + dev: '#determining', + }, + tests: ['none', '--anchor'], + }, + 'anchor-scroll': { + links: { + tr: '#scroll', + dev: '#scroll', + }, + tests: ['none', 'default', '--anchor', 'implicit'], + }, + 'position-fallback': { + links: { + tr: '#fallback-property', + dev: '#fallback-property', + }, + tests: ['none', '--fallback'], + }, + }, + '@rules': { + '@position-fallback': { + links: { + tr: '#fallback-rule', + dev: '#fallback-rule', + }, + tests: "@position-fallback --button-popover {\n @try {\n top: anchor(--button bottom);\n left: anchor(--button left);\n }\n\n @try {\n bottom: anchor(--button top);\n right: anchor(--button right);\n }\n}", + }, + }, +}; From d26c389b838ed1a0fa84e34e828ff45d79ad3357 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Sun, 26 Mar 2023 21:57:38 +0200 Subject: [PATCH 440/668] Corrected CSS Fonts 3 and 4 --- tests/css-fonts-3.js | 50 ++++++++++++++++++++++++++++++++++++++++++-- tests/css-fonts-4.js | 22 ------------------- 2 files changed, 48 insertions(+), 24 deletions(-) diff --git a/tests/css-fonts-3.js b/tests/css-fonts-3.js index 5e4484e1..538ec76b 100644 --- a/tests/css-fonts-3.js +++ b/tests/css-fonts-3.js @@ -8,6 +8,52 @@ export default { stability: 'stable', 'first-snapshot': 2015, }, + values: { + 'font-variant': { + links: { + tr: '#font-variant-prop', + dev: '#font-variant-prop', + }, + properties: ['font-variant'], + tests: [ + 'none', + 'common-ligatures', + 'no-common-ligatures', + 'discretionary-ligatures', + 'no-discretionary-ligatures', + 'historical-ligatures', + 'no-historical-ligatures', + 'contextual', + 'no-contextual', + 'all-small-caps', + 'petite-caps', + 'all-petite-caps', + 'unicase', + 'titling-caps', + 'lining-nums', + 'oldstyle-nums', + 'proportional-nums', + 'tabular-nums', + 'diagonal-fractions', + 'stacked-fractions', + 'ordinal', + 'slashed-zero', + 'jis78', + 'jis83', + 'jis90', + 'jis04', + 'simplified', + 'traditional', + 'full-width', + 'proportional-width', + 'ruby', + 'sub', + 'super', + 'common-ligatures discretionary-ligatures', + 'small-caps lining-nums ordinal ruby sub' + ], + }, + }, properties: { 'font-stretch': { links: { @@ -31,7 +77,7 @@ export default { tr: '#font-size-adjust-prop', dev: '#font-size-adjust-prop', }, - tests: ['none', '.5'], + tests: ['none', '0', '.5', '1.234'], }, 'font-synthesis': { links: { @@ -133,7 +179,7 @@ export default { tr: '#font-feature-settings-prop', dev: '#font-feature-settings-prop', }, - tests: ['normal', "'c2sc'", "'smcp' on", "'liga' off", "'smcp', 'swsh' 2"], + tests: ['normal', "'c2sc'", "'smcp' on", "'liga' off", "'swsh' 2", "'smcp', 'liga' off, 'swsh' 2"], }, }, descriptors: { diff --git a/tests/css-fonts-4.js b/tests/css-fonts-4.js index 88c9e8f8..eb45c32f 100644 --- a/tests/css-fonts-4.js +++ b/tests/css-fonts-4.js @@ -129,28 +129,6 @@ export default { }, }, properties: { - 'font-size-adjust': { - links: { - tr: '#font-size-adjust-prop', - dev: '#font-size-adjust-prop', - }, - tests: ['none', '0', '1.234'], - }, - 'font-variant': { - links: { - tr: '#font-variant-prop', - dev: '#font-variant-prop', - }, - tests: [ - 'none', - 'all-petite-caps', - 'historical-forms', - 'super', - 'sub lining-nums contextual ruby', - 'annotation(circled)', - 'discretionary-ligatures character-variant(leo-B, leo-M, leo-N, leo-T, leo-U)', - ], - }, 'font-variant-alternates': { links: { tr: '#font-variant-alternates-prop', From 9fb2a92860fc25f202f416cd9a59ed33e8851a5b Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Mon, 27 Mar 2023 00:50:46 +0200 Subject: [PATCH 441/668] Added filter for standardization groups --- csstest.js | 10 ++++++++++ index.html | 7 +++++++ 2 files changed, 17 insertions(+) diff --git a/csstest.js b/csstest.js index 39438ae3..ece45274 100644 --- a/csstest.js +++ b/csstest.js @@ -462,6 +462,16 @@ window.runTests = function (filter = '') { } } else if (filter === '' && Specs[spec].status && Specs[spec].status['first-snapshot'] === 1998) { continue; + } else if (filter === 'csswg' && Specs[spec].links.devtype && !Specs[spec].links.devtype.match(/fxtf/)) { + continue; + } else if (filter === 'houdini' && (!('devtype' in Specs[spec].links) || !Specs[spec].links.devtype.match(/houdini/))) { + continue; + } else if (filter === 'svgwg' && Specs[spec].links.devtype !== 'svgwg') { + continue; + } else if (filter === 'whatwg' && Specs[spec].links.devtype !== 'whatwg') { + continue; + } else if (filter === 'others' && (!('devtype' in Specs[spec].links) || Specs[spec].links.devtype.match(/fxtf|houdini|svgwg|whatwg/))) { + continue; } specs.push({ diff --git a/index.html b/index.html index 55e69431..e5d3e138 100644 --- a/index.html +++ b/index.html @@ -43,6 +43,13 @@

        Filter:

        + + + + + + + From 5fbe109ce069b12d1096ff5215d9b3bd4878b6af Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Tue, 25 Jul 2023 10:41:32 +0200 Subject: [PATCH 442/668] Renamed "Scroll-linked Animations" to "Scroll-driven Animations" --- tests/scroll-animations-1.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/scroll-animations-1.js b/tests/scroll-animations-1.js index 376686d1..e6d7f8bb 100644 --- a/tests/scroll-animations-1.js +++ b/tests/scroll-animations-1.js @@ -1,5 +1,5 @@ export default { - title: 'Scroll-linked Animations', + title: 'Scroll-driven Animations', links: { tr: 'scroll-animations-1', dev: 'scroll-animations-1', From c5c5471e807cbc5c6740dc1c5282dcd6c287d241 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Tue, 25 Jul 2023 11:06:30 +0200 Subject: [PATCH 443/668] Split borders and box decorations into CSS Borders 4 and added more properties --- tests.js | 2 + tests/css-backgrounds-4.js | 2 +- tests/css-borders-4.js | 198 +++++++++++++++++++++++++++++++++++++ 3 files changed, 201 insertions(+), 1 deletion(-) create mode 100644 tests/css-borders-4.js diff --git a/tests.js b/tests.js index 5337388b..0068383a 100644 --- a/tests.js +++ b/tests.js @@ -6,6 +6,7 @@ import cssAnimations1 from './tests/css-animations-1.js'; import cssAnimations2 from './tests/css-animations-2.js'; import cssBackgrounds3 from './tests/css-backgrounds-3.js'; import cssBackgrounds4 from './tests/css-backgrounds-4.js'; +import cssBorders4 from './tests/css-borders-4.js'; import cssBox3 from './tests/css-box-3.js'; import cssBox4 from './tests/css-box-4.js'; import cssBreak3 from './tests/css-break-3.js'; @@ -165,6 +166,7 @@ export default { 'css-animation-worklet-1': cssAnimationWorklet1, 'css-backgrounds-3': cssBackgrounds3, 'css-backgrounds-4': cssBackgrounds4, + 'css-borders-4': cssBorders4, 'css-box-3': cssBox3, 'css-box-4': cssBox4, 'css-break-3': cssBreak3, diff --git a/tests/css-backgrounds-4.js b/tests/css-backgrounds-4.js index b616a6de..bb3e84f4 100644 --- a/tests/css-backgrounds-4.js +++ b/tests/css-backgrounds-4.js @@ -1,5 +1,5 @@ export default { - title: 'CSS Backgrounds and Borders Module Level 4', + title: 'CSS Backgrounds Module Level 4', links: { dev: 'css-backgrounds-4', }, diff --git a/tests/css-borders-4.js b/tests/css-borders-4.js new file mode 100644 index 00000000..202984e5 --- /dev/null +++ b/tests/css-borders-4.js @@ -0,0 +1,198 @@ +export default { + title: 'CSS Borders and Box Decorations Module Level 4', + links: { + dev: 'css-borders-4', + }, + status: { + stability: 'experimental', + }, + properties: { + 'border-top-radius': { + links: { + dev: '#corner-sizing-side-shorthands', + }, + tests: [ + '0', + '50%', + '250px 100px', + '10px 20px', + '50% 10%', + '250px / 50px', + '50% / 10%', + '250px 100px / 50px', + '250px / 50px 10px', + '250px 100px / 50px 10px', + ], + }, + 'border-right-radius': { + links: { + dev: '#corner-sizing-side-shorthands', + }, + tests: [ + '0', + '50%', + '250px 100px', + '10px 20px', + '50% 10%', + '250px / 50px', + '50% / 10%', + '250px 100px / 50px', + '250px / 50px 10px', + '250px 100px / 50px 10px', + ], + }, + 'border-bottom-radius': { + links: { + dev: '#corner-sizing-side-shorthands', + }, + tests: [ + '0', + '50%', + '250px 100px', + '10px 20px', + '50% 10%', + '250px / 50px', + '50% / 10%', + '250px 100px / 50px', + '250px / 50px 10px', + '250px 100px / 50px 10px', + ], + }, + 'border-left-radius': { + links: { + dev: '#corner-sizing-side-shorthands', + }, + tests: [ + '0', + '50%', + '250px 100px', + '10px 20px', + '50% 10%', + '250px / 50px', + '50% / 10%', + '250px 100px / 50px', + '250px / 50px 10px', + '250px 100px / 50px 10px', + ], + }, + 'border-block-start-radius': { + links: { + dev: '#corner-sizing-side-shorthands', + }, + tests: [ + '0', + '50%', + '250px 100px', + '10px 20px', + '50% 10%', + '250px / 50px', + '50% / 10%', + '250px 100px / 50px', + '250px / 50px 10px', + '250px 100px / 50px 10px', + ], + }, + 'border-block-end-radius': { + links: { + dev: '#corner-sizing-side-shorthands', + }, + tests: [ + '0', + '50%', + '250px 100px', + '10px 20px', + '50% 10%', + '250px / 50px', + '50% / 10%', + '250px 100px / 50px', + '250px / 50px 10px', + '250px 100px / 50px 10px', + ], + }, + 'border-inline-start-radius': { + links: { + dev: '#corner-sizing-side-shorthands', + }, + tests: [ + '0', + '50%', + '250px 100px', + '10px 20px', + '50% 10%', + '250px / 50px', + '50% / 10%', + '250px 100px / 50px', + '250px / 50px 10px', + '250px 100px / 50px 10px', + ], + }, + 'border-inline-end-radius': { + links: { + dev: '#corner-sizing-side-shorthands', + }, + tests: [ + '0', + '50%', + '250px 100px', + '10px 20px', + '50% 10%', + '250px / 50px', + '50% / 10%', + '250px 100px / 50px', + '250px / 50px 10px', + '250px 100px / 50px 10px', + ], + }, + 'corner-shape': { + links: { + dev: '#corner-shaping', + }, + tests: [ + 'round', + 'angle', + 'round angle', + 'round angle round', + 'round angle round angle', + ], + }, + 'corners': { + links: { + dev: '#corners-shorthand', + }, + tests: [ + 'round', + 'angle', + 'round angle', + 'round angle round', + 'round angle round angle', + '10px', + '50%', + '2px 4px', + '2px 4px 8px', + '2px 4px 8px 16px', + '2px / 2px', + '2px / 2px 4px', + '2px / 2px 4px 8px', + '2px / 2px 4px 8px 16px', + 'round 2px', + 'angle 20%', + 'angle 2px 4px', + 'angle 2px 4px 8px', + 'angle 2px 4px 8px 16px', + 'round angle 2px', + 'round angle 2px 4px', + 'round angle 2px 4px 8px', + 'round angle 2px 4px 8px 16px', + 'round angle round angle 2px', + '2px round', + '2px 4px round', + '2px 4px 8px round', + '2px 4px 8px 16px round', + 'round 2px / 2px', + 'round 2px / 2px 4px', + 'round 2px / 2px 4px 8px', + 'round 2px / 2px 4px 8px 16px', + ], + }, + }, +}; From f6385770e13854abfb7265af6f9dbe301f580cfa Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Tue, 25 Jul 2023 20:18:33 +0200 Subject: [PATCH 444/668] Updated CSSStyleRule interface `CSSStyleRule` now inherits from `CSSGroupingRule` and therefore includes `cssRules`, `insertRule` and `deleteRule`. --- tests/cssom-1.js | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/tests/cssom-1.js b/tests/cssom-1.js index b53cfef6..08d64be4 100644 --- a/tests/cssom-1.js +++ b/tests/cssom-1.js @@ -165,7 +165,16 @@ export default { dev: '#the-cssstylerule-interface', mdnGroup: 'DOM', }, - tests: ['selectorText', 'style', 'cssText', 'parentRule', 'parentStyleSheet'], + tests: [ + 'selectorText', + 'style', + 'cssRules', + 'insertRule', + 'deleteRule', + 'cssText', + 'parentRule', + 'parentStyleSheet', + ], required: 'div { }', }, /* Doesn't currently work because style sheet is only available once imported From 6b645c6313241e8dec9412caf57f86c2a1291522 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Tue, 25 Jul 2023 20:54:34 +0200 Subject: [PATCH 445/668] Added `auto none` syntax to `contain-intrinsic-*` properties --- tests/css-sizing-4.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/css-sizing-4.js b/tests/css-sizing-4.js index 9e804464..4b69a121 100644 --- a/tests/css-sizing-4.js +++ b/tests/css-sizing-4.js @@ -27,28 +27,28 @@ export default { tr: '#intrinsic-size-override', dev: '#intrinsic-size-override', }, - tests: ['none', '10px', 'auto 10px'], + tests: ['none', '10px', 'auto none', 'auto 10px'], }, 'contain-intrinsic-height': { links: { tr: '#intrinsic-size-override', dev: '#intrinsic-size-override', }, - tests: ['none', '10px', 'auto 10px'], + tests: ['none', '10px', 'auto none', 'auto 10px'], }, 'contain-intrinsic-block-size': { links: { tr: '#intrinsic-size-override', dev: '#intrinsic-size-override', }, - tests: ['none', '10px', 'auto 10px'], + tests: ['none', '10px', 'auto none', 'auto 10px'], }, 'contain-intrinsic-inline-size': { links: { tr: '#intrinsic-size-override', dev: '#intrinsic-size-override', }, - tests: ['none', '10px', 'auto 10px'], + tests: ['none', '10px', 'auto none', 'auto 10px'], }, 'min-intrinsic-sizing': { links: { From 4ef55b352292c74681f34ad2df3b5f931793f42e Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Tue, 25 Jul 2023 21:14:01 +0200 Subject: [PATCH 446/668] Added `@starting-style` at-rule and `CSSStartingStyleRule` interface --- tests/css-transitions-2.js | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/tests/css-transitions-2.js b/tests/css-transitions-2.js index f57f6741..2fd6164a 100644 --- a/tests/css-transitions-2.js +++ b/tests/css-transitions-2.js @@ -6,7 +6,27 @@ export default { status: { stability: 'experimental', }, + '@rules': { + '@starting-style': { + links: { + dev: '#defining-before-change-style-the-starting-style-rule', + }, + tests: "@starting-style {\n h1 {\n background-color: red;\n }\n}", + }, + }, interfaces: { + CSSStartingStyleRule: { + links: { + dev: '#the-cssstartingstylerule-interface', + mdnGroup: 'DOM', + }, + tests: [ + 'cssRules', + 'addRule', + 'deleteRule', + ], + required: '@starting-style { h1 { background-color: red; } }', + }, CSSTransition: { links: { dev: '#the-CSSTransition-interface', From edea193d79e7e7d857ece9755fef8388fa1d0319 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Sat, 29 Jul 2023 23:33:01 +0200 Subject: [PATCH 447/668] Updated Scroll Animations 1 --- tests/scroll-animations-1.js | 252 +++++++++++++++++++++++++++++------ 1 file changed, 209 insertions(+), 43 deletions(-) diff --git a/tests/scroll-animations-1.js b/tests/scroll-animations-1.js index e6d7f8bb..6573bb22 100644 --- a/tests/scroll-animations-1.js +++ b/tests/scroll-animations-1.js @@ -7,63 +7,239 @@ export default { status: { stability: 'experimental', }, - '@rules': { - '@scroll-timeline': { + 'values': { + 'properties': ['animation-timeline'], + 'scroll()': { links: { - tr: '#scroll-timeline-at-rule', - dev: '#scroll-timeline-at-rule', + tr: '#scroll-notation', + dev: '#scroll-notation', }, - tests: ['@scroll-timeline scroller { source: selector(#root); }'], + tests: [ + 'scroll()', + 'scroll(block)', + 'scroll(inline)', + 'scroll(x)', + 'scroll(y)', + 'scroll(nearest)', + 'scroll(root)', + 'scroll(self)', + 'scroll(inline root)', + 'scroll(block self)', + 'scroll(x nearest)', + 'scroll(root inline)', + 'scroll(self block)', + 'scroll(nearest x)', + ], + }, + 'view()': { + links: { + tr: '#view-notation', + dev: '#view-notation', + }, + tests: [ + 'view()', + 'view(block)', + 'view(inline)', + 'view(x)', + 'view(y)', + 'view(auto)', + 'view(100px)', + 'view(5%)', + 'view(100px 200px)', + 'view(5% 10%)', + 'view(inline 100px)', + 'view(block 5% 10%)', + 'view(100px inline)', + 'view(5% 10% block)', + ], }, }, - descriptors: { - '@scroll-timeline example/source': { + properties: { + 'animation-range': { links: { - tr: '#scroll-timeline-descriptors', - dev: '#scroll-timeline-descriptors', + tr: '#animation-range', + dev: '#animation-range', }, - tests: ['selector(#id)', 'auto', 'none'], + tests: [ + 'normal', + '500px', + '50%', + 'entry', + 'exit', + 'entry-crossing', + 'exit-crossing', + 'cover', + 'contain', + 'entry 500px', + 'entry 50%', + '500px, exit 50%', + 'normal 500px', + '100px 600px', + '50% 80%', + 'contain 100px cover 500px', + 'contain 10% exit 50%, entry 100px exit 500px', + ], }, - '@scroll-timeline example/orientation': { + 'animation-range-start': { links: { - tr: '#scroll-timeline-descriptors', - dev: '#scroll-timeline-descriptors', + tr: '#animation-range-start', + dev: '#animation-range-start', }, - required: { - '*': { descriptor: 'source: auto' }, + tests: [ + 'normal', + '500px', + '50%', + 'entry', + 'exit', + 'entry-crossing', + 'exit-crossing', + 'cover', + 'contain', + 'entry 500px', + 'entry 50%', + '500px, entry 50%', + ], + }, + 'animation-range-end': { + links: { + tr: '#animation-range-end', + dev: '#animation-range-end', }, - tests: ['auto', 'block', 'inline', 'horizontal', 'vertical'], + tests: [ + 'normal', + '500px', + '50%', + 'entry', + 'exit', + 'entry-crossing', + 'exit-crossing', + 'cover', + 'contain', + 'entry 500px', + 'entry 50%', + '500px, exit 50%', + ], }, - '@scroll-timeline example/offsets': { + 'scroll-timeline': { links: { - tr: '#scroll-timeline-descriptors', - dev: '#scroll-timeline-descriptors', + tr: '#scroll-timeline', + dev: '#scroll-timeline', }, - required: { - '*': { descriptor: 'source: auto' }, + tests: [ + 'none', + '--some-timeline-name', + '--some-timeline-name, none', + '--some-timeline-name, --other-timeline-name', + '--some-timeline-name block', + '--some-timeline-name inline', + '--some-timeline-name x', + '--some-timeline-name y', + '--some-timeline-name block, none', + '--some-timeline-name, --other-timeline-name inline', + ], + }, + 'scroll-timeline-axis': { + links: { + tr: '#scroll-timeline-axis', + dev: '#scroll-timeline-axis', + }, + tests: [ + 'block', + 'inline', + 'x', + 'y', + 'block, inline', + ], + }, + 'scroll-timeline-name': { + links: { + tr: '#scroll-timeline-name', + dev: '#scroll-timeline-name', + }, + tests: [ + 'none', + '--some-timeline-name', + '--some-timeline-name, none', + '--some-timeline-name, --other-timeline-name', + ], + }, + 'view-timeline': { + links: { + tr: '#view-timeline', + dev: '#view-timeline', }, tests: [ 'none', + '--some-timeline-name', + '--some-timeline-name, none', + '--some-timeline-name, --other-timeline-name', + '--some-timeline-name block', + '--some-timeline-name inline', + '--some-timeline-name x', + '--some-timeline-name y', + '--some-timeline-name block, none', + '--some-timeline-name, --other-timeline-name inline', + ], + }, + 'view-timeline-axis': { + links: { + tr: '#view-timeline-axis', + dev: '#view-timeline-axis', + }, + tests: [ + 'block', + 'inline', + 'x', + 'y', + 'block, inline', + ], + }, + 'view-timeline-inset': { + links: { + tr: '#view-timeline-inset', + dev: '#view-timeline-inset', + }, + tests: [ 'auto', '100px', '5%', - 'selector(#id)', - 'selector(#id) start', - 'selector(#id) end', - 'selector(#id) 0.5', - 'selector(#id) start 0.5', - 'selector(#id), 100px, auto', + '100px 200px', + '5% 10%', + 'auto, 100px', ], }, + 'view-timeline-name': { + links: { + tr: '#view-timeline-name', + dev: '#view-timeline-name', + }, + tests: [ + 'none', + '--some-timeline-name', + '--some-timeline-name, none', + '--some-timeline-name, --other-timeline-name', + ], + }, + 'timeline-scope': { + links: { + tr: '#timeline-scope', + dev: '#timeline-scope', + }, + tests: [ + 'none', + '--timeline-scope', + '--some-timeline-scope, --other-timeline-scope', + ], + } }, interfaces: { ScrollTimeline: { links: { - tr: '#scrolltimeline', - dev: '#scrolltimeline', + tr: '#scrolltimeline-interface', + dev: '#scrolltimeline-interface', mdnGroup: 'DOM', }, - tests: ['source', 'axis'], + tests: ['source', 'axis', 'currentTime'], interface: function() { return new ScrollTimeline({ source: document.scrollingElement, @@ -72,26 +248,16 @@ export default { }, ViewTimeline: { links: { - tr: '#viewtimeline', - dev: '#viewtimeline', + tr: '#viewtimeline-interface', + dev: '#viewtimeline-interface', mdnGroup: 'DOM', }, - tests: ['subject', 'startOffset', 'endOffset'], + tests: ['subject', 'startOffset', 'endOffset', 'currentTime'], interface: function() { return new ViewTimeline({ source: document.scrollingElement, }); } }, - AnimationTimeline: { - links: { - dev: '#named-range-get-time', - mdnGroup: 'DOM', - }, - tests: ['getCurrentTime'], - interface: function() { - return document.timeline; - }, - }, }, }; From d00ddbb9a71c702498b96540b72de115507dbe40 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Mon, 31 Jul 2023 21:26:46 +0200 Subject: [PATCH 448/668] Updated CSS Animations 2 --- tests/css-animations-2.js | 39 ++++++++++++--------------------------- 1 file changed, 12 insertions(+), 27 deletions(-) diff --git a/tests/css-animations-2.js b/tests/css-animations-2.js index 0a3f5bb4..f98d2089 100644 --- a/tests/css-animations-2.js +++ b/tests/css-animations-2.js @@ -15,6 +15,13 @@ export default { }, tests: ['replace', 'add', 'accumulate', 'replace, add, accumulate'], }, + 'animation-duration': { + links: { + tr: '#animation-duration', + dev: '#animation-duration', + }, + tests: ['auto'], + }, 'animation-timeline': { links: { tr: '#animation-timeline', @@ -24,32 +31,7 @@ export default { 'auto', 'none', 'custom-timeline', - 'scroll()', - 'scroll(root)', - 'scroll(nearest)', - 'scroll(block)', - 'scroll(inline)', - 'scroll(vertical)', - 'scroll(horizontal)', - 'scroll(nearest inline)', - 'scroll(vertical root)', - 'view()', - 'view(block)', - 'view(inline)', - 'view(vertical)', - 'view(horizontal)', - 'view(auto)', - 'view(100px)', - 'view(-100px)', - 'view(10%)', - 'view(100px auto)', - 'view(100px 10%)', - 'view(100px, 10%, 200px auto)', - 'view(100px inline)', - 'view(vertical 10%)', - 'view(block 100px 10%)', - 'view(100px, 10% horizontal)', - 'auto, none, custom-timeline, scroll(), view()', + 'auto, none, custom-timeline', ], }, animation: { @@ -57,7 +39,10 @@ export default { tr: '#animation-shorthand', dev: '#animation-shorthand', }, - tests: ['1s both infinite auto'], + tests: [ + '1s both infinite auto', + '1s both infinite my-animation --animation-timeline' + ], }, }, interfaces: { From dd4496e9944354e5d50e75e12a6997923f0482fb Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Fri, 4 Aug 2023 21:57:18 +0200 Subject: [PATCH 449/668] Updated CSS Values 5 --- tests/css-values-5.js | 77 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) diff --git a/tests/css-values-5.js b/tests/css-values-5.js index 4b9b0480..22767242 100644 --- a/tests/css-values-5.js +++ b/tests/css-values-5.js @@ -29,6 +29,63 @@ export default { 'attr(data-flex flex)', ], }, + 'random()': { + links: { + dev: '#random', + }, + tests: [ + 'random(0px, 100px)', + 'random(50%, 100%)', + 'random(180deg, 360deg)', + 'random(1s, 10s)', + 'random(40Hz, 100Hz)', + 'random(10, 20)', + 'random(10px, 10em)', + 'random(-infinity, infinity)', + 'random(--random-value, 0px, 100px)', + 'random(per-element, 0px, 100px)', + 'random(50px, 100%, by 1em)' + ], + }, + 'random-item() with lengths': { + links: { + dev: '#random-item', + }, + tests: [ + 'random-item(--random-item; 100px)', + 'random-item(--random-item; 0px; 50px; 100px)', + 'random-item(per-element; 0px; 50px; 100px)', + 'random-item(--random-item; 50%; 100%)', + 'random-item(--random-item; 100px; 10em; 50%; 100%)', + ], + }, + 'random-item() with keywords': { + links: { + dev: '#random-item', + }, + properties: ['color'], + tests: [ + 'random-item(--random-item; red; yellow; green; blue)', + ], + }, + 'random-item() with keywords': { + links: { + dev: '#random-item', + }, + properties: ['color'], + tests: [ + 'random-item(--random-item; red; yellow; green; blue)', + ], + }, + 'random-item() with functions': { + links: { + dev: '#random-item', + }, + properties: ['background-image'], + tests: [ + 'random-item(--random-item; linear-gradient(red, yellow); linear-gradient(green, blue))', + ], + }, 'toggle() with lengths': { links: { dev: '#toggle-notation', @@ -49,5 +106,25 @@ export default { properties: ['background-position'], tests: ['toggle(top left, 100% 50%)'], }, + 'Request URL modifiers': { + links: { + dev: '#request-url-modifiers', + }, + tests: [ + 'url("image.png" crossorigin(anonymous))', + 'url("image.png" crossorigin(use-credentials))', + 'url("image.png" integrity("8f6846e1bad406933f9122b201c6de07"))', + 'url("image.png" referrerpolicy(no-referrer))', + 'url("image.png" referrerpolicy(no-referrer-when-downgrade))', + 'url("image.png" referrerpolicy(same-origin))', + 'url("image.png" referrerpolicy(origin))', + 'url("image.png" referrerpolicy(strict-origin))', + 'url("image.png" referrerpolicy(origin-when-cross-origin))', + 'url("image.png" referrerpolicy(strict-origin-when-cross-origin))', + 'url("image.png" referrerpolicy(unsafe-url))', + 'url("image.png" crossorigin(anonymous) referrerpolicy(no-referrer))', + 'url("image.png" crossorigin(anonymous) integrity("8f6846e1bad406933f9122b201c6de07") referrerpolicy(no-referrer))', + ], + }, }, }; From 7b247ea2363f7de271d6214e1777365e577d843c Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Fri, 4 Aug 2023 22:04:05 +0200 Subject: [PATCH 450/668] Updated CSS UI 4 --- tests/css-ui-4.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tests/css-ui-4.js b/tests/css-ui-4.js index efc57e87..88ee2e1c 100644 --- a/tests/css-ui-4.js +++ b/tests/css-ui-4.js @@ -188,6 +188,13 @@ export default { "#foo 'bar'", ], }, + 'outline-color': { + links: { + tr: '#outline-color', + dev: '#outline-color', + }, + tests: ['stripes(red, yellow, green, blue)'] + }, 'pointer-events': { links: { tr: '#pointer-events-control', From 4aabeb528295cf41da859453aaa2f93aac4075a7 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Fri, 4 Aug 2023 22:17:37 +0200 Subject: [PATCH 451/668] Updated CSS Text Decorations 4 --- tests/css-text-decor-4.js | 60 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/tests/css-text-decor-4.js b/tests/css-text-decor-4.js index ef56bce5..d014a284 100644 --- a/tests/css-text-decor-4.js +++ b/tests/css-text-decor-4.js @@ -43,6 +43,13 @@ export default { 'box-decoration', ], }, + 'text-decoration-skip-box': { + links: { + tr: '#text-decoration-skip-box-property', + dev: '#text-decoration-skip-box-property', + }, + tests: ['none', 'all'], + }, 'text-decoration-skip-ink': { links: { tr: '#text-decoration-skip-ink-property', @@ -50,6 +57,47 @@ export default { }, tests: ['none', 'auto'], }, + 'text-decoration-skip-self': { + links: { + tr: '#text-decoration-skip-self-property', + dev: '#text-decoration-skip-self-property', + }, + tests: [ + 'auto', + 'skip-all', + 'skip-underline', + 'skip-overline', + 'skip-line-through', + 'skip-underline skip-overline', + 'skip-underline skip-line-through', + 'skip-underline skip-overline skip-line-through', + 'no-skip', + ], + }, + 'text-decoration-skip-spaces': { + links: { + tr: '#text-decoration-skip-spaces-property', + dev: '#text-decoration-skip-spaces-property', + }, + tests: [ + 'none', + 'all', + 'start', + 'end', + 'start end', + ], + }, + 'text-decoration-trim': { + links: { + tr: '#text-decoration-skip-inset-property', + dev: '#text-decoration-skip-inset-property', + }, + tests: [ + 'auto', + '10px', + '5px 10px', + ], + }, 'text-underline-offset': { links: { tr: '#underline-offset', @@ -57,6 +105,18 @@ export default { }, tests: ['auto', '3px', '10%'], }, + 'text-underline-position': { + links: { + tr: '#text-underline-position-property', + dev: '#text-underline-position-property', + }, + tests: [ + 'from-font', + 'from-font left', + 'from-font right', + 'right from-font', + ], + }, 'text-decoration-thickness': { links: { tr: '#underline-offset', From 9f61415967721728ef0c743ff5236ff4571cf357 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Fri, 4 Aug 2023 22:23:36 +0200 Subject: [PATCH 452/668] Updated CSS Pseudo 4 --- tests/css-pseudo-4.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/tests/css-pseudo-4.js b/tests/css-pseudo-4.js index 392eb4e0..e9ce6217 100644 --- a/tests/css-pseudo-4.js +++ b/tests/css-pseudo-4.js @@ -8,6 +8,20 @@ export default { stability: 'experimental', }, selectors: { + '::first-letter::prefix': { + links: { + tr: '#first-letter-pseudo', + dev: '#first-letter-pseudo', + }, + tests: ['::first-letter::prefix'], + }, + '::first-letter::postfix': { + links: { + tr: '#first-letter-pseudo', + dev: '#first-letter-pseudo', + }, + tests: ['::first-letter::postfix'], + }, '::selection': { links: { tr: '#selectordef-selection', From f3ed112d7a9305f968ea5a349e7b5d2c68440039 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Fri, 4 Aug 2023 22:32:41 +0200 Subject: [PATCH 453/668] Added test for over --- tests/css-overflow-4.js | 142 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 142 insertions(+) diff --git a/tests/css-overflow-4.js b/tests/css-overflow-4.js index a1edb288..3f89311f 100644 --- a/tests/css-overflow-4.js +++ b/tests/css-overflow-4.js @@ -7,6 +7,148 @@ export default { status: { stability: 'experimental', }, + properties: { + 'overflow-clip-margin-top': { + links: { + tr: '#overflow-clip-margin', + dev: '#overflow-clip-margin', + }, + tests: [ + 'content-box', + 'padding-box', + 'border-box', + '20px', + 'content-box 20px', + '20px content-box', + ], + }, + 'overflow-clip-margin-right': { + links: { + tr: '#overflow-clip-margin', + dev: '#overflow-clip-margin', + }, + tests: [ + 'content-box', + 'padding-box', + 'border-box', + '20px', + 'content-box 20px', + '20px content-box', + ], + }, + 'overflow-clip-margin-bottom': { + links: { + tr: '#overflow-clip-margin', + dev: '#overflow-clip-margin', + }, + tests: [ + 'content-box', + 'padding-box', + 'border-box', + '20px', + 'content-box 20px', + '20px content-box', + ], + }, + 'overflow-clip-margin-left': { + links: { + tr: '#overflow-clip-margin', + dev: '#overflow-clip-margin', + }, + tests: [ + 'content-box', + 'padding-box', + 'border-box', + '20px', + 'content-box 20px', + '20px content-box', + ], + }, + 'overflow-clip-margin-block-start': { + links: { + tr: '#overflow-clip-margin', + dev: '#overflow-clip-margin', + }, + tests: [ + 'content-box', + 'padding-box', + 'border-box', + '20px', + 'content-box 20px', + '20px content-box', + ], + }, + 'overflow-clip-margin-inline-start': { + links: { + tr: '#overflow-clip-margin', + dev: '#overflow-clip-margin', + }, + tests: [ + 'content-box', + 'padding-box', + 'border-box', + '20px', + 'content-box 20px', + '20px content-box', + ], + }, + 'overflow-clip-margin-block-end': { + links: { + tr: '#overflow-clip-margin', + dev: '#overflow-clip-margin', + }, + tests: [ + 'content-box', + 'padding-box', + 'border-box', + '20px', + 'content-box 20px', + '20px content-box', + ], + }, + 'overflow-clip-margin-inline-end': { + links: { + tr: '#overflow-clip-margin', + dev: '#overflow-clip-margin', + }, + tests: [ + 'content-box', + 'padding-box', + 'border-box', + '20px', + 'content-box 20px', + '20px content-box', + ], + }, + 'overflow-clip-margin-block': { + links: { + tr: '#overflow-clip-margin', + dev: '#overflow-clip-margin', + }, + tests: [ + 'content-box', + 'padding-box', + 'border-box', + '20px', + 'content-box 20px', + '20px content-box', + ], + }, + 'overflow-clip-margin-inline': { + links: { + tr: '#overflow-clip-margin', + dev: '#overflow-clip-margin', + }, + tests: [ + 'content-box', + 'padding-box', + 'border-box', + '20px', + 'content-box 20px', + '20px content-box', + ], + }, + }, selectors: { '::nth-fragment()': { links: { From 8ab7911b6afc36b3f116f6808c01672201596d09 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Fri, 4 Aug 2023 22:34:49 +0200 Subject: [PATCH 454/668] Added tests for `` to `overflow-clip-margin` --- tests/css-overflow-3.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/tests/css-overflow-3.js b/tests/css-overflow-3.js index 46f323e8..416c2da8 100644 --- a/tests/css-overflow-3.js +++ b/tests/css-overflow-3.js @@ -63,7 +63,14 @@ export default { tr: '#overflow-clip-margin', dev: '#overflow-clip-margin', }, - tests: ['content-box', 'padding-box', 'border-box', '20px'], + tests: [ + 'content-box', + 'padding-box', + 'border-box', + '20px', + 'content-box 20px', + '20px content-box', + ], }, continue: { links: { From dc086ced8e45f2808af746f54cf690957e49443e Mon Sep 17 00:00:00 2001 From: TrisTOON <36267812+TrisTOON@users.noreply.github.com> Date: Fri, 28 Jan 2022 06:24:28 +0100 Subject: [PATCH 455/668] Improved check for media queries using native `matchMedia()` function --- csstest.js | 8 +------- supports.js | 52 ++++++---------------------------------------------- 2 files changed, 7 insertions(+), 53 deletions(-) diff --git a/csstest.js b/csstest.js index ece45274..831a11b4 100644 --- a/csstest.js +++ b/csstest.js @@ -395,13 +395,7 @@ Test.groups = { }, 'Media queries': function (test) { - var matches = matchMedia(test); - if (matches.media !== 'invalid' && matches.matches) { - return { success: true }; - } else { - var matches = matchMedia('not ' + test); - return { success: matches.media !== 'invalid' && matches.matches }; - } + return Supports.mq(test); }, }; diff --git a/supports.js b/supports.js index a313e917..99c460b0 100644 --- a/supports.js +++ b/supports.js @@ -1,30 +1,3 @@ -/*! matchMedia() polyfill - Test a CSS media type/query in JS. -Authors & copyright (c) 2012: Scott Jehl, Paul Irish, Nicholas Zakas. Dual MIT/BSD license */ -window.matchMedia = - window.matchMedia || - (function (doc, undefined) { - var bool, - docElem = doc.documentElement, - refNode = docElem.firstElementChild || docElem.firstChild, - // fakeBody required for - fakeBody = doc.createElement('body'), - div = doc.createElement('div'); - - div.id = 'mq-test-1'; - div.style.cssText = 'position:absolute;top:-100em'; - fakeBody.appendChild(div); - - return function (q) { - div.innerHTML = '­'; - - docElem.insertBefore(fakeBody, refNode); - bool = div.offsetWidth == 42; - docElem.removeChild(fakeBody); - - return { matches: bool, media: q }; - }; - })(document); - (function () { /** * Setup dummy elements @@ -208,25 +181,12 @@ window.matchMedia = }, mq: function (mq) { - if (window.matchMedia) { - return { - success: matchMedia(mq).media !== 'invalid' ? true : matchMedia('not ' + mq).media !== 'invalid', - }; - } else { - style.textContent = '@media ' + mq + '{ foo {} }'; - - if (style.sheet.cssRules.length > 0) { - return { - success: true, - }; - } else { - style.textContent = '@media not ' + mq + '{ foo {} }'; - - return { - success: style.sheet.cssRules.length > 0 ? mq : false, - }; - } - } + return { + // We check whether the query does not include 'not all' because + // if it does, that means the query is ignored. + // See https://drafts.csswg.org/cssom/#parse-a-media-query-list + success: !matchMedia(mq).media.includes('not all'), + }; }, variable: function (name, value) { From 7681b140349a4cb5b8c8dec8a2c23e59a2573f41 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Mon, 7 Aug 2023 01:13:26 +0200 Subject: [PATCH 456/668] Updated CSS 2 Media Queries and Media Queries 3, 4 and 5 --- tests/css2-media.js | 11 +++----- tests/mediaqueries-3.js | 59 ++++++++++++++++++++++++++--------------- tests/mediaqueries-4.js | 33 +++++++++++++++++++++-- tests/mediaqueries-5.js | 16 ++++++++--- 4 files changed, 84 insertions(+), 35 deletions(-) diff --git a/tests/css2-media.js b/tests/css2-media.js index 448451a9..e1859654 100644 --- a/tests/css2-media.js +++ b/tests/css2-media.js @@ -9,18 +9,13 @@ export default { 'first-snapshot': 1998, 'last-snapshot': 1998, }, - '@rules': { - '@media': { + 'Media queries': { + Syntax: { links: { tr: '#at-media-rule', dev: '#at-media-rule', }, - tests: [ - '@media all {\n p {\n color: green;\n }\n}', - '@media print {\n p {\n color: green;\n }\n}', - '@media screen {\n p {\n color: green;\n }\n}', - '@media print, screen {\n p {\n color: green;\n }\n}', - ], + tests: ['all', 'print', 'screen', 'print, screen'], }, }, }; diff --git a/tests/mediaqueries-3.js b/tests/mediaqueries-3.js index 9bc25ad5..016c29fc 100644 --- a/tests/mediaqueries-3.js +++ b/tests/mediaqueries-3.js @@ -1,6 +1,3 @@ -/* - * Note: the following media queries must be true in supporting UAs! - */ export default { title: 'Media Queries Level 3', links: { @@ -12,13 +9,20 @@ export default { 'first-snapshot': 2010, }, 'Media queries': { - negation: { + Syntax: { links: { - tr: '#media0', - dev: '#media0', - mdn: 'Media_Queries/Using_media_queries', + tr: '#syntax', + dev: '#syntax', }, - tests: ['not print', 'not all and (width:1px)'], + tests: [ + 'not print', + 'only screen', + '(width)', + 'screen and (width)', + 'not print and (width)', + 'only screen and (width)', + '(width) and (height)', + ], }, width: { links: { @@ -26,7 +30,7 @@ export default { dev: '#width', mdn: 'Media_Queries/Using_media_queries', }, - tests: ['(width)', '(min-width:1px)', '(max-width:1000000px)'], + tests: ['(width)', '(width:1280px)', '(min-width:1px)', '(max-width:1000000px)'], }, height: { links: { @@ -34,28 +38,38 @@ export default { dev: '#height', mdn: 'Media_Queries/Using_media_queries', }, - tests: ['(height)', '(min-height:1px)', '(max-height:1000000px)'], + tests: ['(height)', '(height:720px)', '(min-height:1px)', '(max-height:1000000px)'], }, 'device-width': { links: { tr: '#device-width', dev: '#device-width', }, - tests: ['(device-width)', '(min-device-width:1px)', '(max-device-width:1000000px)'], + tests: [ + '(device-width)', + '(device-width:1280px)', + '(min-device-width:1px)', + '(max-device-width:1000000px)', + ], }, 'device-height': { links: { tr: '#device-height', dev: '#device-height', }, - tests: ['(device-height)', '(min-device-height:1px)', '(max-device-height:1000000px)'], + tests: [ + '(device-height)', + '(device-height:720px)', + '(min-device-height:1px)', + '(max-device-height:1000000px)', + ], }, orientation: { links: { tr: '#orientation', dev: '#orientation', }, - tests: ['(orientation:portrait)', '(orientation:landscape)'], + tests: ['(orientation)', '(orientation:portrait)', '(orientation:landscape)'], }, 'aspect-ratio': { links: { @@ -64,8 +78,9 @@ export default { }, tests: [ '(aspect-ratio)', + '(aspect-ratio:16/9)', + '(aspect-ratio:16 / 9)', '(min-aspect-ratio:1/1000000)', - '(min-aspect-ratio:1 / 1000000)', '(max-aspect-ratio:1000000/1)', ], }, @@ -76,8 +91,9 @@ export default { }, tests: [ '(device-aspect-ratio)', + '(device-aspect-ratio:16/9)', + '(device-aspect-ratio:16 / 9)', '(min-device-aspect-ratio:1/1000000)', - '(min-device-aspect-ratio:1 / 1000000)', '(max-device-aspect-ratio:1000000/1)', ], }, @@ -86,21 +102,21 @@ export default { tr: '#color', dev: '#color', }, - tests: ['(color)', '(min-color: 0)', '(max-color: 100)'], + tests: ['(color)', '(color: 8)', '(min-color: 0)', '(max-color: 1000000)'], }, 'color-index': { links: { tr: '#color-index', dev: '#color-index', }, - tests: ['all, (color-index)', '(min-color-index: 0)', '(max-color-index: 10000000)'], + tests: ['(color-index)', '(color-index: 256)', '(min-color-index: 0)', '(max-color-index: 1000000)'], }, monochrome: { links: { tr: '#monochrome', dev: '#monochrome', }, - tests: ['all, (monochrome)', '(min-monochrome: 0)', '(max-monochrome: 10000)'], + tests: ['(monochrome)', '(monochrome: 8)', '(min-monochrome: 0)', '(max-monochrome: 1000000)'], }, resolution: { links: { @@ -109,9 +125,10 @@ export default { }, tests: [ '(resolution)', + '(resolution:96dpi)', + '(resolution:10dpcm)', '(min-resolution: 1dpi)', '(max-resolution: 1000000dpi)', - '(max-resolution: 1000000dpcm)', ], }, scan: { @@ -119,14 +136,14 @@ export default { tr: '#scan', dev: '#scan', }, - tests: ['not tv, (scan: progressive)', 'not tv, (scan: interlace)'], + tests: ['(scan)', '(scan: progressive)', '(scan: interlace)'], }, grid: { links: { tr: '#grid', dev: '#grid', }, - tests: ['all, (grid)', '(grid: 0), (grid: 1)'], + tests: ['(grid)', '(grid: 0)', '(grid: 1)'], }, }, }; diff --git a/tests/mediaqueries-4.js b/tests/mediaqueries-4.js index d1e90ef5..b5fee205 100644 --- a/tests/mediaqueries-4.js +++ b/tests/mediaqueries-4.js @@ -8,6 +8,35 @@ export default { stability: 'stable', }, 'Media queries': { + Syntax: { + links: { + tr: '#mq-syntax', + dev: '#mq-syntax', + }, + tests: [ + 'not (width)', + '(width) or (height)', + '(not (width))', + '((width) and (height))', + '((width) or (height))', + 'all and not (width)', + 'all and (not (width))', + 'all and ((width) and (height))', + 'all and ((width) or (height))', + '(width = 1280px)', + '(width < 1000000px)', + '(width <= 1000000px)', + '(width > 1px)', + '(width >= 1px)', + '(1280px = width)', + '(1px < width)', + '(1px <= width)', + '(1000000px > width)', + '(1000000px >= width)', + '(1px <= width < 1000000px)', + '(1000000px > width >= 1px)', + ], + }, resolution: { links: { tr: '#resolution', @@ -56,9 +85,9 @@ export default { dev: '#mf-overflow-block', }, tests: [ + '(overflow-block)', '(overflow-block: none)', '(overflow-block: scroll)', - '(overflow-block: optional-paged)', '(overflow-block: paged)', ], }, @@ -67,7 +96,7 @@ export default { tr: '#mf-overflow-inline', dev: '#mf-overflow-inline', }, - tests: ['(overflow-inline: none)', '(overflow-inline: scroll)'], + tests: ['(overflow-inline)', '(overflow-inline: none)', '(overflow-inline: scroll)'], }, 'color-gamut': { links: { diff --git a/tests/mediaqueries-5.js b/tests/mediaqueries-5.js index 19e092b9..45ad9bf9 100644 --- a/tests/mediaqueries-5.js +++ b/tests/mediaqueries-5.js @@ -14,6 +14,7 @@ export default { dev: '#display-modes', }, tests: [ + '(display-mode)', '(display-mode: fullscreen)', '(display-mode: standalone)', '(display-mode: minimal-ui)', @@ -62,6 +63,13 @@ export default { }, tests: ['(prefers-color-scheme)', '(prefers-color-scheme: light)', '(prefers-color-scheme: dark)'], }, + 'prefers-reduced-data': { + links: { + tr: '#prefers-reduced-data', + dev: '#prefers-reduced-data', + }, + tests: ['(prefers-reduced-data)', '(prefers-reduced-data: no-preference)', '(prefers-reduced-data: reduce)'], + }, scripting: { links: { tr: '#scripting', @@ -84,7 +92,7 @@ export default { 'forced-colors': { links: { tr: '#forced-colors', - dev: '#prefers-contrast', + dev: '#forced-colors', }, tests: ['(forced-colors)', '(forced-colors: none)', '(forced-colors: active)'], }, @@ -100,21 +108,21 @@ export default { tr: '#mf-horizontal-viewport-segments', dev: '#mf-horizontal-viewport-segments', }, - tests: ['(horizontal-viewport-segments: 2)'], + tests: ['(horizontal-viewport-segments)', '(horizontal-viewport-segments: 2)'], }, 'vertical-viewport-segments': { links: { tr: '#mf-vertical-viewport-segments', dev: '#mf-vertical-viewport-segments', }, - tests: ['(vertical-viewport-segments: 2)'], + tests: ['(vertical-viewport-segments)', '(vertical-viewport-segments: 2)'], }, 'inverted-colors': { links: { tr: '#inverted', dev: '#inverted', }, - tests: ['(inverted-colors)', '(inverted-colors: none)', '(light-level: inverted)'], + tests: ['(inverted-colors)', '(inverted-colors: none)', '(inverted-colors: inverted)'], }, 'nav-controls': { links: { From 9bba4aab0ea2863e5cb22979139dd6f6ab483280 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Tue, 8 Aug 2023 00:17:42 +0200 Subject: [PATCH 457/668] Changed float to flex layout --- index.html | 104 +++++++++++++++++++++++++++-------------------------- style.css | 25 ++++++------- 2 files changed, 66 insertions(+), 63 deletions(-) diff --git a/index.html b/index.html index e5d3e138..72de61cb 100644 --- a/index.html +++ b/index.html @@ -14,63 +14,65 @@

        The CSS3 test

        -
        -
        -

        Your browser scores 0%

        -

        Determined by passing tests out of total for features

        -
        +
        +
        +
        +

        Your browser scores 0%

        +

        Determined by passing tests out of total for features

        +
        -
        -
        - - +
        Lea Verou was here diff --git a/style.css b/style.css index ef68c669..26b2f949 100644 --- a/style.css +++ b/style.css @@ -103,11 +103,13 @@ h2 { line-height: 1; } -body > section section section h1 { +#content > section section section h1 { + display: flex; + align-items: center; font-size: 180%; } -section section section section h1 { +#content > section section section section h1 { background-color: var(--tertiary-background-color); color: var(--tertiary-foreground-color); font-size: 120%; @@ -116,7 +118,7 @@ section section section section h1 { } h1 > .score { - float: right; + margin-left: auto; font-weight: bold; } @@ -212,10 +214,13 @@ body > h1 { transform: rotate(-15deg); } +#content { + display: flex; + gap: 2em; +} + #tests { - float: left; - width: 65%; - margin-right: 2em; + flex: 2; } #tests #hgroup { @@ -401,16 +406,12 @@ details li[class]::after { /* End emoticons */ aside { + flex: 1; font-size: 85%; } -aside section { - margin-left: 66%; -} - aside .caution p { padding: 1em; - margin-left: 2em; background: var(--secondary-background-color); color: var(--secondary-foreground-color); text-shadow: 0 -.1em .2em var(--secondary-shadow-color); @@ -422,7 +423,7 @@ aside h1 { aside ul { margin: .5em 0; - padding: 0 0 0 2em; + padding: 0; } aside li { From 5bc67614c1631b7be896ca64d2faf0786a1a4ba4 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Tue, 8 Aug 2023 00:24:58 +0200 Subject: [PATCH 458/668] Fixed display of footer --- index.html | 16 ++++++++-------- style.css | 3 --- 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/index.html b/index.html index 72de61cb..4e532d20 100644 --- a/index.html +++ b/index.html @@ -71,17 +71,17 @@

        Specs tested:

          Want more tests? Be my guest!
          + + - - diff --git a/style.css b/style.css index 26b2f949..9a7659dc 100644 --- a/style.css +++ b/style.css @@ -456,13 +456,10 @@ aside li:last-child { } footer { - margin-left: 65%; - font-size: 85%; word-spacing: -1px; } footer > p { - margin-left: 2em; padding: 1em 0; border-top: 1px solid var(--secondary-border-color); text-align: center; From 65b9d682c6cee8b0419da6b539ecbf8ae566db0a Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Tue, 8 Aug 2023 00:41:14 +0200 Subject: [PATCH 459/668] Made sidebar sticky --- style.css | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/style.css b/style.css index 9a7659dc..2ede0c95 100644 --- a/style.css +++ b/style.css @@ -408,6 +408,9 @@ details li[class]::after { aside { flex: 1; font-size: 85%; + align-self: flex-end; + position: sticky; + bottom: 0; } aside .caution p { @@ -422,6 +425,8 @@ aside h1 { } aside ul { + max-height: calc(100vh - 18em); + overflow: auto; margin: .5em 0; padding: 0; } From 7f902bc9cb2830fd6e5c5f79ca6cd6e894c94e36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=80=E4=B8=9D?= Date: Mon, 16 Oct 2023 15:09:32 +0800 Subject: [PATCH 460/668] fix: remove margin-box from mask-clip and mask-origin See: - https://github.com/w3c/fxtf-drafts/issues/439 - https://chromium-review.googlesource.com/c/chromium/src/+/4938853 --- tests/css-masking-1.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/tests/css-masking-1.js b/tests/css-masking-1.js index 8d782ac5..8cbc763b 100644 --- a/tests/css-masking-1.js +++ b/tests/css-masking-1.js @@ -121,7 +121,6 @@ export default { 'border-box', 'padding-box', 'content-box', - 'margin-box', 'fill-box', 'stroke-box', 'view-box', @@ -138,7 +137,6 @@ export default { 'border-box', 'padding-box', 'content-box', - 'margin-box', 'fill-box', 'stroke-box', 'view-box', From bb45dde28135dcf33ad30e57e89656f03370f48f Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Tue, 17 Oct 2023 00:05:57 +0200 Subject: [PATCH 461/668] Added View Transitions 2 --- tests.js | 2 ++ tests/css-view-transitions-2.js | 62 +++++++++++++++++++++++++++++++++ 2 files changed, 64 insertions(+) create mode 100644 tests/css-view-transitions-2.js diff --git a/tests.js b/tests.js index 0068383a..40faf42b 100644 --- a/tests.js +++ b/tests.js @@ -98,6 +98,7 @@ import cssValues4 from './tests/css-values-4.js'; import cssValues5 from './tests/css-values-5.js'; import cssVariables1 from './tests/css-variables-1.js'; import cssViewTransitions1 from './tests/css-view-transitions-1.js'; +import cssViewTransitions2 from './tests/css-view-transitions-2.js'; import cssWillChange1 from './tests/css-will-change-1.js'; import cssWritingModes3 from './tests/css-writing-modes-3.js'; import cssWritingModes4 from './tests/css-writing-modes-4.js'; @@ -258,6 +259,7 @@ export default { 'css-values-5': cssValues5, 'css-variables-1': cssVariables1, 'css-view-transitions-1': cssViewTransitions1, + 'css-view-transitions-2': cssViewTransitions2, 'css-will-change-1': cssWillChange1, 'css-writing-modes-3': cssWritingModes3, 'css-writing-modes-4': cssWritingModes4, diff --git a/tests/css-view-transitions-2.js b/tests/css-view-transitions-2.js new file mode 100644 index 00000000..d32cf5df --- /dev/null +++ b/tests/css-view-transitions-2.js @@ -0,0 +1,62 @@ +export default { + title: 'CSS View Transitions Module Level 2', + links: { + dev: 'css-view-transitions-2', + }, + status: { + stability: 'experimental', + }, + selectors: { + ':active-view-transition()': { + links: { + dev: '#the-active-view-transition-pseudo', + }, + tests: [ + ':active-view-transition(*)', + ':active-view-transition(--foo)', + ':active-view-transition(--foo, --bar)' + ], + }, + }, + '@rules': { + '@view-transition': { + links: { + dev: '#view-transition-rule', + }, + tests: [ + "@view-transition same-origin {\n trigger: none;\n}", + "@view-transition same-origin {\n trigger: navigation;\n}", + ], + }, + }, + interfaces: { + CSSRule: { + links: { + dev: '#extensions-to-cssrule-interface', + mdnGroup: 'DOM', + }, + tests: ['VIEW_TRANSITION_RULE'], + interface: function() { + return CSSRule; + }, + }, + CSSViewTransitionRule: { + links: { + dev: '#navgation-behavior-rule-interface', + mdnGroup: 'DOM', + }, + tests: ['navigationConditionText', 'trigger'], + required: '@view-transition same-origin { trigger: navigation; }', + interface: function(style) { + return style.sheet.cssRules[0]; + }, + }, + RevealEvent: { + links: { + dev: '#ready-to-render-event', + mdnGroup: 'DOM', + }, + tests: ['RevealEvent'], + }, + }, +}; From c4515c523de6c54587eb57369057e81d23f28340 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Sun, 18 Jun 2023 10:35:40 +0200 Subject: [PATCH 462/668] Added setting via the CSS url() Function --- tests/css-link-params-1.js | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/tests/css-link-params-1.js b/tests/css-link-params-1.js index 877e1f85..00413887 100644 --- a/tests/css-link-params-1.js +++ b/tests/css-link-params-1.js @@ -20,4 +20,14 @@ export default { ], }, }, + values: { + properties: ['background-image'], + 'url()': { + links: { + tr: '#setting-url', + dev: '#setting-url' + }, + tests: 'url("http://example.com/image.svg" param(--color var(--primary-color)))', + } + } }; From 1ddfe6fa1b684f762a99327a6378be14e64727c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Tue, 17 Oct 2023 00:24:26 +0200 Subject: [PATCH 463/668] Added test: light-dark() --- tests/css-color-5.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/tests/css-color-5.js b/tests/css-color-5.js index e8881148..bf7877ad 100644 --- a/tests/css-color-5.js +++ b/tests/css-color-5.js @@ -45,6 +45,15 @@ export default { 'lch(from peru calc(l * 0.8) c h)', ], }, + + 'light-dark()': { + links: { + dev: '#light-dark', + mdn: 'light-dark', + }, + tests: ['light-dark(green, red)'], + }, + }, interfaces: { CSSColorProfileRule: { From f290711faa15ebdd5db60e5eb3f0a905421c3b15 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Tue, 17 Oct 2023 00:31:36 +0200 Subject: [PATCH 464/668] Fixed test for url() --- tests/css-link-params-1.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/css-link-params-1.js b/tests/css-link-params-1.js index 00413887..96a52d93 100644 --- a/tests/css-link-params-1.js +++ b/tests/css-link-params-1.js @@ -22,12 +22,12 @@ export default { }, values: { properties: ['background-image'], - 'url()': { + 'url() with param()': { links: { tr: '#setting-url', dev: '#setting-url' }, - tests: 'url("http://example.com/image.svg" param(--color var(--primary-color)))', + tests: 'url("http://example.com/image.svg" param(--bg-color white))', } } }; From 347e26e20b7afc3f686ec775817312c41085c665 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Sun, 29 Oct 2023 02:12:19 +0200 Subject: [PATCH 465/668] Added tests for attr() --- tests/css-values-5.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/css-values-5.js b/tests/css-values-5.js index 22767242..a275011e 100644 --- a/tests/css-values-5.js +++ b/tests/css-values-5.js @@ -12,8 +12,10 @@ export default { links: { dev: '#attr-notation', }, + properties: ['content', 'width', 'padding'], tests: [ 'attr(data-px)', + 'attr(data-px, "12px")', 'attr(data-px px)', 'attr(data-px px, initial)', 'attr(data-string string)', From 27ea6ffbc931b92dbb5115531c0f146c2cbc32c0 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Tue, 7 Nov 2023 00:16:55 +0100 Subject: [PATCH 466/668] Added sibling-count() and sibling-index() --- tests/css-values-5.js | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/tests/css-values-5.js b/tests/css-values-5.js index a275011e..acbb4a74 100644 --- a/tests/css-values-5.js +++ b/tests/css-values-5.js @@ -88,6 +88,22 @@ export default { 'random-item(--random-item; linear-gradient(red, yellow); linear-gradient(green, blue))', ], }, + 'sibling-count()': { + links: { + dev: '#tree-counting', + }, + tests: [ + 'calc(sibling-count() * 10px)', + ], + }, + 'sibling-index()': { + links: { + dev: '#tree-counting', + }, + tests: [ + 'calc(sibling-index() * 10px)', + ], + }, 'toggle() with lengths': { links: { dev: '#toggle-notation', From 0d50b741a069af5a4e7df90f67f9e2b638466837 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Tue, 7 Nov 2023 00:21:43 +0100 Subject: [PATCH 467/668] Added first-valid() --- tests/css-values-5.js | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/tests/css-values-5.js b/tests/css-values-5.js index acbb4a74..52137c55 100644 --- a/tests/css-values-5.js +++ b/tests/css-values-5.js @@ -31,6 +31,39 @@ export default { 'attr(data-flex flex)', ], }, + 'first-valid()': { + links: { + dev: '#first-valid', + }, + tests: [ + 'first-valid(10px)', + 'first-valid(foo)', + 'first-valid(foo; 10px)', + ], + }, + 'attr()': { + links: { + dev: '#attr-notation', + }, + properties: ['content', 'width', 'padding'], + tests: [ + 'attr(data-px)', + 'attr(data-px, "12px")', + 'attr(data-px px)', + 'attr(data-px px, initial)', + 'attr(data-string string)', + 'attr(data-url url)', + 'attr(data-ident ident)', + 'attr(data-color color)', + 'attr(data-number number)', + 'attr(data-percentage percentage)', + 'attr(data-length length)', + 'attr(data-angle angle)', + 'attr(data-time time)', + 'attr(data-frequency frequency)', + 'attr(data-flex flex)', + ], + }, 'random()': { links: { dev: '#random', From c405ac20a318d0c90f0ed863fd2838a5690658ba Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Tue, 7 Nov 2023 00:28:11 +0100 Subject: [PATCH 468/668] Added field-sizing --- tests/css-ui-4.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tests/css-ui-4.js b/tests/css-ui-4.js index 88ee2e1c..9094fa67 100644 --- a/tests/css-ui-4.js +++ b/tests/css-ui-4.js @@ -70,6 +70,13 @@ export default { 'image-set(url("foo.png") 96dpi, url("foo-2x.png") 192dpi) 2 2, auto', ], }, + 'field-sizing': { + links: { + tr: '#field-sizing', + dev: '#field-sizing', + }, + tests: ['fixed', 'content'], + }, resize: { links: { tr: '#resize', From 328aef9751ae5bd1dc5dedbe76d33e58dc03e60e Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Tue, 7 Nov 2023 00:33:54 +0100 Subject: [PATCH 469/668] Updated @view-transition syntax --- tests/css-view-transitions-2.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tests/css-view-transitions-2.js b/tests/css-view-transitions-2.js index d32cf5df..23ca03dc 100644 --- a/tests/css-view-transitions-2.js +++ b/tests/css-view-transitions-2.js @@ -24,8 +24,10 @@ export default { dev: '#view-transition-rule', }, tests: [ - "@view-transition same-origin {\n trigger: none;\n}", - "@view-transition same-origin {\n trigger: navigation;\n}", + "@view-transition {\n navigation: auto;\n}", + "@view-transition {\n navigation: none;\n}", + "@view-transition {\n type: --test-view-transition;\n}", + "@view-transition {\n type: --test-view-transition-1 --test-view-transition-2;\n}", ], }, }, From 72df5ced1a824d153f11e658824acd805344d731 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Tue, 7 Nov 2023 19:04:36 +0100 Subject: [PATCH 470/668] Updated Color tests --- tests/css-color-4.js | 55 ++++++++++++++++++++++++++------------------ tests/css-color-5.js | 8 +++++++ 2 files changed, 40 insertions(+), 23 deletions(-) diff --git a/tests/css-color-4.js b/tests/css-color-4.js index d7fe6577..d40c8830 100644 --- a/tests/css-color-4.js +++ b/tests/css-color-4.js @@ -129,33 +129,42 @@ export default { mdn: 'color_value/color', }, tests: [ - 'color(.2 .4 .6)', - 'color(display-p3 .2. 4 .6)', - 'color(foo .2 .4 .6)', - 'color(.2 .4 .6 / .5)', + 'color(display-p3 1 0.5 0)', 'color(display-p3 .2 .4 .6 / .5)', - 'color(--foo .2 .4 .6 / .5)', - 'color(.2 .4 .6, #123456)', - 'color(display-p3 .2. 4 .6, #654321)', - 'color(20% 40% 60%)', 'color(display-p3 20% 40% 60%)', - 'color(foo 20% 40% 60%)', - 'color(20% 40% 60% / .5)', - 'color(image-p3 20% 40% 60% / .5)', - 'color(--foo 20% 40% 60% / .5)', - 'color(20% 40% 60%, #123456)', - 'color(display-p3 20% 40% 60%, #654321)', - 'color(--mycmyk 0% 20% 30% 5%)', + 'color(srgb 1 0.5 0)', + 'color(srgb .2 .4 .6 / .5)', + 'color(srgb 20% 40% 60%)', + 'color(srgb-linear 1 0.5 0)', + 'color(srgb-linear .2 .4 .6 / .5)', + 'color(srgb-linear 20% 40% 60%)', + 'color(a98-rgb 1 0.5 0)', + 'color(a98-rgb .2 .4 .6 / .5)', + 'color(a98-rgb 20% 40% 60%)', + 'color(prophoto-rgb 1 0.5 0)', + 'color(prophoto-rgb .2 .4 .6 / .5)', + 'color(prophoto-rgb 20% 40% 60%)', + 'color(rec2020 1 0.5 0)', + 'color(rec2020 .2 .4 .6 / .5)', + 'color(rec2020 20% 40% 60%)', + 'color(xyz 1 0.5 0)', + 'color(xyz .2 .4 .6 / .5)', + 'color(xyz 20% 40% 60%)', + 'color(xyz-d50 1 0.5 0)', + 'color(xyz-d50 .2 .4 .6 / .5)', + 'color(xyz-d50 20% 40% 60%)', + 'color(xyz-d65 1 0.5 0)', + 'color(xyz-d65 .2 .4 .6 / .5)', + 'color(xyz-d65 20% 40% 60%)', + 'color(xyz-d65 .2 .4 .6 / none)', + 'color(xyz-d65 .2 .4 none / .5)', + 'color(xyz-d65 .2 none .4 / .5)', + 'color(xyz-d65 none .2 .4 / .5)', + 'color(xyz-d65 none none .4 / .5)', + 'color(xyz-d65 none none none)', + 'color(xyz-d65 none none none / none)', ], }, - 'device-cmyk()': { - links: { - tr: '#cmyk-colors', - dev: '#cmyk-colors', - mdn: 'color_value/device-cmyk', - }, - tests: ['device-cmyk(.2 .3 .4 .5)', 'device-cmyk(.2 .3 .4 .5 / .5)', 'device-cmyk(.2 .3 .4 .5 / 50%)'], - }, 'percentages in opacity': { links: { tr: '#transparency', diff --git a/tests/css-color-5.js b/tests/css-color-5.js index bf7877ad..9e2a4894 100644 --- a/tests/css-color-5.js +++ b/tests/css-color-5.js @@ -54,6 +54,14 @@ export default { tests: ['light-dark(green, red)'], }, + 'device-cmyk()': { + links: { + tr: '#cmyk-colors', + dev: '#cmyk-colors', + mdn: 'color_value/device-cmyk', + }, + tests: ['device-cmyk(.2 .3 .4 .5)', 'device-cmyk(.2 .3 .4 .5 / .5)', 'device-cmyk(.2 .3 .4 .5 / 50%)'], + }, }, interfaces: { CSSColorProfileRule: { From f967fbc4f206c51d7c353148c87acb59bad29eab Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Tue, 12 Dec 2023 23:51:02 +0100 Subject: [PATCH 471/668] Updated CSS Text 4 --- tests/css-text-4.js | 290 +++++++++++++++++++++++++++++++++++++------- 1 file changed, 243 insertions(+), 47 deletions(-) diff --git a/tests/css-text-4.js b/tests/css-text-4.js index 5ab92729..060b0ede 100644 --- a/tests/css-text-4.js +++ b/tests/css-text-4.js @@ -8,89 +8,285 @@ export default { stability: 'experimental', }, properties: { - 'text-space-collapse': { + 'hyphenate-character': { links: { - tr: '#white-space-collapsing', - dev: '#white-space-collapsing', + tr: '#hyphenate-character', + dev: '#hyphenate-character', }, - tests: ['collapse', 'discard', 'preserve', 'preserve-breaks', 'preserve-spaces'], + tests: ['auto', "'\\2010'"], }, - 'text-space-trim': { + 'hyphenate-limit-chars': { links: { - tr: '#white-space-trim', - dev: '#white-space-trim', + tr: '#hyphenate-char-limits', + dev: '#hyphenate-char-limits', + }, + tests: ['auto', '5', 'auto 3', '5 4 3'], + }, + 'hyphenate-limit-last': { + links: { + tr: '#hyphenate-line-limits', + dev: '#hyphenate-line-limits', + }, + tests: ['none', 'always', 'column', 'page', 'spread'], + }, + 'hyphenate-limit-lines': { + links: { + tr: '#hyphenate-line-limits', + dev: '#hyphenate-line-limits', + }, + tests: ['no-limit', '2'], + }, + 'hyphenate-limit-zone': { + links: { + tr: '#hyphenate-size-limits', + dev: '#hyphenate-size-limits', + }, + tests: ['1%', '1em'], + }, + 'letter-spacing': { + links: { + tr: '#letter-spacing-property', + dev: '#letter-spacing-property', + }, + tests: ['1%'], + }, + 'line-padding': { + links: { + tr: '#line-padding-property', + dev: '#line-padding-property', + }, + tests: ['1em'], + }, + 'text-align': { + links: { + tr: '#text-align-property', + dev: '#text-align-property', + }, + tests: ['"a"'], + }, + 'text-align-all': { + links: { + tr: '#text-align-all-property', + dev: '#text-align-all-property', + }, + tests: ['"a"'], + }, + 'text-autospace': { + links: { + tr: '#text-autospace-property', + dev: '#text-autospace-property', + }, + tests: [ + 'normal', + 'no-autospace', + 'ideograph-alpha', + 'ideograph-numeric', + 'punctuation', + 'ideograph-alpha punctuation', + 'ideograph-alpha ideograph-numeric punctuation', + 'insert', + 'replace', + 'ideograph-alpha insert', + 'ideograph-alpha replace', + 'auto', + ], + }, + 'text-group-align': { + links: { + tr: '#text-group-align-property', + dev: '#text-group-align-property', + }, + tests: ['none', 'start', 'end', 'left', 'right', 'center'], + }, + 'text-justify': { + links: { + tr: '#text-justify-property', + dev: '#text-justify-property', + }, + tests: ['ruby', 'no-compress', 'inter-word no-compress'], + }, + 'text-spacing': { + links: { + tr: '#text-spacing-property', + dev: '#text-spacing-property', }, tests: [ + 'normal', 'none', - 'trim-inner', - ' discard-before', - 'discard-after', - 'trim-inner discard-before', - 'trim-inner discard-before discard-after', + 'auto', + 'space-all', + 'trim-auto', + 'allow-end', + 'space-first', + 'allow-end space-first', + 'trim-all', + 'no-autospace', + 'ideograph-alpha', + 'ideograph-numeric', + 'punctuation', + 'ideograph-alpha punctuation', + 'ideograph-alpha ideograph-numeric punctuation', + 'insert', + 'replace', + 'ideograph-alpha insert', + 'ideograph-alpha replace', + 'trim-auto no-autospace', + ], + }, + 'text-spacing-trim': { + links: { + tr: '#text-spacing-property', + dev: '#text-spacing-property', + }, + tests: [ + 'space-all', + 'trim-auto', + 'allow-end', + 'space-first', + 'allow-end space-first', + 'trim-all', ], }, 'text-wrap': { links: { - tr: '#text-wrap', - dev: '#text-wrap', + tr: '#text-wrap-shorthand', + dev: '#text-wrap-shorthand', }, - tests: ['wrap', 'nowrap', 'balance '], + tests: [ + 'wrap', + 'nowrap', + "auto", + "balance", + "stable", + "pretty", + "nowrap pretty", + "wrap balance", + ], }, - 'wrap-before': { + 'text-wrap-mode': { links: { - tr: '#wrap-before', - dev: '#wrap-before', + tr: '#text-wrap-mode', + dev: '#text-wrap-mode', }, - tests: ['auto', 'avoid', 'avoid-line', 'avoid-flex', 'line', 'flex'], + tests: ['wrap', 'nowrap'], }, - 'wrap-after': { + 'text-wrap-style': { links: { - tr: '#wrap-before', - dev: '#wrap-before', + tr: '#text-wrap-style', + dev: '#text-wrap-style', }, - tests: ['auto', 'avoid', 'avoid-line', 'avoid-flex', 'line', 'flex'], + tests: ['auto', 'balance', 'stable', 'pretty'], }, - 'wrap-inside': { + 'white-space': { links: { - tr: '#wrap-inside', - dev: '#wrap-inside', + tr: '#white-space-property', + dev: '#white-space-property', }, - tests: ['auto', 'avoid'], + tests: [ + 'collapse', + 'discard', + 'preserve', + 'preserve-breaks', + 'preserve-spaces', + 'break-spaces', + 'wrap', + 'none', + 'discard-before', + 'discard-after', + 'discard-inner', + 'discard-before discard-inner', + 'discard-inner discard-before discard-after', + ], }, - 'hyphenate-character': { + 'white-space-collapse': { links: { - tr: '#hyphenate-character', - dev: '#hyphenate-character', + tr: '#white-space-collapsing', + dev: '#white-space-collapsing', }, - tests: ['auto', "'\\2010'"], + tests: [ + 'collapse', + 'discard', + 'preserve', + 'preserve-breaks', + 'preserve-spaces', + 'break-spaces', + ], }, - 'hyphenate-limit-zone': { + 'white-space-trim': { links: { - tr: '#hyphenate-size-limits', - dev: '#hyphenate-size-limits', + tr: '#white-space-trim', + dev: '#white-space-trim', }, - tests: ['1%', '1em'], + tests: [ + 'none', + 'discard-before', + 'discard-after', + 'discard-inner', + 'discard-before discard-inner', + 'discard-inner discard-before discard-after', + ], }, - 'hyphenate-limit-chars': { + 'word-break': { links: { - tr: '#hyphenate-char-limits', - dev: '#hyphenate-char-limits', + tr: '#word-break-property', + dev: '#word-break-property', }, - tests: ['auto', '5', 'auto 3', '5 4 3'], + tests: ['manual', 'auto-phrase'], }, - 'hyphenate-limit-lines': { + 'word-space-transform': { links: { - tr: '#hyphenate-line-limits', - dev: '#hyphenate-line-limits', + tr: '#word-space-transform', + dev: '#word-space-transform', }, - tests: ['no-limit', '2'], + tests: [ + 'none', + 'space', + 'ideographic-space', + 'space auto-phrase', + 'ideographic-space auto-phrase', + ], }, - 'hyphenate-limit-last': { + 'word-spacing': { links: { - tr: '#hyphenate-line-limits', - dev: '#hyphenate-line-limits', + tr: '#word-spacing-property', + dev: '#word-spacing-property', }, - tests: ['none', 'always', 'column', 'page', 'spread'], + tests: ['1%'], + }, + 'wrap-after': { + links: { + tr: '#wrap-before', + dev: '#wrap-before', + }, + tests: [ + 'auto', + 'avoid', + 'avoid-line', + 'avoid-flex', + 'line', + 'flex', + ], + }, + 'wrap-before': { + links: { + tr: '#wrap-before', + dev: '#wrap-before', + }, + tests: [ + 'auto', + 'avoid', + 'avoid-line', + 'avoid-flex', + 'line', + 'flex', + ], + }, + 'wrap-inside': { + links: { + tr: '#wrap-inside', + dev: '#wrap-inside', + }, + tests: ['auto', 'avoid'], }, }, }; From 814663c6e576eb39c16aaad8d9a8b6d2a4783bc8 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Mon, 25 Dec 2023 00:49:50 +0100 Subject: [PATCH 472/668] Added filter for CSS 2023 and marked CSS View Transitions 1 as stable --- index.html | 1 + tests/css-view-transitions-1.js | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/index.html b/index.html index 4e532d20..a80a8b4d 100644 --- a/index.html +++ b/index.html @@ -61,6 +61,7 @@

          Filter:

          +
          diff --git a/tests/css-view-transitions-1.js b/tests/css-view-transitions-1.js index f81f0e60..84430d25 100644 --- a/tests/css-view-transitions-1.js +++ b/tests/css-view-transitions-1.js @@ -5,7 +5,7 @@ export default { dev: 'css-view-transitions-1', }, status: { - stability: 'experimental', + stability: 'stable', }, properties: { 'view-transition-name': { From 87e8a9663ccd25e48f2f7928ea10d3a7f0c0fddd Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Mon, 25 Dec 2023 01:04:34 +0100 Subject: [PATCH 473/668] Added CSS Variables 2 --- tests.js | 2 ++ tests/css-variables-2.js | 21 +++++++++++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 tests/css-variables-2.js diff --git a/tests.js b/tests.js index 40faf42b..c52bbc41 100644 --- a/tests.js +++ b/tests.js @@ -97,6 +97,7 @@ import cssValues3 from './tests/css-values-3.js'; import cssValues4 from './tests/css-values-4.js'; import cssValues5 from './tests/css-values-5.js'; import cssVariables1 from './tests/css-variables-1.js'; +import cssVariables2 from './tests/css-variables-2.js'; import cssViewTransitions1 from './tests/css-view-transitions-1.js'; import cssViewTransitions2 from './tests/css-view-transitions-2.js'; import cssWillChange1 from './tests/css-will-change-1.js'; @@ -258,6 +259,7 @@ export default { 'css-values-4': cssValues4, 'css-values-5': cssValues5, 'css-variables-1': cssVariables1, + 'css-variables-2': cssVariables2, 'css-view-transitions-1': cssViewTransitions1, 'css-view-transitions-2': cssViewTransitions2, 'css-will-change-1': cssWillChange1, diff --git a/tests/css-variables-2.js b/tests/css-variables-2.js new file mode 100644 index 00000000..8514b003 --- /dev/null +++ b/tests/css-variables-2.js @@ -0,0 +1,21 @@ +export default { + title: 'CSS Custom Properties for Cascading Variables Module Level 2', + links: { + tr: 'css-variables-2', + dev: 'css-variables-2', + }, + status: { + stability: 'experimental', + }, + declaration: { + 'Variable units': { + links: { + dev: '#variable-units', + mdn: '--*', + }, + tests: [ + 'margin-block: 1.5--bs', + ], + }, + }, +}; From 3667510bb3589ffc8fad0cb66b309f20f5793bcf Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Mon, 25 Dec 2023 01:05:37 +0100 Subject: [PATCH 474/668] Removed TR link for CSS Variables 2 --- tests/css-variables-2.js | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/css-variables-2.js b/tests/css-variables-2.js index 8514b003..6c0bc9eb 100644 --- a/tests/css-variables-2.js +++ b/tests/css-variables-2.js @@ -1,7 +1,6 @@ export default { title: 'CSS Custom Properties for Cascading Variables Module Level 2', links: { - tr: 'css-variables-2', dev: 'css-variables-2', }, status: { From 4f90572ea64165e40b33a4a67370902a4436a924 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Mon, 25 Dec 2023 01:14:30 +0100 Subject: [PATCH 475/668] Fixed display of mark --- style.css | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/style.css b/style.css index 2ede0c95..f1a1a109 100644 --- a/style.css +++ b/style.css @@ -192,7 +192,6 @@ body > h1 { font-weight: bold; text-transform: uppercase; text-shadow: 0 .1em .1em var(--secondary-shadow-color); - z-index: 1; transform: rotate(-90deg) translateX(-100%); transform-origin: top left; @@ -201,7 +200,7 @@ body > h1 { #mark { position: fixed; left: 10px; - top: 230px; + top: 235px; z-index: 2; } From 2ad8d369e78d4def70c0349e255a6fd9b3520308 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Mon, 25 Dec 2023 12:14:48 +0100 Subject: [PATCH 476/668] Properly fixed display of mark --- index.html | 3 ++- style.css | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/index.html b/index.html index a80a8b4d..6f3e7e37 100644 --- a/index.html +++ b/index.html @@ -74,7 +74,6 @@

          Specs tested:

          - Lea Verou was here

          Results ✿ Handcrafted by Lea Verou and friends @@ -83,6 +82,8 @@

          Specs tested:

          +Lea Verou was here + diff --git a/style.css b/style.css index f1a1a109..6b0d2e4a 100644 --- a/style.css +++ b/style.css @@ -188,6 +188,7 @@ body > h1 { background: var(--secondary-background-color); box-shadow: -2px 2px 10px var(--secondary-shadow-color); color: var(--secondary-foreground-color); + z-index: 1; font-size: 150%; font-weight: bold; text-transform: uppercase; From fc463a2d86c9e3edbc629cd73fe499b57bc44e84 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Tue, 26 Dec 2023 23:19:06 +0100 Subject: [PATCH 477/668] Fixed test for grid-area --- tests/css-grid-1.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/css-grid-1.js b/tests/css-grid-1.js index 3c7f7fef..da68c711 100644 --- a/tests/css-grid-1.js +++ b/tests/css-grid-1.js @@ -173,7 +173,7 @@ export default { tr: '#placement-shorthands', dev: '#placement-shorthands', }, - tests: ['1 / 1', '1 / span 1', 'span / 10 / -1'], + tests: ['1 / 1', '1 / span 1', 'span 1 / 10 / -1'], }, 'grid-column-gap': { links: { From db92ca09420b2beb88a39cd879f731c4657c31ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Sat, 30 Dec 2023 22:55:28 +0100 Subject: [PATCH 478/668] Added color interpolation and more relative colors --- tests/css-color-5.js | 4 ++++ tests/css-images-4.js | 56 +++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 58 insertions(+), 2 deletions(-) diff --git a/tests/css-color-5.js b/tests/css-color-5.js index 9e2a4894..eecfaaf2 100644 --- a/tests/css-color-5.js +++ b/tests/css-color-5.js @@ -43,6 +43,10 @@ export default { 'hsl(from lightseagreen calc(h+180) s l)', 'lab(from orchid l 0 0)', 'lch(from peru calc(l * 0.8) c h)', + 'oklab(from oklab(54.3% -22.5% -5%) calc(1.0 - l) calc(a * 0.8) b)', + 'oklch(from oklch(52.6% 0.115 44.6deg) l c calc(h + 90))', + 'color(from color(srgb 0 0 0 / 60%) srgb alpha 0.6 0.6 / 0.9)', + 'linear-gradient(in Oklab to right, oklch(from hsl(none 3% 50%) calc(l * 0.8) c h), #4C3)' ], }, diff --git a/tests/css-images-4.js b/tests/css-images-4.js index 3824f9bc..bf3471f7 100644 --- a/tests/css-images-4.js +++ b/tests/css-images-4.js @@ -16,6 +16,31 @@ export default { }, tests: ['linear-gradient(45deg, #f06 25%, yellow 25% 50%, #f06 50% 75%, yellow 75%)'], }, + 'linear-gradient() color interpolation': { + links: { + tr: '#color-interpolation', + dev: '#color-interpolation', + mdn : 'linear-gradient' + }, + tests: [ + 'linear-gradient(to right in lch, #A37, #595)', + 'linear-gradient(in lch to right, #A37, #595)', + 'linear-gradient(in lab to right, #A37, #595)', + 'linear-gradient(in srgb to right, #A37, #595)', + 'linear-gradient(in Oklab to right, #A37, #595)', + 'linear-gradient(in oklch to right, #A37, #595)', + 'linear-gradient(in srgb-linear to right, #A37, #595)', + 'linear-gradient(in xyz to right, #A37, #595)', + 'linear-gradient(in xyz-d50 to right, #A37, #595)', + 'linear-gradient(in xyz-d65 to right, #A37, #595)', + 'linear-gradient(in hwb to right, #A37, #595)', + 'linear-gradient(in hsl to right, #A37, #595)', + 'linear-gradient(in hsl shorter hue to right, #A37, #595)', + 'linear-gradient(in hsl longer hue to right, #A37, #595)', + 'linear-gradient(in hsl increasing hue to right, #A37, #595)', + 'linear-gradient(in hsl decreasing hue to right, #A37, #595)', + ], + }, 'radial-gradient()': { links: { tr: '#radial-gradients', @@ -23,6 +48,20 @@ export default { }, tests: ['radial-gradient(center, red 0% 25%, blue 25% 75%, red 75% 100%)'], }, + 'radial-gradient() color interpolation': { + links: { + tr: '#radial-color-interpolation', + dev: '#radial-color-interpolation', + mdn: 'radial-gradient' + }, + tests: [ + 'radial-gradient(farthest-side at left bottom in lab, color(display-p3 0.918 0.2 0.161), #081)', + 'radial-gradient(in lab farthest-side at left bottom, color(display-p3 0.918 0.2 0.161), #081)', + 'radial-gradient(in srgb farthest-side at left bottom, color(display-p3 0.918 0.2 0.161), #081)', + 'radial-gradient(in Oklab farthest-side at left bottom, color(display-p3 0.918 0.2 0.161), #081)', + 'radial-gradient(in hsl shorter hue at left bottom, color(display-p3 0.918 0.2 0.161), #081)', + ], + }, 'conic-gradient()': { links: { tr: '#conic-gradients', @@ -39,6 +78,19 @@ export default { 'conic-gradient(black 25%, white 0deg 50%, black 0deg 75%, white 0deg)', ], }, + 'conic-gradient() color interpolation': { + links: { + tr: '#conic-gradients', + dev: '#conic-gradients', + mdn: 'conic-gradient' + }, + tests: [ + 'conic-gradient(#f06 0deg in lab, gold 1turn)', + 'conic-gradient(in lab #f06 0deg, gold 1turn);', + 'conic-gradient(in lab from 45deg, white, black, white))', + 'conic-gradient(in hsl shorter hue from 45deg, white, black, white))', + ], + }, 'repeating-conic-gradient()': { links: { tr: '#repeating-gradients', @@ -125,9 +177,9 @@ export default { mdnGroup: 'DOM', }, tests: ['elementSources'], - interface: function() { + interface: function () { return CSS; - } + }, }, }, }; From 5eb59069f65222fd7affd69f958bfc48784713b7 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Sun, 31 Dec 2023 22:46:01 +0100 Subject: [PATCH 479/668] Removed corner-shape from CSS Backgrounds 4 and added logical background-position-* longhands --- tests/css-backgrounds-4.js | 68 ++++++++++++++++++++++++++++++++++---- 1 file changed, 61 insertions(+), 7 deletions(-) diff --git a/tests/css-backgrounds-4.js b/tests/css-backgrounds-4.js index bb3e84f4..782cc7c3 100644 --- a/tests/css-backgrounds-4.js +++ b/tests/css-backgrounds-4.js @@ -71,16 +71,70 @@ export default { 'bottom 20px', ], }, - 'corner-shape': { + 'background-position-block': { links: { - dev: '#corner-shaping', + dev: '#background-position-longhands', }, tests: [ - 'round', - 'angle', - 'round angle', - 'round angle round', - 'round angle round angle', + 'center', + 'start', + 'end', + '50%', + 'start, start', + 'start, end', + 'end, start', + 'start, 0%', + '10%, 20%, 40%', + '0px', + '30px', + '0%, 10%, 20%, 30%', + 'start, start, start, start, start', + 'calc(20px)', + 'calc(20px + 1em)', + 'calc(20px / 2)', + 'calc(20px + 50%)', + 'calc(50% - 10px)', + 'calc(-20px)', + 'calc(-50%)', + 'calc(-20%)', + 'end 20px', + 'start 20px', + 'end -50px', + 'start -50px', + 'end 20px', + ], + }, + 'background-position-inline': { + links: { + dev: '#background-position-longhands', + }, + tests: [ + 'center', + 'start', + 'end', + '50%', + 'start, start', + 'start, end', + 'end, start', + 'start, 0%', + '10%, 20%, 40%', + '0px', + '30px', + '0%, 10%, 20%, 30%', + 'start, start, start, start, start', + 'calc(20px)', + 'calc(20px + 1em)', + 'calc(20px / 2)', + 'calc(20px + 50%)', + 'calc(50% - 10px)', + 'calc(-20px)', + 'calc(-50%)', + 'calc(-20%)', + 'end 20px', + 'start 20px', + 'end -50px', + 'start -50px', + 'end 20px', ], }, }, From 8f9be5070a3a3e06af74513fb7674553bf456154 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Mon, 1 Jan 2024 00:58:22 +0100 Subject: [PATCH 480/668] Updated CSS Containment 3 --- tests/css-containment-3.js | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/tests/css-containment-3.js b/tests/css-containment-3.js index 6f73699e..f44ee45c 100644 --- a/tests/css-containment-3.js +++ b/tests/css-containment-3.js @@ -90,12 +90,9 @@ export default { dev: '#container-type', }, tests: [ - 'none', - 'style', + 'normal', 'size', 'inline-size', - 'style size', - 'style inline-size', ], }, 'container-name': { @@ -110,7 +107,13 @@ export default { tr: '#container-shorthand', dev: '#container-shorthand', }, - tests: ['none', 'style', 'x / size', 'x y / size', 'x / size style'], + tests: [ + 'none', + 'x / normal', + 'x / size', + 'x / inline-size', + 'x y / size', + ], }, }, interfaces: { From 180d0174451287e2bd05af05492efc8e837b9d7a Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Mon, 1 Jan 2024 01:28:29 +0100 Subject: [PATCH 481/668] Fixed tests for color interpolation in conic-gradient() --- tests/css-images-4.js | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/tests/css-images-4.js b/tests/css-images-4.js index bf3471f7..31eefb87 100644 --- a/tests/css-images-4.js +++ b/tests/css-images-4.js @@ -27,7 +27,7 @@ export default { 'linear-gradient(in lch to right, #A37, #595)', 'linear-gradient(in lab to right, #A37, #595)', 'linear-gradient(in srgb to right, #A37, #595)', - 'linear-gradient(in Oklab to right, #A37, #595)', + 'linear-gradient(in oklab to right, #A37, #595)', 'linear-gradient(in oklch to right, #A37, #595)', 'linear-gradient(in srgb-linear to right, #A37, #595)', 'linear-gradient(in xyz to right, #A37, #595)', @@ -58,7 +58,7 @@ export default { 'radial-gradient(farthest-side at left bottom in lab, color(display-p3 0.918 0.2 0.161), #081)', 'radial-gradient(in lab farthest-side at left bottom, color(display-p3 0.918 0.2 0.161), #081)', 'radial-gradient(in srgb farthest-side at left bottom, color(display-p3 0.918 0.2 0.161), #081)', - 'radial-gradient(in Oklab farthest-side at left bottom, color(display-p3 0.918 0.2 0.161), #081)', + 'radial-gradient(in oklab farthest-side at left bottom, color(display-p3 0.918 0.2 0.161), #081)', 'radial-gradient(in hsl shorter hue at left bottom, color(display-p3 0.918 0.2 0.161), #081)', ], }, @@ -85,10 +85,12 @@ export default { mdn: 'conic-gradient' }, tests: [ - 'conic-gradient(#f06 0deg in lab, gold 1turn)', - 'conic-gradient(in lab #f06 0deg, gold 1turn);', - 'conic-gradient(in lab from 45deg, white, black, white))', - 'conic-gradient(in hsl shorter hue from 45deg, white, black, white))', + 'conic-gradient(in lab, #f06, gold)', + 'conic-gradient(in lab, #f06 0deg, gold 1turn)', + 'conic-gradient(from 45deg in lch, white, black, white)', + 'conic-gradient(in srgb from 45deg, white, black, white)', + 'conic-gradient(in oklab at top left, white, black, white)', + 'conic-gradient(in hsl shorter hue from 45deg, white, black, white)', ], }, 'repeating-conic-gradient()': { From 1a975f9e4528a700034e1874d4733d425e4fa5a4 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Tue, 2 Jan 2024 22:39:00 +0100 Subject: [PATCH 482/668] Added more tests for stripes() function in outline-color --- tests/css-ui-4.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/tests/css-ui-4.js b/tests/css-ui-4.js index 9094fa67..e52834f8 100644 --- a/tests/css-ui-4.js +++ b/tests/css-ui-4.js @@ -200,7 +200,13 @@ export default { tr: '#outline-color', dev: '#outline-color', }, - tests: ['stripes(red, yellow, green, blue)'] + tests: [ + 'stripes(red, yellow, green, blue)', + 'stripes(red 1px, yellow 2px, green 3px, blue 4px)', + 'stripes(red 10%, yellow 20%, green 30%, blue 40%)', + 'stripes(red 1fr, yellow 2fr, green 3fr, blue 4fr)', + 'stripes(red, yellow 2px, green 30%, blue 4fr)', + ] }, 'pointer-events': { links: { From 9b8673a5d6893ee8c5df214014951fddace7ab3c Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Tue, 2 Jan 2024 22:52:10 +0100 Subject: [PATCH 483/668] Updated text-spacing-trim and text-spacing --- tests/css-text-4.js | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/tests/css-text-4.js b/tests/css-text-4.js index 060b0ede..e0a32504 100644 --- a/tests/css-text-4.js +++ b/tests/css-text-4.js @@ -111,14 +111,13 @@ export default { dev: '#text-spacing-property', }, tests: [ - 'normal', 'none', 'auto', + 'normal', 'space-all', 'trim-auto', - 'allow-end', + 'trim-start', 'space-first', - 'allow-end space-first', 'trim-all', 'no-autospace', 'ideograph-alpha', @@ -131,6 +130,7 @@ export default { 'ideograph-alpha insert', 'ideograph-alpha replace', 'trim-auto no-autospace', + 'ideograph-alpha insert space-first', ], }, 'text-spacing-trim': { @@ -140,11 +140,12 @@ export default { }, tests: [ 'space-all', + 'normal', 'trim-auto', - 'allow-end', + 'trim-start', 'space-first', - 'allow-end space-first', 'trim-all', + 'auto', ], }, 'text-wrap': { From 3ddcd1d2f03f0f95f310fa5157097574c2d1fd6d Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Tue, 2 Jan 2024 23:05:40 +0100 Subject: [PATCH 484/668] Added CSS Color HDR 1 --- tests.js | 2 ++ tests/css-color-hdr-1.js | 61 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+) create mode 100644 tests/css-color-hdr-1.js diff --git a/tests.js b/tests.js index c52bbc41..f85ce473 100644 --- a/tests.js +++ b/tests.js @@ -20,6 +20,7 @@ import cssColor4 from './tests/css-color-4.js'; import cssColor5 from './tests/css-color-5.js'; import cssColor6 from './tests/css-color-6.js'; import cssColorAdjust1 from './tests/css-color-adjust-1.js'; +import cssColorHdr1 from './tests/css-color-hdr-1.js'; import cssComposition1 from './tests/css-composition-1.js'; import cssComposition2 from './tests/css-composition-2.js'; import cssConditional3 from './tests/css-conditional-3.js'; @@ -182,6 +183,7 @@ export default { 'css-colors-5': cssColor5, 'css-colors-6': cssColor6, 'css-colors-adjust-1': cssColorAdjust1, + 'css-colors-hdr-1': cssColorHdr1, 'css-composition-1': cssComposition1, 'css-composition-2': cssComposition2, 'css-conditional-3': cssConditional3, diff --git a/tests/css-color-hdr-1.js b/tests/css-color-hdr-1.js new file mode 100644 index 00000000..e0d42a6e --- /dev/null +++ b/tests/css-color-hdr-1.js @@ -0,0 +1,61 @@ +export default { + title: 'CSS Color HDR Module Level 1', + links: { + tr: 'css-color-hdr-1', + dev: 'css-color-hdr-1', + }, + status: { + stability: 'experimental', + }, + values: { + properties: ['color', 'background-color', 'border-color', 'text-decoration-color', 'column-rule-color'], + 'rec2100-pq color space': { + links: { + dev: '#valdef-color-rec2100-pq', + }, + tests: [ + 'color(rec2100-pq 1.0 1.0 1.0)', + ], + }, + 'rec2100-hlg color space': { + links: { + dev: '#valdef-color-rec2100-hlg', + }, + tests: [ + 'color(rec2100-hlg 0.75 0.75 0.75)', + ], + }, + 'rec2100-linear color space': { + links: { + dev: '#valdef-color-rec2100-linear', + }, + tests: [ + 'color(rec2100-linear 9.852 9.852 9.852)', + ], + }, + 'Jzazbz color space': { + links: { + dev: '#Jzazbz', + }, + tests: [ + 'color(jzazbz 0.75 0.75 0.75)', + ], + }, + 'JzCzHz color space': { + links: { + dev: '#JzCzHz', + }, + tests: [ + 'color(jzczhz 0.75 0.75 0.75)', + ], + }, + 'ICtCp color space': { + links: { + dev: '#ICtCp', + }, + tests: [ + 'color(ictcp 0.5393 -0.2643 -0.0625)', + ], + }, + }, +}; From a22f2879a2fdc9d9f66f8fe477fc2d3f849f40be Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Tue, 2 Jan 2024 23:54:58 +0100 Subject: [PATCH 485/668] Updated CSS Anchor Position 1 --- tests/css-anchor-position-1.js | 106 +++++++++++++++++++++++++++++---- 1 file changed, 94 insertions(+), 12 deletions(-) diff --git a/tests/css-anchor-position-1.js b/tests/css-anchor-position-1.js index 456c7876..7dff8014 100644 --- a/tests/css-anchor-position-1.js +++ b/tests/css-anchor-position-1.js @@ -27,8 +27,8 @@ export default { 'inset', ], tests: [ - 'anchor(auto)', - 'anchor(auto-same)', + 'anchor(inside)', + 'anchor(outside)', 'anchor(top)', 'anchor(left)', 'anchor(right)', @@ -39,8 +39,8 @@ export default { 'anchor(self-end)', 'anchor(center)', 'anchor(30%)', - 'anchor(auto, 20px)', - 'anchor(auto-same, 20px)', + 'anchor(inside, 20px)', + 'anchor(outside, 20px)', 'anchor(top, 20px)', 'anchor(start, 20px)', 'anchor(30%, 20px)', @@ -52,10 +52,24 @@ export default { 'anchor(implicit top, 5%)', ], }, + 'anchor-center': { + links: { + dev: '#anchor-center', + }, + properties: [ + 'justify-self', + 'align-self', + 'justify-items', + 'align-items', + ], + tests: [ + 'anchor-center', + ], + }, 'anchor-size()': { links: { - tr: '#anchor-pos', - dev: '#anchor-pos', + tr: '#anchor-size-fn', + dev: '#anchor-size-fn', }, properties: [ 'width', @@ -91,17 +105,54 @@ export default { }, 'anchor-name': { links: { - tr: '#determining', - dev: '#determining', + tr: '#name', + dev: '#name', }, tests: ['none', '--anchor'], }, - 'anchor-scroll': { + 'inset-area': { links: { - tr: '#scroll', - dev: '#scroll', + dev: '#inset-area', }, - tests: ['none', 'default', '--anchor', 'implicit'], + tests: [ + 'none', + 'start', + 'end', + 'center', + 'self-start', + 'self-end', + 'top', + 'bottom', + 'left', + 'right', + 'x-start', + 'x-end', + 'y-start', + 'y-end', + 'x-self-start', + 'x-self-end', + 'y-self-start', + 'y-self-end', + 'all', + 'start end', + 'start center end', + 'self-start self-end', + 'self-start center self-end', + 'top bottom', + 'top center bottom', + 'left right', + 'left center right', + 'x-start x-end', + 'x-start center x-end', + 'y-start y-end', + 'y-start center y-end', + 'x-self-start x-self-end', + 'x-self-start center x-self-end', + 'y-self-start y-self-end', + 'y-self-start center y-self-end', + 'left / bottom', + 'x-start / y-end', + ], }, 'position-fallback': { links: { @@ -110,6 +161,13 @@ export default { }, tests: ['none', '--fallback'], }, + 'position-fallback-bounds': { + links: { + tr: '#fallback-bounds', + dev: '#fallback-bounds', + }, + tests: ['normal', '--fallback'], + }, }, '@rules': { '@position-fallback': { @@ -120,4 +178,28 @@ export default { tests: "@position-fallback --button-popover {\n @try {\n top: anchor(--button bottom);\n left: anchor(--button left);\n }\n\n @try {\n bottom: anchor(--button top);\n right: anchor(--button right);\n }\n}", }, }, + interfaces: { + CSSPositionFallbackRule: { + links: { + dev: '#position-fallback-rule', + mdnGroup: 'DOM', + }, + tests: ['name', 'cssRules', 'insertRule', 'deleteRule'], + required: '@position-fallback --button-popover { @try { top: anchor(--button bottom); left: anchor(--button left); } }', + interface: function(style) { + return style.sheet.cssRules[0]; + } + }, + CSSTryRule: { + links: { + dev: '#position-try-rule', + mdnGroup: 'DOM', + }, + tests: ['style', 'cssText', 'parentRule', 'parentStyleSheet'], + required: '@position-fallback --button-popover { @try { top: anchor(--button bottom); left: anchor(--button left); } }', + interface: function(style) { + return style.sheet.cssRules[0].cssRules[0]; + } + }, + }, }; From c2bf75f3c7a1eb1ab90a22e313da387d6804996c Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Wed, 3 Jan 2024 22:33:40 +0100 Subject: [PATCH 486/668] Added generic() font families --- tests/css-fonts-4.js | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/tests/css-fonts-4.js b/tests/css-fonts-4.js index eb45c32f..09126375 100644 --- a/tests/css-fonts-4.js +++ b/tests/css-fonts-4.js @@ -33,13 +33,27 @@ export default { }, tests: 'math', }, - 'fangsong': { + 'generic(fangsong)': { links: { tr: '#fangsong-def', - dev: '#fangsong-def', + dev: '#generic(fangsong)-def', mdn: 'font-family', }, - tests: 'fangsong', + tests: 'generic(fangsong)', + }, + 'generic(kai)': { + links: { + dev: '#generic(kai)-def', + mdn: 'font-family', + }, + tests: 'generic(kai)', + }, + 'generic(nastaliq)': { + links: { + dev: '#generic(nastaliq)-def', + mdn: 'font-family', + }, + tests: 'generic(nastaliq)', }, 'ui-serif': { links: { From 3b54d6631bb0d97721402d7e303c736a7fc2bd7e Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Wed, 3 Jan 2024 22:47:18 +0100 Subject: [PATCH 487/668] Removed nested image-set() test `image-set()` isn't allowed to be nested within itself. --- tests/css-images-4.js | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/css-images-4.js b/tests/css-images-4.js index 31eefb87..aeeb0079 100644 --- a/tests/css-images-4.js +++ b/tests/css-images-4.js @@ -127,7 +127,6 @@ export default { 'image-set(url(foobar.png) 2x)', 'image-set(url(foobar.png) 1x, url(bar.png) 2x, url(baz.png) 3x)', "image-set('foobar.png', 'bar.png' 2x, url(baz.png) 3x)", - "image-set(image-set('foobar.png', 'bar.png' 2x) 1x, url(baz.png) 3x)", "image-set(url(foobar.png) type('image/png'))", "image-set(url(foobar.png) 1x type('image/png'))", "image-set(url(foobar.png) type('image/png') 1x)", From fb364b67783288108c5c8477fe4012abea80547a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Sat, 24 Feb 2024 22:13:32 +0100 Subject: [PATCH 488/668] Added transition behavior property --- tests/css-transitions-2.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/tests/css-transitions-2.js b/tests/css-transitions-2.js index 2fd6164a..7ad01b1d 100644 --- a/tests/css-transitions-2.js +++ b/tests/css-transitions-2.js @@ -14,6 +14,15 @@ export default { tests: "@starting-style {\n h1 {\n background-color: red;\n }\n}", }, }, + properties: { + 'transition-behavior': { + links: { + tr: '#transition-shorthand-property', + dev: '#transition-shorthand-property', + }, + tests: ['normal', 'allow-discrete'], + }, + }, interfaces: { CSSStartingStyleRule: { links: { From 0ffa99f4fc6e5d9fa928cf5f0fe8c5c1df3f8590 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Sat, 24 Feb 2024 22:19:52 +0100 Subject: [PATCH 489/668] Fixed links for transition-behavior --- tests/css-transitions-2.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/css-transitions-2.js b/tests/css-transitions-2.js index 7ad01b1d..d3c43bff 100644 --- a/tests/css-transitions-2.js +++ b/tests/css-transitions-2.js @@ -17,8 +17,8 @@ export default { properties: { 'transition-behavior': { links: { - tr: '#transition-shorthand-property', - dev: '#transition-shorthand-property', + tr: '#transition-behavior-property', + dev: '#transition-behavior-property', }, tests: ['normal', 'allow-discrete'], }, From 38541bd201b527757cdcd0d83006ed5b05a4e899 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Sun, 7 Apr 2024 03:29:45 +0200 Subject: [PATCH 490/668] Updated CSS Anchor Position 1 --- tests/css-anchor-position-1.js | 328 +++++++++++++++++++++++++++------ 1 file changed, 272 insertions(+), 56 deletions(-) diff --git a/tests/css-anchor-position-1.js b/tests/css-anchor-position-1.js index 7dff8014..d640548d 100644 --- a/tests/css-anchor-position-1.js +++ b/tests/css-anchor-position-1.js @@ -40,9 +40,9 @@ export default { 'anchor(center)', 'anchor(30%)', 'anchor(inside, 20px)', - 'anchor(outside, 20px)', + 'anchor(outside, 30%)', 'anchor(top, 20px)', - 'anchor(start, 20px)', + 'anchor(start, 30%)', 'anchor(30%, 20px)', 'anchor(--anchor top)', 'anchor(--anchor top, 20px)', @@ -108,95 +108,311 @@ export default { tr: '#name', dev: '#name', }, - tests: ['none', '--anchor'], + tests: ['none', '--anchor', '--first-anchor, --second-anchor'], + }, + 'anchor-scope': { + links: { + tr: '#anchor-scope', + dev: '#anchor-scope', + }, + tests: [ + 'none', + 'all', + '--anchor', + '--first-anchor, --second-anchor', + ], }, 'inset-area': { links: { dev: '#inset-area', }, tests: [ - 'none', - 'start', - 'end', - 'center', - 'self-start', - 'self-end', - 'top', - 'bottom', 'left', + 'center', 'right', + 'span-left', + 'span-right', 'x-start', 'x-end', - 'y-start', - 'y-end', + 'span-x-start', + 'span-x-end', 'x-self-start', 'x-self-end', + 'span-x-self-start', + 'span-x-self-end', + 'span-all', + 'top', + 'bottom', + 'span-top', + 'span-bottom', + 'y-start', + 'y-end', + 'span-y-start', + 'span-y-end', 'y-self-start', 'y-self-end', - 'all', - 'start end', - 'start center end', + 'span-y-self-start', + 'span-y-self-end', + 'left top', + 'center span-top', + 'span-all span-all', + 'block-start', + 'block-end', + 'span-block-start', + 'span-block-end', + 'inline-start', + 'inline-end', + 'span-inline-start', + 'span-inline-end', + 'block-start inline-end', + 'span-block-start span-inline-end', + 'self-block-start', + 'self-block-end', + 'span-self-block-start', + 'span-self-block-end', + 'self-inline-start', + 'self-inline-end', + 'span-self-inline-start', + 'span-self-inline-end', + 'self-block-start self-inline-end', + 'span-self-inline-start self-block-end', + 'start', + 'end', + 'span-start', + 'span-end', + 'start start', + 'center span-end', + 'self-start', + 'self-end', + 'span-self-start', + 'span-self-end', 'self-start self-end', - 'self-start center self-end', - 'top bottom', - 'top center bottom', - 'left right', - 'left center right', - 'x-start x-end', - 'x-start center x-end', - 'y-start y-end', - 'y-start center y-end', - 'x-self-start x-self-end', - 'x-self-start center x-self-end', - 'y-self-start y-self-end', - 'y-self-start center y-self-end', - 'left / bottom', - 'x-start / y-end', + 'span-self-start span-self-end', ], }, - 'position-fallback': { + 'position-anchor': { links: { - tr: '#fallback-property', - dev: '#fallback-property', + tr: '#position-anchor', + dev: '#position-anchor', }, - tests: ['none', '--fallback'], + tests: ['implicit', '--fallback'], }, - 'position-fallback-bounds': { + 'position-try': { links: { - tr: '#fallback-bounds', - dev: '#fallback-bounds', + tr: '#position-try-prop', + dev: '#position-try-prop', }, - tests: ['normal', '--fallback'], + tests: [ + 'none', + '--try-position', + 'flip-block', + 'flip-inline', + 'flip-start', + '--try-position flip-block', + '--try-position flip-inline', + '--try-position flip-start', + 'inset-area(left)', + 'inset-area(center)', + 'inset-area(right)', + 'inset-area(span-left)', + 'inset-area(span-right)', + 'inset-area(x-start)', + 'inset-area(x-end)', + 'inset-area(span-x-start)', + 'inset-area(span-x-end)', + 'inset-area(x-self-start)', + 'inset-area(x-self-end)', + 'inset-area(span-x-self-start)', + 'inset-area(span-x-self-end)', + 'inset-area(span-all)', + 'inset-area(top)', + 'inset-area(bottom)', + 'inset-area(span-top)', + 'inset-area(span-bottom)', + 'inset-area(y-start)', + 'inset-area(y-end)', + 'inset-area(span-y-start)', + 'inset-area(span-y-end)', + 'inset-area(y-self-start)', + 'inset-area(y-self-end)', + 'inset-area(span-y-self-start)', + 'inset-area(span-y-self-end)', + 'inset-area(left top)', + 'inset-area(center span-top)', + 'inset-area(span-all span-all)', + 'inset-area(block-start)', + 'inset-area(block-end)', + 'inset-area(span-block-start)', + 'inset-area(span-block-end)', + 'inset-area(inline-start)', + 'inset-area(inline-end)', + 'inset-area(span-inline-start)', + 'inset-area(span-inline-end)', + 'inset-area(block-start inline-end)', + 'inset-area(span-block-start span-inline-end)', + 'inset-area(self-block-start)', + 'inset-area(self-block-end)', + 'inset-area(span-self-block-start)', + 'inset-area(span-self-block-end)', + 'inset-area(self-inline-start)', + 'inset-area(self-inline-end)', + 'inset-area(span-self-inline-start)', + 'inset-area(span-self-inline-end)', + 'inset-area(self-block-start self-inline-end)', + 'inset-area(span-self-inline-start self-block-end)', + 'inset-area(start)', + 'inset-area(end)', + 'inset-area(span-start)', + 'inset-area(span-end)', + 'inset-area(start start)', + 'inset-area(center span-end)', + 'inset-area(self-start)', + 'inset-area(self-end)', + 'inset-area(span-self-start)', + 'inset-area(span-self-end)', + 'inset-area(self-start self-end)', + 'inset-area(span-self-start span-self-end)', + 'flip-block, --try-position', + 'flip-inline, --try-position flip-block', + '--try-position, inset-area(block-start)', + 'normal --try-position', + 'most-width flip-block', + 'most-height inset-area(left)', + 'most-block-size flip-block, --try-position', + 'most-inline-size inset-area(block-start), --try-position flip-inline', + ], + }, + 'position-try-options': { + links: { + tr: '#position-try-options', + dev: '#position-try-options', + }, + tests: [ + 'none', + '--try-position', + 'flip-block', + 'flip-inline', + 'flip-start', + '--try-position flip-block', + '--try-position flip-inline', + '--try-position flip-start', + 'inset-area(left)', + 'inset-area(center)', + 'inset-area(right)', + 'inset-area(span-left)', + 'inset-area(span-right)', + 'inset-area(x-start)', + 'inset-area(x-end)', + 'inset-area(span-x-start)', + 'inset-area(span-x-end)', + 'inset-area(x-self-start)', + 'inset-area(x-self-end)', + 'inset-area(span-x-self-start)', + 'inset-area(span-x-self-end)', + 'inset-area(span-all)', + 'inset-area(top)', + 'inset-area(bottom)', + 'inset-area(span-top)', + 'inset-area(span-bottom)', + 'inset-area(y-start)', + 'inset-area(y-end)', + 'inset-area(span-y-start)', + 'inset-area(span-y-end)', + 'inset-area(y-self-start)', + 'inset-area(y-self-end)', + 'inset-area(span-y-self-start)', + 'inset-area(span-y-self-end)', + 'inset-area(left top)', + 'inset-area(center span-top)', + 'inset-area(span-all span-all)', + 'inset-area(block-start)', + 'inset-area(block-end)', + 'inset-area(span-block-start)', + 'inset-area(span-block-end)', + 'inset-area(inline-start)', + 'inset-area(inline-end)', + 'inset-area(span-inline-start)', + 'inset-area(span-inline-end)', + 'inset-area(block-start inline-end)', + 'inset-area(span-block-start span-inline-end)', + 'inset-area(self-block-start)', + 'inset-area(self-block-end)', + 'inset-area(span-self-block-start)', + 'inset-area(span-self-block-end)', + 'inset-area(self-inline-start)', + 'inset-area(self-inline-end)', + 'inset-area(span-self-inline-start)', + 'inset-area(span-self-inline-end)', + 'inset-area(self-block-start self-inline-end)', + 'inset-area(span-self-inline-start self-block-end)', + 'inset-area(start)', + 'inset-area(end)', + 'inset-area(span-start)', + 'inset-area(span-end)', + 'inset-area(start start)', + 'inset-area(center span-end)', + 'inset-area(self-start)', + 'inset-area(self-end)', + 'inset-area(span-self-start)', + 'inset-area(span-self-end)', + 'inset-area(self-start self-end)', + 'inset-area(span-self-start span-self-end)', + 'flip-block, --try-position', + 'flip-inline, --try-position flip-block', + '--try-position, inset-area(block-start)', + ], + }, + 'position-try-order': { + links: { + tr: '#position-try-order-property', + dev: '#position-try-order-property', + }, + tests: [ + 'normal', + 'most-width', + 'most-height', + 'most-block-size', + 'most-inline-size', + ], + }, + 'position-visibility': { + links: { + tr: '#position-visibility', + dev: '#position-visibility', + }, + tests: [ + 'always', + 'anchors-valid', + 'anchors-visible', + 'no-overflow', + 'anchors-valid anchors-visible', + 'anchors-valid no-overflow', + 'anchors-visible no-overflow', + 'anchors-valid anchors-visible no-overflow', + ], }, }, '@rules': { - '@position-fallback': { + '@position-try': { links: { tr: '#fallback-rule', dev: '#fallback-rule', }, - tests: "@position-fallback --button-popover {\n @try {\n top: anchor(--button bottom);\n left: anchor(--button left);\n }\n\n @try {\n bottom: anchor(--button top);\n right: anchor(--button right);\n }\n}", + tests: [ + "@position-try --button-popover {\n top: anchor(--button bottom);\n left: anchor(--button left);\n}", + "@position-try --button-popover {\n bottom: anchor(--button top);\n right: anchor(--button right);\n margin: 1em;\n}", + "@position-try --position-try {\n inset-area: top left;\n}", + ], }, }, interfaces: { - CSSPositionFallbackRule: { - links: { - dev: '#position-fallback-rule', - mdnGroup: 'DOM', - }, - tests: ['name', 'cssRules', 'insertRule', 'deleteRule'], - required: '@position-fallback --button-popover { @try { top: anchor(--button bottom); left: anchor(--button left); } }', - interface: function(style) { - return style.sheet.cssRules[0]; - } - }, - CSSTryRule: { + CSSPositionTryRule: { links: { - dev: '#position-try-rule', + dev: '#om-position-try', mdnGroup: 'DOM', }, - tests: ['style', 'cssText', 'parentRule', 'parentStyleSheet'], - required: '@position-fallback --button-popover { @try { top: anchor(--button bottom); left: anchor(--button left); } }', + tests: ['name', 'style', 'cssText', 'parentRule', 'parentStyleSheet'], + required: '@position-try --button-popover {\n top: anchor(--button bottom);\n left: anchor(--button left);\n}', interface: function(style) { return style.sheet.cssRules[0].cssRules[0]; } From 3825668bfc42aaa6a95061591420c9412bf952dd Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Sun, 7 Apr 2024 06:41:21 +0200 Subject: [PATCH 491/668] Fixed checking boolean descriptor values --- supports.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/supports.js b/supports.js index 99c460b0..2bb0defc 100644 --- a/supports.js +++ b/supports.js @@ -117,7 +117,7 @@ return { success: (style.sheet.cssRules[pos].style && style.sheet.cssRules[pos].style.length >= 1) || - !!style.sheet.cssRules[pos][camelCase(descriptor)], + style.sheet.cssRules[pos][camelCase(descriptor)] !== undefined, }; } else { return { success: false }; From 89bdaf4485138e7fa9598870912b4b7ffd11e88d Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Sun, 7 Apr 2024 06:50:22 +0200 Subject: [PATCH 492/668] Fixed tests for Properties and Values API 1 --- tests/css-properties-values-api-1.js | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/tests/css-properties-values-api-1.js b/tests/css-properties-values-api-1.js index 1ea2d15f..b091e030 100644 --- a/tests/css-properties-values-api-1.js +++ b/tests/css-properties-values-api-1.js @@ -3,6 +3,7 @@ export default { links: { tr: 'css-properties-values-api-1', dev: 'css-properties-values-api-1', + devtype: 'houdini', }, status: { stability: 'experimental', @@ -14,35 +15,42 @@ export default { dev: '#the-syntax-descriptor', }, required: { - '*': { - descriptor: 'inherits: false', + "'x | y'": { + descriptor: "inherits: false; initial-value: x", + }, + "''": { + descriptor: "inherits: false; initial-value: 100px", + }, + "''": { + descriptor: "inherits: false; initial-value: red", }, }, tests: [ "'x | y'", "''", + "''", ], }, '@property --foo/inherits': { links: { - tr: '#the-inherits-descriptor', - dev: '#the-inherits-descriptor', + tr: '#inherits-descriptor', + dev: '#inherits-descriptor', }, required: { '*': { - descriptor: "syntax: ''", + descriptor: "syntax: ''; initial-value: red", }, }, tests: ['true', 'false'], }, '@property --foo/initial-value': { links: { - tr: '#the-initial-value-descriptor', - dev: '#the-initial-value-descriptor', + tr: '#initial-value-descriptor', + dev: '#initial-value-descriptor', }, required: { '*': { - descriptor: "syntax: ''; inherits: true", + descriptor: "syntax: ''; inherits: false", }, }, tests: ['blue', '#00f', 'rgb(0, 0, 255)'], @@ -54,7 +62,7 @@ export default { tr: '#at-property-rule', dev: '#at-property-rule', }, - tests: "@property --cool-color {\n syntax: '';\n inherits: true;\n}", + tests: "@property --cool-color {\n syntax: '';\n inherits: true;\n initial-value: red;\n}", }, }, interfaces: { From ecab0c5bd3667b672141d26d6152a1a919f40220 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Wed, 1 May 2024 00:47:49 +0200 Subject: [PATCH 493/668] Added HML pseudo-class: :popover-open & :state() --- tests/html.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/tests/html.js b/tests/html.js index 36746d1c..a0366a58 100644 --- a/tests/html.js +++ b/tests/html.js @@ -14,5 +14,17 @@ export default { }, tests: ':autofill', }, + ':popover-open': { + links: { + dev: '#selector-popover-open', + }, + tests: ':popover-open', + }, + ':state()': { + links: { + dev: '#selector-custom', + }, + tests: ':state(checked)', + }, }, }; From 40b34161b7e0b02858880779f51bd2bde3d5ddae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Tue, 14 May 2024 03:46:06 +0200 Subject: [PATCH 494/668] Added Viewport Level 1 --- tests.js | 2 ++ tests/css-viewport-1.js | 19 +++++++++++++++++++ 2 files changed, 21 insertions(+) create mode 100644 tests/css-viewport-1.js diff --git a/tests.js b/tests.js index f85ce473..2f98245c 100644 --- a/tests.js +++ b/tests.js @@ -101,6 +101,7 @@ import cssVariables1 from './tests/css-variables-1.js'; import cssVariables2 from './tests/css-variables-2.js'; import cssViewTransitions1 from './tests/css-view-transitions-1.js'; import cssViewTransitions2 from './tests/css-view-transitions-2.js'; +import cssViewport1 from './tests/css-viewport-1.js'; import cssWillChange1 from './tests/css-will-change-1.js'; import cssWritingModes3 from './tests/css-writing-modes-3.js'; import cssWritingModes4 from './tests/css-writing-modes-4.js'; @@ -264,6 +265,7 @@ export default { 'css-variables-2': cssVariables2, 'css-view-transitions-1': cssViewTransitions1, 'css-view-transitions-2': cssViewTransitions2, + 'css-viewport-1': cssViewport1, 'css-will-change-1': cssWillChange1, 'css-writing-modes-3': cssWritingModes3, 'css-writing-modes-4': cssWritingModes4, diff --git a/tests/css-viewport-1.js b/tests/css-viewport-1.js new file mode 100644 index 00000000..30471fc6 --- /dev/null +++ b/tests/css-viewport-1.js @@ -0,0 +1,19 @@ +export default { + title: 'CSS Viewport Module Level 1', + links: { + tr: 'css-viewport-1', + dev: 'css-viewport', + }, + status: { + stability: 'experimental', + }, + properties: { + 'zoom': { + links: { + tr: '#zoom-property', + dev: '#zoom-property', + }, + tests: ['0', '1', '1.5', '110%'], + }, + }, +}; From 5fcb658edcd52c4eaede351f278acf185b165761 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=80=E4=B8=9D?= Date: Thu, 23 May 2024 03:39:10 +0800 Subject: [PATCH 495/668] fix: update the syntax of anchor() and anchor-size() (#248) * fix: update the syntax of anchor() and anchor-size() see: https://github.com/w3c/csswg-drafts/issues/10312#issuecomment-2112984254 * Add anchor-center to 'place-self' and 'place-items' * Add more * Add more logical size properties to anchor-size() * fix: reomve anchor(auto) --- tests/css-anchor-position-1.js | 50 ++++++++++++++++++++++------------ 1 file changed, 33 insertions(+), 17 deletions(-) diff --git a/tests/css-anchor-position-1.js b/tests/css-anchor-position-1.js index d640548d..d56a8b24 100644 --- a/tests/css-anchor-position-1.js +++ b/tests/css-anchor-position-1.js @@ -29,6 +29,12 @@ export default { tests: [ 'anchor(inside)', 'anchor(outside)', + 'anchor(inside, 20px)', + 'anchor(outside, 30%)', + 'anchor(--anchor inside)', + 'anchor(--anchor outside)', + 'anchor(--anchor inside, 20px)', + 'anchor(--anchor outside, 30%)', 'anchor(top)', 'anchor(left)', 'anchor(right)', @@ -39,17 +45,15 @@ export default { 'anchor(self-end)', 'anchor(center)', 'anchor(30%)', - 'anchor(inside, 20px)', - 'anchor(outside, 30%)', 'anchor(top, 20px)', 'anchor(start, 30%)', 'anchor(30%, 20px)', 'anchor(--anchor top)', 'anchor(--anchor top, 20px)', 'anchor(--anchor top, 5%)', - 'anchor(implicit top)', - 'anchor(implicit top, 20px)', - 'anchor(implicit top, 5%)', + 'anchor(top)', + 'anchor(top, 20px)', + 'anchor(top, 5%)', ], }, 'anchor-center': { @@ -61,6 +65,8 @@ export default { 'align-self', 'justify-items', 'align-items', + 'place-self', + 'place-items', ], tests: [ 'anchor-center', @@ -78,6 +84,12 @@ export default { 'min-height', 'max-width', 'max-height', + 'inline-size', + 'block-size', + 'min-inline-size', + 'max-inline-size', + 'min-block-size', + 'max-block-size', ], tests: [ 'anchor-size(width)', @@ -86,23 +98,23 @@ export default { 'anchor-size(inline)', 'anchor-size(self-block)', 'anchor-size(self-inline)', + 'anchor-size(width, 20px)', + 'anchor-size(height, 5%)', 'anchor-size(--anchor width)', 'anchor-size(--anchor width, 20px)', - 'anchor-size(--anchor width, 5%)', - 'anchor-size(implicit width)', - 'anchor-size(implicit width, 20px)', - 'anchor-size(implicit width, 5%)', + 'anchor-size(--anchor height, 5%)', + 'anchor-size(--anchor block)', + 'anchor-size(--anchor inline)', + 'anchor-size(--anchor block, 20px)', + 'anchor-size(--anchor inline, 5%)', + 'anchor-size(--anchor self-block)', + 'anchor-size(--anchor self-inline)', + 'anchor-size(--anchor self-block, 20px)', + 'anchor-size(--anchor self-inline, 5%)', ], }, }, properties: { - 'anchor-default': { - links: { - tr: '#anchor-default', - dev: '#anchor-default', - }, - tests: ['--anchor', 'implicit'], - }, 'anchor-name': { links: { tr: '#name', @@ -190,12 +202,16 @@ export default { 'span-self-start span-self-end', ], }, + // The old name is anchor-default 'position-anchor': { links: { tr: '#position-anchor', dev: '#position-anchor', }, - tests: ['implicit', '--fallback'], + tests: [ + 'auto', // the old name is implicit, https://github.com/w3c/csswg-drafts/issues/10312#issuecomment-2112984254 + '--fallback' + ], }, 'position-try': { links: { From f7b17a856e3979723eb130bb99eec9d1457cd99f Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Mon, 10 Jun 2024 00:23:24 +0200 Subject: [PATCH 496/668] Added CSS Size Adjust 1 --- tests.js | 2 ++ tests/css-size-adjust-1.js | 18 ++++++++++++++++++ 2 files changed, 20 insertions(+) create mode 100644 tests/css-size-adjust-1.js diff --git a/tests.js b/tests.js index 2f98245c..9432a77b 100644 --- a/tests.js +++ b/tests.js @@ -80,6 +80,7 @@ import cssScrollbars1 from './tests/css-scrollbars-1.js'; import cssShadowParts1 from './tests/css-shadow-parts-1.js'; import cssShapes1 from './tests/css-shapes-1.js'; import cssShapes2 from './tests/css-shapes-2.js'; +import cssSizeAdjust1 from './tests/css-size-adjust-1.js'; import cssSizing3 from './tests/css-sizing-3.js'; import cssSizing4 from './tests/css-sizing-4.js'; import cssSpeech1 from './tests/css-speech-1.js'; @@ -244,6 +245,7 @@ export default { 'css-shadow-parts-1': cssShadowParts1, 'css-shapes-1': cssShapes1, 'css-shapes-2': cssShapes2, + 'css-size-adjust-1': cssSizeAdjust1, 'css-sizing-3': cssSizing3, 'css-sizing-4': cssSizing4, 'css-speech-1': cssSpeech1, diff --git a/tests/css-size-adjust-1.js b/tests/css-size-adjust-1.js new file mode 100644 index 00000000..c31bcf1c --- /dev/null +++ b/tests/css-size-adjust-1.js @@ -0,0 +1,18 @@ +export default { + title: 'CSS Mobile Text Size Adjustment Module Level 1', + links: { + dev: 'css-size-adjust-1', + }, + status: { + stability: 'experimental', + }, + properties: { + 'text-size-adjust': { + links: { + tr: '#adjustment-control', + dev: '#adjustment-control', + }, + tests: ['auto', 'none', '110%'], + }, + }, +}; From 172dae5412fb4e756853620e5d967d427618d35f Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Mon, 10 Jun 2024 00:24:58 +0200 Subject: [PATCH 497/668] Removed inexistent TR link from CSS Size Adjust 1 --- tests/css-size-adjust-1.js | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/css-size-adjust-1.js b/tests/css-size-adjust-1.js index c31bcf1c..2e690b8d 100644 --- a/tests/css-size-adjust-1.js +++ b/tests/css-size-adjust-1.js @@ -9,7 +9,6 @@ export default { properties: { 'text-size-adjust': { links: { - tr: '#adjustment-control', dev: '#adjustment-control', }, tests: ['auto', 'none', '110%'], From aadae476c227a2bb1ef9f09832b58fa8be3c4d21 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Wed, 12 Jun 2024 00:42:22 +0200 Subject: [PATCH 498/668] Added combination of block and inline keywords in margin-trim --- tests/css-box-4.js | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/css-box-4.js b/tests/css-box-4.js index 283cbe13..d0d2aa7b 100644 --- a/tests/css-box-4.js +++ b/tests/css-box-4.js @@ -17,6 +17,7 @@ export default { 'none', 'block', 'inline', + 'block inline', 'block-start', 'inline-start', 'block-end', From 40283f2e80ec2cc9a8416821e2c81e034593a434 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Wed, 12 Jun 2024 00:56:22 +0200 Subject: [PATCH 499/668] Added CSS Overflow 5 --- tests.js | 2 ++ tests/css-overflow-4.js | 23 --------------------- tests/css-overflow-5.js | 44 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 46 insertions(+), 23 deletions(-) create mode 100644 tests/css-overflow-5.js diff --git a/tests.js b/tests.js index 9432a77b..9ca57ada 100644 --- a/tests.js +++ b/tests.js @@ -63,6 +63,7 @@ import cssNav1 from './tests/css-nav-1.js'; import cssNesting1 from './tests/css-nesting-1.js'; import cssOverflow3 from './tests/css-overflow-3.js'; import cssOverflow4 from './tests/css-overflow-4.js'; +import cssOverflow5 from './tests/css-overflow-5.js'; import cssOverscroll1 from './tests/css-overscroll-1.js'; import cssPage3 from './tests/css-page-3.js'; import cssPaintApi1 from './tests/css-paint-api-1.js'; @@ -228,6 +229,7 @@ export default { 'css-nesting-1': cssNesting1, 'css-overflow-3': cssOverflow3, 'css-overflow-4': cssOverflow4, + 'css-overflow-5': cssOverflow5, 'css-overscroll-1': cssOverscroll1, 'css-page-3': cssPage3, 'css-paint-api-1': cssPaintApi1, diff --git a/tests/css-overflow-4.js b/tests/css-overflow-4.js index 3f89311f..608910df 100644 --- a/tests/css-overflow-4.js +++ b/tests/css-overflow-4.js @@ -149,27 +149,4 @@ export default { ], }, }, - selectors: { - '::nth-fragment()': { - links: { - tr: '#fragment-pseudo-element', - dev: '#fragment-pseudo-element', - }, - tests: [ - ':nth-fragment(even)', - ':nth-fragment(odd)', - ':nth-fragment(n)', - ':nth-fragment(-n)', - ':nth-fragment(0n)', - ':nth-fragment(1)', - ':nth-fragment(-1)', - ':nth-fragment(0)', - ':nth-fragment(n+1)', - ':nth-fragment(3n+1)', - ':nth-fragment(3n + 1)', - ':nth-fragment(-n+1)', - ':nth-fragment(3n-1)', - ], - }, - }, }; diff --git a/tests/css-overflow-5.js b/tests/css-overflow-5.js new file mode 100644 index 00000000..60ad498c --- /dev/null +++ b/tests/css-overflow-5.js @@ -0,0 +1,44 @@ +export default { + title: 'CSS Overflow Module Level 5', + links: { + dev: 'css-overflow-5', + }, + status: { + stability: 'experimental', + }, + values: { + 'continue': { + links: { + dev: '#channelling-overflow', + }, + properties: ['continue'], + tests: [ + 'overflow', + 'paginate', + 'fragments', + ], + }, + }, + selectors: { + '::nth-fragment()': { + links: { + dev: '#fragment-pseudo-element', + }, + tests: [ + ':nth-fragment(even)', + ':nth-fragment(odd)', + ':nth-fragment(n)', + ':nth-fragment(-n)', + ':nth-fragment(0n)', + ':nth-fragment(1)', + ':nth-fragment(-1)', + ':nth-fragment(0)', + ':nth-fragment(n+1)', + ':nth-fragment(3n+1)', + ':nth-fragment(3n + 1)', + ':nth-fragment(-n+1)', + ':nth-fragment(3n-1)', + ], + }, + }, +}; From 0e11844d10a8bf068267f31a50709678cfdf5675 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Tue, 2 Jul 2024 22:55:44 +0200 Subject: [PATCH 500/668] Renamed position-try-options to position-try-fallbacks --- tests/css-anchor-position-1.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/css-anchor-position-1.js b/tests/css-anchor-position-1.js index d56a8b24..257553a1 100644 --- a/tests/css-anchor-position-1.js +++ b/tests/css-anchor-position-1.js @@ -298,10 +298,10 @@ export default { 'most-inline-size inset-area(block-start), --try-position flip-inline', ], }, - 'position-try-options': { + 'position-try-fallbacks': { links: { - tr: '#position-try-options', - dev: '#position-try-options', + tr: '#position-try-fallbacks', + dev: '#position-try-fallbacks', }, tests: [ 'none', From 6c86d834b7d40908b93eaa96d740f1cd7537281d Mon Sep 17 00:00:00 2001 From: andruud Date: Wed, 3 Jul 2024 13:26:26 +0000 Subject: [PATCH 501/668] Remove inset-area() function, use <'inset-area'> directly instead (#249) See also https://github.com/w3c/csswg-drafts/issues/10320. --- tests/css-anchor-position-1.js | 252 ++++++++++++++++----------------- 1 file changed, 126 insertions(+), 126 deletions(-) diff --git a/tests/css-anchor-position-1.js b/tests/css-anchor-position-1.js index 257553a1..9da18d4d 100644 --- a/tests/css-anchor-position-1.js +++ b/tests/css-anchor-position-1.js @@ -227,75 +227,75 @@ export default { '--try-position flip-block', '--try-position flip-inline', '--try-position flip-start', - 'inset-area(left)', - 'inset-area(center)', - 'inset-area(right)', - 'inset-area(span-left)', - 'inset-area(span-right)', - 'inset-area(x-start)', - 'inset-area(x-end)', - 'inset-area(span-x-start)', - 'inset-area(span-x-end)', - 'inset-area(x-self-start)', - 'inset-area(x-self-end)', - 'inset-area(span-x-self-start)', - 'inset-area(span-x-self-end)', - 'inset-area(span-all)', - 'inset-area(top)', - 'inset-area(bottom)', - 'inset-area(span-top)', - 'inset-area(span-bottom)', - 'inset-area(y-start)', - 'inset-area(y-end)', - 'inset-area(span-y-start)', - 'inset-area(span-y-end)', - 'inset-area(y-self-start)', - 'inset-area(y-self-end)', - 'inset-area(span-y-self-start)', - 'inset-area(span-y-self-end)', - 'inset-area(left top)', - 'inset-area(center span-top)', - 'inset-area(span-all span-all)', - 'inset-area(block-start)', - 'inset-area(block-end)', - 'inset-area(span-block-start)', - 'inset-area(span-block-end)', - 'inset-area(inline-start)', - 'inset-area(inline-end)', - 'inset-area(span-inline-start)', - 'inset-area(span-inline-end)', - 'inset-area(block-start inline-end)', - 'inset-area(span-block-start span-inline-end)', - 'inset-area(self-block-start)', - 'inset-area(self-block-end)', - 'inset-area(span-self-block-start)', - 'inset-area(span-self-block-end)', - 'inset-area(self-inline-start)', - 'inset-area(self-inline-end)', - 'inset-area(span-self-inline-start)', - 'inset-area(span-self-inline-end)', - 'inset-area(self-block-start self-inline-end)', - 'inset-area(span-self-inline-start self-block-end)', - 'inset-area(start)', - 'inset-area(end)', - 'inset-area(span-start)', - 'inset-area(span-end)', - 'inset-area(start start)', - 'inset-area(center span-end)', - 'inset-area(self-start)', - 'inset-area(self-end)', - 'inset-area(span-self-start)', - 'inset-area(span-self-end)', - 'inset-area(self-start self-end)', - 'inset-area(span-self-start span-self-end)', + 'left', + 'center', + 'right', + 'span-left', + 'span-right', + 'x-start', + 'x-end', + 'span-x-start', + 'span-x-end', + 'x-self-start', + 'x-self-end', + 'span-x-self-start', + 'span-x-self-end', + 'span-all', + 'top', + 'bottom', + 'span-top', + 'span-bottom', + 'y-start', + 'y-end', + 'span-y-start', + 'span-y-end', + 'y-self-start', + 'y-self-end', + 'span-y-self-start', + 'span-y-self-end', + 'left top', + 'center span-top', + 'span-all span-all', + 'block-start', + 'block-end', + 'span-block-start', + 'span-block-end', + 'inline-start', + 'inline-end', + 'span-inline-start', + 'span-inline-end', + 'block-start inline-end', + 'span-block-start span-inline-end', + 'self-block-start', + 'self-block-end', + 'span-self-block-start', + 'span-self-block-end', + 'self-inline-start', + 'self-inline-end', + 'span-self-inline-start', + 'span-self-inline-end', + 'self-block-start self-inline-end', + 'span-self-inline-start self-block-end', + 'start', + 'end', + 'span-start', + 'span-end', + 'start start', + 'center span-end', + 'self-start', + 'self-end', + 'span-self-start', + 'span-self-end', + 'self-start self-end', + 'span-self-start span-self-end', 'flip-block, --try-position', 'flip-inline, --try-position flip-block', - '--try-position, inset-area(block-start)', + '--try-position, block-start', 'normal --try-position', 'most-width flip-block', - 'most-height inset-area(left)', + 'most-height left', 'most-block-size flip-block, --try-position', - 'most-inline-size inset-area(block-start), --try-position flip-inline', + 'most-inline-size block-start, --try-position flip-inline', ], }, 'position-try-fallbacks': { @@ -312,70 +312,70 @@ export default { '--try-position flip-block', '--try-position flip-inline', '--try-position flip-start', - 'inset-area(left)', - 'inset-area(center)', - 'inset-area(right)', - 'inset-area(span-left)', - 'inset-area(span-right)', - 'inset-area(x-start)', - 'inset-area(x-end)', - 'inset-area(span-x-start)', - 'inset-area(span-x-end)', - 'inset-area(x-self-start)', - 'inset-area(x-self-end)', - 'inset-area(span-x-self-start)', - 'inset-area(span-x-self-end)', - 'inset-area(span-all)', - 'inset-area(top)', - 'inset-area(bottom)', - 'inset-area(span-top)', - 'inset-area(span-bottom)', - 'inset-area(y-start)', - 'inset-area(y-end)', - 'inset-area(span-y-start)', - 'inset-area(span-y-end)', - 'inset-area(y-self-start)', - 'inset-area(y-self-end)', - 'inset-area(span-y-self-start)', - 'inset-area(span-y-self-end)', - 'inset-area(left top)', - 'inset-area(center span-top)', - 'inset-area(span-all span-all)', - 'inset-area(block-start)', - 'inset-area(block-end)', - 'inset-area(span-block-start)', - 'inset-area(span-block-end)', - 'inset-area(inline-start)', - 'inset-area(inline-end)', - 'inset-area(span-inline-start)', - 'inset-area(span-inline-end)', - 'inset-area(block-start inline-end)', - 'inset-area(span-block-start span-inline-end)', - 'inset-area(self-block-start)', - 'inset-area(self-block-end)', - 'inset-area(span-self-block-start)', - 'inset-area(span-self-block-end)', - 'inset-area(self-inline-start)', - 'inset-area(self-inline-end)', - 'inset-area(span-self-inline-start)', - 'inset-area(span-self-inline-end)', - 'inset-area(self-block-start self-inline-end)', - 'inset-area(span-self-inline-start self-block-end)', - 'inset-area(start)', - 'inset-area(end)', - 'inset-area(span-start)', - 'inset-area(span-end)', - 'inset-area(start start)', - 'inset-area(center span-end)', - 'inset-area(self-start)', - 'inset-area(self-end)', - 'inset-area(span-self-start)', - 'inset-area(span-self-end)', - 'inset-area(self-start self-end)', - 'inset-area(span-self-start span-self-end)', + 'left', + 'center', + 'right', + 'span-left', + 'span-right', + 'x-start', + 'x-end', + 'span-x-start', + 'span-x-end', + 'x-self-start', + 'x-self-end', + 'span-x-self-start', + 'span-x-self-end', + 'span-all', + 'top', + 'bottom', + 'span-top', + 'span-bottom', + 'y-start', + 'y-end', + 'span-y-start', + 'span-y-end', + 'y-self-start', + 'y-self-end', + 'span-y-self-start', + 'span-y-self-end', + 'left top', + 'center span-top', + 'span-all span-all', + 'block-start', + 'block-end', + 'span-block-start', + 'span-block-end', + 'inline-start', + 'inline-end', + 'span-inline-start', + 'span-inline-end', + 'block-start inline-end', + 'span-block-start span-inline-end', + 'self-block-start', + 'self-block-end', + 'span-self-block-start', + 'span-self-block-end', + 'self-inline-start', + 'self-inline-end', + 'span-self-inline-start', + 'span-self-inline-end', + 'self-block-start self-inline-end', + 'span-self-inline-start self-block-end', + 'start', + 'end', + 'span-start', + 'span-end', + 'start start', + 'center span-end', + 'self-start', + 'self-end', + 'span-self-start', + 'span-self-end', + 'self-start self-end', + 'span-self-start span-self-end', 'flip-block, --try-position', 'flip-inline, --try-position flip-block', - '--try-position, inset-area(block-start)', + '--try-position, block-start', ], }, 'position-try-order': { From 04e9f6365c32eecaeae47fcd90ac6484c5dfee24 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Thu, 18 Jul 2024 22:27:12 +0200 Subject: [PATCH 502/668] Renamed inset-area to position-area --- tests/css-anchor-position-1.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/css-anchor-position-1.js b/tests/css-anchor-position-1.js index 9da18d4d..adbf94cb 100644 --- a/tests/css-anchor-position-1.js +++ b/tests/css-anchor-position-1.js @@ -134,9 +134,9 @@ export default { '--first-anchor, --second-anchor', ], }, - 'inset-area': { + 'position-area': { links: { - dev: '#inset-area', + dev: '#position-area', }, tests: [ 'left', @@ -417,7 +417,7 @@ export default { tests: [ "@position-try --button-popover {\n top: anchor(--button bottom);\n left: anchor(--button left);\n}", "@position-try --button-popover {\n bottom: anchor(--button top);\n right: anchor(--button right);\n margin: 1em;\n}", - "@position-try --position-try {\n inset-area: top left;\n}", + "@position-try --position-try {\n position-area: top left;\n}", ], }, }, From 0fcfb50c3a3ddc1e7a5de3ea2952f73ee396f32d Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Sun, 21 Jul 2024 01:11:40 +0200 Subject: [PATCH 503/668] Updated CSS Scroll Snap 2 --- tests/css-scroll-snap-2.js | 93 ++++++++++---------------------------- 1 file changed, 23 insertions(+), 70 deletions(-) diff --git a/tests/css-scroll-snap-2.js b/tests/css-scroll-snap-2.js index 8a3a9f4d..b61ee54b 100644 --- a/tests/css-scroll-snap-2.js +++ b/tests/css-scroll-snap-2.js @@ -7,24 +7,6 @@ export default { stability: 'experimental', }, properties: { - 'scroll-start': { - links: { - dev: '#scroll-start', - }, - tests: [ - 'auto', - 'start', - 'end', - 'center', - 'left', - 'right', - 'top', - 'bottom', - '100px', - '10%', - '100px 10%', - ], - }, 'scroll-start-target': { links: { dev: '#scroll-start-target', @@ -34,58 +16,6 @@ export default { 'auto', ], }, - 'scroll-start-x': { - links: { - dev: '#scroll-start-longhands-physical', - }, - tests: [ - 'auto', - 'start', - 'end', - 'center', - '100px', - '10%', - ], - }, - 'scroll-start-y': { - links: { - dev: '#scroll-start-longhands-physical', - }, - tests: [ - 'auto', - 'start', - 'end', - 'center', - '100px', - '10%', - ], - }, - 'scroll-start-inline': { - links: { - dev: '#scroll-start-longhands-logical', - }, - tests: [ - 'auto', - 'start', - 'end', - 'center', - '100px', - '10%', - ], - }, - 'scroll-start-block': { - links: { - dev: '#scroll-start-longhands-logical', - }, - tests: [ - 'auto', - 'start', - 'end', - 'center', - '100px', - '10%', - ], - }, }, selectors: { ':snapped': { @@ -119,4 +49,27 @@ export default { tests: ':snapped-block', }, }, + interfaces: { + SnapEvent: { + links: { + dev: '#snap-events', + mdnGroup: 'DOM', + }, + tests: ['snapTargetBlock', 'snapTargetInline'], + interface: function() { + return new SnapEvent('scrollsnapchange'); + }, + }, + Element: { + links: { + tr: '#interface-globaleventhandlers', + dev: '#interface-globaleventhandlers', + mdnGroup: 'DOM', + }, + tests: ['onsnapchanged', 'onsnapchanging'], + interface: function(style) { + return document.body; + }, + } + }, }; From 40880ef6952d5d57acf00f72de80c230192183a5 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Sun, 21 Jul 2024 01:58:14 +0200 Subject: [PATCH 504/668] Fixed event tests and added tests for event object properties --- tests/css-animations-1.js | 5 ++++- tests/css-containment-2.js | 5 ++++- tests/css-font-loading-3.js | 5 ++++- tests/css-nav-1.js | 5 ++++- tests/css-transitions-1.js | 5 ++++- tests/css-view-transitions-2.js | 9 ++++++--- 6 files changed, 26 insertions(+), 8 deletions(-) diff --git a/tests/css-animations-1.js b/tests/css-animations-1.js index ce8eedd6..e62d8890 100644 --- a/tests/css-animations-1.js +++ b/tests/css-animations-1.js @@ -103,7 +103,10 @@ export default { dev: '#interface-animationevent', mdnGroup: 'DOM', }, - tests: ['AnimationEvent'], + tests: ['animationName', 'elapsedTime', 'pseudoElement'], + interface: function() { + return new AnimationEvent('animationstart'); + } }, CSSRule: { links: { diff --git a/tests/css-containment-2.js b/tests/css-containment-2.js index feac3b8e..44fcf200 100644 --- a/tests/css-containment-2.js +++ b/tests/css-containment-2.js @@ -29,7 +29,10 @@ export default { dev: '#content-visibility-auto-state-change', mdnGroup: 'DOM', }, - tests: ['ContentVisibilityAutoStateChangeEvent'], + tests: ['skipped'], + interface: function() { + return new ContentVisibilityAutoStateChangeEvent('contentvisibilityautostatechange'); + } }, } }; diff --git a/tests/css-font-loading-3.js b/tests/css-font-loading-3.js index 1b7bbcb1..3c998002 100644 --- a/tests/css-font-loading-3.js +++ b/tests/css-font-loading-3.js @@ -102,7 +102,10 @@ export default { dev: '#fontfacesetloadevent', mdnGroup: 'DOM', }, - tests: ['FontFaceSetLoadEvent'], + tests: ['fontfaces'], + interface: function() { + return new FontFaceSetLoadEvent('loadingdone'); + }, }, Document: { links: { diff --git a/tests/css-nav-1.js b/tests/css-nav-1.js index a98803dc..763de1f6 100644 --- a/tests/css-nav-1.js +++ b/tests/css-nav-1.js @@ -59,7 +59,10 @@ export default { dev: '#events-navigationevent', mdnGroup: 'DOM', }, - tests: ['NavigationEvent'], + tests: ['dir', 'relatedTarget'], + interface: function() { + return new NavigationEvent('navbeforefocus'); + } }, }, }; diff --git a/tests/css-transitions-1.js b/tests/css-transitions-1.js index 30702d6b..df2e27c8 100644 --- a/tests/css-transitions-1.js +++ b/tests/css-transitions-1.js @@ -63,7 +63,10 @@ export default { dev: '#interface-transitionevent', mdnGroup: 'DOM', }, - tests: ['TransitionEvent'], + tests: ['propertyName', 'elapsedTime', 'pseudoElement'], + interface: function() { + return new TransitionEvent('transitionend'); + }, }, Element: { links: { diff --git a/tests/css-view-transitions-2.js b/tests/css-view-transitions-2.js index 23ca03dc..5e93bec3 100644 --- a/tests/css-view-transitions-2.js +++ b/tests/css-view-transitions-2.js @@ -53,12 +53,15 @@ export default { return style.sheet.cssRules[0]; }, }, - RevealEvent: { + PageRevealEvent: { links: { - dev: '#ready-to-render-event', + dev: '#new-doc-event', mdnGroup: 'DOM', }, - tests: ['RevealEvent'], + tests: ['viewTransition'], + interface: function() { + return new PageRevealEvent('reveal'); + }, }, }, }; From 8b8404b8fd235b982a92dc3d066993d6f4e357a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Sat, 27 Jul 2024 01:50:39 +0200 Subject: [PATCH 505/668] Updated CSS Grid Layout Module Level 3 --- tests/css-grid-3.js | 59 +++++++++++---------------------------------- 1 file changed, 14 insertions(+), 45 deletions(-) diff --git a/tests/css-grid-3.js b/tests/css-grid-3.js index f722cdb2..71bfa8e5 100644 --- a/tests/css-grid-3.js +++ b/tests/css-grid-3.js @@ -7,17 +7,29 @@ export default { stability: 'experimental', }, properties: { + grid: { + links: { + dev: '#masonry-layout', + }, + tests: [ + 'masonry / masonry', + 'masonry / repeat(4, 2ch)', + 'repeat(4, 2ch) / masonry', + 'masonry / repeat(auto-fit, minmax(25ch, 1fr))', + 'repeat(auto-fit, minmax(25ch, 1fr)) / masonry', + ], + }, 'grid-template-columns': { links: { dev: '#masonry-layout', }, - tests: ['masonry'], + tests: ['masonry', 'repeat(auto-fit, minmax(25ch, 1fr))'], }, 'grid-template-rows': { links: { dev: '#masonry-layout', }, - tests: ['masonry '], + tests: ['masonry ', 'repeat(auto-fit, minmax(25ch, 1fr))'], }, 'masonry-auto-flow': { links: { @@ -35,48 +47,5 @@ export default { 'ordered pack', ], }, - 'align-tracks': { - links: { - dev: '#tracks-alignment', - }, - tests: [ - 'normal', - 'baseline', - 'first baseline', - 'last baseline', - 'space-between', - 'space-around', - 'space-evenly', - 'stretch', - 'center', - 'start', - 'end', - 'flex-start', - 'flex-end', - 'unsafe center', - 'safe start', - ], - }, - 'justify-tracks': { - links: { - dev: '#tracks-alignment', - }, - tests: [ - 'normal', - 'space-between', - 'space-around', - 'space-evenly', - 'stretch', - 'center', - 'start', - 'end', - 'flex-start', - 'flex-end', - 'left', - 'right', - 'unsafe center', - 'safe start', - ], - }, }, }; From 53bee08525611e99a1198db719ecaa6a6993c534 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Sat, 10 Aug 2024 23:16:41 +0200 Subject: [PATCH 506/668] Updated CSS Overflow 5 This change adds scroll marker related features but removes `continue` and `::nth-fragment()`, as they are currently in appendix sections and are very likely to change. --- tests/css-overflow-5.js | 39 +++++++++++++++------------------------ 1 file changed, 15 insertions(+), 24 deletions(-) diff --git a/tests/css-overflow-5.js b/tests/css-overflow-5.js index 60ad498c..0e04a457 100644 --- a/tests/css-overflow-5.js +++ b/tests/css-overflow-5.js @@ -6,39 +6,30 @@ export default { status: { stability: 'experimental', }, - values: { - 'continue': { + properties: { + 'scroll-marker-group': { links: { - dev: '#channelling-overflow', + dev: '#scroll-marker-group', }, - properties: ['continue'], tests: [ - 'overflow', - 'paginate', - 'fragments', + 'none', + 'before', + 'after', ], }, }, selectors: { - '::nth-fragment()': { + '::scroll-marker': { links: { - dev: '#fragment-pseudo-element', + dev: '#scroll-marker-pseudo', }, - tests: [ - ':nth-fragment(even)', - ':nth-fragment(odd)', - ':nth-fragment(n)', - ':nth-fragment(-n)', - ':nth-fragment(0n)', - ':nth-fragment(1)', - ':nth-fragment(-1)', - ':nth-fragment(0)', - ':nth-fragment(n+1)', - ':nth-fragment(3n+1)', - ':nth-fragment(3n + 1)', - ':nth-fragment(-n+1)', - ':nth-fragment(3n-1)', - ], + tests: ['::scroll-marker'], + }, + '::scroll-marker-group': { + links: { + dev: '#scroll-marker-group-pseudo', + }, + tests: ['::scroll-marker-group'], }, }, }; From b15ab06a85c3535b915152c9f47563671da7f0b7 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Sun, 11 Aug 2024 00:27:41 +0200 Subject: [PATCH 507/668] Fixed checks of pseudo-elements Pseudo-elements containing `-webkit-` as prefix have to be considered valid as parse time for web compatibililty. So support is now tested using `CSS.supports()` instead of `document.querySelector()`, --- supports.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/supports.js b/supports.js index 2bb0defc..79eedf48 100644 --- a/supports.js +++ b/supports.js @@ -139,14 +139,13 @@ for (var i = 0; i < _.prefixes.length; i++) { var prefixed = selector.replace(/^(:+)/, '$1' + _.prefixes[i]); - try { - document.querySelector(prefixed); + if (CSS.supports('selector(' + prefixed + ')')) { _.selector.cached[selector] = true; return { success: true, - propertyPrefix: _.prefixes[i], + prefix: _.prefixes[i], }; - } catch (e) {} + } } _.selector.cached[selector] = false; From 418902a7a41b9ea01dac38af2d11c0e803c5e660 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Mon, 19 Aug 2024 22:26:17 +0200 Subject: [PATCH 508/668] Updated CSS Viewport 1 --- tests/css-viewport-1.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/tests/css-viewport-1.js b/tests/css-viewport-1.js index 30471fc6..fa0d2eeb 100644 --- a/tests/css-viewport-1.js +++ b/tests/css-viewport-1.js @@ -16,4 +16,16 @@ export default { tests: ['0', '1', '1.5', '110%'], }, }, + interfaces: { + Viewport: { + links: { + dev: '#the-viewport-interface', + mdnGroup: 'DOM', + }, + tests: ['segments'], + interface: function() { + return window.viewport; + }, + }, + }, }; From a411303b562741a69df32d66eb21a2a00527bd05 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Tue, 27 Aug 2024 22:06:21 +0200 Subject: [PATCH 509/668] Updated CSS Conditional 3 --- tests/css-conditional-3.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/css-conditional-3.js b/tests/css-conditional-3.js index 13594767..dbf76173 100644 --- a/tests/css-conditional-3.js +++ b/tests/css-conditional-3.js @@ -55,7 +55,7 @@ export default { dev: '#the-cssmediarule-interface', mdnGroup: 'DOM', }, - tests: ['media', 'conditionText'], + tests: ['media', 'matches', 'conditionText'], required: '@media (min-width: 500px) { }', interface: function(style) { return style.sheet.cssRules[0]; @@ -67,7 +67,7 @@ export default { dev: '#the-csssupportsrule-interface', mdnGroup: 'DOM', }, - tests: ['conditionText'], + tests: ['matches', 'conditionText'], required: '@supports (display: grid) { }', interface: function(style) { return style.sheet.cssRules[0]; From 962f22c6650f9db2aa3f30442fa93d47e18b5385 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Tue, 27 Aug 2024 22:48:29 +0200 Subject: [PATCH 510/668] Updated CSS Inline 3 --- tests/css-inline-3.js | 124 ++++++++++++++++++++++++++++++++++++------ 1 file changed, 108 insertions(+), 16 deletions(-) diff --git a/tests/css-inline-3.js b/tests/css-inline-3.js index a1f9809b..a7f6261d 100644 --- a/tests/css-inline-3.js +++ b/tests/css-inline-3.js @@ -29,14 +29,26 @@ export default { dev: '#baseline-shift-property', tr: '#baseline-shift-property', }, - tests: ['5px', '10%', 'sub', 'super', 'top', 'center', 'bottom'], + tests: [ + '5px', + '10%', + 'sub', + 'super', + 'top', + 'center', + 'bottom', + ], }, 'baseline-source': { links: { dev: '#baseline-source', tr: '#baseline-source', }, - tests: ['auto', 'first', 'last'], + tests: [ + 'auto', + 'first', + 'last', + ], }, 'dominant-baseline': { links: { @@ -60,37 +72,53 @@ export default { dev: '#sizing-drop-initials', tr: '#sizing-drop-initials', }, - tests: ['normal', '1.4 3', '1.4', '1.4 drop', '1.4 raise'], + tests: [ + 'normal', + '1.4 3', + '1.4', + '1.4 drop', + '1.4 raise', + ], }, 'initial-letter-align': { links: { dev: '#aligning-initial-letter', tr: '#aligning-initial-letter', }, - tests: ['border-box', 'alphabetic', 'ideographic', 'hanging', 'leading', 'border-box alphabetic'], + tests: [ + 'border-box', + 'alphabetic', + 'ideographic', + 'hanging', + 'leading', + 'border-box alphabetic' + ], }, 'initial-letter-wrap': { links: { dev: '#initial-letter-wrapping', tr: '#initial-letter-wrapping', }, - tests: ['none', 'first', 'all', 'grid', '30px', '10%'], + tests: [ + 'none', + 'first', + 'all', + 'grid', + '30px', + '10%', + ], }, 'inline-sizing': { links: { dev: '#line-fill', tr: '#line-fill', }, - tests: ['normal', 'stretch'], - }, - 'leading-trim': { - links: { - dev: '#leading-trim', - tr: '#leading-trim', - }, - tests: ['normal', 'start', 'end', 'both'], + tests: [ + 'normal', + 'stretch', + ], }, - 'text-edge': { + 'line-fit-edge': { links: { dev: '#text-edges', tr: '#text-edges', @@ -102,16 +130,80 @@ export default { 'ex', 'ideographic', 'ideographic-ink', + 'text text', 'text alphabetic', - 'cap ideographic-ink', + 'cap ideographic', + 'ideographic ideographic-ink', ], }, + 'text-box': { + links: { + dev: '#text-box-shorthand', + tr: '#text-box-shorthand', + }, + tests: [ + 'normal', + 'none', + 'trim-start', + 'trim-end', + 'trim-both', + 'auto', + 'text', + 'cap', + 'ex', + 'ideographic', + 'ideographic-ink', + 'text text', + 'text alphabetic', + 'cap ideographic', + 'ideographic ideographic-ink', + 'trim-start text', + 'trim-end cap', + 'trim-both ex', + ], + }, + 'text-box-edge': { + links: { + dev: '#text-box-edge', + tr: '#text-box-edge', + }, + tests: [ + 'auto', + 'text', + 'cap', + 'ex', + 'ideographic', + 'ideographic-ink', + 'text text', + 'text alphabetic', + 'cap ideographic', + 'ideographic ideographic-ink', + ], + }, + 'text-box-trim': { + links: { + dev: '#text-box-trim', + tr: '#text-box-trim', + }, + tests: ['none', 'trim-start', 'trim-end', 'trim-both'], + }, 'vertical-align': { links: { dev: '#transverse-alignment', tr: '#transverse-alignment', }, - tests: ['first', 'last', 'first text-bottom', 'last sub', 'super text-bottom first'], + tests: [ + 'first', + 'last', + 'alphabetic', + 'ideographic', + 'central', + 'mathematical', + 'center', + 'first text-bottom', + 'last sub', + 'super text-bottom first' + ], }, }, }; From a2c2552ba51393b23385798574f3282c4ca330ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=80=E4=B8=9D?= Date: Fri, 30 Aug 2024 00:03:13 +0800 Subject: [PATCH 511/668] Add pseudo-class after `::part()` e.g. `::part():hover`. Blink CL: https://chromium-review.googlesource.com/c/chromium/src/+/5811889 --- tests/css-shadow-parts-1.js | 55 ++++++++++++++++++++++++++++++++++++- 1 file changed, 54 insertions(+), 1 deletion(-) diff --git a/tests/css-shadow-parts-1.js b/tests/css-shadow-parts-1.js index 63d06c8c..fe4447a1 100644 --- a/tests/css-shadow-parts-1.js +++ b/tests/css-shadow-parts-1.js @@ -13,7 +13,60 @@ export default { tr: '#part', dev: '#part', }, - tests: ['::part(label)'], + tests: [ + '::part(label)', + '::part(mypart):active', + '::part(mypart):any-link', + '::part(mypart):autofill', + '::part(mypart):checked', + '::part(mypart):closed', + '::part(mypart):default', + '::part(mypart):defined', + '::part(mypart):dir(ltr)', + '::part(mypart):disabled', + '::part(mypart):enabled', + '::part(mypart):focus', + '::part(mypart):focus-visible', + '::part(mypart):focus-within', + '::part(mypart):fullscreen', + '::part(mypart):future', + '::part(mypart):hover', + '::part(mypart):indeterminate', + '::part(mypart):in-range', + '::part(mypart):invalid', + '::part(mypart):lang(en)', + '::part(mypart):link', + '::part(mypart):modal', + '::part(mypart):open', + '::part(mypart):optional', + '::part(mypart):out-of-range', + '::part(mypart):past', + '::part(mypart):paused', + '::part(mypart):picture-in-picture', + '::part(mypart):placeholder-shown', + '::part(mypart):playing', + '::part(mypart):popover-open', + '::part(mypart):read-only', + '::part(mypart):read-write', + '::part(mypart):required', + '::part(mypart):state(mystate)', + '::part(mypart):target', + '::part(mypart):user-invalid', + '::part(mypart):user-valid', + '::part(mypart):valid', + '::part(mypart):visited', + '::part(mypart):xr-overlay', + + '::part(mypart):target-within', + '::part(mypart):local-link', + '::part(mypart):seeking', + '::part(mypart):buffering', + '::part(mypart):stalled', + '::part(mypart):muted', + '::part(mypart):volume-locked', + + // TODO: add pseudo-elements after ::part() + ], }, }, interfaces: { From a5813874123a414311f27a515d05e6442442b441 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Thu, 29 Aug 2024 19:59:14 +0200 Subject: [PATCH 512/668] Added color-layers() --- tests/css-color-6.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/tests/css-color-6.js b/tests/css-color-6.js index 572e5767..77fe06e4 100644 --- a/tests/css-color-6.js +++ b/tests/css-color-6.js @@ -18,5 +18,20 @@ export default { 'color-contrast(hsl(200 50% 80%) vs hsl(200 83% 23%), purple, hsl(300 100% 25%))', ], }, + 'color-layers()': { + links: { + dev: '#color-layers', + mdn: 'color_value/color-layers', + }, + tests: [ + 'color-layers(rgb(from yellow r g b / 0.5))', + 'color-layers(rgb(from yellow r g b / 0.5), red)', + 'color-layers(rgb(from yellow r g b / 0.5), color(display-p3 1 0.5 0))', + 'color-layers(rgb(from yellow r g b / 0.5), color-mix(in lab, red, blue))', + 'color-layers(rgb(from yellow r g b / 0.5), rgba(0, 255, 128, 0.6), currentcolor, hsla(0, 100%, 20%, 0.4))', + 'color-layers(rgb(from yellow r g b / 0.5), rgba(0, 255, 128, 0.6), color-mix(in lab, purple, rgba(0,0,0,0.5)), color(display-p3 1 0.5 0))', + 'color-layers(color(display-p3 1 0.5 0), rgb(from yellow r g b / 0.5), rgba(0, 255, 128, 0.6), color-mix(in lab, purple, rgba(0,0,0,0.5)), hsla(0, 100%, 20%, 0.4))' + ], + }, }, }; From 5b731d7b99f5f97ddd3980b545d98b558c83c8fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Thu, 29 Aug 2024 20:04:37 +0200 Subject: [PATCH 513/668] Added background-clip to Backgrounds Module Level 4 --- tests/css-backgrounds-4.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tests/css-backgrounds-4.js b/tests/css-backgrounds-4.js index 782cc7c3..b625d519 100644 --- a/tests/css-backgrounds-4.js +++ b/tests/css-backgrounds-4.js @@ -137,5 +137,12 @@ export default { 'end 20px', ], }, + 'background-clip': { + links: { + tr: '#the-background-clip', + dev: '#background-clip', + }, + tests: ['text', 'border-area'], + }, }, }; From d0512ecdbbd70dde617c65add00ea950b58d7776 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Fri, 30 Aug 2024 01:15:58 +0200 Subject: [PATCH 514/668] Added Selectors 5 --- tests.js | 2 ++ tests/selectors-5.js | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 tests/selectors-5.js diff --git a/tests.js b/tests.js index 9ca57ada..0cf93db1 100644 --- a/tests.js +++ b/tests.js @@ -138,6 +138,7 @@ import resizeObserver1 from './tests/resize-observer-1.js'; import scrollAnimations1 from './tests/scroll-animations-1.js'; import selectors3 from './tests/selectors-3.js'; import selectors4 from './tests/selectors-4.js'; +import selectors5 from './tests/selectors-5.js'; import svg2Coords from './tests/svg2-coords.js'; import svg2Geometry from './tests/svg2-geometry.js'; import svg2Interact from './tests/svg2-interact.js'; @@ -291,6 +292,7 @@ export default { 'scroll-animations-1': scrollAnimations1, 'selectors-3': selectors3, 'selectors-4': selectors4, + 'selectors-5': selectors5, 'svg2-coords': svg2Coords, 'svg2-geometry': svg2Geometry, 'svg2-interact': svg2Interact, diff --git a/tests/selectors-5.js b/tests/selectors-5.js new file mode 100644 index 00000000..6f0d690c --- /dev/null +++ b/tests/selectors-5.js @@ -0,0 +1,37 @@ +export default { + title: 'Selectors Level 5', + links: { + tr: 'selectors-5', + dev: 'selectors-5', + }, + status: { + stability: 'experimental', + }, + selectors: { + ':local-link()': { + links: { + tr: '#local-pseudo', + dev: '#local-pseudo', + }, + tests: [ + ':local-link(1)', + ], + }, + ':state()': { + links: { + tr: '#custom-state', + dev: '#custom-state', + }, + tests: [':state(stuck)'], + }, + 'Reference selector': { + links: { + tr: '#idref-combinators', + dev: '#idref-combinators', + }, + tests: [ + 'label /for/ input', + ], + }, + }, +}; From 1d010346705403f03f31dbbf415c13203ac5287c Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Fri, 30 Aug 2024 13:21:28 +0200 Subject: [PATCH 515/668] Removed TR links for Selectors 5 --- tests/selectors-5.js | 4 ---- 1 file changed, 4 deletions(-) diff --git a/tests/selectors-5.js b/tests/selectors-5.js index 6f0d690c..045a94bd 100644 --- a/tests/selectors-5.js +++ b/tests/selectors-5.js @@ -1,7 +1,6 @@ export default { title: 'Selectors Level 5', links: { - tr: 'selectors-5', dev: 'selectors-5', }, status: { @@ -10,7 +9,6 @@ export default { selectors: { ':local-link()': { links: { - tr: '#local-pseudo', dev: '#local-pseudo', }, tests: [ @@ -19,14 +17,12 @@ export default { }, ':state()': { links: { - tr: '#custom-state', dev: '#custom-state', }, tests: [':state(stuck)'], }, 'Reference selector': { links: { - tr: '#idref-combinators', dev: '#idref-combinators', }, tests: [ From 6ec7ca68db29646aac85870f018b3932b6b11727 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Fri, 30 Aug 2024 13:22:09 +0200 Subject: [PATCH 516/668] Added CSS Mixins 1 --- tests.js | 2 ++ tests/css-mixins-1.js | 38 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 tests/css-mixins-1.js diff --git a/tests.js b/tests.js index 0cf93db1..1b98d573 100644 --- a/tests.js +++ b/tests.js @@ -56,6 +56,7 @@ import cssLinkParams1 from './tests/css-link-params-1.js'; import cssLists3 from './tests/css-lists-3.js'; import cssLogical1 from './tests/css-logical-1.js'; import cssMasking1 from './tests/css-masking-1.js'; +import cssMixins1 from './tests/css-mixins-1.js'; import cssMulticol1 from './tests/css-multicol-1.js'; import cssMulticol2 from './tests/css-multicol-2.js'; import cssNamespaces3 from './tests/css-namespaces-3.js'; @@ -223,6 +224,7 @@ export default { 'css-lists-3': cssLists3, 'css-logical-1': cssLogical1, 'css-masking-1': cssMasking1, + 'css-mixins-1': cssMixins1, 'css-multicol-1': cssMulticol1, 'css-multicol-2': cssMulticol2, 'css-namespaces-3': cssNamespaces3, diff --git a/tests/css-mixins-1.js b/tests/css-mixins-1.js new file mode 100644 index 00000000..f1664fa7 --- /dev/null +++ b/tests/css-mixins-1.js @@ -0,0 +1,38 @@ +export default { + title: 'CSS Functions and Mixins Module', + links: { + tr: 'css-mixins-1', + dev: 'css-mixins-1', + }, + status: { + stability: 'experimental', + }, + '@rules': { + '@function': { + links: { + dev: '#defining-custom-functions', + }, + tests: [ + '@function --negative (--value) {\n result: calc(-1 * var(--value));\n}', + '@function --negative-length (--value) returns {\n result: calc(-1 * var(--value));\n}', + '@function --negative-length (--value ) returns {\n result: calc(-1 * var(--value));\n}', + '@function --negative-number-or-percentage(--value type( | )) {\n result: calc(-1 * var(--value));\n}', + '@function --circle-area (--r) {\n result: calc(3.1415 * var(--r2));\n --r2: calc(var(--r) * var(--r));\n}', + '@function --multiply (--value) using (--used) {\n result: calc(var(--used) * var(--value));\n}', + '@function --multiply-length (--value) using (--used ) {\n result: calc(var(--used) * var(--value));\n}', + '@function --multiply-length (--value) using (--used : 1em) {\n result: calc(var(--used) * var(--value));\n}', + '@function --suitable-font-size() {\n result: 16px;\n @media (width > 1000px) {\n result: 20px;\n }\n}', + ], + }, + }, + interfaces: { + CSSFunctionRule: { + links: { + dev: '#cssfunctionrule', + mdnGroup: 'DOM', + }, + tests: ['cssRules', 'insertRule', 'deleteRule'], + required: 'div { }', + }, + }, +}; From 424410f6bd3d8fe56fb294324204197c38f71b94 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Tue, 3 Sep 2024 21:27:07 +0200 Subject: [PATCH 517/668] Added TR references to CSS Easing 2 and CSS Values 5 --- tests/css-easing-2.js | 1 + tests/css-values-5.js | 15 +++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/tests/css-easing-2.js b/tests/css-easing-2.js index ea393e1b..036b25e2 100644 --- a/tests/css-easing-2.js +++ b/tests/css-easing-2.js @@ -11,6 +11,7 @@ export default { properties: ['transition-timing-function'], "linear()": { links: { + tr: '#the-linear-easing-function', dev: '#the-linear-easing-function', mdn: 'easing-function#linear_easing_function', }, diff --git a/tests/css-values-5.js b/tests/css-values-5.js index 52137c55..42bed556 100644 --- a/tests/css-values-5.js +++ b/tests/css-values-5.js @@ -1,6 +1,7 @@ export default { title: 'CSS Values and Units Module Level 5', links: { + tr: 'css-values-5', dev: 'css-values-5', }, status: { @@ -10,6 +11,7 @@ export default { properties: ['width', 'padding'], 'attr()': { links: { + tr: '#attr-notation', dev: '#attr-notation', }, properties: ['content', 'width', 'padding'], @@ -33,6 +35,7 @@ export default { }, 'first-valid()': { links: { + tr: '#first-valid', dev: '#first-valid', }, tests: [ @@ -43,6 +46,7 @@ export default { }, 'attr()': { links: { + tr: '#attr-notation', dev: '#attr-notation', }, properties: ['content', 'width', 'padding'], @@ -66,6 +70,7 @@ export default { }, 'random()': { links: { + tr: '#random', dev: '#random', }, tests: [ @@ -84,6 +89,7 @@ export default { }, 'random-item() with lengths': { links: { + tr: '#random-item', dev: '#random-item', }, tests: [ @@ -96,6 +102,7 @@ export default { }, 'random-item() with keywords': { links: { + tr: '#random-item', dev: '#random-item', }, properties: ['color'], @@ -105,6 +112,7 @@ export default { }, 'random-item() with keywords': { links: { + tr: '#random-item', dev: '#random-item', }, properties: ['color'], @@ -114,6 +122,7 @@ export default { }, 'random-item() with functions': { links: { + tr: '#random-item', dev: '#random-item', }, properties: ['background-image'], @@ -123,6 +132,7 @@ export default { }, 'sibling-count()': { links: { + tr: '#tree-counting', dev: '#tree-counting', }, tests: [ @@ -131,6 +141,7 @@ export default { }, 'sibling-index()': { links: { + tr: '#tree-counting', dev: '#tree-counting', }, tests: [ @@ -139,12 +150,14 @@ export default { }, 'toggle() with lengths': { links: { + tr: '#toggle-notation', dev: '#toggle-notation', }, tests: ['toggle(1px, 2px)'], }, 'toggle() with keywords': { links: { + tr: '#toggle-notation', dev: '#toggle-notation', }, properties: ['font-style'], @@ -152,6 +165,7 @@ export default { }, 'toggle() with mixed keywords and lengths': { links: { + tr: '#toggle-notation', dev: '#toggle-notation', }, properties: ['background-position'], @@ -159,6 +173,7 @@ export default { }, 'Request URL modifiers': { links: { + tr: '#request-url-modifiers', dev: '#request-url-modifiers', }, tests: [ From f3741b3cf1c522a3f916df4602ad910195b16a6e Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Fri, 6 Sep 2024 23:11:32 +0200 Subject: [PATCH 518/668] Added WebXR DOM Overlays --- csstest.js | 3 +++ tests.js | 2 ++ tests/webxr-dom-overlays-1.js | 20 ++++++++++++++++++++ 3 files changed, 25 insertions(+) create mode 100644 tests/webxr-dom-overlays-1.js diff --git a/csstest.js b/csstest.js index 831a11b4..9674c811 100644 --- a/csstest.js +++ b/csstest.js @@ -43,6 +43,9 @@ var devLinkFormat = function (params) { return 'https://drafts.css-houdini.org/' + params.dev; case 'github': return 'https://w3c.github.io/' + params.dev; + case 'iwwg': + // The Immersive Web Working Group + return 'https://immersive-web.github.io/' + params.dev; case 'svgwg': // SVG Working Group Editor Drafts return 'https://svgwg.org/' + params.dev; diff --git a/tests.js b/tests.js index 0cf93db1..c81b0437 100644 --- a/tests.js +++ b/tests.js @@ -149,6 +149,7 @@ import svg2Text from './tests/svg2-text.js'; import webAnimations1 from './tests/web-animations-1.js'; import webAnimations2 from './tests/web-animations-2.js'; import webVtt from './tests/webvtt.js'; +import webxrDomOverlays1 from './tests/webxr-dom-overlays-1.js'; export default { @@ -303,4 +304,5 @@ export default { 'web-animations-1': webAnimations1, 'web-animations-2': webAnimations2, webvtt: webVtt, + 'webxr-dom-overlays-1': webxrDomOverlays1, }; diff --git a/tests/webxr-dom-overlays-1.js b/tests/webxr-dom-overlays-1.js new file mode 100644 index 00000000..410cd25e --- /dev/null +++ b/tests/webxr-dom-overlays-1.js @@ -0,0 +1,20 @@ +export default { + title: 'WebXR DOM Overlays Module', + links: { + tr: 'webxr-dom-overlays-1', + dev: 'dom-overlays', + devtype: 'iwwg', + }, + status: { + stability: 'experimental', + }, + selectors: { + ':xr-overlay': { + links: { + tr: '#css-pseudo-class', + dev: '#css-pseudo-class', + }, + tests: [':xr-overlay'], + }, + }, +}; From 6ee6298bd4d9ec0e8c70f6861930ee640aa69e2d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=80=E4=B8=9D?= Date: Sat, 7 Sep 2024 16:11:38 +0800 Subject: [PATCH 519/668] Allow `:active-view-transition/-type()` pseudo-classes after ::part() See Blink CL: https://chromium-review.googlesource.com/c/chromium/src/+/5839421 --- tests/css-shadow-parts-1.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tests/css-shadow-parts-1.js b/tests/css-shadow-parts-1.js index fe4447a1..3c89ca21 100644 --- a/tests/css-shadow-parts-1.js +++ b/tests/css-shadow-parts-1.js @@ -65,6 +65,10 @@ export default { '::part(mypart):muted', '::part(mypart):volume-locked', + // Spec: https://drafts.csswg.org/css-view-transitions-2/#pseudo-classes-for-selective-vt + '::part(mypart):active-view-transition', + '::part(mypart):active-view-transition-type(mytype)', + // TODO: add pseudo-elements after ::part() ], }, From e99b968fe8424821bcc3f5efbf2a414865114c56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=80=E4=B8=9D?= Date: Mon, 9 Sep 2024 00:48:14 +0800 Subject: [PATCH 520/668] Add `interpolate-size` and `calc-size()` See Chromium CL - https://chromium-review.googlesource.com/c/chromium/src/+/5640542 - https://chromium-review.googlesource.com/c/chromium/src/+/5715169 - https://chromium-review.googlesource.com/c/chromium/src/+/5714511 --- tests/css-values-5.js | 90 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) diff --git a/tests/css-values-5.js b/tests/css-values-5.js index 42bed556..788bf26a 100644 --- a/tests/css-values-5.js +++ b/tests/css-values-5.js @@ -1,3 +1,42 @@ +const calc_size_auto_tests = [ + 'calc-size(auto, size)', + 'calc-size(auto, size + 16px)', + 'calc-size(auto, size - 10rem)', + 'calc-size(auto, size * 0.9)', + 'calc-size(auto, size / 2)', +] + +const calc_size_default_tests = [ + 'calc-size(stretch, size)', // -webkit-fill-available + 'calc-size(stretch, size - 1em)', + 'calc-size(0px, 0px)', + 'calc-size(300px, size)', + 'calc-size(50%, size)', + 'calc-size(min-content, size)', + 'calc-size(max-content, size)', + 'calc-size(fit-content, size)', + 'calc-size(min-content, size * 2)', + 'calc-size(max-content, size / 2)', + 'calc-size(fit-content, 30px + size / 2)', + 'calc-size(fit-content, 50% + size / 2)', + 'calc-size(fit-content, 260px + size * -0.3)', + 'calc-size(fit-content, -100px + size)', + 'calc-size(any, 0px)', + 'calc-size(any, 25em)', + 'calc-size(any, 40%)', + 'calc-size(any, 50px + 30%)', + 'calc-size(any, 30% + 2.6rem)', + 'calc-size(30px, 25em)', + 'calc-size(10px, sign(size) * size)', + // Nested calc-size() + 'calc-size(calc-size(any, 30px), size)', + 'calc-size(calc-size(any, 30px), 25em)', + 'calc-size(calc-size(2in, 30px), 25em)', + 'calc-size(calc-size(50%, 30px), 25em)', + 'calc-size(calc-size(max-content, size), size)', + 'calc-size(calc-size(max-content, size), size)', +] + export default { title: 'CSS Values and Units Module Level 5', links: { @@ -7,8 +46,59 @@ export default { status: { stability: 'experimental', }, + properties: { + 'interpolate-size': { + links: { + tr: '#interpolate-size', + dev: '#interpolate-size', + }, + tests: [ + 'numeric-only', + 'allow-keywords', + ], + }, + }, values: { properties: ['width', 'padding'], + 'calc-size()': { + links: { + tr: '#calc-size', + dev: '#calc-size', + }, + properties: [ 'width', 'min-width', 'height', 'min-height', 'block-size', 'min-block-size', 'inline-size', 'min-inline-size', ], + // Note: The none keyword is not usable within calc-size(). + tests: [ + ...calc_size_auto_tests, + ...calc_size_default_tests, + ], + }, + 'calc-size() in max-width or max-height': { + links: { + tr: '#calc-size', + dev: '#calc-size', + }, + properties: [ 'max-width', 'max-height', 'max-block-size', 'max-inline-size', ], + // Note: The none keyword is not usable within calc-size(). + tests: calc_size_default_tests, + }, + 'calc-size() in flex-basis': { + links: { + tr: '#calc-size', + dev: '#calc-size', + }, + properties: [ 'flex-basis', ], + // Note: The none keyword is not usable within calc-size(). + tests: [ + 'calc-size(content, size)', + 'calc-size(content, size + 1vw)', + 'calc-size(content, size - 1em)', + 'calc-size(content, size * 7)', + 'calc-size(content, size / 0.9)', + 'calc-size(content, size * 1.6 + 23px)', + ...calc_size_auto_tests, + ...calc_size_default_tests, + ], + }, 'attr()': { links: { tr: '#attr-notation', From ac15544b8b57d138845eb9ce80c1bee738cce46b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=A9fling?= Date: Thu, 19 Sep 2024 23:26:14 +0200 Subject: [PATCH 521/668] Added ruby-overhang from Ruby 1 --- tests/css-ruby-1.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tests/css-ruby-1.js b/tests/css-ruby-1.js index aaed9d45..daeba4cb 100644 --- a/tests/css-ruby-1.js +++ b/tests/css-ruby-1.js @@ -36,5 +36,12 @@ export default { }, tests: ['start', 'center', 'space-between', 'space-around'], }, + 'ruby-overhang': { + links: { + tr: '#ruby-overhang', + dev: '#ruby-overhang', + }, + tests: ['auto', 'none'], + }, }, }; From e436a5ad4ccf570f0e205891f8a70564ca9e6f38 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=80=E4=B8=9D?= Date: Thu, 10 Oct 2024 18:47:54 +0800 Subject: [PATCH 522/668] add `:has-slotted` - Chrome: https://chromium-review.googlesource.com/c/chromium/src/+/5899636 - WebKit: https://github.com/WebKit/WebKit/pull/34599 --- tests/css-scoping-1.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tests/css-scoping-1.js b/tests/css-scoping-1.js index 46412a8f..51c3b3c2 100644 --- a/tests/css-scoping-1.js +++ b/tests/css-scoping-1.js @@ -37,5 +37,11 @@ export default { }, tests: ['::slotted(*)', '::slotted(.foo)'], }, + ':has-slotted': { + links: { + dev: '#the-has-slotted-pseudo', + }, + tests: ':has-slotted', + }, }, }; From 4bf2385b81ebb5f457cbd2296e0d0206f5db5436 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=80=E4=B8=9D?= Date: Thu, 10 Oct 2024 20:50:02 +0800 Subject: [PATCH 523/668] [css-anchor-position] Allow anchor-size() for insets and margins - Per resolution in: https://github.com/w3c/csswg-drafts/issues/9827#issuecomment-2160430157 - Chrome CL: https://chromium-review.googlesource.com/c/chromium/src/+/5916307 --- tests/css-anchor-position-1.js | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/tests/css-anchor-position-1.js b/tests/css-anchor-position-1.js index adbf94cb..d43ac5f9 100644 --- a/tests/css-anchor-position-1.js +++ b/tests/css-anchor-position-1.js @@ -18,13 +18,13 @@ export default { 'right', 'bottom', 'left', + 'inset', 'inset-block-start', 'inset-block-end', 'inset-inline-start', 'inset-inline-end', 'inset-block', 'inset-inline', - 'inset', ], tests: [ 'anchor(inside)', @@ -90,6 +90,27 @@ export default { 'max-inline-size', 'min-block-size', 'max-block-size', + + // inset + 'top', + 'right', + 'bottom', + 'left', + 'inset', + 'inset-block-start', + 'inset-block-end', + 'inset-inline-start', + 'inset-inline-end', + 'inset-block', + 'inset-inline', + + // margin + 'margin-block', + 'margin-block-start', + 'margin-block-end', + 'margin-inline', + 'margin-inline-start', + 'margin-inline-end', ], tests: [ 'anchor-size(width)', From 7a32138f21fbb1aa237eb9d8bc5b1c714907f6ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=80=E4=B8=9D?= Date: Wed, 17 Jul 2024 23:35:10 +0800 Subject: [PATCH 524/668] Adding `min/max/fit-content/stretch` and `fit-content()` values to `flex-basis` and `flex` --- tests/css-flexbox-1.js | 55 ++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 53 insertions(+), 2 deletions(-) diff --git a/tests/css-flexbox-1.js b/tests/css-flexbox-1.js index 1ca07d4e..ed793d2b 100644 --- a/tests/css-flexbox-1.js +++ b/tests/css-flexbox-1.js @@ -43,14 +43,65 @@ export default { tr: '#flex-property', dev: '#flex-property', }, - tests: ['none', '5 7 10%'], + tests: [ + // TODO: Add the `contain` keywords defined by css-sizing-4. + // https://drafts.csswg.org/css-sizing-4/#sizing-values + 'none', + 'auto', + 'content', + 'stretch', + 'min-content', + 'max-content', + 'fit-content', + '1 fit-content(10%)', + '1 fit-content(200px)', + '1 fit-content(0)', + '1', + '0', // 0px + '0%', + '100%', + '300px', + '20em', + '1 1 0', + '1 1 0%', + '0 1 300px', + '1 1 20em', + '5 7 10%', + '1 auto', + '1 content', + '1 min-content', + '1 max-content', + '1 fit-content', + 'auto 1 0', + 'content 0 1', + ], }, 'flex-basis': { links: { tr: '#flex-basis-property', dev: '#flex-basis-property', }, - tests: ['auto', 'content', '1px'], + tests: [ + // TODO: Add the `contain` keywords defined by css-sizing-4. + // https://drafts.csswg.org/css-sizing-4/#sizing-values + 'auto', + 'content', + 'stretch', + 'min-content', + 'max-content', + 'fit-content', + 'fit-content(10%)', + 'fit-content(200px)', + 'fit-content(0)', + '0', // 0px + '0%', + '100%', + '300px', + '20em', + 'calc(100% - 1em)', + 'env(safe-area-inset-top)', + 'env(safe-area-inset-top, 12px)', + ], }, 'flex-direction': { links: { From 3c105de17e6de442a832aca941a2d7d2a55d9f02 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Sun, 3 Nov 2024 21:48:28 +0100 Subject: [PATCH 525/668] Updated CSS Values 5 --- tests/css-values-5.js | 340 ++++++++++++++++++++++++++++++++++++++---- 1 file changed, 311 insertions(+), 29 deletions(-) diff --git a/tests/css-values-5.js b/tests/css-values-5.js index 788bf26a..38fd1283 100644 --- a/tests/css-values-5.js +++ b/tests/css-values-5.js @@ -134,28 +134,320 @@ export default { 'first-valid(foo; 10px)', ], }, - 'attr()': { + 'progress() with lengths and percentages': { links: { - tr: '#attr-notation', - dev: '#attr-notation', + tr: '#progress-func', + dev: '#progress-func', }, - properties: ['content', 'width', 'padding'], tests: [ - 'attr(data-px)', - 'attr(data-px, "12px")', - 'attr(data-px px)', - 'attr(data-px px, initial)', - 'attr(data-string string)', - 'attr(data-url url)', - 'attr(data-ident ident)', - 'attr(data-color color)', - 'attr(data-number number)', - 'attr(data-percentage percentage)', - 'attr(data-length length)', - 'attr(data-angle angle)', - 'attr(data-time time)', - 'attr(data-frequency frequency)', - 'attr(data-flex flex)', + 'progress(0.5, 100px, 200px)', + 'progress(0.5, 10%, 20%)', + 'progress(0.5, -infinity, infinity)', + 'progress(0.5, 100px + 200px, 200px + 600px)', + 'progress(0.5, 3 * (10% + 20%), (60% + 10%) / 2)', + ], + }, + 'progress() with numbers': { + links: { + tr: '#progress-func', + dev: '#progress-func', + }, + properties: ['line-height'], + tests: [ + 'progress(0.5, 0, 10)', + 'progress(0.1 + 0.4, 0, 10)', + ], + }, + 'media-progress()': { + links: { + tr: '#media-progress-func', + dev: '#media-progress-func', + }, + tests: [ + 'media-progress(width, 500px, 1000px)', + 'media-progress(width, 20%, 50%)', + 'media-progress(width, 100px + 200px, 200px + 600px)', + 'media-progress(width, 3 * (10% + 20%), (60% + 10%) / 2)', + 'media-progress(height, 500px, 1000px)', + 'media-progress(resolution, 1dppx, 4dppx)', + ], + }, + 'container-progress()': { + links: { + tr: '#container-progress-func', + dev: '#container-progress-func', + }, + tests: [ + 'container-progress(width, 500px, 1000px)', + 'container-progress(width, 20%, 50%)', + 'container-progress(width, 100px + 200px, 200px + 600px)', + 'container-progress(width, 3 * (10% + 20%), (60% + 10%) / 2)', + 'container-progress(height, 500px, 1000px)', + 'container-progress(width of --test-container, 500px, 1000px)', + 'container-progress(width of --test-container, 20%, 50%)', + 'container-progress(width of --test-container, 100px + 200px, 200px + 600px)', + 'container-progress(width of --test-container, 3 * (10% + 20%), (60% + 10%) / 2)', + 'container-progress(height of --test-container, 500px, 1000px)', + ], + }, + 'calc-mix() with lengths and percentages': { + links: { + tr: '#calc-mix', + dev: '#calc-mix', + }, + tests: [ + 'calc-mix(0.5, 100px, 200px)', + 'calc-mix(0.5, 10%, 20%)', + 'calc-mix(0.5, -infinity, infinity)', + 'calc-mix(0.5, 100px + 200px, 200px + 600px)', + 'calc-mix(0.5, 3 * (10% + 20%), (60% + 10%) / 2)', + 'calc-mix(50%, 100px, 200px)', + 'calc-mix(--scroll-progress-timeline, 100px, 200px)', + 'calc-mix(scroll(), 100px, 200px)', + 'calc-mix(view(), 100px, 200px)', + 'calc-mix(--scroll-progress-timeline by linear(0, 0.25, 1), 100px, 200px)', + 'calc-mix(--scroll-progress-timeline by ease-in, 100px, 200px)', + 'calc-mix(--scroll-progress-timeline by cubic-bezier(0.5, 0, 0.3, 1), 100px, 200px)', + 'calc-mix(--scroll-progress-timeline by steps(10, start), 100px, 200px)', + ], + }, + 'calc-mix() with numbers': { + links: { + tr: '#calc-mix', + dev: '#calc-mix', + }, + properties: ['line-height'], + tests: [ + 'calc-mix(0.5, 0, 10)', + 'calc-mix(0.5, 1 + 2, 3 + 4)', + 'calc-mix(0.5, 3 * (1 + 2), (3 + 4) / 2)', + 'calc-mix(50%, 0, 10)', + 'calc-mix(--scroll-progress-timeline, 0, 10)', + 'calc-mix(scroll(), 0, 10)', + 'calc-mix(view(), 0, 10)', + 'calc-mix(--scroll-progress-timeline by linear(0, 0.25, 1), 0, 10)', + 'calc-mix(--scroll-progress-timeline by ease-in, 0, 10)', + 'calc-mix(--scroll-progress-timeline by cubic-bezier(0.5, 0, 0.3, 1), 0, 10)', + 'calc-mix(--scroll-progress-timeline by steps(10, start), 0, 10)', + ], + }, + 'color-mix()': { + links: { + tr: '#color-mix', + dev: '#color-mix', + mdn: 'color_value/color-mix', + }, + properties: ['color', 'background-color', 'border-color', 'text-decoration-color', 'column-rule-color'], + tests: [ + 'color-mix(0.5 in srgb, teal, olive)', + 'color-mix(0.5 in srgb, rgb(255, 0, 0, .2), olive)', + 'color-mix(0.5 in srgb, currentColor, rgba(0, 0, 0, .5)', + 'color-mix(0.5 in srgb, currentColor, rgba(0, 0, 0, .5)', + 'color-mix(0.5 in lch, teal, olive)', + 'color-mix(0.5 in hsl, teal, olive)', + 'color-mix(0.5 in hwb, teal, olive)', + 'color-mix(0.5 in xyz, teal, olive)', + 'color-mix(0.5 in lab, teal, olive)', + 'color-mix(50% in srgb, teal, olive)', + 'calc-mix(50% in srgb, teal, olive)', + 'calc-mix(--scroll-progress-timeline in srgb, teal, olive)', + 'calc-mix(scroll() in srgb, teal, olive)', + 'calc-mix(view() in srgb, teal, olive)', + 'calc-mix(--scroll-progress-timeline by linear(0, 0.25, 1) in srgb, teal, olive)', + 'calc-mix(--scroll-progress-timeline by ease-in in srgb, teal, olive)', + 'calc-mix(--scroll-progress-timeline by cubic-bezier(0.5, 0, 0.3, 1) in srgb, teal, olive)', + 'calc-mix(--scroll-progress-timeline by steps(10, start) in srgb, teal, olive)', + ], + }, + 'cross-fade()': { + links: { + tr: '#cross-fade', + dev: '#cross-fade', + }, + properties: ['background-image', 'list-style-image', 'border-image', 'cursor', 'content'], + tests: [ + 'cross-fade(0.5, url(a.png), url(b.png))', + 'cross-fade(0.5, url(a.png), white)', + 'cross-fade(0.5, black, url(b.png))', + 'cross-fade(0.5, black, white)', + 'cross-fade(50%, url(a.png), url(b.png))', + 'cross-fade(--scroll-progress-timeline, url(a.png), url(b.png))', + 'cross-fade(scroll(), url(a.png), url(b.png))', + 'cross-fade(view(), url(a.png), url(b.png))', + 'cross-fade(--scroll-progress-timeline by linear(0, 0.25, 1), url(a.png), url(b.png))', + 'cross-fade(--scroll-progress-timeline by ease-in, url(a.png), url(b.png))', + 'cross-fade(--scroll-progress-timeline by cubic-bezier(0.5, 0, 0.3, 1), url(a.png), url(b.png))', + 'cross-fade(--scroll-progress-timeline by steps(10, start), url(a.png), url(b.png))', + ], + }, + 'transform-mix()': { + links: { + tr: '#transform-mix', + dev: '#transform-mix', + }, + properties: ['transform-function'], + tests: [ + 'transform-mix(0.5, translate(5px))', + 'transform-mix(0.5, translate(5px, 10px))', + 'transform-mix(0.5, translateY(5px))', + 'transform-mix(0.5, translateX(5px))', + 'transform-mix(0.5, translateY(5%))', + 'transform-mix(0.5, translateX(5%))', + 'transform-mix(0.5, scale(2))', + 'transform-mix(0.5, scale(2, -1))', + 'transform-mix(0.5, scaleX(2))', + 'transform-mix(0.5, scaleY(2.5))', + 'transform-mix(0.5, rotate(45deg))', + 'transform-mix(0.5, skew(45deg))', + 'transform-mix(0.5, skew(45deg, 15deg))', + 'transform-mix(0.5, skewX(45deg))', + 'transform-mix(0.5, skewY(45deg))', + 'transform-mix(0.5, matrix(1,-.2,0,1,0,0))', + 'transform-mix(0.5, matrix(1,-.2,0,1,10,10))', + 'transform-mix(0.5, translate(50px, -24px) rotate(180deg) scale(.5) skew(0, 22.5deg))', + 'transform-mix(0.5, translateZ(5px))', + 'transform-mix(0.5, scaleZ(1.5))', + 'transform-mix(0.5, rotateX(-45deg))', + 'transform-mix(0.5, rotateY(-45deg))', + 'transform-mix(0.5, rotateZ(-45deg))', + 'transform-mix(0.5, perspective(600px))', + 'transform-mix(50%, rotate(45deg))', + 'transform-mix(--scroll-progress-timeline, rotate(45deg))', + 'transform-mix(scroll(), rotate(45deg))', + 'transform-mix(view(), rotate(45deg))', + 'transform-mix(--scroll-progress-timeline by linear(0, 0.25, 1), rotate(45deg))', + 'transform-mix(--scroll-progress-timeline by ease-in, rotate(45deg))', + 'transform-mix(--scroll-progress-timeline by cubic-bezier(0.5, 0, 0.3, 1), rotate(45deg))', + 'transform-mix(--scroll-progress-timeline by steps(10, start), rotate(45deg))', + ], + }, + 'mix() with lengths and percentages': { + links: { + tr: '#mix', + dev: '#mix', + }, + tests: [ + 'mix(0.5, 100px, 200px)', + 'mix(0.5, 10%, 20%)', + 'mix(0.5, -infinity, infinity)', + 'mix(50%, 100px, 200px)', + 'mix(--scroll-progress-timeline, 100px, 200px)', + 'mix(scroll(), 100px, 200px)', + 'mix(view(), 100px, 200px)', + 'mix(--scroll-progress-timeline by linear(0, 0.25, 1), 100px, 200px)', + 'mix(--scroll-progress-timeline by ease-in, 100px, 200px)', + 'mix(--scroll-progress-timeline by cubic-bezier(0.5, 0, 0.3, 1), 100px, 200px)', + 'mix(--scroll-progress-timeline by steps(10, start), 100px, 200px)', + 'mix(0.5 of --keyframes-name)', + ], + }, + 'mix() with numbers': { + links: { + tr: '#mix', + dev: '#mix', + }, + properties: ['line-height'], + tests: [ + 'mix(0.5, 0, 10)', + 'mix(50%, 0, 10)', + 'mix(--scroll-progress-timeline, 0, 10)', + 'mix(scroll(), 0, 10)', + 'mix(view(), 0, 10)', + 'mix(--scroll-progress-timeline by linear(0, 0.25, 1), 0, 10)', + 'mix(--scroll-progress-timeline by ease-in, 0, 10)', + 'mix(--scroll-progress-timeline by cubic-bezier(0.5, 0, 0.3, 1), 0, 10)', + 'mix(--scroll-progress-timeline by steps(10, start), 0, 10)', + ], + }, + 'mix() with colors': { + links: { + tr: '#mix', + dev: '#mix', + }, + properties: ['color', 'background-color', 'border-color', 'text-decoration-color', 'column-rule-color'], + tests: [ + 'mix(0.5, #f00, #00f)', + 'mix(0.5, red, blue)', + 'mix(0.5, rgb(255, 0, 0), rgb(0, 0, 255))', + 'mix(0.5, hsl(0, 100%, 50%), hsl(240, 100%, 50%))', + 'mix(0.5, color(display-p3 1 0 0), color(display-p3 0 0 1))', + 'mix(50%, #f00, #00f)', + 'mix(--scroll-progress-timeline, #f00, #00f)', + 'mix(scroll(), #f00, #00f)', + 'mix(view(), #f00, #00f)', + 'mix(--scroll-progress-timeline by linear(0, 0.25, 1), #f00, #00f)', + 'mix(--scroll-progress-timeline by ease-in, #f00, #00f)', + 'mix(--scroll-progress-timeline by cubic-bezier(0.5, 0, 0.3, 1), #f00, #00f)', + 'mix(--scroll-progress-timeline by steps(10, start), #f00, #00f)', + ], + }, + 'mix() with keywords': { + links: { + tr: '#mix', + dev: '#mix', + }, + properties: ['position'], + tests: [ + 'mix(0.5, left, right)', + 'mix(50%, left, right)', + 'mix(--scroll-progress-timeline, left, right)', + 'mix(scroll(), left, right)', + 'mix(view(), left, right)', + 'mix(--scroll-progress-timeline by linear(0, 0.25, 1), left, right)', + 'mix(--scroll-progress-timeline by ease-in, left, right)', + 'mix(--scroll-progress-timeline by cubic-bezier(0.5, 0, 0.3, 1), left, right)', + 'mix(--scroll-progress-timeline by steps(10, start), left, right)', + ], + }, + 'mix() with value lists': { + links: { + tr: '#mix', + dev: '#mix', + }, + properties: ['background-image'], + tests: [ + 'mix(\n 0.5;\n linear-gradient(red, transparent), radial-gradient(transparent, yellow);\n linear-gradient(tramsüaremt. green), radial-gradient(blue, transparent)\n)', + 'mix(\n 50%;\n linear-gradient(red, transparent), radial-gradient(transparent, yellow);\n linear-gradient(tramsüaremt. green), radial-gradient(blue, transparent)\n)', + 'mix(\n --scroll-progress-timeline;\n linear-gradient(red, transparent), radial-gradient(transparent, yellow);\n linear-gradient(tramsüaremt. green), radial-gradient(blue, transparent)\n)', + 'mix(\n scroll();\n linear-gradient(red, transparent), radial-gradient(transparent, yellow);\n linear-gradient(tramsüaremt. green), radial-gradient(blue, transparent)\n)', + 'mix(\n view();\n linear-gradient(red, transparent), radial-gradient(transparent, yellow);\n linear-gradient(tramsüaremt. green), radial-gradient(blue, transparent)\n)', + 'mix(\n --scroll-progress-timeline by linear(0, 0.25, 1);\n linear-gradient(red, transparent), radial-gradient(transparent, yellow);\n linear-gradient(tramsüaremt. green), radial-gradient(blue, transparent)\n)', + 'mix(\n --scroll-progress-timeline by ease-in;\n linear-gradient(red, transparent), radial-gradient(transparent, yellow);\n linear-gradient(tramsüaremt. green), radial-gradient(blue, transparent)\n)', + 'mix(\n --scroll-progress-timeline by cubic-bezier(0.5, 0, 0.3, 1);\n linear-gradient(red, transparent), radial-gradient(transparent, yellow);\n linear-gradient(tramsüaremt. green), radial-gradient(blue, transparent)\n)', + 'mix(\n --scroll-progress-timeline by steps(10, start);\n linear-gradient(red, transparent), radial-gradient(transparent, yellow);\n linear-gradient(tramsüaremt. green), radial-gradient(blue, transparent)\n)', + ], + }, + 'if() with lengths and percentages': { + links: { + tr: '#if-notation', + dev: '#if-notation', + }, + tests: [ + 'if(media(width < 600px): 100px; else: 200px)', + 'if(media(width < 600px): 100px; else: 200px;)', + 'if(media(width < 600px): 10%; else: 20%)', + 'if(supports(line-clamp: 3): 100px; else: 200px)', + 'if(style(--responsive: true): 100px; else: 200px)', + ], + }, + 'inherit()': { + links: { + tr: '#inherit-notation', + dev: '#inherit-notation', + }, + tests: [ + 'inherit(--custom-property)', + 'inherit(--custom-property, 100px)', + 'inherit(--custom-property, 10%)', + 'inherit(--custom-property, 180deg)', + 'inherit(--custom-property, 1s)', + 'inherit(--custom-property, 20)', + 'inherit(--custom-property, 100Hz)', + 'inherit(--custom-property, keyword)', + 'inherit(--custom-property, "string")', + 'inherit(--custom-property, calc(100px + 10%))', + 'inherit(--custom-property, 100px keyword)', + 'inherit(--custom-property, 100px / 10%)', ], }, 'random()': { @@ -200,16 +492,6 @@ export default { 'random-item(--random-item; red; yellow; green; blue)', ], }, - 'random-item() with keywords': { - links: { - tr: '#random-item', - dev: '#random-item', - }, - properties: ['color'], - tests: [ - 'random-item(--random-item; red; yellow; green; blue)', - ], - }, 'random-item() with functions': { links: { tr: '#random-item', From 3e94a0125b32db25cdb1094d1a3a365a081f35cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=80=E4=B8=9D?= Date: Thu, 14 Nov 2024 21:03:29 +0800 Subject: [PATCH 526/668] [css-pseudo-4] Add ::search-text, ::details-content, ::before::marker and ::after::marker --- tests/css-pseudo-4.js | 36 ++++++++++++++++++++++++++++-------- 1 file changed, 28 insertions(+), 8 deletions(-) diff --git a/tests/css-pseudo-4.js b/tests/css-pseudo-4.js index e9ce6217..c3ec8a42 100644 --- a/tests/css-pseudo-4.js +++ b/tests/css-pseudo-4.js @@ -29,6 +29,13 @@ export default { }, tests: ['::selection'], }, + '::search-text': { + links: { + tr: '#selectordef-search-text', + dev: '#selectordef-search-text', + }, + tests: ['::search-text'], + }, '::target-text': { links: { tr: '#selectordef-target-text', @@ -50,19 +57,17 @@ export default { }, tests: ['::grammar-error'], }, - '::file-selector-button': { - links: { - tr: '#marker-pseudo', - dev: '#marker-pseudo', - }, - tests: ['::file-selector-button'], - }, '::marker': { links: { tr: '#marker-pseudo', dev: '#marker-pseudo', }, - tests: ['::marker'], + tests: [ + '::marker', + // Made ::before::marker and ::after::marker valid: https://github.com/w3c/csswg-drafts/issues/1793 + '::before::marker', + '::after::marker', + ], }, '::placeholder': { links: { @@ -71,6 +76,21 @@ export default { }, tests: ['::placeholder'], }, + // Element-backed Pseudo-Elements + '::file-selector-button': { + links: { + tr: '#file-selector-button-pseudo', + dev: '#file-selector-button-pseudo', + }, + tests: ['::file-selector-button'], + }, + '::details-content': { + links: { + tr: '#details-content-pseudo', + dev: '#details-content-pseudo', + }, + tests: ['::details-content'], + } }, interfaces: { Element: { From fe224a7dd9f19a73d2a2d26b1b0c747f2a5629fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=80=E4=B8=9D?= Date: Fri, 15 Nov 2024 17:24:34 +0800 Subject: [PATCH 527/668] remove tr link --- tests/css-pseudo-4.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/tests/css-pseudo-4.js b/tests/css-pseudo-4.js index c3ec8a42..b97400a0 100644 --- a/tests/css-pseudo-4.js +++ b/tests/css-pseudo-4.js @@ -31,7 +31,6 @@ export default { }, '::search-text': { links: { - tr: '#selectordef-search-text', dev: '#selectordef-search-text', }, tests: ['::search-text'], @@ -86,7 +85,6 @@ export default { }, '::details-content': { links: { - tr: '#details-content-pseudo', dev: '#details-content-pseudo', }, tests: ['::details-content'], From b414229e574eb8ee1293f71ab07d7d9e83346826 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Wed, 18 Dec 2024 13:25:35 +0100 Subject: [PATCH 528/668] Added CSS Gaps 1 --- tests.js | 2 + tests/css-gaps-1.js | 317 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 319 insertions(+) create mode 100644 tests/css-gaps-1.js diff --git a/tests.js b/tests.js index d44a8ef6..b6d384ca 100644 --- a/tests.js +++ b/tests.js @@ -42,6 +42,7 @@ import cssFontLoading3 from './tests/css-font-loading-3.js'; import cssFonts3 from './tests/css-fonts-3.js'; import cssFonts4 from './tests/css-fonts-4.js'; import cssFonts5 from './tests/css-fonts-5.js'; +import cssGaps1 from './tests/css-gaps-1.js'; import cssGrid1 from './tests/css-grid-1.js'; import cssGrid2 from './tests/css-grid-2.js'; import cssGrid3 from './tests/css-grid-3.js'; @@ -211,6 +212,7 @@ export default { 'css-fonts-3': cssFonts3, 'css-fonts-4': cssFonts4, 'css-fonts-5': cssFonts5, + 'css-gaps-1': cssGaps1, 'css-grid-1': cssGrid1, 'css-grid-2': cssGrid2, 'css-grid-3': cssGrid3, diff --git a/tests/css-gaps-1.js b/tests/css-gaps-1.js new file mode 100644 index 00000000..9b3a855e --- /dev/null +++ b/tests/css-gaps-1.js @@ -0,0 +1,317 @@ +export default { + title: 'CSS Gap Decorations Module Level 1', + links: { + dev: 'css-gaps-1', + }, + status: { + stability: 'experimental', + }, + properties: { + 'column-rule-break': { + links: { + dev: '#propdef-column-rule-break', + }, + tests: [ + 'intersection', + 'spanning-item', + 'none', + ], + }, + 'row-rule-break': { + links: { + dev: '#propdef-row-rule-break', + }, + tests: [ + 'intersection', + 'spanning-item', + 'none', + ], + }, + 'gap-rule-break': { + links: { + dev: '#propdef-gap-rule-break', + }, + tests: [ + 'intersection', + 'spanning-item', + 'none', + ], + }, + 'column-rule-outset': { + links: { + dev: '#propdef-column-rule-outset', + }, + tests: [ + '10px', + '5%', + ], + }, + 'row-rule-outset': { + links: { + dev: '#propdef-row-rule-outset', + }, + tests: [ + '10px', + '5%', + ], + }, + 'gap-rule-outset': { + links: { + dev: '#propdef-gap-rule-outset', + }, + tests: [ + '10px', + '5%', + ], + }, + 'gap-rule-paint-order': { + links: { + dev: '#propdef-gap-rule-paint-order', + }, + tests: [ + 'row-over-column', + 'column-over-row', + ], + }, + 'column-rule-color': { + links: { + dev: '#propdef-column-rule-color', + }, + tests: [ + 'red', + 'rgb(0 0 0 / 0.5)', + 'repeat(2, red yellow lime blue)', + 'repeat(auto, red yellow lime blue)', + 'red repeat(2, lime blue)', + 'red repeat(auto, red yellow lime blue)', + 'repeat(2, lime blue) repeat(auto, red yellow lime blue)', + 'red repeat(2, lime blue) repeat(auto, red yellow lime blue)', + 'repeat(auto, red yellow lime blue) yellow', + 'repeat(auto, red yellow lime blue) repeat(2, red yellow)', + 'repeat(auto, red yellow lime blue) lime repeat(2, red yellow)', + 'red repeat(2, lime blue) repeat(auto, red yellow lime blue) yellow repeat(2, red yellow)', + ], + }, + 'row-rule-color': { + links: { + dev: '#propdef-row-rule-color', + }, + tests: [ + 'red', + 'rgb(0 0 0 / 0.5)', + 'repeat(2, red yellow lime blue)', + 'repeat(auto, red yellow lime blue)', + 'red repeat(2, lime blue)', + 'red repeat(auto, red yellow lime blue)', + 'repeat(2, lime blue) repeat(auto, red yellow lime blue)', + 'red repeat(2, lime blue) repeat(auto, red yellow lime blue)', + 'repeat(auto, red yellow lime blue) yellow', + 'repeat(auto, red yellow lime blue) repeat(2, red yellow)', + 'repeat(auto, red yellow lime blue) lime repeat(2, red yellow)', + 'red repeat(2, lime blue) repeat(auto, red yellow lime blue) yellow repeat(2, red yellow)', + ], + }, + 'gap-rule-color': { + links: { + dev: '#propdef-gap-rule-color', + }, + tests: [ + 'red', + 'rgb(0 0 0 / 0.5)', + 'repeat(2, red yellow lime blue)', + 'repeat(auto, red yellow lime blue)', + 'red repeat(2, lime blue)', + 'red repeat(auto, red yellow lime blue)', + 'repeat(2, lime blue) repeat(auto, red yellow lime blue)', + 'red repeat(2, lime blue) repeat(auto, red yellow lime blue)', + 'repeat(auto, red yellow lime blue) yellow', + 'repeat(auto, red yellow lime blue) repeat(2, red yellow)', + 'repeat(auto, red yellow lime blue) lime repeat(2, red yellow)', + 'red repeat(2, lime blue) repeat(auto, red yellow lime blue) yellow repeat(2, red yellow)', + ], + }, + 'column-rule-style': { + links: { + dev: '#propdef-column-rule-style', + }, + tests: [ + 'solid', + 'dotted', + 'none', + 'repeat(2, solid dotted none)', + 'repeat(auto, solid dotted none)', + 'solid repeat(2, dotted none)', + 'solid repeat(auto, solid dotted none)', + 'repeat(2, dotted none) repeat(auto, solid dotted none)', + 'solid repeat(2, dotted none) repeat(auto, solid dotted none)', + 'repeat(auto, solid dotted none) dotted', + 'repeat(auto, solid dotted none) repeat(2, solid dotted)', + 'repeat(auto, solid dotted none) none repeat(2, solid dotted)', + 'solid repeat(2, dotted none) repeat(auto, solid dotted none) dotted repeat(2, solid dotted)', + ], + }, + 'row-rule-style': { + links: { + dev: '#propdef-row-rule-style', + }, + tests: [ + 'solid', + 'dotted', + 'none', + 'repeat(2, solid dotted none)', + 'repeat(auto, solid dotted none)', + 'solid repeat(2, dotted none)', + 'solid repeat(auto, solid dotted none)', + 'repeat(2, dotted none) repeat(auto, solid dotted none)', + 'solid repeat(2, dotted none) repeat(auto, solid dotted none)', + 'repeat(auto, solid dotted none) dotted', + 'repeat(auto, solid dotted none) repeat(2, solid dotted)', + 'repeat(auto, solid dotted none) none repeat(2, solid dotted)', + 'solid repeat(2, dotted none) repeat(auto, solid dotted none) dotted repeat(2, solid dotted)', + ], + }, + 'gap-rule-style': { + links: { + dev: '#propdef-gap-rule-style', + }, + tests: [ + 'solid', + 'dotted', + 'none', + 'repeat(2, solid dotted none)', + 'repeat(auto, solid dotted none)', + 'solid repeat(2, dotted none)', + 'solid repeat(auto, solid dotted none)', + 'repeat(2, dotted none) repeat(auto, solid dotted none)', + 'solid repeat(2, dotted none) repeat(auto, solid dotted none)', + 'repeat(auto, solid dotted none) dotted', + 'repeat(auto, solid dotted none) repeat(2, solid dotted)', + 'repeat(auto, solid dotted none) none repeat(2, solid dotted)', + 'solid repeat(2, dotted none) repeat(auto, solid dotted none) dotted repeat(2, solid dotted)', + ], + }, + 'column-rule-width': { + links: { + dev: '#propdef-column-rule-width', + }, + tests: [ + '10px', + '5%', + 'thin', + 'medium', + 'thick', + 'repeat(2, 10px 5% thin medium thick)', + 'repeat(auto, 10px 5% thin medium thick)', + '10px repeat(2, 5% thin medium thick)', + '10px repeat(auto, 10px 5% thin medium thick)', + 'repeat(2, 5% thin medium thick) repeat(auto, 10px 5% thin medium thick)', + '10px repeat(2, 5% thin medium thick) repeat(auto, 10px 5% thin medium thick)', + 'repeat(auto, 10px 5% thin medium thick) 5% thin', + 'repeat(auto, 10px 5% thin medium thick) repeat(2, 10px 5% thin)', + 'repeat(auto, 10px 5% thin medium thick) medium repeat(2, 10px 5% thin)', + '10px repeat(2, 5% thin medium thick) repeat(auto, 10px 5% thin medium thick) 5% thin repeat(2, 10px 5% thin)', + ], + }, + 'row-rule-width': { + links: { + dev: '#propdef-row-rule-width', + }, + tests: [ + '10px', + '5%', + 'thin', + 'medium', + 'thick', + 'repeat(2, 10px 5% thin medium thick)', + 'repeat(auto, 10px 5% thin medium thick)', + '10px repeat(2, 5% thin medium thick)', + '10px repeat(auto, 10px 5% thin medium thick)', + 'repeat(2, 5% thin medium thick) repeat(auto, 10px 5% thin medium thick)', + '10px repeat(2, 5% thin medium thick) repeat(auto, 10px 5% thin medium thick)', + 'repeat(auto, 10px 5% thin medium thick) 5% thin', + 'repeat(auto, 10px 5% thin medium thick) repeat(2, 10px 5% thin)', + 'repeat(auto, 10px 5% thin medium thick) medium repeat(2, 10px 5% thin)', + '10px repeat(2, 5% thin medium thick) repeat(auto, 10px 5% thin medium thick) 5% thin repeat(2, 10px 5% thin)', + ], + }, + 'gap-rule-width': { + links: { + dev: '#propdef-gap-rule-width', + }, + tests: [ + '10px', + '5%', + 'thin', + 'medium', + 'thick', + 'repeat(2, 10px 5% thin medium thick)', + 'repeat(auto, 10px 5% thin medium thick)', + '10px repeat(2, 5% thin medium thick)', + '10px repeat(auto, 10px 5% thin medium thick)', + 'repeat(2, 5% thin medium thick) repeat(auto, 10px 5% thin medium thick)', + '10px repeat(2, 5% thin medium thick) repeat(auto, 10px 5% thin medium thick)', + 'repeat(auto, 10px 5% thin medium thick) 5% thin', + 'repeat(auto, 10px 5% thin medium thick) repeat(2, 10px 5% thin)', + 'repeat(auto, 10px 5% thin medium thick) medium repeat(2, 10px 5% thin)', + '10px repeat(2, 5% thin medium thick) repeat(auto, 10px 5% thin medium thick) 5% thin repeat(2, 10px 5% thin)', + ], + }, + 'column-rule': { + links: { + dev: '#propdef-column-rule', + }, + tests: [ + '10px solid red', + '5% dotted rgb(0 0 0 / 0.5)', + 'repeat(2, 10px solid red, 5% dotted yellow)', + 'repeat(auto, 10px solid red, 5% dotted yellow)', + '10px solid red repeat(2, 5% dotted yellow)', + '10px solid red repeat(auto, 10px solid red, 5% dotted yellow)', + 'repeat(2, 5% dotted yellow repeat(auto, 10px solid red, 5% dotted yellow)', + '10px solid red repeat(2, 5% dotted yellow repeat(auto, 10px solid red, 5% dotted yellow)', + 'repeat(auto, 10px solid red, 5% dotted yellow) 5% dotted yellow', + 'repeat(auto, 10px solid red, 5% dotted yellow) repeat(2, 10px solid red, 5% dotted yellow)', + 'repeat(auto, 10px solid red, 5% dotted yellow) 5% dotted lime repeat(2, 10px solid red, 5% dotted yellow)', + '10px solid red repeat(2, 5% dotted yellow) repeat(auto, 10px solid red, 5% dotted yellow) 5% dotted yellow repeat(2, 10px solid red, 5% dotted yellow)', + ], + }, + 'row-rule': { + links: { + dev: '#propdef-row-rule', + }, + tests: [ + '10px solid red', + '5% dotted rgb(0 0 0 / 0.5)', + 'repeat(2, 10px solid red, 5% dotted yellow)', + 'repeat(auto, 10px solid red, 5% dotted yellow)', + '10px solid red repeat(2, 5% dotted yellow)', + '10px solid red repeat(auto, 10px solid red, 5% dotted yellow)', + 'repeat(2, 5% dotted yellow repeat(auto, 10px solid red, 5% dotted yellow)', + '10px solid red repeat(2, 5% dotted yellow repeat(auto, 10px solid red, 5% dotted yellow)', + 'repeat(auto, 10px solid red, 5% dotted yellow) 5% dotted yellow', + 'repeat(auto, 10px solid red, 5% dotted yellow) repeat(2, 10px solid red, 5% dotted yellow)', + 'repeat(auto, 10px solid red, 5% dotted yellow) 5% dotted lime repeat(2, 10px solid red, 5% dotted yellow)', + '10px solid red repeat(2, 5% dotted yellow) repeat(auto, 10px solid red, 5% dotted yellow) 5% dotted yellow repeat(2, 10px solid red, 5% dotted yellow)', + ], + }, + 'gap-rule': { + links: { + dev: '#propdef-gap-rule', + }, + tests: [ + '10px solid red', + '5% dotted rgb(0 0 0 / 0.5)', + 'repeat(2, 10px solid red, 5% dotted yellow)', + 'repeat(auto, 10px solid red, 5% dotted yellow)', + '10px solid red repeat(2, 5% dotted yellow)', + '10px solid red repeat(auto, 10px solid red, 5% dotted yellow)', + 'repeat(2, 5% dotted yellow repeat(auto, 10px solid red, 5% dotted yellow)', + '10px solid red repeat(2, 5% dotted yellow repeat(auto, 10px solid red, 5% dotted yellow)', + 'repeat(auto, 10px solid red, 5% dotted yellow) 5% dotted yellow', + 'repeat(auto, 10px solid red, 5% dotted yellow) repeat(2, 10px solid red, 5% dotted yellow)', + 'repeat(auto, 10px solid red, 5% dotted yellow) 5% dotted lime repeat(2, 10px solid red, 5% dotted yellow)', + '10px solid red repeat(2, 5% dotted yellow) repeat(auto, 10px solid red, 5% dotted yellow) 5% dotted yellow repeat(2, 10px solid red, 5% dotted yellow)', + ], + }, + }, +}; \ No newline at end of file From 077474bd510e4805df2579635769d3ee106f9c6d Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Wed, 18 Dec 2024 13:42:28 +0100 Subject: [PATCH 529/668] Added TR links to CSS Color HDR 1 --- tests/css-color-hdr-1.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tests/css-color-hdr-1.js b/tests/css-color-hdr-1.js index e0d42a6e..a0fb8368 100644 --- a/tests/css-color-hdr-1.js +++ b/tests/css-color-hdr-1.js @@ -11,6 +11,7 @@ export default { properties: ['color', 'background-color', 'border-color', 'text-decoration-color', 'column-rule-color'], 'rec2100-pq color space': { links: { + tr: '#valdef-color-rec2100-pq', dev: '#valdef-color-rec2100-pq', }, tests: [ @@ -19,6 +20,7 @@ export default { }, 'rec2100-hlg color space': { links: { + tr: '#valdef-color-rec2100-hlg', dev: '#valdef-color-rec2100-hlg', }, tests: [ @@ -27,6 +29,7 @@ export default { }, 'rec2100-linear color space': { links: { + tr: '#valdef-color-rec2100-linear', dev: '#valdef-color-rec2100-linear', }, tests: [ @@ -35,6 +38,7 @@ export default { }, 'Jzazbz color space': { links: { + tr: '#Jzazbz', dev: '#Jzazbz', }, tests: [ @@ -43,6 +47,7 @@ export default { }, 'JzCzHz color space': { links: { + tr: '#JzCzHz', dev: '#JzCzHz', }, tests: [ @@ -51,6 +56,7 @@ export default { }, 'ICtCp color space': { links: { + tr: '#ICtCp', dev: '#ICtCp', }, tests: [ From a0a874c77fb8304d61bc2ae2bcbdee429f3cf8be Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Wed, 18 Dec 2024 13:46:20 +0100 Subject: [PATCH 530/668] Updated CSS Overflow 5 and added TR links --- tests/css-overflow-5.js | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/tests/css-overflow-5.js b/tests/css-overflow-5.js index 0e04a457..3df40c72 100644 --- a/tests/css-overflow-5.js +++ b/tests/css-overflow-5.js @@ -1,6 +1,7 @@ export default { title: 'CSS Overflow Module Level 5', links: { + tr: 'css-overflow-5', dev: 'css-overflow-5', }, status: { @@ -9,7 +10,8 @@ export default { properties: { 'scroll-marker-group': { links: { - dev: '#scroll-marker-group', + tr: '#scroll-marker-group-property', + dev: '#scroll-marker-group-property', }, tests: [ 'none', @@ -21,15 +23,24 @@ export default { selectors: { '::scroll-marker': { links: { + tr: '#scroll-marker-pseudo', dev: '#scroll-marker-pseudo', }, tests: ['::scroll-marker'], }, '::scroll-marker-group': { links: { + tr: '#scroll-marker-group-pseudo', dev: '#scroll-marker-group-pseudo', }, tests: ['::scroll-marker-group'], }, + ':target-current': { + links: { + tr: '#active-scroll-marker', + dev: '#active-scroll-marker', + }, + tests: [':target-current'], + }, }, }; From 47ce841c8693e7f798b991475720eaf472de7c32 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Thu, 19 Dec 2024 13:38:45 +0100 Subject: [PATCH 531/668] Updated CSS Display 4 and added TR links --- tests/css-display-4.js | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/tests/css-display-4.js b/tests/css-display-4.js index 59ea2e74..a21480df 100644 --- a/tests/css-display-4.js +++ b/tests/css-display-4.js @@ -8,17 +8,19 @@ export default { stability: 'experimental', }, properties: { - 'layout-order': { + 'reading-flow': { links: { - dev: '#propdef-layout-order', + tr: '#propdef-reading-flow', + dev: '#propdef-reading-flow', }, - tests: ['-1', '0', '1'], - }, - 'reading-order': { - links: { - dev: '#propdef-reading-order', - }, - tests: ['-1', '0', '1'], + tests: [ + 'normal', + 'flex-visual', + 'flex-flow', + 'grid-rows', + 'grid-columns', + 'grid-order ', + ], }, }, }; From 783802eefbcaa9ab627fa7f0d1d9f84ba51d65e0 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Thu, 19 Dec 2024 13:43:02 +0100 Subject: [PATCH 532/668] Updated CSS Multicol 2 and added TR links --- tests/css-multicol-2.js | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/tests/css-multicol-2.js b/tests/css-multicol-2.js index b888d669..df0c6857 100644 --- a/tests/css-multicol-2.js +++ b/tests/css-multicol-2.js @@ -1,6 +1,7 @@ export default { title: 'CSS Multi-column Layout Module Level 2', links: { + tr: 'css-multicol-2', dev: 'css-multicol-2', }, status: { @@ -9,9 +10,19 @@ export default { properties: { 'column-span': { links: { + tr: '#column-span', dev: '#column-span', }, tests: ['2', 'auto'], }, }, + selectors: { + '::column': { + links: { + tr: '#column-pseudo', + dev: '#column-pseudo', + }, + tests: ['::column'], + }, + } }; From 6115052f1e67acbe7f31b67a5e5fbc2412a2936d Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Mon, 27 Jan 2025 00:20:18 +0100 Subject: [PATCH 533/668] Updated, extended and fixed new functions of CSS Values 5 --- tests/css-values-5.js | 136 +++++++++++++++++++++++++----------------- 1 file changed, 80 insertions(+), 56 deletions(-) diff --git a/tests/css-values-5.js b/tests/css-values-5.js index 38fd1283..644febfd 100644 --- a/tests/css-values-5.js +++ b/tests/css-values-5.js @@ -134,28 +134,19 @@ export default { 'first-valid(foo; 10px)', ], }, - 'progress() with lengths and percentages': { + 'progress()': { links: { tr: '#progress-func', dev: '#progress-func', }, tests: [ - 'progress(0.5, 100px, 200px)', - 'progress(0.5, 10%, 20%)', - 'progress(0.5, -infinity, infinity)', - 'progress(0.5, 100px + 200px, 200px + 600px)', - 'progress(0.5, 3 * (10% + 20%), (60% + 10%) / 2)', - ], - }, - 'progress() with numbers': { - links: { - tr: '#progress-func', - dev: '#progress-func', - }, - properties: ['line-height'], - tests: [ - 'progress(0.5, 0, 10)', - 'progress(0.1 + 0.4, 0, 10)', + 'calc(100px * progress(150px, 100px, 200px))', + 'calc(100px * progress(12%, 10%, 20%))', + 'calc(100px * progress(200deg, 180deg, 360deg))', + 'calc(100px * progress(4, 0, 10))', + 'calc(100px * progress(0, -pi, pi))', + 'calc(100px * progress(150px, 100px + 200px, 200px + 600px))', + 'calc(100px * progress(3em, 3 * (1em + 2em), (7em + 1em) / 2))', ], }, 'media-progress()': { @@ -164,12 +155,12 @@ export default { dev: '#media-progress-func', }, tests: [ - 'media-progress(width, 500px, 1000px)', - 'media-progress(width, 20%, 50%)', - 'media-progress(width, 100px + 200px, 200px + 600px)', - 'media-progress(width, 3 * (10% + 20%), (60% + 10%) / 2)', - 'media-progress(height, 500px, 1000px)', - 'media-progress(resolution, 1dppx, 4dppx)', + 'calc(100px * media-progress(width, 500px, 1000px))', + 'calc(100px * media-progress(width, 20%, 50%))', + 'calc(100px * media-progress(width, 100px + 200px, 200px + 600px))', + 'calc(100px * media-progress(width, 3 * (10% + 20%), (60% + 10%) / 2))', + 'calc(100px * media-progress(height, 500px, 1000px))', + 'calc(100px * media-progress(resolution, 1dppx, 4dppx))', ], }, 'container-progress()': { @@ -178,16 +169,16 @@ export default { dev: '#container-progress-func', }, tests: [ - 'container-progress(width, 500px, 1000px)', - 'container-progress(width, 20%, 50%)', - 'container-progress(width, 100px + 200px, 200px + 600px)', - 'container-progress(width, 3 * (10% + 20%), (60% + 10%) / 2)', - 'container-progress(height, 500px, 1000px)', - 'container-progress(width of --test-container, 500px, 1000px)', - 'container-progress(width of --test-container, 20%, 50%)', - 'container-progress(width of --test-container, 100px + 200px, 200px + 600px)', - 'container-progress(width of --test-container, 3 * (10% + 20%), (60% + 10%) / 2)', - 'container-progress(height of --test-container, 500px, 1000px)', + 'calc(100px * container-progress(width, 500px, 1000px))', + 'calc(100px * container-progress(width, 20%, 50%))', + 'calc(100px * container-progress(width, 100px + 200px, 200px + 600px))', + 'calc(100px * container-progress(width, 3 * (10% + 20%), (60% + 10%) / 2))', + 'calc(100px * container-progress(height, 500px, 1000px))', + 'calc(100px * container-progress(width of --test-container, 500px, 1000px))', + 'calc(100px * container-progress(width of --test-container, 20%, 50%))', + 'calc(100px * container-progress(width of --test-container, 100px + 200px, 200px + 600px))', + 'calc(100px * container-progress(width of --test-container, 3 * (10% + 20%), (60% + 10%) / 2))', + 'calc(100px * container-progress(height of --test-container, 500px, 1000px))', ], }, 'calc-mix() with lengths and percentages': { @@ -249,14 +240,13 @@ export default { 'color-mix(0.5 in xyz, teal, olive)', 'color-mix(0.5 in lab, teal, olive)', 'color-mix(50% in srgb, teal, olive)', - 'calc-mix(50% in srgb, teal, olive)', - 'calc-mix(--scroll-progress-timeline in srgb, teal, olive)', - 'calc-mix(scroll() in srgb, teal, olive)', - 'calc-mix(view() in srgb, teal, olive)', - 'calc-mix(--scroll-progress-timeline by linear(0, 0.25, 1) in srgb, teal, olive)', - 'calc-mix(--scroll-progress-timeline by ease-in in srgb, teal, olive)', - 'calc-mix(--scroll-progress-timeline by cubic-bezier(0.5, 0, 0.3, 1) in srgb, teal, olive)', - 'calc-mix(--scroll-progress-timeline by steps(10, start) in srgb, teal, olive)', + 'color-mix(--scroll-progress-timeline in srgb, teal, olive)', + 'color-mix(scroll() in srgb, teal, olive)', + 'color-mix(view() in srgb, teal, olive)', + 'color-mix(--scroll-progress-timeline by linear(0, 0.25, 1) in srgb, teal, olive)', + 'color-mix(--scroll-progress-timeline by ease-in in srgb, teal, olive)', + 'color-mix(--scroll-progress-timeline by cubic-bezier(0.5, 0, 0.3, 1) in srgb, teal, olive)', + 'color-mix(--scroll-progress-timeline by steps(10, start) in srgb, teal, olive)', ], }, 'cross-fade()': { @@ -338,7 +328,7 @@ export default { 'mix(--scroll-progress-timeline by ease-in, 100px, 200px)', 'mix(--scroll-progress-timeline by cubic-bezier(0.5, 0, 0.3, 1), 100px, 200px)', 'mix(--scroll-progress-timeline by steps(10, start), 100px, 200px)', - 'mix(0.5 of --keyframes-name)', + 'mix(0.5 of --keyframes-name, 100px, 200px)', ], }, 'mix() with numbers': { @@ -357,6 +347,7 @@ export default { 'mix(--scroll-progress-timeline by ease-in, 0, 10)', 'mix(--scroll-progress-timeline by cubic-bezier(0.5, 0, 0.3, 1), 0, 10)', 'mix(--scroll-progress-timeline by steps(10, start), 0, 10)', + 'mix(50% of --keyframes-name, 0, 10)', ], }, 'mix() with colors': { @@ -364,7 +355,7 @@ export default { tr: '#mix', dev: '#mix', }, - properties: ['color', 'background-color', 'border-color', 'text-decoration-color', 'column-rule-color'], + properties: ['color', 'background-color', 'text-decoration-color', 'column-rule-color'], tests: [ 'mix(0.5, #f00, #00f)', 'mix(0.5, red, blue)', @@ -379,6 +370,7 @@ export default { 'mix(--scroll-progress-timeline by ease-in, #f00, #00f)', 'mix(--scroll-progress-timeline by cubic-bezier(0.5, 0, 0.3, 1), #f00, #00f)', 'mix(--scroll-progress-timeline by steps(10, start), #f00, #00f)', + 'mix(50% of --keyframes-name, #f00, #00f)', ], }, 'mix() with keywords': { @@ -397,6 +389,7 @@ export default { 'mix(--scroll-progress-timeline by ease-in, left, right)', 'mix(--scroll-progress-timeline by cubic-bezier(0.5, 0, 0.3, 1), left, right)', 'mix(--scroll-progress-timeline by steps(10, start), left, right)', + 'mix(50% of --keyframes-name, left, right)', ], }, 'mix() with value lists': { @@ -415,6 +408,7 @@ export default { 'mix(\n --scroll-progress-timeline by ease-in;\n linear-gradient(red, transparent), radial-gradient(transparent, yellow);\n linear-gradient(tramsüaremt. green), radial-gradient(blue, transparent)\n)', 'mix(\n --scroll-progress-timeline by cubic-bezier(0.5, 0, 0.3, 1);\n linear-gradient(red, transparent), radial-gradient(transparent, yellow);\n linear-gradient(tramsüaremt. green), radial-gradient(blue, transparent)\n)', 'mix(\n --scroll-progress-timeline by steps(10, start);\n linear-gradient(red, transparent), radial-gradient(transparent, yellow);\n linear-gradient(tramsüaremt. green), radial-gradient(blue, transparent)\n)', + 'mix(\n 50% of --keyframes-name;\n linear-gradient(red, transparent), radial-gradient(transparent, yellow);\n linear-gradient(tramsüaremt. green), radial-gradient(blue, transparent)\n)', ], }, 'if() with lengths and percentages': { @@ -450,23 +444,49 @@ export default { 'inherit(--custom-property, 100px / 10%)', ], }, - 'random()': { + 'ident()': { + links: { + tr: '#ident', + dev: '#ident', + }, + properties: ['animation-name'], + tests: [ + 'ident("cool")', + 'ident("cool-" var(--animation-name))', + 'ident("--" var(--animation-name))', + ], + }, + 'random() with lengths': { links: { tr: '#random', dev: '#random', }, tests: [ 'random(0px, 100px)', - 'random(50%, 100%)', - 'random(180deg, 360deg)', - 'random(1s, 10s)', - 'random(40Hz, 100Hz)', - 'random(10, 20)', - 'random(10px, 10em)', - 'random(-infinity, infinity)', - 'random(--random-value, 0px, 100px)', + 'random(--random-value-1, 0px, 100px)', 'random(per-element, 0px, 100px)', - 'random(50px, 100%, by 1em)' + 'random(50px + 100px, 100px + 200px)', + 'random(1em + 2em, (3em + 4em) / 2)', + 'random(0px, 100px, by 10px)', + 'random(0px, 100px, by 5px + 5px)', + 'random(0px, 100px, by (20px - 10px) / 2)', + ], + }, + 'random() with degrees': { + links: { + tr: '#random', + dev: '#random', + }, + properties: ['rotate'], + tests: [ + 'random(45deg, 0.5turn)', + 'random(--random-value-1, 45deg, 0.5turn)', + 'random(per-element, 45deg, 0.5turn)', + 'random(10deg + 20deg, 20deg + 40deg)', + 'random(0.1turn + 0.2turn, (0.3turn + 0.4turn) / 2)', + 'random(45deg, 0.5turn, by 45deg)', + 'random(45deg, 0.5turn, by 40deg + 5deg)', + 'random(45deg, 0.5turn, by (100deg - 10deg) / 2)', ], }, 'random-item() with lengths': { @@ -525,7 +545,11 @@ export default { tr: '#toggle-notation', dev: '#toggle-notation', }, - tests: ['toggle(1px, 2px)'], + tests: [ + 'toggle(1px, 2px)', + 'toggle(1px, 2px, 3px)', + 'toggle(1px, 1em, 1vw)', + ], }, 'toggle() with keywords': { links: { @@ -535,13 +559,13 @@ export default { properties: ['font-style'], tests: ['toggle(italic, normal)'], }, - 'toggle() with mixed keywords and lengths': { + 'toggle() with mixed keywords, lengths, and percentages': { links: { tr: '#toggle-notation', dev: '#toggle-notation', }, properties: ['background-position'], - tests: ['toggle(top left, 100% 50%)'], + tests: ['toggle(top left, 100px 50px, 50% 50%)'], }, 'Request URL modifiers': { links: { From 2368b8cb4a9c2c5722d839a5382c27f7874796c6 Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Tue, 28 Jan 2025 00:21:59 +0100 Subject: [PATCH 534/668] Added more tests for if(), ident(), and toggle() --- tests/css-values-5.js | 73 ++++++++++++++++++++++++++++++++++++++----- 1 file changed, 65 insertions(+), 8 deletions(-) diff --git a/tests/css-values-5.js b/tests/css-values-5.js index 644febfd..01cbb8a0 100644 --- a/tests/css-values-5.js +++ b/tests/css-values-5.js @@ -418,10 +418,58 @@ export default { }, tests: [ 'if(media(width < 600px): 100px; else: 200px)', - 'if(media(width < 600px): 100px; else: 200px;)', 'if(media(width < 600px): 10%; else: 20%)', 'if(supports(line-clamp: 3): 100px; else: 200px)', 'if(style(--responsive: true): 100px; else: 200px)', + 'if(media(width < 600px): 100px; media(width > 1000px): 300px; else: 200px;)', + 'if(media(width < 600px): 10%; media(width > 1000px): 30%; else: 20%)', + 'if(supports(line-clamp: 3): 100px; supports(line-clamp: auto): 300px; else: 200px)', + 'if(style(--responsive: true): 100px; style(--responsive: false): 300px; else: 200px)', + ], + }, + 'if() with numbers': { + links: { + tr: '#if-notation', + dev: '#if-notation', + }, + properties: ['line-height'], + tests: [ + 'if(media(width < 600px): 1; else: 2)', + 'if(supports(line-clamp: 3): 1; else: 2)', + 'if(style(--responsive: true): 1; else: 2)', + 'if(media(width < 600px): 1; media(width > 1000px): 3; else: 2;', + 'if(supports(line-clamp: 3): 1; supports(line-clamp: auto): 3; else: 2', + 'if(style(--responsive: true): 1; style(--responsive: false): 3; else: 2', + ], + }, + 'if() with colors': { + links: { + tr: '#if-notation', + dev: '#if-notation', + }, + properties: ['color', 'background-color', 'text-decoration-color', 'column-rule-color'], + tests: [ + 'if(media(width < 600px): red; else: blue)', + 'if(supports(line-clamp: 3): red; else: blue)', + 'if(style(--responsive: true): red; else: blue)', + 'if(media(width < 600px): red; media(width > 1000px): green; else: blue;', + 'if(supports(line-clamp: 3): red; supports(line-clamp: auto): green; else: blue', + 'if(style(--responsive: true): red; style(--responsive: false): green; else: blue', + ], + }, + 'if() with keywords': { + links: { + tr: '#if-notation', + dev: '#if-notation', + }, + properties: ['position'], + tests: [ + 'if(media(width < 600px): left; else: right)', + 'if(supports(line-clamp: 3): left; else: right)', + 'if(style(--responsive: true): left; else: right)', + 'if(media(width < 600px): left; media(width > 1000px): center; else: right;', + 'if(supports(line-clamp: 3): left; supports(line-clamp: auto): center; else: right', + 'if(style(--responsive: true): left; style(--responsive: false): center; else: right', ], }, 'inherit()': { @@ -452,8 +500,11 @@ export default { properties: ['animation-name'], tests: [ 'ident("cool")', + 'ident("cool-" 1)', + 'ident("cool-" ident)', 'ident("cool-" var(--animation-name))', 'ident("--" var(--animation-name))', + 'ident("cool-" sibling-index())', ], }, 'random() with lengths': { @@ -540,15 +591,15 @@ export default { 'calc(sibling-index() * 10px)', ], }, - 'toggle() with lengths': { + 'toggle() with lengths and percentages': { links: { tr: '#toggle-notation', dev: '#toggle-notation', }, tests: [ 'toggle(1px, 2px)', - 'toggle(1px, 2px, 3px)', - 'toggle(1px, 1em, 1vw)', + 'toggle(1px, 1em, calc(2% + 3px))', + 'toggle(min(5%, 1rem), 1em, calc(2% + 3px))', ], }, 'toggle() with keywords': { @@ -556,16 +607,22 @@ export default { tr: '#toggle-notation', dev: '#toggle-notation', }, - properties: ['font-style'], - tests: ['toggle(italic, normal)'], + properties: ['list-style-type'], + tests: [ + 'toggle(disc, circle)', + 'toggle(disc, circle, --custom-counter-style)', + ], }, - 'toggle() with mixed keywords, lengths, and percentages': { + 'toggle() with mixed values': { links: { tr: '#toggle-notation', dev: '#toggle-notation', }, properties: ['background-position'], - tests: ['toggle(top left, 100px 50px, 50% 50%)'], + tests: [ + 'toggle(top left, 100px 50px, 50% 50%)', + 'toggle(calc(10% + 2px) min(10%, 5vw), 100px 50px, 50% 50%, 0 0)', + ], }, 'Request URL modifiers': { links: { From 7544620eef787d7f09d91e0981e495116b4c5671 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=80=E4=B8=9D?= Date: Thu, 6 Feb 2025 13:33:11 +0800 Subject: [PATCH 535/668] [css-gradient]: allow a single color stop with 0-1 positions --- tests/css-images-3.js | 33 +++++++++++++++++++++++++++++++-- tests/css-images-4.js | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 66 insertions(+), 2 deletions(-) diff --git a/tests/css-images-3.js b/tests/css-images-3.js index e077d673..3a4fc6fc 100644 --- a/tests/css-images-3.js +++ b/tests/css-images-3.js @@ -18,12 +18,21 @@ export default { tests: [ 'linear-gradient(white, black)', 'linear-gradient(to right, white, black)', + 'linear-gradient(0, white, black)', 'linear-gradient(45deg, white, black)', 'linear-gradient(white 50%, black)', 'linear-gradient(white 5px, black)', 'linear-gradient(white, #f06, black)', 'linear-gradient(currentColor, black)', 'linear-gradient(red -50px, white calc(-25px + 50%), blue 100%)', + + 'linear-gradient(red 0 0)', + // allow a single color stop with 0-1 positions + // https://github.com/w3c/csswg-drafts/issues/10092#issuecomment-2145860054 + 'linear-gradient(red)', + 'linear-gradient(red 0)', + 'linear-gradient(red 50px)', + 'linear-gradient(0, red)', ], }, 'radial-gradient()': { @@ -39,12 +48,24 @@ export default { 'radial-gradient(circle closest-corner, white, black)', 'radial-gradient(farthest-side, white, black)', 'radial-gradient(circle farthest-side, white, black)', + 'radial-gradient(0, white, black)', 'radial-gradient(50%, white, black)', 'radial-gradient(60% 60%, white, black)' /*, "radial-gradient(at 60% 60%, white, black)", "radial-gradient(30% 30% at 20% 20%, white, black)", "radial-gradient(5em circle at top left, yellow, blue)", "radial-gradient(circle farthest-side at top left, white, black)"*/, + + 'radial-gradient(red 0 0)', + // allow a single color stop with 0-1 positions + // https://github.com/w3c/csswg-drafts/issues/10092#issuecomment-2145860054 + 'radial-gradient(red)', + 'radial-gradient(red 0)', + 'radial-gradient(red 50px)', + 'radial-gradient(0%, red)', + 'radial-gradient(50% 60%, red)', + 'radial-gradient(circle, red)', + 'radial-gradient(circle closest-corner, red)', ], }, 'repeating-linear-gradient()': { @@ -52,14 +73,22 @@ export default { tr: '#repeating-gradients', dev: '#repeating-gradients', }, - tests: 'repeating-linear-gradient(white, black)', + tests: [ + 'repeating-linear-gradient(red)', + 'repeating-linear-gradient(red 0 0)', + 'repeating-linear-gradient(white, black)', + ], }, 'repeating-radial-gradient()': { links: { tr: '#repeating-gradients', dev: '#repeating-gradients', }, - tests: 'repeating-radial-gradient(white, black)', + tests: [ + 'repeating-radial-gradient(red)', + 'repeating-radial-gradient(red 0 0)', + 'repeating-radial-gradient(white, black)', + ] }, }, properties: { diff --git a/tests/css-images-4.js b/tests/css-images-4.js index aeeb0079..d508a2fc 100644 --- a/tests/css-images-4.js +++ b/tests/css-images-4.js @@ -39,6 +39,13 @@ export default { 'linear-gradient(in hsl longer hue to right, #A37, #595)', 'linear-gradient(in hsl increasing hue to right, #A37, #595)', 'linear-gradient(in hsl decreasing hue to right, #A37, #595)', + + // allow a single color stop with 0-1 positions + // https://github.com/w3c/csswg-drafts/issues/10092#issuecomment-2145860054 + 'linear-gradient(in lch, red)', + 'linear-gradient(in lab, red 0)', + 'linear-gradient(in oklab to right, red 50px)', + 'linear-gradient(in hsl shorter hue, red)', ], }, 'radial-gradient()': { @@ -60,6 +67,12 @@ export default { 'radial-gradient(in srgb farthest-side at left bottom, color(display-p3 0.918 0.2 0.161), #081)', 'radial-gradient(in oklab farthest-side at left bottom, color(display-p3 0.918 0.2 0.161), #081)', 'radial-gradient(in hsl shorter hue at left bottom, color(display-p3 0.918 0.2 0.161), #081)', + // allow a single color stop with 0-1 positions + // https://github.com/w3c/csswg-drafts/issues/10092#issuecomment-2145860054 + 'radial-gradient(in lch, red)', + 'radial-gradient(in lab, red 0)', + 'radial-gradient(in oklab at 50%, red 50px)', + 'radial-gradient(in hsl shorter hue, red)', ], }, 'conic-gradient()': { @@ -69,6 +82,7 @@ export default { }, tests: [ 'conic-gradient(white, black)', + 'conic-gradient(from 0, white, black)', 'conic-gradient(from 5deg, white, black)', 'conic-gradient(at top left, white, black)', 'conic-gradient(white 50%, black)', @@ -76,6 +90,19 @@ export default { 'conic-gradient(white, #f06, black)', 'conic-gradient(currentColor, black)', 'conic-gradient(black 25%, white 0deg 50%, black 0deg 75%, white 0deg)', + + 'conic-gradient(red 0 0)', + 'conic-gradient(red 90deg 50%)', + 'conic-gradient(from 0, red 0 0)', + 'conic-gradient(from 20deg, red 45deg 20%)', + + // allow a single color stop with 0-1 positions + // https://github.com/w3c/csswg-drafts/issues/10092#issuecomment-2145860054 + 'conic-gradient(red)', + 'conic-gradient(red 0)', + 'conic-gradient(red 50%)', + 'conic-gradient(red 90deg)', + 'conic-gradient(from 0, red)', ], }, 'conic-gradient() color interpolation': { @@ -91,6 +118,14 @@ export default { 'conic-gradient(in srgb from 45deg, white, black, white)', 'conic-gradient(in oklab at top left, white, black, white)', 'conic-gradient(in hsl shorter hue from 45deg, white, black, white)', + + // allow a single color stop with 0-1 positions + // https://github.com/w3c/csswg-drafts/issues/10092#issuecomment-2145860054 + 'conic-gradient(in lab, red)', + 'conic-gradient(from 45deg in lch, red 0)', + 'conic-gradient(in oklab at top left, red 50%)', + 'conic-gradient(in hsl shorter hue from 45deg, red 90deg)', + 'conic-gradient(from 0 in srgb, red)', ], }, 'repeating-conic-gradient()': { From cc600f25592328021ef0394d8d385d34000f2b9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=80=E4=B8=9D?= Date: Sat, 8 Feb 2025 11:19:09 +0800 Subject: [PATCH 536/668] [css-gradient]: allow a single color stop in `image-set` and `cross-fade` --- tests/css-images-4.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/tests/css-images-4.js b/tests/css-images-4.js index d508a2fc..ea91c30e 100644 --- a/tests/css-images-4.js +++ b/tests/css-images-4.js @@ -165,6 +165,12 @@ export default { "image-set(url(foobar.png) type('image/png'))", "image-set(url(foobar.png) 1x type('image/png'))", "image-set(url(foobar.png) type('image/png') 1x)", + + // allow a single color stop with 0-1 positions + // https://github.com/w3c/csswg-drafts/issues/10092#issuecomment-2145860054 + 'image-set(linear-gradient(green))', + 'image-set(radial-gradient(green))', + 'image-set(conic-gradient(green))', ], }, 'element()': { @@ -183,6 +189,9 @@ export default { 'cross-fade(url(a.png), url(b.png))', 'cross-fade(url(a.png) 50%, url(b.png))', 'cross-fade(url(a.png) 50%, white)', + 'cross-fade(linear-gradient(green))', + 'cross-fade(radial-gradient(green))', + 'cross-fade(conic-gradient(green))', ], }, }, From bc060e39d03aa631ea7109a3978ba1be919bd541 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=80=E4=B8=9D?= Date: Thu, 13 Feb 2025 23:21:58 +0800 Subject: [PATCH 537/668] [css-gradient]: Remove two location syntax for gradient color stops The syntax with two s was only added in css-images-4. Follow-up will be in a separate PR. --- tests/css-images-3.js | 4 ---- tests/css-images-4.js | 14 +++++++------- 2 files changed, 7 insertions(+), 11 deletions(-) diff --git a/tests/css-images-3.js b/tests/css-images-3.js index 3a4fc6fc..9d47e5f0 100644 --- a/tests/css-images-3.js +++ b/tests/css-images-3.js @@ -26,7 +26,6 @@ export default { 'linear-gradient(currentColor, black)', 'linear-gradient(red -50px, white calc(-25px + 50%), blue 100%)', - 'linear-gradient(red 0 0)', // allow a single color stop with 0-1 positions // https://github.com/w3c/csswg-drafts/issues/10092#issuecomment-2145860054 'linear-gradient(red)', @@ -56,7 +55,6 @@ export default { "radial-gradient(5em circle at top left, yellow, blue)", "radial-gradient(circle farthest-side at top left, white, black)"*/, - 'radial-gradient(red 0 0)', // allow a single color stop with 0-1 positions // https://github.com/w3c/csswg-drafts/issues/10092#issuecomment-2145860054 'radial-gradient(red)', @@ -75,7 +73,6 @@ export default { }, tests: [ 'repeating-linear-gradient(red)', - 'repeating-linear-gradient(red 0 0)', 'repeating-linear-gradient(white, black)', ], }, @@ -86,7 +83,6 @@ export default { }, tests: [ 'repeating-radial-gradient(red)', - 'repeating-radial-gradient(red 0 0)', 'repeating-radial-gradient(white, black)', ] }, diff --git a/tests/css-images-4.js b/tests/css-images-4.js index ea91c30e..5254521d 100644 --- a/tests/css-images-4.js +++ b/tests/css-images-4.js @@ -45,7 +45,8 @@ export default { 'linear-gradient(in lch, red)', 'linear-gradient(in lab, red 0)', 'linear-gradient(in oklab to right, red 50px)', - 'linear-gradient(in hsl shorter hue, red)', + 'linear-gradient(in hsl longer hue, red)', + 'linear-gradient(90deg in hsl longer hue, red)', ], }, 'radial-gradient()': { @@ -72,7 +73,7 @@ export default { 'radial-gradient(in lch, red)', 'radial-gradient(in lab, red 0)', 'radial-gradient(in oklab at 50%, red 50px)', - 'radial-gradient(in hsl shorter hue, red)', + 'radial-gradient(in hsl longer hue, red)', ], }, 'conic-gradient()': { @@ -91,11 +92,6 @@ export default { 'conic-gradient(currentColor, black)', 'conic-gradient(black 25%, white 0deg 50%, black 0deg 75%, white 0deg)', - 'conic-gradient(red 0 0)', - 'conic-gradient(red 90deg 50%)', - 'conic-gradient(from 0, red 0 0)', - 'conic-gradient(from 20deg, red 45deg 20%)', - // allow a single color stop with 0-1 positions // https://github.com/w3c/csswg-drafts/issues/10092#issuecomment-2145860054 'conic-gradient(red)', @@ -124,6 +120,7 @@ export default { 'conic-gradient(in lab, red)', 'conic-gradient(from 45deg in lch, red 0)', 'conic-gradient(in oklab at top left, red 50%)', + 'conic-gradient(in hsl longer hue, red)', 'conic-gradient(in hsl shorter hue from 45deg, red 90deg)', 'conic-gradient(from 0 in srgb, red)', ], @@ -189,6 +186,9 @@ export default { 'cross-fade(url(a.png), url(b.png))', 'cross-fade(url(a.png) 50%, url(b.png))', 'cross-fade(url(a.png) 50%, white)', + + // allow a single color stop with 0-1 positions + // https://github.com/w3c/csswg-drafts/issues/10092#issuecomment-2145860054 'cross-fade(linear-gradient(green))', 'cross-fade(radial-gradient(green))', 'cross-fade(conic-gradient(green))', From 42a12251be741f41182901aca23d87b43d8b82f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=80=E4=B8=9D?= Date: Thu, 13 Feb 2025 23:33:47 +0800 Subject: [PATCH 538/668] [css-pseudo-4]: add nested ::details-content and pseudo-class Chrome bug: https://issues.chromium.org/issues/373478544 --- tests/css-pseudo-4.js | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/tests/css-pseudo-4.js b/tests/css-pseudo-4.js index b97400a0..05e79af3 100644 --- a/tests/css-pseudo-4.js +++ b/tests/css-pseudo-4.js @@ -87,7 +87,28 @@ export default { links: { dev: '#details-content-pseudo', }, - tests: ['::details-content'], + tests: [ + '::details-content', + '::details-content::first-letter', + '::details-content::first-letter::prefix', + '::details-content::first-letter::postfix', + '::details-content::first-line', + '::details-content::before', + '::details-content::after', + '::details-content::before::marker', + '::details-content::after::marker', + '::details-content::search-text', + '::details-content::target-text', + '::details-content::spelling-error', + '::details-content::grammar-error', + '::details-content::selection', + '::details-content:hover', + '::details-content:active', + '::details-content:visited', + '::details-content:focus', + '::details-content:focus-visible', + '::details-content:focus-within', + ], } }, interfaces: { From f26c8104bc1092ae719a72723dc12a42c5f8b408 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=80=E4=B8=9D?= Date: Sun, 16 Feb 2025 22:47:41 +0800 Subject: [PATCH 539/668] [css-pseudo-4]: add `::details-content::highlight()` --- tests/css-pseudo-4.js | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/css-pseudo-4.js b/tests/css-pseudo-4.js index 05e79af3..3ab4cb58 100644 --- a/tests/css-pseudo-4.js +++ b/tests/css-pseudo-4.js @@ -102,6 +102,7 @@ export default { '::details-content::spelling-error', '::details-content::grammar-error', '::details-content::selection', + '::details-content::highlight(example-highlight)', '::details-content:hover', '::details-content:active', '::details-content:visited', From 16db4a44e83f2d7b3ef410fd9f00bec205f96a9d Mon Sep 17 00:00:00 2001 From: Sebastian Zartner Date: Tue, 18 Feb 2025 21:48:38 +0100 Subject: [PATCH 540/668] Updated attr() tests --- tests/css-values-5.js | 43 ++++++++++++++++++++++++++----------------- 1 file changed, 26 insertions(+), 17 deletions(-) diff --git a/tests/css-values-5.js b/tests/css-values-5.js index 01cbb8a0..222f87e0 100644 --- a/tests/css-values-5.js +++ b/tests/css-values-5.js @@ -104,23 +104,32 @@ export default { tr: '#attr-notation', dev: '#attr-notation', }, - properties: ['content', 'width', 'padding'], - tests: [ - 'attr(data-px)', - 'attr(data-px, "12px")', - 'attr(data-px px)', - 'attr(data-px px, initial)', - 'attr(data-string string)', - 'attr(data-url url)', - 'attr(data-ident ident)', - 'attr(data-color color)', - 'attr(data-number number)', - 'attr(data-percentage percentage)', - 'attr(data-length length)', - 'attr(data-angle angle)', - 'attr(data-time time)', - 'attr(data-frequency frequency)', - 'attr(data-flex flex)', + tests: [ + 'attr(data-value)', + 'attr(data-value, "Hello!")', + 'attr(data-value type(*))', + 'attr(data-value type())', + 'attr(data-value type())', + 'attr(data-value type())', + 'attr(data-value type())', + 'attr(data-value type())', + 'attr(data-value type())', + 'attr(data-value type())', + 'attr(data-value type())', + 'attr(data-value type())', + 'attr(data-value type())', + 'attr(data-value type())', + 'attr(data-value type(

          @@ -54,11 +53,13 @@

          MDN
            -
          • - {{ feature.tests[index] }} - {{ result.prefix }} - {{ result.note }} -
          • +
          From 0ce91cc5aa49027b355e83bcc064406ce0b9a5dd Mon Sep 17 00:00:00 2001 From: Lea Verou Date: Mon, 25 Aug 2025 01:55:53 +0300 Subject: [PATCH 629/668] Move % formatting to app, do score math in `Score` --- index.html | 7 ++----- src/classes/Score.js | 22 ++++++++++++++++++---- src/csstest.js | 9 +++++++++ 3 files changed, 29 insertions(+), 9 deletions(-) diff --git a/index.html b/index.html index 097797d5..e112d59d 100644 --- a/index.html +++ b/index.html @@ -19,7 +19,7 @@

          The CSS3 test

          -

          Your browser scores 0%

          +

          Your browser scores 0%

          Recognized @@ -43,10 +43,7 @@

          - + {{ feature.title }} TR DEV diff --git a/src/classes/Score.js b/src/classes/Score.js index 5faa2e10..69a8c7bc 100644 --- a/src/classes/Score.js +++ b/src/classes/Score.js @@ -18,6 +18,24 @@ export default class Score { } } + /** + * Percentage of passed tests + */ + get success () { + return this.passedTests / this.totalTests; + } + + get value () { + return this.valueOf(); + } + + /** + * Percentage of passed features + */ + valueOf () { + return this.passed / this.total; + } + update(data) { if (!data.total) { return; @@ -55,10 +73,6 @@ export default class Score { return this.percent() + '%'; } - percent () { - return Math.round((100 * this.passed) / this.total); - } - /** * Convert to JSON * @returns {Object} diff --git a/src/csstest.js b/src/csstest.js index 8984a087..aa4c474d 100644 --- a/src/csstest.js +++ b/src/csstest.js @@ -131,6 +131,15 @@ let appSpec = { round(value, maxDecimals = 0) { return Math.round(value * 10 ** maxDecimals) / 10 ** maxDecimals; }, + + percent(value, maxDecimals = 0) { + value = +value; + return value.toLocaleString("en-US", { + style: "percent", + minimumFractionDigits: 0, + maximumFractionDigits: maxDecimals, + }); + }, }, watch: { From e3d8966473e570e5c92a2a4805e15afd204ba473 Mon Sep 17 00:00:00 2001 From: Lea Verou Date: Mon, 25 Aug 2025 02:39:19 +0300 Subject: [PATCH 630/668] `Score` improvements - Do not mirror the tree as a `Score` tree, instead each `Score` now hangs off of a node and uses the node as the source of truth for tree relationships - Move `testTime` in `Score` --- index.html | 2 +- src/classes/AbstractFeature.js | 21 +++++++++-- src/classes/Feature.js | 7 ++-- src/classes/Score.js | 24 +++++++++---- src/classes/Spec.js | 17 +++------ src/csstest.js | 66 +++++++++------------------------- 6 files changed, 63 insertions(+), 74 deletions(-) diff --git a/index.html b/index.html index e112d59d..d826e7be 100644 --- a/index.html +++ b/index.html @@ -26,7 +26,7 @@

          Your browser scores 0%

          0 out of 0 features - in 0 ms + in 0 ms

          diff --git a/src/classes/AbstractFeature.js b/src/classes/AbstractFeature.js index be74b390..6c84dd29 100644 --- a/src/classes/AbstractFeature.js +++ b/src/classes/AbstractFeature.js @@ -1,6 +1,9 @@ import Score from './Score.js'; export default class AbstractFeature { + children = []; + tested = false; + constructor (def = {}, parent) { this.def = def; @@ -19,7 +22,7 @@ export default class AbstractFeature { this.title = def.title; } - this.score = new Score(this.parent?.score, this.constructor.forceTotal); + this.score = new Score(this, this.constructor.forceTotal); } get link() { @@ -81,6 +84,20 @@ export default class AbstractFeature { } test() { - this.tests.forEach(test => test()); + if (this.tested) { + return; + } + + this.tested = true; + + if (this.children?.length > 0) { + let startTime = performance.now(); + for (let child of this.children) { + child.test(); + } + + this.score.testTime = performance.now() - startTime; + this.score.recalc(); + } } } diff --git a/src/classes/Feature.js b/src/classes/Feature.js index f450840b..e7972736 100644 --- a/src/classes/Feature.js +++ b/src/classes/Feature.js @@ -42,11 +42,13 @@ export default class Feature extends AbstractFeature { } test () { - if (this.results) { - // Already tested + if (this.tested) { return; } + this.tested = true; + + let startTime = performance.now(); let testCallback = featureTypes[this.type]; this.passed = 0; @@ -60,6 +62,7 @@ export default class Feature extends AbstractFeature { this.results.push(result); } + this.score.testTime = performance.now() - startTime; this.score.update({ passed: this.passed, total: this.tests.length }); } } diff --git a/src/classes/Score.js b/src/classes/Score.js index 69a8c7bc..cc6ec42d 100644 --- a/src/classes/Score.js +++ b/src/classes/Score.js @@ -4,20 +4,27 @@ export default class Score { total = 0; passedTests = 0; totalTests = 0; - children = []; + testTime = 0; /** - * @param {*} parent - Score of parent object + * @param {*} node - Score of parent object * @param {*} forceTotal - By default, all tests count as individual features. Set this to 1 to count them as 1 feature. */ - constructor(parent, forceTotal) { + constructor(node, forceTotal) { this.forceTotal = forceTotal; - if (parent) { - this.parent = parent; - parent.children.push(this); + if (node) { + this.node = node; } } + get parent () { + return this.node?.parent ?? null; + } + + get children () { + return this.node?.children?.map(child => child.score) ?? []; + } + /** * Percentage of passed tests */ @@ -58,12 +65,15 @@ export default class Score { this.total = 0; this.passedTests = 0; this.totalTests = 0; + this.testTime = 0; - for (let child of this.children) { + let children = this.children; + for (let child of children) { this.passed += child.passed; this.total += child.total; this.passedTests += child.passedTests; this.totalTests += child.totalTests; + this.testTime += child.testTime; } this.parent?.recalc(this); diff --git a/src/classes/Spec.js b/src/classes/Spec.js index 40d6b7d6..8927b294 100644 --- a/src/classes/Spec.js +++ b/src/classes/Spec.js @@ -33,7 +33,6 @@ export default class Spec extends AbstractFeature { let feature = features[id]; feature.id = id; feature.type = type; - feature = this.features[type][id] = new Feature(feature, this); // Apply aggregate properties if no override if (properties) { @@ -45,6 +44,10 @@ export default class Spec extends AbstractFeature { if (Interface) { feature.interface ??= Interface; } + + feature = this.features[type][id] = new Feature(feature, this); + + this.children.push(feature); } } } @@ -93,18 +96,6 @@ export default class Spec extends AbstractFeature { return ''; } - test() { - let startTime = performance.now(); - for (let type in this.features) { - let features = this.features[type]; - for (let id in features) { - features[id].test(); - } - } - - this.testTime = performance.now() - startTime; - } - matchesFilter (filter) { if (!filter) { return this.firstSnapshot !== 2.2; diff --git a/src/csstest.js b/src/csstest.js index aa4c474d..34cf416d 100644 --- a/src/csstest.js +++ b/src/csstest.js @@ -6,18 +6,16 @@ import Spec from './classes/Spec.js'; import content from './vue/directives/content.js'; import CarbonAds from './vue/components/carbon-ads.js'; -let mainScore = new Score(); const classes = ['epic-fail', 'fail', 'very-buggy', 'buggy', 'slightly-buggy', 'almost-pass', 'pass']; let allSpecs = {}; -let rootFeature = new AbstractFeature(); -rootFeature.score = mainScore; +let root = new AbstractFeature(); for (let id in Specs) { let spec = Specs[id]; spec.id = id; - spec = new Spec(spec, rootFeature); + spec = new Spec(spec, root); allSpecs[id] = spec; } @@ -28,41 +26,25 @@ let components = { let appSpec = { data() { return { - /** - * Score for all specs - * @type {Score} - */ - mainScore, + root, /** * All specs as dictionary * @type {Record} */ allSpecs, - rootFeature, filter: new URLSearchParams(window.location.search).get('filter') ?? '', // TODO move this to Score testTime: 0, - filterScores: {}, }; }, - mounted() { - this.runTests(); - }, - computed: { /** Sorted and filtered specs * @type {Spec[]} */ specs () { - let specs = Object.values(this.allSpecs).filter(spec => spec.matchesFilter(this.filter)).sort((a, b) => a.title.localeCompare(b.title)); - - for (let spec of specs) { - spec.test(); - } - - return specs; + return this.allSpecsList.filter(spec => spec.matchesFilter(this.filter)).sort((a, b) => a.title.localeCompare(b.title)); }, /** All specs as array @@ -76,23 +58,7 @@ let appSpec = { * @type {Score} */ score () { - if (this.specs.length === this.allSpecsList.length) { - // All specs shown - return this.mainScore; - } - - let score = this.filterScores[this.filter]; - - if (!score) { - score = new Score(); - score.children = this.specs.map(spec => spec.score); - - score.recalc(); - - this.filterScores[this.filter] = score; - } - - return score; + return this.root.score; }, }, @@ -118,16 +84,6 @@ let appSpec = { return classes[index]; }, - runTests() { - let startTime = performance.now(); - - for (let spec of this.specs) { - spec.test(); - } - - this.testTime = performance.now() - startTime; - }, - round(value, maxDecimals = 0) { return Math.round(value * 10 ** maxDecimals) / 10 ** maxDecimals; }, @@ -143,6 +99,18 @@ let appSpec = { }, watch: { + specs: { + handler() { + this.root.children = this.specs; + + for (let spec of this.specs) { + spec.test(); + } + + this.root.score.recalc(); + }, + immediate: true, + }, filter: { handler() { // Update address bar From 35b1ac76b2f8138bb7bfbb7a7fd92f372a3747ca Mon Sep 17 00:00:00 2001 From: Lea Verou Date: Mon, 25 Aug 2025 02:52:42 +0300 Subject: [PATCH 631/668] Refactor: Make `score.set()` a little more generic --- src/classes/Feature.js | 12 ++++++++---- src/classes/Score.js | 16 +++++++++------- 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/src/classes/Feature.js b/src/classes/Feature.js index e7972736..1991c546 100644 --- a/src/classes/Feature.js +++ b/src/classes/Feature.js @@ -51,19 +51,23 @@ export default class Feature extends AbstractFeature { let startTime = performance.now(); let testCallback = featureTypes[this.type]; - this.passed = 0; + let passedTests = 0; + let totalTests = this.tests.length; this.propertyPrefix = null; this.results = []; for (let test of this.tests) { let result = testCallback(test, this.id, this) ?? {}; this.propertyPrefix ??= result.propertyPrefix; - this.passed += +result.success; + passedTests += +result.success; this.results.push(result); } - this.score.testTime = performance.now() - startTime; - this.score.update({ passed: this.passed, total: this.tests.length }); + this.score.set({ + passedTests: passedTests, + totalTests: totalTests, + testTime: performance.now() - startTime, + }); } } diff --git a/src/classes/Score.js b/src/classes/Score.js index cc6ec42d..79d53d2c 100644 --- a/src/classes/Score.js +++ b/src/classes/Score.js @@ -43,17 +43,19 @@ export default class Score { return this.passed / this.total; } - update(data) { - if (!data.total) { + set (score) { + if (!score.totalTests) { return; } - this.passed = this.passedTests = data.passed; - this.total = this.totalTests = data.total; + this.passedTests = score.passedTests; + this.totalTests = score.totalTests; - if (this.forceTotal) { - this.total = this.forceTotal; - this.passed *= this.total / this.totalTests; + this.total = this.forceTotal ?? this.totalTests; + this.passed = this.passedTests * this.total / this.totalTests; + + if (score.testTime) { + this.testTime = score.testTime; } this.parent?.recalc(); From e1a02d9af68426316df454e7c9586bffc3c397c1 Mon Sep 17 00:00:00 2001 From: Lea Verou Date: Mon, 25 Aug 2025 03:01:12 +0300 Subject: [PATCH 632/668] Make `spec.features[type]` an array Simplify data structure, as it's only used for rendering --- index.html | 2 +- src/classes/Spec.js | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/index.html b/index.html index d826e7be..09641ec4 100644 --- a/index.html +++ b/index.html @@ -42,7 +42,7 @@

          -
          +
          {{ feature.title }} TR diff --git a/src/classes/Spec.js b/src/classes/Spec.js index 8927b294..9d4cd971 100644 --- a/src/classes/Spec.js +++ b/src/classes/Spec.js @@ -27,7 +27,7 @@ export default class Spec extends AbstractFeature { let {properties, required, interface: Interface, ...features} = this.def[type]; - this.features[type] = {}; + this.features[type] = []; for (let id in features) { let feature = features[id]; @@ -45,7 +45,8 @@ export default class Spec extends AbstractFeature { feature.interface ??= Interface; } - feature = this.features[type][id] = new Feature(feature, this); + feature = new Feature(feature, this); + this.features[type].push(feature); this.children.push(feature); } From b4a4a218134fbbd5062bec3bba727daf6d507788 Mon Sep 17 00:00:00 2001 From: Lea Verou Date: Mon, 25 Aug 2025 03:13:06 +0300 Subject: [PATCH 633/668] Move comment --- src/classes/Spec.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/classes/Spec.js b/src/classes/Spec.js index 9d4cd971..10b7d0e8 100644 --- a/src/classes/Spec.js +++ b/src/classes/Spec.js @@ -3,6 +3,8 @@ import { groups, orgs } from '../data.js'; import Feature from "./Feature.js"; import featureTypes from '../features.js'; +// Shorten the title by removing parentheticals, +// subheadings, CSS and Module words const removedWords = / *(?:\([^)]*\)|:.*|\b(?:CSS(?! 2)|Module)\b)( *)/g; export default class Spec extends AbstractFeature { @@ -11,8 +13,7 @@ export default class Spec extends AbstractFeature { constructor (def, parent) { super(def, parent); - // Shorten the title by removing parentheticals, - // subheadings, CSS and Module words + if (this.title) { this.title = this.title.replace(removedWords, '$1').trim(); } From 5b44376e2e9fbf473d1650c997b1f3c3f1d15f3c Mon Sep 17 00:00:00 2001 From: Lea Verou Date: Mon, 25 Aug 2025 05:11:34 +0300 Subject: [PATCH 634/668] Move util functions to separate file --- src/csstest.js | 39 ++++----------------------------------- src/util.js | 39 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+), 35 deletions(-) create mode 100644 src/util.js diff --git a/src/csstest.js b/src/csstest.js index 34cf416d..884490c1 100644 --- a/src/csstest.js +++ b/src/csstest.js @@ -4,10 +4,9 @@ import Score from './classes/Score.js'; import Specs from './tests.js'; import Spec from './classes/Spec.js'; import content from './vue/directives/content.js'; +import { passclass, round, percent } from './util.js'; import CarbonAds from './vue/components/carbon-ads.js'; -const classes = ['epic-fail', 'fail', 'very-buggy', 'buggy', 'slightly-buggy', 'almost-pass', 'pass']; - let allSpecs = {}; let root = new AbstractFeature(); @@ -63,39 +62,9 @@ let appSpec = { }, methods: { - passclass (info) { - if (info === undefined || info === null) { - return ''; - } - - let success; - - if (typeof info === 'boolean') { - success = +info; - } - else if (typeof info === 'number') { - success = info; - } - else if (typeof info === 'object' && 'passed' in info) { - success = info.passed / info.total; - } - - let index = Math.round(success * (classes.length - 1)); - return classes[index]; - }, - - round(value, maxDecimals = 0) { - return Math.round(value * 10 ** maxDecimals) / 10 ** maxDecimals; - }, - - percent(value, maxDecimals = 0) { - value = +value; - return value.toLocaleString("en-US", { - style: "percent", - minimumFractionDigits: 0, - maximumFractionDigits: maxDecimals, - }); - }, + passclass, + round, + percent, }, watch: { diff --git a/src/util.js b/src/util.js new file mode 100644 index 00000000..1cfdb8c9 --- /dev/null +++ b/src/util.js @@ -0,0 +1,39 @@ +const classes = ['epic-fail', 'fail', 'very-buggy', 'buggy', 'slightly-buggy', 'almost-pass', 'pass']; + +export function passclass(info) { + if (info === undefined || info === null) { + return ''; + } + + let success; + + if (typeof info === 'boolean') { + success = +info; + } + else if (typeof info === 'number') { + success = info; + } + else if (typeof info === 'object' && 'passed' in info) { + success = info.passed / info.total; + } + + if (success >= 1) { + return classes.at(-1); + } + + let index = Math.round(success * (classes.length - 2)); + return classes[index]; +} + +export function round(value, maxDecimals = 0) { + return Math.round(value * 10 ** maxDecimals) / 10 ** maxDecimals; +} + +export function percent(value, maxDecimals = 0) { + value = +value; + return value.toLocaleString("en-US", { + style: "percent", + minimumFractionDigits: 0, + maximumFractionDigits: maxDecimals, + }); +} From d4bec42277e3eb90f0202cf387dfa25b15deafd6 Mon Sep 17 00:00:00 2001 From: Lea Verou Date: Mon, 25 Aug 2025 05:40:08 +0300 Subject: [PATCH 635/668] Improve passed indicators - Drop emojis and use mini donut charts. Clearer and higher bandwidth. - Combine color and non-color display to reduce clutter --- index.html | 13 +- src/csstest.js | 2 + .../support-status/support-status.css | 39 ++++ .../support-status/support-status.js | 25 +++ ui/css/icons.css | 2 + ui/css/style.css | 180 +++++++----------- ui/css/tokens.css | 1 - ui/icons/check.svg | 3 + ui/icons/x.svg | 7 + 9 files changed, 160 insertions(+), 112 deletions(-) create mode 100644 src/vue/components/support-status/support-status.css create mode 100644 src/vue/components/support-status/support-status.js create mode 100644 ui/icons/check.svg create mode 100644 ui/icons/x.svg diff --git a/index.html b/index.html index 09641ec4..a445e326 100644 --- a/index.html +++ b/index.html @@ -31,7 +31,7 @@

          Your browser scores 0%

          -
          +