Skip to content

Conversation

@Shrinath-O2
Copy link
Contributor

@Shrinath-O2 Shrinath-O2 commented Oct 17, 2025

PR Type

Enhancement, Tests


Description

  • Add robust alerts cleanup utilities

  • Improve UI flows and resiliency

  • Support deployed env testing delays

  • Add CI cleanup and health checks


Diagram Walkthrough

flowchart LR
  UI["Playwright UI flows hardened"]
  API["APICleanup cascade (Alerts→Folders→Destinations→Templates)"]
  CI["CI workflow targets deployed env"]
  Delay["Configurable test step delay"]
  Data["Global ingestion more robust"]

  UI -- "uses" --> API
  CI -- "runs cleanup.spec" --> API
  CI -- "health checks + env vars" --> Data
  Delay -- "slows page ops" --> UI
  Data -- "ingest logs with parsing" --> UI
Loading

File Walkthrough

Relevant files
Enhancement
7 files
alertDestinationsPage.js
Add search, cascade-safe delete, bulk prefix cleanup         
+178/-0 
alertTemplatesPage.js
Add template search, in-use handling, prefix cleanup         
+177/-2 
alertsPage.js
Harden alert actions, bulk deletion, search across folders
+280/-9 
apiCleanup.js
New API-based cascade cleanup utility                                       
+399/-0 
page-manager.js
Wire APICleanup into PageManager                                                 
+4/-0     
baseFixtures.js
Add configurable test step delay hooks                                     
+46/-0   
global-setup.js
Harden login and ingestion with diagnostics                           
+61/-22 
Bug fix
1 files
commonActions.js
Fix ingestion URLs to use org variable                                     
+4/-4     
Tests
4 files
alerts-e2e-flow.spec.js
Pre-move folder cleanup and stabilization                               
+13/-3   
alerts-import.spec.js
Use dedicated invalid import test data                                     
+1/-1     
cleanup.spec.js
New pre-test API cleanup spec                                                       
+29/-0   
invalid-alert.json
Add invalid alert sample for import tests                               
+24/-0   
Configuration changes
1 files
playwright.yml
Target deployed env; add cleanup job and health checks     
+123/-65

@github-actions
Copy link
Contributor

PR Reviewer Guide 🔍

Here are some key observations to aid the review process:

⏱️ Estimated effort to review: 4 🔵🔵🔵🔵⚪
🧪 PR contains tests
🔒 Security concerns

Sensitive information exposure:
Credentials and base URLs are hardcoded in CI workflow env block (ZO_ROOT_USER_EMAIL, ZO_ROOT_USER_PASSWORD, etc.). Move these to GitHub Actions secrets and reference via ${{ secrets.NAME }}. Also ensure logs do not print auth headers (curl/base64) during health checks.

⚡ Recommended focus areas for review

Possible Flake

Heavy reliance on fixed waitForTimeouts and text parsing for dynamic modals can cause flaky UI cleanup (e.g., handling "in use" dialog and re-navigation loops). Consider more deterministic waits for specific locators/states.

    await this.page.waitForTimeout(2000); // Wait for search results
    testLogger.debug('Searched for destinations', { searchText });
}

/**
 * Get all destination names from current search results
 * @returns {Promise<string[]>} Array of destination names
 */
async getAllDestinationNames() {
    const destinationNames = [];

    // Find all delete buttons with the pattern
    const deleteButtons = await this.page.locator('[data-test*="alert-destination-list-"][data-test*="-delete-destination"]').all();

    for (const button of deleteButtons) {
        const dataTest = await button.getAttribute('data-test');
        // Extract destination name from data-test="alert-destination-list-{destinationName}-delete-destination"
        const match = dataTest.match(/alert-destination-list-(.+)-delete-destination/);
        if (match && match[1]) {
            destinationNames.push(match[1]);
        }
    }

    testLogger.debug('Found destination names', { destinationNames, count: destinationNames.length });
    return destinationNames;
}

/**
 * Delete a single destination by name
 * Handles case where destination is in use by an alert
 * @param {string} destinationName - Name of the destination to delete
 */
async deleteDestinationByName(destinationName) {
    const deleteButton = this.page.locator(this.deleteDestinationButton.replace('{destinationName}', destinationName));
    await deleteButton.waitFor({ state: 'visible', timeout: 5000 });
    await deleteButton.click();
    await this.page.locator(this.confirmButton).click();

    // Check if "Destination is currently used by alert" message appears
    try {
        const inUseMessage = await this.page.getByText(this.destinationInUseMessage).textContent({ timeout: 3000 });

        // Extract alert name from message: "Destination is currently used by alert: Automation_Alert_3Igfv"
        const match = inUseMessage.match(/alert:\s*(.+)$/);
        if (match && match[1]) {
            const alertName = match[1].trim();
            testLogger.warn('Destination in use by alert, deleting alert first', { destinationName, alertName });

            // Close the error dialog
            await this.page.keyboard.press('Escape');
            await this.page.waitForTimeout(500);

            // Navigate to alerts and delete the alert
            await this.alertsPage.searchAndDeleteAlert(alertName);

            // Navigate back to destinations
            await this.navigateToDestinations();
            await this.page.waitForTimeout(1000);

            // Search for the destination again
            await this.searchDestinations(destinationName);

            // Retry deleting the destination
            await deleteButton.waitFor({ state: 'visible', timeout: 5000 });
            await deleteButton.click();
            await this.page.locator(this.confirmButton).click();
        }
    } catch (e) {
        // No "in use" message, deletion was successful
    }

    await this.page.waitForTimeout(1000);
    testLogger.debug('Deleted destination', { destinationName });
}
Robustness

API cleanup assumes specific response shapes and message regex to extract alert names; unexpected API responses could break cascade. Add guards for non-JSON/error bodies and fallback matching.

    const result = await deleteResult.json();

    if (result.code === 409 && result.message) {
        // Extract alert name from error
        const match = result.message.match(/alert:\s*(.+)$/);
        const linkedAlert = match && match[1] ? match[1].trim() : null;

        if (linkedAlert) {
            failedDestinations.push({
                destinationName: destination.name,
                templateName: destination.template,
                alertName: linkedAlert
            });
            testLogger.info('Destination blocked by alert', {
                destination: destination.name,
                alert: linkedAlert,
                template: destination.template
            });
        }
    } else if (result.code === 200) {
        deletedDestinations.push(destination.name);
        testLogger.debug('Deleted destination successfully', { name: destination.name });
    }
}

testLogger.info('Initial destination deletion summary', {
    total: matchingDestinations.length,
    deleted: deletedDestinations.length,
Secret Exposure

Plaintext credentials and environment host URLs are committed in workflow env. These should be GitHub secrets to avoid leaks and allow environment changes per context.

COLUMNS: 150
ZO_ROOT_USER_EMAIL: [email protected]
ZO_ROOT_USER_PASSWORD: 12345678
ZO_BASE_URL: https://dev2.internal.zinclabs.dev/
WS_ZO_BASE_URL: https://dev2.internal.zinclabs.dev/
ZO_BASE_URL_SC: https://dev2.internal.zinclabs.dev/
ZO_BASE_URL_SC_UI: https://dev2.internal.zinclabs.dev/
INGESTION_URL: https://dev2.internal.zinclabs.dev/
ORGNAME: automationtesting
TEST_STEP_DELAY_MS: 500
ZO_QUICK_MODE_NUM_FIELDS: 100
ZO_QUICK_MODE_STRATEGY: first
ZO_ALLOW_USER_DEFINED_SCHEMAS: true
ZO_INGEST_ALLOWED_UPTO: 5

@github-actions
Copy link
Contributor

PR Code Suggestions ✨

Explore these optional code suggestions:

CategorySuggestion                                                                                                                                    Impact
Possible issue
Harden in-use message detection

Using an unanchored substring selector may match unintended UI text. Also,
textContent() can return null and cause a crash when the dialog renders differently.
Scope the locator to the specific modal/dialog and guard against null before regex
parsing to avoid flaky failures.

tests/ui-testing/pages/alertsPages/alertDestinationsPage.js [211-215]

-const inUseMessage = await this.page.getByText(this.destinationInUseMessage).textContent({ timeout: 3000 });
+const dialog = this.page.locator('[role="dialog"]');
+const inUseLocator = dialog.getByText(this.destinationInUseMessage, { exact: false });
+const rawText = await inUseLocator.textContent({ timeout: 3000 }).catch(() => null);
+if (rawText) {
+    const match = rawText.match(/alert:\s*(.+)$/);
+    if (match && match[1]) {
+        const alertName = match[1].trim();
+        ...
+    }
+}
 
-// Extract alert name from message: "Destination is currently used by alert: Automation_Alert_3Igfv"
-const match = inUseMessage.match(/alert:\s*(.+)$/);
-
Suggestion importance[1-10]: 7

__

Why: Scoping the locator to the dialog and guarding against null text reduces flakiness and potential crashes when parsing the in-use message; it's accurate to the new code context and improves reliability.

Medium
Scope and null-guard message parsing

The locator may capture unrelated text and inUseMessage can be null, causing a
crash. Restrict lookup to the active dialog and null-check before regex parsing to
prevent flaky errors when the UI rendering differs.

tests/ui-testing/pages/alertsPages/alertTemplatesPage.js [358-362]

-const inUseMessage = await this.page.getByText(this.templateInUseMessage).textContent({ timeout: 3000 });
+const dialog = this.page.locator('[role="dialog"]');
+const inUseLocator = dialog.getByText(this.templateInUseMessage, { exact: false });
+const rawText = await inUseLocator.textContent({ timeout: 3000 }).catch(() => null);
+if (rawText) {
+    const match = rawText.match(/destination\s+(.+)$/);
+    if (match && match[1]) {
+        const destinationName = match[1].trim();
+        ...
+    }
+}
 
-// Extract destination name from message: "Template is in use for destination Telegram_alert"
-const match = inUseMessage.match(/destination\s+(.+)$/);
-
Suggestion importance[1-10]: 7

__

Why: The change correctly targets the template in-use message lines and proposes safer lookup and parsing, improving robustness without altering core logic.

Medium
Use stable selector for checkbox

Matching a row by a full concatenated accessible name is brittle and may fail with
minor UI text changes or localization. Target the checkbox via a stable data-test
selector already present in the code to ensure reliable selection.

tests/ui-testing/pages/alertsPages/alertsPage.js [59]

-this.selectAllCheckboxRowName = '# Name Owner Period Frequency';
-...
 async selectAllAlerts() {
-    const selectAllCheckbox = this.page.getByRole('row', { name: this.selectAllCheckboxRowName }).getByRole('checkbox');
+    const selectAllCheckbox = this.page.locator('[data-test="alert-list-select-all-checkbox"]');
     await selectAllCheckbox.waitFor({ state: 'visible', timeout: 5000 });
     await selectAllCheckbox.click();
     testLogger.debug('Selected all alerts');
 }
Suggestion importance[1-10]: 6

__

Why: The recommendation addresses brittleness introduced by replacing the original data-test selector with a header text match; reverting to the stable data-test improves reliability, though it depends on that selector still existing.

Low

@testdino-playwright-reporter
Copy link

Testdino Test Results

Status Total Passed Failed Skipped Flaky Pass Rate Duration
All tests passed 8 8 0 0 0 100% 2m 36s

View Detailed Results

@testdino-playwright-reporter
Copy link

Testdino Test Results

Status Total Passed Failed Skipped Flaky Pass Rate Duration
All tests passed 8 8 0 0 0 100% 2m 36s

View Detailed Results

@testdino-playwright-reporter
Copy link

Testdino Test Results

Status Total Passed Failed Skipped Flaky Pass Rate Duration
All tests passed 8 8 0 0 0 100% 2m 35s

View Detailed Results

@testdino-playwright-reporter
Copy link

Testdino Test Results

Status Total Passed Failed Skipped Flaky Pass Rate Duration
All tests passed 8 8 0 0 0 100% 2m 36s

View Detailed Results

@testdino-playwright-reporter
Copy link

Testdino Test Results

Status Total Passed Failed Skipped Flaky Pass Rate Duration
All tests passed 8 8 0 0 0 100% 2m 36s

View Detailed Results

@testdino-playwright-reporter
Copy link

Testdino Test Results

Status Total Passed Failed Skipped Flaky Pass Rate Duration
All tests passed 8 8 0 0 0 100% 2m 35s

View Detailed Results

@testdino-playwright-reporter
Copy link

⚠️ Test Run Unstable


Author: Shrinath-O2 | Branch: e2e-envRuns | Commit: b0ca7a1

Testdino Test Results

Status Total Passed Failed Skipped Flaky Pass Rate Duration
All tests passed 8 7 0 0 1 88% 4m 8s

View Detailed Results

@testdino-playwright-reporter
Copy link

Testdino Test Results

Status Total Passed Failed Skipped Flaky Pass Rate Duration
All tests passed 8 8 0 0 0 100% 2m 35s

View Detailed Results

@testdino-playwright-reporter
Copy link

Testdino Test Results

Status Total Passed Failed Skipped Flaky Pass Rate Duration
All tests passed 15 15 0 0 0 100% 2m 35s

View Detailed Results

@testdino-playwright-reporter
Copy link

⚠️ Test Run Unstable


Author: Shrinath-O2 | Branch: e2e-envRuns | Commit: 489c4e6

Testdino Test Results

Status Total Passed Failed Skipped Flaky Pass Rate Duration
All tests passed 21 14 0 0 7 67% 4m 41s

View Detailed Results

@testdino-playwright-reporter
Copy link

Testdino Test Results

Status Total Passed Failed Skipped Flaky Pass Rate Duration
All tests passed 21 21 0 0 0 100% 3m 47s

View Detailed Results

@testdino-playwright-reporter
Copy link

⚠️ Test Run Unstable


Author: Shrinath-O2 | Branch: e2e-envRuns | Commit: 4197dca

Testdino Test Results

Status Total Passed Failed Skipped Flaky Pass Rate Duration
94 tests failed 226 95 94 33 4 42% 54m 51s

Test Failure Analysis

  1. pipelines.spec.js: Assertion failures due to unexpected HTTP status codes

    1. Pipeline testcases should stay on pipeline page if user dismisses the dialog box: Expected status 200 but received 429.
    2. Pipeline testcases should navigate to dashboard page if user accepts dialog box: Expected status 200 but received 429.
    3. Pipeline testcases should add source & destination node without connection and error to be displayed: Expected status 200 but received 429.
  2. sanity.spec.js: Visibility issues with elements not found

    1. Sanity Test Cases should display results when SQL+histogram is on and then stream is selected: Element not found - locator('[data-test="logs-search-result-logs-table"]').
    2. Sanity Test Cases should display histogram in sql mode: Element not found - locator('[data-test="logs-search-result-bar-chart"] canvas').
    3. Sanity Test Cases should display pagination when only SQL is on clicking and closing the result: Timeout waiting for locator('[data-test="log-table-column-1-_timestamp"]').
  3. streaming.spec.js: Timeout issues and query failures

    1. Streaming for logs No Histogram should be displayed if Data is not available: Element not found - waiting for text 'warning No data found for histogram.'.
    2. Streaming for logs Enable Streaming for running query after selecting two streams, SQL Mode On and entering Full join queries: Query retrieval failed with an error.
    3. Streaming for logs Enable Streaming for running query after selecting two streams, SQL Mode On and entering Right join queries: Query retrieval failed with an error.

    ...and 7 additional failing specs. Visit the TestDino platform for a full breakdown.

Root Cause Analysis

  • The changes in .github/workflows/playwright.yml indicate a shift in environment variables and URLs, which may affect test execution.

Recommended Actions

  1. Investigate the HTTP 429 status in pipelines.spec.js tests to ensure the server can handle requests properly.
  2. Ensure that the elements referenced in sanity.spec.js are present in the DOM before running visibility checks.
  3. Review query handling in streaming.spec.js to address the errors related to retrieving search events.

View Detailed Results

@testdino-playwright-reporter
Copy link

⚠️ Test Run Unstable


Author: Shrinath-O2 | Branch: e2e-envRuns | Commit: 4197dca

Testdino Test Results

Status Total Passed Failed Skipped Flaky Pass Rate Duration
94 tests failed 226 95 94 33 4 42% 54m 44s

Test Failure Analysis

  1. pipelines.spec.js: Multiple timeout issues during user interactions

    1. Pipeline testcases should stay on pipeline page if user dismisses the dialog box: Received status 429 instead of expected 200.
    2. Pipeline testcases should navigate to dashboard page if user accepts dialog box: Locator for login user ID not found in time.
    3. Pipeline testcases should add source & destination node without connection and error to be displayed: Received status 429 instead of expected 200.
  2. sanity.spec.js: Visibility issues with elements not found

    1. Sanity Test Cases should display results when SQL+histogram is on and then stream is selected: Locator for log table column not found.
    2. Sanity Test Cases should display histogram in sql mode: Locator for histogram canvas not found.
    3. Sanity Test Cases should display pagination when only SQL is on clicking and closing the result: Locator for timestamp column not found.
  3. streaming.spec.js: Errors related to data retrieval and visibility

    1. Streaming for logs No Histogram should be displayed if Data is not available: Locator for no data warning not found.
    2. Streaming for logs Enable Streaming for running query after selecting two streams, SQL Mode On and entering Full join queries: Error retrieving search events.
    3. Streaming for logs Enable Streaming for running query after selecting two streams, SQL Mode On and entering Right join queries: Error retrieving search events.

    ...and 7 additional failing specs. Visit the TestDino platform for a full breakdown.

Root Cause Analysis

  • The changes in .github/workflows/playwright.yml indicate a shift in environment variables and URLs, which may affect test execution.

Recommended Actions

  1. Investigate the API response handling in pipelines.spec.js to address the 429 status code errors.
  2. Ensure that all locators in sanity.spec.js are correctly targeting existing elements, particularly for visibility checks.
  3. Review the data availability conditions in streaming.spec.js to prevent errors when no data is present.

View Detailed Results

@testdino-playwright-reporter
Copy link

⚠️ Test Run Unstable


Author: Shrinath-O2 | Branch: e2e-envRuns | Commit: 4197dca

Testdino Test Results

Status Total Passed Failed Skipped Flaky Pass Rate Duration
94 tests failed 226 95 94 33 4 42% 55m 0s

Test Failure Analysis

  1. pipelines.spec.js: Multiple tests failing due to timeout and assertion errors

    1. Pipeline testcases should stay on pipeline page if user dismisses the dialog box: Received status 429 instead of expected 200
    2. Pipeline testcases should navigate to dashboard page if user accepts dialog box: Locator timeout waiting for login-user-id
    3. Pipeline testcases should add source & destination node without connection and error to be displayed: Received status 429 instead of expected 200
  2. sanity.spec.js: Tests failing due to visibility and timeout issues

    1. Sanity Test Cases should display results when SQL+histogram is on and then stream is selected: Element not found for logs-search-result-logs-table
    2. Sanity Test Cases should display histogram in sql mode: Element not found for logs-search-result-bar-chart canvas
    3. Sanity Test Cases should display pagination when only SQL is on clicking and closing the result: Locator timeout waiting for log-table-column-1-_timestamp
  3. streaming.spec.js: Tests failing due to visibility and query errors

    1. Streaming for logs No Histogram should be displayed if Data is not available: Element not found for 'warning No data found for histogram.'
    2. Streaming for logs Enable Streaming for running query after selecting two streams, SQL Mode On and entering Full join queries: Query failed while retrieving search events
    3. Streaming for logs Enable Streaming for running query after selecting two streams, SQL Mode On and entering Right join queries: Query failed while retrieving search events

    ...and 7 additional failing specs. Visit the TestDino platform for a full breakdown.

Root Cause Analysis

  • The changes in .github/workflows/playwright.yml indicate a shift in environment variables and potential configuration issues affecting test execution.

Recommended Actions

  1. Investigate the API response handling in pipelines.spec.js to address the 429 status errors. 2. Increase the timeout settings in sanity.spec.js for elements that are intermittently not found. 3. Review the query execution logic in streaming.spec.js to ensure proper handling of search events.

View Detailed Results

@testdino-playwright-reporter
Copy link

⚠️ Test Run Unstable


Author: Shrinath-O2 | Branch: e2e-envRuns | Commit: 3162294

Testdino Test Results

Status Total Passed Failed Skipped Flaky Pass Rate Duration
11 tests failed 226 161 11 32 22 71% 11m 37s

Test Failure Analysis

  1. pipelines.spec.js: All tests fail due to visibility timeouts on the pipeline name input.

    1. Pipeline testcases should add source & destination node without connection and error to be displayed: Locator timeout - input[placeholder="Enter Pipeline Name"] not visible.
    2. Pipeline testcases should display error on entering only source node and save: Locator timeout - input[placeholder="Enter Pipeline Name"] not visible.
    3. Pipeline testcases should display error on entering only pipeline name and save: Locator timeout - input[placeholder="Enter Pipeline Name"] not visible.
  2. pipeline-dynamic.spec.js: Tests fail due to timeouts waiting for the pipeline name input visibility.

    1. Pipeline Dynamic Stream Names Verify pipeline with dynamic destination name using kubernetes_container_name directly: Locator timeout - waiting for [data-cy="login-user-id"].
    2. Pipeline Dynamic Stream Names Verify pipeline with dynamic destination name using kubernetes_container_name with underscores: Locator timeout - input[placeholder="Enter Pipeline Name"] not visible.
    3. Pipeline Dynamic Stream Names Verify pipeline with dynamic destination name using kubernetes_container_name: Locator timeout - input[placeholder="Enter Pipeline Name"] not visible.
  3. pipeline-core.spec.js: Tests fail due to visibility timeouts on the pipeline name input.

    1. Core Pipeline Tests should add source, condition & destination node and then delete the pipeline: Locator timeout - input[placeholder="Enter Pipeline Name"] not visible.
    2. Core Pipeline Tests should add source & destination node and then delete the pipeline: Locator timeout - input[placeholder="Enter Pipeline Name"] not visible.

    ...and 2 additional failing specs. Visit the TestDino platform for a full breakdown.

Root Cause Analysis

  • The failures are linked to the pipelinesPage.js file where the locator for the pipeline name input is timing out.

Recommended Actions

  1. Increase the timeout duration in pipelinesPage.js for the pipeline name input visibility check.
  2. Ensure the input field for the pipeline name is rendered before the tests run in pipelines.spec.js.
  3. Investigate any recent UI changes that may affect the visibility of the pipeline name input.

View Detailed Results

@testdino-playwright-reporter
Copy link

⚠️ Test Run Unstable


Author: Shrinath-O2 | Branch: e2e-envRuns | Commit: 3162294

Testdino Test Results

Status Total Passed Failed Skipped Flaky Pass Rate Duration
9 tests failed 226 164 9 32 21 73% 12m 34s

Test Failure Analysis

  1. pipelines.spec.js: Multiple timeout issues related to element visibility and interaction
    1. Pipeline testcases should add source & destination node without connection and error to be displayed: Locator timeout waiting for '[data-cy="login-user-id"]'.
    2. Pipeline testcases should display error on entering only source node and save: Locator timeout waiting for 'input[placeholder="Enter Pipeline Name"]' to be visible.
    3. Pipeline testcases should display error on entering only pipeline name and save: Locator timeout waiting for 'input[placeholder="Enter Pipeline Name"]' to be visible.
  2. pipeline-dynamic.spec.js: Timeout issues primarily on waiting for element visibility
    1. Pipeline Dynamic Stream Names Verify pipeline with dynamic destination name using kubernetes_container_name directly: Locator timeout waiting for 'input[placeholder="Enter Pipeline Name"]' to be visible.
    2. Pipeline Dynamic Stream Names Verify pipeline with dynamic destination name using kubernetes_container_name with underscores: Locator timeout waiting for 'input[placeholder="Enter Pipeline Name"]' to be visible.
    3. Pipeline Dynamic Stream Names Verify pipeline with dynamic destination name using kubernetes_container_name: Locator timeout waiting for '[data-cy="login-user-id"]'.
  3. pipeline-core.spec.js: Consistent timeout issues on element interactions
    1. Core Pipeline Tests should add source, condition & destination node and then delete the pipeline: Locator timeout waiting for '[data-cy="login-user-id"]'.
    2. Core Pipeline Tests should add source & destination node and then delete the pipeline: Locator timeout waiting for 'input[placeholder="Enter Pipeline Name"]' to be visible.

Root Cause Analysis

  • The recent changes in .github/workflows/playwright.yml altered environment variables, potentially affecting element visibility and timeouts.

Recommended Actions

  1. Increase timeout values in pipelines.spec.js for locators to handle slower responses.
  2. Verify the visibility and existence of elements before interactions in pipeline-core.spec.js.
  3. Ensure that the environment variables in .github/workflows/playwright.yml are correctly set to match the expected test environment.

View Detailed Results

@testdino-playwright-reporter
Copy link

⚠️ Test Run Unstable


Author: Shrinath-O2 | Branch: e2e-envRuns | Commit: 3162294

Testdino Test Results

Status Total Passed Failed Skipped Flaky Pass Rate Duration
9 tests failed 226 166 9 32 19 73% 11m 58s

Test Failure Analysis

  1. pipelines.spec.js: All tests fail due to visibility timeouts on the pipeline name input
    1. Pipeline testcases should add source & destination node without connection and error to be displayed: Locator timeout waiting for input to be visible.
    2. Pipeline testcases should display error on entering only source node and save: Locator timeout waiting for input to be visible.
    3. Pipeline testcases should display error on entering only pipeline name and save: Locator timeout waiting for input to be visible.
  2. pipeline-dynamic.spec.js: Tests fail due to timeouts on the pipeline name input visibility
    1. Pipeline Dynamic Stream Names Verify pipeline with dynamic destination name using kubernetes_container_name directly: Locator timeout waiting for login user ID input.
    2. Pipeline Dynamic Stream Names Verify pipeline with dynamic destination name using kubernetes_container_name with underscores: Locator timeout waiting for input to be visible.
    3. Pipeline Dynamic Stream Names Verify pipeline with dynamic destination name using kubernetes_container_name: Locator timeout waiting for input to be visible.
  3. pipeline-core.spec.js: Tests fail due to visibility timeouts on the pipeline name input
    1. Core Pipeline Tests should add source, condition & destination node and then delete the pipeline: Locator timeout waiting for input to be visible.
    2. Core Pipeline Tests should add source & destination node and then delete the pipeline: Locator timeout waiting for input to be visible.

Root Cause Analysis

  • The recent changes in .github/workflows/playwright.yml altered environment variables, potentially affecting input visibility.

Recommended Actions

  1. Increase the timeout duration in the enterPipelineName method in pipelinesPage.js to allow more time for the input to become visible.
  2. Verify the visibility and loading state of the input fields before running tests to ensure they are ready for interaction.
  3. Check the environment configuration in .github/workflows/playwright.yml to ensure it matches the expected test environment.

View Detailed Results

@Shrinath-O2 Shrinath-O2 marked this pull request as ready for review November 4, 2025 17:21
@github-actions
Copy link
Contributor

github-actions bot commented Nov 4, 2025

Failed to generate code suggestions for PR

@Shrinath-O2 Shrinath-O2 merged commit f61b715 into main Nov 4, 2025
32 checks passed
@Shrinath-O2 Shrinath-O2 deleted the e2e-envRuns branch November 4, 2025 18:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants