These are test pages that I have written for various reasons - usually to see whether certain features are implemented in any browsers or to test known features in certain browsers. They cover some sections of CSS2 much more completely than others. They are listed in order of the sections of CSS2 that they test. Warning: These tests may crash your browser or your whole computer. Use caution when testing.
U | Unknown (either because the test isn't written yet, I haven't tested that browser yet, or I don't know the correct result) |
A | Arguable (counts as unknown) |
Y | Yes. (i.e., entirely supported) |
N | Not Supported† |
P | Partially Supported† |
B | Buggy |
BB | Buggy in a way much more serious than the other browsers marked as buggy. |
D | Destroys feature. That is, it's not implemented, but buggy error handling causes bizarre interpretation.† |
M | Maybe (i.e, other bugs prevent proper testing) |
C | Crashes |
x | Lowercase letters, such as b, show very minor bugs. |
(X) | I disagree with the spec, and the result would be different if the spec were the way I want it. |
† - Not possible on tests of “basic features.”
Note: Not all of my test pages are listed here. Those not testable are listed below.
Browser | Mozilla | Opera | MSIE | Opera | NNav | WebTV Viewer[9] | Specs Tested [2] |
---|---|---|---|---|---|---|---|
Version | 2000-04-07 -08-M15 | 3.60 [5] | 5.0 | 4.0 tech preview 1999-12-24 | 4.61 & 4.5 | 1.1, b229 | |
Platform | Linux (& Windows) | Windows | Windows | Linux | Linux & Windows[6] | Windows | |
Status | (pre?)Alpha | Release | Release | Alpha (Technology Preview) | Release | ??? | |
HTML Implied elements test[1] | Y | M | M | Y | B | B | HTML4 |
Styling of form elements | U | U | U | U | U | U | |
1.3.3 Shorthand Properties | U | U | U | U | U | U | CSS1 |
3.2 CSS2 Conformance - alternate stylesheets | N (y in viewer) | N | N | N | N | N | CSS2 |
3.2 CSS2 Conformance - loading errors[1] | Y | Y | Y | B | B | Y | CSS2 |
4.1.1, 4.2 CSS Parsing Test[1] | Y | B | B | B | B | B | CSS2 (and 1?) |
4.1.1, 4.2 CSS Parsing Test 2 | Y | B | B | B | B | B | CSS2 (and 1?) |
4.1.1, D.1, 4.2 CSS Parsing Test 4 | Y | B | Y | B | Y | U | CSS1 |
4.1.1, D.1, 4.2 CSS Parsing Test 5 | Y | B | Y | B | B | U | CSS1 |
4.1.2 Keywords | Y | B | B | B | B | U | CSS1, CSS2 |
4.1.3 Case sensitivity of id and class | Y | Y | B | Y | B | B | HTML4 |
4.1.3, 5.4 Strange XML Type Selectors | B | U | U | U | U | U | CSS2, XML1.0, xml-stylesheet |
4.2, 4.3.2 Unitless Lengths Test[1] | Y[8] | Y | B | Y | B | N | CSS1 |
4.3.2 ex unit test | B | B | B | BB | M | N | CSS1 |
4.3.2 em unit test | A | Y (?) | M | BB | M | N | CSS1 |
4.3.10 Strings | Y | N | B | P | N | U | CSS1, CSS2 |
4.4.1, 4.1.1CSS Character Escapes | (Y) | D | N | D | D | D | CSS1, CSS2 |
5.3 The CSS2 Universal Selector | D | P | P | P | N | N | CSS2 |
5.6 The CSS2 Child Selector | b | B | D | b | N | B | CSS2 |
5.7 CSS2 Adjacent Sibling Selectors | b[4] | P | D | b | N | D | CSS2 |
5.8 CSS2 Attribute Selectors | B | N | d | N | N | N | CSS2 |
5.8.3, 6.4.1 CSS with multiple classes | Y | Y | Y | Y | N | N | HTML4 |
5.9 ID selectors in XML | N | N/A | N | N/A | N/A | U | CSS2 |
5.10, 5.3 Pseudo-element tests | Y | B | P | B (D?) | B | B | CSS2 (and 1?) |
5.10 Pseudo-class tests | Y | N | B | B | N | U | CSS2 |
5.10 Pseudo-class tests 3 | Y | N | B | D | N | U | CSS2 |
5.11.1 CSS2 :first-child Selector | Y | N | N | D | N | D | CSS2 |
5.11.3 Dynamic pseudo-classes on links | Y | B (P in 3.51??) | B | B | B | P | CSS1, CSS2 |
5.11.3 Dynamic pseudo-classes on elements other than links | B | N | N | N | N | U | CSS2 (not valid for CSS3) |
6.1 Test for Lack of Order Dependence[1] | Y | Y | Y | Y (display glitch) | M | M | CSS1 |
6.2.1 CSS inherit Test | Y | P | N | P | D | B | CSS2 |
6.4.2 Test of !important grammar | Y | Y | Y | Y | N | Y | CSS1, CSS2 |
6.4.3 Inline style specificity test[1] | (B) | B | (B) | B | BB | BB | CSS1 |
6.4.3 Specificity Base Test[1] | Y | Y (B in 3.51) | Y | B | Y | B | CSS1 |
6.4.4 Non-CSS Presentational Hints Test 1 | B | B | Y | B | B | U | CSS1 |
6.4.4 Non-CSS Presentational Hints Test 2 | b[10] | B | B | U | N | N | CSS1 |
8, 1.3.3 Shorthand Box Properties Test | Y | Y | M | Y (border display glitch) | M | N | CSS1 |
8, 1.3.3 Shorthand Box Properties Test 2 | Y | Y | M | B | M | N | CSS1 |
8, 9.1.2 html and body box properties |
A | B | B | b (border display glitch) | B | U | CSS1 |
8, 12.6.2 List Box Properties | Y | (Y) | Y | B (b?) | B | N | CSS1, CSS2 |
8.3 Zero Margins Test | D | m | M | Y (display glitch) | B | N | CSS1 |
8.5 Shorthand Border Properties Test | Y | Y | Y | B | B | N | CSS1 |
8.5 Border Properties Test | U | U | U | U | U | U | CSS1, CSS2 |
9.1.2 Initial Containing Block | B | B | B | B | B | U | CSS2 |
9.2.1 Block Boxes | Y | Y | Y | Y | B | N | CSS1, CSS2 |
9.2.3 Compact Boxes | N[3] | N | N | Y (spec is unclear; test may be wrong) | N | N | CSS2 |
9.2.4 Run-in Boxes | N[3] | N | N | Y (spec is unclear; test may be wrong) | N | N | CSS2 |
9.2.5 Test of display: none | Y | Y | Y | B | Y | N | CSS1, CSS2 or HTML40 |
9.3.1 Positioning | B | N | BB | P | B | N | CSS2 |
9.3.2 Test of top | B | N | B | B | BB | N | CSS2 |
9.3.2 Test of right | Y | N | b | B | BB | N | CSS2 |
9.3.2 Test of bottom | Y | N | B | B | BB | N | CSS2 |
9.3.2 Test of left | B | N | b | B | BB | N | CSS2 |
9.5 Stacking order on floats | U | U | U | U | U | U | CSS1 (?), CSS2 |
9.5.1 My original CSS1 section 4.1.4 test | (B) | B | B | B (D?) | B | N | CSS1 |
9.5.1 Float Positioning Test 2 | B | BB | Y | Y (D?) | BBB | N | CSS1 |
9.7 Relationships between display, position, and float. | Y | P | B | Y (D?) | B | U | CSS2 |
9.9 Layered presentation | B | N | B | B | BB | U | CSS2 |
9.10 Bidirectional Test | P | N | Y | N | N | N | CSS2 |
10.1 Containing blocks of block level and floating elements | Y (?) | b | B | b | BB | B | CSS1, CSS2 |
10.1 Containing blocks of fixed elements | b (worse on Win??) | N | BB | N (B?) | BB | D | CSS2 |
10.1 Containing blocks of absolutely positioned elements with block-level positioned ancestors | Y | N | B | BB | BB | D?? | CSS2 |
10.1 Containing blocks of absolutely positioned elements with inline-level positioned ancestors | U | U | U | U | U | D | CSS2 |
10.1 Containing blocks of absolutely positioned elements without positioned ancestors | BB | U | U | B | B | U | CSS2 |
10.3.1 Widths and margins of inline, non-replaced elements | Y | P | B | B | BB | BB | CSS1, CSS2 |
10.3.2 Widths and margins of inline, replaced elements | Y | BB | Y | B (P?) | BB | U | CSS1, CSS2 |
10.3.3 Widths and margins of block-level, non-replaced elements | Y | P | B | B | M | U | CSS1, CSS2 |
10.3.4 Widths and margins of block-level, replaced elements | Y | B | B (P?) | B (BB?) | M | U | CSS1, CSS2 |
10.3.5 Widths and margins of floating, non-replaced elements | BB | BB | BB | B (D?) | M | U | CSS1, CSS2 |
10.3.7 Widths and margins of absolutely positioned, non-replaced elements | b | N | B | B | N | U | CSS2 |
10.4 Maximum and Minimum Widths | Y | N | N | Y | M | U | CSS2 |
10.4 Maximum and Minimum Width Recalculations | Y | B | N | B | N | U | CSS2 |
10.6.4 Heights and margins of absolutely positioned, non-replaced elements | Y | N | B | B | N | U | CSS2 |
10.7 Maximum and Minimum Heights | Y | N | N | Y | M | U | CSS2 |
10.7 Maximum and Minimum Height Recalculations | b | N | N | B | N | U | CSS2 |
10.3.7, 10.6.4, 6.2 Inheritance of width and height on absolutely positioned elements | Y | N | B | B | B | U | CSS2 |
10.8 Line Box Test 1 | Y | B | Y | B | M | U | CSS1, CSS2 |
10.8, 9.4.2 Line Box Test 2 | Y | B | B | B | B | U | CSS1, CSS2 |
10.8.1, 9.4.2 line-height Inheritence Test and Line Box Test 3 - inheritance | Y | Y | Y | Y | B | U | CSS1 |
10.8, 10.6.1 line-height Inheritence Test and Line Box Test 3 - line boxes | Y | Y | B | Y | B | U | CSS1, CSS2 |
10.8, 10.6.1 Line Box Test 4 | B (?) | BB | B | A | BB | U | CSS1, CSS2 |
10.8 Inline Display Test | A | B | N | B | BB | U | CSS1, CSS2 |
11.1 The overflow and clip properties | B | N | B | B/N | N | U | CSS2 |
11.1.2 The clip property | Y | N | B | N/B | B | U | CSS2 |
11.1.2 The clip property | Y | N | B | N/B | B | U | CSS2 |
11.2 The visibility property | Y | N | P | B | M | U | CSS2 |
11.2 The visibility property | Y | N | P (also display glitch) | B | M | U | CSS2 |
12.1 The :before and :after pseudo-elements | Y | N | N | C | N | U | CSS2 |
12.2 The content property | P/A | N | N | b (?) | N | U | CSS2 |
14.2.1 The 'background-image' property | Y | Y | Y | B | D | U | CSS1(, CSS2)? |
15.2.3 font-weight error-handling test | Y | U | U | C | U | U | CSS1 |
15.2.3 The font-stretch property | N | N | N | N | N | U | CSS2 |
16.3.2 Text Shadow Test | N | N | N | N | N | U | CSS2 |
17.2 Table display types | P | N | N | P (B?) | N | U | CSS2 |
17.2.1 Anonymous Table Objects | D | N | N | C | N | U | CSS2 |
17.4 Tables and captions | B | N | N | B | C | U | CSS2 |
17.4 Anonymous box around caption and table | B | N | B (display bug, otherwise Y) | D | N | U | HTML 4.0, CSS2 |
17.4.1 Caption position and alignment | B | N | N | BB | C | U | CSS2 |
17.5.1 Table layers and transparency | Y[8] | P | (Y) | P | B | U | CSS2 |
17.5.1 Table layers and transparency | Y[8] | P | B | P | B | U | CSS2 |
17.5.1 Table layers and transparency | Y[8] | B | B | B | B | U | CSS2 |
17.5.2 table-layout: fixed | Y | N | B | B | N | U | CSS2 |
17.5.3 Vertical alignment and table height | B | N | B | B | M | U | CSS2 |
17.5.4 Horizontal alignment and table width | P | D[7] | P | D[7] | P | U | CSS2 |
17.6 Table Border Test 1 | B | N | B | P (border glitch?) | N | U | CSS2 |
17.6 Table Border Test 2 | B | N | N | B | N | U | CSS2 |
17.6 Simple collapsing table borders | B | N | N | B | N | U | CSS2 |
18.1 The cursor property | B | N | P | N | N | U | CSS2 |
18.2 UI colors | B | N | Y | N | D | U | CSS2 |
18.3 UI fonts | N | N | B | N | N | U | CSS2 |
18.4 The outline property | D (?) | N | N | N | N | U | CSS2 |
Font Sizes | B | B | B | B | B | U | CSS1 |
Tests Y (+1) | 56 | 17 | 20 | 17 | 3 | ||
Tests N (0) | 7 | 48 | 24 | 14 | 36 | ||
Tests P (+0.5) | 5 | 8 | 6 | 8 | 1 | ||
Tests B (-0.5) | 32 | 27 | 46 | 57 | 44 | ||
Tests D (-2) | 4 | 2 | 3 | 5 | 4 | ||
Tests M (-0.5) | 0 | 2 | 5 | 0 | 14 | ||
Tests C (-4) | 0 | 0 | 0 | 3 | 2 | ||
Total Points (as of 2000-04-07), out of about 104 | 34.5 | 2.5 | -8.5 | -29.5 | -41.5 |
[1] “Basic feature,” i.e., it is not possible not to support this.
[2] earliest spec for each feature tested; judgment approximate
[3] Supported in earlier builds, but feature now removed.
[4] This Y result depends on a definition of adjacent sibling elements that is not in the spec, but does make sense.
[5] Differences with 3.51 are noted for tests that existed before 3.61 was released.
[6] The only differences I have seen between Linux and Windows versions are (1) that the Linux version sometimes has problems drawing or redrawing borders and (2) occasional font-selection quirks on Linux.
[7] The problem that gets the "D" rating is that the two high unicode character entities cause the rest of the line to disappear. This isn't strictly a CSS problem, but it's very serious.
[8] I believe this test only works correctly when Mozilla is in standard mode, which is detected based on the DOCTYPE.
[9] I gave up testing WebTV about halfway through because I didn't understand the results I was seeing, and the browser didn't show enough promise to deserve further investigation. I think it may do something weird like only accept styles on DIV elements, and not P elements (or something else...).
[10] User stylesheet simulated by appending to ua.css
.
(Back to CSS Testing Information, David Baron)