The following is a list of required and recommended testing you should complete before launching your Google Wallet API integration. Appropriate testing varies by use case. You should carefully test all expected functionality of your integration to ensure the best experience for your users.

## Prerequisites

You are required to create at least one loyalty card object and
add the pass to Google Wallet on Android-powered device before commencing testing.

## Required testing

Google uses the criteria in the following tables to determine if your Cards are ready for public release. Before you launch, verify each item to ensure you are ready to submit your Card for
release.

### Button tests

This section lists criteria for tests that exercise the **Add to Google Wallet** button.

| Test | Expected result |
|---|---|
| Test button in Chrome browser. | Button renders and functions correctly on partner's web page in Chrome. |
| Test button in Firefox browser. | Button renders and functions correctly on partner's web page in Firefox. |
| Test button in Safari browser. | Button renders and functions correctly on partner's web page in Safari. |
| Test button in Internet Explorer 9 browser. | Button renders and functions correctly on partner's web page in Internet Explorer 9 (Citrix). |
| Test button at different browser zoom levels. | Button renders properly at various browser zoom levels. |
| Test button's rendering speed. | A single button renders in no more than 1 second. |
| If you have designed your website so that the **Add to Google Wallet** button disappears after a loyalty card was saved: 1. Click the **Add to Google Wallet** button on your website 2. Remove the saved card from Google Wallet | The **Add to Google Wallet** button reappears on your website. |
| If you have designed your website so that the **Add to Google Wallet** button disappears after a loyalty card was saved. | A string appears to indicate that the loyalty card has been saved. |

### 'Add to Google Wallet' button and link tests

This section lists criteria for tests that exercise clicking the **Add to Google Wallet**
button.

| Test | Expected result |
|---|---|
| Click **Add to Google Wallet** button on your website. | The JWT that is created contains all valid domains for button (`https` and `http`, not `www`) |
| Click **Add to Google Wallet** button on your website. | The correct card is saved to Google Wallet. |
| Click **Add to Google Wallet** button on your website. | The card is saved and you cannot press the button again. |
| Click **Add to Google Wallet** button on your website. | The JWT that is created references a class that is `approved`. |

### Brand guideline tests

This section lists criteria to check the brand guidelines of the **Add to Google Wallet**
button.

| Test | Expected result |
|---|---|
| Ensure your button adheres to the [**Add to Google Wallet** button placement](https://developers.google.com/wallet/retail/loyalty-cards/resources/brand-guidelines.md.txt#best-practices-for-button-placement) section of the Brand guidelines. | N/A |
| Ensure your button adheres to the [**Add to Google Wallet** button design](https://developers.google.com/wallet/retail/loyalty-cards/resources/brand-guidelines.md.txt#design) section of the Brand guidelines. | N/A |

## Recommended testing

Google suggests the criteria in the following tables to determine if your loyalty card is ready for public release. All UI testing should be done with the use of the Google Wallet app on Android-based devices.

### General functionality tests

This section lists criteria for general functional tests.

| Test | Expected result |
|---|---|
| Validate contact information provided with the loyalty card (if applicable). | All contact information is valid and up to date. |

### Passes Classes and Passes Objects tests

This section lists criteria for tests that exercise Passes Class or Passes Object functionality.

| Test | Expected result |
|---|---|
| Add a message to the class using the [REST API.](https://developers.google.com/wallet/retail/loyalty-cards/rest/v1/loyaltyobject) | Message appears at the top of the list of messages in the expanded view of the loyalty card on the Google Wallet app\*. |
| Update the points balance for a consumer's loyalty program. | The updated point balance appears in the loyalty programs list view and expanded view for the specific loyalty card within 24 hours. |
| Change the class that a specific `LoyaltyObject` references to move the consumer to a different loyalty tier (only applicable if your loyalty program has different tiers each represented by a different `LoyaltyClass`). | The new tier appears in the expanded view of the loyalty card on the Google Wallet app within 24 hours. |
| Your class contains a places ID (with associated locations) or latitude/longitude values so that consumers are notified when they are within close proximity to one of your locations. | N/A |
| Travel to within close proximity of a location in your class or places ID. | An alert should occur on your phone indicating there is a merchant nearby for your loyalty card. |
| Classes have a `reviewStatus` of `Approved`. | N/A |

\*You should also test adding messages to individual objects using the
[REST API](https://developers.google.com/wallet/retail/loyalty-cards/rest/v1/loyaltyobject) if you plan on sending messages to
individual users.

### User interface tests

This section lists criteria for tests that exercise general elements of the user interface.

| Test | Expected result |
|---|---|
| Ensure all required fields of your template are populated with correct information. | N/A |
| Ensure your images adhere to all image guidelines in the [Brand guidelines](https://developers.google.com/wallet/retail/loyalty-cards/resources/brand-guidelines.md.txt) | N/A |
| Ensure your string values adhere to all headings guidelines in the [Brand guidelines](https://developers.google.com/wallet/retail/loyalty-cards/resources/brand-guidelines.md.txt#headings-labels-and-names). | N/A |
| loyalty card renders correctly on device. | N/A |
| Click the website link in Google Wallet app for your loyalty program. | Website link should bring up correct merchant web page. |
| Merchant does not display barcode if they don't have barcode scanning capabilities in their stores. | N/A |

### In-store tests

This section lists criteria for tests to be carried out at in-store locations.

| Test | Expected result |
|---|---|
| Test barcode scanning at merchant point of sale with Google Wallet app. | Barcode scans and loyalty card is conveyed. |
| Merchant's service personnel trained to handle loyalty scanning. | N/A |