From 6454fb70613fb54f8b53e1f98e47c97241c49acc Mon Sep 17 00:00:00 2001 From: Michael Li Date: Thu, 17 Oct 2024 12:51:49 -0400 Subject: [PATCH] test(e2e): Add check for worker filters (#2513) * test(e2e): Add check to add an ingress worker filter * test(e2e): Add check for editing a worker filter --- ui/admin/tests/e2e/pages/targets.mjs | 29 +++++++++++++++++++ .../tests/session-recording-aws-ent.spec.mjs | 4 +-- .../session-recording-minio-ent.spec.mjs | 5 ++-- ui/admin/tests/e2e/tests/target.spec.mjs | 28 ++++++++++++++++++ 4 files changed, 60 insertions(+), 6 deletions(-) diff --git a/ui/admin/tests/e2e/pages/targets.mjs b/ui/admin/tests/e2e/pages/targets.mjs index fdae7f0a3..5e909c0c1 100644 --- a/ui/admin/tests/e2e/pages/targets.mjs +++ b/ui/admin/tests/e2e/pages/targets.mjs @@ -288,6 +288,35 @@ export class TargetsPage extends BaseResourcePage { await this.dismissSuccessAlert(); } + /** + * Adds an ingress worker filter to a target. Assume you have selected the desired target. + * @param {string} filter Ingress worker filter to be added to the target + */ + async addIngressWorkerFilterToTarget(filter) { + await this.page.getByRole('link', { name: 'Workers', exact: true }).click(); + await expect( + this.page + .getByRole('navigation', { name: 'breadcrumbs' }) + .getByText('Workers'), + ).toBeVisible(); + + await this.page + .getByText('Ingress workers') + .locator('..') + .getByRole('link', { name: 'Edit worker filter' }) + .click(); + await expect( + this.page + .getByRole('navigation', { name: 'breadcrumbs' }) + .getByText('Edit Ingress Worker Filter'), + ).toBeVisible(); + + await this.page.getByRole('textbox').fill(filter); + + await this.page.getByRole('button', { name: 'Save' }).click(); + await this.dismissSuccessAlert(); + } + /** * Adds an egress worker filter to a target. Assume you have selected the desired target. * @param {string} filter Egress worker filter to be added to the target diff --git a/ui/admin/tests/e2e/tests/session-recording-aws-ent.spec.mjs b/ui/admin/tests/e2e/tests/session-recording-aws-ent.spec.mjs index 8e62e55a9..999e178f7 100644 --- a/ui/admin/tests/e2e/tests/session-recording-aws-ent.spec.mjs +++ b/ui/admin/tests/e2e/tests/session-recording-aws-ent.spec.mjs @@ -98,9 +98,7 @@ test('Session Recording Test (AWS) @ent @aws', async ({ await page.getByRole('link', { name: projectName }).click(); const targetsPage = new TargetsPage(page); const targetName = await targetsPage.createSshTargetWithAddressEnt(targetAddress, targetPort); - await targetsPage.addEgressWorkerFilterToTarget( - `"${workerTagEgress}" in "/tags/type"`, - ); + await targetsPage.addEgressWorkerFilterToTarget(`"${workerTagEgress}" in "/tags/type"`); const credentialStoresPage = new CredentialStoresPage(page); await credentialStoresPage.createStaticCredentialStore(); const credentialName = await credentialStoresPage.createStaticCredentialKeyPair(sshUser, sshKeyPath); diff --git a/ui/admin/tests/e2e/tests/session-recording-minio-ent.spec.mjs b/ui/admin/tests/e2e/tests/session-recording-minio-ent.spec.mjs index cc202babc..412f2e60f 100644 --- a/ui/admin/tests/e2e/tests/session-recording-minio-ent.spec.mjs +++ b/ui/admin/tests/e2e/tests/session-recording-minio-ent.spec.mjs @@ -101,9 +101,8 @@ test('Session Recording Test (MinIO) @ent @docker', async ({ await page.getByRole('link', { name: projectName }).click(); const targetsPage = new TargetsPage(page); const targetName = await targetsPage.createSshTargetWithAddressEnt(targetAddress, targetPort); - await targetsPage.addEgressWorkerFilterToTarget( - `"${workerTagEgress}" in "/tags/type"`, - ); + await targetsPage.addIngressWorkerFilterToTarget(`"${workerTagEgress}" in "/tags/type"`); + await targetsPage.addEgressWorkerFilterToTarget(`"${workerTagEgress}" in "/tags/type"`); const credentialStoresPage = new CredentialStoresPage(page); await credentialStoresPage.createStaticCredentialStore(); diff --git a/ui/admin/tests/e2e/tests/target.spec.mjs b/ui/admin/tests/e2e/tests/target.spec.mjs index 38432225f..7f5aef3fb 100644 --- a/ui/admin/tests/e2e/tests/target.spec.mjs +++ b/ui/admin/tests/e2e/tests/target.spec.mjs @@ -16,6 +16,7 @@ import { getProjectIdFromNameCli, getTargetIdFromNameCli, } from '../helpers/boundary-cli.mjs'; +import { BasePage } from '../pages/base.mjs'; import { HostCatalogsPage } from '../pages/host-catalogs.mjs'; import { OrgsPage } from '../pages/orgs.mjs'; import { ProjectsPage } from '../pages/projects.mjs'; @@ -186,6 +187,33 @@ test('Verify TCP target is updated @ce @aws @docker', async ({ await page.getByRole('button', { name: 'Dismiss' }).click(); await targetsPage.addEgressWorkerFilterToTarget('"dev" in "/tags/type"'); + + // Edit a worker filter + await page.getByRole('link', { name: 'Workers', exact: true }).click(); + await expect( + page + .getByRole('navigation', { name: 'breadcrumbs' }) + .getByText('Workers'), + ).toBeVisible(); + await page + .getByText('Egress workers') + .locator('..') + .getByRole('link', { name: 'Edit worker filter' }) + .click(); + await expect( + page + .getByRole('navigation', { name: 'breadcrumbs' }) + .getByText('Edit Egress Worker Filter'), + ).toBeVisible(); + await expect(page.getByText('"dev" in "/tags/type"')).toBeVisible(); + + await page.getByRole('textbox').click({ force: true }); + await page.keyboard.press("Meta+A"); + await page.keyboard.press('Backspace'); + await page.getByRole('textbox').fill('"prod" in "/tags/type"'); + await page.getByRole('button', { name: 'Save' }).click(); + const basePage = new BasePage(page); + await basePage.dismissSuccessAlert(); } finally { await authenticateBoundaryCli( baseURL,