diff --git a/ui/admin/tests/e2e/helpers/boundary-ui.js b/ui/admin/tests/e2e/helpers/boundary-ui.js index 538957025..5f5c291da 100644 --- a/ui/admin/tests/e2e/helpers/boundary-ui.js +++ b/ui/admin/tests/e2e/helpers/boundary-ui.js @@ -1070,9 +1070,25 @@ exports.createStoragePolicy = async (page) => { await page .getByRole('link', { name: 'Storage Policies', exact: true }) .click(); - await page - .getByRole('link', { name: 'Create a new storage policy', exact: true }) - .click(); + await expect( + page + .getByRole('navigation', { name: 'breadcrumbs' }) + .getByText('Storage Policies'), + ).toBeVisible(); + + const newButtonIsVisible = await page + .getByRole('link', { name: 'New Storage Policy', exact: true }) + .isVisible(); + if (newButtonIsVisible) { + await page + .getByRole('link', { name: 'New Storage Policy', exact: true }) + .click(); + } else { + await page + .getByRole('link', { name: 'Create a new storage policy', exact: true }) + .click(); + } + await page.getByLabel('Name').fill(storagePolicyName); await page.getByLabel('Retention Policy').selectOption({ label: 'Forever' }); await page.getByRole('button', { name: 'Save' }).click(); diff --git a/ui/admin/tests/e2e/tests/global-settings.spec.js b/ui/admin/tests/e2e/tests/global-settings.spec.js new file mode 100644 index 000000000..3203d76bf --- /dev/null +++ b/ui/admin/tests/e2e/tests/global-settings.spec.js @@ -0,0 +1,40 @@ +/** + * Copyright (c) HashiCorp, Inc. + * SPDX-License-Identifier: MPL-2.0 + */ + +/* eslint-disable no-undef */ +const { test, expect } = require('@playwright/test'); +const { authenticatedState } = require('../helpers/general'); +const { + attachStoragePolicy, + createStoragePolicy, +} = require('../helpers/boundary-ui'); + +test.use({ storageState: authenticatedState }); + +test('Global Settings @ent @aws @docker', async ({ page }) => { + await page.goto('/'); + + // Create a storage policy + const policyName = await createStoragePolicy(page); + await attachStoragePolicy(page, policyName); + + // Detach storage policy + await page.getByRole('button', { name: 'Manage', exact: true }).click(); + await page + .getByRole('button', { name: 'Detach Storage Policy', exact: true }) + .click(); + await page.getByRole('button', { name: 'OK', exact: true }).click(); + await expect( + page.getByRole('alert').getByText('Success', { exact: true }), + ).toBeVisible(); + await page.getByRole('button', { name: 'Dismiss' }).click(); + + // Navigate to orgs page when done + await page + .getByRole('navigation', { name: 'General' }) + .getByRole('link', { name: 'Orgs' }) + .click(); + await expect(page.getByRole('heading', { name: 'Orgs' })).toBeVisible(); +});