Tests that a page with a PaymentRequest in the Interactive state goes into the back/forward cache.

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


Creating a PaymentRequest in the Interactive 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 the promise returned by show() was rejected with "AbortError".
PASS responsePromise rejected promise  with AbortError: The operation was aborted..
Testing that PaymentRequest is now in the Closed state.
PASS request.abort() rejected promise  with InvalidStateError: The object is in an invalid state..
PASS successfullyParsed is true

TEST COMPLETE

