This test requires user interaction.
Please click here to allow show payment request.This test requires user interaction.
Please click here to allow show payment request. If you find a buggy test, please file a bug and tag one of the suggested reviewers.

PASS If payment method identifier are supported, resolve promise with true. 
FAIL If request.[[state]] is "interactive", then return a promise rejected with an "InvalidStateError" DOMException. assert_unreached: Should have rejected: undefined Reached unreachable code
FAIL If request.[[state]] is "closed", then return a promise rejected with an "InvalidStateError" DOMException. promise_test: Unhandled rejection with value: object "InvalidStateError: The object is in an invalid state."
PASS If request.[[state]] is "created", then return a promise that resolves to true for known method. 
PASS All methods are unsupported 
PASS Mix of supported and unsupported methods, at least one method is supported. 

