summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/payment-handler/supports-shipping-contact-delegation-manual.https.html
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/payment-handler/supports-shipping-contact-delegation-manual.https.html')
-rw-r--r--testing/web-platform/tests/payment-handler/supports-shipping-contact-delegation-manual.https.html88
1 files changed, 88 insertions, 0 deletions
diff --git a/testing/web-platform/tests/payment-handler/supports-shipping-contact-delegation-manual.https.html b/testing/web-platform/tests/payment-handler/supports-shipping-contact-delegation-manual.https.html
new file mode 100644
index 0000000000..939e542926
--- /dev/null
+++ b/testing/web-platform/tests/payment-handler/supports-shipping-contact-delegation-manual.https.html
@@ -0,0 +1,88 @@
+<!DOCTYPE html>
+<meta charset="utf-8" />
+<title>Tests for Delegation of shipping and contact collection to PH</title>
+<link rel="manifest" href="/payment-handler/manifest.json" />
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/testdriver.js"></script>
+<script src="/resources/testdriver-vendor.js"></script>
+<script src="register-and-activate-service-worker.js"></script>
+<p>If the payment sheet is shown, please authorize the mock payment.</p>
+<script>
+ async function runTests(registration) {
+ const methodName = window.location.origin + '/payment-handler/payment-app/';
+ await registration.paymentManager.instruments.clear();
+ await registration.paymentManager.instruments.set('instrument-key', {
+ name: 'Instrument Name',
+ method: methodName,
+ });
+ await navigator.serviceWorker.ready;
+ await registration.paymentManager.enableDelegations(
+ ['shippingAddress', 'payerName', 'payerPhone', 'payerEmail']);
+
+ promise_test(async (t) => {
+ const request = new PaymentRequest([{supportedMethods: methodName}], {
+ total: {label: 'Total', amount: {currency: 'USD', value: '0.01'}},
+ shippingOptions: [{
+ id: 'freeShippingOption',
+ label: 'Free global shipping',
+ amount: {
+ currency: 'USD',
+ value: '0',
+ },
+ selected: true,
+ }],
+ }, {requestShipping: true});
+
+ const response = await test_driver.bless('showing a payment sheet', () =>
+ request.show()
+ );
+ const complete_promise = response.complete('success');
+
+ // Validate response
+ assert_equals('freeShippingOption', response.shippingOption);
+ assert_equals('Reston', response.shippingAddress.city);
+ assert_equals('US', response.shippingAddress.country);
+ assert_equals('20190', response.shippingAddress.postalCode);
+ assert_equals('VA', response.shippingAddress.region);
+
+ return complete_promise;
+ }, 'Payment handler response should include shipping address and selected shipping option id.');
+
+ promise_test(async (t) => {
+ const request = new PaymentRequest([{
+ supportedMethods: methodName
+ }], {
+ total: {
+ label: 'Total',
+ amount: {
+ currency: 'USD',
+ value: '0.01'
+ }
+ }
+ }, {
+ requestPayerName: true,
+ requestPayerEmail: true,
+ requestPayerPhone: true
+ });
+
+ const response = await test_driver.bless('showing a payment sheet', () =>
+ request.show()
+ );
+ const complete_promise = response.complete('success');
+
+ // Validate response.
+ assert_equals('John Smith', response.payerName);
+ assert_equals('smith@gmail.com', response.payerEmail);
+ assert_equals('+15555555555', response.payerPhone);
+
+ return complete_promise;
+ }, 'Payment handler response should include payer\'s contact information.');
+ }
+
+ registerAndActiveServiceWorker(
+ 'app-supports-shipping-contact-delegation.js',
+ 'payment-app/',
+ runTests
+ );
+</script>