[payment-request-constructor.https.html]
  [Use provided request ID]
    expected: FAIL

  [If the length of the methodData sequence is zero, then throw a TypeError]
    expected: FAIL

  [If the length of the paymentMethod.supportedMethods sequence is zero, then throw a TypeError]
    expected: FAIL

  [Method data must be JSON-serializable object (a list in this case)]
    expected: FAIL

  [Method data must be JSON-serializable object (a dictionary in this case)]
    expected: FAIL

  [Rethrow any exceptions of JSON-serializing paymentMethod.data into a string]
    expected: FAIL

  [If details.total.amount.value is not a valid decimal monetary value (in this case "-"), then throw a TypeError]
    expected: FAIL

  [If details.total.amount.value is not a valid decimal monetary value (in this case "notdigits"), then throw a TypeError]
    expected: FAIL

  [If details.total.amount.value is not a valid decimal monetary value (in this case "ALSONOTDIGITS"), then throw a TypeError]
    expected: FAIL

  [If details.total.amount.value is not a valid decimal monetary value (in this case "10."), then throw a TypeError]
    expected: FAIL

  [If details.total.amount.value is not a valid decimal monetary value (in this case ".99"), then throw a TypeError]
    expected: FAIL

  [If details.total.amount.value is not a valid decimal monetary value (in this case "-10."), then throw a TypeError]
    expected: FAIL

  [If details.total.amount.value is not a valid decimal monetary value (in this case "-.99"), then throw a TypeError]
    expected: FAIL

  [If details.total.amount.value is not a valid decimal monetary value (in this case "10-"), then throw a TypeError]
    expected: FAIL

  [If details.total.amount.value is not a valid decimal monetary value (in this case "1-0"), then throw a TypeError]
    expected: FAIL

  [If details.total.amount.value is not a valid decimal monetary value (in this case "1.0.0"), then throw a TypeError]
    expected: FAIL

  [If details.total.amount.value is not a valid decimal monetary value (in this case "1/3"), then throw a TypeError]
    expected: FAIL

  [If details.total.amount.value is not a valid decimal monetary value (in this case ""), then throw a TypeError]
    expected: FAIL

  [If details.total.amount.value is not a valid decimal monetary value (in this case "null"), then throw a TypeError]
    expected: FAIL

  [If the first character of details.total.amount.value is U+002D HYPHEN-MINUS, then throw a TypeError]
    expected: FAIL

  [For each item in details.displayItems: if item.amount.value is not a valid decimal monetary value (in this case "-"), then throw a TypeError]
    expected: FAIL

  [For each item in details.displayItems: if item.amount.value is not a valid decimal monetary value (in this case "notdigits"), then throw a TypeError]
    expected: FAIL

  [For each item in details.displayItems: if item.amount.value is not a valid decimal monetary value (in this case "ALSONOTDIGITS"), then throw a TypeError]
    expected: FAIL

  [For each item in details.displayItems: if item.amount.value is not a valid decimal monetary value (in this case "10."), then throw a TypeError]
    expected: FAIL

  [For each item in details.displayItems: if item.amount.value is not a valid decimal monetary value (in this case ".99"), then throw a TypeError]
    expected: FAIL

  [For each item in details.displayItems: if item.amount.value is not a valid decimal monetary value (in this case "-10."), then throw a TypeError]
    expected: FAIL

  [For each item in details.displayItems: if item.amount.value is not a valid decimal monetary value (in this case "-.99"), then throw a TypeError]
    expected: FAIL

  [For each item in details.displayItems: if item.amount.value is not a valid decimal monetary value (in this case "10-"), then throw a TypeError]
    expected: FAIL

  [For each item in details.displayItems: if item.amount.value is not a valid decimal monetary value (in this case "1-0"), then throw a TypeError]
    expected: FAIL

  [For each item in details.displayItems: if item.amount.value is not a valid decimal monetary value (in this case "1.0.0"), then throw a TypeError]
    expected: FAIL

  [For each item in details.displayItems: if item.amount.value is not a valid decimal monetary value (in this case "1/3"), then throw a TypeError]
    expected: FAIL

  [For each item in details.displayItems: if item.amount.value is not a valid decimal monetary value (in this case ""), then throw a TypeError]
    expected: FAIL

  [For each item in details.displayItems: if item.amount.value is not a valid decimal monetary value (in this case "null"), then throw a TypeError]
    expected: FAIL

  [Modifier data must be JSON-serializable object (a list in this case)]
    expected: FAIL

  [Modifier data must be JSON-serializable object (a dictionary in this case)]
    expected: FAIL

  [Rethrow any exceptions of JSON-serializing modifier.data into a string]
    expected: FAIL

  [Total is required]
    expected: FAIL

  [Label is required]
    expected: FAIL

  [Amount is required]
    expected: FAIL

  [Amount value is required]
    expected: FAIL

  [Amount currency is required]
    expected: FAIL

  [Shipping type should be valid]
    expected: FAIL

  [If details.id is missing, assign a identifier]
    expected: FAIL

  [If details.id is missing, assign a unique identifier]
    expected: FAIL

  [If the same id is provided, then use it]
    expected: FAIL

  [Use ids even if they are strange]
    expected: FAIL

  [Method data must be JSON-serializable object (an object in this case)]
    expected: FAIL

  [If details.total.amount.value is not a valid decimal monetary value (in this case " 1.0  "), then throw a TypeError]
    expected: FAIL

  [If details.total.amount.value is not a valid decimal monetary value (in this case " 1.0 "), then throw a TypeError]
    expected: FAIL

  [If details.total.amount.value is not a valid decimal monetary value (in this case "1.0 "), then throw a TypeError]
    expected: FAIL

  [If details.total.amount.value is not a valid decimal monetary value (in this case "USD$1.0"), then throw a TypeError]
    expected: FAIL

  [If details.total.amount.value is not a valid decimal monetary value (in this case "$1.0"), then throw a TypeError]
    expected: FAIL

  [If details.total.amount.value is not a valid decimal monetary value (in this case " 1.0"), then throw a TypeError]
    expected: FAIL

  [If details.total.amount.value is not a valid decimal monetary value (in this case "-1"), then throw a TypeError]
    expected: FAIL

  [If details.total.amount.value is not a valid decimal monetary value (in this case "-1.0"), then throw a TypeError]
    expected: FAIL

  [If details.total.amount.value is not a valid decimal monetary value (in this case "-1.00"), then throw a TypeError]
    expected: FAIL

  [If details.total.amount.value is not a valid decimal monetary value (in this case "-1000.000"), then throw a TypeError]
    expected: FAIL

  [PaymentDetailsBase.0 can be 0 length]
    expected: FAIL

  [PaymentDetailsBase.1 can be 0 length]
    expected: FAIL

  [PaymentDetailsBase.2 can be 0 length]
    expected: FAIL

  [For each item in details.displayItems: if item.amount.value is not a valid decimal monetary value (in this case " 1.0  "), then throw a TypeError]
    expected: FAIL

  [For each item in details.displayItems: if item.amount.value is not a valid decimal monetary value (in this case " 1.0 "), then throw a TypeError]
    expected: FAIL

  [For each item in details.displayItems: if item.amount.value is not a valid decimal monetary value (in this case "1.0 "), then throw a TypeError]
    expected: FAIL

  [For each item in details.displayItems: if item.amount.value is not a valid decimal monetary value (in this case "USD$1.0"), then throw a TypeError]
    expected: FAIL

  [For each item in details.displayItems: if item.amount.value is not a valid decimal monetary value (in this case "$1.0"), then throw a TypeError]
    expected: FAIL

  [For each item in details.displayItems: if item.amount.value is not a valid decimal monetary value (in this case " 1.0"), then throw a TypeError]
    expected: FAIL

  [Negative values are allowed for displayItems.amount.value, irrespective of total amount]
    expected: FAIL

  [it handles high precision currency values without throwing]
    expected: FAIL

  [For each option in details.shippingOptions: if option.amount.value is not a valid decimal monetary value (in this case "-"), then throw a TypeError]
    expected: FAIL

  [For each option in details.shippingOptions: if option.amount.value is not a valid decimal monetary value (in this case "notdigits"), then throw a TypeError]
    expected: FAIL

  [For each option in details.shippingOptions: if option.amount.value is not a valid decimal monetary value (in this case "ALSONOTDIGITS"), then throw a TypeError]
    expected: FAIL

  [For each option in details.shippingOptions: if option.amount.value is not a valid decimal monetary value (in this case "10."), then throw a TypeError]
    expected: FAIL

  [For each option in details.shippingOptions: if option.amount.value is not a valid decimal monetary value (in this case ".99"), then throw a TypeError]
    expected: FAIL

  [For each option in details.shippingOptions: if option.amount.value is not a valid decimal monetary value (in this case "-10."), then throw a TypeError]
    expected: FAIL

  [For each option in details.shippingOptions: if option.amount.value is not a valid decimal monetary value (in this case "-.99"), then throw a TypeError]
    expected: FAIL

  [For each option in details.shippingOptions: if option.amount.value is not a valid decimal monetary value (in this case "10-"), then throw a TypeError]
    expected: FAIL

  [For each option in details.shippingOptions: if option.amount.value is not a valid decimal monetary value (in this case "1-0"), then throw a TypeError]
    expected: FAIL

  [For each option in details.shippingOptions: if option.amount.value is not a valid decimal monetary value (in this case "1.0.0"), then throw a TypeError]
    expected: FAIL

  [For each option in details.shippingOptions: if option.amount.value is not a valid decimal monetary value (in this case "1/3"), then throw a TypeError]
    expected: FAIL

  [For each option in details.shippingOptions: if option.amount.value is not a valid decimal monetary value (in this case ""), then throw a TypeError]
    expected: FAIL

  [For each option in details.shippingOptions: if option.amount.value is not a valid decimal monetary value (in this case "null"), then throw a TypeError]
    expected: FAIL

  [For each option in details.shippingOptions: if option.amount.value is not a valid decimal monetary value (in this case " 1.0  "), then throw a TypeError]
    expected: FAIL

  [For each option in details.shippingOptions: if option.amount.value is not a valid decimal monetary value (in this case " 1.0 "), then throw a TypeError]
    expected: FAIL

  [For each option in details.shippingOptions: if option.amount.value is not a valid decimal monetary value (in this case "1.0 "), then throw a TypeError]
    expected: FAIL

  [For each option in details.shippingOptions: if option.amount.value is not a valid decimal monetary value (in this case "USD$1.0"), then throw a TypeError]
    expected: FAIL

  [For each option in details.shippingOptions: if option.amount.value is not a valid decimal monetary value (in this case "$1.0"), then throw a TypeError]
    expected: FAIL

  [For each option in details.shippingOptions: if option.amount.value is not a valid decimal monetary value (in this case " 1.0"), then throw a TypeError]
    expected: FAIL

  [If there is no selected shipping option, then PaymentRequest.shippingOption remains null]
    expected: FAIL

  [If there is a selected shipping option, then it becomes synchronously selected]
    expected: FAIL

  [If there is a multiple selected shipping options, only the last is selected]
    expected: FAIL

  [If there are any duplicate shipping option ids, then there are no shipping options]
    expected: FAIL

  [If modifier.total.amount.value is not a valid decimal monetary value (in this case "-"), then throw a TypeError]
    expected: FAIL

  [If modifier.total.amount.value is not a valid decimal monetary value (in this case "notdigits"), then throw a TypeError]
    expected: FAIL

  [If modifier.total.amount.value is not a valid decimal monetary value (in this case "ALSONOTDIGITS"), then throw a TypeError]
    expected: FAIL

  [If modifier.total.amount.value is not a valid decimal monetary value (in this case "10."), then throw a TypeError]
    expected: FAIL

  [If modifier.total.amount.value is not a valid decimal monetary value (in this case ".99"), then throw a TypeError]
    expected: FAIL

  [If modifier.total.amount.value is not a valid decimal monetary value (in this case "-10."), then throw a TypeError]
    expected: FAIL

  [If modifier.total.amount.value is not a valid decimal monetary value (in this case "-.99"), then throw a TypeError]
    expected: FAIL

  [If modifier.total.amount.value is not a valid decimal monetary value (in this case "10-"), then throw a TypeError]
    expected: FAIL

  [If modifier.total.amount.value is not a valid decimal monetary value (in this case "1-0"), then throw a TypeError]
    expected: FAIL

  [If modifier.total.amount.value is not a valid decimal monetary value (in this case "1.0.0"), then throw a TypeError]
    expected: FAIL

  [If modifier.total.amount.value is not a valid decimal monetary value (in this case "1/3"), then throw a TypeError]
    expected: FAIL

  [If modifier.total.amount.value is not a valid decimal monetary value (in this case ""), then throw a TypeError]
    expected: FAIL

  [If modifier.total.amount.value is not a valid decimal monetary value (in this case "null"), then throw a TypeError]
    expected: FAIL

  [If modifier.total.amount.value is not a valid decimal monetary value (in this case " 1.0  "), then throw a TypeError]
    expected: FAIL

  [If modifier.total.amount.value is not a valid decimal monetary value (in this case " 1.0 "), then throw a TypeError]
    expected: FAIL

  [If modifier.total.amount.value is not a valid decimal monetary value (in this case "1.0 "), then throw a TypeError]
    expected: FAIL

  [If modifier.total.amount.value is not a valid decimal monetary value (in this case "USD$1.0"), then throw a TypeError]
    expected: FAIL

  [If modifier.total.amount.value is not a valid decimal monetary value (in this case "$1.0"), then throw a TypeError]
    expected: FAIL

  [If modifier.total.amount.value is not a valid decimal monetary value (in this case " 1.0"), then throw a TypeError]
    expected: FAIL

  [If modifier.total.amount.value is not a valid decimal monetary value (in this case "-1"), then throw a TypeError]
    expected: FAIL

  [If modifier.total.amount.value is not a valid decimal monetary value (in this case "-1.0"), then throw a TypeError]
    expected: FAIL

  [If modifier.total.amount.value is not a valid decimal monetary value (in this case "-1.00"), then throw a TypeError]
    expected: FAIL

  [If modifier.total.amount.value is not a valid decimal monetary value (in this case "-1000.000"), then throw a TypeError]
    expected: FAIL

  [If amount.value of additionalDisplayItems is is not a valid decimal monetary value (in this case "-"), then throw a TypeError]
    expected: FAIL

  [If amount.value of additionalDisplayItems is is not a valid decimal monetary value (in this case "notdigits"), then throw a TypeError]
    expected: FAIL

  [If amount.value of additionalDisplayItems is is not a valid decimal monetary value (in this case "ALSONOTDIGITS"), then throw a TypeError]
    expected: FAIL

  [If amount.value of additionalDisplayItems is is not a valid decimal monetary value (in this case "10."), then throw a TypeError]
    expected: FAIL

  [If amount.value of additionalDisplayItems is is not a valid decimal monetary value (in this case ".99"), then throw a TypeError]
    expected: FAIL

  [If amount.value of additionalDisplayItems is is not a valid decimal monetary value (in this case "-10."), then throw a TypeError]
    expected: FAIL

  [If amount.value of additionalDisplayItems is is not a valid decimal monetary value (in this case "-.99"), then throw a TypeError]
    expected: FAIL

  [If amount.value of additionalDisplayItems is is not a valid decimal monetary value (in this case "10-"), then throw a TypeError]
    expected: FAIL

  [If amount.value of additionalDisplayItems is is not a valid decimal monetary value (in this case "1-0"), then throw a TypeError]
    expected: FAIL

  [If amount.value of additionalDisplayItems is is not a valid decimal monetary value (in this case "1.0.0"), then throw a TypeError]
    expected: FAIL

  [If amount.value of additionalDisplayItems is is not a valid decimal monetary value (in this case "1/3"), then throw a TypeError]
    expected: FAIL

  [If amount.value of additionalDisplayItems is is not a valid decimal monetary value (in this case ""), then throw a TypeError]
    expected: FAIL

  [If amount.value of additionalDisplayItems is is not a valid decimal monetary value (in this case "null"), then throw a TypeError]
    expected: FAIL

  [If amount.value of additionalDisplayItems is is not a valid decimal monetary value (in this case " 1.0  "), then throw a TypeError]
    expected: FAIL

  [If amount.value of additionalDisplayItems is is not a valid decimal monetary value (in this case " 1.0 "), then throw a TypeError]
    expected: FAIL

  [If amount.value of additionalDisplayItems is is not a valid decimal monetary value (in this case "1.0 "), then throw a TypeError]
    expected: FAIL

  [If amount.value of additionalDisplayItems is is not a valid decimal monetary value (in this case "USD$1.0"), then throw a TypeError]
    expected: FAIL

  [If amount.value of additionalDisplayItems is is not a valid decimal monetary value (in this case "$1.0"), then throw a TypeError]
    expected: FAIL

  [If amount.value of additionalDisplayItems is is not a valid decimal monetary value (in this case " 1.0"), then throw a TypeError]
    expected: FAIL

  [Modifier data must be JSON-serializable object (a object in this case)]
    expected: FAIL

  [PaymentRequest.shippingAddress must initially be null]
    expected: FAIL

  [If options.requestShipping is not set, then request.shippingType attribute is null.]
    expected: FAIL

  [If options.requestShipping is true, request.shippingType will be options.shippingType.]
    expected: FAIL

  [If details.id is missing, assign an identifier]
    expected: FAIL

  [ignore invalid payment method URLs]
    expected: FAIL

  [Modifier method data must be JSON-serializable object]
    expected: FAIL

  [If details.total.amount.value is not a valid decimal monetary value, then throw a TypeError]
    expected: FAIL

  [PaymentDetailsBase members can be 0 length]
    expected: FAIL

  [For each item in details.displayItems: if item.amount.value is not a valid decimal monetary value, then throw a TypeError]
    expected: FAIL

  [For each option in details.shippingOptions: if option.amount.value is not a valid decimal monetary value, then throw a TypeError]
    expected: FAIL

  [Throw TypeError if modifier.total.amount.value is not a valid decimal monetary value]
    expected: FAIL

  [If amount.value of additionalDisplayItems is not a valid decimal monetary value, then throw a TypeError]
    expected: FAIL

  [Modifier data must be JSON-serializable object (an Array in this case)]
    expected: FAIL

  [Modifier data must be JSON-serializable object (an Object in this case)]
    expected: FAIL

  [Rethrow any exceptions of JSON-serializing modifier.data]
    expected: FAIL

  [If there is a selected shipping option, and requestShipping is set, then that option becomes synchronously selected]
    expected: FAIL

  [If requestShipping is set, and if there is a multiple selected shipping options, only the last is selected.]
    expected: FAIL

  [If there are any duplicate shipping option ids, and shipping is requested, then throw a TypeError]
    expected: FAIL

  [Throw when there are duplicate shippingOption ids, even if other values are different]
    expected: FAIL

