| # Tests for HTML Ruby Markup extensions | |
| Specification: https://www.w3.org/TR/html-ruby-extensions/ | |
| WARNING: These are manual tests. | |
| There is some support for automation, | |
| but the results must be evaluated manually. | |
| Simply relying on automated reports of tests passing is not sufficient. | |
| These tests are hard to write reliably, | |
| because without relying on a styling mechanism (which should be tested separately), | |
| there's no prescribed rendering, | |
| yet the rendering is how we can tell whether the markup did the right thing: | |
| ruby must be segmented correctly, | |
| and the correct ruby annotation must be paired with the correct base. | |
| That is something you can tell visually. | |
| The approach taken here follows the same logic | |
| as the pre-existing html/semantics/text-level-semantics/the-ruby-element/ruby-usage.html: | |
| use a mismatch ref-test against what the rendering is likely to be | |
| if the browser didn't do anything, or did the wrong thing. | |
| In that original example, the mismatch reference is simply what you'd get in a browser with no support for ruby at all. | |
| The tests in this directory do that too, | |
| and add a few variants of possible wrong renderings, | |
| some attested in existing layout engines, | |
| some "just in case". | |
| As such, automated test failures are indicative of something being wrong with the implementation, | |
| but tests passing could be false positives: | |
| maybe it is implemented right, | |
| or maybe it is implemented wrong in a novel way. | |
| Therefore, each test is written including a description of the pass condition, | |
| in a way that can be evaluated by a person looking at the test. | |
| It would be better to write these tests so that their pass condition can be automated, | |
| but as far as I can tell, | |
| that's not reliably doable. | |
| For instance, it might be tempting to use `<ruby>X<rt>1</rt>Y<rt>2</rt></ruby>` | |
| or `<ruby>X<rt>1</ruby><ruby>Y<rt>2</ruby>` | |
| as a reference for `<ruby><rb>X<rb>Y<rt>1<rt>2</ruby>` | |
| as they are defined to have the same base/annotation pairing, | |
| but it is not required that they have precisely the same rendering. | |
| And indeed, some implementations do vary | |
| (notably in terms of base/annotation alignment). | |
| So we're left with semi-manual tests. | |
| Anyone finding false positives is encouraged | |
| to add corresponding mismatch references. |