Test if WebKit can show the left side of the inner elements regardless of the position of its scrollbars. To test manually, open this document and verify we can see "ABC" both in the LTR element and in the RTL element.

On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".


Verify the widths of the outer RTL elements are the same as the widths of the outer LTR elements.
PASS outerLTR.offsetWidth == outerRTL.offsetWidth is true
PASS outerLTR.clientWidth == outerRTL.clientWidth is true
PASS outerLTR.scrollWidth == outerRTL.scrollWidth is true
Verify the widths of the inner RTL elements are the same as the widths of the inner LTR elements.
PASS innerLTR.offsetWidth == innerRTL.offsetWidth is true
PASS innerLTR.clientWidth == innerRTL.clientWidth is true
PASS innerLTR.scrollWidth == innerRTL.scrollWidth is true
Verify the width of the vertical scrollbar of the outer RTL element is the same as the one of the outer LTR element regardless of their scrollbar positions.
PASS scrollbarWidthLTR == scrollbarWidthRTL is true
PASS successfullyParsed is true

TEST COMPLETE
ABC
ABC
