mirror of
https://github.com/servo/servo.git
synced 2025-06-27 18:43:40 +01:00
Update web-platform-tests to revision 2660fc486f7027c913863d48a8843942f0c0365e
This commit is contained in:
parent
96de31b463
commit
c413a1139e
455 changed files with 8535 additions and 2067 deletions
|
@ -7,7 +7,7 @@
|
|||
expected: FAIL
|
||||
|
||||
[Opening a blob URL in a new window immediately before revoking it works.]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[Opening a blob URL in a noopener about:blank window immediately before revoking it works.]
|
||||
expected: FAIL
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -0,0 +1,2 @@
|
|||
[vertical-align-negative-leading-001.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,4 @@
|
|||
[vertical-align-top-bottom-001.html]
|
||||
[vertical-align-top-bottom-001]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
[inline-static-position-001.html]
|
||||
[CSS Test: Static positions and line wrapping]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
[border-radius-computed.html]
|
||||
[Property border-radius value '1px 2% 3px 4%' computes to '1px 2% 3px 4%']
|
||||
expected: FAIL
|
||||
|
||||
[Property border-radius value '1px 2% 1px 1px' computes to '1px 2% 1px 1px']
|
||||
expected: FAIL
|
||||
|
||||
[Property border-radius value '1px 1px 1px 1px / 1px 1px 2% 1px' computes to '1px / 1px 1px 2%']
|
||||
expected: FAIL
|
||||
|
||||
[Property border-radius value '1px 2% 3px 4% / 5em' computes to '1px 2% 3px 4% / 200px']
|
||||
expected: FAIL
|
||||
|
||||
[Property border-radius value '1px' computes to '1px']
|
||||
expected: FAIL
|
||||
|
||||
[Property border-radius value '1px 1px 2% 2%' computes to '1px 1px 2% 2%']
|
||||
expected: FAIL
|
||||
|
||||
[Property border-radius value '5em / 1px 2% 3px 4%' computes to '200px / 1px 2% 3px 4%']
|
||||
expected: FAIL
|
||||
|
||||
[Property border-radius value '1px 1px 1px 2% / 1px 2% 1px 2%' computes to '1px 1px 1px 2% / 1px 2%']
|
||||
expected: FAIL
|
||||
|
||||
[Property border-radius value '1px 2% 2% 2% / 1px 2% 3px 2%' computes to '1px 2% 2% / 1px 2% 3px']
|
||||
expected: FAIL
|
||||
|
946
tests/wpt/metadata/css/css-fonts/parsing/font-computed.html.ini
Normal file
946
tests/wpt/metadata/css/css-fonts/parsing/font-computed.html.ini
Normal file
|
@ -0,0 +1,946 @@
|
|||
[font-computed.html]
|
||||
[Property font value '900 10px/normal cursive' computes to ['normal normal 900 normal 10px/normal cursive' or 'normal normal 900 normal 10px / normal cursive'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'small-caps lighter semi-condensed normal xx-small fantasy' computes to ['normal small-caps 700 semi-condensed 9.6px/normal fantasy' or 'normal small-caps 700 semi-condensed 9.6px / normal fantasy'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal ultra-expanded italic lighter smaller sans-serif' computes to ['italic normal 700 ultra-expanded 33.3333px/normal sans-serif' or 'italic normal 700 ultra-expanded 33.3333px / normal sans-serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'italic normal normal normal xx-small "Non-Generic Example Family Name"' computes to ['italic normal 400 normal 9.6px/normal "Non-Generic Example Family Name"' or 'italic normal 400 normal 9.6px / normal "Non-Generic Example Family Name"'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal normal italic bolder smaller Menu' computes to ['italic normal 900 normal 33.3333px/normal Menu' or 'italic normal 900 normal 33.3333px / normal Menu'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal extra-expanded larger/calc(120% + 1.2em) "Non-Generic Example Family Name"' computes to ['normal normal 400 extra-expanded 48px/115.2px "Non-Generic Example Family Name"' or 'normal normal 400 extra-expanded 48px / 115.2px "Non-Generic Example Family Name"'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'bolder small-caps normal normal 10px/normal "Non-Generic Example Family Name"' computes to ['normal small-caps 900 normal 10px/normal "Non-Generic Example Family Name"' or 'normal small-caps 900 normal 10px / normal "Non-Generic Example Family Name"'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal bold italic normal xx-small cursive' computes to ['italic normal 700 normal 9.6px/normal cursive' or 'italic normal 700 normal 9.6px / normal cursive'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal extra-expanded italic small-caps larger/calc(120% + 1.2em) serif' computes to ['italic small-caps 400 extra-expanded 48px/115.2px serif' or 'italic small-caps 400 extra-expanded 48px / 115.2px serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'italic extra-expanded small-caps larger/calc(120% + 1.2em) serif' computes to ['italic small-caps 400 extra-expanded 48px/115.2px serif' or 'italic small-caps 400 extra-expanded 48px / 115.2px serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'italic normal normal ultra-condensed larger/calc(120% + 1.2em) cursive' computes to ['italic normal 400 ultra-condensed 48px/115.2px cursive' or 'italic normal 400 ultra-condensed 48px / 115.2px cursive'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'small-caps extra-expanded lighter normal larger/calc(120% + 1.2em) serif' computes to ['normal small-caps 700 extra-expanded 48px/115.2px serif' or 'normal small-caps 700 extra-expanded 48px / 115.2px serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'small-caps extra-condensed normal 900 20%/1.2 cursive' computes to ['normal small-caps 900 extra-condensed 8px/1.2 cursive' or 'normal small-caps 900 extra-condensed 8px / 1.2 cursive'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'italic bold ultra-condensed small-caps 10px/normal sans-serif' computes to ['italic small-caps 700 ultra-condensed 10px/normal sans-serif' or 'italic small-caps 700 ultra-condensed 10px / normal sans-serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'small-caps italic normal normal 20%/1.2 "Non-Generic Example Family Name"' computes to ['italic small-caps 400 normal 8px/1.2 "Non-Generic Example Family Name"' or 'italic small-caps 400 normal 8px / 1.2 "Non-Generic Example Family Name"'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal italic small-caps condensed 20%/1.2 fantasy' computes to ['italic small-caps 400 condensed 8px/1.2 fantasy' or 'italic small-caps 400 condensed 8px / 1.2 fantasy'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'small-caps 100 italic smaller "Non-Generic Example Family Name"' computes to ['italic small-caps 100 normal 33.3333px/normal "Non-Generic Example Family Name"' or 'italic small-caps 100 normal 33.3333px / normal "Non-Generic Example Family Name"'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value '900 italic small-caps normal 20%/1.2 "Non-Generic Example Family Name"' computes to ['italic small-caps 900 normal 8px/1.2 "Non-Generic Example Family Name"' or 'italic small-caps 900 normal 8px / 1.2 "Non-Generic Example Family Name"'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'italic semi-condensed normal normal xx-small monospace' computes to ['italic normal 400 semi-condensed 9.6px/normal monospace' or 'italic normal 400 semi-condensed 9.6px / normal monospace'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value '900 normal italic extra-condensed calc(30% - 40px)/calc(120% + 1.2em) Menu' computes to ['italic normal 900 extra-condensed 0px/0px Menu' or 'italic normal 900 extra-condensed 0px / 0px Menu'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal italic extra-expanded small-caps 10px/normal fantasy' computes to ['italic small-caps 400 extra-expanded 10px/normal fantasy' or 'italic small-caps 400 extra-expanded 10px / normal fantasy'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'small-caps normal italic normal medium/normal serif' computes to ['italic small-caps 400 normal 16px/normal serif' or 'italic small-caps 400 normal 16px / normal serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal small-caps calc(30% - 40px)/calc(120% + 1.2em) Menu' computes to ['normal small-caps 400 normal 0px/0px Menu' or 'normal small-caps 400 normal 0px / 0px Menu'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'expanded 100 xx-large/1.2 monospace' computes to ['normal normal 100 expanded 32px/1.2 monospace' or 'normal normal 100 expanded 32px / 1.2 monospace'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'ultra-condensed bolder normal italic 10px/normal serif' computes to ['italic normal 900 ultra-condensed 10px/normal serif' or 'italic normal 900 ultra-condensed 10px / normal serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[message-box should be a supported system font.]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'italic small-caps bolder 10px/normal "Non-Generic Example Family Name"' computes to ['italic small-caps 900 normal 10px/normal "Non-Generic Example Family Name"' or 'italic small-caps 900 normal 10px / normal "Non-Generic Example Family Name"'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value '100 small-caps ultra-expanded normal smaller "Non-Generic Example Family Name"' computes to ['normal small-caps 100 ultra-expanded 33.3333px/normal "Non-Generic Example Family Name"' or 'normal small-caps 100 ultra-expanded 33.3333px / normal "Non-Generic Example Family Name"'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal bolder italic small-caps medium/normal fantasy' computes to ['italic small-caps 900 normal 16px/normal fantasy' or 'italic small-caps 900 normal 16px / normal fantasy'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'small-caps expanded xx-large/1.2 Menu' computes to ['normal small-caps 400 expanded 32px/1.2 Menu' or 'normal small-caps 400 expanded 32px / 1.2 Menu'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal italic small-caps bold 10px/normal cursive' computes to ['italic small-caps 700 normal 10px/normal cursive' or 'italic small-caps 700 normal 10px / normal cursive'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal italic normal small-caps xx-small monospace' computes to ['italic small-caps 400 normal 9.6px/normal monospace' or 'italic small-caps 400 normal 9.6px / normal monospace'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal small-caps normal xx-small "Non-Generic Example Family Name"' computes to ['normal small-caps 400 normal 9.6px/normal "Non-Generic Example Family Name"' or 'normal small-caps 400 normal 9.6px / normal "Non-Generic Example Family Name"'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'ultra-expanded italic bold smaller monospace' computes to ['italic normal 700 ultra-expanded 33.3333px/normal monospace' or 'italic normal 700 ultra-expanded 33.3333px / normal monospace'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'italic lighter normal normal 10px/normal serif' computes to ['italic normal 700 normal 10px/normal serif' or 'italic normal 700 normal 10px / normal serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'semi-condensed normal 900 xx-small "Non-Generic Example Family Name"' computes to ['normal normal 900 semi-condensed 9.6px/normal "Non-Generic Example Family Name"' or 'normal normal 900 semi-condensed 9.6px / normal "Non-Generic Example Family Name"'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'italic normal small-caps smaller fantasy' computes to ['italic small-caps 400 normal 33.3333px/normal fantasy' or 'italic small-caps 400 normal 33.3333px / normal fantasy'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'extra-expanded 900 normal larger/calc(120% + 1.2em) Menu' computes to ['normal normal 900 extra-expanded 48px/115.2px Menu' or 'normal normal 900 extra-expanded 48px / 115.2px Menu'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'condensed italic normal small-caps calc(30% - 40px)/calc(120% + 1.2em) "Non-Generic Example Family Name"' computes to ['italic small-caps 400 condensed 0px/0px "Non-Generic Example Family Name"' or 'italic small-caps 400 condensed 0px / 0px "Non-Generic Example Family Name"'\]]
|
||||
expected: FAIL
|
||||
|
||||
[status-bar should be a supported system font.]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'bolder normal expanded italic 20%/1.2 Menu' computes to ['italic normal 900 expanded 8px/1.2 Menu' or 'italic normal 900 expanded 8px / 1.2 Menu'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'italic normal bolder normal medium/normal sans-serif' computes to ['italic normal 900 normal 16px/normal sans-serif' or 'italic normal 900 normal 16px / normal sans-serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal small-caps italic lighter calc(30% - 40px)/calc(120% + 1.2em) "Non-Generic Example Family Name"' computes to ['italic small-caps 700 normal 0px/0px "Non-Generic Example Family Name"' or 'italic small-caps 700 normal 0px / 0px "Non-Generic Example Family Name"'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal small-caps bold italic larger/calc(120% + 1.2em) fantasy' computes to ['italic small-caps 700 normal 48px/115.2px fantasy' or 'italic small-caps 700 normal 48px / 115.2px fantasy'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'italic 900 ultra-expanded normal smaller serif' computes to ['italic normal 900 ultra-expanded 33.3333px/normal serif' or 'italic normal 900 ultra-expanded 33.3333px / normal serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal normal small-caps condensed xx-large/1.2 monospace' computes to ['normal small-caps 400 condensed 32px/1.2 monospace' or 'normal small-caps 400 condensed 32px / 1.2 monospace'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'bolder italic normal small-caps larger/calc(120% + 1.2em) fantasy' computes to ['italic small-caps 900 normal 48px/115.2px fantasy' or 'italic small-caps 900 normal 48px / 115.2px fantasy'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'small-caps lighter normal ultra-condensed larger/calc(120% + 1.2em) Menu' computes to ['normal small-caps 700 ultra-condensed 48px/115.2px Menu' or 'normal small-caps 700 ultra-condensed 48px / 115.2px Menu'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'italic small-caps normal medium/normal cursive' computes to ['italic small-caps 400 normal 16px/normal cursive' or 'italic small-caps 400 normal 16px / normal cursive'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'italic normal small-caps extra-condensed calc(30% - 40px)/calc(120% + 1.2em) "Non-Generic Example Family Name"' computes to ['italic small-caps 400 extra-condensed 0px/0px "Non-Generic Example Family Name"' or 'italic small-caps 400 extra-condensed 0px / 0px "Non-Generic Example Family Name"'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'lighter ultra-condensed italic small-caps 10px/normal sans-serif' computes to ['italic small-caps 700 ultra-condensed 10px/normal sans-serif' or 'italic small-caps 700 ultra-condensed 10px / normal sans-serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value '900 expanded normal small-caps xx-large/1.2 Menu' computes to ['normal small-caps 900 expanded 32px/1.2 Menu' or 'normal small-caps 900 expanded 32px / 1.2 Menu'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'italic normal normal small-caps medium/normal serif' computes to ['italic small-caps 400 normal 16px/normal serif' or 'italic small-caps 400 normal 16px / normal serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal 900 small-caps normal smaller "Non-Generic Example Family Name"' computes to ['normal small-caps 900 normal 33.3333px/normal "Non-Generic Example Family Name"' or 'normal small-caps 900 normal 33.3333px / normal "Non-Generic Example Family Name"'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'bolder small-caps italic expanded xx-large/1.2 monospace' computes to ['italic small-caps 900 expanded 32px/1.2 monospace' or 'italic small-caps 900 expanded 32px / 1.2 monospace'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal small-caps extra-expanded lighter xx-small sans-serif' computes to ['normal small-caps 700 extra-expanded 9.6px/normal sans-serif' or 'normal small-caps 700 extra-expanded 9.6px / normal sans-serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'small-caps italic smaller monospace' computes to ['italic small-caps 400 normal 33.3333px/normal monospace' or 'italic small-caps 400 normal 33.3333px / normal monospace'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal normal normal small-caps 20%/1.2 "Non-Generic Example Family Name"' computes to ['normal small-caps 400 normal 8px/1.2 "Non-Generic Example Family Name"' or 'normal small-caps 400 normal 8px / 1.2 "Non-Generic Example Family Name"'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'bold italic small-caps ultra-condensed calc(30% - 40px)/calc(120% + 1.2em) serif' computes to ['italic small-caps 700 ultra-condensed 0px/0px serif' or 'italic small-caps 700 ultra-condensed 0px / 0px serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal italic small-caps larger/calc(120% + 1.2em) serif' computes to ['italic small-caps 400 normal 48px/115.2px serif' or 'italic small-caps 400 normal 48px / 115.2px serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'bold italic normal normal xx-large/1.2 cursive' computes to ['italic normal 700 normal 32px/1.2 cursive' or 'italic normal 700 normal 32px / 1.2 cursive'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'lighter normal extra-expanded small-caps calc(30% - 40px)/calc(120% + 1.2em) "Non-Generic Example Family Name"' computes to ['normal small-caps 700 extra-expanded 0px/0px "Non-Generic Example Family Name"' or 'normal small-caps 700 extra-expanded 0px / 0px "Non-Generic Example Family Name"'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal italic normal extra-condensed xx-large/1.2 "Non-Generic Example Family Name"' computes to ['italic normal 400 extra-condensed 32px/1.2 "Non-Generic Example Family Name"' or 'italic normal 400 extra-condensed 32px / 1.2 "Non-Generic Example Family Name"'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'small-caps normal condensed lighter larger/calc(120% + 1.2em) fantasy' computes to ['normal small-caps 700 condensed 48px/115.2px fantasy' or 'normal small-caps 700 condensed 48px / 115.2px fantasy'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal normal small-caps italic xx-small cursive' computes to ['italic small-caps 400 normal 9.6px/normal cursive' or 'italic small-caps 400 normal 9.6px / normal cursive'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'italic normal normal 100 xx-large/1.2 sans-serif' computes to ['italic normal 100 normal 32px/1.2 sans-serif' or 'italic normal 100 normal 32px / 1.2 sans-serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'bolder italic extra-condensed xx-small sans-serif' computes to ['italic normal 900 extra-condensed 9.6px/normal sans-serif' or 'italic normal 900 extra-condensed 9.6px / normal sans-serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal 900 semi-expanded italic medium/normal monospace' computes to ['italic normal 900 semi-expanded 16px/normal monospace' or 'italic normal 900 semi-expanded 16px / normal monospace'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'semi-condensed 900 italic normal xx-small fantasy' computes to ['italic normal 900 semi-condensed 9.6px/normal fantasy' or 'italic normal 900 semi-condensed 9.6px / normal fantasy'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'bold normal small-caps xx-small "Non-Generic Example Family Name"' computes to ['normal small-caps 700 normal 9.6px/normal "Non-Generic Example Family Name"' or 'normal small-caps 700 normal 9.6px / normal "Non-Generic Example Family Name"'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'semi-expanded italic small-caps medium/normal sans-serif' computes to ['italic small-caps 400 semi-expanded 16px/normal sans-serif' or 'italic small-caps 400 semi-expanded 16px / normal sans-serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'expanded normal xx-large/1.2 "Non-Generic Example Family Name"' computes to ['normal normal 400 expanded 32px/1.2 "Non-Generic Example Family Name"' or 'normal normal 400 expanded 32px / 1.2 "Non-Generic Example Family Name"'\]]
|
||||
expected: FAIL
|
||||
|
||||
[menu should be a supported system font.]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal medium/normal sans-serif' computes to ['normal normal 400 normal 16px/normal sans-serif' or 'normal normal 400 normal 16px / normal sans-serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal normal italic normal xx-large/1.2 fantasy' computes to ['italic normal 400 normal 32px/1.2 fantasy' or 'italic normal 400 normal 32px / 1.2 fantasy'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal normal bold italic 10px/normal serif' computes to ['italic normal 700 normal 10px/normal serif' or 'italic normal 700 normal 10px / normal serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'italic small-caps 100 ultra-condensed calc(30% - 40px)/calc(120% + 1.2em) sans-serif' computes to ['italic small-caps 100 ultra-condensed 0px/0px sans-serif' or 'italic small-caps 100 ultra-condensed 0px / 0px sans-serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal bolder small-caps extra-condensed 20%/1.2 sans-serif' computes to ['normal small-caps 900 extra-condensed 8px/1.2 sans-serif' or 'normal small-caps 900 extra-condensed 8px / 1.2 sans-serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal extra-condensed normal italic 20%/1.2 cursive' computes to ['italic normal 400 extra-condensed 8px/1.2 cursive' or 'italic normal 400 extra-condensed 8px / 1.2 cursive'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'small-caps bolder condensed calc(30% - 40px)/calc(120% + 1.2em) cursive' computes to ['normal small-caps 900 condensed 0px/0px cursive' or 'normal small-caps 900 condensed 0px / 0px cursive'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'italic small-caps lighter normal 20%/1.2 serif' computes to ['italic small-caps 700 normal 8px/1.2 serif' or 'italic small-caps 700 normal 8px / 1.2 serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal small-caps 100 medium/normal sans-serif' computes to ['normal small-caps 100 normal 16px/normal sans-serif' or 'normal small-caps 100 normal 16px / normal sans-serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'italic normal semi-condensed smaller monospace' computes to ['italic normal 400 semi-condensed 33.3333px/normal monospace' or 'italic normal 400 semi-condensed 33.3333px / normal monospace'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'lighter normal italic normal 10px/normal fantasy' computes to ['italic normal 700 normal 10px/normal fantasy' or 'italic normal 700 normal 10px / normal fantasy'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'extra-expanded normal lighter small-caps larger/calc(120% + 1.2em) cursive' computes to ['normal small-caps 700 extra-expanded 48px/115.2px cursive' or 'normal small-caps 700 extra-expanded 48px / 115.2px cursive'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'small-caps normal bold italic 20%/1.2 Menu' computes to ['italic small-caps 700 normal 8px/1.2 Menu' or 'italic small-caps 700 normal 8px / 1.2 Menu'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'semi-condensed small-caps bolder normal xx-small cursive' computes to ['normal small-caps 900 semi-condensed 9.6px/normal cursive' or 'normal small-caps 900 semi-condensed 9.6px / normal cursive'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'small-caps normal normal bolder 20%/1.2 monospace' computes to ['normal small-caps 900 normal 8px/1.2 monospace' or 'normal small-caps 900 normal 8px / 1.2 monospace'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'lighter small-caps extra-expanded larger/calc(120% + 1.2em) Menu' computes to ['normal small-caps 700 extra-expanded 48px/115.2px Menu' or 'normal small-caps 700 extra-expanded 48px / 115.2px Menu'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'italic bolder small-caps normal medium/normal monospace' computes to ['italic small-caps 900 normal 16px/normal monospace' or 'italic small-caps 900 normal 16px / normal monospace'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'italic semi-expanded normal small-caps medium/normal Menu' computes to ['italic small-caps 400 semi-expanded 16px/normal Menu' or 'italic small-caps 400 semi-expanded 16px / normal Menu'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'italic normal 100 condensed larger/calc(120% + 1.2em) fantasy' computes to ['italic normal 100 condensed 48px/115.2px fantasy' or 'italic normal 100 condensed 48px / 115.2px fantasy'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal 100 semi-condensed normal xx-small fantasy' computes to ['normal normal 100 semi-condensed 9.6px/normal fantasy' or 'normal normal 100 semi-condensed 9.6px / normal fantasy'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal expanded italic normal xx-large/1.2 "Non-Generic Example Family Name"' computes to ['italic normal 400 expanded 32px/1.2 "Non-Generic Example Family Name"' or 'italic normal 400 expanded 32px / 1.2 "Non-Generic Example Family Name"'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'italic small-caps semi-condensed 900 xx-large/1.2 monospace' computes to ['italic small-caps 900 semi-condensed 32px/1.2 monospace' or 'italic small-caps 900 semi-condensed 32px / 1.2 monospace'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'bold normal normal ultra-condensed larger/calc(120% + 1.2em) sans-serif' computes to ['normal normal 700 ultra-condensed 48px/115.2px sans-serif' or 'normal normal 700 ultra-condensed 48px / 115.2px sans-serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'expanded normal italic small-caps xx-large/1.2 serif' computes to ['italic small-caps 400 expanded 32px/1.2 serif' or 'italic small-caps 400 expanded 32px / 1.2 serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'small-caps ultra-expanded normal normal smaller serif' computes to ['normal small-caps 400 ultra-expanded 33.3333px/normal serif' or 'normal small-caps 400 ultra-expanded 33.3333px / normal serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'condensed normal normal bolder calc(30% - 40px)/calc(120% + 1.2em) monospace' computes to ['normal normal 900 condensed 0px/0px monospace' or 'normal normal 900 condensed 0px / 0px monospace'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'extra-expanded normal normal larger/calc(120% + 1.2em) serif' computes to ['normal normal 400 extra-expanded 48px/115.2px serif' or 'normal normal 400 extra-expanded 48px / 115.2px serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'italic bold small-caps xx-small fantasy' computes to ['italic small-caps 700 normal 9.6px/normal fantasy' or 'italic small-caps 700 normal 9.6px / normal fantasy'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal condensed small-caps italic calc(30% - 40px)/calc(120% + 1.2em) monospace' computes to ['italic small-caps 400 condensed 0px/0px monospace' or 'italic small-caps 400 condensed 0px / 0px monospace'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'italic bolder normal smaller "Non-Generic Example Family Name"' computes to ['italic normal 900 normal 33.3333px/normal "Non-Generic Example Family Name"' or 'italic normal 900 normal 33.3333px / normal "Non-Generic Example Family Name"'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'semi-expanded small-caps normal normal medium/normal cursive' computes to ['normal small-caps 400 semi-expanded 16px/normal cursive' or 'normal small-caps 400 semi-expanded 16px / normal cursive'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'ultra-condensed small-caps italic normal 10px/normal "Non-Generic Example Family Name"' computes to ['italic small-caps 400 ultra-condensed 10px/normal "Non-Generic Example Family Name"' or 'italic small-caps 400 ultra-condensed 10px / normal "Non-Generic Example Family Name"'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal italic expanded normal smaller cursive' computes to ['italic normal 400 expanded 33.3333px/normal cursive' or 'italic normal 400 expanded 33.3333px / normal cursive'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'extra-expanded lighter small-caps normal larger/calc(120% + 1.2em) "Non-Generic Example Family Name"' computes to ['normal small-caps 700 extra-expanded 48px/115.2px "Non-Generic Example Family Name"' or 'normal small-caps 700 extra-expanded 48px / 115.2px "Non-Generic Example Family Name"'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal condensed normal small-caps calc(30% - 40px)/calc(120% + 1.2em) fantasy' computes to ['normal small-caps 400 condensed 0px/0px fantasy' or 'normal small-caps 400 condensed 0px / 0px fantasy'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value '900 small-caps ultra-condensed italic 10px/normal serif' computes to ['italic small-caps 900 ultra-condensed 10px/normal serif' or 'italic small-caps 900 ultra-condensed 10px / normal serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'small-caps ultra-condensed normal italic 10px/normal sans-serif' computes to ['italic small-caps 400 ultra-condensed 10px/normal sans-serif' or 'italic small-caps 400 ultra-condensed 10px / normal sans-serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'semi-condensed normal italic xx-small Menu' computes to ['italic normal 400 semi-condensed 9.6px/normal Menu' or 'italic normal 400 semi-condensed 9.6px / normal Menu'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'small-caps normal 900 normal 10px/normal monospace' computes to ['normal small-caps 900 normal 10px/normal monospace' or 'normal small-caps 900 normal 10px / normal monospace'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal normal semi-expanded xx-small fantasy' computes to ['normal normal 400 semi-expanded 9.6px/normal fantasy' or 'normal normal 400 semi-expanded 9.6px / normal fantasy'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal normal ultra-condensed 100 smaller serif' computes to ['normal normal 100 ultra-condensed 33.3333px/normal serif' or 'normal normal 100 ultra-condensed 33.3333px / normal serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'italic 900 normal semi-expanded calc(30% - 40px)/calc(120% + 1.2em) cursive' computes to ['italic normal 900 semi-expanded 0px/0px cursive' or 'italic normal 900 semi-expanded 0px / 0px cursive'\]]
|
||||
expected: FAIL
|
||||
|
||||
[icon should be a supported system font.]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal italic small-caps normal smaller sans-serif' computes to ['italic small-caps 400 normal 33.3333px/normal sans-serif' or 'italic small-caps 400 normal 33.3333px / normal sans-serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal small-caps bolder condensed smaller monospace' computes to ['normal small-caps 900 condensed 33.3333px/normal monospace' or 'normal small-caps 900 condensed 33.3333px / normal monospace'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal normal ultra-expanded small-caps larger/calc(120% + 1.2em) "Non-Generic Example Family Name"' computes to ['normal small-caps 400 ultra-expanded 48px/115.2px "Non-Generic Example Family Name"' or 'normal small-caps 400 ultra-expanded 48px / 115.2px "Non-Generic Example Family Name"'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'italic small-caps normal ultra-expanded smaller Menu' computes to ['italic small-caps 400 ultra-expanded 33.3333px/normal Menu' or 'italic small-caps 400 ultra-expanded 33.3333px / normal Menu'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal semi-expanded italic medium/normal Menu' computes to ['italic normal 400 semi-expanded 16px/normal Menu' or 'italic normal 400 semi-expanded 16px / normal Menu'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal semi-expanded 900 medium/normal "Non-Generic Example Family Name"' computes to ['normal normal 900 semi-expanded 16px/normal "Non-Generic Example Family Name"' or 'normal normal 900 semi-expanded 16px / normal "Non-Generic Example Family Name"'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal italic ultra-expanded bold 20%/1.2 monospace' computes to ['italic normal 700 ultra-expanded 8px/1.2 monospace' or 'italic normal 700 ultra-expanded 8px / 1.2 monospace'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal bold normal normal larger/calc(120% + 1.2em) monospace' computes to ['normal normal 700 normal 48px/115.2px monospace' or 'normal normal 700 normal 48px / 115.2px monospace'\]]
|
||||
expected: FAIL
|
||||
|
||||
[small-caption should be a supported system font.]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal normal 900 normal smaller "Non-Generic Example Family Name"' computes to ['normal normal 900 normal 33.3333px/normal "Non-Generic Example Family Name"' or 'normal normal 900 normal 33.3333px / normal "Non-Generic Example Family Name"'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'ultra-expanded 100 small-caps italic smaller serif' computes to ['italic small-caps 100 ultra-expanded 33.3333px/normal serif' or 'italic small-caps 100 ultra-expanded 33.3333px / normal serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'italic ultra-condensed small-caps lighter 10px/normal cursive' computes to ['italic small-caps 700 ultra-condensed 10px/normal cursive' or 'italic small-caps 700 ultra-condensed 10px / normal cursive'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'condensed small-caps calc(30% - 40px)/calc(120% + 1.2em) serif' computes to ['normal small-caps 400 condensed 0px/0px serif' or 'normal small-caps 400 condensed 0px / 0px serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal 100 normal ultra-expanded 20%/1.2 serif' computes to ['normal normal 100 ultra-expanded 8px/1.2 serif' or 'normal normal 100 ultra-expanded 8px / 1.2 serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal normal small-caps lighter medium/normal fantasy' computes to ['normal small-caps 700 normal 16px/normal fantasy' or 'normal small-caps 700 normal 16px / normal fantasy'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'small-caps medium/normal "Non-Generic Example Family Name"' computes to ['normal small-caps 400 normal 16px/normal "Non-Generic Example Family Name"' or 'normal small-caps 400 normal 16px / normal "Non-Generic Example Family Name"'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal lighter italic ultra-condensed xx-large/1.2 monospace' computes to ['italic normal 700 ultra-condensed 32px/1.2 monospace' or 'italic normal 700 ultra-condensed 32px / 1.2 monospace'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'condensed small-caps bold calc(30% - 40px)/calc(120% + 1.2em) sans-serif' computes to ['normal small-caps 700 condensed 0px/0px sans-serif' or 'normal small-caps 700 condensed 0px / 0px sans-serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'italic 10px/normal fantasy' computes to ['italic normal 400 normal 10px/normal fantasy' or 'italic normal 400 normal 10px / normal fantasy'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'semi-expanded medium/normal Menu' computes to ['normal normal 400 semi-expanded 16px/normal Menu' or 'normal normal 400 semi-expanded 16px / normal Menu'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'small-caps 100 calc(30% - 40px)/calc(120% + 1.2em) sans-serif' computes to ['normal small-caps 100 normal 0px/0px sans-serif' or 'normal small-caps 100 normal 0px / 0px sans-serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'italic condensed 900 normal calc(30% - 40px)/calc(120% + 1.2em) monospace' computes to ['italic normal 900 condensed 0px/0px monospace' or 'italic normal 900 condensed 0px / 0px monospace'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value '900 normal normal small-caps xx-large/1.2 serif' computes to ['normal small-caps 900 normal 32px/1.2 serif' or 'normal small-caps 900 normal 32px / 1.2 serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'italic small-caps normal bold larger/calc(120% + 1.2em) monospace' computes to ['italic small-caps 700 normal 48px/115.2px monospace' or 'italic small-caps 700 normal 48px / 115.2px monospace'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal 900 normal xx-large/1.2 fantasy' computes to ['normal normal 900 normal 32px/1.2 fantasy' or 'normal normal 900 normal 32px / 1.2 fantasy'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'small-caps extra-expanded normal larger/calc(120% + 1.2em) "Non-Generic Example Family Name"' computes to ['normal small-caps 400 extra-expanded 48px/115.2px "Non-Generic Example Family Name"' or 'normal small-caps 400 extra-expanded 48px / 115.2px "Non-Generic Example Family Name"'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value '900 small-caps italic xx-small cursive' computes to ['italic small-caps 900 normal 9.6px/normal cursive' or 'italic small-caps 900 normal 9.6px / normal cursive'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'expanded bolder small-caps xx-large/1.2 Menu' computes to ['normal small-caps 900 expanded 32px/1.2 Menu' or 'normal small-caps 900 expanded 32px / 1.2 Menu'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'small-caps normal ultra-condensed normal medium/normal sans-serif' computes to ['normal small-caps 400 ultra-condensed 16px/normal sans-serif' or 'normal small-caps 400 ultra-condensed 16px / normal sans-serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'small-caps italic normal 100 calc(30% - 40px)/calc(120% + 1.2em) serif' computes to ['italic small-caps 100 normal 0px/0px serif' or 'italic small-caps 100 normal 0px / 0px serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal normal expanded normal medium/normal monospace' computes to ['normal normal 400 expanded 16px/normal monospace' or 'normal normal 400 expanded 16px / normal monospace'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'small-caps ultra-expanded 100 italic smaller sans-serif' computes to ['italic small-caps 100 ultra-expanded 33.3333px/normal sans-serif' or 'italic small-caps 100 ultra-expanded 33.3333px / normal sans-serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'bolder normal normal calc(30% - 40px)/calc(120% + 1.2em) monospace' computes to ['normal normal 900 normal 0px/0px monospace' or 'normal normal 900 normal 0px / 0px monospace'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'semi-condensed italic normal 100 xx-small serif' computes to ['italic normal 100 semi-condensed 9.6px/normal serif' or 'italic normal 100 semi-condensed 9.6px / normal serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal ultra-expanded normal smaller serif' computes to ['normal normal 400 ultra-expanded 33.3333px/normal serif' or 'normal normal 400 ultra-expanded 33.3333px / normal serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'small-caps normal italic xx-small "Non-Generic Example Family Name"' computes to ['italic small-caps 400 normal 9.6px/normal "Non-Generic Example Family Name"' or 'italic small-caps 400 normal 9.6px / normal "Non-Generic Example Family Name"'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'lighter semi-condensed normal normal xx-small fantasy' computes to ['normal normal 700 semi-condensed 9.6px/normal fantasy' or 'normal normal 700 semi-condensed 9.6px / normal fantasy'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'small-caps italic normal semi-condensed xx-small sans-serif' computes to ['italic small-caps 400 semi-condensed 9.6px/normal sans-serif' or 'italic small-caps 400 semi-condensed 9.6px / normal sans-serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal 100 medium/normal cursive' computes to ['normal normal 100 normal 16px/normal cursive' or 'normal normal 100 normal 16px / normal cursive'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal bolder normal italic smaller Menu' computes to ['italic normal 900 normal 33.3333px/normal Menu' or 'italic normal 900 normal 33.3333px / normal Menu'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'small-caps normal normal semi-expanded calc(30% - 40px)/calc(120% + 1.2em) Menu' computes to ['normal small-caps 400 semi-expanded 0px/0px Menu' or 'normal small-caps 400 semi-expanded 0px / 0px Menu'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value '100 normal normal italic medium/normal "Non-Generic Example Family Name"' computes to ['italic normal 100 normal 16px/normal "Non-Generic Example Family Name"' or 'italic normal 100 normal 16px / normal "Non-Generic Example Family Name"'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal bold small-caps italic 10px/normal serif' computes to ['italic small-caps 700 normal 10px/normal serif' or 'italic small-caps 700 normal 10px / normal serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'italic bold larger/calc(120% + 1.2em) Menu' computes to ['italic normal 700 normal 48px/115.2px Menu' or 'italic normal 700 normal 48px / 115.2px Menu'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'extra-expanded small-caps normal 100 larger/calc(120% + 1.2em) monospace' computes to ['normal small-caps 100 extra-expanded 48px/115.2px monospace' or 'normal small-caps 100 extra-expanded 48px / 115.2px monospace'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal 100 small-caps larger/calc(120% + 1.2em) Menu' computes to ['normal small-caps 100 normal 48px/115.2px Menu' or 'normal small-caps 100 normal 48px / 115.2px Menu'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'small-caps normal italic expanded larger/calc(120% + 1.2em) cursive' computes to ['italic small-caps 400 expanded 48px/115.2px cursive' or 'italic small-caps 400 expanded 48px / 115.2px cursive'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal normal normal ultra-condensed xx-small sans-serif' computes to ['normal normal 400 ultra-condensed 9.6px/normal sans-serif' or 'normal normal 400 ultra-condensed 9.6px / normal sans-serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'italic normal semi-expanded normal 10px/normal Menu' computes to ['italic normal 400 semi-expanded 10px/normal Menu' or 'italic normal 400 semi-expanded 10px / normal Menu'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal normal normal bold calc(30% - 40px)/calc(120% + 1.2em) serif' computes to ['normal normal 700 normal 0px/0px serif' or 'normal normal 700 normal 0px / 0px serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal 900 italic calc(30% - 40px)/calc(120% + 1.2em) sans-serif' computes to ['italic normal 900 normal 0px/0px sans-serif' or 'italic normal 900 normal 0px / 0px sans-serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal expanded bold normal xx-large/1.2 serif' computes to ['normal normal 700 expanded 32px/1.2 serif' or 'normal normal 700 expanded 32px / 1.2 serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'expanded normal bolder italic xx-large/1.2 sans-serif' computes to ['italic normal 900 expanded 32px/1.2 sans-serif' or 'italic normal 900 expanded 32px / 1.2 sans-serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'small-caps bolder normal italic xx-large/1.2 monospace' computes to ['italic small-caps 900 normal 32px/1.2 monospace' or 'italic small-caps 900 normal 32px / 1.2 monospace'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal normal italic medium/normal cursive' computes to ['italic normal 400 normal 16px/normal cursive' or 'italic normal 400 normal 16px / normal cursive'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value '100 italic semi-condensed small-caps xx-large/1.2 fantasy' computes to ['italic small-caps 100 semi-condensed 32px/1.2 fantasy' or 'italic small-caps 100 semi-condensed 32px / 1.2 fantasy'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal normal extra-expanded italic xx-large/1.2 Menu' computes to ['italic normal 400 extra-expanded 32px/1.2 Menu' or 'italic normal 400 extra-expanded 32px / 1.2 Menu'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'italic normal normal calc(30% - 40px)/calc(120% + 1.2em) Menu' computes to ['italic normal 400 normal 0px/0px Menu' or 'italic normal 400 normal 0px / 0px Menu'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value '900 normal semi-condensed smaller fantasy' computes to ['normal normal 900 semi-condensed 33.3333px/normal fantasy' or 'normal normal 900 semi-condensed 33.3333px / normal fantasy'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'italic normal expanded small-caps 20%/1.2 "Non-Generic Example Family Name"' computes to ['italic small-caps 400 expanded 8px/1.2 "Non-Generic Example Family Name"' or 'italic small-caps 400 expanded 8px / 1.2 "Non-Generic Example Family Name"'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal italic lighter normal xx-small Menu' computes to ['italic normal 700 normal 9.6px/normal Menu' or 'italic normal 700 normal 9.6px / normal Menu'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value '100 small-caps normal semi-expanded calc(30% - 40px)/calc(120% + 1.2em) sans-serif' computes to ['normal small-caps 100 semi-expanded 0px/0px sans-serif' or 'normal small-caps 100 semi-expanded 0px / 0px sans-serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal small-caps normal italic xx-large/1.2 sans-serif' computes to ['italic small-caps 400 normal 32px/1.2 sans-serif' or 'italic small-caps 400 normal 32px / 1.2 sans-serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal semi-condensed normal bolder xx-small monospace' computes to ['normal normal 900 semi-condensed 9.6px/normal monospace' or 'normal normal 900 semi-condensed 9.6px / normal monospace'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'extra-condensed italic normal normal 20%/1.2 Menu' computes to ['italic normal 400 extra-condensed 8px/1.2 Menu' or 'italic normal 400 extra-condensed 8px / 1.2 Menu'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal small-caps italic normal 20%/1.2 Menu' computes to ['italic small-caps 400 normal 8px/1.2 Menu' or 'italic small-caps 400 normal 8px / 1.2 Menu'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal italic 100 small-caps medium/normal "Non-Generic Example Family Name"' computes to ['italic small-caps 100 normal 16px/normal "Non-Generic Example Family Name"' or 'italic small-caps 100 normal 16px / normal "Non-Generic Example Family Name"'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'italic ultra-expanded small-caps normal smaller sans-serif' computes to ['italic small-caps 400 ultra-expanded 33.3333px/normal sans-serif' or 'italic small-caps 400 ultra-expanded 33.3333px / normal sans-serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'small-caps bold normal normal medium/normal fantasy' computes to ['normal small-caps 700 normal 16px/normal fantasy' or 'normal small-caps 700 normal 16px / normal fantasy'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal normal 100 larger/calc(120% + 1.2em) Menu' computes to ['normal normal 100 normal 48px/115.2px Menu' or 'normal normal 100 normal 48px / 115.2px Menu'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'small-caps normal italic lighter xx-large/1.2 sans-serif' computes to ['italic small-caps 700 normal 32px/1.2 sans-serif' or 'italic small-caps 700 normal 32px / 1.2 sans-serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'small-caps expanded bolder xx-large/1.2 "Non-Generic Example Family Name"' computes to ['normal small-caps 900 expanded 32px/1.2 "Non-Generic Example Family Name"' or 'normal small-caps 900 expanded 32px / 1.2 "Non-Generic Example Family Name"'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'small-caps italic ultra-expanded lighter 20%/1.2 serif' computes to ['italic small-caps 700 ultra-expanded 8px/1.2 serif' or 'italic small-caps 700 ultra-expanded 8px / 1.2 serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'small-caps 900 italic normal 10px/normal serif' computes to ['italic small-caps 900 normal 10px/normal serif' or 'italic small-caps 900 normal 10px / normal serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value '100 extra-condensed small-caps 20%/1.2 cursive' computes to ['normal small-caps 100 extra-condensed 8px/1.2 cursive' or 'normal small-caps 100 extra-condensed 8px / 1.2 cursive'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value '100 italic xx-small serif' computes to ['italic normal 100 normal 9.6px/normal serif' or 'italic normal 100 normal 9.6px / normal serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'small-caps italic bold normal xx-large/1.2 fantasy' computes to ['italic small-caps 700 normal 32px/1.2 fantasy' or 'italic small-caps 700 normal 32px / 1.2 fantasy'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'lighter small-caps normal italic 20%/1.2 serif' computes to ['italic small-caps 700 normal 8px/1.2 serif' or 'italic small-caps 700 normal 8px / 1.2 serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'italic expanded normal bolder xx-large/1.2 "Non-Generic Example Family Name"' computes to ['italic normal 900 expanded 32px/1.2 "Non-Generic Example Family Name"' or 'italic normal 900 expanded 32px / 1.2 "Non-Generic Example Family Name"'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'small-caps 100 semi-expanded italic medium/normal monospace' computes to ['italic small-caps 100 semi-expanded 16px/normal monospace' or 'italic small-caps 100 semi-expanded 16px / normal monospace'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal semi-condensed small-caps 100 xx-small Menu' computes to ['normal small-caps 100 semi-condensed 9.6px/normal Menu' or 'normal small-caps 100 semi-condensed 9.6px / normal Menu'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'extra-condensed normal small-caps italic 20%/1.2 monospace' computes to ['italic small-caps 400 extra-condensed 8px/1.2 monospace' or 'italic small-caps 400 extra-condensed 8px / 1.2 monospace'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'small-caps condensed italic calc(30% - 40px)/calc(120% + 1.2em) fantasy' computes to ['italic small-caps 400 condensed 0px/0px fantasy' or 'italic small-caps 400 condensed 0px / 0px fantasy'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal ultra-expanded lighter small-caps smaller cursive' computes to ['normal small-caps 700 ultra-expanded 33.3333px/normal cursive' or 'normal small-caps 700 ultra-expanded 33.3333px / normal cursive'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'semi-expanded normal bold normal medium/normal serif' computes to ['normal normal 700 semi-expanded 16px/normal serif' or 'normal normal 700 semi-expanded 16px / normal serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'italic extra-condensed 100 20%/1.2 fantasy' computes to ['italic normal 100 extra-condensed 8px/1.2 fantasy' or 'italic normal 100 extra-condensed 8px / 1.2 fantasy'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value '100 normal italic small-caps 20%/1.2 monospace' computes to ['italic small-caps 100 normal 8px/1.2 monospace' or 'italic small-caps 100 normal 8px / 1.2 monospace'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal small-caps expanded italic calc(30% - 40px)/calc(120% + 1.2em) serif' computes to ['italic small-caps 400 expanded 0px/0px serif' or 'italic small-caps 400 expanded 0px / 0px serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'lighter italic normal ultra-expanded smaller monospace' computes to ['italic normal 700 ultra-expanded 33.3333px/normal monospace' or 'italic normal 700 ultra-expanded 33.3333px / normal monospace'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'italic extra-condensed 20%/1.2 cursive' computes to ['italic normal 400 extra-condensed 8px/1.2 cursive' or 'italic normal 400 extra-condensed 8px / 1.2 cursive'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'extra-condensed small-caps italic 900 20%/1.2 serif' computes to ['italic small-caps 900 extra-condensed 8px/1.2 serif' or 'italic small-caps 900 extra-condensed 8px / 1.2 serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal italic normal 20%/1.2 cursive' computes to ['italic normal 400 normal 8px/1.2 cursive' or 'italic normal 400 normal 8px / 1.2 cursive'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal extra-condensed small-caps normal 20%/1.2 fantasy' computes to ['normal small-caps 400 extra-condensed 8px/1.2 fantasy' or 'normal small-caps 400 extra-condensed 8px / 1.2 fantasy'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'ultra-expanded small-caps italic smaller Menu' computes to ['italic small-caps 400 ultra-expanded 33.3333px/normal Menu' or 'italic small-caps 400 ultra-expanded 33.3333px / normal Menu'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'lighter italic condensed normal medium/normal cursive' computes to ['italic normal 700 condensed 16px/normal cursive' or 'italic normal 700 condensed 16px / normal cursive'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal normal italic extra-condensed 10px/normal "Non-Generic Example Family Name"' computes to ['italic normal 400 extra-condensed 10px/normal "Non-Generic Example Family Name"' or 'italic normal 400 extra-condensed 10px / normal "Non-Generic Example Family Name"'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'bold small-caps italic normal medium/normal fantasy' computes to ['italic small-caps 700 normal 16px/normal fantasy' or 'italic small-caps 700 normal 16px / normal fantasy'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'condensed normal small-caps 100 calc(30% - 40px)/calc(120% + 1.2em) Menu' computes to ['normal small-caps 100 condensed 0px/0px Menu' or 'normal small-caps 100 condensed 0px / 0px Menu'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'xx-small serif' computes to ['normal normal 400 normal 9.6px/normal serif' or 'normal normal 400 normal 9.6px / normal serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'bold semi-condensed small-caps italic xx-small monospace' computes to ['italic small-caps 700 semi-condensed 9.6px/normal monospace' or 'italic small-caps 700 semi-condensed 9.6px / normal monospace'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value '100 semi-expanded normal italic medium/normal monospace' computes to ['italic normal 100 semi-expanded 16px/normal monospace' or 'italic normal 100 semi-expanded 16px / normal monospace'\]]
|
||||
expected: FAIL
|
||||
|
||||
[caption should be a supported system font.]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal small-caps italic extra-condensed xx-small serif' computes to ['italic small-caps 400 extra-condensed 9.6px/normal serif' or 'italic small-caps 400 extra-condensed 9.6px / normal serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'small-caps italic normal 10px/normal Menu' computes to ['italic small-caps 400 normal 10px/normal Menu' or 'italic small-caps 400 normal 10px / normal Menu'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal italic 900 semi-condensed xx-large/1.2 serif' computes to ['italic normal 900 semi-condensed 32px/1.2 serif' or 'italic normal 900 semi-condensed 32px / 1.2 serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'ultra-expanded bold normal normal smaller "Non-Generic Example Family Name"' computes to ['normal normal 700 ultra-expanded 33.3333px/normal "Non-Generic Example Family Name"' or 'normal normal 700 ultra-expanded 33.3333px / normal "Non-Generic Example Family Name"'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'small-caps italic expanded smaller Menu' computes to ['italic small-caps 400 expanded 33.3333px/normal Menu' or 'italic small-caps 400 expanded 33.3333px / normal Menu'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'small-caps italic extra-expanded normal 10px/normal "Non-Generic Example Family Name"' computes to ['italic small-caps 400 extra-expanded 10px/normal "Non-Generic Example Family Name"' or 'italic small-caps 400 extra-expanded 10px / normal "Non-Generic Example Family Name"'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'ultra-expanded normal small-caps smaller cursive' computes to ['normal small-caps 400 ultra-expanded 33.3333px/normal cursive' or 'normal small-caps 400 ultra-expanded 33.3333px / normal cursive'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'italic normal small-caps 900 20%/1.2 Menu' computes to ['italic small-caps 900 normal 8px/1.2 Menu' or 'italic small-caps 900 normal 8px / 1.2 Menu'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'small-caps italic bolder semi-expanded larger/calc(120% + 1.2em) monospace' computes to ['italic small-caps 900 semi-expanded 48px/115.2px monospace' or 'italic small-caps 900 semi-expanded 48px / 115.2px monospace'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'semi-expanded bold italic small-caps medium/normal monospace' computes to ['italic small-caps 700 semi-expanded 16px/normal monospace' or 'italic small-caps 700 semi-expanded 16px / normal monospace'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'italic condensed normal calc(30% - 40px)/calc(120% + 1.2em) fantasy' computes to ['italic normal 400 condensed 0px/0px fantasy' or 'italic normal 400 condensed 0px / 0px fantasy'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal small-caps normal bolder larger/calc(120% + 1.2em) cursive' computes to ['normal small-caps 900 normal 48px/115.2px cursive' or 'normal small-caps 900 normal 48px / 115.2px cursive'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'bold small-caps normal smaller Menu' computes to ['normal small-caps 700 normal 33.3333px/normal Menu' or 'normal small-caps 700 normal 33.3333px / normal Menu'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal small-caps 900 normal xx-large/1.2 cursive' computes to ['normal small-caps 900 normal 32px/1.2 cursive' or 'normal small-caps 900 normal 32px / 1.2 cursive'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal small-caps semi-condensed 10px/normal Menu' computes to ['normal small-caps 400 semi-condensed 10px/normal Menu' or 'normal small-caps 400 semi-condensed 10px / normal Menu'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'ultra-condensed normal small-caps normal 10px/normal fantasy' computes to ['normal small-caps 400 ultra-condensed 10px/normal fantasy' or 'normal small-caps 400 ultra-condensed 10px / normal fantasy'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal italic normal normal calc(30% - 40px)/calc(120% + 1.2em) fantasy' computes to ['italic normal 400 normal 0px/0px fantasy' or 'italic normal 400 normal 0px / 0px fantasy'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'italic normal extra-expanded 900 calc(30% - 40px)/calc(120% + 1.2em) serif' computes to ['italic normal 900 extra-expanded 0px/0px serif' or 'italic normal 900 extra-expanded 0px / 0px serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal normal small-caps normal calc(30% - 40px)/calc(120% + 1.2em) sans-serif' computes to ['normal small-caps 400 normal 0px/0px sans-serif' or 'normal small-caps 400 normal 0px / 0px sans-serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'bolder condensed normal calc(30% - 40px)/calc(120% + 1.2em) cursive' computes to ['normal normal 900 condensed 0px/0px cursive' or 'normal normal 900 condensed 0px / 0px cursive'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'condensed 100 italic calc(30% - 40px)/calc(120% + 1.2em) cursive' computes to ['italic normal 100 condensed 0px/0px cursive' or 'italic normal 100 condensed 0px / 0px cursive'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'small-caps italic 900 medium/normal cursive' computes to ['italic small-caps 900 normal 16px/normal cursive' or 'italic small-caps 900 normal 16px / normal cursive'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal normal lighter semi-condensed calc(30% - 40px)/calc(120% + 1.2em) cursive' computes to ['normal normal 700 semi-condensed 0px/0px cursive' or 'normal normal 700 semi-condensed 0px / 0px cursive'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal ultra-condensed small-caps 10px/normal cursive' computes to ['normal small-caps 400 ultra-condensed 10px/normal cursive' or 'normal small-caps 400 ultra-condensed 10px / normal cursive'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'italic semi-condensed bold small-caps xx-small Menu' computes to ['italic small-caps 700 semi-condensed 9.6px/normal Menu' or 'italic small-caps 700 semi-condensed 9.6px / normal Menu'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'small-caps bold italic extra-condensed 20%/1.2 sans-serif' computes to ['italic small-caps 700 extra-condensed 8px/1.2 sans-serif' or 'italic small-caps 700 extra-condensed 8px / 1.2 sans-serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'bold normal semi-expanded normal 10px/normal monospace' computes to ['normal normal 700 semi-expanded 10px/normal monospace' or 'normal normal 700 semi-expanded 10px / normal monospace'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal bold expanded small-caps xx-large/1.2 Menu' computes to ['normal small-caps 700 expanded 32px/1.2 Menu' or 'normal small-caps 700 expanded 32px / 1.2 Menu'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal normal bolder small-caps 20%/1.2 sans-serif' computes to ['normal small-caps 900 normal 8px/1.2 sans-serif' or 'normal small-caps 900 normal 8px / 1.2 sans-serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal normal italic small-caps larger/calc(120% + 1.2em) monospace' computes to ['italic small-caps 400 normal 48px/115.2px monospace' or 'italic small-caps 400 normal 48px / 115.2px monospace'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'small-caps 900 normal xx-small cursive' computes to ['normal small-caps 900 normal 9.6px/normal cursive' or 'normal small-caps 900 normal 9.6px / normal cursive'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'semi-expanded normal italic normal medium/normal "Non-Generic Example Family Name"' computes to ['italic normal 400 semi-expanded 16px/normal "Non-Generic Example Family Name"' or 'italic normal 400 semi-expanded 16px / normal "Non-Generic Example Family Name"'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'small-caps normal 100 smaller fantasy' computes to ['normal small-caps 100 normal 33.3333px/normal fantasy' or 'normal small-caps 100 normal 33.3333px / normal fantasy'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal small-caps normal ultra-condensed smaller fantasy' computes to ['normal small-caps 400 ultra-condensed 33.3333px/normal fantasy' or 'normal small-caps 400 ultra-condensed 33.3333px / normal fantasy'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal italic bolder calc(30% - 40px)/calc(120% + 1.2em) monospace' computes to ['italic normal 900 normal 0px/0px monospace' or 'italic normal 900 normal 0px / 0px monospace'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'italic normal lighter small-caps xx-large/1.2 cursive' computes to ['italic small-caps 700 normal 32px/1.2 cursive' or 'italic small-caps 700 normal 32px / 1.2 cursive'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'italic normal 20%/1.2 monospace' computes to ['italic normal 400 normal 8px/1.2 monospace' or 'italic normal 400 normal 8px / 1.2 monospace'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'bold normal 20%/1.2 fantasy' computes to ['normal normal 700 normal 8px/1.2 fantasy' or 'normal normal 700 normal 8px / 1.2 fantasy'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'ultra-condensed normal normal italic 10px/normal cursive' computes to ['italic normal 400 ultra-condensed 10px/normal cursive' or 'italic normal 400 ultra-condensed 10px / normal cursive'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal lighter normal small-caps 10px/normal "Non-Generic Example Family Name"' computes to ['normal small-caps 700 normal 10px/normal "Non-Generic Example Family Name"' or 'normal small-caps 700 normal 10px / normal "Non-Generic Example Family Name"'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal italic semi-expanded larger/calc(120% + 1.2em) sans-serif' computes to ['italic normal 400 semi-expanded 48px/115.2px sans-serif' or 'italic normal 400 semi-expanded 48px / 115.2px sans-serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'extra-expanded italic small-caps 900 larger/calc(120% + 1.2em) fantasy' computes to ['italic small-caps 900 extra-expanded 48px/115.2px fantasy' or 'italic small-caps 900 extra-expanded 48px / 115.2px fantasy'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'extra-condensed normal normal small-caps 20%/1.2 fantasy' computes to ['normal small-caps 400 extra-condensed 8px/1.2 fantasy' or 'normal small-caps 400 extra-condensed 8px / 1.2 fantasy'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal small-caps semi-expanded normal 20%/1.2 "Non-Generic Example Family Name"' computes to ['normal small-caps 400 semi-expanded 8px/1.2 "Non-Generic Example Family Name"' or 'normal small-caps 400 semi-expanded 8px / 1.2 "Non-Generic Example Family Name"'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'extra-expanded normal italic lighter larger/calc(120% + 1.2em) sans-serif' computes to ['italic normal 700 extra-expanded 48px/115.2px sans-serif' or 'italic normal 700 extra-expanded 48px / 115.2px sans-serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'small-caps semi-condensed italic normal xx-small monospace' computes to ['italic small-caps 400 semi-condensed 9.6px/normal monospace' or 'italic small-caps 400 semi-condensed 9.6px / normal monospace'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'small-caps normal extra-condensed italic xx-large/1.2 cursive' computes to ['italic small-caps 400 extra-condensed 32px/1.2 cursive' or 'italic small-caps 400 extra-condensed 32px / 1.2 cursive'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal ultra-condensed normal normal 10px/normal sans-serif' computes to ['normal normal 400 ultra-condensed 10px/normal sans-serif' or 'normal normal 400 ultra-condensed 10px / normal sans-serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal normal normal italic 10px/normal Menu' computes to ['italic normal 400 normal 10px/normal Menu' or 'italic normal 400 normal 10px / normal Menu'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'small-caps normal normal italic 10px/normal fantasy' computes to ['italic small-caps 400 normal 10px/normal fantasy' or 'italic small-caps 400 normal 10px / normal fantasy'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal extra-expanded bolder italic larger/calc(120% + 1.2em) sans-serif' computes to ['italic normal 900 extra-expanded 48px/115.2px sans-serif' or 'italic normal 900 extra-expanded 48px / 115.2px sans-serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'ultra-condensed italic normal 10px/normal monospace' computes to ['italic normal 400 ultra-condensed 10px/normal monospace' or 'italic normal 400 ultra-condensed 10px / normal monospace'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal italic 10px/normal sans-serif' computes to ['italic normal 400 normal 10px/normal sans-serif' or 'italic normal 400 normal 10px / normal sans-serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'semi-expanded small-caps lighter italic medium/normal fantasy' computes to ['italic small-caps 700 semi-expanded 16px/normal fantasy' or 'italic small-caps 700 semi-expanded 16px / normal fantasy'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'italic 100 extra-expanded larger/calc(120% + 1.2em) "Non-Generic Example Family Name"' computes to ['italic normal 100 extra-expanded 48px/115.2px "Non-Generic Example Family Name"' or 'italic normal 100 extra-expanded 48px / 115.2px "Non-Generic Example Family Name"'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value '100 italic small-caps 10px/normal Menu' computes to ['italic small-caps 100 normal 10px/normal Menu' or 'italic small-caps 100 normal 10px / normal Menu'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value '900 small-caps larger/calc(120% + 1.2em) monospace' computes to ['normal small-caps 900 normal 48px/115.2px monospace' or 'normal small-caps 900 normal 48px / 115.2px monospace'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'bold extra-expanded italic larger/calc(120% + 1.2em) "Non-Generic Example Family Name"' computes to ['italic normal 700 extra-expanded 48px/115.2px "Non-Generic Example Family Name"' or 'italic normal 700 extra-expanded 48px / 115.2px "Non-Generic Example Family Name"'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'expanded italic small-caps normal xx-large/1.2 cursive' computes to ['italic small-caps 400 expanded 32px/1.2 cursive' or 'italic small-caps 400 expanded 32px / 1.2 cursive'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'expanded small-caps normal italic xx-large/1.2 fantasy' computes to ['italic small-caps 400 expanded 32px/1.2 fantasy' or 'italic small-caps 400 expanded 32px / 1.2 fantasy'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'small-caps normal ultra-expanded xx-small serif' computes to ['normal small-caps 400 ultra-expanded 9.6px/normal serif' or 'normal small-caps 400 ultra-expanded 9.6px / normal serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'small-caps normal bolder extra-expanded calc(30% - 40px)/calc(120% + 1.2em) "Non-Generic Example Family Name"' computes to ['normal small-caps 900 extra-expanded 0px/0px "Non-Generic Example Family Name"' or 'normal small-caps 900 extra-expanded 0px / 0px "Non-Generic Example Family Name"'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'ultra-expanded normal normal normal smaller sans-serif' computes to ['normal normal 400 ultra-expanded 33.3333px/normal sans-serif' or 'normal normal 400 ultra-expanded 33.3333px / normal sans-serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'semi-condensed small-caps normal xx-small sans-serif' computes to ['normal small-caps 400 semi-condensed 9.6px/normal sans-serif' or 'normal small-caps 400 semi-condensed 9.6px / normal sans-serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal normal small-caps 20%/1.2 serif' computes to ['normal small-caps 400 normal 8px/1.2 serif' or 'normal small-caps 400 normal 8px / 1.2 serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal small-caps normal normal medium/normal serif' computes to ['normal small-caps 400 normal 16px/normal serif' or 'normal small-caps 400 normal 16px / normal serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal lighter condensed calc(30% - 40px)/calc(120% + 1.2em) cursive' computes to ['normal normal 700 condensed 0px/0px cursive' or 'normal normal 700 condensed 0px / 0px cursive'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'small-caps normal normal larger/calc(120% + 1.2em) sans-serif' computes to ['normal small-caps 400 normal 48px/115.2px sans-serif' or 'normal small-caps 400 normal 48px / 115.2px sans-serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal normal normal normal smaller monospace' computes to ['normal normal 400 normal 33.3333px/normal monospace' or 'normal normal 400 normal 33.3333px / normal monospace'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'small-caps normal xx-large/1.2 serif' computes to ['normal small-caps 400 normal 32px/1.2 serif' or 'normal small-caps 400 normal 32px / 1.2 serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value '900 condensed small-caps normal calc(30% - 40px)/calc(120% + 1.2em) fantasy' computes to ['normal small-caps 900 condensed 0px/0px fantasy' or 'normal small-caps 900 condensed 0px / 0px fantasy'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'bolder normal italic smaller cursive' computes to ['italic normal 900 normal 33.3333px/normal cursive' or 'italic normal 900 normal 33.3333px / normal cursive'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal normal normal larger/calc(120% + 1.2em) fantasy' computes to ['normal normal 400 normal 48px/115.2px fantasy' or 'normal normal 400 normal 48px / 115.2px fantasy'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'italic small-caps extra-condensed xx-small cursive' computes to ['italic small-caps 400 extra-condensed 9.6px/normal cursive' or 'italic small-caps 400 extra-condensed 9.6px / normal cursive'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'italic normal bold xx-small serif' computes to ['italic normal 700 normal 9.6px/normal serif' or 'italic normal 700 normal 9.6px / normal serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value '900 italic normal medium/normal sans-serif' computes to ['italic normal 900 normal 16px/normal sans-serif' or 'italic normal 900 normal 16px / normal sans-serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'ultra-expanded italic smaller fantasy' computes to ['italic normal 400 ultra-expanded 33.3333px/normal fantasy' or 'italic normal 400 ultra-expanded 33.3333px / normal fantasy'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal small-caps italic 10px/normal monospace' computes to ['italic small-caps 400 normal 10px/normal monospace' or 'italic small-caps 400 normal 10px / normal monospace'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'bolder ultra-expanded italic normal smaller serif' computes to ['italic normal 900 ultra-expanded 33.3333px/normal serif' or 'italic normal 900 ultra-expanded 33.3333px / normal serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'italic small-caps normal normal xx-large/1.2 fantasy' computes to ['italic small-caps 400 normal 32px/1.2 fantasy' or 'italic small-caps 400 normal 32px / 1.2 fantasy'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'lighter normal normal normal xx-small Menu' computes to ['normal normal 700 normal 9.6px/normal Menu' or 'normal normal 700 normal 9.6px / normal Menu'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'italic small-caps condensed normal medium/normal fantasy' computes to ['italic small-caps 400 condensed 16px/normal fantasy' or 'italic small-caps 400 condensed 16px / normal fantasy'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value '100 normal small-caps condensed larger/calc(120% + 1.2em) cursive' computes to ['normal small-caps 100 condensed 48px/115.2px cursive' or 'normal small-caps 100 condensed 48px / 115.2px cursive'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'small-caps semi-expanded italic bold medium/normal Menu' computes to ['italic small-caps 700 semi-expanded 16px/normal Menu' or 'italic small-caps 700 semi-expanded 16px / normal Menu'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'lighter normal small-caps italic xx-large/1.2 sans-serif' computes to ['italic small-caps 700 normal 32px/1.2 sans-serif' or 'italic small-caps 700 normal 32px / 1.2 sans-serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'extra-condensed italic lighter small-caps 20%/1.2 "Non-Generic Example Family Name"' computes to ['italic small-caps 700 extra-condensed 8px/1.2 "Non-Generic Example Family Name"' or 'italic small-caps 700 extra-condensed 8px / 1.2 "Non-Generic Example Family Name"'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'ultra-condensed italic bolder normal 10px/normal Menu' computes to ['italic normal 900 ultra-condensed 10px/normal Menu' or 'italic normal 900 ultra-condensed 10px / normal Menu'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'extra-condensed lighter normal small-caps 20%/1.2 sans-serif' computes to ['normal small-caps 700 extra-condensed 8px/1.2 sans-serif' or 'normal small-caps 700 extra-condensed 8px / 1.2 sans-serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'bold extra-condensed 20%/1.2 sans-serif' computes to ['normal normal 700 extra-condensed 8px/1.2 sans-serif' or 'normal normal 700 extra-condensed 8px / 1.2 sans-serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'bolder normal small-caps normal medium/normal serif' computes to ['normal small-caps 900 normal 16px/normal serif' or 'normal small-caps 900 normal 16px / normal serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'small-caps normal normal normal smaller cursive' computes to ['normal small-caps 400 normal 33.3333px/normal cursive' or 'normal small-caps 400 normal 33.3333px / normal cursive'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal normal xx-large/1.2 cursive' computes to ['normal normal 400 normal 32px/1.2 cursive' or 'normal normal 400 normal 32px / 1.2 cursive'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'normal italic normal 900 medium/normal Menu' computes to ['italic normal 900 normal 16px/normal Menu' or 'italic normal 900 normal 16px / normal Menu'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'italic lighter small-caps expanded xx-large/1.2 Menu' computes to ['italic small-caps 700 expanded 32px/1.2 Menu' or 'italic small-caps 700 expanded 32px / 1.2 Menu'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'italic small-caps xx-small sans-serif' computes to ['italic small-caps 400 normal 9.6px/normal sans-serif' or 'italic small-caps 400 normal 9.6px / normal sans-serif'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'italic normal small-caps normal 10px/normal monospace' computes to ['italic small-caps 400 normal 10px/normal monospace' or 'italic small-caps 400 normal 10px / normal monospace'\]]
|
||||
expected: FAIL
|
||||
|
||||
[Property font value 'italic 100 normal small-caps 20%/1.2 sans-serif' computes to ['italic small-caps 100 normal 8px/1.2 sans-serif' or 'italic small-caps 100 normal 8px / 1.2 sans-serif'\]]
|
||||
expected: FAIL
|
||||
|
|
@ -23,3 +23,33 @@
|
|||
[Property text-decoration value 'currentcolor' computes to 'none solid rgb(0, 0, 255)']
|
||||
expected: FAIL
|
||||
|
||||
[Property text-decoration value 'line-through' computes to 'line-through rgb(0, 0, 255)']
|
||||
expected: FAIL
|
||||
|
||||
[Property text-decoration value 'underline overline line-through red' computes to 'underline overline line-through rgb(255, 0, 0)']
|
||||
expected: FAIL
|
||||
|
||||
[Property text-decoration value '10px' computes to 'rgb(0, 0, 255) 10px']
|
||||
expected: FAIL
|
||||
|
||||
[Property text-decoration value 'auto' computes to 'rgb(0, 0, 255)']
|
||||
expected: FAIL
|
||||
|
||||
[Property text-decoration value 'from-font' computes to 'rgb(0, 0, 255) from-font']
|
||||
expected: FAIL
|
||||
|
||||
[Property text-decoration value 'none' computes to 'rgb(0, 0, 255)']
|
||||
expected: FAIL
|
||||
|
||||
[Property text-decoration value 'underline red from-font' computes to 'underline rgb(255, 0, 0) from-font']
|
||||
expected: FAIL
|
||||
|
||||
[Property text-decoration value 'currentcolor' computes to 'rgb(0, 0, 255)']
|
||||
expected: FAIL
|
||||
|
||||
[Property text-decoration value 'solid' computes to 'rgb(0, 0, 255)']
|
||||
expected: FAIL
|
||||
|
||||
[Property text-decoration value 'rgba(10, 20, 30, 0.4) dotted' computes to 'dotted rgba(10, 20, 30, 0.4)']
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -113,3 +113,6 @@
|
|||
[Testing 'writing-mode'.]
|
||||
expected: FAIL
|
||||
|
||||
[Testing 'text-decoration-style'.]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
[elementsFromPoint-iframes.html]
|
||||
expected: TIMEOUT
|
||||
expected: CRASH
|
||||
[elementsFromPoint on the root document for points in iframe elements]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
[matchMedia-display-none-iframe.html]
|
||||
expected: ERROR
|
|
@ -2,3 +2,27 @@
|
|||
[CSSOM - CSSStyleSheet interface]
|
||||
expected: FAIL
|
||||
|
||||
[addRule with no argument adds "undefined" selector]
|
||||
expected: FAIL
|
||||
|
||||
[removeRule on empty style sheet throws]
|
||||
expected: FAIL
|
||||
|
||||
[cssRules and rules are the same object]
|
||||
expected: FAIL
|
||||
|
||||
[addRule with index greater than length throws]
|
||||
expected: FAIL
|
||||
|
||||
[addRule with #foo selectors]
|
||||
expected: FAIL
|
||||
|
||||
[removeRule(1)]
|
||||
expected: FAIL
|
||||
|
||||
[removeRule with no argument removes first rule]
|
||||
expected: FAIL
|
||||
|
||||
[addRule with @media rule]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
[contenttype_txt.html]
|
||||
expected: CRASH
|
|
@ -312,15 +312,6 @@
|
|||
[<iframe>: separate response Content-Type: */* text/html]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: */* text/html]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html */*]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html;x=" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html;" \\" text/plain]
|
||||
[<iframe>: separate response Content-Type: text/html;" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -56,6 +56,3 @@
|
|||
[separate text/javascript x/x]
|
||||
expected: FAIL
|
||||
|
||||
[separate text/javascript;charset=windows-1252 error text/javascript]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
[navigation-unload-same-origin-fragment.html]
|
||||
[Tests that a fragment navigation in the unload handler will not block the initial navigation]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
[traverse_the_history_5.html]
|
||||
[Multiple history traversals, last would be aborted]
|
||||
expected: FAIL
|
||||
|
|
@ -1,7 +1,11 @@
|
|||
[form-submission-algorithm.html]
|
||||
expected: TIMEOUT
|
||||
[If form's firing submission events is true, then return; 'submit' event]
|
||||
expected: FAIL
|
||||
|
||||
[If form's firing submission events is true, then return; 'invalid' event]
|
||||
expected: FAIL
|
||||
|
||||
[Cannot navigate (after constructing the entry list)]
|
||||
expected: TIMEOUT
|
||||
|
||||
|
|
|
@ -1,7 +0,0 @@
|
|||
[toggleEvent.html]
|
||||
[Calling open twice on 'details' fires only one toggle event]
|
||||
expected: FAIL
|
||||
|
||||
[Setting open=true to opened 'details' element should not fire a toggle event at the 'details' element]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
[transition_calc_implicit.html]
|
||||
expected: TIMEOUT
|
|
@ -328,7 +328,7 @@ jobs:
|
|||
- template: tools/ci/azure/update_hosts.yml
|
||||
- template: tools/ci/azure/update_manifest.yml
|
||||
# --exclude is a workaround for https://github.com/web-platform-tests/wpt/issues/16229
|
||||
- script: no_proxy='*' ./wpt run --no-manifest-update --no-restart-on-unexpected --no-fail-on-unexpected --this-chunk=$(System.JobPositionInPhase) --total-chunks=$(System.TotalJobsInPhase) --chunk-type hash --log-wptreport $(Build.ArtifactStagingDirectory)/wpt_report_$(System.JobPositionInPhase).json --log-wptscreenshot $(Build.ArtifactStagingDirectory)/wpt_screenshot_$(System.JobPositionInPhase).txt --log-tbpl - --log-tbpl-level info safari --exclude /inert/inert-retargeting.tentative.html --exclude /inert/inert-retargeting-iframe.tentative.html
|
||||
- script: no_proxy='*' ./wpt run --no-manifest-update --no-restart-on-unexpected --no-fail-on-unexpected --this-chunk=$(System.JobPositionInPhase) --total-chunks=$(System.TotalJobsInPhase) --chunk-type hash --log-wptreport $(Build.ArtifactStagingDirectory)/wpt_report_$(System.JobPositionInPhase).json --log-wptscreenshot $(Build.ArtifactStagingDirectory)/wpt_screenshot_$(System.JobPositionInPhase).txt --log-tbpl - --log-tbpl-level info safari --exclude /inert/inert-retargeting.tentative.html --exclude /inert/inert-retargeting-iframe.tentative.html --exclude /web-share/share-sharePromise-internal-slot.https.html
|
||||
displayName: 'Run tests'
|
||||
- task: PublishBuildArtifacts@1
|
||||
displayName: 'Publish results'
|
||||
|
@ -361,7 +361,7 @@ jobs:
|
|||
- template: tools/ci/azure/update_hosts.yml
|
||||
- template: tools/ci/azure/update_manifest.yml
|
||||
# --exclude is a workaround for https://github.com/web-platform-tests/wpt/issues/16229
|
||||
- script: no_proxy='*' ./wpt run --no-manifest-update --no-restart-on-unexpected --no-fail-on-unexpected --this-chunk=$(System.JobPositionInPhase) --total-chunks=$(System.TotalJobsInPhase) --chunk-type hash --log-wptreport $(Build.ArtifactStagingDirectory)/wpt_report_$(System.JobPositionInPhase).json --log-wptscreenshot $(Build.ArtifactStagingDirectory)/wpt_screenshot_$(System.JobPositionInPhase).txt --log-tbpl - --log-tbpl-level info --channel preview safari --exclude /inert/inert-retargeting.tentative.html --exclude /inert/inert-retargeting-iframe.tentative.html --exclude /payment-request/
|
||||
- script: no_proxy='*' ./wpt run --no-manifest-update --no-restart-on-unexpected --no-fail-on-unexpected --this-chunk=$(System.JobPositionInPhase) --total-chunks=$(System.TotalJobsInPhase) --chunk-type hash --log-wptreport $(Build.ArtifactStagingDirectory)/wpt_report_$(System.JobPositionInPhase).json --log-wptscreenshot $(Build.ArtifactStagingDirectory)/wpt_screenshot_$(System.JobPositionInPhase).txt --log-tbpl - --log-tbpl-level info --channel preview safari --exclude /inert/inert-retargeting.tentative.html --exclude /inert/inert-retargeting-iframe.tentative.html --exclude /payment-request/ --exclude /web-share/share-sharePromise-internal-slot.https.html
|
||||
displayName: 'Run tests'
|
||||
- task: PublishBuildArtifacts@1
|
||||
displayName: 'Publish results'
|
||||
|
|
|
@ -2,9 +2,9 @@ on: pull_request
|
|||
name: Synchronize the Pull Request Preview
|
||||
jobs:
|
||||
update-pr-preview:
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ubuntu-18.04
|
||||
steps:
|
||||
- uses: actions/checkout@v1.0.0
|
||||
- uses: actions/checkout@v1
|
||||
with:
|
||||
ref: refs/heads/master
|
||||
fetch-depth: 1
|
||||
|
|
|
@ -1,10 +1,15 @@
|
|||
on: push
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
name: Build & Publish Documentation Website
|
||||
jobs:
|
||||
website-build-and-publish:
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ubuntu-18.04
|
||||
steps:
|
||||
- uses: actions/checkout@master
|
||||
- uses: actions/checkout@v1
|
||||
with:
|
||||
fetch-depth: 1
|
||||
- name: website-build-and-publish
|
||||
uses: ./tools/docker/documentation
|
||||
env:
|
||||
|
|
|
@ -1,10 +1,15 @@
|
|||
on: push
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
name: Build & Release Manifest
|
||||
jobs:
|
||||
manifest-build-and-tag:
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ubuntu-18.04
|
||||
steps:
|
||||
- uses: actions/checkout@master
|
||||
- uses: actions/checkout@v1
|
||||
with:
|
||||
fetch-depth: 1
|
||||
- name: manifest-build-and-tag
|
||||
uses: ./tools/docker/github
|
||||
env:
|
||||
|
|
|
@ -76,8 +76,6 @@ tasks:
|
|||
public/results:
|
||||
path: /home/test/artifacts
|
||||
type: directory
|
||||
env:
|
||||
TASK_EVENT: "${event_str}"
|
||||
command:
|
||||
- /bin/bash
|
||||
- --login
|
||||
|
@ -106,6 +104,9 @@ tasks:
|
|||
--test-type=${chunk[0]}
|
||||
--this-chunk=${chunk[1]}
|
||||
--total-chunks=${chunk[2]};
|
||||
extra:
|
||||
github_event: "${event_str}"
|
||||
|
||||
- $if: tasks_for == "github-pull-request"
|
||||
# PR tasks that run the tests in various configurations
|
||||
then:
|
||||
|
@ -168,8 +169,6 @@ tasks:
|
|||
public/results:
|
||||
path: /home/test/artifacts
|
||||
type: directory
|
||||
env:
|
||||
TASK_EVENT: "${event_str}"
|
||||
# Fetch the GitHub-provided merge commit (rather than the pull
|
||||
# request branch) so that the tasks simulate the behavior of the
|
||||
# submitted patch after it is merged. Using the merge commit also
|
||||
|
@ -199,6 +198,9 @@ tasks:
|
|||
--
|
||||
--channel=${browser.channel}
|
||||
${operation.extra_args};
|
||||
extra:
|
||||
github_event: "${event_str}"
|
||||
|
||||
- $map:
|
||||
# This is the main point to define new CI checks other than stability checks
|
||||
- name: lint
|
||||
|
@ -334,8 +336,6 @@ tasks:
|
|||
public/results:
|
||||
path: /home/test/artifacts
|
||||
type: directory
|
||||
env:
|
||||
TASK_EVENT: "${event_str}"
|
||||
command:
|
||||
- /bin/bash
|
||||
- --login
|
||||
|
@ -347,3 +347,5 @@ tasks:
|
|||
${checkout_ref};
|
||||
cd ~/web-platform-tests;
|
||||
${operation.script};
|
||||
extra:
|
||||
github_event: "${event_str}"
|
||||
|
|
|
@ -0,0 +1,49 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<title>Tests Stale While Revalidate is not executed for fetch API</title>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/common/utils.js"></script>
|
||||
<script>
|
||||
function wait25ms(test) {
|
||||
return new Promise(resolve => {
|
||||
test.step_timeout(() => {
|
||||
resolve();
|
||||
}, 25);
|
||||
});
|
||||
}
|
||||
|
||||
promise_test(async (test) => {
|
||||
var request_token = token();
|
||||
var client_hint_headers = [
|
||||
"device-memory",
|
||||
"dpr",
|
||||
"width",
|
||||
"viewport-width",
|
||||
"rtt",
|
||||
"downlink",
|
||||
"ect",
|
||||
"sec-ch-lang",
|
||||
"sec-ch-ua",
|
||||
"sec-ch-ua-arch",
|
||||
"sec-ch-ua-platform",
|
||||
"sec-ch-ua-model",
|
||||
];
|
||||
|
||||
const response = await fetch(`resources/stale-echo-client-hints.py?token=` + request_token);
|
||||
const response2 = await fetch(`resources/stale-echo-client-hints.py?token=` + request_token);
|
||||
|
||||
assert_equals(response.headers.get('Unique-Id'), response2.headers.get('Unique-Id'));
|
||||
|
||||
while(true) {
|
||||
const revalidation_check = await fetch(`resources/stale-echo-client-hints.py?query&token=` + request_token);
|
||||
if (revalidation_check.headers.get('Count') == '2') {
|
||||
client_hint_headers.forEach(header => {
|
||||
assert_equals(revalidation_check.headers.get(header+"-recieved"), revalidation_check.headers.get(header+"-previous"));
|
||||
});
|
||||
break;
|
||||
}
|
||||
await wait25ms(test);
|
||||
}
|
||||
}, 'Same headers sent for revalidation request');
|
||||
</script>
|
|
@ -0,0 +1 @@
|
|||
Accept-CH: dpr,device-memory,viewport-width,rtt,downlink,ect,lang,ua,arch,platform,model
|
|
@ -0,0 +1,60 @@
|
|||
import random
|
||||
import string
|
||||
|
||||
def id_token():
|
||||
letters = string.ascii_lowercase
|
||||
return ''.join(random.choice(letters) for i in range(20))
|
||||
|
||||
def main(request, response):
|
||||
client_hint_headers = [
|
||||
"device-memory",
|
||||
"dpr",
|
||||
"width",
|
||||
"viewport-width",
|
||||
"rtt",
|
||||
"downlink",
|
||||
"ect",
|
||||
"sec-ch-lang",
|
||||
"sec-ch-ua",
|
||||
"sec-ch-ua-arch",
|
||||
"sec-ch-ua-platform",
|
||||
"sec-ch-ua-model",
|
||||
]
|
||||
|
||||
client_hints_curr = {i:request.headers.get(i) for i in client_hint_headers}
|
||||
|
||||
token = request.GET.first("token", None)
|
||||
is_query = request.GET.first("query", None) is not None
|
||||
with request.server.stash.lock:
|
||||
stash = request.server.stash.take(token)
|
||||
if stash != None:
|
||||
(value, client_hints_prev) = stash
|
||||
count = int(value)
|
||||
else:
|
||||
count = 0
|
||||
client_hints_prev = {}
|
||||
|
||||
if is_query:
|
||||
if count < 2:
|
||||
request.server.stash.put(token, (count, client_hints_curr))
|
||||
else:
|
||||
count = count + 1
|
||||
request.server.stash.put(token, (count, client_hints_curr))
|
||||
|
||||
for header in client_hint_headers:
|
||||
if client_hints_curr[header] is not None:
|
||||
response.headers.set(header+"-recieved", client_hints_curr[header])
|
||||
if (header in client_hints_prev) and (client_hints_prev[header] is not None):
|
||||
response.headers.set(header+"-previous", client_hints_prev[header])
|
||||
|
||||
if is_query:
|
||||
headers = [("Count", count)]
|
||||
content = ""
|
||||
return 200, headers, content
|
||||
else:
|
||||
unique_id = id_token()
|
||||
headers = [("Content-Type", "text/html"),
|
||||
("Cache-Control", "private, max-age=0, stale-while-revalidate=60"),
|
||||
("Unique-Id", unique_id)]
|
||||
content = "report('{}')".format(unique_id)
|
||||
return 200, headers, content
|
|
@ -857,11 +857,11 @@ const subresourceMap = {
|
|||
path: "/common/security-features/subresource/audio.py",
|
||||
invoker: requestViaAudio,
|
||||
},
|
||||
"beacon-request": {
|
||||
"beacon": {
|
||||
path: "/common/security-features/subresource/empty.py",
|
||||
invoker: requestViaSendBeacon,
|
||||
},
|
||||
"fetch-request": {
|
||||
"fetch": {
|
||||
path: "/common/security-features/subresource/xhr.py",
|
||||
invoker: requestViaFetch,
|
||||
},
|
||||
|
@ -901,45 +901,40 @@ const subresourceMap = {
|
|||
path: "/common/security-features/subresource/video.py",
|
||||
invoker: requestViaVideo,
|
||||
},
|
||||
"xhr-request": {
|
||||
"xhr": {
|
||||
path: "/common/security-features/subresource/xhr.py",
|
||||
invoker: requestViaXhr,
|
||||
},
|
||||
|
||||
"worker-request": {
|
||||
"worker-classic": {
|
||||
path: "/common/security-features/subresource/worker.py",
|
||||
invoker: url => requestViaDedicatedWorker(url),
|
||||
},
|
||||
// TODO: Merge "module-worker" and "module-worker-top-level".
|
||||
"module-worker": {
|
||||
"worker-module": {
|
||||
path: "/common/security-features/subresource/worker.py",
|
||||
invoker: url => requestViaDedicatedWorker(url, {type: "module"}),
|
||||
},
|
||||
"module-worker-top-level": {
|
||||
path: "/common/security-features/subresource/worker.py",
|
||||
invoker: url => requestViaDedicatedWorker(url, {type: "module"}),
|
||||
},
|
||||
"module-data-worker-import": {
|
||||
"worker-import-data": {
|
||||
path: "/common/security-features/subresource/worker.py",
|
||||
invoker: url =>
|
||||
requestViaDedicatedWorker(workerUrlThatImports(url), {type: "module"}),
|
||||
},
|
||||
"shared-worker": {
|
||||
"sharedworker-classic": {
|
||||
path: "/common/security-features/subresource/shared-worker.py",
|
||||
invoker: requestViaSharedWorker,
|
||||
},
|
||||
|
||||
"websocket-request": {
|
||||
"websocket": {
|
||||
path: "/stash_responder",
|
||||
invoker: requestViaWebSocket,
|
||||
},
|
||||
};
|
||||
for (const workletType of ['animation', 'audio', 'layout', 'paint']) {
|
||||
subresourceMap[`worklet-${workletType}-top-level`] = {
|
||||
subresourceMap[`worklet-${workletType}`] = {
|
||||
path: "/common/security-features/subresource/worker.py",
|
||||
invoker: url => requestViaWorklet(workletType, url)
|
||||
};
|
||||
subresourceMap[`worklet-${workletType}-data-import`] = {
|
||||
subresourceMap[`worklet-${workletType}-import-data`] = {
|
||||
path: "/common/security-features/subresource/worker.py",
|
||||
invoker: url =>
|
||||
requestViaWorklet(workletType, workerUrlThatImports(url))
|
||||
|
@ -956,6 +951,70 @@ for (const workletType of ['animation', 'audio', 'layout', 'paint']) {
|
|||
/common/security-features/subresource/subresource.py for valid values.
|
||||
*/
|
||||
|
||||
/**
|
||||
Construct subresource (and related) origin.
|
||||
|
||||
@param {string} originType
|
||||
@returns {object} the origin of the subresource.
|
||||
*/
|
||||
function getSubresourceOrigin(originType) {
|
||||
const httpProtocol = "http";
|
||||
const httpsProtocol = "https";
|
||||
const wsProtocol = "ws";
|
||||
const wssProtocol = "wss";
|
||||
|
||||
const sameOriginHost = "{{host}}";
|
||||
const crossOriginHost = "{{domains[www1]}}";
|
||||
|
||||
// These values can evaluate to either empty strings or a ":port" string.
|
||||
const httpPort = getNormalizedPort(parseInt("{{ports[http][0]}}", 10));
|
||||
const httpsRawPort = parseInt("{{ports[https][0]}}", 10);
|
||||
const httpsPort = getNormalizedPort(httpsRawPort);
|
||||
const wsPort = getNormalizedPort(parseInt("{{ports[ws][0]}}", 10));
|
||||
const wssRawPort = parseInt("{{ports[wss][0]}}", 10);
|
||||
const wssPort = getNormalizedPort(wssRawPort);
|
||||
|
||||
/**
|
||||
@typedef OriginType
|
||||
@type {string}
|
||||
|
||||
Represents the origin of the subresource request URL.
|
||||
The keys of `originMap` below are the valid values.
|
||||
|
||||
Note that there can be redirects from the specified origin
|
||||
(see RedirectionType), and thus the origin of the subresource
|
||||
response URL might be different from what is specified by OriginType.
|
||||
*/
|
||||
const originMap = {
|
||||
"same-https": httpsProtocol + "://" + sameOriginHost + httpsPort,
|
||||
"same-http": httpProtocol + "://" + sameOriginHost + httpPort,
|
||||
"cross-https": httpsProtocol + "://" + crossOriginHost + httpsPort,
|
||||
"cross-http": httpProtocol + "://" + crossOriginHost + httpPort,
|
||||
"same-wss": wssProtocol + "://" + sameOriginHost + wssPort,
|
||||
"same-ws": wsProtocol + "://" + sameOriginHost + wsPort,
|
||||
"cross-wss": wssProtocol + "://" + crossOriginHost + wssPort,
|
||||
"cross-ws": wsProtocol + "://" + crossOriginHost + wsPort,
|
||||
|
||||
// The following origin types are used for upgrade-insecure-requests tests:
|
||||
// These rely on some unintuitive cleverness due to WPT's test setup:
|
||||
// 'Upgrade-Insecure-Requests' does not upgrade the port number,
|
||||
// so we use URLs in the form `http://[domain]:[https-port]`,
|
||||
// which will be upgraded to `https://[domain]:[https-port]`.
|
||||
// If the upgrade fails, the load will fail, as we don't serve HTTP over
|
||||
// the secure port.
|
||||
"same-http-downgrade":
|
||||
httpProtocol + "://" + sameOriginHost + ":" + httpsRawPort,
|
||||
"cross-http-downgrade":
|
||||
httpProtocol + "://" + crossOriginHost + ":" + httpsRawPort,
|
||||
"same-ws-downgrade":
|
||||
wsProtocol + "://" + sameOriginHost + ":" + wssRawPort,
|
||||
"cross-ws-downgrade":
|
||||
wsProtocol + "://" + crossOriginHost + ":" + wssRawPort,
|
||||
};
|
||||
|
||||
return originMap[originType];
|
||||
}
|
||||
|
||||
/**
|
||||
Construct subresource (and related) URLs.
|
||||
|
||||
|
|
|
@ -32,9 +32,14 @@ def __get_swapped_origin_netloc(netloc, subdomain_prefix = "www1."):
|
|||
# current request URL `request.url`, except for:
|
||||
# - When `swap_scheme` or `swap_origin` is True, its scheme/origin is changed
|
||||
# to the other one. (http <-> https, ws <-> wss, etc.)
|
||||
# - For `downgrade`, we redirect to a URL that would be successfully loaded
|
||||
# if and only if upgrade-insecure-request is applied.
|
||||
# - `query_parameter_to_remove` parameter is removed from query part.
|
||||
# Its default is "redirection" to avoid redirect loops.
|
||||
def create_url(request, swap_scheme = False, swap_origin = False,
|
||||
def create_url(request,
|
||||
swap_scheme=False,
|
||||
swap_origin=False,
|
||||
downgrade=False,
|
||||
query_parameter_to_remove="redirection"):
|
||||
parsed = urlparse.urlsplit(request.url)
|
||||
destination_netloc = parsed.netloc
|
||||
|
@ -46,6 +51,24 @@ def create_url(request, swap_scheme = False, swap_origin = False,
|
|||
port = request.server.config["ports"][scheme][0]
|
||||
destination_netloc = ":".join([hostname, str(port)])
|
||||
|
||||
if downgrade:
|
||||
# These rely on some unintuitive cleverness due to WPT's test setup:
|
||||
# 'Upgrade-Insecure-Requests' does not upgrade the port number,
|
||||
# so we use URLs in the form `http://[domain]:[https-port]`,
|
||||
# which will be upgraded to `https://[domain]:[https-port]`.
|
||||
# If the upgrade fails, the load will fail, as we don't serve HTTP over
|
||||
# the secure port.
|
||||
if parsed.scheme == "https":
|
||||
scheme = "http"
|
||||
elif parsed.scheme == "wss":
|
||||
scheme = "ws"
|
||||
else:
|
||||
raise ValueError("Downgrade redirection: Invalid scheme '%s'" %
|
||||
parsed.scheme)
|
||||
hostname = parsed.netloc.split(':')[0]
|
||||
port = request.server.config["ports"][parsed.scheme][0]
|
||||
destination_netloc = ":".join([hostname, str(port)])
|
||||
|
||||
if swap_origin:
|
||||
destination_netloc = __get_swapped_origin_netloc(destination_netloc)
|
||||
|
||||
|
@ -71,13 +94,15 @@ def preprocess_redirection(request, response):
|
|||
|
||||
if redirection == "no-redirect":
|
||||
return False
|
||||
elif redirection == "keep-scheme-redirect":
|
||||
elif redirection == "keep-scheme":
|
||||
redirect_url = create_url(request, swap_scheme=False)
|
||||
elif redirection == "swap-scheme-redirect":
|
||||
elif redirection == "swap-scheme":
|
||||
redirect_url = create_url(request, swap_scheme=True)
|
||||
elif redirection == "keep-origin-redirect":
|
||||
elif redirection == "downgrade":
|
||||
redirect_url = create_url(request, downgrade=True)
|
||||
elif redirection == "keep-origin":
|
||||
redirect_url = create_url(request, swap_origin=False)
|
||||
elif redirection == "swap-origin-redirect":
|
||||
elif redirection == "swap-origin":
|
||||
redirect_url = create_url(request, swap_origin=True)
|
||||
else:
|
||||
raise ValueError("Invalid redirection type '%s'" % redirection)
|
||||
|
|
|
@ -205,15 +205,20 @@ def validate(spec_json, details):
|
|||
test_expansion_schema, 'source_context_list',
|
||||
spec_json['source_context_list_schema'].keys())
|
||||
|
||||
# Should be consistent with `preprocess_redirection` in
|
||||
# `/common/security-features/subresource/subresource.py`.
|
||||
assert_atom_or_list_items_from(test_expansion_schema, 'redirection', [
|
||||
'no-redirect', 'keep-origin', 'swap-origin', 'keep-scheme',
|
||||
'swap-scheme'
|
||||
'swap-scheme', 'downgrade'
|
||||
])
|
||||
for subresource in leaf_values(test_expansion_schema['subresource']):
|
||||
assert subresource in valid_subresource_names, "Invalid subresource %s" % subresource
|
||||
# Should be consistent with getSubresourceOrigin() in
|
||||
# `/common/security-features/resources/common.sub.js`.
|
||||
assert_atom_or_list_items_from(test_expansion_schema, 'origin', [
|
||||
'same-http', 'same-https', 'same-ws', 'same-wss', 'cross-http',
|
||||
'cross-https', 'cross-ws', 'cross-wss'
|
||||
'cross-https', 'cross-ws', 'cross-wss', 'same-http-downgrade',
|
||||
'cross-http-downgrade', 'same-ws-downgrade', 'cross-ws-downgrade'
|
||||
])
|
||||
|
||||
# Validate excluded tests.
|
||||
|
|
|
@ -0,0 +1,34 @@
|
|||
<!DOCTYPE html>
|
||||
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
|
||||
<style>
|
||||
.container {
|
||||
margin: 30px 0;
|
||||
color: orange;
|
||||
background-color: blue;
|
||||
line-height: 10px;
|
||||
font-size: 30px;
|
||||
font-family: Ahem;
|
||||
}
|
||||
.lh20 { line-height: 20px; }
|
||||
.lh30 { line-height: 30px; }
|
||||
.up5 { position: relative; top: -5px; }
|
||||
.up10 { position: relative; top: -10px; }
|
||||
.down5 { position: relative; top: 5px; }
|
||||
.down10 { position: relative; top: 10px; }
|
||||
</style>
|
||||
<body>
|
||||
<div class="container">
|
||||
<span>XX</span>
|
||||
<span>XX</span>
|
||||
<span>XX</span>
|
||||
</div>
|
||||
<div class="container lh30">
|
||||
<span class="up10">XX</span>
|
||||
<span>XX</span>
|
||||
<span class="down10">XX</span>
|
||||
</div>
|
||||
<div class="container"><span>XX</span></div>
|
||||
<div class="container"><span>XX</span></div>
|
||||
<div class="container lh20"><span class="up5">XX</span></div>
|
||||
<div class="container lh20"><span class="down5">XX</span></div>
|
||||
</body>
|
|
@ -0,0 +1,37 @@
|
|||
<!DOCTYPE html>
|
||||
<title>Test vertical-align: top and bottom do not affect the line height</title>
|
||||
<link rel="match" href="vertical-align-negative-leading-001-ref.html">
|
||||
<link rel="help" href="https://drafts.csswg.org/css2/visudet.html#propdef-vertical-align">
|
||||
<link rel="author" href="mailto:kojii@chromium.org">
|
||||
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
|
||||
<style>
|
||||
.container {
|
||||
margin: 30px 0;
|
||||
color: orange;
|
||||
background-color: blue;
|
||||
line-height: 10px;
|
||||
font-size: 30px;
|
||||
font-family: Ahem;
|
||||
}
|
||||
span { background: purple; }
|
||||
.top { vertical-align: top; }
|
||||
.bottom { vertical-align: bottom; }
|
||||
.text-top { vertical-align: text-top; }
|
||||
.text-bottom { vertical-align: text-bottom; }
|
||||
</style>
|
||||
<body>
|
||||
<div class="container">
|
||||
<span class="top">XX</span>
|
||||
<span>XX</span>
|
||||
<span class="bottom">XX</span>
|
||||
</div>
|
||||
<div class="container">
|
||||
<span class="text-top">XX</span>
|
||||
<span>XX</span>
|
||||
<span class="text-bottom">XX</span>
|
||||
</div>
|
||||
<div class="container"><span class="top">XX</span></div>
|
||||
<div class="container"><span class="bottom">XX</span></div>
|
||||
<div class="container"><span class="text-top">XX</span></div>
|
||||
<div class="container"><span class="text-bottom">XX</span></div>
|
||||
</body>
|
|
@ -0,0 +1,87 @@
|
|||
<!DOCTYPE html>
|
||||
<link rel="help" href="https://drafts.csswg.org/css2/visudet.html#propdef-vertical-align" />
|
||||
<link rel="author" href="mailto:kojii@chromium.org">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
|
||||
<style>
|
||||
section.test {
|
||||
display: inline-block;
|
||||
font-size: 20px;
|
||||
line-height: 1.5;
|
||||
font-family: Arial;
|
||||
font-family: Ahem;
|
||||
}
|
||||
section.test > div {
|
||||
background: blue;
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
.filler {
|
||||
display: inline-block;
|
||||
background: cyan;
|
||||
height: 3em;
|
||||
width: 1em;
|
||||
}
|
||||
.target {
|
||||
display: inline-block;
|
||||
background: orange;
|
||||
width: 1em;
|
||||
height: 1em;
|
||||
}
|
||||
div.top, section.top .target { vertical-align: top; }
|
||||
div.text-top, section.text-top .target { vertical-align: text-top; }
|
||||
div.text-bottom, section.text-bottom .target { vertical-align: text-bottom; }
|
||||
div.bottom, section.bottom .target { vertical-align: bottom; }
|
||||
.test .fail {
|
||||
outline: red solid 5px;
|
||||
}
|
||||
</style>
|
||||
<body>
|
||||
<section class="test top">
|
||||
<div><div class="filler"></div><div class="target" data-y="0"></div></div>
|
||||
<div><div class="filler top"></div><div class="target" data-y="0"></div></div>
|
||||
<div><div class="filler text-top"></div><div class="target" data-y="0"></div></div>
|
||||
<div><div class="filler bottom"></div><div class="target" data-y="0"></div></div>
|
||||
<div><div class="filler text-bottom"></div><div class="target" data-y="0"></div></div>
|
||||
</section>
|
||||
<section class="test text-top">
|
||||
<div><div class="filler"></div><div class="target" data-y="44"></div></div>
|
||||
<div><div class="filler top"></div><div class="target" data-y="5"></div></div>
|
||||
<div><div class="filler text-top"></div><div class="target" data-y="5"></div></div>
|
||||
<div><div class="filler bottom"></div><div class="target" data-y="35"></div></div>
|
||||
<div><div class="filler text-bottom"></div><div class="target" data-y="40"></div></div>
|
||||
</section>
|
||||
<section class="test text-bottom">
|
||||
<div><div class="filler"></div><div class="target" data-y="44"></div></div>
|
||||
<div><div class="filler top"></div><div class="target" data-y="5"></div></div>
|
||||
<div><div class="filler text-top"></div><div class="target" data-y="5"></div></div>
|
||||
<div><div class="filler bottom"></div><div class="target" data-y="35"></div></div>
|
||||
<div><div class="filler text-bottom"></div><div class="target" data-y="40"></div></div>
|
||||
</section>
|
||||
<section class="test bottom">
|
||||
<div><div class="filler"></div><div class="target" data-y="49"></div></div>
|
||||
<div><div class="filler top"></div><div class="target" data-y="40"></div></div>
|
||||
<div><div class="filler text-top"></div><div class="target" data-y="45"></div></div>
|
||||
<div><div class="filler bottom"></div><div class="target" data-y="40"></div></div>
|
||||
<div><div class="filler text-bottom"></div><div class="target" data-y="45"></div></div>
|
||||
</section>
|
||||
<script>
|
||||
setup({explicit_done: true});
|
||||
document.fonts.ready.then(()=> {
|
||||
for (let target of document.getElementsByClassName('target')) {
|
||||
let container = target.parentElement;
|
||||
let filler = container.firstElementChild;
|
||||
let section = container.parentElement;
|
||||
let pass = false;
|
||||
test(() => {
|
||||
let y = target.offsetTop - container.offsetTop;
|
||||
assert_approx_equals(y, target.dataset.y, 0);
|
||||
pass = true;
|
||||
}, `${section.className.substr(5)}+${filler.className.substr(7)}`);
|
||||
if (!pass)
|
||||
container.classList.add('fail');
|
||||
}
|
||||
done();
|
||||
});
|
||||
</script>
|
||||
</body>
|
|
@ -0,0 +1,50 @@
|
|||
<!DOCTYPE html>
|
||||
<title>CSS Test: Static positions and line wrapping</title>
|
||||
<link rel="author" title="Koji Ishii" href="mailto:kojii@chromium.org">
|
||||
<link rel="help" href="https://drafts.csswg.org/css2/visudet.html#static-position">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/resources/check-layout-th.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
|
||||
<style>
|
||||
.tests, .no-tests {
|
||||
margin-bottom: 1em;
|
||||
font-family: Ahem;
|
||||
font-size: 10px;
|
||||
line-height: 1;
|
||||
}
|
||||
.tests > div, .no-tests > div {
|
||||
position: relative;
|
||||
width: 10ch;
|
||||
border: 1px solid blue;
|
||||
}
|
||||
.abs {
|
||||
position: absolute;
|
||||
color: orange;
|
||||
}
|
||||
</style>
|
||||
<body>
|
||||
<section class="tests">
|
||||
<div>12345<span class="abs" data-offset-x="50" data-offset-y="0">span</span>54321</div>
|
||||
<div>123456<span class="abs" data-offset-x="60" data-offset-y="0">span</span>654321</div>
|
||||
<div>12345<span class="abs" data-offset-x="50" data-offset-y="0">span</span> 54321</div>
|
||||
<div>12345 <span class="abs" data-offset-x="60" data-offset-y="0">span</span> 54321</div>
|
||||
<div>12345 <span class="abs" data-offset-x="60" data-offset-y="0">span</span> 54321</div>
|
||||
</section>
|
||||
<section class="tests">
|
||||
<!-- offsetTop is interoperable but offsetLeft is not due to white space collapsing. -->
|
||||
<div>12345 <span class="abs" data-offset-y="0">span</span> 54321</div>
|
||||
</section>
|
||||
<section class="no-tests">
|
||||
<!-- These tests are not interoperable. -->
|
||||
<div>12345 <span class="abs">span</span>54321</div>
|
||||
<div>12345 <span class="abs">span</span> 54321</div>
|
||||
<div>123456789012 <span class="abs">span</span> 54321</div>
|
||||
<div>123456789012 <span class="abs">span</span> 543210987654321</div>
|
||||
</section>
|
||||
<script>
|
||||
document.fonts.ready.then(()=> {
|
||||
checkLayout('.tests .abs');
|
||||
});
|
||||
</script>
|
||||
</body>
|
|
@ -45,18 +45,20 @@ test_interpolation({
|
|||
{at: 1.25, expect: '90px 90px, 90px 90px, 90px 90px, 90px 90px'},
|
||||
]);
|
||||
|
||||
// background-position's initial value is 0% 0%, and calcs involving percentages
|
||||
// are never resolved by the calc spec (even when the percentage is 0%).
|
||||
test_interpolation({
|
||||
property: 'background-position',
|
||||
from: 'initial',
|
||||
to: '80px 80px, 80px 80px, 80px 80px, 80px 80px',
|
||||
}, [
|
||||
{at: -0.25, expect: '-20px -20px, -20px -20px, -20px -20px, -20px -20px'},
|
||||
{at: 0, expect: ' 0% 0% , 0% 0% , 0% 0% , 0% 0% '}, // TODO(alancutter): Should these be 0px?
|
||||
{at: 0.25, expect: ' 20px 20px, 20px 20px, 20px 20px, 20px 20px'},
|
||||
{at: 0.5, expect: ' 40px 40px, 40px 40px, 40px 40px, 40px 40px'},
|
||||
{at: 0.75, expect: ' 60px 60px, 60px 60px, 60px 60px, 60px 60px'},
|
||||
{at: 1, expect: ' 80px 80px, 80px 80px, 80px 80px, 80px 80px'},
|
||||
{at: 1.25, expect: '100px 100px, 100px 100px, 100px 100px, 100px 100px'},
|
||||
{at: -0.25, expect: 'calc(0% - 20px) calc(0% - 20px), calc(0% - 20px) calc(0% - 20px), calc(0% - 20px) calc(0% - 20px), calc(0% - 20px) calc(0% - 20px)'},
|
||||
{at: 0, expect: '0% 0%, 0% 0%, 0% 0%, 0% 0%'},
|
||||
{at: 0.25, expect: 'calc(0% + 20px) calc(0% + 20px), calc(0% + 20px) calc(0% + 20px), calc(0% + 20px) calc(0% + 20px), calc(0% + 20px) calc(0% + 20px)'},
|
||||
{at: 0.5, expect: 'calc(0% + 40px) calc(0% + 40px), calc(0% + 40px) calc(0% + 40px), calc(0% + 40px) calc(0% + 40px), calc(0% + 40px) calc(0% + 40px)'},
|
||||
{at: 0.75, expect: 'calc(0% + 60px) calc(0% + 60px), calc(0% + 60px) calc(0% + 60px), calc(0% + 60px) calc(0% + 60px), calc(0% + 60px) calc(0% + 60px)'},
|
||||
{at: 1, expect: 'calc(0% + 80px) calc(0% + 80px), calc(0% + 80px) calc(0% + 80px), calc(0% + 80px) calc(0% + 80px), calc(0% + 80px) calc(0% + 80px)'},
|
||||
{at: 1.25, expect: 'calc(0% + 100px) calc(0% + 100px), calc(0% + 100px) calc(0% + 100px), calc(0% + 100px) calc(0% + 100px), calc(0% + 100px) calc(0% + 100px)'},
|
||||
]);
|
||||
|
||||
test_interpolation({
|
||||
|
@ -73,18 +75,19 @@ test_interpolation({
|
|||
{at: 1.25, expect: '85px 85px, 85px 85px, 85px 85px, 85px 85px'},
|
||||
]);
|
||||
|
||||
// background-position is not inherited, so 'unset' is equivalent to initial.
|
||||
test_interpolation({
|
||||
property: 'background-position',
|
||||
from: 'unset',
|
||||
to: '80px 80px, 80px 80px, 80px 80px, 80px 80px',
|
||||
}, [
|
||||
{at: -0.25, expect: '-20px -20px, -20px -20px, -20px -20px, -20px -20px'},
|
||||
{at: -0.25, expect: 'calc(0% - 20px) calc(0% - 20px), calc(0% - 20px) calc(0% - 20px), calc(0% - 20px) calc(0% - 20px), calc(0% - 20px) calc(0% - 20px)'},
|
||||
{at: 0, expect: '0% 0%, 0% 0%, 0% 0%, 0% 0%'},
|
||||
{at: 0.25, expect: ' 20px 20px, 20px 20px, 20px 20px, 20px 20px'},
|
||||
{at: 0.5, expect: ' 40px 40px, 40px 40px, 40px 40px, 40px 40px'},
|
||||
{at: 0.75, expect: ' 60px 60px, 60px 60px, 60px 60px, 60px 60px'},
|
||||
{at: 1, expect: ' 80px 80px, 80px 80px, 80px 80px, 80px 80px'},
|
||||
{at: 1.25, expect: '100px 100px, 100px 100px, 100px 100px, 100px 100px'},
|
||||
{at: 0.25, expect: 'calc(0% + 20px) calc(0% + 20px), calc(0% + 20px) calc(0% + 20px), calc(0% + 20px) calc(0% + 20px), calc(0% + 20px) calc(0% + 20px)'},
|
||||
{at: 0.5, expect: 'calc(0% + 40px) calc(0% + 40px), calc(0% + 40px) calc(0% + 40px), calc(0% + 40px) calc(0% + 40px), calc(0% + 40px) calc(0% + 40px)'},
|
||||
{at: 0.75, expect: 'calc(0% + 60px) calc(0% + 60px), calc(0% + 60px) calc(0% + 60px), calc(0% + 60px) calc(0% + 60px), calc(0% + 60px) calc(0% + 60px)'},
|
||||
{at: 1, expect: 'calc(0% + 80px) calc(0% + 80px), calc(0% + 80px) calc(0% + 80px), calc(0% + 80px) calc(0% + 80px), calc(0% + 80px) calc(0% + 80px)'},
|
||||
{at: 1.25, expect: 'calc(0% + 100px) calc(0% + 100px), calc(0% + 100px) calc(0% + 100px), calc(0% + 100px) calc(0% + 100px), calc(0% + 100px) calc(0% + 100px)'},
|
||||
]);
|
||||
|
||||
// Test equal number of position values as background images.
|
||||
|
|
|
@ -12,7 +12,11 @@
|
|||
</head>
|
||||
<body>
|
||||
<script>
|
||||
// <bg-layer> does not allow a <color>.
|
||||
test_invalid_value("background", "red, green");
|
||||
|
||||
// A `/ <bg-size>` is only allowed directly after a <bg-position>.
|
||||
test_invalid_value("background", "black 0 url(https://example.invalid/) / cover");
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -0,0 +1,37 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Backgrounds and Borders Module Level 3: getComputedStyle().borderRadius</title>
|
||||
<link rel="help" href="https://drafts.csswg.org/css-backgrounds/#border-radius">
|
||||
<meta name="assert" content="Computed value has computed length-percentage values.">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/css/support/computed-testcommon.js"></script>
|
||||
<style>
|
||||
#target {
|
||||
font-size: 40px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div id="target"></div>
|
||||
<script>
|
||||
test_computed_value("border-radius", "1px");
|
||||
test_computed_value("border-radius", "1px 2% 3px 4%");
|
||||
test_computed_value("border-radius", "5em / 1px 2% 3px 4%", "200px / 1px 2% 3px 4%");
|
||||
test_computed_value("border-radius", "1px 2% 3px 4% / 5em", "1px 2% 3px 4% / 200px");
|
||||
|
||||
test_computed_value("border-radius", "1px 1px 1px 2% / 1px 2% 1px 2%", "1px 1px 1px 2% / 1px 2%");
|
||||
test_computed_value("border-radius", "1px 1px 1px 1px / 1px 1px 2% 1px", "1px / 1px 1px 2%");
|
||||
test_computed_value("border-radius", "1px 1px 2% 2%");
|
||||
test_computed_value("border-radius", "1px 2% 1px 1px");
|
||||
test_computed_value("border-radius", "1px 2% 2% 2% / 1px 2% 3px 2%", "1px 2% 2% / 1px 2% 3px");
|
||||
|
||||
test_computed_value("border-top-left-radius", "calc(-0.5em + 10px)", "0px");
|
||||
test_computed_value("border-top-right-radius", "20%");
|
||||
test_computed_value("border-bottom-right-radius", "calc(0.5em + 10px) 40%", "30px 40%");
|
||||
test_computed_value("border-bottom-left-radius", "50% 60px");
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -3,7 +3,6 @@
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Backgrounds and Borders Module Level 3: parsing border-radius with invalid values</title>
|
||||
<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-backgrounds/#border-radius">
|
||||
<meta name="assert" content="border-radius supports only the grammar '<length-percentage>{1,4} [ / <length-percentage>{1,4} ]?'.">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
|
@ -12,12 +11,14 @@
|
|||
</head>
|
||||
<body>
|
||||
<script>
|
||||
test_invalid_value("border-radius", "auto");
|
||||
test_invalid_value("border-radius", "none");
|
||||
test_invalid_value("border-radius", "1px 2px 3px 4px 5px");
|
||||
test_invalid_value("border-radius", "-1px");
|
||||
test_invalid_value("border-radius", "1px -2px");
|
||||
test_invalid_value("border-radius", "1em /");
|
||||
test_invalid_value("border-radius", "1px / 2px / 3px");
|
||||
test_invalid_value("border-radius", "4 / 5");
|
||||
|
||||
test_invalid_value("border-radius", "5em 1px 5em 2% 5em 3px 5em 4%");
|
||||
test_invalid_value("border-radius", "1px 5em 2% 5em 3px 5em 4% 5em");
|
||||
|
|
|
@ -3,7 +3,6 @@
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Backgrounds and Borders Module Level 3: parsing border-radius with valid values</title>
|
||||
<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-backgrounds/#border-radius">
|
||||
<meta name="assert" content="border-radius supports the full grammar '<length-percentage>{1,4} [ / <length-percentage>{1,4} ]?'.">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
|
@ -14,8 +13,14 @@
|
|||
<script>
|
||||
test_valid_value("border-radius", "1px");
|
||||
test_valid_value("border-radius", "1px 2% 3px 4%");
|
||||
test_valid_value("border-radius", "5em / 1px 2% 3px 4%"); // Blink and Webkit fail by serializing as "5em 1px 5em 2% 5em 3px 5em 4%"
|
||||
test_valid_value("border-radius", "1px 2% 3px 4% / 5em"); // Blink and Webkit fail by serializing as "1px 5em 2% 5em 3px 5em 4% 5em"
|
||||
test_valid_value("border-radius", "5em / 1px 2% 3px 4%");
|
||||
test_valid_value("border-radius", "1px 2% 3px 4% / 5em");
|
||||
|
||||
test_valid_value("border-radius", "1px 1px 1px 2% / 1px 2% 1px 2%", "1px 1px 1px 2% / 1px 2%");
|
||||
test_valid_value("border-radius", "1px 1px 1px 1px / 1px 1px 2% 1px", "1px / 1px 1px 2%");
|
||||
test_valid_value("border-radius", "1px 1px 2% 2%");
|
||||
test_valid_value("border-radius", "1px 2% 1px 1px");
|
||||
test_valid_value("border-radius", "1px 2% 2% 2% / 1px 2% 3px 2%", "1px 2% 2% / 1px 2% 3px");
|
||||
|
||||
test_valid_value("border-top-left-radius", "10px");
|
||||
test_valid_value("border-top-right-radius", "20%");
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
spec: https://drafts.csswg.org/css-conditional/
|
||||
suggested_reviewers:
|
||||
- arkhi
|
||||
- dbaron
|
||||
- frivoal
|
|
@ -0,0 +1,32 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
|
||||
<title>CSS Conditional Test: Disjunction token `or` should not immediately precede its following opening paren.</title>
|
||||
|
||||
<link rel="author" title="Fabien Basmaison" href="https://arkhi.org/">
|
||||
<link rel="help" href="https://www.w3.org/TR/css3-conditional/#at-supports">
|
||||
<link rel="match" href="at-supports-001-ref.html">
|
||||
|
||||
<meta name="flags" content="invalid">
|
||||
<meta name="assert" content="This tests that the `or` token requires at least one whitespace on its right hand. A string followed immediately by an opening paren is reserved for the functional notation syntax.">
|
||||
|
||||
<style>
|
||||
div {
|
||||
background-color: green;
|
||||
height: 100px;
|
||||
width: 100px;
|
||||
}
|
||||
|
||||
@supports ( ( background-color: red ) or( background-color: green ) ) {
|
||||
div { background-color: red; }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<p>Test passes if there is a <strong>filled green square</strong> and <strong>no red</strong>.</p>
|
||||
<div></div>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,261 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Fonts Module Level 4: getComputedStyle().font</title>
|
||||
<link rel="help" href="https://drafts.csswg.org/css-fonts-4/#font-prop">
|
||||
<meta name="assert" content="font computed value round-trips.">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/css/support/computed-testcommon.js"></script>
|
||||
<style>
|
||||
#container {
|
||||
font-weight: 800;
|
||||
font-size: 40px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div id="container">
|
||||
<div id="target"></div>
|
||||
</div>
|
||||
<script>
|
||||
'use strict';
|
||||
|
||||
const initial_style = 'normal';
|
||||
const initial_variant = 'normal';
|
||||
const initial_weight = 'normal';
|
||||
const initial_stretch = 'normal';
|
||||
const initial_line_height = 'normal';
|
||||
|
||||
// Firefox and Edge 18 serialize these as supplied.
|
||||
// Blink and Safari have implementation-dependent or platform-dependent serializations.
|
||||
function test_system_font(keyword) {
|
||||
test(() => {
|
||||
const target = document.getElementById('target');
|
||||
const previousValue = 'italic xx-large/0px fantasy';
|
||||
target.style.font = previousValue;
|
||||
target.style.font = keyword;
|
||||
const readValue = getComputedStyle(target).font;
|
||||
assert_not_equals(readValue, '', 'font should be set');
|
||||
assert_not_equals(readValue, previousValue, 'font should be updated');
|
||||
target.style.font = previousValue;
|
||||
target.style.font = readValue;
|
||||
assert_equals(getComputedStyle(target).font, readValue, "serialization should round-trip");
|
||||
}, keyword + ' should be a supported system font.');
|
||||
}
|
||||
|
||||
test_system_font('caption');
|
||||
test_system_font('icon');
|
||||
test_system_font('menu');
|
||||
test_system_font('message-box');
|
||||
test_system_font('small-caption');
|
||||
test_system_font('status-bar');
|
||||
|
||||
// a value other than normal
|
||||
const generate_style = () => 'italic';
|
||||
|
||||
// value other than normal
|
||||
const generate_variant = () => 'small-caps';
|
||||
|
||||
// values other than normal
|
||||
const generate_weight = (() => {
|
||||
const alternatives = [
|
||||
'bold',
|
||||
'bolder',
|
||||
'lighter',
|
||||
'100',
|
||||
'900'
|
||||
];
|
||||
let counter = 0;
|
||||
return () => alternatives[counter++ % alternatives.length];
|
||||
})();
|
||||
|
||||
const compute_weight = (() => {
|
||||
const cache = {}
|
||||
return (weight) => {
|
||||
if (!(weight in cache)) {
|
||||
const weight_reference = document.createElement('div');
|
||||
document.getElementById('container').appendChild(weight_reference);
|
||||
weight_reference.style.fontWeight = weight;
|
||||
cache[weight] = getComputedStyle(weight_reference).fontWeight;
|
||||
weight_reference.remove();
|
||||
}
|
||||
return cache[weight];
|
||||
}
|
||||
})();
|
||||
|
||||
// values other than normal
|
||||
const generate_stretch = (() => {
|
||||
const alternatives = [
|
||||
'ultra-condensed',
|
||||
'extra-condensed',
|
||||
'condensed',
|
||||
'semi-condensed',
|
||||
'semi-expanded',
|
||||
'expanded',
|
||||
'extra-expanded',
|
||||
'ultra-expanded'
|
||||
];
|
||||
let counter = 0;
|
||||
return () => alternatives[counter++ % alternatives.length];
|
||||
})();
|
||||
|
||||
const generate_size = (() => {
|
||||
const alternatives = [
|
||||
// <absolute-size>
|
||||
'xx-small',
|
||||
'medium',
|
||||
'xx-large',
|
||||
|
||||
// <relative-size>
|
||||
'larger',
|
||||
'smaller',
|
||||
|
||||
// <length-percentage>
|
||||
'10px',
|
||||
'20%',
|
||||
'calc(30% - 40px)',
|
||||
];
|
||||
let counter = 0;
|
||||
return () => alternatives[counter++ % alternatives.length];
|
||||
})();
|
||||
|
||||
const generate_line_height = (() => {
|
||||
const alternatives = [
|
||||
null,
|
||||
'normal',
|
||||
'1.2',
|
||||
'calc(120% + 1.2em)'
|
||||
];
|
||||
let counter = 0;
|
||||
return () => alternatives[counter++ % alternatives.length];
|
||||
})();
|
||||
|
||||
const generate_family = (() => {
|
||||
const alternatives = [
|
||||
'serif',
|
||||
'sans-serif',
|
||||
'cursive',
|
||||
'fantasy',
|
||||
'monospace',
|
||||
'Menu',
|
||||
'"Non-Generic Example Family Name"'
|
||||
];
|
||||
let counter = 0;
|
||||
return () => alternatives[counter++ % alternatives.length];
|
||||
})();
|
||||
|
||||
function test_specific(prefix) {
|
||||
const reference = document.createElement('div');
|
||||
document.getElementById('container').appendChild(reference);
|
||||
|
||||
let parts = [];
|
||||
let canonical = [];
|
||||
let style = null;
|
||||
let variant = null;
|
||||
let weight = null;
|
||||
let stretch = null;
|
||||
for (let entry of prefix) {
|
||||
if (entry === 'style') {
|
||||
style = generate_style();
|
||||
parts.push(style);
|
||||
} else if (entry === 'variant') {
|
||||
variant = generate_variant();
|
||||
parts.push(variant);
|
||||
} else if (entry === 'weight') {
|
||||
weight = generate_weight();
|
||||
parts.push(weight);
|
||||
} else if (entry === 'stretch') {
|
||||
stretch = generate_stretch();
|
||||
parts.push(stretch);
|
||||
} else {
|
||||
// normal
|
||||
parts.push('normal');
|
||||
}
|
||||
}
|
||||
|
||||
if (style) {
|
||||
canonical.push(style);
|
||||
reference.style.fontStyle = style;
|
||||
} else {
|
||||
canonical.push(initial_style);
|
||||
}
|
||||
|
||||
if (variant) {
|
||||
canonical.push(variant);
|
||||
reference.style.fontVariant = style;
|
||||
} else {
|
||||
canonical.push(initial_variant);
|
||||
}
|
||||
if (weight) {
|
||||
canonical.push(compute_weight(weight));
|
||||
reference.style.fontWeight = style;
|
||||
} else {
|
||||
canonical.push(compute_weight(initial_weight));
|
||||
}
|
||||
if (stretch) {
|
||||
canonical.push(stretch);
|
||||
reference.style.fontStretch = style;
|
||||
} else {
|
||||
canonical.push(initial_stretch);
|
||||
}
|
||||
|
||||
const size = generate_size();
|
||||
reference.style.fontSize = size;
|
||||
const line_height = generate_line_height();
|
||||
if (line_height) {
|
||||
parts.push(size + '/' + line_height);
|
||||
reference.style.lineHeight = line_height;
|
||||
} else {
|
||||
parts.push(size);
|
||||
}
|
||||
|
||||
const family = generate_family();
|
||||
parts.push(family);
|
||||
reference.style.fontFamily = family;
|
||||
|
||||
canonical.push(getComputedStyle(reference).fontSize + '/' + getComputedStyle(reference).lineHeight);
|
||||
canonical.push(family);
|
||||
|
||||
reference.remove();
|
||||
|
||||
// Implementations differ on adjacent space when serializing '/'
|
||||
// https://github.com/w3c/csswg-drafts/issues/4282
|
||||
const expected = canonical.join(' ');
|
||||
test_computed_value('font', parts.join(' '), [expected, expected.replace('/', ' / ')]);
|
||||
}
|
||||
|
||||
// Font style, variant, weight and stretch may appear in any order.
|
||||
// Any or all may be omitted. Each accepts the keyword 'normal'.
|
||||
// We generate every permutation of these four properties, treating
|
||||
// the cases of a property value being omitted or being explicitly
|
||||
// 'normal' as being distinct permutations from when the property
|
||||
// has a value other than 'normal'.
|
||||
function test_various(prefix) {
|
||||
test_specific(prefix);
|
||||
if (prefix.length === 4) {
|
||||
// Font style, variant, weight and stretch may not appear
|
||||
// more than once.
|
||||
return;
|
||||
}
|
||||
|
||||
const alternatives = [
|
||||
'normal',
|
||||
'style',
|
||||
'variant',
|
||||
'weight',
|
||||
'stretch'
|
||||
];
|
||||
for (let alternative of alternatives) {
|
||||
// Since this is called recursively, check prefix for existing
|
||||
// alternatives, otherwise we may have two styles or two variants, etc.
|
||||
if (alternative === 'normal' || !prefix.includes(alternative))
|
||||
test_various(prefix.concat(alternative));
|
||||
}
|
||||
}
|
||||
|
||||
test_various([]);
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -39,12 +39,14 @@
|
|||
document.fonts.ready.then(() => {
|
||||
item1.setAttribute("data-offset-x", "50");
|
||||
item2.setAttribute("data-offset-x", "325");
|
||||
checkLayout('#grid');
|
||||
checkLayout('#grid', false);
|
||||
|
||||
item2.style.fontSize = "30px";
|
||||
|
||||
item1.setAttribute("data-offset-x", "50");
|
||||
item2.setAttribute("data-offset-x", "275");
|
||||
checkLayout('#grid');
|
||||
checkLayout('#grid', false);
|
||||
|
||||
done();
|
||||
});
|
||||
</script>
|
||||
|
|
|
@ -38,12 +38,14 @@
|
|||
document.fonts.ready.then(() => {
|
||||
item1.setAttribute("data-offset-x", "80");
|
||||
item2.setAttribute("data-offset-x", "340");
|
||||
checkLayout('#grid');
|
||||
checkLayout('#grid', false);
|
||||
|
||||
grid.style.fontSize = "25px";
|
||||
|
||||
item1.setAttribute("data-offset-x", "50");
|
||||
item2.setAttribute("data-offset-x", "325");
|
||||
checkLayout('#grid');
|
||||
checkLayout('#grid', false);
|
||||
|
||||
done();
|
||||
});
|
||||
</script>
|
||||
|
|
|
@ -0,0 +1,44 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Inheritance replaces existing value of counter properties</title>
|
||||
<link rel="help" href="https://drafts.csswg.org/css-lists/#property-index">
|
||||
<meta name="assert" content="Inheritance replaces existing value of counter properties.">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<style>
|
||||
#container {
|
||||
counter-reset: first 1;
|
||||
counter-increment: second 2;
|
||||
counter-set: third 3;
|
||||
}
|
||||
.target {
|
||||
counter-reset: fourth 4;
|
||||
counter-increment: fifth 5;
|
||||
counter-set: sixth 6;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div id="container">
|
||||
<div id="target"></div>
|
||||
</div>
|
||||
<script>
|
||||
'use strict';
|
||||
const container = document.getElementById('container');
|
||||
|
||||
// 'counter-set' can be added.
|
||||
for (let property of ['counter-reset', 'counter-increment']) {
|
||||
test(() => {
|
||||
const target = document.createElement('div');
|
||||
target.classList += 'target';
|
||||
container.appendChild(target);
|
||||
target.style[property] = 'inherit';
|
||||
assert_equals(getComputedStyle(target)[property], getComputedStyle(container)[property]);
|
||||
}, 'Inheritance of ' + property + ' replaces existing value');
|
||||
}
|
||||
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -29,7 +29,7 @@
|
|||
</style>
|
||||
|
||||
<article>
|
||||
<div class="container" style="border-bottom: none; height: 200px;">
|
||||
<div class="container" style="border-bottom: none; height: 200px; margin-top: 1em;">
|
||||
<div class="block">block1</div>
|
||||
</div>
|
||||
</article>
|
||||
|
|
|
@ -18,6 +18,7 @@
|
|||
height: 250px;
|
||||
background-color: pink;
|
||||
border: 20px solid purple;
|
||||
margin-top: 1em;
|
||||
}
|
||||
div.block {
|
||||
width: 100px;
|
||||
|
|
|
@ -0,0 +1,37 @@
|
|||
<!DOCTYPE html>
|
||||
<html class="reftest-wait">
|
||||
<link rel="help" href="https://drafts.css-houdini.org/css-paint-api/">
|
||||
<link rel="match" href="parse-input-arguments-ref.html">
|
||||
<style>
|
||||
.container {
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
}
|
||||
|
||||
#canvas-geometry {
|
||||
--foo:100;
|
||||
background-image: paint(geometry);
|
||||
}
|
||||
</style>
|
||||
<script src="/common/reftest-wait.js"></script>
|
||||
<script src="/common/worklet-reftest.js"></script>
|
||||
<body>
|
||||
<div id="canvas-geometry" class="container"></div>
|
||||
|
||||
<script id="code" type="text/worklet">
|
||||
registerPaint('geometry', class {
|
||||
static get inputProperties() { return ['--foo']; }
|
||||
paint(ctx, geom, properties) {
|
||||
let fooValue = parseFloat(properties.get('--foo').toString());
|
||||
ctx.strokeStyle = 'green';
|
||||
ctx.lineWidth = 4;
|
||||
ctx.strokeRect(0, 0, fooValue, fooValue);
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
<script>
|
||||
importWorkletAndTerminateTestAfterAsyncPaint(CSS.paintWorklet, document.getElementById('code').textContent);
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,20 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>initial-letter width test</title>
|
||||
<style>
|
||||
span {
|
||||
position: absolute;
|
||||
color: transparent;
|
||||
}
|
||||
#control {
|
||||
background-color: green;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<p>There should be no red</p>
|
||||
<span id="control">Test.</span>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,38 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>initial-letter width test</title>
|
||||
<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=362880">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-pseudo-4/#first-letter-styling">
|
||||
<link rel="match" href="first-letter-width-ref.html">
|
||||
<meta name="assert" content="The width of an element with first-letter styling should render correctly.">
|
||||
<style>
|
||||
div {
|
||||
position: relative;
|
||||
}
|
||||
span {
|
||||
position: absolute;
|
||||
color: transparent;
|
||||
}
|
||||
#control {
|
||||
background-color: green;
|
||||
}
|
||||
#test {
|
||||
background-color: red;
|
||||
line-height: 1;
|
||||
top: 1px;
|
||||
}
|
||||
#test::first-letter {
|
||||
text-transform: uppercase;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<p>There should be no red</p>
|
||||
<div>
|
||||
<span id="test">Test</span>
|
||||
<span id="control">Test.</span>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,14 @@
|
|||
<!DOCTYPE html>
|
||||
<link rel="help" href="http://crbug.com/1001083">
|
||||
<link rel="match" href="../reference/ref-filled-green-100px-square-only.html">
|
||||
<p>Test passes if there is a filled green square.</p>
|
||||
<table style="width: 100px; height: 100px; background: green;">
|
||||
<tr>
|
||||
<td style="height: 20px;"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="height: 100%;">
|
||||
<img style="width: 100%; height: 100%; visibility: hidden;" />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
|
@ -3,7 +3,7 @@
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Text Decoration Test: getComputedStyle().textDecoration</title>
|
||||
<link rel="help" href="https://drafts.csswg.org/css-text-decor-4/#text-decoration-line-property">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-text-decor-3/#text-decoration-property">
|
||||
<meta name="assert" content="text-decoration computed value is as specified.">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
|
@ -19,14 +19,20 @@
|
|||
<script>
|
||||
'use strict';
|
||||
const currentColor = "rgb(0, 0, 255)";
|
||||
test_computed_value("text-decoration", "none", "none solid " + currentColor);
|
||||
test_computed_value("text-decoration", "line-through", "line-through solid " + currentColor);
|
||||
test_computed_value("text-decoration", "solid", "none solid " + currentColor);
|
||||
test_computed_value("text-decoration", "currentcolor", "none solid " + currentColor);
|
||||
test_computed_value("text-decoration", "none", currentColor);
|
||||
test_computed_value("text-decoration", "line-through", "line-through " + currentColor);
|
||||
test_computed_value("text-decoration", "solid", currentColor);
|
||||
test_computed_value("text-decoration", "currentcolor", currentColor);
|
||||
|
||||
test_computed_value("text-decoration", "double overline underline", "underline overline double " + currentColor);
|
||||
test_computed_value("text-decoration", "underline overline line-through red", "underline overline line-through solid rgb(255, 0, 0)");
|
||||
test_computed_value("text-decoration", "rgba(10, 20, 30, 0.4) dotted", "none dotted rgba(10, 20, 30, 0.4)");
|
||||
test_computed_value("text-decoration", "underline overline line-through red", "underline overline line-through rgb(255, 0, 0)");
|
||||
test_computed_value("text-decoration", "rgba(10, 20, 30, 0.4) dotted", "dotted rgba(10, 20, 30, 0.4)");
|
||||
|
||||
test_computed_value("text-decoration", "underline dashed rgb(0, 255, 0)");
|
||||
|
||||
// Add text-decoration-thickness in [css-text-decor-4].
|
||||
test_computed_value("text-decoration", "auto", currentColor);
|
||||
test_computed_value("text-decoration", "from-font", currentColor + " from-font");
|
||||
test_computed_value("text-decoration", "10px", currentColor + " 10px");
|
||||
test_computed_value("text-decoration", "underline red from-font", "underline rgb(255, 0, 0) from-font");
|
||||
</script>
|
||||
|
|
|
@ -8,10 +8,11 @@
|
|||
<script>
|
||||
test(() => {
|
||||
const style = getComputedStyle(document.querySelector('div'));
|
||||
// Chrome serializes as "underline solid rgb(0, 0, 0)" while Edge, Firefox an
|
||||
// Safari use "underline", which Chrome used to do as well. The spec should
|
||||
// probably require "underline":
|
||||
// https://github.com/w3c/csswg-drafts/issues/1564
|
||||
assert_equals(style.getPropertyValue("text-decoration"), "underline");
|
||||
const currentColor = "rgb(0, 0, 0)"; // The default color value is black.
|
||||
// The default computed value of text-decoration-color is depended on the
|
||||
// current color value, and it is an rgb() value, instead of `currentcolor`.
|
||||
// This is an ambiguous part in the spec, anyway.
|
||||
assert_equals(style.getPropertyValue("text-decoration"),
|
||||
"underline " + currentColor);
|
||||
});
|
||||
</script>
|
||||
|
|
|
@ -0,0 +1,40 @@
|
|||
<!DOCTYPE html>
|
||||
<title>CSS Text Test: A combination of `overflow-wrap: break-word` and `white-space` should not crash</title>
|
||||
<link rel="help" href="https://crbug.com/1001359">
|
||||
<link rel="author" title="Koji Ishii" href="mailto:kojii@chromium.org">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<style>
|
||||
.container {
|
||||
font-family: sans-serif;
|
||||
font-size: 14px;
|
||||
width: 680px;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
|
||||
spacer {
|
||||
display: inline-block;
|
||||
width: 620px;
|
||||
}
|
||||
|
||||
pre-wrap {
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
|
||||
nowrap {
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
inline-block {
|
||||
display: inline-block;
|
||||
}
|
||||
</style>
|
||||
<body>
|
||||
<div class="container">
|
||||
<spacer></spacer>
|
||||
<nowrap><span><pre-wrap><inline-block></inline-block></pre-wrap></span>123456</nowrap>987654321
|
||||
</div>
|
||||
<script>
|
||||
test(() => { });
|
||||
</script>
|
||||
</body>
|
|
@ -1,33 +0,0 @@
|
|||
<!doctype html>
|
||||
<link rel="help" href="https://drafts.csswg.org/css-values-4/#comp-func">
|
||||
<link rel="author" title="Xiaocheng Hu" href="mailto:xiaochengh@chromium.org">
|
||||
<link rel="match" href="../reference/ref-filled-green-100px-square-only.html">
|
||||
<title>Tests interpolation between CSS comparison functions</title>
|
||||
<style>
|
||||
@keyframes anim {
|
||||
from {
|
||||
width: min(50px, 30%);
|
||||
height: min(75%, 160px);
|
||||
}
|
||||
to {
|
||||
width: max(75%, 100px);
|
||||
height: max(50px, 20%);
|
||||
}
|
||||
}
|
||||
|
||||
.test {
|
||||
background-color: green;
|
||||
animation: anim 2000000s linear;
|
||||
animation-delay: -1000000s;
|
||||
}
|
||||
|
||||
.container {
|
||||
position: absolute;
|
||||
width: 200px;
|
||||
height: 200px;
|
||||
}
|
||||
</style>
|
||||
<p>Test passes if there is a filled green square.</p>
|
||||
<div class="container">
|
||||
<div class="test"></div>
|
||||
</div>
|
|
@ -91,7 +91,8 @@
|
|||
{ property: "stroke-opacity", valuesToTest:["0.221"], default: "1" },
|
||||
{ property: "stroke-width", valuesToTest:["88%", "31px"], default: "1px" },
|
||||
{ property: "text-anchor", valuesToTest:["start", "middle", "end"], default: "start" },
|
||||
{ property: "text-decoration", valuesToTest:["none", "underline", "overline", "line-through"], default: "none" },
|
||||
{ property: "text-decoration-line", valuesToTest:["none", "underline", "overline", "line-through"], default: "none" },
|
||||
{ property: "text-decoration-style", valuesToTest:["solid", "double", "dotted", "dashed", "wavy"], default: "solid" },
|
||||
{ property: "visibility", valuesToTest:["visible", "hidden", "collapse"], default: "visible" },
|
||||
{ property: "word-spacing", valuesToTest:["31px"], default: "0px" },
|
||||
{ property: "writing-mode", valuesToTest:["lr-tb", "rl-tb"], default: "lr-tb" },
|
||||
|
|
|
@ -4,25 +4,37 @@
|
|||
<meta charset="utf-8">
|
||||
<title>CSSOM - CSSStyleSheet interface</title>
|
||||
<link rel="help" href="https://drafts.csswg.org/cssom/#the-cssstylesheet-interface">
|
||||
<link rel="help" href="https://drafts.csswg.org/cssom/#legacy-css-style-sheet-members">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<style id="my-stylesheet">
|
||||
body { width: 50%; }
|
||||
#foo { height: 100px; }
|
||||
</style>
|
||||
<style id="empty-stylesheet"></style>
|
||||
|
||||
<script>
|
||||
test(function () {
|
||||
var styleSheet = document.styleSheets[0];
|
||||
var styleSheet, emptyStyleSheet;
|
||||
|
||||
setup(function() {
|
||||
styleSheet = document.styleSheets[0];
|
||||
styleSheet.cssRules[0].randomProperty = 1;
|
||||
styleSheet.cssRules[1].randomProperty = 2;
|
||||
emptyStyleSheet = document.styleSheets[1];
|
||||
});
|
||||
|
||||
test(function() {
|
||||
assert_equals(styleSheet, document.getElementById("my-stylesheet").sheet, "CSSStyleSheet and LinkStyle's sheet attribute");
|
||||
assert_equals(styleSheet.cssRules.length, 2, "CSSStyleSheet cssRules attribute");
|
||||
assert_equals(styleSheet.cssRules[0].cssText, "body { width: 50%; }", "CSSStyleSheet cssRules attribute");
|
||||
assert_equals(styleSheet.cssRules[1].cssText, "#foo { height: 100px; }", "CSSStyleSheet cssRules attribute");
|
||||
assert_equals(styleSheet.cssRules[2], undefined, "CSSStyleSheet cssRules attribute");
|
||||
|
||||
assert_equals(emptyStyleSheet, document.getElementById("empty-stylesheet").sheet, "CSSStyleSheet and LinkStyle's sheet attribute");
|
||||
assert_equals(emptyStyleSheet.cssRules.length, 0, "CSSStyleSheet cssRules attribute");
|
||||
}, "preconditions");
|
||||
|
||||
test(function() {
|
||||
styleSheet.insertRule("#bar { margin: 10px; }", 1);
|
||||
assert_equals(styleSheet.cssRules.length, 3, "CSSStyleSheet cssRules attribute after insertRule function");
|
||||
assert_equals(styleSheet.cssRules[0].cssText, "body { width: 50%; }", "CSSStyleSheet cssRules attribute");
|
||||
|
@ -30,7 +42,19 @@
|
|||
assert_equals(styleSheet.cssRules[2].cssText, "#foo { height: 100px; }", "CSSStyleSheet cssRules attribute after insertRule function");
|
||||
assert_equals(styleSheet.cssRules[0].randomProperty, 1, "[SameObject] cssRules attribute after insertRule function");
|
||||
assert_equals(styleSheet.cssRules[2].randomProperty, 2, "[SameObject] cssRules attribute after insertRule function");
|
||||
}, 'insertRule with #bar selector');
|
||||
|
||||
test(function() {
|
||||
assert_throws(new TypeError, function() { styleSheet.insertRule() });
|
||||
}, 'insertRule with no argument throws');
|
||||
|
||||
test(function() {
|
||||
assert_throws("IndexSizeError", function() {
|
||||
styleSheet.insertRule("#bar { margin: 10px; }", styleSheet.cssRules.length + 1)
|
||||
});
|
||||
}, 'insertRule with index greater than length throws');
|
||||
|
||||
test(function() {
|
||||
styleSheet.deleteRule(1);
|
||||
assert_equals(styleSheet.cssRules.length, 2, "CSSStyleSheet cssRules attribute after deleteRule function");
|
||||
assert_equals(styleSheet.cssRules[0].cssText, "body { width: 50%; }", "CSSStyleSheet cssRules attribute after deleteRule function");
|
||||
|
@ -38,19 +62,39 @@
|
|||
assert_equals(styleSheet.cssRules[2], undefined, "CSSStyleSheet cssRules attribute after deleteRule function");
|
||||
assert_equals(styleSheet.cssRules[0].randomProperty, 1, "[SameObject] cssRules attribute after deleteRule function");
|
||||
assert_equals(styleSheet.cssRules[1].randomProperty, 2, "[SameObject] cssRules attribute after deleteRule function");
|
||||
}, 'deleteRule(1)');
|
||||
|
||||
test(function() {
|
||||
assert_throws(new TypeError, function() { styleSheet.deleteRule() });
|
||||
}, 'deleteRule with no argument throws');
|
||||
|
||||
test(function() {
|
||||
assert_throws("IndexSizeError", function() { emptyStyleSheet.deleteRule(0) });
|
||||
}, 'deleteRule on empty style sheet throws');
|
||||
|
||||
test(function() {
|
||||
styleSheet.removeRule();
|
||||
assert_equals(styleSheet.cssRules.length, 1, "CSSStyleSheet cssRules attribute after removeRule function");
|
||||
assert_equals(styleSheet.cssRules[0].cssText, "#foo { height: 100px; }", "CSSStyleSheet cssRules attribute after removeRule function");
|
||||
}, 'removeRule with no argument removes first rule');
|
||||
|
||||
test(function() {
|
||||
assert_throws("IndexSizeError", function() { emptyStyleSheet.removeRule(0) });
|
||||
}, 'removeRule on empty style sheet throws');
|
||||
|
||||
test(function() {
|
||||
assert_equals(styleSheet.addRule("@media all", "#foo { color: red }"), -1);
|
||||
assert_equals(styleSheet.cssRules.length, 2, "CSSStyleSheet cssRules attribute after addRule function");
|
||||
assert_true(styleSheet.cssRules[1] instanceof CSSMediaRule, "CSSStyleSheet addRule does some silly string concatenation");
|
||||
}, 'addRule with @media rule');
|
||||
|
||||
test(function() {
|
||||
styleSheet.removeRule(1);
|
||||
assert_equals(styleSheet.cssRules.length, 1, "CSSStyleSheet cssRules attribute after removeRule function with index");
|
||||
assert_equals(styleSheet.cssRules[0].cssText, "#foo { height: 100px; }", "CSSStyleSheet cssRules attribute after deleteRule function with index");
|
||||
}, 'removeRule(1)');
|
||||
|
||||
test(function() {
|
||||
assert_equals(styleSheet.addRule("#foo", "color: red"), -1);
|
||||
assert_equals(styleSheet.cssRules.length, 2, "CSSStyleSheet cssRules attribute after addRule function with simple selector");
|
||||
assert_equals(styleSheet.cssRules[1].cssText, "#foo { color: red; }", "CSSStyleSheet cssRules attribute after addRule function without index appends to the end");
|
||||
|
@ -58,13 +102,31 @@
|
|||
assert_equals(styleSheet.addRule("#foo", "color: blue", 0), -1);
|
||||
assert_equals(styleSheet.cssRules.length, 3, "CSSStyleSheet cssRules attribute after addRule function with simple selector with index");
|
||||
assert_equals(styleSheet.cssRules[0].cssText, "#foo { color: blue; }", "addRule function with index performs an insertion");
|
||||
}, 'addRule with #foo selectors');
|
||||
|
||||
test(function() {
|
||||
assert_equals(styleSheet.addRule(), -1);
|
||||
assert_equals(styleSheet.cssRules.length, 4, "CSSStyleSheet cssRules attribute after addRule function without arguments");
|
||||
assert_equals(styleSheet.cssRules[3].cssText, "undefined { }", "addRule arguments default to undefined");
|
||||
}, 'addRule with no argument adds "undefined" selector');
|
||||
|
||||
assert_equals(styleSheet.cssRules, styleSheet.rules, "CSSStyleSheet.rules returns the same object as CSSStyleSheet.cssRules");
|
||||
test(function() {
|
||||
assert_throws("IndexSizeError", function() {
|
||||
styleSheet.addRule("#foo", "color: red", styleSheet.cssRules.length + 1);
|
||||
});
|
||||
}, 'addRule with index greater than length throws');
|
||||
|
||||
test(function() {
|
||||
assert_equals(styleSheet.cssRules, styleSheet.rules);
|
||||
}, "cssRules and rules are the same object");
|
||||
|
||||
test(function() {
|
||||
assert_equals(styleSheet.cssRules, styleSheet.cssRules);
|
||||
}, "cssRules returns the same object twice");
|
||||
|
||||
test(function() {
|
||||
assert_equals(styleSheet.rules, styleSheet.rules);
|
||||
}, "rules returns the same object twice");
|
||||
</script>
|
||||
</head>
|
||||
</html>
|
||||
|
|
|
@ -0,0 +1,37 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Motion Path Module Level 1: getComputedStyle().offsetAnchor</title>
|
||||
<link rel="help" href="https://drafts.fxtf.org/motion-1/#offset-anchor-property">
|
||||
<meta name="assert" content="offset-anchor is 'auto' or a computed position.">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/css/support/computed-testcommon.js"></script>
|
||||
<style>
|
||||
#target {
|
||||
font-size: 40px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div id="target"></div>
|
||||
<script>
|
||||
test_computed_value("offset-anchor", "auto");
|
||||
|
||||
test_computed_value("offset-anchor", "left bottom", "0% 100%");
|
||||
test_computed_value("offset-anchor", "center center", "50% 50%");
|
||||
test_computed_value("offset-anchor", "right center", "100% 50%");
|
||||
test_computed_value("offset-anchor", "center top", "50% 0%");
|
||||
test_computed_value("offset-anchor", "center bottom", "50% 100%");
|
||||
test_computed_value("offset-anchor", "calc(20% - 5em) center", "calc(20% - 200px) 50%");
|
||||
test_computed_value("offset-anchor", "right 4em", "100% 160px");
|
||||
test_computed_value("offset-anchor", "10px 20%");
|
||||
test_computed_value("offset-anchor", "left -10px top -20%", "-10px -20%");
|
||||
test_computed_value("offset-anchor", "right 10% bottom 20em", "90% calc(100% - 800px)");
|
||||
test_computed_value("offset-anchor", "top 10px right -20%", "120% 10px");
|
||||
test_computed_value("offset-anchor", "left 10% bottom 20em", "10% calc(100% - 800px)");
|
||||
test_computed_value('offset-anchor', 'calc(10px - 0.5em) calc(10px + 0.5em)', '-10px 30px');
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,29 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Motion Path Module Level 1: getComputedStyle().offsetDistance</title>
|
||||
<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org">
|
||||
<link rel="help" href="https://drafts.fxtf.org/motion-1/#offset-distance-property">
|
||||
<meta name="assert" content="offset-distance is a computed '<length-percentage>'.">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/css/support/computed-testcommon.js"></script>
|
||||
<style>
|
||||
#target {
|
||||
font-size: 40px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div id="target"></div>
|
||||
<script>
|
||||
test_computed_value("offset-distance", "10px");
|
||||
test_computed_value("offset-distance", "20%");
|
||||
test_computed_value("offset-distance", "calc(40% - 30px)");
|
||||
test_computed_value("offset-distance", "0", "0px");
|
||||
test_computed_value('offset-distance', 'calc(10px - 0.5em)', '-10px');
|
||||
test_computed_value('offset-distance', 'calc(10px + 0.5em)', '30px');
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,35 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Motion Path Module Level 1: getComputedStyle().offsetPath</title>
|
||||
<link rel="help" href="https://drafts.fxtf.org/motion-1/#offset-path-property">
|
||||
<meta name="assert" content="offset-path has absolute path commands.">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/css/support/computed-testcommon.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="target"></div>
|
||||
<script>
|
||||
test_computed_value("offset-path", "none");
|
||||
|
||||
test_computed_value("offset-path", "ray(0rad closest-side)", "ray(0deg closest-side)");
|
||||
test_computed_value("offset-path", "ray(0.25turn closest-corner contain)", "ray(90deg closest-corner contain)");
|
||||
test_computed_value("offset-path", "ray(200grad farthest-side)", "ray(180deg farthest-side)");
|
||||
test_computed_value("offset-path", "ray(270deg farthest-corner contain)");
|
||||
test_computed_value("offset-path", "ray(-720deg sides)");
|
||||
test_computed_value("offset-path", "ray(calc(180deg - 45deg) farthest-side)", "ray(calc(135deg) farthest-side)");
|
||||
|
||||
test_computed_value("offset-path", 'path("m 20 0 h -100")', 'path("M 20 0 H -80")');
|
||||
test_computed_value("offset-path", 'path("M 0 0 L 100 100 M 100 200 L 200 200 Z L 300 300 Z")');
|
||||
test_computed_value("offset-path", 'path("m 10 20 q 30 60 40 50 q 100 70 90 80")', 'path("M 10 20 Q 40 80 50 70 Q 150 140 140 150")');
|
||||
test_computed_value("offset-path", 'path("M 0 0 L 100 100 m 0 100 l 100 0 Z l 160 20 Z")', 'path("M 0 0 L 100 100 M 100 200 L 200 200 Z L 260 220 Z")');
|
||||
test_computed_value("offset-path", 'path("m 10 20 l 20 30 Z l 50 60 Z m 70 80 l 90 60 Z t 70 120")', 'path("M 10 20 L 30 50 Z L 60 80 Z M 80 100 L 170 160 Z T 150 220")');
|
||||
test_computed_value("offset-path", 'path("m 10 170 h 90 v 30 m 0 0 s 1 2 3 4 z c 9 8 7 6 5 4")', 'path("M 10 170 H 100 V 200 M 100 200 S 101 202 103 204 Z C 109 208 107 206 105 204")');
|
||||
test_computed_value("offset-path", 'path("m 10 20 a 10 20 30 1 0 40 50 a 110 120 30 1 1 140 50")', 'path("M 10 20 A 10 20 30 1 0 50 70 A 110 120 30 1 1 190 120")');
|
||||
|
||||
// url, shape and geometry-box paths are not yet supported by implementations.
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,37 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Motion Path Module Level 1: getComputedStyle().offsetPosition</title>
|
||||
<link rel="help" href="https://drafts.fxtf.org/motion-1/#offset-position-property">
|
||||
<meta name="assert" content="offset-position is 'auto' or a computed position.">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/css/support/computed-testcommon.js"></script>
|
||||
<style>
|
||||
#target {
|
||||
font-size: 40px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div id="target"></div>
|
||||
<script>
|
||||
test_computed_value("offset-position", "auto");
|
||||
|
||||
test_computed_value("offset-position", "left bottom", "0% 100%");
|
||||
test_computed_value("offset-position", "center center", "50% 50%");
|
||||
test_computed_value("offset-position", "right center", "100% 50%");
|
||||
test_computed_value("offset-position", "center top", "50% 0%");
|
||||
test_computed_value("offset-position", "center bottom", "50% 100%");
|
||||
test_computed_value("offset-position", "calc(5em + 20%) center", "calc(20% + 200px) 50%");
|
||||
test_computed_value("offset-position", "right 3em", "100% 120px");
|
||||
test_computed_value("offset-position", "10px 20%");
|
||||
test_computed_value("offset-position", "left -10px top -20%", "-10px -20%");
|
||||
test_computed_value("offset-position", "right 10% bottom 5em", "90% calc(100% - 200px)");
|
||||
test_computed_value("offset-position", "top 10px right -20%", "120% 10px");
|
||||
test_computed_value("offset-position", "left 10% bottom 2em", "10% calc(100% - 80px)");
|
||||
test_computed_value('offset-position', 'calc(10px - 0.5em) calc(10px + 0.5em)', '-10px 30px');
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -40,7 +40,7 @@
|
|||
}
|
||||
</style>
|
||||
|
||||
<body class="container">
|
||||
<main class="container">
|
||||
<div class="longbox"></div> <!-- Saturate the margin space -->
|
||||
<div class="shape"></div>
|
||||
<div class="box"></div>
|
||||
|
@ -58,5 +58,5 @@
|
|||
<div class="box"></div>
|
||||
<div class="box"></div>
|
||||
<div class="longbox"></div> <!-- Saturate the margin space -->
|
||||
</body>
|
||||
</main>
|
||||
</html>
|
||||
|
|
|
@ -44,7 +44,7 @@
|
|||
}
|
||||
</style>
|
||||
|
||||
<body class="container">
|
||||
<main class="container">
|
||||
<div class="shape"></div>
|
||||
<div class="shape"></div>
|
||||
<div class="longbox"></div> <!-- Saturate the margin space -->
|
||||
|
@ -62,5 +62,5 @@
|
|||
<div class="box"></div>
|
||||
<div class="box"></div>
|
||||
<div class="longbox"></div> <!-- Saturate the margin space -->
|
||||
</body>
|
||||
</main>
|
||||
</html>
|
||||
|
|
|
@ -41,7 +41,7 @@
|
|||
}
|
||||
</style>
|
||||
|
||||
<body class="container">
|
||||
<main class="container">
|
||||
<div class="longbox"></div> <!-- Saturate the margin space -->
|
||||
<div class="shape"></div>
|
||||
<div class="box"></div>
|
||||
|
@ -59,5 +59,5 @@
|
|||
<div class="box"></div>
|
||||
<div class="box"></div>
|
||||
<div class="longbox"></div> <!-- Saturate the margin space -->
|
||||
</body>
|
||||
</main>
|
||||
</html>
|
||||
|
|
|
@ -45,7 +45,7 @@
|
|||
}
|
||||
</style>
|
||||
|
||||
<body class="container">
|
||||
<main class="container">
|
||||
<div class="shape"></div>
|
||||
<div class="shape"></div>
|
||||
<div class="longbox"></div> <!-- Saturate the margin space -->
|
||||
|
@ -63,5 +63,5 @@
|
|||
<div class="box"></div>
|
||||
<div class="box"></div>
|
||||
<div class="longbox"></div> <!-- Saturate the margin space -->
|
||||
</body>
|
||||
</main>
|
||||
</html>
|
||||
|
|
|
@ -41,7 +41,7 @@
|
|||
}
|
||||
</style>
|
||||
|
||||
<body class="container">
|
||||
<main class="container">
|
||||
<div class="shape"></div>
|
||||
<div class="longbox" style="top: 0; left: 0;"></div> <!-- Saturate the margin space -->
|
||||
<div class="box" style="height: 24px; top: 20px; left: 128px;"></div> <!-- Box at corner -->
|
||||
|
@ -49,5 +49,5 @@
|
|||
<div class="box" style="height: 36px; top: 80px; left: 140px;"></div>
|
||||
<div class="box" style="height: 24px; top: 116px; left: 128px;"></div> <!-- Box at corner -->
|
||||
<div class="longbox" style="top: 140px; left: 0;"></div> <!-- Saturate the margin space -->
|
||||
</body>
|
||||
</main>
|
||||
</html>
|
||||
|
|
|
@ -44,7 +44,7 @@
|
|||
}
|
||||
</style>
|
||||
|
||||
<body class="container">
|
||||
<main class="container">
|
||||
<div class="shape"></div>
|
||||
<div class="longbox"></div> <!-- Saturate the margin space -->
|
||||
<div class="box" style="height: 24px;"></div> <!-- Box at corner -->
|
||||
|
@ -52,5 +52,5 @@
|
|||
<div class="box" style="height: 36px;"></div>
|
||||
<div class="box" style="height: 24px;"></div> <!-- Box at corner -->
|
||||
<div class="longbox"></div> <!-- Saturate the margin space -->
|
||||
</body>
|
||||
</main>
|
||||
</html>
|
||||
|
|
|
@ -33,11 +33,11 @@
|
|||
}
|
||||
</style>
|
||||
|
||||
<body class="container">
|
||||
<main class="container">
|
||||
<div class="shape"></div>
|
||||
<div class="box" style="height: 24px; top: 0px; left: 108px;"></div> <!-- Box at corner -->
|
||||
<div class="box" style="height: 36px; top: 24px; left: 120px;"></div>
|
||||
<div class="box" style="height: 36px; top: 60px; left: 120px;"></div>
|
||||
<div class="box" style="height: 24px; top: 96px; left: 108px;"></div> <!-- Box at corner -->
|
||||
</body>
|
||||
</main>
|
||||
</html>
|
||||
|
|
|
@ -37,11 +37,11 @@
|
|||
}
|
||||
</style>
|
||||
|
||||
<body class="container">
|
||||
<main class="container">
|
||||
<div class="shape"></div>
|
||||
<div class="box" style="height: 24px;"></div> <!-- Box at corner -->
|
||||
<div class="box" style="height: 36px;"></div>
|
||||
<div class="box" style="height: 36px;"></div>
|
||||
<div class="box" style="height: 24px;"></div> <!-- Box at corner -->
|
||||
</body>
|
||||
</main>
|
||||
</html>
|
||||
|
|
|
@ -42,7 +42,7 @@
|
|||
}
|
||||
</style>
|
||||
|
||||
<body class="container">
|
||||
<main class="container">
|
||||
<div class="shape"></div>
|
||||
<div class="longbox" style="top: 0; right: 0;"></div> <!-- Saturate the margin space -->
|
||||
<div class="box" style="height: 24px; top: 20px; right: 128px;"></div> <!-- Box at corner -->
|
||||
|
@ -50,5 +50,5 @@
|
|||
<div class="box" style="height: 36px; top: 80px; right: 140px;"></div>
|
||||
<div class="box" style="height: 24px; top: 116px; right: 128px;"></div> <!-- Box at corner -->
|
||||
<div class="longbox" style="top: 140px; right: 0;"></div> <!-- Saturate the margin space -->
|
||||
</body>
|
||||
</main>
|
||||
</html>
|
||||
|
|
|
@ -45,7 +45,7 @@
|
|||
}
|
||||
</style>
|
||||
|
||||
<body class="container">
|
||||
<main class="container">
|
||||
<div class="shape"></div>
|
||||
<div class="longbox"></div> <!-- Saturate the margin space -->
|
||||
<div class="box" style="height: 24px;"></div> <!-- Box at corner -->
|
||||
|
@ -53,5 +53,5 @@
|
|||
<div class="box" style="height: 36px;"></div>
|
||||
<div class="box" style="height: 24px;"></div> <!-- Box at corner -->
|
||||
<div class="longbox"></div> <!-- Saturate the margin space -->
|
||||
</body>
|
||||
</main>
|
||||
</html>
|
||||
|
|
|
@ -34,11 +34,11 @@
|
|||
}
|
||||
</style>
|
||||
|
||||
<body class="container">
|
||||
<main class="container">
|
||||
<div class="shape"></div>
|
||||
<div class="box" style="height: 24px; top: 0px; right: 108px;"></div> <!-- Box at corner -->
|
||||
<div class="box" style="height: 36px; top: 24px; right: 120px;"></div>
|
||||
<div class="box" style="height: 36px; top: 60px; right: 120px;"></div>
|
||||
<div class="box" style="height: 24px; top: 96px; right: 108px;"></div> <!-- Box at corner -->
|
||||
</body>
|
||||
</main>
|
||||
</html>
|
||||
|
|
|
@ -38,11 +38,11 @@
|
|||
}
|
||||
</style>
|
||||
|
||||
<body class="container">
|
||||
<main class="container">
|
||||
<div class="shape"></div>
|
||||
<div class="box" style="height: 24px;"></div> <!-- Box at corner -->
|
||||
<div class="box" style="height: 36px;"></div>
|
||||
<div class="box" style="height: 36px;"></div>
|
||||
<div class="box" style="height: 24px;"></div> <!-- Box at corner -->
|
||||
</body>
|
||||
</main>
|
||||
</html>
|
||||
|
|
|
@ -42,7 +42,7 @@
|
|||
}
|
||||
</style>
|
||||
|
||||
<body class="container">
|
||||
<main class="container">
|
||||
<div class="shape"></div>
|
||||
<div class="longbox" style="inset-block-start: 0; inset-inline-start: 0;"></div> <!-- Saturate the margin space -->
|
||||
<div class="box" style="block-size: 24px; inset-block-start: 20px; inset-inline-start: 128px;"></div> <!-- Box at corner -->
|
||||
|
@ -50,5 +50,5 @@
|
|||
<div class="box" style="block-size: 36px; inset-block-start: 80px; inset-inline-start: 140px;"></div>
|
||||
<div class="box" style="block-size: 24px; inset-block-start: 116px; inset-inline-start: 140px;"></div> <!-- Box at corner -->
|
||||
<div class="longbox" style="inset-block-start: 140px; inset-inline-start: 0;"></div> <!-- Saturate the margin space -->
|
||||
</body>
|
||||
</main>
|
||||
</html>
|
||||
|
|
|
@ -45,7 +45,7 @@
|
|||
}
|
||||
</style>
|
||||
|
||||
<body class="container">
|
||||
<main class="container">
|
||||
<div class="shape"></div>
|
||||
<div class="longbox"></div> <!-- Saturate the margin space -->
|
||||
<div class="box" style="block-size: 24px;"></div> <!-- Box at corner -->
|
||||
|
@ -53,5 +53,5 @@
|
|||
<div class="box" style="block-size: 36px;"></div>
|
||||
<div class="box" style="block-size: 24px;"></div> <!-- Box at corner -->
|
||||
<div class="longbox"></div> <!-- Saturate the margin space -->
|
||||
</body>
|
||||
</main>
|
||||
</html>
|
||||
|
|
|
@ -43,7 +43,7 @@
|
|||
}
|
||||
</style>
|
||||
|
||||
<body class="container">
|
||||
<main class="container">
|
||||
<div class="shape"></div>
|
||||
<div class="longbox" style="inset-block-start: 0; inset-inline-start: 0;"></div> <!-- Saturate the margin space -->
|
||||
<div class="box" style="block-size: 24px; inset-block-start: 20px; inset-inline-start: 128px;"></div> <!-- Box at corner -->
|
||||
|
@ -51,5 +51,5 @@
|
|||
<div class="box" style="block-size: 36px; inset-block-start: 80px; inset-inline-start: 140px;"></div>
|
||||
<div class="box" style="block-size: 24px; inset-block-start: 116px; inset-inline-start: 140px;"></div> <!-- Box at corner -->
|
||||
<div class="longbox" style="inset-block-start: 140px; inset-inline-start: 0;"></div> <!-- Saturate the margin space -->
|
||||
</body>
|
||||
</main>
|
||||
</html>
|
||||
|
|
|
@ -46,7 +46,7 @@
|
|||
}
|
||||
</style>
|
||||
|
||||
<body class="container">
|
||||
<main class="container">
|
||||
<div class="shape"></div>
|
||||
<div class="longbox"></div> <!-- Saturate the margin space -->
|
||||
<div class="box" style="block-size: 24px;"></div> <!-- Box at corner -->
|
||||
|
@ -54,5 +54,5 @@
|
|||
<div class="box" style="block-size: 36px;"></div>
|
||||
<div class="box" style="block-size: 24px;"></div> <!-- Box at corner -->
|
||||
<div class="longbox"></div> <!-- Saturate the margin space -->
|
||||
</body>
|
||||
</main>
|
||||
</html>
|
||||
|
|
|
@ -42,7 +42,7 @@
|
|||
}
|
||||
</style>
|
||||
|
||||
<body class="container">
|
||||
<main class="container">
|
||||
<div class="shape"></div>
|
||||
<div class="longbox" style="inset-block-start: 0; inset-inline-start: 0;"></div> <!-- Saturate the margin space -->
|
||||
<div class="box" style="block-size: 24px; inset-block-start: 20px; inset-inline-start: 140px;"></div> <!-- Box at corner -->
|
||||
|
@ -50,5 +50,5 @@
|
|||
<div class="box" style="block-size: 36px; inset-block-start: 80px; inset-inline-start: 140px;"></div>
|
||||
<div class="box" style="block-size: 24px; inset-block-start: 116px; inset-inline-start: 132px;"></div> <!-- Box at corner -->
|
||||
<div class="longbox" style="inset-block-start: 140px; inset-inline-start: 0;"></div> <!-- Saturate the margin space -->
|
||||
</body>
|
||||
</main>
|
||||
</html>
|
||||
|
|
|
@ -45,7 +45,7 @@
|
|||
}
|
||||
</style>
|
||||
|
||||
<body class="container">
|
||||
<main class="container">
|
||||
<div class="shape"></div>
|
||||
<div class="longbox"></div> <!-- Saturate the margin space -->
|
||||
<div class="box" style="block-size: 24px;"></div> <!-- Box at corner -->
|
||||
|
@ -53,5 +53,5 @@
|
|||
<div class="box" style="block-size: 36px;"></div>
|
||||
<div class="box" style="block-size: 24px;"></div> <!-- Box at corner -->
|
||||
<div class="longbox"></div> <!-- Saturate the margin space -->
|
||||
</body>
|
||||
</main>
|
||||
</html>
|
||||
|
|
|
@ -43,7 +43,7 @@
|
|||
}
|
||||
</style>
|
||||
|
||||
<body class="container">
|
||||
<main class="container">
|
||||
<div class="shape"></div>
|
||||
<div class="longbox" style="inset-block-start: 0; inset-inline-start: 0;"></div> <!-- Saturate the margin space -->
|
||||
<div class="box" style="block-size: 24px; inset-block-start: 20px; inset-inline-start: 140px;"></div> <!-- Box at corner -->
|
||||
|
@ -51,5 +51,5 @@
|
|||
<div class="box" style="block-size: 36px; inset-block-start: 80px; inset-inline-start: 140px;"></div>
|
||||
<div class="box" style="block-size: 24px; inset-block-start: 116px; inset-inline-start: 132px;"></div> <!-- Box at corner -->
|
||||
<div class="longbox" style="inset-block-start: 140px; inset-inline-start: 0;"></div> <!-- Saturate the margin space -->
|
||||
</body>
|
||||
</main>
|
||||
</html>
|
||||
|
|
|
@ -46,7 +46,7 @@
|
|||
}
|
||||
</style>
|
||||
|
||||
<body class="container">
|
||||
<main class="container">
|
||||
<div class="shape"></div>
|
||||
<div class="longbox"></div> <!-- Saturate the margin space -->
|
||||
<div class="box" style="block-size: 24px;"></div> <!-- Box at corner -->
|
||||
|
@ -54,5 +54,5 @@
|
|||
<div class="box" style="block-size: 36px;"></div>
|
||||
<div class="box" style="block-size: 24px;"></div> <!-- Box at corner -->
|
||||
<div class="longbox"></div> <!-- Saturate the margin space -->
|
||||
</body>
|
||||
</main>
|
||||
</html>
|
||||
|
|
|
@ -42,7 +42,7 @@
|
|||
}
|
||||
</style>
|
||||
|
||||
<body class="container">
|
||||
<main class="container">
|
||||
<div class="shape"></div>
|
||||
<div class="longbox" style="inset-block-start: 0; inset-inline-start: 0;"></div> <!-- Saturate the margin space -->
|
||||
<div class="box" style="block-size: 24px; inset-block-start: 20px; inset-inline-start: 132px;"></div> <!-- Box at corner -->
|
||||
|
@ -50,5 +50,5 @@
|
|||
<div class="box" style="block-size: 36px; inset-block-start: 80px; inset-inline-start: 140px;"></div>
|
||||
<div class="box" style="block-size: 24px; inset-block-start: 116px; inset-inline-start: 140px;"></div> <!-- Box at corner -->
|
||||
<div class="longbox" style="inset-block-start: 140px; inset-inline-start: 0;"></div> <!-- Saturate the margin space -->
|
||||
</body>
|
||||
</main>
|
||||
</html>
|
||||
|
|
|
@ -45,7 +45,7 @@
|
|||
}
|
||||
</style>
|
||||
|
||||
<body class="container">
|
||||
<main class="container">
|
||||
<div class="shape"></div>
|
||||
<div class="longbox"></div> <!-- Saturate the margin space -->
|
||||
<div class="box" style="block-size: 24px;"></div> <!-- Box at corner -->
|
||||
|
@ -53,5 +53,5 @@
|
|||
<div class="box" style="block-size: 36px;"></div>
|
||||
<div class="box" style="block-size: 24px;"></div> <!-- Box at corner -->
|
||||
<div class="longbox"></div> <!-- Saturate the margin space -->
|
||||
</body>
|
||||
</main>
|
||||
</html>
|
||||
|
|
|
@ -43,7 +43,7 @@
|
|||
}
|
||||
</style>
|
||||
|
||||
<body class="container">
|
||||
<main class="container">
|
||||
<div class="shape"></div>
|
||||
<div class="longbox" style="inset-block-start: 0; inset-inline-start: 0;"></div> <!-- Saturate the margin space -->
|
||||
<div class="box" style="block-size: 24px; inset-block-start: 20px; inset-inline-start: 132px;"></div> <!-- Box at corner -->
|
||||
|
@ -51,5 +51,5 @@
|
|||
<div class="box" style="block-size: 36px; inset-block-start: 80px; inset-inline-start: 140px;"></div>
|
||||
<div class="box" style="block-size: 24px; inset-block-start: 116px; inset-inline-start: 140px;"></div> <!-- Box at corner -->
|
||||
<div class="longbox" style="inset-block-start: 140px; inset-inline-start: 0;"></div> <!-- Saturate the margin space -->
|
||||
</body>
|
||||
</main>
|
||||
</html>
|
||||
|
|
|
@ -46,7 +46,7 @@
|
|||
}
|
||||
</style>
|
||||
|
||||
<body class="container">
|
||||
<main class="container">
|
||||
<div class="shape"></div>
|
||||
<div class="longbox"></div> <!-- Saturate the margin space -->
|
||||
<div class="box" style="block-size: 24px;"></div> <!-- Box at corner -->
|
||||
|
@ -54,5 +54,5 @@
|
|||
<div class="box" style="block-size: 36px;"></div>
|
||||
<div class="box" style="block-size: 24px;"></div> <!-- Box at corner -->
|
||||
<div class="longbox"></div> <!-- Saturate the margin space -->
|
||||
</body>
|
||||
</main>
|
||||
</html>
|
||||
|
|
|
@ -42,7 +42,7 @@
|
|||
}
|
||||
</style>
|
||||
|
||||
<body class="container">
|
||||
<main class="container">
|
||||
<div class="shape"></div>
|
||||
<div class="longbox" style="inset-block-start: 0; inset-inline-start: 0;"></div> <!-- Saturate the margin space -->
|
||||
<div class="box" style="block-size: 24px; inset-block-start: 20px; inset-inline-start: 140px;"></div> <!-- Box at corner -->
|
||||
|
@ -50,5 +50,5 @@
|
|||
<div class="box" style="block-size: 36px; inset-block-start: 80px; inset-inline-start: 140px;"></div>
|
||||
<div class="box" style="block-size: 24px; inset-block-start: 116px; inset-inline-start: 132px;"></div> <!-- Box at corner -->
|
||||
<div class="longbox" style="inset-block-start: 140px; inset-inline-start: 0;"></div> <!-- Saturate the margin space -->
|
||||
</body>
|
||||
</main>
|
||||
</html>
|
||||
|
|
|
@ -45,7 +45,7 @@
|
|||
}
|
||||
</style>
|
||||
|
||||
<body class="container">
|
||||
<main class="container">
|
||||
<div class="shape"></div>
|
||||
<div class="longbox"></div> <!-- Saturate the margin space -->
|
||||
<div class="box" style="block-size: 24px;"></div> <!-- Box at corner -->
|
||||
|
@ -53,5 +53,5 @@
|
|||
<div class="box" style="block-size: 36px;"></div>
|
||||
<div class="box" style="block-size: 24px;"></div> <!-- Box at corner -->
|
||||
<div class="longbox"></div> <!-- Saturate the margin space -->
|
||||
</body>
|
||||
</main>
|
||||
</html>
|
||||
|
|
|
@ -43,7 +43,7 @@
|
|||
}
|
||||
</style>
|
||||
|
||||
<body class="container">
|
||||
<main class="container">
|
||||
<div class="shape"></div>
|
||||
<div class="longbox" style="inset-block-start: 0; inset-inline-start: 0;"></div> <!-- Saturate the margin space -->
|
||||
<div class="box" style="block-size: 24px; inset-block-start: 20px; inset-inline-start: 140px;"></div> <!-- Box at corner -->
|
||||
|
@ -51,5 +51,5 @@
|
|||
<div class="box" style="block-size: 36px; inset-block-start: 80px; inset-inline-start: 140px;"></div>
|
||||
<div class="box" style="block-size: 24px; inset-block-start: 116px; inset-inline-start: 132px;"></div> <!-- Box at corner -->
|
||||
<div class="longbox" style="inset-block-start: 140px; inset-inline-start: 0;"></div> <!-- Saturate the margin space -->
|
||||
</body>
|
||||
</main>
|
||||
</html>
|
||||
|
|
|
@ -46,7 +46,7 @@
|
|||
}
|
||||
</style>
|
||||
|
||||
<body class="container">
|
||||
<main class="container">
|
||||
<div class="shape"></div>
|
||||
<div class="longbox"></div> <!-- Saturate the margin space -->
|
||||
<div class="box" style="block-size: 24px;"></div> <!-- Box at corner -->
|
||||
|
@ -54,5 +54,5 @@
|
|||
<div class="box" style="block-size: 36px;"></div>
|
||||
<div class="box" style="block-size: 24px;"></div> <!-- Box at corner -->
|
||||
<div class="longbox"></div> <!-- Saturate the margin space -->
|
||||
</body>
|
||||
</main>
|
||||
</html>
|
||||
|
|
|
@ -37,7 +37,7 @@
|
|||
}
|
||||
</style>
|
||||
|
||||
<body class="container">
|
||||
<main class="container">
|
||||
<div class="shape"></div>
|
||||
<div class="shape"></div>
|
||||
<div class="box" style="height: 36px; top: 0px; left: 60px;"></div>
|
||||
|
@ -47,5 +47,5 @@
|
|||
<div class="box" style="height: 36px; top: 120px; left: 60px;"></div>
|
||||
<div class="box" style="height: 12px; top: 156px; left: 48px;"></div> <!-- Box at corner -->
|
||||
<div class="box" style="height: 12px; top: 168px; left: 36px;"></div> <!-- Box at corner -->
|
||||
</body>
|
||||
</main>
|
||||
</html>
|
||||
|
|
|
@ -40,7 +40,7 @@
|
|||
}
|
||||
</style>
|
||||
|
||||
<body class="container">
|
||||
<main class="container">
|
||||
<div class="shape"></div>
|
||||
<div class="shape"></div>
|
||||
<div class="box" style="height: 36px;"></div>
|
||||
|
@ -50,5 +50,5 @@
|
|||
<div class="box" style="height: 36px;"></div>
|
||||
<div class="box" style="height: 12px;"></div> <!-- Box at corner -->
|
||||
<div class="box" style="height: 12px;"></div> <!-- Box at corner -->
|
||||
</body>
|
||||
</main>
|
||||
</html>
|
||||
|
|
|
@ -37,7 +37,7 @@
|
|||
}
|
||||
</style>
|
||||
|
||||
<body class="container">
|
||||
<main class="container">
|
||||
<div class="shape"></div>
|
||||
<div class="shape"></div>
|
||||
<div class="long box" style="height: 60px; top: 0px; left: 0px;"></div> <!-- Fill the space above the first float -->
|
||||
|
@ -48,5 +48,5 @@
|
|||
<div class="box" style="height: 36px; top: 180px; left: 120px;"></div>
|
||||
<div class="box" style="height: 12px; top: 216px; left: 120px;"></div>
|
||||
<div class="box" style="height: 12px; top: 228px; left: 120px;"></div>
|
||||
</body>
|
||||
</main>
|
||||
</html>
|
||||
|
|
|
@ -40,7 +40,7 @@
|
|||
}
|
||||
</style>
|
||||
|
||||
<body class="container">
|
||||
<main class="container">
|
||||
<div class="shape"></div>
|
||||
<div class="shape"></div>
|
||||
<div class="long box" style="height: 60px;"></div> <!-- Fill the space above the first float -->
|
||||
|
@ -51,5 +51,5 @@
|
|||
<div class="box" style="height: 36px;"></div>
|
||||
<div class="box" style="height: 12px;"></div>
|
||||
<div class="box" style="height: 12px;"></div>
|
||||
</body>
|
||||
</main>
|
||||
</html>
|
||||
|
|
|
@ -38,7 +38,7 @@
|
|||
}
|
||||
</style>
|
||||
|
||||
<body class="container">
|
||||
<main class="container">
|
||||
<div class="shape"></div>
|
||||
<div class="shape"></div>
|
||||
<div class="box" style="height: 36px; top: 0px; right: 60px;"></div>
|
||||
|
@ -48,5 +48,5 @@
|
|||
<div class="box" style="height: 36px; top: 120px; right: 60px;"></div>
|
||||
<div class="box" style="height: 12px; top: 156px; right: 48px;"></div>
|
||||
<div class="box" style="height: 12px; top: 168px; right: 36px;"></div>
|
||||
</body>
|
||||
</main>
|
||||
</html>
|
||||
|
|
|
@ -41,7 +41,7 @@
|
|||
}
|
||||
</style>
|
||||
|
||||
<body class="container">
|
||||
<main class="container">
|
||||
<div class="shape"></div>
|
||||
<div class="shape"></div>
|
||||
<div class="box" style="height: 36px;"></div>
|
||||
|
@ -51,5 +51,5 @@
|
|||
<div class="box" style="height: 36px;"></div>
|
||||
<div class="box" style="height: 12px;"></div>
|
||||
<div class="box" style="height: 12px;"></div>
|
||||
</body>
|
||||
</main>
|
||||
</html>
|
||||
|
|
|
@ -38,7 +38,7 @@
|
|||
}
|
||||
</style>
|
||||
|
||||
<body class="container">
|
||||
<main class="container">
|
||||
<div class="shape"></div>
|
||||
<div class="shape"></div>
|
||||
<div class="long box" style="height: 60px; top: 0px; right: 0px;"></div> <!-- Fill the space above the first float -->
|
||||
|
@ -49,5 +49,5 @@
|
|||
<div class="box" style="height: 36px; top: 180px; right: 120px;"></div>
|
||||
<div class="box" style="height: 12px; top: 216px; right: 120px;"></div>
|
||||
<div class="box" style="height: 12px; top: 228px; right: 120px;"></div>
|
||||
</body>
|
||||
</main>
|
||||
</html>
|
||||
|
|
|
@ -41,7 +41,7 @@
|
|||
}
|
||||
</style>
|
||||
|
||||
<body class="container">
|
||||
<main class="container">
|
||||
<div class="shape"></div>
|
||||
<div class="shape"></div>
|
||||
<div class="long box" style="height: 60px;"></div> <!-- Fill the space above the first float -->
|
||||
|
@ -52,5 +52,5 @@
|
|||
<div class="box" style="height: 36px;"></div>
|
||||
<div class="box" style="height: 12px;"></div>
|
||||
<div class="box" style="height: 12px;"></div>
|
||||
</body>
|
||||
</main>
|
||||
</html>
|
||||
|
|
|
@ -33,7 +33,7 @@
|
|||
}
|
||||
</style>
|
||||
|
||||
<body class="container">
|
||||
<main class="container">
|
||||
<div class="shape"></div>
|
||||
<div class="box" style="height: 12px; top: 0px; left: 96px;"></div> <!-- Box at corner -->
|
||||
<div class="box" style="height: 12px; top: 12px; left: 108px;"></div> <!-- Box at corner -->
|
||||
|
@ -41,5 +41,5 @@
|
|||
<div class="box" style="height: 36px; top: 60px; left: 120px;"></div>
|
||||
<div class="box" style="height: 12px; top: 96px; left: 108px;"></div> <!-- Box at corner -->
|
||||
<div class="box" style="height: 12px; top: 108px; left: 96px;"></div> <!-- Box at corner -->
|
||||
</body>
|
||||
</main>
|
||||
</html>
|
||||
|
|
|
@ -36,7 +36,7 @@
|
|||
}
|
||||
</style>
|
||||
|
||||
<body class="container">
|
||||
<main class="container">
|
||||
<div class="shape"></div>
|
||||
<div class="box" style="height: 12px;"></div> <!-- Box at corner -->
|
||||
<div class="box" style="height: 12px;"></div> <!-- Box at corner -->
|
||||
|
@ -44,5 +44,5 @@
|
|||
<div class="box" style="height: 36px;"></div>
|
||||
<div class="box" style="height: 12px;"></div> <!-- Box at corner -->
|
||||
<div class="box" style="height: 12px;"></div> <!-- Box at corner -->
|
||||
</body>
|
||||
</main>
|
||||
</html>
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue