-
Notifications
You must be signed in to change notification settings - Fork 69
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Migrate the Shopper Renew Subscription E2E test to Playwright (#10144)
- Loading branch information
1 parent
95473ac
commit b763f99
Showing
9 changed files
with
195 additions
and
97 deletions.
There are no files selected for viewing
4 changes: 4 additions & 0 deletions
4
changelog/dev-10084-shopper-myaccount-renew-subscription-e2e-test
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
Significance: patch | ||
Type: dev | ||
|
||
Migrate the Shopper Renew Subscription spec to Playwright and remove the corresponding Puppeteer test. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -76,25 +76,25 @@ export const config = { | |
}, | ||
'subscriptions-customer': { | ||
billing: { | ||
first_name: 'I am', | ||
last_name: 'Subscriptions Customer', | ||
firstname: 'I am', | ||
lastname: 'Subscriptions Customer', | ||
company: 'Automattic', | ||
country: 'United States (US)', | ||
address_1: '60 29th Street #343', | ||
address_2: 'billing', | ||
addressfirstline: '60 29th Street #343', | ||
addresssecondline: 'billing', | ||
city: 'San Francisco', | ||
state: 'CA', | ||
postcode: '94110', | ||
phone: '123456789', | ||
email: '[email protected]', | ||
}, | ||
shipping: { | ||
first_name: 'I am', | ||
last_name: 'Subscriptions Recipient', | ||
firstname: 'I am', | ||
lastname: 'Subscriptions Recipient', | ||
company: 'Automattic', | ||
country: 'United States (US)', | ||
address_1: '60 29th Street #343', | ||
address_2: 'shipping', | ||
addressfirstline: '60 29th Street #343', | ||
addresssecondline: 'shipping', | ||
city: 'San Francisco', | ||
state: 'CA', | ||
postcode: '94110', | ||
|
78 changes: 78 additions & 0 deletions
78
tests/e2e-pw/specs/shopper/shopper-myaccount-renew-subscription.spec.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,78 @@ | ||
/** | ||
* External dependencies | ||
*/ | ||
import { test, expect, Page } from '@playwright/test'; | ||
|
||
/** | ||
* Internal dependencies | ||
*/ | ||
import { config } from '../../config/default'; | ||
import { describeif, getAnonymousShopper } from '../../utils/helpers'; | ||
import * as shopper from '../../utils/shopper'; | ||
import * as navigation from '../../utils/shopper-navigation'; | ||
import { products, shouldRunSubscriptionsTests } from '../../utils/constants'; | ||
import RestAPI from '../../utils/rest-api'; | ||
|
||
describeif( shouldRunSubscriptionsTests )( | ||
'Subscriptions > Renew a subscription in my account', | ||
() => { | ||
const customerBillingConfig = | ||
config.addresses[ 'subscriptions-customer' ].billing; | ||
|
||
let subscriptionId: string; | ||
let page: Page; | ||
|
||
test.beforeAll( async ( { browser }, { project } ) => { | ||
const restApi = new RestAPI( project.use.baseURL ); | ||
await restApi.deleteCustomerByEmailAddress( | ||
customerBillingConfig.email | ||
); | ||
|
||
const { shopperPage } = await getAnonymousShopper( browser ); | ||
page = shopperPage; | ||
} ); | ||
|
||
test( 'should be able to purchase a subscription', async () => { | ||
await shopper.addCartProduct( | ||
page, | ||
products.SUBSCRIPTION_SIGNUP_FEE | ||
); | ||
await shopper.setupCheckout( page, customerBillingConfig ); | ||
await shopper.fillCardDetails( page, config.cards.basic ); | ||
await shopper.placeOrder( page ); | ||
await expect( | ||
page.getByRole( 'heading', { name: 'Order received' } ) | ||
).toBeVisible(); | ||
|
||
subscriptionId = await page | ||
.getByLabel( 'View subscription number' ) | ||
.innerText(); | ||
} ); | ||
|
||
test( 'should be able to renew a subscription in my account', async () => { | ||
await navigation.goToSubscriptions( page ); | ||
|
||
if ( ! subscriptionId ) { | ||
throw new Error( 'Subscription ID is not set' ); | ||
} | ||
|
||
const numericSubscriptionId = subscriptionId.substring( 1 ); | ||
|
||
await page | ||
.getByLabel( | ||
`View subscription number ${ numericSubscriptionId }` | ||
) | ||
.click(); | ||
|
||
await page.getByText( 'Renew now' ).click(); | ||
await page | ||
.getByText( 'Complete checkout to renew now.' ) | ||
.isVisible(); | ||
await shopper.focusPlaceOrderButton( page ); | ||
await shopper.placeOrder( page ); | ||
await expect( | ||
page.getByRole( 'heading', { name: 'Order received' } ) | ||
).toBeVisible(); | ||
} ); | ||
} | ||
); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
export const shouldRunSubscriptionsTests = | ||
process.env.SKIP_WC_SUBSCRIPTIONS_TESTS !== '1'; | ||
|
||
export const products = { | ||
SUBSCRIPTION_SIGNUP_FEE: 70, | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
/** | ||
* External dependencies | ||
*/ | ||
import { HTTPClientFactory } from '@woocommerce/api'; | ||
|
||
/** | ||
* Internal dependencies | ||
*/ | ||
import { config } from '../config/default'; | ||
|
||
const userEndpoint = '/wp/v2/users'; | ||
|
||
class RestAPI { | ||
private baseUrl: string; | ||
|
||
constructor( baseUrl: string ) { | ||
if ( ! baseUrl ) { | ||
throw new Error( 'Base URL is required.' ); | ||
} | ||
this.baseUrl = baseUrl; | ||
} | ||
|
||
private getAdminClient() { | ||
return HTTPClientFactory.build( this.baseUrl ) | ||
.withBasicAuth( | ||
config.users.admin.username, | ||
config.users.admin.password | ||
) | ||
.create(); | ||
} | ||
|
||
/** | ||
* Deletes a customer account by their email address if the user exists. | ||
* | ||
* Copied from https://github.com/woocommerce/woocommerce/blob/trunk/packages/js/e2e-utils/src/flows/with-rest-api.js#L374 | ||
* | ||
* @param {string} emailAddress Customer user account email address. | ||
* @return {Promise<void>} | ||
*/ | ||
async deleteCustomerByEmailAddress( | ||
emailAddress: string | ||
): Promise< void > { | ||
const client = this.getAdminClient(); | ||
|
||
const query = { | ||
search: emailAddress, | ||
context: 'edit', | ||
}; | ||
const customers = await client.get( userEndpoint, query ); | ||
|
||
if ( customers.data && customers.data.length ) { | ||
for ( let c = 0; c < customers.data.length; c++ ) { | ||
const deleteUser = { | ||
id: customers.data[ c ].id, | ||
force: true, | ||
reassign: 1, | ||
}; | ||
|
||
await client.delete( | ||
`${ userEndpoint }/${ deleteUser.id }`, | ||
deleteUser | ||
); | ||
} | ||
} | ||
} | ||
} | ||
|
||
export default RestAPI; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
81 changes: 0 additions & 81 deletions
81
tests/e2e/specs/subscriptions/shopper/shopper-myaccount-renew-subscription.spec.js
This file was deleted.
Oops, something went wrong.