Layout conformance: Yoga’s generated cases on zinc:ui

Generated by tools/layout-fixtures --report from tests/t1/layout_conformance.sh (ZN-289, LE-10). The corpus is the 548 cases of Yoga v3.2.1 tests/generated (made in Chrome by gentest), extracted to tests/golden/layout-conformance/cases.json. Each case is built from zinc:ui nodes with style keys, laid out by the engine and compared with Yoga’s boxes at tolerance 0. A case zinc:ui cannot express is skipped with the reason (below); rn must pass every other case, classic must keep its baseline (classic.pass).

FeatureCasesExpressiblernclassic
AbsolutePosition34333314
AlignContent64646447
AlignItems30282813
AlignSelf5554
AndroidNewsFeed1111
AspectRatio2111
Auto5555
Border5550
BoxSizing48464614
Dimension2222
Display14141414
DisplayContents1111
Flex1010109
FlexDirection55535321
FlexWrap24242420
Gap33313123
IntrinsicSize11000
JustifyContent30282825
Margin34343430
MinMaxDimension26242421
Padding7777
Percentage2922224
Rounding13771
SizeOverflow3333
StaticPosition6234349
total548482482289

Skipped cases by reason. Reverse directions, wrap-reverse, row/column gap and auto margins run since ZN-380, borders in layout, box-sizing and position static since ZN-381 (classic paints borders without layout space and has no static containing block: those cases are its known failures, classic.known-fail), percent padding, margin, insets, gaps and min/max, baseline and display contents since ZN-382 (percent lengths are rn-only: classic ignores them). Measure functions, insets on the root, a percent of an undefined size, fractional lengths and a root nested in the harness’s box are limits of this harness or of zinc:ui’s whole-pixel model.

ReasonCases
percent of an undefined size30
skipped by Yoga17
measure function11
fractional lengths (zinc:ui keeps whole pixels)4
insets on the root3
flex basis and min width resolved differently under a parent (Yoga itself)1

Edit this page on GitHub ↗