MathML Acid Tests
Although the creation of the tests is now complete, I expect to modify some of them if I get feedback or if I find errors while I write the detailed description below. Once the tests are considered stable, I plan to submit them to organizations like the Math WG or the WaSP, that could publish them and provide an official URL. In the meantime, online versions are available on GitHub:
- Blink (e.g. Chrome and Opera): Chromium Dashboard, Enable MathML
- Gecko (e.g. Firefox): Implementation Status, MathML 2, MathML 3, MathJax
- Trident (e.g. Internet Explorer): status.modern.ie. All the bug reports for MathML have been resolved "by design" so far.
- WebKit (e.g. Safari): Implementation Status, Master Bug, Basic Support, MathJax
Of course these Acid tests are not perfect, for example they do not capture the subjective but important notion of "good-looking mathematical expressions". Also, they are supposed to be executed in browsers ; the result for other MathML layout engines (including polyfills) should not be considered reliable. However, these tests have the advantage to quickly provide objective results to people even those without advanced knowledge of the MathML language. Many tests make sense out of a browser context and could be verified by non-browser MathML implementers.
Perhaps the most popular MathML tests are the Mozilla's MathML Torture Test or Joe Java's MathML test where the rendering quality of a few basic constructions is compared against TeX images and the W3C's MathML test suite where a large number of features are tested against sample references. Unfortunately these tests are not automated and are very subjective. This makes evaluation and comparison of native MathML implementations a difficult task. Since the MathML Acid1 test contains very elementary MathML constructions, we keep this subjective evaluation method. Any rendering that looks more or less like the reference and satisfies the basic requirements could be accepted.
The MathML recommendation almost never describes precisely the
rendering of elements, so exact pixel matching does not make sense in general
as opposed to SVG or CSS. For the MathML Acid2 test,
we use MathML features like
whose visual renderings are clearly defined in order to draw the smiley face.
the relative position of boxes (e.g. the numerator is above a denominator
<mfrac> element). These features are verified in the MathML Acid3 test.
Hence the combination of these MathML Acid2 and Acid3 tests should give a pretty
good coverage of MathML features, while still being automated and hopefully