From 271c7c4e011c2633e346a3203c93e3ccb7748227 Mon Sep 17 00:00:00 2001 From: StylusFrost Date: Wed, 29 Oct 2025 15:34:18 +0100 Subject: [PATCH] test(ui): improve formatting and readability in ProvidersPage tests --- ui/tests/providers/providers-page.ts | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/ui/tests/providers/providers-page.ts b/ui/tests/providers/providers-page.ts index 0e196c96a0..88ef6f92db 100644 --- a/ui/tests/providers/providers-page.ts +++ b/ui/tests/providers/providers-page.ts @@ -326,7 +326,9 @@ export class ProvidersPage extends BasePage { // Fill the Kubernetes provider details await this.kubernetesContextInput.fill(data.context); + if (data.alias) { + await this.aliasInput.fill(data.alias); } } @@ -349,6 +351,7 @@ export class ProvidersPage extends BasePage { if (/\/providers\/add-credentials/.test(url)) { // Some UI implementations use "Save" instead of "Next" for primary action const saveBtn = this.saveButton; + if (await saveBtn.count()) { await saveBtn.click(); await this.waitForPageLoad(); @@ -397,6 +400,7 @@ export class ProvidersPage extends BasePage { } catch (error) { // If timeout or other error, check if error message is present const isErrorVisible = await errorMessage.isVisible().catch(() => false); + if (isErrorVisible) { const errorText = await errorMessage.textContent(); throw new Error( @@ -442,6 +446,7 @@ export class ProvidersPage extends BasePage { // Ensure we are on the add-credentials page where the selector exists await expect(this.page).toHaveURL(/\/providers\/add-credentials/); + if (type === AWS_CREDENTIAL_OPTIONS.AWS_ROLE_ARN) { await this.roleCredentialsRadio.click({ force: true }); } else if (type === AWS_CREDENTIAL_OPTIONS.AWS_CREDENTIALS) { @@ -457,6 +462,7 @@ export class ProvidersPage extends BasePage { // Ensure we are on the add-credentials page where the selector exists await expect(this.page).toHaveURL(/\/providers\/add-credentials/); + if (type === M365_CREDENTIAL_OPTIONS.M365_CREDENTIALS) { await this.m365StaticCredentialsRadio.click({ force: true }); } else if (type === M365_CREDENTIAL_OPTIONS.M365_CERTIFICATE_CREDENTIALS) { @@ -608,6 +614,7 @@ export class ProvidersPage extends BasePage { const launchScanButton = this.page .locator("button") .filter({ hasText: "Launch scan" }); + await expect(launchScanButton).toBeVisible(); } @@ -631,6 +638,7 @@ export class ProvidersPage extends BasePage { // Verify the number of matching rows is 1 const count = await matchingRows.count(); + if (count !== 1) return false; return true; } @@ -665,6 +673,7 @@ export class ProvidersPage extends BasePage { // Helper function to check if a row is the "No results" row const isNoResultsRow = async (row: Locator): Promise => { const text = await row.textContent(); + return text?.includes("No results") || text?.includes("No data") || false; }; @@ -722,6 +731,7 @@ export class ProvidersPage extends BasePage { // Find and click the action button (last cell = actions column) const actionButton = targetRow.locator("td").last().locator("button").first(); + await expect(actionButton).toBeVisible({ timeout: 5000 }); await actionButton.click(); @@ -729,11 +739,13 @@ export class ProvidersPage extends BasePage { const deleteMenuItem = this.page.getByRole("menuitem", { name: /delete.*provider/i, }); + await expect(deleteMenuItem).toBeVisible({ timeout: 5000 }); await deleteMenuItem.click(); // Wait for confirmation modal to appear const modal = this.page.locator('[role="dialog"], .modal, [data-testid*="modal"]').first(); + await expect(modal).toBeVisible({ timeout: 10000 }); // Find and click the delete confirmation button