[Flaky Test] Wait for cart response after applying coupons (#50996)

* Wait for cart response after applying coupons

* Add changefile(s) from automation for the following project(s): woocommerce

* Add changefile(s) from automation for the following project(s): woocommerce

* trigger CI

* Delete plugins/woocommerce/changelog/50995-fix-flaky—cart—oupon-test-50928

---------

Co-authored-by: github-actions <github-actions@github.com>
This commit is contained in:
Mike Jolley 2024-08-28 16:55:18 +01:00 committed by GitHub
parent d9a47a15a9
commit 0aae5fd859
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 23 additions and 2 deletions

View File

@ -0,0 +1,4 @@
Significance: patch
Type: tweak
Comment: Fixes a flaky coupon test.

View File

@ -8,6 +8,13 @@ const excludedProductName = 'Excluded test product';
const includedCategoryName = 'Included Category'; const includedCategoryName = 'Included Category';
const excludedCategoryName = 'Excluded Category'; const excludedCategoryName = 'Excluded Category';
// This waits for the cart page to refresh after applying the coupon to prevent flakyness.
const awaitCartPageResponse = ( page ) =>
page.waitForResponse(
( response ) =>
response.url().includes( '/cart/' ) && response.status() === 200
);
test.describe( test.describe(
'Cart & Checkout Restricted Coupons', 'Cart & Checkout Restricted Coupons',
{ tag: [ '@payments', '@services', '@hpos' ] }, { tag: [ '@payments', '@services', '@hpos' ] },
@ -198,6 +205,7 @@ test.describe(
await page await page
.getByRole( 'button', { name: 'Apply coupon' } ) .getByRole( 'button', { name: 'Apply coupon' } )
.click(); .click();
await awaitCartPageResponse( page );
await expect( await expect(
page.getByText( 'This coupon has expired.' ) page.getByText( 'This coupon has expired.' )
).toBeVisible(); ).toBeVisible();
@ -240,6 +248,7 @@ test.describe(
await page await page
.getByRole( 'button', { name: 'Apply coupon' } ) .getByRole( 'button', { name: 'Apply coupon' } )
.click(); .click();
await awaitCartPageResponse( page );
// failed because we need to have at least $50 in cart (single product is only $20) // failed because we need to have at least $50 in cart (single product is only $20)
await expect( await expect(
page.getByText( page.getByText(
@ -258,6 +267,7 @@ test.describe(
await page await page
.getByRole( 'button', { name: 'Apply coupon' } ) .getByRole( 'button', { name: 'Apply coupon' } )
.click(); .click();
await awaitCartPageResponse( page );
await expect( await expect(
page.getByText( 'Coupon code applied successfully.' ) page.getByText( 'Coupon code applied successfully.' )
).toBeVisible(); ).toBeVisible();
@ -270,6 +280,7 @@ test.describe(
await page await page
.getByRole( 'button', { name: 'Apply coupon' } ) .getByRole( 'button', { name: 'Apply coupon' } )
.click(); .click();
await awaitCartPageResponse( page );
await expect( await expect(
page.getByText( page.getByText(
'Sorry, coupon "min-max-spend-individual" has already been applied and cannot be used in conjunction with other coupons.' 'Sorry, coupon "min-max-spend-individual" has already been applied and cannot be used in conjunction with other coupons.'
@ -356,7 +367,8 @@ test.describe(
await page await page
.getByRole( 'button', { name: 'Apply coupon' } ) .getByRole( 'button', { name: 'Apply coupon' } )
.click(); .click();
// failed because this product is on sale await awaitCartPageResponse( page );
// failed because this product is on sale.
await expect( await expect(
page.getByText( page.getByText(
'Sorry, this coupon is not valid for sale items.' 'Sorry, this coupon is not valid for sale items.'
@ -440,6 +452,7 @@ test.describe(
await page await page
.getByRole( 'button', { name: 'Apply coupon' } ) .getByRole( 'button', { name: 'Apply coupon' } )
.click(); .click();
await awaitCartPageResponse( page );
// failed because this coupon code has been used too much // failed because this coupon code has been used too much
await expect( await expect(
page.getByText( page.getByText(
@ -492,6 +505,7 @@ test.describe(
await page await page
.getByRole( 'button', { name: 'Apply coupon' } ) .getByRole( 'button', { name: 'Apply coupon' } )
.click(); .click();
await awaitCartPageResponse( page );
// failed because this product is not included for coupon // failed because this product is not included for coupon
await expect( await expect(
page.getByText( page.getByText(
@ -540,6 +554,7 @@ test.describe(
await page await page
.getByRole( 'button', { name: 'Apply coupon' } ) .getByRole( 'button', { name: 'Apply coupon' } )
.click(); .click();
await awaitCartPageResponse( page );
// succeeded // succeeded
await expect( await expect(
page.getByText( 'Coupon code applied successfully.' ) page.getByText( 'Coupon code applied successfully.' )
@ -584,6 +599,7 @@ test.describe(
await page await page
.getByRole( 'button', { name: 'Apply coupon' } ) .getByRole( 'button', { name: 'Apply coupon' } )
.click(); .click();
await awaitCartPageResponse( page );
// failed because this product is excluded from coupon // failed because this product is excluded from coupon
await expect( await expect(
page.getByText( page.getByText(
@ -632,6 +648,7 @@ test.describe(
await page await page
.getByRole( 'button', { name: 'Apply coupon' } ) .getByRole( 'button', { name: 'Apply coupon' } )
.click(); .click();
await awaitCartPageResponse( page );
// succeeded // succeeded
await expect( await expect(
page.getByText( 'Coupon code applied successfully.' ) page.getByText( 'Coupon code applied successfully.' )
@ -672,7 +689,7 @@ test.describe(
.getByPlaceholder( 'Coupon code' ) .getByPlaceholder( 'Coupon code' )
.fill( 'email-restricted' ); .fill( 'email-restricted' );
await page.getByRole( 'button', { name: 'Apply coupon' } ).click(); await page.getByRole( 'button', { name: 'Apply coupon' } ).click();
await awaitCartPageResponse( page );
await expect( await expect(
page.getByText( page.getByText(
'Please enter a valid email at checkout to use coupon code "email-restricted".' 'Please enter a valid email at checkout to use coupon code "email-restricted".'