This test verifies that typing text, then undoing, and then redoing does not cause the scroll position of the document to jump around. To run the test manually, load the page and wait for the test to complete.

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

PASS scrollTopAfterTyping is scrollTopBeforeTyping
PASS scrollTopAfterDeleting is scrollTopAfterTyping
PASS scrollTopAfterUndoing is scrollTopAfterDeleting
PASS scrollTopAfterRedoing is scrollTopAfterUndoing
PASS scrollTopAfterDeletingAgain < scrollTopAfterRedoing is true
PASS successfullyParsed is true

TEST COMPLETE
Try to delete the letters below.
A
B
C
