Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion frontend/e2e/pages/base-page.ts
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ export async function dismissQuickStartDrawer(page: Page): Promise<void> {
export async function ensureDeveloperPerspective(
page: Page,
k8sClient: KubernetesClient,
): Promise<void> {
): Promise<boolean> {
const toggle = page.getByTestId('perspective-switcher-toggle');
await expect(toggle).toBeVisible();
const isSinglePerspective =
Expand All @@ -71,7 +71,9 @@ export async function ensureDeveloperPerspective(
await page.reload();
await expect(toggle).not.toHaveAttribute('id', 'only-one-perspective');
}).toPass({ timeout: 60_000 });
return true;
}
return false;
}

export default abstract class BasePage {
Expand Down
47 changes: 12 additions & 35 deletions frontend/e2e/tests/console/crud/other-routes.spec.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import type { Page } from '@playwright/test';
import { test, expect } from '../../../fixtures';
import { ensureDeveloperPerspective, warmupSPA } from '../../../pages/base-page';
import { testA11y } from '../../../utils/a11y';

type RouteConfig = {
Expand Down Expand Up @@ -173,33 +174,10 @@ test.describe('Perspective query parameters', { tag: ['@admin'] }, () => {
k8sClient,
}) => {
await test.step('Ensure Developer perspective is available', async () => {
await page.goto('/k8s/cluster/projects');

const toggle = page.getByTestId('perspective-switcher-toggle');
await expect(toggle).toBeVisible();

const isSinglePerspective =
(await toggle.getAttribute('id')) === 'only-one-perspective';
if (isSinglePerspective) {
await k8sClient.customObjectsApi.patchClusterCustomObject({
group: 'operator.openshift.io',
version: 'v1',
plural: 'consoles',
name: 'cluster',
body: [
{
op: 'add',
path: '/spec/customization/perspectives',
value: [{ id: 'dev', visibility: { state: 'Enabled' } }],
},
],
});
await warmupSPA(page);
if (await ensureDeveloperPerspective(page, k8sClient)) {
patchedPerspectives = true;
}
await expect(async () => {
await page.reload();
await expect(toggle).not.toHaveAttribute('id', 'only-one-perspective');
}).toPass({ timeout: 60_000 });
});

await test.step('Navigate with perspective=dev and verify', async () => {
Expand All @@ -212,19 +190,18 @@ test.describe('Perspective query parameters', { tag: ['@admin'] }, () => {

test('Administrator query parameter switches to Administrator perspective', async ({
page,
k8sClient,
}) => {
await test.step('Switch to Developer perspective first', async () => {
await page.goto('/k8s/cluster/projects');

const toggle = page.getByTestId('perspective-switcher-toggle');
await toggle.click();

const devOption = page
.getByTestId('perspective-switcher-menu-option')
.filter({ hasText: 'Developer' });
await devOption.click();
await warmupSPA(page);
if (await ensureDeveloperPerspective(page, k8sClient)) {
patchedPerspectives = true;
}

await expect(toggle).toContainText('Developer');
await page.goto('/topology/all-namespaces?view=graph&perspective=dev');
await expect(page.getByTestId('perspective-switcher-toggle')).toContainText('Developer', {
timeout: 30_000,
});
});

await test.step('Navigate with perspective=admin and verify', async () => {
Expand Down