Skip to content

Release testing instructions for WC Payments 3.8.0

Jesse Pearson edited this page Feb 24, 2022 · 8 revisions

Changes to express checkouts settings section and second-level pages

Expected outcome

The settings page express checkouts section should display a simple Apple/Google Pay card where the option can be toggled on and off. All other Apple/Google Pay settings should be consolidated into a second-level settings page, accessible via a Customize link.

Testing instructions

  • Go to **Payments > Settings` via WP-Admin
  • Ensure you see a simple Apple Pay / Google Pay card next to the Express Checkouts section:
  • Make sure the Apple Pay / Google Pay checkbox is selected and save settings
  • From the front end, add an item to the cart, go to checkout, and attempt to checkout with Apple Pay (safari).
  • From the front end, add an item to the cart, go to checkout, and attempt to checkout with Google Pay (chrome).
Second level settings pages
  • Back in WooCommerce Payments settings, select the 'Customize' link next to Apple Pay / Google Pay
  • Ensure you are directed to the Apple Pay / Google Pay second-level settings page:
  • Ensure you can toggle/change the various checkbox and radio fields and saves persist these changes
  • Ensure changing these settings impacts the Apple Pay and Google Pay buttons on the front-end

Add Jetpack Sync to support Woo Mobile apps

Expected outcome

Selected options from a remote site are synced to WPcom without having Jetpack-the-plugin.

Testing instructions

For each step asking to verify the result (starting with Expectation), please do:

  1. Log in wordpress.com with the account you used to connect your test site.
  2. Visit https://developer.wordpress.com/docs/api/console/ and run GET /v1.1/me/sites.

There may be delay in reflecting the correct result but the delay time should not be longer than 5 minutes.

Test case for a new site connecting Jetpack:

  1. If your test site has Jetpack-the-plugin active, DEACTIVATE IT.
  2. If your test has not connected to Jetpack/WP.com, please do that but no need to go through the KYC process on stripe.com. Otherwise, you can use the site from other tests.
  3. In your test site, go to site.com/wp-admin/plugins.php, try deactivating and activating the WooCommerce plugin.
  4. Expectation: options.woocommerce_is_active reflects the state of WooCommerce plugin activation. In other words, this value is true if WooCommerce is active, and false otherwise.

Test case for a site upgrading WCPay:

  1. MUST-DO: Create a new Jurassic test site.
  2. If the test site has Jetpack-the-plugin active, DEACTIVATE IT.
  3. Install "WooCommerce Payments" 3.7.x from WP.org in WP Admin > Plugins > Add new > search for "WooCommerce Payments". DO NOT use the testing zip file at this point.
  4. Activate "WooCommerce Payments" and connect this site to WPcom. (No need to go through KYC in Stripe).
  5. In your test site, go to site.com/wp-admin/plugins.php, try deactivating and activating the WooCommerce plugin.
  6. Expectation: options.woocommerce_is_active is always false.
  7. Make sure that "WooCommerce Payments" and "WooCommerce" are active.
  8. Upload and activate the testing zip file for this week.
  9. Expectation: options.woocommerce_is_active is switched to true.

Cache UPE intents for reuse

When UPE is enabled, new payment or setup intents are created on each load of the Checkout page. This results in a high number of abandoned intents, potentially wasting network resources. This change fixes this behavior by caching the newly created intent in the session. Once cached, it is then reused in the next mounting of UPE.

Expected outcome

Reloading the Checkout page does not lead to the creation of new intent.

Testing instructions

Testing will require you to enable UPE first. Do this by using the "Enable the new Stripe checkout experience" option on the Settings page. Update the store currency as per the payment methods you want to test. Eg. Giropay, iDEAL, etc. will require Euro as the store currency.

Payment Intent
  • Create a new order in the front-end.
  • Open Network tab in browser's dev tools, and visit the Checkout page.
  • On this page, notice an XHR call to create_payment_intent.
  • Reload the page. No fresh XHR call to create_payment_intent should be observed.
  • Complete the payment. The cached intent should be removed. Verify this by visiting the Checkout page again and observing an XHR call to create_payment_intent.
  • Also check if the cached intent is removed when a payment fails. When any of the following is used, reloading the Checkout page should generate a fresh XHR call to create_payment_intent:

FYI: The intent id retrieved from cache or received as a response from create_payment_intent is used only when a new payment method is used. Using saved cards (successfully) will create a new intent on the server, resulting in the UPE intent being abandoned.

Setup Intent
  • Open Network tab in browser's dev tools, and visit My account → Payment methods → Add payment method.
  • On this page, notice an XHR call to init_setup_intent.
  • Reload the page. No fresh XHR call to init_setup_intent should be observed.
  • Add a new payment method.
  • The cached intent should be removed after successfully adding a new PM.
  • Go back to the "Add payment method" page. A fresh XHR call to init_setup_intent will confirm that the previously cached intent was removed.
Example Scenarios
  • New card - successful payment
  • New card - declined
  • New card - authentication failed
  • Saved card - successful payment
  • Saved card - authentication failed
  • New SEPA - successful payment
  • Saved SEPA - successful payment
  • Giropay - successful payment
  • Giropay - failed payment

For a full sanity testing, it's a good idea to see if the remaining UPE methods are not breaking due with the new changes — Bancontact, iDEAL, Sofort, and Przelewy24.

Changes to how order status and notes are set within the plugin

There was an internal refactor that changed how the order statuses were changed and how notes were applied with those changes.

Expected outcome

Specific notes should be added to orders based upon how the order was moved to a certain status.

Testing instructions

Successful order:

  • Add item to cart and check out with test card.
  • View order in admin.
  • Order should be Processing or Completed, depending on if the product is virtual and downloadable.
  • Order should have 3 notes:
    • A payment of TOTAL was started using WooCommerce Payments (INTENT_ID). (Will not show if using a saved card.)
    • Order status changed from Pending payment to Processing.
    • A payment of TOTAL was successfully charged using WooCommerce Payments (CHARGE_ID). Total is the order total, and Charge_Id will be a link to the transaction details page.

Failed order:

  • Add item to cart and check out with 4000000000000002 as your test card.
  • Order will fail.
  • View order in admin.
  • Order should be in Failed status.
  • Order should have 3 notes:
    • A payment of TOTAL was started using WooCommerce Payments (INTENT_ID).
    • Order status changed from Pending payment to Failed.
    • A payment of TOTAL failed using WooCommerce Payments (INTENT_ID). Total is the order total, and Intent_Id will be a link to the transaction details page.

Pending order:

  • Go to Payments > Settings and enable Bancontact as a payment method.
  • Add item to cart and go to checkout page.
  • Update your currency to Euro via MC widget.
  • Select Use a new payment method, and then select Bancontact.
  • Click Place order, but do not complete the order on the next page.
  • View order in admin.
  • Order should be in Pending payment status.
  • Order should have 1 note:
    • A payment of TOTAL was started using WooCommerce Payments (INTENT_ID).

On-hold order:

  • Go to Payments > Settings and then the Transactions and deposits section.
  • Enable the Issue an authorization on checkout, and capture later setting.
  • Add item to cart and check out with test card.
  • View order in admin.
  • Order should be in On Hold status.
  • Order should have 3 notes:
    • A payment of TOTAL was started using WooCommerce Payments (INTENT_ID).
    • Order status changed from Pending payment to On hold.
    • A payment of TOTAL was authorized using WooCommerce Payments (INTENT_ID). Total is the order total, and Intent_Id will be a link to the transaction details page.

Capture authorized payment:

  • Using previous order, go to Order actions at the top right of the order in the admin.
  • Choose Capture charge and either click the right arrow or Update.
  • Order should be Processing or Completed, depending on if the product is virtual and downloadable.
  • Order should have 2 new notes:
    • Order status changed from On hold to Processing.
    • A payment of TOTAL was successfully charged using WooCommerce Payments (CHARGE_ID). Total is the order total, and Charge_Id will be a link to the transaction details page.

Cancel authorized payment:

  • Add item to cart and check out with test card.
  • View order in admin.
  • Order should be in On Hold status.
  • Choose Cancel authorization and either click the right arrow or Update.
  • Order should be in Cancelled status.
  • Order should have 2 notes:
    • Order status changed from On hold to Cancelled.
    • Payment authorization was successfully cancelled.

Capture authorization failure:

  • Enable below snippet in your store, either through theme or Code Snippets.
  • Add item to cart and check out with test card.
  • View order in admin.
  • Order should be in On Hold status.
  • Choose Capture charge and either click the right arrow or Update.
  • Order should remain in On hold status.
  • Order should have 1 new note:
    • A capture of TOTAL failed to complete using WooCommerce Payments (false_id). Error: No such payment_intent: 'false_id'
add_filter( 'woocommerce_order_get_transaction_id', function() {
	return 'false_id';
});
Clone this wiki locally