Check if the appearance of a validation message for <select> is good.

 
The top of the bubble should be on the bottom of the host node:
PASS bubbleRect.top is hostRect.bottom

A long text should fit in the bubble:
PASS getValidationMessageBubbleNode(host).offsetWidth is >= getTextNode(getValidationMessageBubbleNode(host)).offsetWidth

PASS successfullyParsed is true

TEST COMPLETE

