Tests that a page with a PaymentResponse in the Created state goes into the back/forward cache.

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


Creating a PaymentResponse in the Created state.
pageshow - not from cache
pagehide - entering cache
pageshow - from cache
PASS Page did enter and was restored from the back/forward cache
Testing that PaymentResponse is now in the Closed state.
PASS response.complete() rejected promise  with AbortError: The operation was aborted..
PASS response.retry() rejected promise  with AbortError: The operation was aborted..
PASS successfullyParsed is true

TEST COMPLETE

