Test viewport unit sizes work when an anonymous block is involved.

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


PASS successfullyParsed is true

TEST COMPLETE
PASS innerWidth is 800
PASS innerHeight is 600
PASS getComputedStyle(container).width is "400px"
PASS getComputedStyle(container).height is "300px"
PASS getComputedStyle(random).width is "200px"
PASS innerWidth / 2 is >= document.getElementById('firstContent').offsetWidth
PASS innerWidth / 2 is >= document.getElementById('secondContent').offsetWidth
PASS innerWidth is 900
PASS innerHeight is 600
PASS getComputedStyle(container).width is "450px"
PASS getComputedStyle(container).height is "300px"
PASS getComputedStyle(random).width is "225px"
PASS innerWidth / 2 is >= document.getElementById('firstContent').offsetWidth
PASS innerWidth / 2 is >= document.getElementById('secondContent').offsetWidth
PASS innerWidth is 900
PASS innerHeight is 640
PASS getComputedStyle(container).width is "450px"
PASS getComputedStyle(container).height is "320px"
PASS getComputedStyle(random).width is "225px"
PASS innerWidth / 2 is >= document.getElementById('firstContent').offsetWidth
PASS innerWidth / 2 is >= document.getElementById('secondContent').offsetWidth
PASS innerWidth is 500
PASS innerHeight is 640
PASS getComputedStyle(container).width is "250px"
PASS getComputedStyle(container).height is "320px"
PASS getComputedStyle(random).width is "125px"
PASS innerWidth / 2 is >= document.getElementById('firstContent').offsetWidth
PASS innerWidth / 2 is >= document.getElementById('secondContent').offsetWidth
PASS innerWidth is 800
PASS innerHeight is 600
PASS getComputedStyle(container).width is "400px"
PASS getComputedStyle(container).height is "300px"
PASS getComputedStyle(random).width is "200px"
PASS innerWidth / 2 is >= document.getElementById('firstContent').offsetWidth
PASS innerWidth / 2 is >= document.getElementById('secondContent').offsetWidth
This is enough text content that it will wrap around in this container. We need lots of it to account for variances in font sizes.
This is some content in an inner div.
And here is some more content that will also wrap around in this container. We need lots of it to account for variances in font sizes.
