From 6148382d29a15d53b28c89211f8bfd4767aae4b9 Mon Sep 17 00:00:00 2001 From: Joe D'Amore Date: Fri, 1 Mar 2024 11:23:08 -0500 Subject: [PATCH 1/6] Add intercept util for network utilization API request --- packages/manager/cypress/support/intercepts/account.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/packages/manager/cypress/support/intercepts/account.ts b/packages/manager/cypress/support/intercepts/account.ts index 27838a71068..5d4fb4d5cd7 100644 --- a/packages/manager/cypress/support/intercepts/account.ts +++ b/packages/manager/cypress/support/intercepts/account.ts @@ -610,3 +610,12 @@ export const mockGetAccountLogins = ( paginateResponse(accountLogins) ); }; + +/** + * Intercepts GET request to fetch the account network utilization data. + * + * @returns Cypress chainable. + */ +export const interceptGetNetworkUtilization = (): Cypress.Chainable => { + return cy.intercept('GET', apiMatcher('account/transfer')); +}; From 7c1e014dd71bbec667343bf464218134b5df4af7 Mon Sep 17 00:00:00 2001 From: Joe D'Amore Date: Fri, 1 Mar 2024 11:25:20 -0500 Subject: [PATCH 2/6] Resolve flake by waiting for API requests to resolve before creating bucket --- .../e2e/core/objectStorage/object-storage.e2e.spec.ts | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/packages/manager/cypress/e2e/core/objectStorage/object-storage.e2e.spec.ts b/packages/manager/cypress/e2e/core/objectStorage/object-storage.e2e.spec.ts index 88d2b0c1e16..bd00f3ce1b7 100644 --- a/packages/manager/cypress/e2e/core/objectStorage/object-storage.e2e.spec.ts +++ b/packages/manager/cypress/e2e/core/objectStorage/object-storage.e2e.spec.ts @@ -6,6 +6,7 @@ import 'cypress-file-upload'; import { createBucket } from '@linode/api-v4/lib/object-storage'; import { objectStorageBucketFactory } from 'src/factories'; import { authenticate } from 'support/api/authentication'; +import { interceptGetNetworkUtilization } from 'support/intercepts/account'; import { interceptCreateBucket, interceptDeleteBucket, @@ -120,6 +121,7 @@ describe('object storage end-to-end tests', () => { interceptGetBuckets().as('getBuckets'); interceptCreateBucket().as('createBucket'); interceptDeleteBucket(bucketLabel, bucketCluster).as('deleteBucket'); + interceptGetNetworkUtilization().as('getNetworkUtilization'); mockAppendFeatureFlags({ objMultiCluster: makeFeatureFlagData(false), @@ -127,7 +129,13 @@ describe('object storage end-to-end tests', () => { mockGetFeatureFlagClientstream().as('getClientStream'); cy.visitWithLogin('/object-storage'); - cy.wait(['@getFeatureFlags', '@getBuckets']); + cy.wait(['@getFeatureFlags', '@getBuckets', '@getNetworkUtilization']); + + // Wait for loader to disappear, indicating that all buckets have been loaded. + // Mitigates test failures stemming from M3-7833. + cy.findByLabelText('Buckets').within(() => { + cy.findByLabelText('Content is loading').should('not.exist'); + }); ui.button.findByTitle('Create Bucket').should('be.visible').click(); @@ -145,6 +153,7 @@ describe('object storage end-to-end tests', () => { }); cy.wait(['@createBucket', '@getBuckets']); + ui.drawer.find().should('not.exist'); // Confirm that bucket is created, initiate deletion. cy.findByText(bucketLabel) From 35a481b2d33ba2a85447b7e0ec1cc5438455e56e Mon Sep 17 00:00:00 2001 From: Joe D'Amore Date: Fri, 1 Mar 2024 11:51:39 -0500 Subject: [PATCH 3/6] Added changeset: Resolve OBJ Bucket create/delete E2E test flake --- packages/manager/.changeset/pr-10245-tests-1709311899662.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 packages/manager/.changeset/pr-10245-tests-1709311899662.md diff --git a/packages/manager/.changeset/pr-10245-tests-1709311899662.md b/packages/manager/.changeset/pr-10245-tests-1709311899662.md new file mode 100644 index 00000000000..424d1453a52 --- /dev/null +++ b/packages/manager/.changeset/pr-10245-tests-1709311899662.md @@ -0,0 +1,5 @@ +--- +"@linode/manager": Tests +--- + +Resolve OBJ Bucket create/delete E2E test flake ([#10245](https://github.com/linode/manager/pull/10245)) From b288a801feb0b9824c938486cdc48219d96ad07e Mon Sep 17 00:00:00 2001 From: Joe D'Amore Date: Mon, 4 Mar 2024 09:47:01 -0500 Subject: [PATCH 4/6] Click "Create Bucket" button in entity header to avoid empty state conflicts --- .../cypress/e2e/core/objectStorage/object-storage.e2e.spec.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/manager/cypress/e2e/core/objectStorage/object-storage.e2e.spec.ts b/packages/manager/cypress/e2e/core/objectStorage/object-storage.e2e.spec.ts index bd00f3ce1b7..91dbbdbfaec 100644 --- a/packages/manager/cypress/e2e/core/objectStorage/object-storage.e2e.spec.ts +++ b/packages/manager/cypress/e2e/core/objectStorage/object-storage.e2e.spec.ts @@ -137,7 +137,9 @@ describe('object storage end-to-end tests', () => { cy.findByLabelText('Content is loading').should('not.exist'); }); - ui.button.findByTitle('Create Bucket').should('be.visible').click(); + ui.entityHeader.find().within(() => { + ui.button.findByTitle('Create Bucket').should('be.visible').click(); + }); ui.drawer .findByTitle('Create Bucket') From 066b4ace58e6388e867293d0efe6d7d86cfa9765 Mon Sep 17 00:00:00 2001 From: Joe D'Amore Date: Tue, 5 Mar 2024 17:45:21 -0500 Subject: [PATCH 5/6] Add test to temporarily force a CI failure --- .../e2e/core/objectStorage/object-storage.smoke.spec.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/manager/cypress/e2e/core/objectStorage/object-storage.smoke.spec.ts b/packages/manager/cypress/e2e/core/objectStorage/object-storage.smoke.spec.ts index 8974866fb6b..d8c50ac506b 100644 --- a/packages/manager/cypress/e2e/core/objectStorage/object-storage.smoke.spec.ts +++ b/packages/manager/cypress/e2e/core/objectStorage/object-storage.smoke.spec.ts @@ -26,6 +26,11 @@ import { ui } from 'support/ui'; import { regionFactory } from 'src/factories'; describe('object storage smoke tests', () => { + + it('will fail', () => { + throw new Error('This is a forced failure!'); + }) + /* * - Tests Object Storage bucket creation flow when OBJ Multicluster is enabled. * - Confirms that expected regions are displayed in drop-down. From cf8bd996bb3e7ae8f6178f6960370d935df631d2 Mon Sep 17 00:00:00 2001 From: Joe D'Amore Date: Wed, 6 Mar 2024 09:43:52 -0500 Subject: [PATCH 6/6] Remove forced failure --- .../e2e/core/objectStorage/object-storage.smoke.spec.ts | 5 ----- 1 file changed, 5 deletions(-) diff --git a/packages/manager/cypress/e2e/core/objectStorage/object-storage.smoke.spec.ts b/packages/manager/cypress/e2e/core/objectStorage/object-storage.smoke.spec.ts index d8c50ac506b..8974866fb6b 100644 --- a/packages/manager/cypress/e2e/core/objectStorage/object-storage.smoke.spec.ts +++ b/packages/manager/cypress/e2e/core/objectStorage/object-storage.smoke.spec.ts @@ -26,11 +26,6 @@ import { ui } from 'support/ui'; import { regionFactory } from 'src/factories'; describe('object storage smoke tests', () => { - - it('will fail', () => { - throw new Error('This is a forced failure!'); - }) - /* * - Tests Object Storage bucket creation flow when OBJ Multicluster is enabled. * - Confirms that expected regions are displayed in drop-down.