From 851243a8481b504ad8d2e2d0e92062c961e403fd Mon Sep 17 00:00:00 2001 From: Joe D'Amore Date: Thu, 9 Apr 2026 15:51:41 -0400 Subject: [PATCH 1/4] Mock disable private image sharing feature flag to fix test failures --- .../e2e/core/account/restricted-user-details-pages.spec.ts | 1 + .../manager/cypress/e2e/core/images/create-image.spec.ts | 5 +++++ .../cypress/e2e/core/images/create-linode-from-image.spec.ts | 5 +++++ .../e2e/core/images/images-empty-landing-page.spec.ts | 2 ++ .../e2e/core/images/images-non-empty-landing-page.spec.ts | 4 ++++ .../cypress/e2e/core/images/smoke-create-image.spec.ts | 5 +++++ .../manager/cypress/e2e/core/linodes/rebuild-linode.spec.ts | 3 +++ 7 files changed, 25 insertions(+) diff --git a/packages/manager/cypress/e2e/core/account/restricted-user-details-pages.spec.ts b/packages/manager/cypress/e2e/core/account/restricted-user-details-pages.spec.ts index a03280a344b..a1024ee296d 100644 --- a/packages/manager/cypress/e2e/core/account/restricted-user-details-pages.spec.ts +++ b/packages/manager/cypress/e2e/core/account/restricted-user-details-pages.spec.ts @@ -106,6 +106,7 @@ describe('restricted user details pages', () => { mockAppendFeatureFlags({ apl: false, dbaasV2: { beta: false, enabled: false }, + privateImageSharing: { enabled: false }, }); }); diff --git a/packages/manager/cypress/e2e/core/images/create-image.spec.ts b/packages/manager/cypress/e2e/core/images/create-image.spec.ts index b71bf8fd0ba..69e5c1e20fc 100644 --- a/packages/manager/cypress/e2e/core/images/create-image.spec.ts +++ b/packages/manager/cypress/e2e/core/images/create-image.spec.ts @@ -1,4 +1,5 @@ import { authenticate } from 'support/api/authentication'; +import { mockAppendFeatureFlags } from 'support/intercepts/feature-flags'; import { ui } from 'support/ui'; import { cleanUp } from 'support/util/cleanup'; import { createTestLinode } from 'support/util/linodes'; @@ -12,6 +13,10 @@ describe('create image (e2e)', () => { cleanUp(['linodes', 'images']); }); + beforeEach(() => { + mockAppendFeatureFlags({ privateImageSharing: { enabled: false } }); + }); + it('create image from a linode', () => { cy.tag('method:e2e'); const label = randomLabel(); diff --git a/packages/manager/cypress/e2e/core/images/create-linode-from-image.spec.ts b/packages/manager/cypress/e2e/core/images/create-linode-from-image.spec.ts index 3206e9ed69e..e8e5db702b4 100644 --- a/packages/manager/cypress/e2e/core/images/create-linode-from-image.spec.ts +++ b/packages/manager/cypress/e2e/core/images/create-linode-from-image.spec.ts @@ -1,5 +1,6 @@ import { linodeFactory } from '@linode/utilities'; import { firewallFactory, imageFactory } from '@src/factories'; +import { mockAppendFeatureFlags } from 'support/intercepts/feature-flags'; import { mockGetFirewalls } from 'support/intercepts/firewalls'; import { mockGetAllImages } from 'support/intercepts/images'; import { ui } from 'support/ui'; @@ -81,6 +82,10 @@ const createLinodeWithImageMock = (url: string, preselectedImage: boolean) => { }; describe('create linode from image, mocked data', () => { + beforeEach(() => { + mockAppendFeatureFlags({ privateImageSharing: { enabled: false } }); + }); + /* * - Confirms UI flow when user attempts to create a Linode from images without having any images. */ diff --git a/packages/manager/cypress/e2e/core/images/images-empty-landing-page.spec.ts b/packages/manager/cypress/e2e/core/images/images-empty-landing-page.spec.ts index 483e2bdd60c..21701c79e5a 100644 --- a/packages/manager/cypress/e2e/core/images/images-empty-landing-page.spec.ts +++ b/packages/manager/cypress/e2e/core/images/images-empty-landing-page.spec.ts @@ -1,6 +1,7 @@ import { grantsFactory, profileFactory } from '@linode/utilities'; import { accountUserFactory } from '@src/factories/accountUsers'; import { mockGetUser } from 'support/intercepts/account'; +import { mockAppendFeatureFlags } from 'support/intercepts/feature-flags'; import { mockGetAllImages } from 'support/intercepts/images'; import { mockGetProfile, @@ -13,6 +14,7 @@ describe('Images empty landing page', () => { beforeEach(() => { // Mock setup to display the Image landing page in an empty state mockGetAllImages([]).as('getImages'); + mockAppendFeatureFlags({ privateImageSharing: { enabled: false } }); }); /* diff --git a/packages/manager/cypress/e2e/core/images/images-non-empty-landing-page.spec.ts b/packages/manager/cypress/e2e/core/images/images-non-empty-landing-page.spec.ts index b420d385708..70e30be0500 100644 --- a/packages/manager/cypress/e2e/core/images/images-non-empty-landing-page.spec.ts +++ b/packages/manager/cypress/e2e/core/images/images-non-empty-landing-page.spec.ts @@ -1,6 +1,7 @@ import { profileFactory } from '@linode/utilities'; import { grantsFactory } from '@linode/utilities'; import { mockGetUser } from 'support/intercepts/account'; +import { mockAppendFeatureFlags } from 'support/intercepts/feature-flags'; import { mockGetCustomImages, mockGetRecoveryImages, @@ -74,6 +75,9 @@ describe('image landing checks for non-empty state with restricted user', () => }); }); + // Disable Private Image Sharing feature flag. + mockAppendFeatureFlags({ privateImageSharing: { enabled: false } }); + // Mock setup to display the Image landing page in an non-empty state mockGetCustomImages(mockCustomImages).as('getCustomImages'); mockGetRecoveryImages(mockRecoveryImages).as('getRecoveryImages'); diff --git a/packages/manager/cypress/e2e/core/images/smoke-create-image.spec.ts b/packages/manager/cypress/e2e/core/images/smoke-create-image.spec.ts index 930cc1e7618..9f89fe93f71 100644 --- a/packages/manager/cypress/e2e/core/images/smoke-create-image.spec.ts +++ b/packages/manager/cypress/e2e/core/images/smoke-create-image.spec.ts @@ -5,6 +5,7 @@ import { } from '@linode/utilities'; import { mockGetUser } from 'support/intercepts/account'; import { mockGetEvents } from 'support/intercepts/events'; +import { mockAppendFeatureFlags } from 'support/intercepts/feature-flags'; import { mockCreateImage } from 'support/intercepts/images'; import { mockGetLinodeDisks, mockGetLinodes } from 'support/intercepts/linodes'; import { @@ -19,6 +20,10 @@ import { linodeDiskFactory } from 'src/factories/disk'; import { imageFactory } from 'src/factories/images'; describe('create image (using mocks)', () => { + beforeEach(() => { + mockAppendFeatureFlags({ privateImageSharing: { enabled: false } }); + }); + it('create image from a linode', () => { const mockDisks = [ linodeDiskFactory.build({ filesystem: 'ext4', label: 'Debian 12 Disk' }), diff --git a/packages/manager/cypress/e2e/core/linodes/rebuild-linode.spec.ts b/packages/manager/cypress/e2e/core/linodes/rebuild-linode.spec.ts index 86072c549f6..4b46c52624d 100644 --- a/packages/manager/cypress/e2e/core/linodes/rebuild-linode.spec.ts +++ b/packages/manager/cypress/e2e/core/linodes/rebuild-linode.spec.ts @@ -171,6 +171,9 @@ describe('rebuild linode', () => { iam: { enabled: false, }, + privateImageSharing: { + enabled: false, + }, }); }); From b101f9c7978aa17d478fe9f746dedba0ae101b95 Mon Sep 17 00:00:00 2001 From: Joe D'Amore Date: Thu, 9 Apr 2026 17:26:50 -0400 Subject: [PATCH 2/4] Fix malformed feature flag mock --- .../e2e/core/account/restricted-user-details-pages.spec.ts | 2 +- packages/manager/cypress/e2e/core/images/create-image.spec.ts | 2 +- .../cypress/e2e/core/images/create-linode-from-image.spec.ts | 2 +- .../cypress/e2e/core/images/images-empty-landing-page.spec.ts | 2 +- .../e2e/core/images/images-non-empty-landing-page.spec.ts | 2 +- .../cypress/e2e/core/images/smoke-create-image.spec.ts | 2 +- .../manager/cypress/e2e/core/linodes/rebuild-linode.spec.ts | 4 +--- 7 files changed, 7 insertions(+), 9 deletions(-) diff --git a/packages/manager/cypress/e2e/core/account/restricted-user-details-pages.spec.ts b/packages/manager/cypress/e2e/core/account/restricted-user-details-pages.spec.ts index a1024ee296d..7c674e36eeb 100644 --- a/packages/manager/cypress/e2e/core/account/restricted-user-details-pages.spec.ts +++ b/packages/manager/cypress/e2e/core/account/restricted-user-details-pages.spec.ts @@ -106,7 +106,7 @@ describe('restricted user details pages', () => { mockAppendFeatureFlags({ apl: false, dbaasV2: { beta: false, enabled: false }, - privateImageSharing: { enabled: false }, + privateImageSharing: false, }); }); diff --git a/packages/manager/cypress/e2e/core/images/create-image.spec.ts b/packages/manager/cypress/e2e/core/images/create-image.spec.ts index 69e5c1e20fc..05d007e9de4 100644 --- a/packages/manager/cypress/e2e/core/images/create-image.spec.ts +++ b/packages/manager/cypress/e2e/core/images/create-image.spec.ts @@ -14,7 +14,7 @@ describe('create image (e2e)', () => { }); beforeEach(() => { - mockAppendFeatureFlags({ privateImageSharing: { enabled: false } }); + mockAppendFeatureFlags({ privateImageSharing: false }); }); it('create image from a linode', () => { diff --git a/packages/manager/cypress/e2e/core/images/create-linode-from-image.spec.ts b/packages/manager/cypress/e2e/core/images/create-linode-from-image.spec.ts index e8e5db702b4..a3615f05802 100644 --- a/packages/manager/cypress/e2e/core/images/create-linode-from-image.spec.ts +++ b/packages/manager/cypress/e2e/core/images/create-linode-from-image.spec.ts @@ -83,7 +83,7 @@ const createLinodeWithImageMock = (url: string, preselectedImage: boolean) => { describe('create linode from image, mocked data', () => { beforeEach(() => { - mockAppendFeatureFlags({ privateImageSharing: { enabled: false } }); + mockAppendFeatureFlags({ privateImageSharing: false }); }); /* diff --git a/packages/manager/cypress/e2e/core/images/images-empty-landing-page.spec.ts b/packages/manager/cypress/e2e/core/images/images-empty-landing-page.spec.ts index 21701c79e5a..e2578d91e26 100644 --- a/packages/manager/cypress/e2e/core/images/images-empty-landing-page.spec.ts +++ b/packages/manager/cypress/e2e/core/images/images-empty-landing-page.spec.ts @@ -14,7 +14,7 @@ describe('Images empty landing page', () => { beforeEach(() => { // Mock setup to display the Image landing page in an empty state mockGetAllImages([]).as('getImages'); - mockAppendFeatureFlags({ privateImageSharing: { enabled: false } }); + mockAppendFeatureFlags({ privateImageSharing: false }); }); /* diff --git a/packages/manager/cypress/e2e/core/images/images-non-empty-landing-page.spec.ts b/packages/manager/cypress/e2e/core/images/images-non-empty-landing-page.spec.ts index 70e30be0500..c3d132851f5 100644 --- a/packages/manager/cypress/e2e/core/images/images-non-empty-landing-page.spec.ts +++ b/packages/manager/cypress/e2e/core/images/images-non-empty-landing-page.spec.ts @@ -76,7 +76,7 @@ describe('image landing checks for non-empty state with restricted user', () => }); // Disable Private Image Sharing feature flag. - mockAppendFeatureFlags({ privateImageSharing: { enabled: false } }); + mockAppendFeatureFlags({ privateImageSharing: false }); // Mock setup to display the Image landing page in an non-empty state mockGetCustomImages(mockCustomImages).as('getCustomImages'); diff --git a/packages/manager/cypress/e2e/core/images/smoke-create-image.spec.ts b/packages/manager/cypress/e2e/core/images/smoke-create-image.spec.ts index 9f89fe93f71..1b294fd6c8e 100644 --- a/packages/manager/cypress/e2e/core/images/smoke-create-image.spec.ts +++ b/packages/manager/cypress/e2e/core/images/smoke-create-image.spec.ts @@ -21,7 +21,7 @@ import { imageFactory } from 'src/factories/images'; describe('create image (using mocks)', () => { beforeEach(() => { - mockAppendFeatureFlags({ privateImageSharing: { enabled: false } }); + mockAppendFeatureFlags({ privateImageSharing: false }); }); it('create image from a linode', () => { diff --git a/packages/manager/cypress/e2e/core/linodes/rebuild-linode.spec.ts b/packages/manager/cypress/e2e/core/linodes/rebuild-linode.spec.ts index 4b46c52624d..99c161313c2 100644 --- a/packages/manager/cypress/e2e/core/linodes/rebuild-linode.spec.ts +++ b/packages/manager/cypress/e2e/core/linodes/rebuild-linode.spec.ts @@ -171,9 +171,7 @@ describe('rebuild linode', () => { iam: { enabled: false, }, - privateImageSharing: { - enabled: false, - }, + privateImageSharing: false, }); }); From d5ecf9784117ed184993a76ee40f50ddcc95b330 Mon Sep 17 00:00:00 2001 From: Joe D'Amore Date: Thu, 9 Apr 2026 18:19:11 -0400 Subject: [PATCH 3/4] Fix last test failure --- packages/manager/cypress/e2e/core/linodes/rebuild-linode.spec.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/manager/cypress/e2e/core/linodes/rebuild-linode.spec.ts b/packages/manager/cypress/e2e/core/linodes/rebuild-linode.spec.ts index 99c161313c2..efbb74b370d 100644 --- a/packages/manager/cypress/e2e/core/linodes/rebuild-linode.spec.ts +++ b/packages/manager/cypress/e2e/core/linodes/rebuild-linode.spec.ts @@ -526,6 +526,7 @@ describe('rebuild linode', () => { enabled: true, la: true, }, + privateImageSharing: false, }).as('getFeatureFlags'); mockGetRegionAvailability(linodeCreatePayload.region, []).as( 'getRegionAvailability' From 904106701367604ca5029001a1d62d44d7c5ca63 Mon Sep 17 00:00:00 2001 From: Joe D'Amore Date: Thu, 9 Apr 2026 18:19:49 -0400 Subject: [PATCH 4/4] Added changeset: Mock private image sharing flag to be disabled in Image tests --- packages/manager/.changeset/pr-13572-tests-1775773189306.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 packages/manager/.changeset/pr-13572-tests-1775773189306.md diff --git a/packages/manager/.changeset/pr-13572-tests-1775773189306.md b/packages/manager/.changeset/pr-13572-tests-1775773189306.md new file mode 100644 index 00000000000..525d92dea5a --- /dev/null +++ b/packages/manager/.changeset/pr-13572-tests-1775773189306.md @@ -0,0 +1,5 @@ +--- +"@linode/manager": Tests +--- + +Mock private image sharing flag to be disabled in Image tests ([#13572](https://github.com/linode/manager/pull/13572))