This tests that a page with a content inset will not affect the bounds of the main frame scroll view. It will appear as the same as the web area's sbounds

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


The position of the web area and the scroll view should be the same when there's no content inset
PASS webX == scrollViewX && webY == scrollViewY is true


After setting the content inset, the new y position should be less than the initial
PASS newScrollViewY - scrollViewY is 100


The content inset also reduces the height of the scroll view, which should be reflected here.
PASS scrollViewHeight > newScrollViewHeight is true


PASS successfullyParsed is true

TEST COMPLETE

