From a2849841abfaeb8b2a2cce472d79160482e653b0 Mon Sep 17 00:00:00 2001 From: Shrinath Rao Date: Thu, 17 Jul 2025 18:45:57 +0530 Subject: [PATCH] test: Page manager for all spec files (#7597) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ### **PR Type** Tests, Enhancement ___ ### **Description** - Add `UnflattenedPage` to `PageManager` for logs pages - Replace individual page imports with `PageManager` in tests - Update all alerts tests to use `pageManager.` syntax - Refactor logs and reports tests to centralize page object usage ___ ### **Changes walkthrough** 📝
Relevant files
Enhancement
1 files
page-manager.js
Import and instantiate UnflattenedPage in PageManager       
+6/-0     
Tests
8 files
alerts-e2e-flow.spec.js
Convert alerts E2E flow to use PageManager                             
+31/-50 
alerts-import.spec.js
Refactor alerts import tests to use PageManager                   
+48/-80 
alerts-ui-operations.spec.js
Update alerts UI tests to PageManager pattern                       
+54/-73 
indexquery.spec.js
Use PageManager in index query performance tests                 
+1/-3     
join.spec.js
Migrate join tests to PageManager usage                                   
+80/-116
logshistogram.spec.js
Refactor histogram tests to employ PageManager                     
+72/-72 
logspage.spec.js
Convert logs page tests to PageManager approach                   
+209/-211
reportsUpdated.spec.js
Update report tests to use PageManager instance                   
+230/-249
___ >
Need help?
  • Type /help how to ... in the comments thread for any questions about PR-Agent usage.
  • Check out the documentation for more information.
  • --- tests/ui-testing/pages/commonActions.js | 14 + tests/ui-testing/pages/page-manager.js | 14 +- .../Alerts/alerts-e2e-flow.spec.js | 85 ++-- .../Alerts/alerts-import.spec.js | 128 ++--- .../Alerts/alerts-ui-operations.spec.js | 127 +++-- .../playwright-tests/Logs/indexquery.spec.js | 4 +- .../playwright-tests/Logs/join.spec.js | 196 ++++---- .../Logs/logshistogram.spec.js | 144 +++--- .../playwright-tests/Logs/logspage.spec.js | 420 ++++++++-------- .../playwright-tests/Logs/logsqueries.spec.js | 404 +++++++++------- .../Logs/logsquickmode.spec.js | 122 ++--- .../playwright-tests/Logs/pagination.spec.js | 172 ++++--- .../playwright-tests/Logs/unflattened.spec.js | 185 ++++--- .../Reports/reportsUpdated.spec.js | 451 +++++++++--------- .../Reports/reportsUpdated2.spec.js | 416 ++++++++-------- .../Streams/multiselect-stream.spec.js | 12 +- 16 files changed, 1408 insertions(+), 1486 deletions(-) diff --git a/tests/ui-testing/pages/commonActions.js b/tests/ui-testing/pages/commonActions.js index 9e79f2e992..7ff7cf8932 100644 --- a/tests/ui-testing/pages/commonActions.js +++ b/tests/ui-testing/pages/commonActions.js @@ -138,4 +138,18 @@ export class CommonActions { }); }); } + + /** + * Helper method to conditionally ingest test data based on test title + * Skips data ingestion for scheduled alert tests + * @param {string} testTitle - The title of the current test + * @param {string} streamName - The stream name for data ingestion + */ + async skipDataIngestionForScheduledAlert(testTitle, streamName = 'auto_playwright_stream') { + // Skip data ingestion for scheduled alert test + if (!testTitle.includes('Scheduled Alert')) { + // Ingest test data using common actions + await this.ingestTestData(streamName); + } + } } \ No newline at end of file diff --git a/tests/ui-testing/pages/page-manager.js b/tests/ui-testing/pages/page-manager.js index 45df67fa82..4b00db089f 100644 --- a/tests/ui-testing/pages/page-manager.js +++ b/tests/ui-testing/pages/page-manager.js @@ -2,9 +2,9 @@ import DashboardCreate from "./dashboardPages/dashboard-create"; import DashboardListPage from "./dashboardPages/dashboard-list"; import DashboardFolder from "./dashboardPages/dashboard-folder"; -import DashboardPanelActions from "./dashboardPages/dashboard-panel-actions"; +import DashboardactionPage from "./dashboardPages/dashboard-panel-actions"; import DashboardPanelConfigs from "./dashboardPages/dashboard-panel-configs"; -import DashboardPanelEdit from "./dashboardPages/dashboard-panel-edit"; +import DashboardPanel from "./dashboardPages/dashboard-panel-edit"; import DashboardSetting from "./dashboardPages/dashboard-settings"; import DashboardVariables from "./dashboardPages/dashboard-variables"; import ChartTypeSelector from "./dashboardPages/dashboard-chart"; @@ -41,6 +41,9 @@ import { CreateOrgPage } from "./generalPages/createOrgPage.js"; import { CommonActions } from "./commonActions.js"; import { UserPage } from "./generalPages/userPage.js"; +// ===== LOGS, REPORTS, STREAMS, PIPELINES ADDITIONAL PAGE OBJECTS ===== +import UnflattenedPage from "./logsPages/unflattened.js"; + class PageManager { /** @@ -53,9 +56,9 @@ class PageManager { this.dashboardCreate = new DashboardCreate(page); this.dashboardList = new DashboardListPage(page); this.dashboardFolder = new DashboardFolder(page); - this.dashboardPanelActions = new DashboardPanelActions(page); + this.dashboardPanelActions = new DashboardactionPage(page); this.dashboardPanelConfigs = new DashboardPanelConfigs(page); - this.dashboardPanelEdit = new DashboardPanelEdit(page); + this.dashboardPanelEdit = new DashboardPanel(page); this.dashboardSetting = new DashboardSetting(page); this.dashboardVariables = new DashboardVariables(page); this.chartTypeSelector = new ChartTypeSelector(page); @@ -93,6 +96,9 @@ class PageManager { this.createOrgPage = new CreateOrgPage(page); this.commonActions = new CommonActions(page); this.userPage = new UserPage(page); + + // ===== LOGS, REPORTS, STREAMS, PIPELINES ADDITIONAL PAGE OBJECTS ===== + this.unflattenedPage = new UnflattenedPage(page); } } diff --git a/tests/ui-testing/playwright-tests/Alerts/alerts-e2e-flow.spec.js b/tests/ui-testing/playwright-tests/Alerts/alerts-e2e-flow.spec.js index b2709427d7..56a2525c5f 100644 --- a/tests/ui-testing/playwright-tests/Alerts/alerts-e2e-flow.spec.js +++ b/tests/ui-testing/playwright-tests/Alerts/alerts-e2e-flow.spec.js @@ -1,10 +1,6 @@ import { test, expect } from "../baseFixtures"; import logData from "../../cypress/fixtures/log.json"; -import { AlertsPage } from '../../pages/alertsPages/alertsPage.js'; -import { AlertTemplatesPage } from '../../pages/alertsPages/alertTemplatesPage.js'; -import { AlertDestinationsPage } from '../../pages/alertsPages/alertDestinationsPage.js'; -import { CommonActions } from '../../pages/commonActions.js'; -import DashboardFolder from '../../pages/dashboardPages/dashboard-folder.js'; +import PageManager from '../../pages/page-manager.js'; /** * Helper function for login @@ -29,11 +25,7 @@ async function login(page) { test.describe("Alerts E2E Flow", () => { // Shared test variables - let alertsPage; - let templatesPage; - let destinationsPage; - let commonActions; - let dashboardFolders; + let pageManager; let createdTemplateName; let createdDestinationName; let sharedRandomValue; @@ -47,25 +39,17 @@ test.describe("Alerts E2E Flow", () => { */ test.beforeEach(async ({ page }, testInfo) => { await login(page); - alertsPage = new AlertsPage(page); - templatesPage = new AlertTemplatesPage(page); - destinationsPage = new AlertDestinationsPage(page); - commonActions = new CommonActions(page); - dashboardFolders = new DashboardFolder(page); + pageManager = new PageManager(page); await page.waitForTimeout(5000); // Generate shared random value if not already generated if (!sharedRandomValue) { - sharedRandomValue = alertsPage.generateRandomString(); + sharedRandomValue = pageManager.alertsPage.generateRandomString(); console.log('Generated shared random value for this run:', sharedRandomValue); } // Skip data ingestion for scheduled alert test - if (!test.info().title.includes('Scheduled Alert')) { - // Ingest test data using common actions - const streamName = 'auto_playwright_stream'; - await commonActions.ingestTestData(streamName); - } + await pageManager.commonActions.skipDataIngestionForScheduledAlert(test.info().title); // Navigate to alerts page await page.goto( @@ -80,13 +64,6 @@ test.describe("Alerts E2E Flow", () => { test('Alerts E2E Flow - Create, Update, Move, Clone, Delete, Pause, Resume', { tag: ['@e2eAlerts', '@all', '@alerts'] }, async ({ page }) => { - // Initialize page objects - alertsPage = new AlertsPage(page); - templatesPage = new AlertTemplatesPage(page); - destinationsPage = new AlertDestinationsPage(page); - commonActions = new CommonActions(page); - dashboardFolders = new DashboardFolder(page); - // Test data setup const streamName = 'auto_playwright_stream'; const column = 'job'; @@ -94,85 +71,85 @@ test.describe("Alerts E2E Flow", () => { // Ensure prerequisites exist createdTemplateName = 'auto_playwright_template_' + sharedRandomValue; - await templatesPage.ensureTemplateExists(createdTemplateName); + await pageManager.alertTemplatesPage.ensureTemplateExists(createdTemplateName); createdDestinationName = 'auto_playwright_destination_' + sharedRandomValue; const slackUrl = "DEMO"; - await destinationsPage.ensureDestinationExists(createdDestinationName, slackUrl, createdTemplateName); + await pageManager.alertDestinationsPage.ensureDestinationExists(createdDestinationName, slackUrl, createdTemplateName); // Navigate to alerts tab - await commonActions.navigateToAlerts(); + await pageManager.commonActions.navigateToAlerts(); await page.waitForTimeout(2000); // ===== First Iteration: Initial Alert Creation and Management ===== // Create and verify folder const folderName = 'auto_' + sharedRandomValue; - await alertsPage.createFolder(folderName, 'Test Automation Folder'); - await alertsPage.verifyFolderCreated(folderName); + await pageManager.alertsPage.createFolder(folderName, 'Test Automation Folder'); + await pageManager.alertsPage.verifyFolderCreated(folderName); console.log('Successfully created folder:', folderName); // Navigate to folder and create first alert - await alertsPage.navigateToFolder(folderName); - const alertName = await alertsPage.createAlert(streamName, column, value, createdDestinationName, sharedRandomValue); - await alertsPage.verifyAlertCreated(alertName); + await pageManager.alertsPage.navigateToFolder(folderName); + const alertName = await pageManager.alertsPage.createAlert(streamName, column, value, createdDestinationName, sharedRandomValue); + await pageManager.alertsPage.verifyAlertCreated(alertName); console.log('Successfully created alert:', alertName); // Clone first alert - await alertsPage.cloneAlert(alertName, 'logs', streamName); + await pageManager.alertsPage.cloneAlert(alertName, 'logs', streamName); console.log('Successfully cloned alert:', alertName); // Delete all instances of the cloned alert - await alertsPage.deleteImportedAlert(alertName); + await pageManager.alertsPage.deleteImportedAlert(alertName); console.log('Successfully deleted all instances of alert:', alertName); // ===== Second Iteration: New Alert Creation and Management ===== // Navigate back to folder and create new alert - await alertsPage.navigateToFolder(folderName); + await pageManager.alertsPage.navigateToFolder(folderName); await page.waitForTimeout(2000); - const newAlertName = await alertsPage.createAlert(streamName, column, value, createdDestinationName, sharedRandomValue); - await alertsPage.verifyAlertCreated(newAlertName); + const newAlertName = await pageManager.alertsPage.createAlert(streamName, column, value, createdDestinationName, sharedRandomValue); + await pageManager.alertsPage.verifyAlertCreated(newAlertName); console.log('Successfully created new alert:', newAlertName); // Update the new alert's operator - await alertsPage.updateAlert(newAlertName); + await pageManager.alertsPage.updateAlert(newAlertName); console.log('Successfully updated new alert:', newAlertName); // Clone the new alert - await alertsPage.cloneAlert(newAlertName, 'logs', streamName); + await pageManager.alertsPage.cloneAlert(newAlertName, 'logs', streamName); console.log('Successfully cloned new alert:', newAlertName); // ===== Alert Pause and Resume ===== // Pause the new alert - await alertsPage.pauseAlert(newAlertName); + await pageManager.alertsPage.pauseAlert(newAlertName); console.log('Successfully paused alert:', newAlertName); // Resume the new alert - await alertsPage.resumeAlert(newAlertName); + await pageManager.alertsPage.resumeAlert(newAlertName); console.log('Successfully resumed alert:', newAlertName); // ===== Alert Movement and Cleanup ===== // Move alerts to target folder const targetFolderName = 'testfoldermove'; - await alertsPage.ensureFolderExists(targetFolderName, 'Test Folder for Moving Alerts'); - await alertsPage.moveAllAlertsToFolder(targetFolderName); + await pageManager.alertsPage.ensureFolderExists(targetFolderName, 'Test Folder for Moving Alerts'); + await pageManager.alertsPage.moveAllAlertsToFolder(targetFolderName); await page.waitForTimeout(2000); - await dashboardFolders.searchFolder(folderName); + await pageManager.dashboardFolder.searchFolder(folderName); await expect(page.locator(`text=${folderName}`)).toBeVisible(); - await dashboardFolders.deleteFolder(folderName); + await pageManager.dashboardFolder.deleteFolder(folderName); // Verify alerts in target folder await page.waitForTimeout(2000); - await dashboardFolders.searchFolder(targetFolderName); + await pageManager.dashboardFolder.searchFolder(targetFolderName); await expect(page.locator(`text=${targetFolderName}`)).toBeVisible(); - await alertsPage.navigateToFolder(targetFolderName); + await pageManager.alertsPage.navigateToFolder(targetFolderName); await page.waitForTimeout(2000); // Search and verify alert instance - await alertsPage.searchAlert(newAlertName); - await alertsPage.verifySearchResults(2); + await pageManager.alertsPage.searchAlert(newAlertName); + await pageManager.alertsPage.verifySearchResults(2); // Delete the alert - await alertsPage.deleteAlertByRow(newAlertName); + await pageManager.alertsPage.deleteAlertByRow(newAlertName); }); }); \ No newline at end of file diff --git a/tests/ui-testing/playwright-tests/Alerts/alerts-import.spec.js b/tests/ui-testing/playwright-tests/Alerts/alerts-import.spec.js index b7a66f0af4..842d6a47a0 100644 --- a/tests/ui-testing/playwright-tests/Alerts/alerts-import.spec.js +++ b/tests/ui-testing/playwright-tests/Alerts/alerts-import.spec.js @@ -1,10 +1,6 @@ import { test, expect } from "../baseFixtures"; import logData from "../../cypress/fixtures/log.json"; -import { AlertsPage } from '../../pages/alertsPages/alertsPage.js'; -import { AlertTemplatesPage } from '../../pages/alertsPages/alertTemplatesPage.js'; -import { AlertDestinationsPage } from '../../pages/alertsPages/alertDestinationsPage.js'; -import { CommonActions } from '../../pages/commonActions.js'; -import DashboardFolder from '../../pages/dashboardPages/dashboard-folder.js'; +import PageManager from '../../pages/page-manager.js'; /** * Helper function for login @@ -29,12 +25,8 @@ async function login(page) { test.describe("Alerts Import/Export", () => { // Shared test variables - let alertsPage; - let templatesPage; - let destinationsPage; - let commonActions; + let pageManager; let sharedRandomValue; - let dashboardFolders; /** * Setup for each test @@ -46,21 +38,18 @@ test.describe("Alerts Import/Export", () => { */ test.beforeEach(async ({ page }, testInfo) => { await login(page); - alertsPage = new AlertsPage(page); - templatesPage = new AlertTemplatesPage(page); - destinationsPage = new AlertDestinationsPage(page); - commonActions = new CommonActions(page); + pageManager = new PageManager(page); await page.waitForTimeout(5000); // Generate shared random value if not already generated if (!sharedRandomValue) { - sharedRandomValue = alertsPage.generateRandomString(); + sharedRandomValue = pageManager.alertsPage.generateRandomString(); console.log('Generated shared random value for this run:', sharedRandomValue); } // Ingest test data using common actions const streamName = 'auto_playwright_stream'; - await commonActions.ingestTestData(streamName); + await pageManager.commonActions.ingestTestData(streamName); // Navigate to alerts page await page.goto( @@ -75,62 +64,55 @@ test.describe("Alerts Import/Export", () => { test('Import/Export Alert Functionality', { tag: ['@all', '@alerts', '@alertsImportExport'] }, async ({ page }) => { - // Initialize page objects - alertsPage = new AlertsPage(page); - templatesPage = new AlertTemplatesPage(page); - destinationsPage = new AlertDestinationsPage(page); - commonActions = new CommonActions(page); - dashboardFolders = new DashboardFolder(page); - // Create template const templateName = 'auto_playwright_template_' + sharedRandomValue; - await templatesPage.createTemplate(templateName); + await pageManager.alertTemplatesPage.createTemplate(templateName); console.log('Created template:', templateName); // Create destination const destinationName = 'auto_playwright_destination_' + sharedRandomValue; const slackUrl = "DEMO"; - await destinationsPage.ensureDestinationExists(destinationName, slackUrl, templateName); + await pageManager.alertDestinationsPage.ensureDestinationExists(destinationName, slackUrl, templateName); console.log('Created destination:', destinationName); // Navigate to alerts page - await commonActions.navigateToAlerts(); + await pageManager.commonActions.navigateToAlerts(); // Create folder const folderName = 'auto_' + sharedRandomValue; - await alertsPage.createFolder(folderName, 'Test Automation Folder'); + await pageManager.alertsPage.createFolder(folderName, 'Test Automation Folder'); console.log('Created folder:', folderName); // Create alert const streamName = 'auto_playwright_stream'; const column = 'job'; const value = 'test'; - await alertsPage.navigateToFolder(folderName); + await pageManager.alertsPage.navigateToFolder(folderName); await page.waitForTimeout(2000); - const alertName = await alertsPage.createAlert(streamName, column, value, destinationName, sharedRandomValue); - await alertsPage.verifyAlertCreated(alertName); + const alertName = await pageManager.alertsPage.createAlert(streamName, column, value, destinationName, sharedRandomValue); + await pageManager.alertsPage.verifyAlertCreated(alertName); console.log('Successfully created alert:', alertName); await page.waitForTimeout(2000); // Export alerts - const download = await alertsPage.exportAlerts(); + const download = await pageManager.alertsPage.exportAlerts(); const downloadPath = `./alerts-${new Date().toISOString().split('T')[0]}-${streamName}.json`; await download.saveAs(downloadPath); // Test invalid import - await alertsPage.importInvalidFile('utils/td150.json'); + await pageManager.alertsPage.importInvalidFile('utils/td150.json'); // Import valid file - await alertsPage.importValidFile(downloadPath); + await pageManager.alertsPage.importValidFile(downloadPath); // Clean up imported alert - await alertsPage.deleteImportedAlert(alertName); + await pageManager.alertsPage.deleteImportedAlert(alertName); - await dashboardFolders.searchFolder(folderName); + await pageManager.dashboardFolder.searchFolder(folderName); await expect(page.locator(`text=${folderName}`)).toBeVisible(); - await dashboardFolders.deleteFolder(folderName); + await pageManager.dashboardFolder.deleteFolder(folderName); - await alertsPage.cleanupDownloadedFile(downloadPath); + await pageManager.alertsPage.cleanupDownloadedFile(downloadPath); }); /** @@ -140,67 +122,60 @@ test.describe("Alerts Import/Export", () => { test('Template Import from URL and Direct Template Creation', { tag: ['@templateImport', '@all', '@alerts'] }, async ({ page }) => { - // Initialize page objects - alertsPage = new AlertsPage(page); - templatesPage = new AlertTemplatesPage(page); - destinationsPage = new AlertDestinationsPage(page); - commonActions = new CommonActions(page); - dashboardFolders = new DashboardFolder(page); - // Test URLs const webhookTemplateUrl = 'https://raw.githubusercontent.com/openobserve/alert_tests/refs/heads/main/Webhook_Template_Import.json'; const emailTemplateUrl = 'https://raw.githubusercontent.com/openobserve/alert_tests/refs/heads/main/Email_Template_Import.json'; // Test 1: Valid template import from URL (Webhook template) const urlWebhookTemplateName = 'auto_url_webhook_template_' + sharedRandomValue; - await templatesPage.importTemplateFromUrl(webhookTemplateUrl, urlWebhookTemplateName, 'valid'); + await pageManager.alertTemplatesPage.importTemplateFromUrl(webhookTemplateUrl, urlWebhookTemplateName, 'valid'); console.log('WEBHOOK URL template IMPORTED:', urlWebhookTemplateName); // Verify imported webhook template exists - await templatesPage.verifyImportedTemplateExists(urlWebhookTemplateName); + await pageManager.alertTemplatesPage.verifyImportedTemplateExists(urlWebhookTemplateName); console.log('Successfully verified imported webhook template exists:', urlWebhookTemplateName); // Delete URL imported webhook template - await templatesPage.deleteTemplateAndVerify(urlWebhookTemplateName); + await pageManager.alertTemplatesPage.deleteTemplateAndVerify(urlWebhookTemplateName); console.log('WEBHOOK URL template DELETED:', urlWebhookTemplateName); // Test 2: Valid template import from URL (Email template) const urlEmailTemplateName = 'auto_url_email_template_' + sharedRandomValue; - await templatesPage.importTemplateFromUrl(emailTemplateUrl, urlEmailTemplateName, 'valid'); + await pageManager.alertTemplatesPage.importTemplateFromUrl(emailTemplateUrl, urlEmailTemplateName, 'valid'); console.log('EMAIL URL template IMPORTED:', urlEmailTemplateName); // Verify imported email template exists - await templatesPage.verifyImportedTemplateExists(urlEmailTemplateName); + await pageManager.alertTemplatesPage.verifyImportedTemplateExists(urlEmailTemplateName); console.log('Successfully verified imported email template exists:', urlEmailTemplateName); // Delete URL imported email template - await templatesPage.deleteTemplateAndVerify(urlEmailTemplateName); + await pageManager.alertTemplatesPage.deleteTemplateAndVerify(urlEmailTemplateName); console.log('EMAIL URL template DELETED:', urlEmailTemplateName); // Test 3: Valid direct webhook template creation const directWebhookTemplateName = 'auto_direct_webhook_template_' + sharedRandomValue; - await templatesPage.createTemplateFromFile('utils/webhookTemplateImport.json', directWebhookTemplateName, 'valid'); + await pageManager.alertTemplatesPage.createTemplateFromFile('utils/webhookTemplateImport.json', directWebhookTemplateName, 'valid'); console.log('WEBHOOK Direct template IMPORTED:', directWebhookTemplateName); // Verify direct webhook template exists - await templatesPage.verifyImportedTemplateExists(directWebhookTemplateName); + await pageManager.alertTemplatesPage.verifyImportedTemplateExists(directWebhookTemplateName); console.log('Successfully verified direct webhook template exists:', directWebhookTemplateName); // Delete direct webhook template - await templatesPage.deleteTemplateAndVerify(directWebhookTemplateName); + await pageManager.alertTemplatesPage.deleteTemplateAndVerify(directWebhookTemplateName); console.log('WEBHOOK Direct template DELETED:', directWebhookTemplateName); // Test 4: Valid direct email template creation const directEmailTemplateName = 'auto_direct_email_template_' + sharedRandomValue; - await templatesPage.createTemplateFromFile('utils/emailTemplateImport.json', directEmailTemplateName, 'valid'); + await pageManager.alertTemplatesPage.createTemplateFromFile('utils/emailTemplateImport.json', directEmailTemplateName, 'valid'); console.log('EMAIL Direct template IMPORTED:', directEmailTemplateName); // Verify direct email template exists - await templatesPage.verifyImportedTemplateExists(directEmailTemplateName); + await pageManager.alertTemplatesPage.verifyImportedTemplateExists(directEmailTemplateName); console.log('Successfully verified direct email template exists:', directEmailTemplateName); // Delete direct email template - await templatesPage.deleteTemplateAndVerify(directEmailTemplateName); + await pageManager.alertTemplatesPage.deleteTemplateAndVerify(directEmailTemplateName); console.log('EMAIL Direct template DELETED:', directEmailTemplateName); console.log('All template import tests completed successfully with cleanup'); @@ -213,74 +188,67 @@ test.describe("Alerts Import/Export", () => { test('Destination Import from URL and File', { tag: ['@destinationImport', '@all', '@alerts'] }, async ({ page }) => { - // Initialize page objects - alertsPage = new AlertsPage(page); - templatesPage = new AlertTemplatesPage(page); - destinationsPage = new AlertDestinationsPage(page); - commonActions = new CommonActions(page); - dashboardFolders = new DashboardFolder(page); - // Create webhook template for webhook destination const webhookTemplateName = 'auto_webhook_template_' + sharedRandomValue; - await templatesPage.createTemplate(webhookTemplateName); + await pageManager.alertTemplatesPage.createTemplate(webhookTemplateName); console.log('Created webhook template:', webhookTemplateName); // Import email template for email destination const emailTemplateUrl = 'https://raw.githubusercontent.com/openobserve/alert_tests/refs/heads/main/Email_Template_Import.json'; const emailTemplateName = 'auto_email_template_' + sharedRandomValue; - await templatesPage.importTemplateFromUrl(emailTemplateUrl, emailTemplateName, 'valid'); + await pageManager.alertTemplatesPage.importTemplateFromUrl(emailTemplateUrl, emailTemplateName, 'valid'); console.log('Imported email template:', emailTemplateName); - await templatesPage.verifyImportedTemplateExists(emailTemplateName); + await pageManager.alertTemplatesPage.verifyImportedTemplateExists(emailTemplateName); console.log('Successfully verified imported email template exists:', emailTemplateName); // Navigate to destinations page - await destinationsPage.navigateToDestinations(); + await pageManager.alertDestinationsPage.navigateToDestinations(); console.log('Navigated to destinations page'); // Test 1: Import webhook destination from URL const webhookDestinationUrl = 'https://raw.githubusercontent.com/openobserve/alert_tests/refs/heads/main/Webhook_Destination_Import.json'; const webhookDestinationName = 'auto_dest_name_' + sharedRandomValue; - await destinationsPage.importDestinationFromUrl(webhookDestinationUrl, webhookTemplateName, webhookDestinationName); + await pageManager.alertDestinationsPage.importDestinationFromUrl(webhookDestinationUrl, webhookTemplateName, webhookDestinationName); await expect(page.getByText('Successfully imported')).toBeVisible(); console.log('Imported webhook destination from URL:', webhookDestinationName); - await destinationsPage.verifyDestinationExists(webhookDestinationName); + await pageManager.alertDestinationsPage.verifyDestinationExists(webhookDestinationName); console.log('Successfully verified webhook destination exists'); - await destinationsPage.deleteDestinationWithSearch(webhookDestinationName); + await pageManager.alertDestinationsPage.deleteDestinationWithSearch(webhookDestinationName); console.log('Successfully deleted webhook destination'); // Test 2: Import webhook destination from file - await destinationsPage.importDestinationFromFile('utils/webhookDestinationImport.json', webhookTemplateName, webhookDestinationName); + await pageManager.alertDestinationsPage.importDestinationFromFile('utils/webhookDestinationImport.json', webhookTemplateName, webhookDestinationName); console.log('Imported webhook destination from file:', webhookDestinationName); await expect(page.getByText('Successfully imported')).toBeVisible(); - await destinationsPage.verifyDestinationExists(webhookDestinationName); + await pageManager.alertDestinationsPage.verifyDestinationExists(webhookDestinationName); console.log('Successfully verified webhook destination exists'); - await destinationsPage.deleteDestinationWithSearch(webhookDestinationName); + await pageManager.alertDestinationsPage.deleteDestinationWithSearch(webhookDestinationName); console.log('Successfully deleted webhook destination'); // Test 3: Import email destination from URL const emailDestinationUrl = 'https://raw.githubusercontent.com/openobserve/alert_tests/refs/heads/main/Email_Destination_Import.json'; const emailDestinationName = 'auto_email_dest_' + sharedRandomValue; - await destinationsPage.importDestinationFromUrl(emailDestinationUrl, emailTemplateName, emailDestinationName); + await pageManager.alertDestinationsPage.importDestinationFromUrl(emailDestinationUrl, emailTemplateName, emailDestinationName); console.log('Imported email destination from URL:', emailDestinationName); await expect(page.getByText('Destination - 1: "')).toBeVisible(); - await destinationsPage.cancelDestinationImport(); + await pageManager.alertDestinationsPage.cancelDestinationImport(); console.log('Successfully cancelled email destination import'); // Test 4: Import email destination from file - await destinationsPage.importDestinationFromFile('utils/emailDestinationImport.json', emailTemplateName, emailDestinationName); + await pageManager.alertDestinationsPage.importDestinationFromFile('utils/emailDestinationImport.json', emailTemplateName, emailDestinationName); console.log('Imported email destination from file:', emailDestinationName); await expect(page.getByText('Destination - 1: "')).toBeVisible(); - await destinationsPage.cancelDestinationImport(); + await pageManager.alertDestinationsPage.cancelDestinationImport(); console.log('Successfully cancelled email destination import'); // Navigate to templates page for cleanup - await templatesPage.navigateToTemplates(); + await pageManager.alertTemplatesPage.navigateToTemplates(); console.log('Navigated to templates page for cleanup'); // Clean up templates - await templatesPage.deleteTemplateAndVerify(webhookTemplateName); + await pageManager.alertTemplatesPage.deleteTemplateAndVerify(webhookTemplateName); console.log('Webhook template deleted:', webhookTemplateName); - await templatesPage.deleteTemplateAndVerify(emailTemplateName); + await pageManager.alertTemplatesPage.deleteTemplateAndVerify(emailTemplateName); console.log('Email template deleted:', emailTemplateName); console.log('All destination import tests completed successfully with cleanup'); diff --git a/tests/ui-testing/playwright-tests/Alerts/alerts-ui-operations.spec.js b/tests/ui-testing/playwright-tests/Alerts/alerts-ui-operations.spec.js index fba084af8b..03d914b6c4 100644 --- a/tests/ui-testing/playwright-tests/Alerts/alerts-ui-operations.spec.js +++ b/tests/ui-testing/playwright-tests/Alerts/alerts-ui-operations.spec.js @@ -1,10 +1,6 @@ import { test, expect } from "../baseFixtures"; import logData from "../../cypress/fixtures/log.json"; -import { AlertsPage } from '../../pages/alertsPages/alertsPage.js'; -import { AlertTemplatesPage } from '../../pages/alertsPages/alertTemplatesPage.js'; -import { AlertDestinationsPage } from '../../pages/alertsPages/alertDestinationsPage.js'; -import { CommonActions } from '../../pages/commonActions.js'; -import DashboardFolder from '../../pages/dashboardPages/dashboard-folder.js'; +import PageManager from '../../pages/page-manager.js'; /** * Helper function for login @@ -29,14 +25,10 @@ async function login(page) { test.describe("Alerts UI Operations", () => { // Shared test variables - let alertsPage; - let templatesPage; - let destinationsPage; - let commonActions; + let pageManager; let createdTemplateName; let createdDestinationName; let sharedRandomValue; - let dashboardFolders; /** * Setup for each test @@ -48,15 +40,12 @@ test.describe("Alerts UI Operations", () => { */ test.beforeEach(async ({ page }, testInfo) => { await login(page); - alertsPage = new AlertsPage(page); - templatesPage = new AlertTemplatesPage(page); - destinationsPage = new AlertDestinationsPage(page); - commonActions = new CommonActions(page); + pageManager = new PageManager(page); await page.waitForTimeout(5000); // Generate shared random value if not already generated if (!sharedRandomValue) { - sharedRandomValue = alertsPage.generateRandomString(); + sharedRandomValue = pageManager.alertsPage.generateRandomString(); console.log('Generated shared random value for this run:', sharedRandomValue); } @@ -64,7 +53,7 @@ test.describe("Alerts UI Operations", () => { if (!test.info().title.includes('Scheduled Alert')) { // Ingest test data using common actions const streamName = 'auto_playwright_stream'; - await commonActions.ingestTestData(streamName); + await pageManager.commonActions.ingestTestData(streamName); } // Navigate to alerts page @@ -82,14 +71,14 @@ test.describe("Alerts UI Operations", () => { }, async ({ page }) => { // Create template with shared random value createdTemplateName = 'auto_playwright_template_' + sharedRandomValue; - await templatesPage.createTemplate(createdTemplateName); - await templatesPage.verifyCreatedTemplateExists(createdTemplateName); + await pageManager.alertTemplatesPage.createTemplate(createdTemplateName); + await pageManager.alertTemplatesPage.verifyCreatedTemplateExists(createdTemplateName); console.log('Created template:', createdTemplateName); // Create destination with shared random value createdDestinationName = 'auto_playwright_destination_' + sharedRandomValue; const slackUrl = "DEMO"; - await destinationsPage.ensureDestinationExists(createdDestinationName, slackUrl, createdTemplateName); + await pageManager.alertDestinationsPage.ensureDestinationExists(createdDestinationName, slackUrl, createdTemplateName); console.log('Created destination:', createdDestinationName); }); @@ -102,14 +91,14 @@ test.describe("Alerts UI Operations", () => { }, async ({ page }) => { // Ensure template exists createdTemplateName = 'auto_playwright_template_' + sharedRandomValue; - await templatesPage.ensureTemplateExists(createdTemplateName); + await pageManager.alertTemplatesPage.ensureTemplateExists(createdTemplateName); // Navigate to templates page - await templatesPage.navigateToTemplates(); + await pageManager.alertTemplatesPage.navigateToTemplates(); await page.waitForTimeout(2000); // Test template deletion - await templatesPage.deleteTemplateAndVerify(createdTemplateName); + await pageManager.alertTemplatesPage.deleteTemplateAndVerify(createdTemplateName); }); /** @@ -119,40 +108,39 @@ test.describe("Alerts UI Operations", () => { test('Create and Delete Scheduled Alert with SQL Query', { tag: ['@scheduledAlerts', '@all', '@alerts'] }, async ({ page }) => { - dashboardFolders = new DashboardFolder(page); const streamName = 'auto_playwright_stream'; // Ensure prerequisites exist createdTemplateName = 'auto_playwright_template_' + sharedRandomValue; - await templatesPage.ensureTemplateExists(createdTemplateName); + await pageManager.alertTemplatesPage.ensureTemplateExists(createdTemplateName); createdDestinationName = 'auto_playwright_destination_' + sharedRandomValue; const slackUrl = "DEMO"; - await destinationsPage.ensureDestinationExists(createdDestinationName, slackUrl, createdTemplateName); + await pageManager.alertDestinationsPage.ensureDestinationExists(createdDestinationName, slackUrl, createdTemplateName); // Navigate to alerts tab - await commonActions.navigateToAlerts(); + await pageManager.commonActions.navigateToAlerts(); await page.waitForTimeout(2000); // Ingest custom test data - await commonActions.ingestCustomTestData(streamName); + await pageManager.commonActions.ingestCustomTestData(streamName); await page.waitForTimeout(2000); // Create and verify scheduled alert const folderName = 'auto_' + sharedRandomValue; - await alertsPage.createFolder(folderName, 'Test Automation Folder'); - await alertsPage.verifyFolderCreated(folderName); + await pageManager.alertsPage.createFolder(folderName, 'Test Automation Folder'); + await pageManager.alertsPage.verifyFolderCreated(folderName); console.log('Successfully created folder:', folderName); - await alertsPage.navigateToFolder(folderName); - const alertName = await alertsPage.createScheduledAlertWithSQL(streamName, createdDestinationName, sharedRandomValue); - await alertsPage.verifyAlertCreated(alertName); + await pageManager.alertsPage.navigateToFolder(folderName); + const alertName = await pageManager.alertsPage.createScheduledAlertWithSQL(streamName, createdDestinationName, sharedRandomValue); + await pageManager.alertsPage.verifyAlertCreated(alertName); console.log('Successfully created scheduled alert:', alertName); // Clean up - await alertsPage.deleteAlertByRow(alertName); - await dashboardFolders.searchFolder(folderName); + await pageManager.alertsPage.deleteAlertByRow(alertName); + await pageManager.dashboardFolder.searchFolder(folderName); await expect(page.locator(`text=${folderName}`)).toBeVisible(); - await dashboardFolders.deleteFolder(folderName); + await pageManager.dashboardFolder.deleteFolder(folderName); }); /** @@ -162,72 +150,65 @@ test.describe("Alerts UI Operations", () => { test('Alert Module UI Validations and Filters Check', { tag: ['@all', '@alerts', '@alertsUIValidations'] }, async ({ page }) => { - // Initialize page objects - alertsPage = new AlertsPage(page); - templatesPage = new AlertTemplatesPage(page); - destinationsPage = new AlertDestinationsPage(page); - commonActions = new CommonActions(page); - dashboardFolders = new DashboardFolder(page); - // Create template const templateName = 'auto_playwright_template_' + sharedRandomValue; - await templatesPage.createTemplate(templateName); + await pageManager.alertTemplatesPage.createTemplate(templateName); console.log('Created template:', templateName); // Create destination const destinationName = 'auto_playwright_destination_' + sharedRandomValue; const slackUrl = "DEMO"; - await destinationsPage.ensureDestinationExists(destinationName, slackUrl, templateName); + await pageManager.alertDestinationsPage.ensureDestinationExists(destinationName, slackUrl, templateName); console.log('Created destination:', destinationName); // Navigate to alerts page - await commonActions.navigateToAlerts(); + await pageManager.commonActions.navigateToAlerts(); // Create folder const folderName = 'auto_' + sharedRandomValue; - await alertsPage.createFolder(folderName, 'Test Automation Folder'); + await pageManager.alertsPage.createFolder(folderName, 'Test Automation Folder'); console.log('Created folder:', folderName); // Get initial alert counts - await commonActions.navigateToHome(); - const { scheduledAlertsCount, realTimeAlertsCount } = await alertsPage.verifyAlertCounts(); + await pageManager.commonActions.navigateToHome(); + const { scheduledAlertsCount, realTimeAlertsCount } = await pageManager.alertsPage.verifyAlertCounts(); console.log('Initial Active Scheduled Alerts Count:', scheduledAlertsCount); console.log('Initial Active Real-time Alerts Count:', realTimeAlertsCount); // Navigate to alerts and verify ui validations - await commonActions.navigateToAlerts(); - await alertsPage.navigateToFolder(folderName); + await pageManager.commonActions.navigateToAlerts(); + await pageManager.alertsPage.navigateToFolder(folderName); console.log('Navigated to folder:', folderName); // Verify invalid alert name validation - await alertsPage.verifyInvalidAlertCreation(); + await pageManager.alertsPage.verifyInvalidAlertCreation(); // Verify field required validation - await alertsPage.verifyFieldRequiredValidation(); + await pageManager.alertsPage.verifyFieldRequiredValidation(); // Create a valid alert using existing function const streamName = 'auto_playwright_stream'; const column = 'job'; const value = 'test'; - await commonActions.navigateToAlerts(); - await alertsPage.navigateToFolder(folderName); + await pageManager.commonActions.navigateToAlerts(); + await pageManager.alertsPage.navigateToFolder(folderName); await page.waitForTimeout(2000); - const alertName = await alertsPage.createAlert(streamName, column, value, destinationName, sharedRandomValue); - await alertsPage.verifyAlertCreated(alertName); + const alertName = await pageManager.alertsPage.createAlert(streamName, column, value, destinationName, sharedRandomValue); + await pageManager.alertsPage.verifyAlertCreated(alertName); console.log('Successfully created valid alert:', alertName); await page.waitForTimeout(2000); // Add delay after alert creation // Navigate back to home and verify alert count increased - await commonActions.navigateToHome(); - const { realTimeAlertsCount: newRealTimeAlertsCount } = await alertsPage.verifyAlertCounts(); + await pageManager.commonActions.navigateToHome(); + const { realTimeAlertsCount: newRealTimeAlertsCount } = await pageManager.alertsPage.verifyAlertCounts(); console.log('New Active Real-time Alerts Count:', newRealTimeAlertsCount); // Verify count increased by 1 - await alertsPage.verifyAlertCountIncreased(realTimeAlertsCount, newRealTimeAlertsCount); + await pageManager.alertsPage.verifyAlertCountIncreased(realTimeAlertsCount, newRealTimeAlertsCount); // Navigate back to alerts and verify clone validation - await commonActions.navigateToAlerts(); - await alertsPage.navigateToFolder(folderName); + await pageManager.commonActions.navigateToAlerts(); + await pageManager.alertsPage.navigateToFolder(folderName); console.log('Navigated back to folder:', folderName); await page.waitForTimeout(2000); @@ -236,32 +217,32 @@ test.describe("Alerts UI Operations", () => { console.log('Alert is visible before clone validation:', alertName); // Now verify clone validation - await alertsPage.verifyCloneAlertUIValidation(alertName); + await pageManager.alertsPage.verifyCloneAlertUIValidation(alertName); // Continue with rest of the test... - await alertsPage.verifyTabContents(); - await alertsPage.verifyFolderSearch(folderName); + await pageManager.alertsPage.verifyTabContents(); + await pageManager.alertsPage.verifyFolderSearch(folderName); // Move alerts to target folder const targetFolderName = 'testfoldermove'; - await alertsPage.ensureFolderExists(targetFolderName, 'Test Folder for Moving Alerts'); - await alertsPage.moveAllAlertsToFolder(targetFolderName); + await pageManager.alertsPage.ensureFolderExists(targetFolderName, 'Test Folder for Moving Alerts'); + await pageManager.alertsPage.moveAllAlertsToFolder(targetFolderName); - await dashboardFolders.searchFolder(folderName); + await pageManager.dashboardFolder.searchFolder(folderName); await expect(page.locator(`text=${folderName}`)).toBeVisible(); - await dashboardFolders.deleteFolder(folderName); + await pageManager.dashboardFolder.deleteFolder(folderName); // Verify alerts in target folder await page.waitForTimeout(2000); - await dashboardFolders.searchFolder(targetFolderName); - await alertsPage.navigateToFolder(targetFolderName); + await pageManager.dashboardFolder.searchFolder(targetFolderName); + await pageManager.alertsPage.navigateToFolder(targetFolderName); await page.waitForTimeout(2000); // Search and verify alert instance - await alertsPage.searchAlert(alertName); - await alertsPage.verifySearchResultsUIValidation(1); + await pageManager.alertsPage.searchAlert(alertName); + await pageManager.alertsPage.verifySearchResultsUIValidation(1); // Delete the alert - await alertsPage.deleteAlertByRow(alertName); + await pageManager.alertsPage.deleteAlertByRow(alertName); }); }); \ No newline at end of file diff --git a/tests/ui-testing/playwright-tests/Logs/indexquery.spec.js b/tests/ui-testing/playwright-tests/Logs/indexquery.spec.js index eb953507ed..cd81cb6e5b 100644 --- a/tests/ui-testing/playwright-tests/Logs/indexquery.spec.js +++ b/tests/ui-testing/playwright-tests/Logs/indexquery.spec.js @@ -1,6 +1,7 @@ import { test, expect } from "../baseFixtures"; import logData from "../../cypress/fixtures/log.json"; import logsdata from "../../../test-data/logs_data.json"; +import PageManager from '../../pages/page-manager.js'; test.describe.configure({ mode: 'parallel' }); @@ -29,9 +30,7 @@ async function applyQueryButton(page) { await expect.poll(async () => (await search).status()).toBe(200); } - async function runQuery(page, query) { - const startTime = Date.now(); const response = await page.evaluate(async (query, url, streamName, orgId) => { let response @@ -135,7 +134,6 @@ test.describe("Compare SQL query execution times", () => { } }); - test("should compare match_all and match_all_raw_ignore_case query times", async ({ page }) => { const oneMinuteAgo = Date.now() - 60 * 1000; const query1 = { diff --git a/tests/ui-testing/playwright-tests/Logs/join.spec.js b/tests/ui-testing/playwright-tests/Logs/join.spec.js index 7447930e63..01a82cefd1 100644 --- a/tests/ui-testing/playwright-tests/Logs/join.spec.js +++ b/tests/ui-testing/playwright-tests/Logs/join.spec.js @@ -1,161 +1,125 @@ import { test, expect } from "../baseFixtures.js"; -import { LoginPage } from '../../pages/generalPages/loginPage.js'; -import { LogsPage } from '../../pages/logsPages/logsPage.js'; -import { IngestionPage } from '../../pages/generalPages/ingestionPage.js'; +import PageManager from '../../pages/page-manager.js'; test.describe.configure({ mode: 'parallel' }); test.describe("Join for logs", () => { - let loginPage, logsPage, ingestionPage; + let pageManager; test.beforeEach(async ({ page }) => { - loginPage = new LoginPage(page); - ingestionPage = new IngestionPage(page); - logsPage = new LogsPage(page); - await loginPage.gotoLoginPage(); - await loginPage.loginAsInternalUser(); - await loginPage.login(); // Login as root user - await ingestionPage.ingestion(); - await ingestionPage.ingestionJoin(); + pageManager = new PageManager(page); + await pageManager.loginPage.gotoLoginPage(); + await pageManager.loginPage.loginAsInternalUser(); + await pageManager.loginPage.login(); // Login as root user + await pageManager.ingestionPage.ingestion(); + await pageManager.ingestionPage.ingestionJoin(); }); test("Run query after selecting two streams", async ({ page }) => { - - await logsPage.navigateToLogs(); - await logsPage.selectIndexAndStreamJoin(); - await logsPage.displayTwoStreams(); - await logsPage.selectRunQuery(); - - + await pageManager.logsPage.navigateToLogs(); + await pageManager.logsPage.selectIndexAndStreamJoin(); + await pageManager.logsPage.displayTwoStreams(); + await pageManager.logsPage.selectRunQuery(); }); test("Run query after selecting two streams and SQL Mode On", async ({ page }) => { - - await logsPage.navigateToLogs(); - await logsPage.selectIndexAndStreamJoin(); - await logsPage.enableSQLMode(); - await logsPage.selectRunQuery(); - await logsPage.displayTwoStreams(); - - + await pageManager.logsPage.navigateToLogs(); + await pageManager.logsPage.selectIndexAndStreamJoin(); + await pageManager.logsPage.enableSQLMode(); + await pageManager.logsPage.selectRunQuery(); + await pageManager.logsPage.displayTwoStreams(); }); test("Run query after selecting two streams, selecting field and SQL Mode On", async ({ page }) => { - - await logsPage.navigateToLogs(); - await logsPage.selectIndexAndStreamJoin(); - await logsPage.kubernetesContainerName(); - await logsPage.enableSQLMode(); - await logsPage.selectRunQuery(); - await logsPage.validateResult(); - - + await pageManager.logsPage.navigateToLogs(); + await pageManager.logsPage.selectIndexAndStreamJoin(); + await pageManager.logsPage.kubernetesContainerName(); + await pageManager.logsPage.enableSQLMode(); + await pageManager.logsPage.selectRunQuery(); + await pageManager.logsPage.validateResult(); }); test("Run query after selecting two streams, SQL Mode On and entering join queries", async ({ page }) => { - - await logsPage.navigateToLogs(); - await logsPage.selectIndexAndStreamJoin(); - await logsPage.kubernetesContainerNameJoin(); - await logsPage.enableSQLMode(); - await logsPage.selectRunQuery(); - await logsPage.displayCountQuery(); - await logsPage.validateResult(); - - + await pageManager.logsPage.navigateToLogs(); + await pageManager.logsPage.selectIndexAndStreamJoin(); + await pageManager.logsPage.kubernetesContainerNameJoin(); + await pageManager.logsPage.enableSQLMode(); + await pageManager.logsPage.selectRunQuery(); + await pageManager.logsPage.displayCountQuery(); + await pageManager.logsPage.validateResult(); }); test("Run query after selecting two streams, SQL Mode On and entering join limit", async ({ page }) => { - - await logsPage.navigateToLogs(); - await logsPage.selectIndexAndStreamJoin(); - await logsPage.kubernetesContainerNameJoinLimit(); - await logsPage.enableSQLMode(); - await logsPage.selectRunQuery(); - await logsPage.validateResult(); - - + await pageManager.logsPage.navigateToLogs(); + await pageManager.logsPage.selectIndexAndStreamJoin(); + await pageManager.logsPage.kubernetesContainerNameJoinLimit(); + await pageManager.logsPage.enableSQLMode(); + await pageManager.logsPage.selectRunQuery(); + await pageManager.logsPage.validateResult(); }); test("Run query after selecting two streams, SQL Mode On and entering join like", async ({ page }) => { - - await logsPage.navigateToLogs(); - await logsPage.selectIndexAndStreamJoin(); - await logsPage.kubernetesContainerNameJoinLike(); - await logsPage.enableSQLMode(); - await logsPage.selectRunQuery(); - - - + await pageManager.logsPage.navigateToLogs(); + await pageManager.logsPage.selectIndexAndStreamJoin(); + await pageManager.logsPage.kubernetesContainerNameJoinLike(); + await pageManager.logsPage.enableSQLMode(); + await pageManager.logsPage.selectRunQuery(); }); test("Run query after selecting two streams, SQL Mode On and entering Left join queries", async ({ page }) => { - - await logsPage.navigateToLogs(); - await logsPage.selectIndexAndStreamJoin(); - await logsPage.kubernetesContainerNameLeftJoin(); - await logsPage.enableSQLMode(); - await logsPage.selectRunQuery(); - await logsPage.validateResult(); - - + await pageManager.logsPage.navigateToLogs(); + await pageManager.logsPage.selectIndexAndStreamJoin(); + await pageManager.logsPage.kubernetesContainerNameLeftJoin(); + await pageManager.logsPage.enableSQLMode(); + await pageManager.logsPage.selectRunQuery(); + await pageManager.logsPage.validateResult(); }); test("Run query after selecting two streams, SQL Mode On and entering Right join queries", async ({ page }) => { - - await logsPage.navigateToLogs(); - await logsPage.selectIndexAndStreamJoin(); - await logsPage.kubernetesContainerNameRightJoin(); - await logsPage.enableSQLMode(); - await logsPage.selectRunQuery(); - await logsPage.validateResult(); - - + await pageManager.logsPage.navigateToLogs(); + await pageManager.logsPage.selectIndexAndStreamJoin(); + await pageManager.logsPage.kubernetesContainerNameRightJoin(); + await pageManager.logsPage.enableSQLMode(); + await pageManager.logsPage.selectRunQuery(); + await pageManager.logsPage.validateResult(); }); test("Run query after selecting two streams, SQL Mode On and entering Full join queries", async ({ page }) => { - - await logsPage.navigateToLogs(); - await logsPage.selectIndexAndStreamJoin(); - await logsPage.kubernetesContainerNameFullJoin(); - await logsPage.enableSQLMode(); - await logsPage.selectRunQuery(); - await logsPage.validateResult(); - - + await pageManager.logsPage.navigateToLogs(); + await pageManager.logsPage.selectIndexAndStreamJoin(); + await pageManager.logsPage.kubernetesContainerNameFullJoin(); + await pageManager.logsPage.enableSQLMode(); + await pageManager.logsPage.selectRunQuery(); + await pageManager.logsPage.validateResult(); }); test("Click on interesting field icon and display field in editor", async ({ page }) => { - - await logsPage.navigateToLogs(); - await logsPage.selectIndexAndStreamJoin(); - await logsPage.enableSQLMode(); - await logsPage.clickQuickModeToggle(); - await logsPage.selectRunQuery(); - await logsPage.clickInterestingFields(); - await logsPage.validateInterestingFields(); + await pageManager.logsPage.navigateToLogs(); + await pageManager.logsPage.selectIndexAndStreamJoin(); + await pageManager.logsPage.enableSQLMode(); + await pageManager.logsPage.clickQuickModeToggle(); + await pageManager.logsPage.selectRunQuery(); + await pageManager.logsPage.clickInterestingFields(); + await pageManager.logsPage.validateInterestingFields(); }); test("Click on interesting field icon and display query in editor", async ({ page }) => { - - await logsPage.navigateToLogs(); - await logsPage.selectIndexAndStreamJoin(); - await logsPage.enableSQLMode(); - await logsPage.clickQuickModeToggle(); - await logsPage.selectRunQuery(); - await logsPage.clickInterestingFields(); - await logsPage.validateInterestingFieldsQuery(); + await pageManager.logsPage.navigateToLogs(); + await pageManager.logsPage.selectIndexAndStreamJoin(); + await pageManager.logsPage.enableSQLMode(); + await pageManager.logsPage.clickQuickModeToggle(); + await pageManager.logsPage.selectRunQuery(); + await pageManager.logsPage.clickInterestingFields(); + await pageManager.logsPage.validateInterestingFieldsQuery(); }); test("Add/remove interesting field removes it from editor and results too", async ({ page }) => { - - await logsPage.navigateToLogs(); - await logsPage.selectIndexAndStreamJoin(); - await logsPage.enableSQLMode(); - await logsPage.clickQuickModeToggle(); - await logsPage.selectRunQuery(); - await logsPage.clickInterestingFields(); - await logsPage.addRemoveInteresting(); + await pageManager.logsPage.navigateToLogs(); + await pageManager.logsPage.selectIndexAndStreamJoin(); + await pageManager.logsPage.enableSQLMode(); + await pageManager.logsPage.clickQuickModeToggle(); + await pageManager.logsPage.selectRunQuery(); + await pageManager.logsPage.clickInterestingFields(); + await pageManager.logsPage.addRemoveInteresting(); }); - }); diff --git a/tests/ui-testing/playwright-tests/Logs/logshistogram.spec.js b/tests/ui-testing/playwright-tests/Logs/logshistogram.spec.js index 850e45583c..a02637bcee 100644 --- a/tests/ui-testing/playwright-tests/Logs/logshistogram.spec.js +++ b/tests/ui-testing/playwright-tests/Logs/logshistogram.spec.js @@ -1,7 +1,7 @@ import { test, expect } from "../baseFixtures.js"; import logData from "../../cypress/fixtures/log.json"; -import { LogsPage } from '../../pages/logsPages/logsPage.js'; import logsdata from "../../../test-data/logs_data.json"; +import PageManager from '../../pages/page-manager.js'; test.describe.configure({ mode: 'parallel' }); @@ -47,11 +47,11 @@ async function ingestion(page) { } test.describe("Logs Histogram testcases", () => { - let logsPage; + let pageManager; test.beforeEach(async ({ page }) => { await login(page); - logsPage = new LogsPage(page); + pageManager = new PageManager(page); await page.waitForTimeout(5000); await ingestion(page); await page.waitForTimeout(2000); @@ -60,117 +60,117 @@ test.describe("Logs Histogram testcases", () => { `${logData.logsUrl}?org_identifier=${process.env["ORGNAME"]}` ); const allsearch = page.waitForResponse("**/api/default/_search**"); - await logsPage.selectStream("e2e_automate"); + await pageManager.logsPage.selectStream("e2e_automate"); }); test("Verify error handling and no results found with histogram", { tag: ['@histogram', '@all', '@logs'] }, async ({ page }) => { // Check if histogram is off and toggle it on if needed - const isHistogramOn = await logsPage.isHistogramOn(); + const isHistogramOn = await pageManager.logsPage.isHistogramOn(); if (!isHistogramOn) { - await logsPage.toggleHistogram(); + await pageManager.logsPage.toggleHistogram(); } // Type invalid query and verify error - await logsPage.typeQuery("match_all('invalid')"); - await logsPage.setDateTimeFilter(); - await logsPage.waitForTimeout(2000); - await logsPage.clickRefresh(); - await logsPage.clickErrorMessage(); - await logsPage.clickResetFilters(); + await pageManager.logsPage.typeQuery("match_all('invalid')"); + await pageManager.logsPage.setDateTimeFilter(); + await pageManager.logsPage.waitForTimeout(2000); + await pageManager.logsPage.clickRefresh(); + await pageManager.logsPage.clickErrorMessage(); + await pageManager.logsPage.clickResetFilters(); // Type SQL query and verify no results - await logsPage.typeQuery("SELECT count(*) FROM 'e2e_automate' where code > 500"); - await logsPage.waitForTimeout(2000); - await logsPage.clickRefresh(); - await logsPage.waitForTimeout(2000); - await logsPage.clickNoDataFound(); - await logsPage.clickResultDetail(); + await pageManager.logsPage.typeQuery("SELECT count(*) FROM 'e2e_automate' where code > 500"); + await pageManager.logsPage.waitForTimeout(2000); + await pageManager.logsPage.clickRefresh(); + await pageManager.logsPage.waitForTimeout(2000); + await pageManager.logsPage.clickNoDataFound(); + await pageManager.logsPage.clickResultDetail(); }); test("Verify error handling with histogram toggle off and on", { tag: ['@histogram', '@all', '@logs'] }, async ({ page }) => { // Check if histogram is on and toggle it off - const isHistogramOn = await logsPage.isHistogramOn(); + const isHistogramOn = await pageManager.logsPage.isHistogramOn(); if (isHistogramOn) { - await logsPage.toggleHistogram(); + await pageManager.logsPage.toggleHistogram(); } // Type invalid query and verify error - await logsPage.typeQuery("match_all('invalid')"); - await logsPage.setDateTimeFilter(); - await logsPage.waitForTimeout(2000); - await logsPage.clickRefresh(); - await logsPage.clickErrorMessage(); - await logsPage.clickResetFilters(); + await pageManager.logsPage.typeQuery("match_all('invalid')"); + await pageManager.logsPage.setDateTimeFilter(); + await pageManager.logsPage.waitForTimeout(2000); + await pageManager.logsPage.clickRefresh(); + await pageManager.logsPage.clickErrorMessage(); + await pageManager.logsPage.clickResetFilters(); // Toggle histogram back on - await logsPage.toggleHistogram(); + await pageManager.logsPage.toggleHistogram(); // Type SQL query and verify no results - await logsPage.typeQuery("SELECT count(*) FROM 'e2e_automate' where code > 500"); - await logsPage.waitForTimeout(2000); - await logsPage.clickRefresh(); - await logsPage.waitForTimeout(2000); - await logsPage.clickNoDataFound(); - await logsPage.clickResultDetail(); + await pageManager.logsPage.typeQuery("SELECT count(*) FROM 'e2e_automate' where code > 500"); + await pageManager.logsPage.waitForTimeout(2000); + await pageManager.logsPage.clickRefresh(); + await pageManager.logsPage.waitForTimeout(2000); + await pageManager.logsPage.clickNoDataFound(); + await pageManager.logsPage.clickResultDetail(); }); test("Verify histogram toggle persistence after multiple queries", { tag: ['@histogram', '@all', '@logs'] }, async ({ page }) => { // Start with histogram on - const isHistogramOn = await logsPage.isHistogramOn(); + const isHistogramOn = await pageManager.logsPage.isHistogramOn(); if (!isHistogramOn) { - await logsPage.toggleHistogram(); + await pageManager.logsPage.toggleHistogram(); } // Run first query - await logsPage.typeQuery("SELECT * FROM 'e2e_automate' LIMIT 10"); - await logsPage.setDateTimeFilter(); - await logsPage.waitForTimeout(2000); - await logsPage.clickRefresh(); - await logsPage.waitForTimeout(2000); + await pageManager.logsPage.typeQuery("SELECT * FROM 'e2e_automate' LIMIT 10"); + await pageManager.logsPage.setDateTimeFilter(); + await pageManager.logsPage.waitForTimeout(2000); + await pageManager.logsPage.clickRefresh(); + await pageManager.logsPage.waitForTimeout(2000); // Toggle histogram off - await logsPage.toggleHistogram(); - await logsPage.enableSQLMode(); - await logsPage.waitForTimeout(1000); - await logsPage.enableSQLMode(); + await pageManager.logsPage.toggleHistogram(); + await pageManager.logsPage.enableSQLMode(); + await pageManager.logsPage.waitForTimeout(1000); + await pageManager.logsPage.enableSQLMode(); // Run second query - await logsPage.typeQuery("SELECT count(*) FROM 'e2e_automate'"); - await logsPage.waitForTimeout(2000); - await logsPage.clickRefresh(); - await logsPage.waitForTimeout(2000); + await pageManager.logsPage.typeQuery("SELECT count(*) FROM 'e2e_automate'"); + await pageManager.logsPage.waitForTimeout(2000); + await pageManager.logsPage.clickRefresh(); + await pageManager.logsPage.waitForTimeout(2000); // Verify histogram stays off - await logsPage.verifyHistogramState(); + await pageManager.logsPage.verifyHistogramState(); }); test("Verify histogram toggle with empty query", { tag: ['@histogram', '@all', '@logs'] }, async ({ page }) => { // Start with histogram off - const isHistogramOn = await logsPage.isHistogramOn(); + const isHistogramOn = await pageManager.logsPage.isHistogramOn(); if (isHistogramOn) { - await logsPage.toggleHistogram(); + await pageManager.logsPage.toggleHistogram(); } // Clear query and refresh - await logsPage.typeQuery(""); - await logsPage.setDateTimeFilter(); - await logsPage.waitForTimeout(2000); - await logsPage.clickRefresh(); - await logsPage.waitForTimeout(2000); + await pageManager.logsPage.typeQuery(""); + await pageManager.logsPage.setDateTimeFilter(); + await pageManager.logsPage.waitForTimeout(2000); + await pageManager.logsPage.clickRefresh(); + await pageManager.logsPage.waitForTimeout(2000); // Toggle histogram on - await logsPage.toggleHistogram(); + await pageManager.logsPage.toggleHistogram(); // Verify histogram state - const isHistogramOnAfterToggle = await logsPage.isHistogramOn(); + const isHistogramOnAfterToggle = await pageManager.logsPage.isHistogramOn(); expect(isHistogramOnAfterToggle).toBeTruthy(); }); @@ -178,30 +178,30 @@ test.describe("Logs Histogram testcases", () => { tag: ['@histogram', '@all', '@logs'] }, async ({ page }) => { // Start with histogram on - const isHistogramOn = await logsPage.isHistogramOn(); + const isHistogramOn = await pageManager.logsPage.isHistogramOn(); if (!isHistogramOn) { - await logsPage.toggleHistogram(); + await pageManager.logsPage.toggleHistogram(); } // Run complex query - await logsPage.typeQuery("SELECT * FROM 'e2e_automate' WHERE timestamp > '2024-01-01' AND code < 400 GROUP BY code ORDER BY count(*) DESC LIMIT 5"); - await logsPage.setDateTimeFilter(); - await logsPage.waitForTimeout(2000); - await logsPage.clickRefresh(); - await logsPage.waitForTimeout(2000); + await pageManager.logsPage.typeQuery("SELECT * FROM 'e2e_automate' WHERE timestamp > '2024-01-01' AND code < 400 GROUP BY code ORDER BY count(*) DESC LIMIT 5"); + await pageManager.logsPage.setDateTimeFilter(); + await pageManager.logsPage.waitForTimeout(2000); + await pageManager.logsPage.clickRefresh(); + await pageManager.logsPage.waitForTimeout(2000); // Toggle histogram off and verify - await logsPage.toggleHistogram(); - const isHistogramOff = await logsPage.isHistogramOn(); + await pageManager.logsPage.toggleHistogram(); + const isHistogramOff = await pageManager.logsPage.isHistogramOn(); expect(!isHistogramOff).toBeTruthy(); // Run another query and verify histogram stays off - await logsPage.typeQuery("SELECT count(*) FROM 'e2e_automate'"); - await logsPage.waitForTimeout(2000); - await logsPage.clickRefresh(); - await logsPage.waitForTimeout(2000); + await pageManager.logsPage.typeQuery("SELECT count(*) FROM 'e2e_automate'"); + await pageManager.logsPage.waitForTimeout(2000); + await pageManager.logsPage.clickRefresh(); + await pageManager.logsPage.waitForTimeout(2000); - const isHistogramStillOff = await logsPage.isHistogramOn(); + const isHistogramStillOff = await pageManager.logsPage.isHistogramOn(); expect(!isHistogramStillOff).toBeTruthy(); }); }); \ No newline at end of file diff --git a/tests/ui-testing/playwright-tests/Logs/logspage.spec.js b/tests/ui-testing/playwright-tests/Logs/logspage.spec.js index 106090f790..41614e42bd 100644 --- a/tests/ui-testing/playwright-tests/Logs/logspage.spec.js +++ b/tests/ui-testing/playwright-tests/Logs/logspage.spec.js @@ -1,7 +1,7 @@ import { test, expect } from "../baseFixtures"; import logData from "../../cypress/fixtures/log.json"; import logsdata from "../../../test-data/logs_data.json"; -import { LogsPage } from '../../pages/logsPages/logsPage.js'; +import PageManager from '../../pages/page-manager.js'; test.describe.configure({ mode: "parallel" }); @@ -54,7 +54,7 @@ async function ingestion(page) { } test.describe("Logs Page testcases", () => { - let logsPage; + let pageManager; // let logData; function removeUTFCharacters(text) { // console.log(text, "tex"); @@ -82,7 +82,7 @@ test.describe("Logs Page testcases", () => { // }); test.beforeEach(async ({ page }) => { await login(page); - logsPage = new LogsPage(page); + pageManager = new PageManager(page); await page.waitForTimeout(1000) await ingestion(page); await page.waitForTimeout(2000) @@ -91,7 +91,7 @@ test.describe("Logs Page testcases", () => { `${logData.logsUrl}?org_identifier=${process.env["ORGNAME"]}` ); const allsearch = page.waitForResponse("**/api/default/_search**"); - await logsPage.selectStream("e2e_automate"); + await pageManager.logsPage.selectStream("e2e_automate"); await applyQueryButton(page); // const streams = page.waitForResponse("**/api/default/streams**"); }); @@ -101,15 +101,15 @@ test.describe("Logs Page testcases", () => { }, async ({ page, }) => { - await logsPage.waitForTimeout(3000); - await logsPage.clickRefreshButton(); - await logsPage.clickSQLModeToggle(); - await logsPage.clickQueryEditor(); - await logsPage.selectAllText(); - await logsPage.pressBackspace(); - await logsPage.waitForTimeout(3000); - await logsPage.clickRefreshButton(); - await logsPage.expectSQLQueryMissingError(); + await pageManager.logsPage.waitForTimeout(3000); + await pageManager.logsPage.clickRefreshButton(); + await pageManager.logsPage.clickSQLModeToggle(); + await pageManager.logsPage.clickQueryEditor(); + await pageManager.logsPage.selectAllText(); + await pageManager.logsPage.pressBackspace(); + await pageManager.logsPage.waitForTimeout(3000); + await pageManager.logsPage.clickRefreshButton(); + await pageManager.logsPage.expectSQLQueryMissingError(); }); test("should be able to enter valid text in VRL and run query", { @@ -117,19 +117,19 @@ test.describe("Logs Page testcases", () => { }, async ({ page, }) => { - await logsPage.clickDateTimeButton(); - await logsPage.clickRelative6WeeksButton(); + await pageManager.logsPage.clickDateTimeButton(); + await pageManager.logsPage.clickRelative6WeeksButton(); await applyQueryButton(page); - await logsPage.clickVrlEditor(); - await logsPage.waitForTimeout(1000); + await pageManager.logsPage.clickVrlEditor(); + await pageManager.logsPage.waitForTimeout(1000); await applyQueryButton(page); - await logsPage.expectWarningElementHidden(); + await pageManager.logsPage.expectWarningElementHidden(); - await logsPage.clickTableRowExpandMenu(); - await logsPage.expectTextVisible(".a=2"); - await logsPage.expectLogsTableVisible(); - await logsPage.clickRefreshButton(); + await pageManager.logsPage.clickTableRowExpandMenu(); + await pageManager.logsPage.expectTextVisible(".a=2"); + await pageManager.logsPage.expectLogsTableVisible(); + await pageManager.logsPage.clickRefreshButton(); }); test("should hide and display again after clicking the arrow", { @@ -137,13 +137,13 @@ test.describe("Logs Page testcases", () => { }, async ({ page, }) => { - await logsPage.clickDateTimeButton(); - await logsPage.clickRelative6WeeksButton(); - await logsPage.clickShowQueryToggle(); - await logsPage.clickFieldListCollapseButton(); - await logsPage.waitForTimeout(1000); - await logsPage.clickFieldListCollapseButton(); - await logsPage.expectIndexFieldSearchInputVisible(); + await pageManager.logsPage.clickDateTimeButton(); + await pageManager.logsPage.clickRelative6WeeksButton(); + await pageManager.logsPage.clickShowQueryToggle(); + await pageManager.logsPage.clickFieldListCollapseButton(); + await pageManager.logsPage.waitForTimeout(1000); + await pageManager.logsPage.clickFieldListCollapseButton(); + await pageManager.logsPage.expectIndexFieldSearchInputVisible(); }); test("should verify if special characters allowed in saved views name", { @@ -151,14 +151,14 @@ test.describe("Logs Page testcases", () => { }, async ({ page, }) => { - await logsPage.clickDateTimeButton(); - await logsPage.clickRelative6WeeksButton(); - await logsPage.clickShowQueryToggle(); - await logsPage.clickSavedViewsButton(); - await logsPage.fillSavedViewName("e2e@@@@@"); - await logsPage.waitForTimeout(2000); - await logsPage.clickSavedViewDialogSave(); - await logsPage.expectNotificationMessage("Please provide valid view name"); + await pageManager.logsPage.clickDateTimeButton(); + await pageManager.logsPage.clickRelative6WeeksButton(); + await pageManager.logsPage.clickShowQueryToggle(); + await pageManager.logsPage.clickSavedViewsButton(); + await pageManager.logsPage.fillSavedViewName("e2e@@@@@"); + await pageManager.logsPage.waitForTimeout(2000); + await pageManager.logsPage.clickSavedViewDialogSave(); + await pageManager.logsPage.expectNotificationMessage("Please provide valid view name"); }); test("should display error when user directly clicks on OK without adding name", { @@ -166,10 +166,10 @@ test.describe("Logs Page testcases", () => { }, async ({ page, }) => { - await logsPage.clickRefreshButton(); - await logsPage.clickSavedViewsExpand(); - await logsPage.clickSaveViewButton(); - await logsPage.clickSavedViewDialogSave(); + await pageManager.logsPage.clickRefreshButton(); + await pageManager.logsPage.clickSavedViewsExpand(); + await pageManager.logsPage.clickSaveViewButton(); + await pageManager.logsPage.clickSavedViewDialogSave(); }); test("should display the details of logs results on graph", { @@ -177,16 +177,16 @@ test.describe("Logs Page testcases", () => { }, async ({ page, }) => { - await logsPage.clickDateTimeButton(); - await logsPage.clickRelative6WeeksButton(); + await pageManager.logsPage.clickDateTimeButton(); + await pageManager.logsPage.clickRelative6WeeksButton(); await applyQueryButton(page); - await logsPage.waitForTimeout(5000); - await logsPage.expectSearchListVisible(); - await logsPage.waitForTimeout(2000); - await logsPage.clickLogTableColumnSource(); - await logsPage.waitForTimeout(1000); - await logsPage.clickCloseDialogForce(); - await logsPage.expectSearchListVisible(); + await pageManager.logsPage.waitForTimeout(5000); + await pageManager.logsPage.expectSearchListVisible(); + await pageManager.logsPage.waitForTimeout(2000); + await pageManager.logsPage.clickLogTableColumnSource(); + await pageManager.logsPage.waitForTimeout(1000); + await pageManager.logsPage.clickCloseDialogForce(); + await pageManager.logsPage.expectSearchListVisible(); }); test("should click on live mode on button and select 5 sec, switch off, and then click run query", { @@ -195,13 +195,13 @@ test.describe("Logs Page testcases", () => { page, }) => { await page.route("**/logData.ValueQuery", (route) => route.continue()); - await logsPage.clickDateTimeButton(); - await logsPage.clickRelative6WeeksButton(); - await logsPage.clickLiveModeButton(); - await logsPage.clickLiveMode5Sec(); - await logsPage.expectNotificationMessage("Live mode is enabled"); - await logsPage.clickLiveModeButton(); - await logsPage.clickLiveMode5Sec(); + await pageManager.logsPage.clickDateTimeButton(); + await pageManager.logsPage.clickRelative6WeeksButton(); + await pageManager.logsPage.clickLiveModeButton(); + await pageManager.logsPage.clickLiveMode5Sec(); + await pageManager.logsPage.expectNotificationMessage("Live mode is enabled"); + await pageManager.logsPage.clickLiveModeButton(); + await pageManager.logsPage.clickLiveMode5Sec(); await applyQueryButton(page); }); @@ -210,9 +210,9 @@ test.describe("Logs Page testcases", () => { }, async ({ page, }) => { - await logsPage.expectVrlFieldVisible(); - await logsPage.clickVrlToggle(); - await logsPage.expectFnEditorNotVisible(); + await pageManager.logsPage.expectVrlFieldVisible(); + await pageManager.logsPage.clickVrlToggle(); + await pageManager.logsPage.expectFnEditorNotVisible(); }); test("should switch from past 6 weeks to past 6 days on date-time UI", { @@ -220,43 +220,43 @@ test.describe("Logs Page testcases", () => { }, async ({ page, }) => { - await logsPage.clickDateTimeButton(); - await logsPage.clickRelative6WeeksButton(); - await logsPage.expectTextVisible("Past 6 Weeks"); + await pageManager.logsPage.clickDateTimeButton(); + await pageManager.logsPage.clickRelative6WeeksButton(); + await pageManager.logsPage.expectTextVisible("Past 6 Weeks"); await applyQueryButton(page); - await logsPage.clickDateTimeButton(); - await logsPage.clickPast6DaysButton(); - await logsPage.expectTextVisible("Past 6 Days"); + await pageManager.logsPage.clickDateTimeButton(); + await pageManager.logsPage.clickPast6DaysButton(); + await pageManager.logsPage.expectTextVisible("Past 6 Days"); await applyQueryButton(page); }); test("should display SQL query on switching between Menu options & navigating to Logs again", { tag: ['@sqlQueryPersistence', '@all', '@logs'] }, async ({ page }) => { - await logsPage.clickDateTimeButton(); - await logsPage.waitForTimeout(1000); - await logsPage.clickSQLModeToggle(); + await pageManager.logsPage.clickDateTimeButton(); + await pageManager.logsPage.waitForTimeout(1000); + await pageManager.logsPage.clickSQLModeToggle(); const expectedQuery = 'SELECT * FROM "e2e_automate"'; - const text = await logsPage.getQueryEditorText(); + const text = await pageManager.logsPage.getQueryEditorText(); await expect(text.replace(/\s/g, "")).toContain(expectedQuery.replace(/\s/g, "")); - await logsPage.clickMenuLinkMetricsItem(); - await logsPage.clickMenuLinkLogsItem(); - await logsPage.waitForTimeout(2000); - await logsPage.expectQueryEditorContainsSelectFrom(); + await pageManager.logsPage.clickMenuLinkMetricsItem(); + await pageManager.logsPage.clickMenuLinkLogsItem(); + await pageManager.logsPage.waitForTimeout(2000); + await pageManager.logsPage.expectQueryEditorContainsSelectFrom(); }); test("should display ingested logs - search logs, navigate on another tab, revisit logs page", { tag: ['@ingestedLogsPersistence', '@all', '@logs'] }, async ({ page, }) => { - await logsPage.clickDateTimeButton(); - await logsPage.clickRelative15MinButton(); + await pageManager.logsPage.clickDateTimeButton(); + await pageManager.logsPage.clickRelative15MinButton(); await applyQueryButton(page); - await logsPage.clickMenuLinkTracesItem(); - await logsPage.waitForTimeout(100); - await logsPage.clickMenuLinkLogsItem(); - await logsPage.waitForTimeout(5000); - await logsPage.expectBarChartVisible(); + await pageManager.logsPage.clickMenuLinkTracesItem(); + await pageManager.logsPage.waitForTimeout(100); + await pageManager.logsPage.clickMenuLinkLogsItem(); + await pageManager.logsPage.waitForTimeout(5000); + await pageManager.logsPage.expectBarChartVisible(); }); test.skip("should redirect to logs after clicking on stream explorer via stream page", { @@ -264,204 +264,202 @@ test.describe("Logs Page testcases", () => { }, async ({ page, }) => { - await logsPage.clickDateTimeButton(); - await logsPage.clickMenuLinkStreamsItem(); - await logsPage.waitForTimeout(1000); - await logsPage.clickMenuLinkStreamsItem(); - await logsPage.clickSearchStreamInput(); - await logsPage.fillSearchStreamInput("e2e"); - await logsPage.waitForTimeout(1000); - await logsPage.clickExploreButton(); - await logsPage.expectUrlContainsLogs(); + await pageManager.logsPage.clickDateTimeButton(); + await pageManager.logsPage.clickMenuLinkStreamsItem(); + await pageManager.logsPage.waitForTimeout(1000); + await pageManager.logsPage.clickMenuLinkStreamsItem(); + await pageManager.logsPage.clickSearchStreamInput(); + await pageManager.logsPage.fillSearchStreamInput("e2e"); + await pageManager.logsPage.waitForTimeout(1000); + await pageManager.logsPage.clickExploreButton(); + await pageManager.logsPage.expectUrlContainsLogs(); }); test('should display error when save function is clicked without any VRL function', { tag: ['@functionValidation', '@all', '@logs'] }, async ({ page }) => { - await logsPage.clickFunctionDropdownSave(); - await logsPage.expectWarningNoFunctionDefinition(); + await pageManager.logsPage.clickFunctionDropdownSave(); + await pageManager.logsPage.expectWarningNoFunctionDefinition(); }); test('should create a function and then delete it', { tag: ['@functionCRUD', '@all', '@logs'] }, async ({ page }) => { - await logsPage.clickRefreshButton(); - await logsPage.clickFunctionDropdownSave(); - await logsPage.clickVrlEditor(); - await logsPage.waitForTimeout(1000); - await logsPage.clickFunctionDropdownSave(); - await logsPage.clickSavedFunctionNameInput(); - const randomString = logsPage.generateRandomString(); + await pageManager.logsPage.clickRefreshButton(); + await pageManager.logsPage.clickFunctionDropdownSave(); + await pageManager.logsPage.clickVrlEditor(); + await pageManager.logsPage.waitForTimeout(1000); + await pageManager.logsPage.clickFunctionDropdownSave(); + await pageManager.logsPage.clickSavedFunctionNameInput(); + const randomString = pageManager.logsPage.generateRandomString(); const functionName = 'e2efunction_' + randomString; - await logsPage.fillSavedFunctionNameInput(functionName); - await logsPage.clickSavedViewDialogSave(); - await logsPage.clickMenuLinkPipelineItem(); - await logsPage.clickTabRealtime(); - await logsPage.clickFunctionStreamTab(); - await logsPage.clickSearchFunctionInput(); - await logsPage.fillSearchFunctionInput(randomString); - await logsPage.clickDeleteFunctionButton(); - await logsPage.clickConfirmButton(); + await pageManager.logsPage.fillSavedFunctionNameInput(functionName); + await pageManager.logsPage.clickSavedViewDialogSave(); + await pageManager.logsPage.clickMenuLinkPipelineItem(); + await pageManager.logsPage.clickTabRealtime(); + await pageManager.logsPage.clickFunctionStreamTab(); + await pageManager.logsPage.clickSearchFunctionInput(); + await pageManager.logsPage.fillSearchFunctionInput(randomString); + await pageManager.logsPage.clickDeleteFunctionButton(); + await pageManager.logsPage.clickConfirmButton(); }); test('should display click save directly while creating a function', { tag: ['@functionSaveValidation', '@all', '@logs'] }, async ({ page }) => { - await logsPage.waitForTimeout(1000); - await logsPage.clickVrlEditor(); - await logsPage.waitForTimeout(1000); - await logsPage.clickFunctionDropdownSave(); - await logsPage.clickSavedViewDialogSave(); - await logsPage.expectFunctionNameNotValid(); + await pageManager.logsPage.waitForTimeout(1000); + await pageManager.logsPage.clickVrlEditor(); + await pageManager.logsPage.waitForTimeout(1000); + await pageManager.logsPage.clickFunctionDropdownSave(); + await pageManager.logsPage.clickSavedViewDialogSave(); + await pageManager.logsPage.expectFunctionNameNotValid(); }); test('should display error on adding only blank spaces under function name', { tag: ['@functionNameValidation', '@all', '@logs'] }, async ({ page }) => { - await logsPage.waitForTimeout(1000); - await logsPage.clickVrlEditor(); - await logsPage.waitForTimeout(1000); - await logsPage.clickFunctionDropdownSave(); - await logsPage.fillSavedFunctionNameInput(' '); - await logsPage.clickSavedViewDialogSave(); - await logsPage.expectFunctionNameNotValid(); + await pageManager.logsPage.waitForTimeout(1000); + await pageManager.logsPage.clickVrlEditor(); + await pageManager.logsPage.waitForTimeout(1000); + await pageManager.logsPage.clickFunctionDropdownSave(); + await pageManager.logsPage.fillSavedFunctionNameInput(' '); + await pageManager.logsPage.clickSavedViewDialogSave(); + await pageManager.logsPage.expectFunctionNameNotValid(); }); - test('should display error on adding invalid characters under function name', { tag: ['@functionNameValidation', '@all', '@logs'] }, async ({ page }) => { - await logsPage.waitForTimeout(1000); - await logsPage.clickVrlEditor(); - await logsPage.waitForTimeout(1000); - await logsPage.clickFunctionDropdownSave(); - await logsPage.fillSavedFunctionNameInput('e2e@@@'); - await logsPage.clickSavedViewDialogSave(); - await logsPage.expectFunctionNameNotValid(); + await pageManager.logsPage.waitForTimeout(1000); + await pageManager.logsPage.clickVrlEditor(); + await pageManager.logsPage.waitForTimeout(1000); + await pageManager.logsPage.clickFunctionDropdownSave(); + await pageManager.logsPage.fillSavedFunctionNameInput('e2e@@@'); + await pageManager.logsPage.clickSavedViewDialogSave(); + await pageManager.logsPage.expectFunctionNameNotValid(); }); test('should display added function on switching between tabs and again navigate to log', { tag: ['@functionPersistence', '@all', '@logs'] }, async ({ page }) => { - await logsPage.waitForTimeout(1000); - await logsPage.clickVrlEditor(); - await logsPage.waitForTimeout(1000); - await logsPage.clickRefreshButton(); - await logsPage.clickMenuLinkMetricsItem(); - await logsPage.clickMenuLinkLogsItem(); - await logsPage.clickMenuLinkLogsItem(); - await logsPage.expectPageContainsText(".a=2"); + await pageManager.logsPage.waitForTimeout(1000); + await pageManager.logsPage.clickVrlEditor(); + await pageManager.logsPage.waitForTimeout(1000); + await pageManager.logsPage.clickRefreshButton(); + await pageManager.logsPage.clickMenuLinkMetricsItem(); + await pageManager.logsPage.clickMenuLinkLogsItem(); + await pageManager.logsPage.clickMenuLinkLogsItem(); + await pageManager.logsPage.expectPageContainsText(".a=2"); }); test('should display bar chart when histogram toggle is on', { tag: ['@histogramBarChart', '@histogram', '@all', '@logs'] }, async ({ page }) => { - await logsPage.clickLogSearchIndexListFieldSearchInput(); - await logsPage.fillLogSearchIndexListFieldSearchInput('code'); - await logsPage.waitForTimeout(4000); - await logsPage.clickExpandCode(); - await logsPage.waitForTimeout(4000); - await logsPage.clickRefreshButton(); - await logsPage.clickSQLModeToggle(); - await logsPage.clickRefreshButton(); - await logsPage.clickBarChartCanvas(); - await logsPage.clickSQLModeToggle(); - await logsPage.clickRefreshButton(); - await logsPage.clickBarChartCanvas(); - await logsPage.clickHistogramToggleDiv(); + await pageManager.logsPage.clickLogSearchIndexListFieldSearchInput(); + await pageManager.logsPage.fillLogSearchIndexListFieldSearchInput('code'); + await pageManager.logsPage.waitForTimeout(4000); + await pageManager.logsPage.clickExpandCode(); + await pageManager.logsPage.waitForTimeout(4000); + await pageManager.logsPage.clickRefreshButton(); + await pageManager.logsPage.clickSQLModeToggle(); + await pageManager.logsPage.clickRefreshButton(); + await pageManager.logsPage.clickBarChartCanvas(); + await pageManager.logsPage.clickSQLModeToggle(); + await pageManager.logsPage.clickRefreshButton(); + await pageManager.logsPage.clickBarChartCanvas(); + await pageManager.logsPage.clickHistogramToggleDiv(); }); test('should display search around in histogram mode', { tag: ['@searchAroundHistogram', '@histogram', '@all', '@logs'] }, async ({ page }) => { - await logsPage.waitForTimeout(1000); - await logsPage.clickLogTableColumnSource(); - await logsPage.clickLogsDetailTableSearchAroundBtn(); - await logsPage.waitForTimeout(2000); - await logsPage.expectLogTableColumnSourceVisible(); + await pageManager.logsPage.waitForTimeout(1000); + await pageManager.logsPage.clickLogTableColumnSource(); + await pageManager.logsPage.clickLogsDetailTableSearchAroundBtn(); + await pageManager.logsPage.waitForTimeout(2000); + await pageManager.logsPage.expectLogTableColumnSourceVisible(); }); - test.skip('should display results for search around after adding function', async ({ page }) => { - await logsPage.waitForTimeout(1000); - await logsPage.clickVrlEditor(); - await logsPage.waitForTimeout(1000); - await logsPage.clickRefreshButton(); - await logsPage.clickLogTableColumn3Source(); - await logsPage.clickLogsDetailTableSearchAroundBtn(); - await logsPage.waitForTimeout(1000); - await logsPage.expectLogTableColumnSourceVisible(); + await pageManager.logsPage.waitForTimeout(1000); + await pageManager.logsPage.clickVrlEditor(); + await pageManager.logsPage.waitForTimeout(1000); + await pageManager.logsPage.clickRefreshButton(); + await pageManager.logsPage.clickLogTableColumn3Source(); + await pageManager.logsPage.clickLogsDetailTableSearchAroundBtn(); + await pageManager.logsPage.waitForTimeout(1000); + await pageManager.logsPage.expectLogTableColumnSourceVisible(); }); test('should display search around in SQL mode', { tag: ['@searchAroundSQL', '@sqlMode', '@all', '@logs'] }, async ({ page }) => { - await logsPage.waitForTimeout(1000); - await logsPage.clickSQLModeToggle(); - await logsPage.clickLogTableColumnSource(); - await logsPage.clickLogsDetailTableSearchAroundBtn(); - await logsPage.waitForTimeout(2000); - await logsPage.expectLogTableColumnSourceVisible(); + await pageManager.logsPage.waitForTimeout(1000); + await pageManager.logsPage.clickSQLModeToggle(); + await pageManager.logsPage.clickLogTableColumnSource(); + await pageManager.logsPage.clickLogsDetailTableSearchAroundBtn(); + await pageManager.logsPage.waitForTimeout(2000); + await pageManager.logsPage.expectLogTableColumnSourceVisible(); }); test("should display results for search around with limit query", { tag: ['@searchAroundLimit', '@all', '@logs'] }, async ({ page }) => { - await logsPage.waitForTimeout(2000); - await logsPage.clickDateTimeButton(); - await logsPage.clickRelative15MinButton(); - await logsPage.clickQueryEditor(); - await logsPage.typeInQueryEditor("match_all('code') limit 5"); - await logsPage.waitForTimeout(2000); - await logsPage.clickSQLModeToggle(); - await logsPage.waitForTimeout(2000); - await logsPage.clickLogTableColumnSource(); - await logsPage.clickLogsDetailTableSearchAroundBtn(); - await logsPage.waitForTimeout(2000); - await logsPage.expectLogTableColumnSourceVisible(); + await pageManager.logsPage.waitForTimeout(2000); + await pageManager.logsPage.clickDateTimeButton(); + await pageManager.logsPage.clickRelative15MinButton(); + await pageManager.logsPage.clickQueryEditor(); + await pageManager.logsPage.typeInQueryEditor("match_all('code') limit 5"); + await pageManager.logsPage.waitForTimeout(2000); + await pageManager.logsPage.clickSQLModeToggle(); + await pageManager.logsPage.waitForTimeout(2000); + await pageManager.logsPage.clickLogTableColumnSource(); + await pageManager.logsPage.clickLogsDetailTableSearchAroundBtn(); + await pageManager.logsPage.waitForTimeout(2000); + await pageManager.logsPage.expectLogTableColumnSourceVisible(); }); test("should not display pagination for limit query", { tag: ['@paginationLimit', '@all', '@logs'] }, async ({ page }) => { - await logsPage.waitForTimeout(2000); - await logsPage.clickDateTimeButton(); - await logsPage.clickRelative15MinButton(); - await logsPage.clickQueryEditor(); - await logsPage.typeInQueryEditor("match_all('code') limit 5"); - await logsPage.waitForTimeout(2000); - await logsPage.clickSQLModeToggle(); - await logsPage.waitForTimeout(2000); - await logsPage.clickRefreshButton(); - await logsPage.waitForTimeout(2000); - await logsPage.expectPaginationNotVisible(); + await pageManager.logsPage.waitForTimeout(2000); + await pageManager.logsPage.clickDateTimeButton(); + await pageManager.logsPage.clickRelative15MinButton(); + await pageManager.logsPage.clickQueryEditor(); + await pageManager.logsPage.typeInQueryEditor("match_all('code') limit 5"); + await pageManager.logsPage.waitForTimeout(2000); + await pageManager.logsPage.clickSQLModeToggle(); + await pageManager.logsPage.waitForTimeout(2000); + await pageManager.logsPage.clickRefreshButton(); + await pageManager.logsPage.waitForTimeout(2000); + await pageManager.logsPage.expectPaginationNotVisible(); }); test("should not display pagination for SQL limit query", { tag: ['@paginationSQLLimit', '@sqlMode', '@all', '@logs'] }, async ({ page }) => { - await logsPage.waitForTimeout(2000); - await logsPage.clickDateTimeButton(); - await logsPage.clickRelative15MinButton(); - await logsPage.clickQueryEditor(); - await logsPage.typeInQueryEditor('SELECT * FROM "e2e_automate" ORDER BY _timestamp DESC limit 5'); - await logsPage.waitForTimeout(2000); - await logsPage.clickRefreshButton(); - await logsPage.waitForTimeout(2000); - await logsPage.expectPaginationNotVisible(); + await pageManager.logsPage.waitForTimeout(2000); + await pageManager.logsPage.clickDateTimeButton(); + await pageManager.logsPage.clickRelative15MinButton(); + await pageManager.logsPage.clickQueryEditor(); + await pageManager.logsPage.typeInQueryEditor('SELECT * FROM "e2e_automate" ORDER BY _timestamp DESC limit 5'); + await pageManager.logsPage.waitForTimeout(2000); + await pageManager.logsPage.clickRefreshButton(); + await pageManager.logsPage.waitForTimeout(2000); + await pageManager.logsPage.expectPaginationNotVisible(); }); test("should not display pagination for SQL group/order/limit query", { tag: ['@paginationSQLGroupOrder', '@sqlMode', '@all', '@logs'] }, async ({ page }) => { - await logsPage.waitForTimeout(2000); - await logsPage.clickDateTimeButton(); - await logsPage.clickRelative15MinButton(); - await logsPage.clickQueryEditor(); - await logsPage.typeInQueryEditor('SELECT * FROM "e2e_automate" WHERE code < 400 GROUP BY code ORDER BY count(*) DESC LIMIT 5'); - await logsPage.waitForTimeout(2000); - await logsPage.clickRefreshButton(); - await logsPage.waitForTimeout(2000); - await logsPage.expectPaginationNotVisible(); + await pageManager.logsPage.waitForTimeout(2000); + await pageManager.logsPage.clickDateTimeButton(); + await pageManager.logsPage.clickRelative15MinButton(); + await pageManager.logsPage.clickQueryEditor(); + await pageManager.logsPage.typeInQueryEditor('SELECT * FROM "e2e_automate" WHERE code < 400 GROUP BY code ORDER BY count(*) DESC LIMIT 5'); + await pageManager.logsPage.waitForTimeout(2000); + await pageManager.logsPage.clickRefreshButton(); + await pageManager.logsPage.waitForTimeout(2000); + await pageManager.logsPage.expectPaginationNotVisible(); }); }); diff --git a/tests/ui-testing/playwright-tests/Logs/logsqueries.spec.js b/tests/ui-testing/playwright-tests/Logs/logsqueries.spec.js index dd6e08f934..848ae642b3 100644 --- a/tests/ui-testing/playwright-tests/Logs/logsqueries.spec.js +++ b/tests/ui-testing/playwright-tests/Logs/logsqueries.spec.js @@ -1,7 +1,7 @@ import { test, expect } from "../baseFixtures"; import logData from "../../cypress/fixtures/log.json"; import logsdata from "../../../test-data/logs_data.json"; -import { LogsPage } from '../../pages/logsPages/logsPage.js'; +import PageManager from '../../pages/page-manager.js'; test.describe.configure({ mode: 'parallel' }); async function login(page) { @@ -51,7 +51,7 @@ async function ingestion(page) { console.log(response); } test.describe("Logs Queries testcases", () => { - let logsPage; + let pageManager; // let logData; function removeUTFCharacters(text) { // console.log(text, "tex"); @@ -73,7 +73,7 @@ test.describe("Logs Queries testcases", () => { test.beforeEach(async ({ page }) => { await login(page); - logsPage = new LogsPage(page); + pageManager = new PageManager(page); await page.waitForTimeout(1000) await ingestion(page); await page.waitForTimeout(2000) @@ -82,7 +82,7 @@ test.describe("Logs Queries testcases", () => { `${logData.logsUrl}?org_identifier=${process.env["ORGNAME"]}` ); const allsearch = page.waitForResponse("**/api/default/_search**"); - await logsPage.selectStream("e2e_automate"); + await pageManager.logsPage.selectStream("e2e_automate"); await applyQueryButton(page); // const streams = page.waitForResponse("**/api/default/streams**"); }); @@ -90,32 +90,32 @@ test.describe("Logs Queries testcases", () => { test("should display quick mode toggle button", { tag: ['@quickModeLogs', '@all', '@logs'] }, async ({ page }) => { - await logsPage.expectQuickModeToggleVisible(); + await pageManager.logsPage.expectQuickModeToggleVisible(); }); test.skip("should add timestamp to editor save this view and switch", { tag: ['@timestampViewLogs', '@all', '@logs'] }, async ({ page }) => { - await logsPage.waitForTimeout(3000); - await logsPage.clickLogTableColumnSource(); - await logsPage.clickIncludeExcludeFieldButton(); - await logsPage.clickIncludeFieldButton(); - await logsPage.clickCloseDialog(); - await logsPage.clickSavedViewsButton(); - await logsPage.fillSavedViewName("e2etimestamp"); - await logsPage.clickSavedViewDialogSaveContent(); - await logsPage.clickSavedViewArrow(); - await logsPage.clickSavedViewByLabel(/timestamp/); - await logsPage.waitForTimeout(3000); - await logsPage.clickSavedViewsExpand(); - await logsPage.clickSavedViewSearchInput(); - await logsPage.fillSavedViewSearchInput('e2e'); - await logsPage.clickSavedViewByTitle('e2etimestamp'); - await logsPage.clickSavedViewsExpand(); - await logsPage.clickSavedViewSearchInput(); - await logsPage.clickSavedViewByTitle('e2etimestamp'); - await logsPage.clickDeleteButton(); - await logsPage.clickConfirmButton(); + await pageManager.logsPage.waitForTimeout(3000); + await pageManager.logsPage.clickLogTableColumnSource(); + await pageManager.logsPage.clickIncludeExcludeFieldButton(); + await pageManager.logsPage.clickIncludeFieldButton(); + await pageManager.logsPage.clickCloseDialog(); + await pageManager.logsPage.clickSavedViewsButton(); + await pageManager.logsPage.fillSavedViewName("e2etimestamp"); + await pageManager.logsPage.clickSavedViewDialogSaveContent(); + await pageManager.logsPage.clickSavedViewArrow(); + await pageManager.logsPage.clickSavedViewByLabel(/timestamp/); + await pageManager.logsPage.waitForTimeout(3000); + await pageManager.logsPage.clickSavedViewsExpand(); + await pageManager.logsPage.clickSavedViewSearchInput(); + await pageManager.logsPage.fillSavedViewSearchInput('e2e'); + await pageManager.logsPage.clickSavedViewByTitle('e2etimestamp'); + await pageManager.logsPage.clickSavedViewsExpand(); + await pageManager.logsPage.clickSavedViewSearchInput(); + await pageManager.logsPage.clickSavedViewByTitle('e2etimestamp'); + await pageManager.logsPage.clickDeleteButton(); + await pageManager.logsPage.clickConfirmButton(); }); test("should redirect to logs after clicking on stream explorer via stream page", { @@ -125,210 +125,262 @@ test.describe("Logs Queries testcases", () => { const randomSavedViewName = `streamslog${Math.random().toString(36).substring(2, 10)}`; // Interactions with the page - await logsPage.clickRefreshButton(); - await logsPage.clickSavedViewsExpand(); - await logsPage.clickSaveViewButton(); - await logsPage.fillSavedViewName(randomSavedViewName); // Use the random name - await logsPage.clickSavedViewDialogSave(); - await logsPage.waitForTimeout(5000); - await logsPage.clickStreamsMenuItem(); - await logsPage.clickSearchStreamInput(); - await logsPage.fillSearchStreamInput('e2e'); - await logsPage.waitForTimeout(1000); - await logsPage.clickExploreButton(); - await logsPage.waitForTimeout(5000); - await logsPage.waitForSavedViewsButton(); - await logsPage.clickSavedViewsExpand(); - await logsPage.clickSavedViewSearchInput(); - await logsPage.fillSavedViewSearchInput(randomSavedViewName); // Use the random name here - await logsPage.waitForTimeout(3000); - await logsPage.waitForSavedViewText(randomSavedViewName); - await logsPage.clickSavedViewByText(randomSavedViewName); - await logsPage.clickSavedViewsExpand(); - await logsPage.clickSavedViewSearchInput(); - await logsPage.clickSavedViewByTitle(randomSavedViewName); // Use the random name here + await pageManager.logsPage.clickRefreshButton(); + await pageManager.logsPage.clickSavedViewsExpand(); + await pageManager.logsPage.clickSaveViewButton(); + await pageManager.logsPage.fillSavedViewName(randomSavedViewName); // Use the random name + await pageManager.logsPage.clickSavedViewDialogSave(); + await pageManager.logsPage.waitForTimeout(5000); + await pageManager.logsPage.clickStreamsMenuItem(); + await pageManager.logsPage.clickSearchStreamInput(); + await pageManager.logsPage.fillSearchStreamInput('e2e'); + await pageManager.logsPage.waitForTimeout(1000); + await pageManager.logsPage.clickExploreButton(); + await pageManager.logsPage.waitForTimeout(5000); + await pageManager.logsPage.waitForSavedViewsButton(); + await pageManager.logsPage.clickSavedViewsExpand(); + await pageManager.logsPage.clickSavedViewSearchInput(); + await pageManager.logsPage.fillSavedViewSearchInput(randomSavedViewName); // Use the random name here + await pageManager.logsPage.waitForTimeout(3000); + await pageManager.logsPage.waitForSavedViewText(randomSavedViewName); + await pageManager.logsPage.clickSavedViewByText(randomSavedViewName); + await pageManager.logsPage.clickSavedViewsExpand(); + await pageManager.logsPage.clickSavedViewSearchInput(); + await pageManager.logsPage.clickSavedViewByTitle(randomSavedViewName); // Use the random name here // Dynamic delete button selector using the random saved view name - await logsPage.clickDeleteSavedViewButton(randomSavedViewName); - await logsPage.clickConfirmButton(); // Confirm deletion + await pageManager.logsPage.clickDeleteSavedViewButton(randomSavedViewName); + await pageManager.logsPage.clickConfirmButton(); // Confirm deletion }); test("should reset the editor on clicking reset filter button", { tag: ['@resetFilters', '@all', '@logs'] }, async ({ page }) => { - await logsPage.clickDateTimeButton(); - await logsPage.clickRelative15MinButton(); - await logsPage.clickQueryEditorTextbox(); - await logsPage.typeInQueryEditor("match_all_raw_ignore_case('provide_credentials')"); - await logsPage.waitForSearchBarRefreshButton(); - await logsPage.clickRefreshButton(); - await logsPage.clickResetFiltersButton(); - await logsPage.waitForQueryEditorTextbox(); - await logsPage.expectQueryEditorEmpty(); + await pageManager.logsPage.clickDateTimeButton(); + await pageManager.logsPage.clickRelative15MinButton(); + await pageManager.logsPage.clickQueryEditorTextbox(); + await pageManager.logsPage.typeInQueryEditor("match_all_raw_ignore_case('provide_credentials')"); + await pageManager.logsPage.waitForSearchBarRefreshButton(); + await pageManager.logsPage.clickRefreshButton(); + await pageManager.logsPage.clickResetFiltersButton(); + await pageManager.logsPage.waitForQueryEditorTextbox(); + await pageManager.logsPage.expectQueryEditorEmpty(); }); test("should add invalid query and display error", { tag: ['@invalidQueryLogs', '@all', '@logs'] }, async ({ page }) => { - await logsPage.waitForTimeout(2000); - await logsPage.clickDateTimeButton(); - await logsPage.clickRelative15MinButton(); - await logsPage.clickQueryEditor(); - await logsPage.typeInQueryEditor("kubernetes"); - await logsPage.waitForTimeout(2000); - await logsPage.clickSearchBarRefreshButton(); - await logsPage.expectErrorMessageVisible(); + await pageManager.logsPage.waitForTimeout(2000); + await pageManager.logsPage.clickDateTimeButton(); + await pageManager.logsPage.clickRelative15MinButton(); + await pageManager.logsPage.clickQueryEditor(); + await pageManager.logsPage.typeInQueryEditor("kubernetes"); + await pageManager.logsPage.waitForTimeout(2000); + await pageManager.logsPage.clickSearchBarRefreshButton(); + await pageManager.logsPage.expectErrorMessageVisible(); }); test("should not display error if match all case added in log query search", { tag: ['@matchAllLogs', '@all', '@logs'] }, async ({ page }) => { - await logsPage.clickDateTimeButton(); - await logsPage.clickRelative15MinButton(); + await pageManager.logsPage.clickDateTimeButton(); + await pageManager.logsPage.clickRelative15MinButton(); - await logsPage.expectQueryEditorVisible(); - await logsPage.clickQueryEditor(); - await logsPage.typeInQueryEditor("match_all('code')"); + await pageManager.logsPage.expectQueryEditorVisible(); + await pageManager.logsPage.clickQueryEditor(); + await pageManager.logsPage.typeInQueryEditor("match_all('code')"); - await logsPage.expectSearchBarRefreshButtonVisible(); - await logsPage.clickSearchBarRefreshButton(); + await pageManager.logsPage.expectSearchBarRefreshButtonVisible(); + await pageManager.logsPage.clickSearchBarRefreshButton(); - await logsPage.expectLogTableColumnSourceVisible(); + await pageManager.logsPage.expectLogTableColumnSourceVisible(); }); - - - test("should change stream settings and click on search stream", { - tag: ['@streamSettings', '@all', '@logs'] + test("should display error when save function is clicked without any VRL function", { + tag: ['@functionValidation', '@all', '@logs'] }, async ({ page }) => { - await logsPage.clickStreamsMenuItem(); - await logsPage.waitForTimeout(3000); - await logsPage.clickStreamsSearchStreamInput(); - await logsPage.fillStreamsSearchStreamInput("e2e_automate"); - await logsPage.waitForTimeout(2000); - await logsPage.clickStreamDetail(); - await logsPage.clickSchemaStreamIndexSelect(); - await logsPage.clickFullTextSearch(); - await logsPage.clickSchemaUpdateSettingsButton(); - await logsPage.waitForTimeout(3000); - await logsPage.clickColAutoButton(); - await logsPage.waitForTimeout(3000); - await logsPage.clickExploreTitle(); - await logsPage.expectLogTableColumnSourceVisible(); + await pageManager.logsPage.clickFunctionDropdownSave(); + await pageManager.logsPage.expectWarningNoFunctionDefinition(); }); - - test("should display error if blank spaces added under stream name and clicked create stream ", { - tag: ['@streamValidation', '@all', '@logs'] + test("should create a function and then delete it", { + tag: ['@functionCRUD', '@all', '@logs'] }, async ({ page }) => { - await logsPage.clickStreamsMenuItem(); - await logsPage.clickAddStreamButton(); - await logsPage.clickAddStreamNameInput(); - await logsPage.typeInQueryEditor(" "); - await logsPage.clickSaveStreamButton(); - await logsPage.expectFieldRequiredVisible(); + await pageManager.logsPage.clickRefreshButton(); + await pageManager.logsPage.clickFunctionDropdownSave(); + await pageManager.logsPage.clickVrlEditor(); + await pageManager.logsPage.waitForTimeout(1000); + await pageManager.logsPage.clickFunctionDropdownSave(); + await pageManager.logsPage.clickSavedFunctionNameInput(); + const randomString = pageManager.logsPage.generateRandomString(); + const functionName = 'e2efunction_' + randomString; + await pageManager.logsPage.fillSavedFunctionNameInput(functionName); + await pageManager.logsPage.clickSavedViewDialogSave(); + await pageManager.logsPage.clickMenuLinkPipelineItem(); + await pageManager.logsPage.clickTabRealtime(); + await pageManager.logsPage.clickFunctionStreamTab(); + await pageManager.logsPage.clickSearchFunctionInput(); + await pageManager.logsPage.fillSearchFunctionInput(randomString); + await pageManager.logsPage.clickDeleteFunctionButton(); + await pageManager.logsPage.clickConfirmButton(); }); - - - test("should display error if create stream is clicked without adding name", { - tag: ['@streamValidation', '@all', '@logs'] + test("should display click save directly while creating a function", { + tag: ['@functionSaveValidation', '@all', '@logs'] }, async ({ page }) => { - await logsPage.clickStreamsMenuItem(); - await logsPage.clickAddStreamButton(); - await logsPage.waitForSaveStreamButton(); - await logsPage.scrollSaveStreamButtonIntoView(); - await logsPage.clickSaveStreamButton(); - await logsPage.expectFieldRequiredVisible(); + await pageManager.logsPage.waitForTimeout(1000); + await pageManager.logsPage.clickVrlEditor(); + await pageManager.logsPage.waitForTimeout(1000); + await pageManager.logsPage.clickFunctionDropdownSave(); + await pageManager.logsPage.clickSavedViewDialogSave(); + await pageManager.logsPage.expectFunctionNameNotValid(); }); - test("should display enter count query", { - tag: ['@countQuery', '@all', '@logs'] + test("should display error on adding only blank spaces under function name", { + tag: ['@functionNameValidation', '@all', '@logs'] }, async ({ page }) => { - await logsPage.clickQueryEditorTextbox(); - await logsPage.typeInQueryEditor('SELECT COUNT(_timestamp) AS xyz, _timestamp FROM "e2e_automate" Group by _timestamp ORDER BY _timestamp DESC'); - await logsPage.waitForTimeout(4000); - await logsPage.clickSQLModeToggle(); - await logsPage.expectSearchBarRefreshButtonVisible(); - await logsPage.waitForTimeout(3000); - await logsPage.clickRefreshButton(); - await logsPage.waitForTimeout(4000); - await logsPage.expectErrorWhileFetchingNotVisible(); - await logsPage.clickBarChartCanvas(); + await pageManager.logsPage.waitForTimeout(1000); + await pageManager.logsPage.clickVrlEditor(); + await pageManager.logsPage.waitForTimeout(1000); + await pageManager.logsPage.clickFunctionDropdownSave(); + await pageManager.logsPage.fillSavedFunctionNameInput(' '); + await pageManager.logsPage.clickSavedViewDialogSave(); + await pageManager.logsPage.expectFunctionNameNotValid(); }); - test("should display values API text successfully and error to not be displayed", { - tag: ['@valuesAPI', '@all', '@logs'] + test("should display error on adding invalid characters under function name", { + tag: ['@functionNameValidation', '@all', '@logs'] }, async ({ page }) => { - await logsPage.fillIndexFieldSearchInput('kubernetes_pod_name'); - await logsPage.clickExpandLabel('kubernetes_pod_name'); - await logsPage.expectErrorWhileFetchingFieldValuesNotVisible(); - await logsPage.clickText('ziox-ingester-'); - await logsPage.clickRefreshButton(); - await logsPage.clickCollapseLabel('kubernetes_pod_name'); - await logsPage.clickExpandLabel('kubernetes_pod_name'); - await logsPage.expectSubfieldAddButtonVisible('kubernetes_pod_name', 'ziox-ingester-'); - await logsPage.clickSubfieldAddButton('kubernetes_pod_name', 'ziox-ingester-'); + await pageManager.logsPage.waitForTimeout(1000); + await pageManager.logsPage.clickVrlEditor(); + await pageManager.logsPage.waitForTimeout(1000); + await pageManager.logsPage.clickFunctionDropdownSave(); + await pageManager.logsPage.fillSavedFunctionNameInput('e2e@@@'); + await pageManager.logsPage.clickSavedViewDialogSave(); + await pageManager.logsPage.expectFunctionNameNotValid(); }); - test("should display results in selected time", { - tag: ['@timeSelection', '@all', '@logs'] - }, async ({ - page, - }) => { - - await logsPage.setDateTimeToToday(); - - - }); - - test("should display results if stringmatch ignorecase lowercase added in log query search", { - tag: ['@stringMatchIgnoreLowerCase', '@all', '@logs'] + test("should display added function on switching between tabs and again navigate to log", { + tag: ['@functionPersistence', '@all', '@logs'] }, async ({ page }) => { - await logsPage.selectStream('e2e_automate'); - await logsPage.setDateTimeTo15Minutes(); - await logsPage.searchWithStringMatchIgnoreCase('ziox'); + await pageManager.logsPage.waitForTimeout(1000); + await pageManager.logsPage.clickVrlEditor(); + await pageManager.logsPage.waitForTimeout(1000); + await pageManager.logsPage.clickRefreshButton(); + await pageManager.logsPage.clickMenuLinkMetricsItem(); + await pageManager.logsPage.clickMenuLinkLogsItem(); + await pageManager.logsPage.clickMenuLinkLogsItem(); + await pageManager.logsPage.expectPageContainsText(".a=2"); }); - test("should display results if stringmatch ignorecase uppercase added in log query search", { - tag: ['@stringMatchIgnoreUpperCase', '@all', '@logs'] + test("should display bar chart when histogram toggle is on", { + tag: ['@histogramBarChart', '@histogram', '@all', '@logs'] }, async ({ page }) => { - await logsPage.selectStream('e2e_automate'); - await logsPage.setDateTimeTo15Minutes(); - await logsPage.searchWithStringMatchIgnoreCase('Ziox'); + await pageManager.logsPage.clickLogSearchIndexListFieldSearchInput(); + await pageManager.logsPage.fillLogSearchIndexListFieldSearchInput('code'); + await pageManager.logsPage.waitForTimeout(4000); + await pageManager.logsPage.clickExpandCode(); + await pageManager.logsPage.waitForTimeout(4000); + await pageManager.logsPage.clickRefreshButton(); + await pageManager.logsPage.clickSQLModeToggle(); + await pageManager.logsPage.clickRefreshButton(); + await pageManager.logsPage.clickBarChartCanvas(); + await pageManager.logsPage.clickSQLModeToggle(); + await pageManager.logsPage.clickRefreshButton(); + await pageManager.logsPage.clickBarChartCanvas(); + await pageManager.logsPage.clickHistogramToggleDiv(); }); - test("should trigger search results when pressing Cmd+Enter or Ctrl+Enter", { - tag: ['@keyboardShortcuts', '@all', '@logs'] + test("should display search around in histogram mode", { + tag: ['@searchAroundHistogram', '@histogram', '@all', '@logs'] }, async ({ page }) => { - await logsPage.executeQueryWithKeyboardShortcutTest(); + await pageManager.logsPage.waitForTimeout(1000); + await pageManager.logsPage.clickLogTableColumnSource(); + await pageManager.logsPage.clickLogsDetailTableSearchAroundBtn(); + await pageManager.logsPage.waitForTimeout(2000); + await pageManager.logsPage.expectLogTableColumnSourceVisible(); }); - test("should execute query with keyboard shortcut (Cmd+Enter or Ctrl+Enter) after clicking elsewhere ", { - tag: ['@keyboardShortcuts', '@all', '@logs'] - }, async ({ page }) => { - await logsPage.executeQueryWithKeyboardShortcutAfterClickingElsewhere(); + test.skip("should display results for search around after adding function", async ({ page }) => { + await pageManager.logsPage.waitForTimeout(1000); + await pageManager.logsPage.clickVrlEditor(); + await pageManager.logsPage.waitForTimeout(1000); + await pageManager.logsPage.clickRefreshButton(); + await pageManager.logsPage.clickLogTableColumn3Source(); + await pageManager.logsPage.clickLogsDetailTableSearchAroundBtn(); + await pageManager.logsPage.waitForTimeout(1000); + await pageManager.logsPage.expectLogTableColumnSourceVisible(); }); - test("should execute different query with keyboard shortcut (Cmd+Enter or Ctrl+Enter)", { - tag: ['@keyboardShortcuts', '@all', '@logs'] + test("should display search around in SQL mode", { + tag: ['@searchAroundSQL', '@sqlMode', '@all', '@logs'] }, async ({ page }) => { - await logsPage.executeQueryWithKeyboardShortcutWithDifferentQuery(); + await pageManager.logsPage.waitForTimeout(1000); + await pageManager.logsPage.clickSQLModeToggle(); + await pageManager.logsPage.clickLogTableColumnSource(); + await pageManager.logsPage.clickLogsDetailTableSearchAroundBtn(); + await pageManager.logsPage.waitForTimeout(2000); + await pageManager.logsPage.expectLogTableColumnSourceVisible(); }); - test("should execute SQL query with keyboard shortcut (Cmd+Enter or Ctrl+Enter)", { - tag: ['@keyboardShortcuts', '@sqlMode', '@all', '@logs'] + test("should display results for search around with limit query", { + tag: ['@searchAroundLimit', '@all', '@logs'] }, async ({ page }) => { - await logsPage.executeQueryWithKeyboardShortcutWithSQLMode(); + await pageManager.logsPage.waitForTimeout(2000); + await pageManager.logsPage.clickDateTimeButton(); + await pageManager.logsPage.clickRelative15MinButton(); + await pageManager.logsPage.clickQueryEditor(); + await pageManager.logsPage.typeInQueryEditor("match_all('code') limit 5"); + await pageManager.logsPage.waitForTimeout(2000); + await pageManager.logsPage.clickSQLModeToggle(); + await pageManager.logsPage.waitForTimeout(2000); + await pageManager.logsPage.clickLogTableColumnSource(); + await pageManager.logsPage.clickLogsDetailTableSearchAroundBtn(); + await pageManager.logsPage.waitForTimeout(2000); + await pageManager.logsPage.expectLogTableColumnSourceVisible(); }); - test("should verify logcount ordering in ascending and descending order", { - tag: ['@logCountOrdering', '@all', '@logs'] + test("should not display pagination for limit query", { + tag: ['@paginationLimit', '@all', '@logs'] }, async ({ page }) => { - // Verify descending order - await logsPage.verifyLogCountOrderingDescending(); - - // Verify ascending order - await logsPage.verifyLogCountOrderingAscending(); + await pageManager.logsPage.waitForTimeout(2000); + await pageManager.logsPage.clickDateTimeButton(); + await pageManager.logsPage.clickRelative15MinButton(); + await pageManager.logsPage.clickQueryEditor(); + await pageManager.logsPage.typeInQueryEditor("match_all('code') limit 5"); + await pageManager.logsPage.waitForTimeout(2000); + await pageManager.logsPage.clickSQLModeToggle(); + await pageManager.logsPage.waitForTimeout(2000); + await pageManager.logsPage.clickRefreshButton(); + await pageManager.logsPage.waitForTimeout(2000); + await pageManager.logsPage.expectPaginationNotVisible(); }); -}) \ No newline at end of file + + test("should not display pagination for SQL limit query", { + tag: ['@paginationSQLLimit', '@sqlMode', '@all', '@logs'] + }, async ({ page }) => { + await pageManager.logsPage.waitForTimeout(2000); + await pageManager.logsPage.clickDateTimeButton(); + await pageManager.logsPage.clickRelative15MinButton(); + await pageManager.logsPage.clickQueryEditor(); + await pageManager.logsPage.typeInQueryEditor('SELECT * FROM "e2e_automate" ORDER BY _timestamp DESC limit 5'); + await pageManager.logsPage.waitForTimeout(2000); + await pageManager.logsPage.clickRefreshButton(); + await pageManager.logsPage.waitForTimeout(2000); + await pageManager.logsPage.expectPaginationNotVisible(); + }); + + test("should not display pagination for SQL group/order/limit query", { + tag: ['@paginationSQLGroupOrder', '@sqlMode', '@all', '@logs'] + }, async ({ page }) => { + await pageManager.logsPage.waitForTimeout(2000); + await pageManager.logsPage.clickDateTimeButton(); + await pageManager.logsPage.clickRelative15MinButton(); + await pageManager.logsPage.clickQueryEditor(); + await pageManager.logsPage.typeInQueryEditor('SELECT * FROM "e2e_automate" WHERE code < 400 GROUP BY code ORDER BY count(*) DESC LIMIT 5'); + await pageManager.logsPage.waitForTimeout(2000); + await pageManager.logsPage.clickRefreshButton(); + await pageManager.logsPage.waitForTimeout(2000); + await pageManager.logsPage.expectPaginationNotVisible(); + }); +}); \ No newline at end of file diff --git a/tests/ui-testing/playwright-tests/Logs/logsquickmode.spec.js b/tests/ui-testing/playwright-tests/Logs/logsquickmode.spec.js index 669af4d2f9..b82b1bc4c1 100644 --- a/tests/ui-testing/playwright-tests/Logs/logsquickmode.spec.js +++ b/tests/ui-testing/playwright-tests/Logs/logsquickmode.spec.js @@ -1,7 +1,7 @@ import { test, expect } from "../baseFixtures"; import logData from "../../cypress/fixtures/log.json"; import logsdata from "../../../test-data/logs_data.json"; -import { LogsPage } from '../../pages/logsPages/logsPage.js'; +import PageManager from '../../pages/page-manager.js'; test.describe.configure({ mode: 'parallel' }); @@ -56,7 +56,7 @@ async function ingestion(page) { test.describe("Logs Quickmode testcases", () => { - let logsPage; + let pageManager; // let logData; function removeUTFCharacters(text) { // console.log(text, "tex"); @@ -76,7 +76,7 @@ test.describe("Logs Quickmode testcases", () => { test.beforeEach(async ({ page }) => { await login(page); - logsPage = new LogsPage(page); + pageManager = new PageManager(page); await page.waitForTimeout(1000); await ingestion(page); await page.waitForTimeout(2000); @@ -85,12 +85,12 @@ test.describe("Logs Quickmode testcases", () => { `${logData.logsUrl}?org_identifier=${process.env["ORGNAME"]}` ); const allsearch = page.waitForResponse("**/api/default/_search**"); - await logsPage.selectStream("e2e_automate"); + await pageManager.logsPage.selectStream("e2e_automate"); await applyQueryButton(page); // Enable quick mode toggle if it's not already enabled - const toggleButton = await logsPage.page.$('[data-test="logs-search-bar-quick-mode-toggle-btn"] > .q-toggle__inner'); + const toggleButton = await pageManager.logsPage.page.$('[data-test="logs-search-bar-quick-mode-toggle-btn"] > .q-toggle__inner'); // Evaluate the class attribute to determine if the toggle is in the off state const isSwitchedOff = await toggleButton.evaluate(node => node.classList.contains('q-toggle__inner--falsy')); if (isSwitchedOff) { @@ -102,17 +102,17 @@ test.describe("Logs Quickmode testcases", () => { }, async ({ page, }) => { - await logsPage.fillIndexFieldSearchInput("kubernetes_pod_id"); - await logsPage.waitForTimeout(2000); - await logsPage.clickInterestingFieldButton("kubernetes_pod_id"); - await logsPage.clickSQLModeToggle(); - await logsPage.waitForTimeout(2000); - await logsPage.expectInterestingFieldInEditor("kubernetes_pod_id"); + await pageManager.logsPage.fillIndexFieldSearchInput("kubernetes_pod_id"); + await pageManager.logsPage.waitForTimeout(2000); + await pageManager.logsPage.clickInterestingFieldButton("kubernetes_pod_id"); + await pageManager.logsPage.clickSQLModeToggle(); + await pageManager.logsPage.waitForTimeout(2000); + await pageManager.logsPage.expectInterestingFieldInEditor("kubernetes_pod_id"); }); test("should display quick mode toggle button", { tag: ['@quickModeLogs', '@all', '@logs'] }, async ({ page }) => { - await logsPage.expectQuickModeToggleVisible(); + await pageManager.logsPage.expectQuickModeToggleVisible(); }); test("should click on interesting fields icon in histogram mode and run query", { @@ -120,25 +120,25 @@ test.describe("Logs Quickmode testcases", () => { }, async ({ page, }) => { - await logsPage.fillIndexFieldSearchInput("kubernetes_pod_id"); - await logsPage.waitForTimeout(2000); - await logsPage.clickInterestingFieldButton("kubernetes_pod_id"); - await logsPage.clickSearchBarRefreshButton(); - await logsPage.waitForTimeout(2000); - await logsPage.expectInterestingFieldInTable("kubernetes_pod_id"); + await pageManager.logsPage.fillIndexFieldSearchInput("kubernetes_pod_id"); + await pageManager.logsPage.waitForTimeout(2000); + await pageManager.logsPage.clickInterestingFieldButton("kubernetes_pod_id"); + await pageManager.logsPage.clickSearchBarRefreshButton(); + await pageManager.logsPage.waitForTimeout(2000); + await pageManager.logsPage.expectInterestingFieldInTable("kubernetes_pod_id"); }); test("should display error on entering random text in histogram mode when quick mode is on", { tag: ['@errorHandlingHistogramModeLogs', '@histogram', '@all', '@logs'] }, async ({ page }) => { - await logsPage.waitForTimeout(2000); - await logsPage.clickQueryEditor(); - await logsPage.typeInQueryEditor("oooo"); - await logsPage.waitForTimeout(1000); - await logsPage.waitForSearchBarRefreshButton(); - await logsPage.clickSearchBarRefreshButton(); - await logsPage.waitForTimeout(2000); - await logsPage.expectErrorMessageVisible(); + await pageManager.logsPage.waitForTimeout(2000); + await pageManager.logsPage.clickQueryEditor(); + await pageManager.logsPage.typeInQueryEditor("oooo"); + await pageManager.logsPage.waitForTimeout(1000); + await pageManager.logsPage.waitForSearchBarRefreshButton(); + await pageManager.logsPage.clickSearchBarRefreshButton(); + await pageManager.logsPage.waitForTimeout(2000); + await pageManager.logsPage.expectErrorMessageVisible(); }); test("should display selected interestesing field and order by - as default in editor", { @@ -146,30 +146,30 @@ test.describe("Logs Quickmode testcases", () => { }, async ({ page, }) => { - await logsPage.fillIndexFieldSearchInput("kubernetes_pod_id"); - await logsPage.waitForTimeout(2000); - await logsPage.clickInterestingFieldButton("kubernetes_pod_id"); - await logsPage.clickSQLModeToggle(); - await logsPage.waitForQueryEditorTextbox(); - await logsPage.expectQueryEditorVisible(); + await pageManager.logsPage.fillIndexFieldSearchInput("kubernetes_pod_id"); + await pageManager.logsPage.waitForTimeout(2000); + await pageManager.logsPage.clickInterestingFieldButton("kubernetes_pod_id"); + await pageManager.logsPage.clickSQLModeToggle(); + await pageManager.logsPage.waitForQueryEditorTextbox(); + await pageManager.logsPage.expectQueryEditorVisible(); }); test("should adding/removing interesting field removes it from editor and results too", { tag: ['@interestingFieldsCRUD', '@all', '@logs'] }, async ({ page }) => { - await logsPage.fillIndexFieldSearchInput("kubernetes_container_name"); - await logsPage.waitForTimeout(2000); - await logsPage.clickInterestingFieldButton("kubernetes_container_name"); - await logsPage.fillIndexFieldSearchInput("level"); - await logsPage.waitForTimeout(2000); - await logsPage.clickInterestingFieldButton("level"); - await logsPage.clickSQLModeToggle(); - await logsPage.clickSearchBarRefreshButton(); - await logsPage.expectLogTableColumnSourceVisible(); - await logsPage.clickInterestingFieldButton("level"); - await logsPage.expectQueryEditorNotContainsText("level"); - await logsPage.clickSearchBarRefreshButton(); - await logsPage.expectLogTableColumnSourceNotHaveText("source"); + await pageManager.logsPage.fillIndexFieldSearchInput("kubernetes_container_name"); + await pageManager.logsPage.waitForTimeout(2000); + await pageManager.logsPage.clickInterestingFieldButton("kubernetes_container_name"); + await pageManager.logsPage.fillIndexFieldSearchInput("level"); + await pageManager.logsPage.waitForTimeout(2000); + await pageManager.logsPage.clickInterestingFieldButton("level"); + await pageManager.logsPage.clickSQLModeToggle(); + await pageManager.logsPage.clickSearchBarRefreshButton(); + await pageManager.logsPage.expectLogTableColumnSourceVisible(); + await pageManager.logsPage.clickInterestingFieldButton("level"); + await pageManager.logsPage.expectQueryEditorNotContainsText("level"); + await pageManager.logsPage.clickSearchBarRefreshButton(); + await pageManager.logsPage.expectLogTableColumnSourceNotHaveText("source"); }); test("should display order by in sql mode by default even after page reload", { @@ -177,14 +177,14 @@ test.describe("Logs Quickmode testcases", () => { }, async ({ page, }) => { - await logsPage.fillIndexFieldSearchInput("kubernetes_pod_id"); - await logsPage.waitForTimeout(2000); - await logsPage.clickInterestingFieldButton("kubernetes_pod_id"); - await logsPage.clickSQLModeToggle(); - await logsPage.clickSearchBarRefreshButton(); - await logsPage.page.reload(); - await logsPage.waitForTimeout(2000); - await logsPage.expectQueryEditorContainsText('SELECT kubernetes_pod_id FROM "e2e_automate"'); + await pageManager.logsPage.fillIndexFieldSearchInput("kubernetes_pod_id"); + await pageManager.logsPage.waitForTimeout(2000); + await pageManager.logsPage.clickInterestingFieldButton("kubernetes_pod_id"); + await pageManager.logsPage.clickSQLModeToggle(); + await pageManager.logsPage.clickSearchBarRefreshButton(); + await pageManager.logsPage.page.reload(); + await pageManager.logsPage.waitForTimeout(2000); + await pageManager.logsPage.expectQueryEditorContainsText('SELECT kubernetes_pod_id FROM "e2e_automate"'); }); test("should display results without adding timestamp in quick mode", { @@ -192,13 +192,13 @@ test.describe("Logs Quickmode testcases", () => { }, async ({ page, }) => { - await logsPage.fillIndexFieldSearchInput("kubernetes_pod_id"); - await logsPage.waitForTimeout(2000); - await logsPage.clickInterestingFieldButton("kubernetes_pod_id"); - await logsPage.clickSQLModeToggle(); - await logsPage.waitForTimeout(2000); - await logsPage.clickSearchBarRefreshButton(); - await logsPage.waitForTimeout(2000); - await logsPage.expectExactTextVisible("source"); + await pageManager.logsPage.fillIndexFieldSearchInput("kubernetes_pod_id"); + await pageManager.logsPage.waitForTimeout(2000); + await pageManager.logsPage.clickInterestingFieldButton("kubernetes_pod_id"); + await pageManager.logsPage.clickSQLModeToggle(); + await pageManager.logsPage.waitForTimeout(2000); + await pageManager.logsPage.clickSearchBarRefreshButton(); + await pageManager.logsPage.waitForTimeout(2000); + await pageManager.logsPage.expectExactTextVisible("source"); }); }); diff --git a/tests/ui-testing/playwright-tests/Logs/pagination.spec.js b/tests/ui-testing/playwright-tests/Logs/pagination.spec.js index 1f0c40fdfc..96a85640be 100644 --- a/tests/ui-testing/playwright-tests/Logs/pagination.spec.js +++ b/tests/ui-testing/playwright-tests/Logs/pagination.spec.js @@ -1,8 +1,5 @@ import { test, expect } from "../baseFixtures.js"; -import { LoginPage } from '../../pages/generalPages/loginPage.js'; -import { LogsPage } from '../../pages/logsPages/logsPage.js'; -import { IngestionPage } from '../../pages/generalPages/ingestionPage.js'; -import { ManagementPage } from '../../pages/generalPages/managementPage.js'; +import PageManager from '../../pages/page-manager.js'; // Function to generate a random 9-character alphabetic name function generateRandomStreamName() { @@ -15,168 +12,165 @@ function generateRandomStreamName() { } test.describe("Pagination for logs", () => { - let loginPage, logsPage, ingestionPage, managementPage; + let pageManager; const orgId = "default"; const streamName = generateRandomStreamName(); test.beforeEach(async ({ page }) => { - loginPage = new LoginPage(page); - ingestionPage = new IngestionPage(page); - logsPage = new LogsPage(page); - managementPage = new ManagementPage(page); - await loginPage.gotoLoginPage(); - await loginPage.loginAsInternalUser(); - await loginPage.login(); // Login as root user - await ingestionPage.ingestionMultiOrgStream(orgId, streamName); + pageManager = new PageManager(page); + await pageManager.loginPage.gotoLoginPage(); + await pageManager.loginPage.loginAsInternalUser(); + await pageManager.loginPage.login(); // Login as root user + await pageManager.ingestionPage.ingestionMultiOrgStream(orgId, streamName); }); test("HTTP Pagination for running query to validate WHERE match_all('2022-12-27T14:11:27Z INFO zinc_enl')", async ({ page }) => { - await logsPage.navigateToLogs(); - await logsPage.selectIndexStream(streamName); + await pageManager.logsPage.navigateToLogs(); + await pageManager.logsPage.selectIndexStream(streamName); console.log(streamName); - await logsPage.typeQuery(`SELECT * FROM "${streamName}" WHERE match_all("2022-12-27T14:11:27Z INFO zinc_enl")`); + await pageManager.logsPage.typeQuery(`SELECT * FROM "${streamName}" WHERE match_all("2022-12-27T14:11:27Z INFO zinc_enl")`); await page.waitForTimeout(3000); // Wait for query preparation - await logsPage.selectRunQuery(); + await pageManager.logsPage.selectRunQuery(); await page.waitForTimeout(3000); // Wait for query results - await logsPage.clickResultsPerPage(); - await logsPage.selectResultsPerPageAndVerify('2', 'Showing 11 to 20 out of'); + await pageManager.logsPage.clickResultsPerPage(); + await pageManager.logsPage.selectResultsPerPageAndVerify('2', 'Showing 11 to 20 out of'); await page.waitForTimeout(1000); // Wait for pagination change - await logsPage.selectResultsPerPageAndVerify('3', 'Showing 21 to 30 out of'); + await pageManager.logsPage.selectResultsPerPageAndVerify('3', 'Showing 21 to 30 out of'); await page.waitForTimeout(1000); // Wait for pagination change - await logsPage.selectResultsPerPageAndVerify('4', 'Showing 31 to'); + await pageManager.logsPage.selectResultsPerPageAndVerify('4', 'Showing 31 to'); }); test("HTTP Pagination for running query to validate WHERE match_all('zin*')", async ({ page }) => { - await logsPage.navigateToLogs(); - await logsPage.selectIndexStream(streamName); + await pageManager.logsPage.navigateToLogs(); + await pageManager.logsPage.selectIndexStream(streamName); console.log(streamName); - await logsPage.typeQuery(`SELECT * FROM "${streamName}" WHERE match_all("zin*")`); + await pageManager.logsPage.typeQuery(`SELECT * FROM "${streamName}" WHERE match_all("zin*")`); await page.waitForTimeout(2000); - await logsPage.selectRunQuery(); + await pageManager.logsPage.selectRunQuery(); await page.waitForTimeout(2000); - await logsPage.clickResultsPerPage(); - await logsPage.selectResultsPerPageAndVerify('2', 'Showing 11 to 20 out of'); - await logsPage.selectResultsPerPageAndVerify('3', 'Showing 21 to 30 out of'); - await logsPage.selectResultsPerPageAndVerify('4', 'Showing 31 to 40 out of'); + await pageManager.logsPage.clickResultsPerPage(); + await pageManager.logsPage.selectResultsPerPageAndVerify('2', 'Showing 11 to 20 out of'); + await pageManager.logsPage.selectResultsPerPageAndVerify('3', 'Showing 21 to 30 out of'); + await pageManager.logsPage.selectResultsPerPageAndVerify('4', 'Showing 31 to 40 out of'); }); test("HTTP Pagination for running query to validate WHERE match_all('2022-12-27T1*')", async ({ page }) => { - await logsPage.navigateToLogs(); - await logsPage.selectIndexStream(streamName); + await pageManager.logsPage.navigateToLogs(); + await pageManager.logsPage.selectIndexStream(streamName); console.log(streamName); - await logsPage.typeQuery(`SELECT * FROM "${streamName}" WHERE match_all("2022-12-27T1*")`); + await pageManager.logsPage.typeQuery(`SELECT * FROM "${streamName}" WHERE match_all("2022-12-27T1*")`); await page.waitForTimeout(2000); - await logsPage.selectRunQuery(); + await pageManager.logsPage.selectRunQuery(); await page.waitForTimeout(2000); - await logsPage.clickResultsPerPage(); - await logsPage.selectResultsPerPageAndVerify('2', 'Showing 11 to 20 out of'); - await logsPage.selectResultsPerPageAndVerify('3', 'Showing 21 to 30 out of'); - await logsPage.selectResultsPerPageAndVerify('4', 'Showing 31 to 40 out of'); + await pageManager.logsPage.clickResultsPerPage(); + await pageManager.logsPage.selectResultsPerPageAndVerify('2', 'Showing 11 to 20 out of'); + await pageManager.logsPage.selectResultsPerPageAndVerify('3', 'Showing 21 to 30 out of'); + await pageManager.logsPage.selectResultsPerPageAndVerify('4', 'Showing 31 to 40 out of'); }); test("HTTP for running query to validate pagination is not visible WHERE match_all('2022-12-27T14:11:27Z INFO zinc_enl') limit`", async ({ page }) => { - await logsPage.navigateToLogs(); - await logsPage.selectIndexStream(streamName); + await pageManager.logsPage.navigateToLogs(); + await pageManager.logsPage.selectIndexStream(streamName); console.log(streamName); - await logsPage.typeQuery(`SELECT * FROM "${streamName}" WHERE match_all("2022-12-27T14:11:27Z INFO zinc_enl") limit 10`); + await pageManager.logsPage.typeQuery(`SELECT * FROM "${streamName}" WHERE match_all("2022-12-27T14:11:27Z INFO zinc_enl") limit 10`); await page.waitForTimeout(2000); - await logsPage.selectRunQuery(); + await pageManager.logsPage.selectRunQuery(); await page.waitForTimeout(2000); - await logsPage.pageNotVisible(); + await pageManager.logsPage.pageNotVisible(); }); test("Enable Streaming for running query to validate WHERE match_all('2022-12-27T14:11:27Z INFO zinc_enl')", async ({ page }) => { - await managementPage.goToManagement(); + await pageManager.managementPage.goToManagement(); await page.waitForTimeout(5000); - await managementPage.checkStreaming(); - await logsPage.navigateToLogs(); - await logsPage.selectIndexStream(streamName); + await pageManager.managementPage.checkStreaming(); + await pageManager.logsPage.navigateToLogs(); + await pageManager.logsPage.selectIndexStream(streamName); console.log(streamName); - await logsPage.typeQuery(`SELECT * FROM "${streamName}" WHERE match_all("2022-12-27T14:11:27Z INFO zinc_enl")`); + await pageManager.logsPage.typeQuery(`SELECT * FROM "${streamName}" WHERE match_all("2022-12-27T14:11:27Z INFO zinc_enl")`); await page.waitForTimeout(2000); - await logsPage.selectRunQuery(); + await pageManager.logsPage.selectRunQuery(); await page.waitForTimeout(2000); - await logsPage.clickResultsPerPage(); - await logsPage.selectResultsPerPageAndVerify('2', 'Showing 11 to 20 out of'); - await logsPage.selectResultsPerPageAndVerify('3', 'Showing 21 to 30 out of'); - await logsPage.selectResultsPerPageAndVerify('4', 'Showing 31 to'); + await pageManager.logsPage.clickResultsPerPage(); + await pageManager.logsPage.selectResultsPerPageAndVerify('2', 'Showing 11 to 20 out of'); + await pageManager.logsPage.selectResultsPerPageAndVerify('3', 'Showing 21 to 30 out of'); + await pageManager.logsPage.selectResultsPerPageAndVerify('4', 'Showing 31 to'); }); test("Enable Streaming for running query to validate WHERE match_all('zin*')", async ({ page }) => { - await managementPage.goToManagement(); + await pageManager.managementPage.goToManagement(); await page.waitForTimeout(5000); - await managementPage.checkStreaming(); - await logsPage.navigateToLogs(); - await logsPage.selectIndexStream(streamName); + await pageManager.managementPage.checkStreaming(); + await pageManager.logsPage.navigateToLogs(); + await pageManager.logsPage.selectIndexStream(streamName); console.log(streamName); - await logsPage.typeQuery(`SELECT * FROM "${streamName}" WHERE match_all("zin*")`); + await pageManager.logsPage.typeQuery(`SELECT * FROM "${streamName}" WHERE match_all("zin*")`); await page.waitForTimeout(2000); - await logsPage.selectRunQuery(); + await pageManager.logsPage.selectRunQuery(); await page.waitForTimeout(2000); - await logsPage.clickResultsPerPage(); - await logsPage.selectResultsPerPageAndVerify('2', 'Showing 11 to 20 out of'); - await logsPage.selectResultsPerPageAndVerify('3', 'Showing 21 to 30 out of'); - await logsPage.selectResultsPerPageAndVerify('4', 'Showing 31 to 40 out of'); + await pageManager.logsPage.clickResultsPerPage(); + await pageManager.logsPage.selectResultsPerPageAndVerify('2', 'Showing 11 to 20 out of'); + await pageManager.logsPage.selectResultsPerPageAndVerify('3', 'Showing 21 to 30 out of'); + await pageManager.logsPage.selectResultsPerPageAndVerify('4', 'Showing 31 to 40 out of'); }); test("Enable Streaming for running query to validate WHERE match_all('2022-12-27T1*')", async ({ page }) => { - await managementPage.goToManagement(); + await pageManager.managementPage.goToManagement(); await page.waitForTimeout(5000); - await managementPage.checkStreaming(); - await logsPage.navigateToLogs(); - await logsPage.selectIndexStream(streamName); + await pageManager.managementPage.checkStreaming(); + await pageManager.logsPage.navigateToLogs(); + await pageManager.logsPage.selectIndexStream(streamName); console.log(streamName); - await logsPage.typeQuery(`SELECT * FROM "${streamName}" WHERE match_all("2022-12-27T1*")`); + await pageManager.logsPage.typeQuery(`SELECT * FROM "${streamName}" WHERE match_all("2022-12-27T1*")`); await page.waitForTimeout(2000); - await logsPage.selectRunQuery(); + await pageManager.logsPage.selectRunQuery(); await page.waitForTimeout(2000); - await logsPage.clickResultsPerPage(); - await logsPage.selectResultsPerPageAndVerify('2', 'Showing 11 to 20 out of'); - await logsPage.selectResultsPerPageAndVerify('3', 'Showing 21 to 30 out of'); - await logsPage.selectResultsPerPageAndVerify('4', 'Showing 31 to 40 out of'); + await pageManager.logsPage.clickResultsPerPage(); + await pageManager.logsPage.selectResultsPerPageAndVerify('2', 'Showing 11 to 20 out of'); + await pageManager.logsPage.selectResultsPerPageAndVerify('3', 'Showing 21 to 30 out of'); + await pageManager.logsPage.selectResultsPerPageAndVerify('4', 'Showing 31 to 40 out of'); }); test("Enable Streaming for running query to validate WHERE match_all('2022-12-27T14:11:2*')", async ({ page }) => { - await managementPage.goToManagement(); + await pageManager.managementPage.goToManagement(); await page.waitForTimeout(5000); - await managementPage.checkStreaming(); - await logsPage.navigateToLogs(); - await logsPage.selectIndexStream(streamName); + await pageManager.managementPage.checkStreaming(); + await pageManager.logsPage.navigateToLogs(); + await pageManager.logsPage.selectIndexStream(streamName); console.log(streamName); - await logsPage.typeQuery(`SELECT * FROM "${streamName}" WHERE match_all("2022-12-27T14:11:2*")`); + await pageManager.logsPage.typeQuery(`SELECT * FROM "${streamName}" WHERE match_all("2022-12-27T14:11:2*")`); await page.waitForTimeout(2000); - await logsPage.selectRunQuery(); + await pageManager.logsPage.selectRunQuery(); await page.waitForTimeout(2000); - await logsPage.clickResultsPerPage(); - await logsPage.selectResultsPerPageAndVerify('2', 'Showing 11 to 20 out of'); - await logsPage.selectResultsPerPageAndVerify('3', 'Showing 21 to 30 out of'); - await logsPage.selectResultsPerPageAndVerify('4', 'Showing 31 to 40 out of'); + await pageManager.logsPage.clickResultsPerPage(); + await pageManager.logsPage.selectResultsPerPageAndVerify('2', 'Showing 11 to 20 out of'); + await pageManager.logsPage.selectResultsPerPageAndVerify('3', 'Showing 21 to 30 out of'); + await pageManager.logsPage.selectResultsPerPageAndVerify('4', 'Showing 31 to 40 out of'); }); test("Enable Streaming for running query to validate pagination is not visible WHERE match_all('2022-12-27T14:11:27Z INFO zinc_enl') limit`", async ({ page }) => { - await managementPage.goToManagement(); + await pageManager.managementPage.goToManagement(); await page.waitForTimeout(5000); - await managementPage.checkStreaming(); - await logsPage.navigateToLogs(); - await logsPage.selectIndexStream(streamName); + await pageManager.managementPage.checkStreaming(); + await pageManager.logsPage.navigateToLogs(); + await pageManager.logsPage.selectIndexStream(streamName); console.log(streamName); - await logsPage.typeQuery(`SELECT * FROM "${streamName}" WHERE match_all("2022-12-27T14:11:27Z INFO zinc_enl") limit 10`); + await pageManager.logsPage.typeQuery(`SELECT * FROM "${streamName}" WHERE match_all("2022-12-27T14:11:27Z INFO zinc_enl") limit 10`); await page.waitForTimeout(2000); - await logsPage.selectRunQuery(); + await pageManager.logsPage.selectRunQuery(); await page.waitForTimeout(2000); - await logsPage.pageNotVisible(); + await pageManager.logsPage.pageNotVisible(); }); }); diff --git a/tests/ui-testing/playwright-tests/Logs/unflattened.spec.js b/tests/ui-testing/playwright-tests/Logs/unflattened.spec.js index eca5623a37..2f643c0173 100644 --- a/tests/ui-testing/playwright-tests/Logs/unflattened.spec.js +++ b/tests/ui-testing/playwright-tests/Logs/unflattened.spec.js @@ -1,8 +1,7 @@ import { test, expect } from "../baseFixtures.js"; import logData from "../../cypress/fixtures/log.json"; import logsdata from "../../../test-data/logs_data.json"; -import UnflattenedPage from "../../pages/logsPages/unflattened.js"; -import { LogsPage } from '../../pages/logsPages/logsPage.js'; +import PageManager from '../../pages/page-manager.js'; test.describe.configure({ mode: "parallel" }); const streamName = `stream${Date.now()}`; @@ -72,7 +71,7 @@ async function ingestion(page) { } test.describe("Unflattened testcases", () => { - let logsPage; + let pageManager; // let logData; function removeUTFCharacters(text) { // console.log(text, "tex"); @@ -93,7 +92,7 @@ test.describe("Unflattened testcases", () => { test.beforeEach(async ({ page }) => { await login(page); - logsPage = new LogsPage(page); + pageManager = new PageManager(page); await page.waitForTimeout(1000); await ingestion(page); await page.waitForTimeout(2000); @@ -102,113 +101,109 @@ test.describe("Unflattened testcases", () => { `${logData.logsUrl}?org_identifier=${process.env["ORGNAME"]}` ); const allsearch = page.waitForResponse("**/api/default/_search**"); - await logsPage.selectStream("e2e_automate"); + await pageManager.logsPage.selectStream("e2e_automate"); await applyQueryButton(page); }); test("stream to toggle store original data toggle and display o2 id", async ({ page }) => { - const unflattenedPage = new UnflattenedPage(page); - // Navigate to Streams Menu - await unflattenedPage.streamsMenu.waitFor(); // Wait for the streams menu to be visible - await unflattenedPage.streamsMenu.click(); + await pageManager.unflattenedPage.streamsMenu.waitFor(); // Wait for the streams menu to be visible + await pageManager.unflattenedPage.streamsMenu.click(); // Search for Stream and access details - await unflattenedPage.searchStreamInput.waitFor(); // Wait for the search input to be ready - await unflattenedPage.searchStreamInput.click(); - await unflattenedPage.searchStreamInput.fill("e2e_automate"); + await pageManager.unflattenedPage.searchStreamInput.waitFor(); // Wait for the search input to be ready + await pageManager.unflattenedPage.searchStreamInput.click(); + await pageManager.unflattenedPage.searchStreamInput.fill("e2e_automate"); await page.waitForTimeout(1000); - await unflattenedPage.streamDetailButton.waitFor(); // Ensure the stream detail button is visible - await unflattenedPage.streamDetailButton.click(); + await pageManager.unflattenedPage.streamDetailButton.waitFor(); // Ensure the stream detail button is visible + await pageManager.unflattenedPage.streamDetailButton.click(); await page.waitForTimeout(1000); // Toggle 'Store Original Data' and update schema - await unflattenedPage.storeOriginalDataToggle.waitFor(); // Wait for the toggle to be visible - await unflattenedPage.storeOriginalDataToggle.click(); + await pageManager.unflattenedPage.storeOriginalDataToggle.waitFor(); // Wait for the toggle to be visible + await pageManager.unflattenedPage.storeOriginalDataToggle.click(); - await unflattenedPage.schemaUpdateButton.waitFor(); // Wait for the schema update button to be clickable - await unflattenedPage.schemaUpdateButton.click(); + await pageManager.unflattenedPage.schemaUpdateButton.waitFor(); // Wait for the schema update button to be clickable + await pageManager.unflattenedPage.schemaUpdateButton.click(); await page.waitForTimeout(1000); // Ensure the schema update is processed await ingestion(page); // Custom ingestion function await page.waitForTimeout(2000); // Allow time for ingestion // Close the dialog and explore the stream - await unflattenedPage.closeButton.waitFor(); // Wait for the close button to be visible - await unflattenedPage.closeButton.click(); + await pageManager.unflattenedPage.closeButton.waitFor(); // Wait for the close button to be visible + await pageManager.unflattenedPage.closeButton.click(); - await unflattenedPage.exploreButton.waitFor(); // Wait for the explore button to be clickable - await unflattenedPage.exploreButton.click(); + await pageManager.unflattenedPage.exploreButton.waitFor(); // Wait for the explore button to be clickable + await pageManager.unflattenedPage.exploreButton.click(); await page.waitForTimeout(1000); // Small delay to ensure page readiness // Select date and time - await unflattenedPage.dateTimeButton.waitFor(); // Wait for the date-time button - await unflattenedPage.dateTimeButton.click(); + await pageManager.unflattenedPage.dateTimeButton.waitFor(); // Wait for the date-time button + await pageManager.unflattenedPage.dateTimeButton.click(); - await unflattenedPage.relativeTab.waitFor(); // Wait for the relative tab to be visible - await unflattenedPage.relativeTab.click(); + await pageManager.unflattenedPage.relativeTab.waitFor(); // Wait for the relative tab to be visible + await pageManager.unflattenedPage.relativeTab.click(); await page.waitForTimeout(2000); // Wait for the relative tab to load // Expand log table row and verify details - await unflattenedPage.logTableRowExpandMenu.waitFor(); // Wait for the expand menu to appear - await unflattenedPage.logTableRowExpandMenu.click(); + await pageManager.unflattenedPage.logTableRowExpandMenu.waitFor(); // Wait for the expand menu to appear + await pageManager.unflattenedPage.logTableRowExpandMenu.click(); - await unflattenedPage.logSourceColumn.waitFor(); // Ensure the source column is ready - await unflattenedPage.logSourceColumn.click(); + await pageManager.unflattenedPage.logSourceColumn.waitFor(); // Ensure the source column is ready + await pageManager.unflattenedPage.logSourceColumn.click(); await page.waitForTimeout(1000); // Small delay to ensure UI updates - await unflattenedPage.o2IdText.waitFor(); // Wait for the o2 ID text to be visible - await unflattenedPage.o2IdText.click(); + await pageManager.unflattenedPage.o2IdText.waitFor(); // Wait for the o2 ID text to be visible + await pageManager.unflattenedPage.o2IdText.click(); - await unflattenedPage.unflattenedTab.waitFor(); // Wait for the unflattened tab to be visible - await unflattenedPage.unflattenedTab.click(); + await pageManager.unflattenedPage.unflattenedTab.waitFor(); // Wait for the unflattened tab to be visible + await pageManager.unflattenedPage.unflattenedTab.click(); await page.waitForTimeout(1000); // Small delay before closing // Close the dialog - await unflattenedPage.closeDialog.waitFor(); // Wait for the close button in the dialog - await unflattenedPage.closeDialog.click(); + await pageManager.unflattenedPage.closeDialog.waitFor(); // Wait for the close button in the dialog + await pageManager.unflattenedPage.closeDialog.click(); }); test("stream to display o2 id when quick mode is on and select * query is added", async ({ page }) => { - const unflattenedPage = new UnflattenedPage(page); // Instantiate the Page Object - // Navigate to Streams Menu - await unflattenedPage.streamsMenu.waitFor(); - await unflattenedPage.streamsMenu.click(); + await pageManager.unflattenedPage.streamsMenu.waitFor(); + await pageManager.unflattenedPage.streamsMenu.click(); // Search for Stream and access details - await unflattenedPage.searchStreamInput.waitFor(); - await unflattenedPage.searchStreamInput.click(); - await unflattenedPage.searchStreamInput.fill("e2e_automate"); + await pageManager.unflattenedPage.searchStreamInput.waitFor(); + await pageManager.unflattenedPage.searchStreamInput.click(); + await pageManager.unflattenedPage.searchStreamInput.fill("e2e_automate"); await page.waitForTimeout(1000); - await unflattenedPage.streamDetailButton.waitFor(); - await unflattenedPage.streamDetailButton.click(); + await pageManager.unflattenedPage.streamDetailButton.waitFor(); + await pageManager.unflattenedPage.streamDetailButton.click(); await page.waitForTimeout(1000); // Toggle 'Store Original Data' and update schema - await unflattenedPage.storeOriginalDataToggle.waitFor(); - await unflattenedPage.storeOriginalDataToggle.click(); + await pageManager.unflattenedPage.storeOriginalDataToggle.waitFor(); + await pageManager.unflattenedPage.storeOriginalDataToggle.click(); - await unflattenedPage.schemaUpdateButton.waitFor(); - await unflattenedPage.schemaUpdateButton.click(); + await pageManager.unflattenedPage.schemaUpdateButton.waitFor(); + await pageManager.unflattenedPage.schemaUpdateButton.click(); await page.waitForTimeout(1000); // Timeout to ensure process completes await ingestion(page); await page.waitForTimeout(2000); // Close the dialog and explore the stream - await unflattenedPage.closeButton.waitFor(); - await unflattenedPage.closeButton.click(); + await pageManager.unflattenedPage.closeButton.waitFor(); + await pageManager.unflattenedPage.closeButton.click(); - await unflattenedPage.exploreButton.waitFor(); - await unflattenedPage.exploreButton.click(); + await pageManager.unflattenedPage.exploreButton.waitFor(); + await pageManager.unflattenedPage.exploreButton.click(); await page.waitForTimeout(2000); // Toggle Quick Mode if it's off @@ -216,16 +211,16 @@ test.describe("Unflattened testcases", () => { await page.waitForTimeout(1000); // Select date and time - await unflattenedPage.dateTimeButton.waitFor(); - await unflattenedPage.dateTimeButton.click(); + await pageManager.unflattenedPage.dateTimeButton.waitFor(); + await pageManager.unflattenedPage.dateTimeButton.click(); - await unflattenedPage.relativeTab.waitFor(); - await unflattenedPage.relativeTab.click(); + await pageManager.unflattenedPage.relativeTab.waitFor(); + await pageManager.unflattenedPage.relativeTab.click(); await page.waitForTimeout(2000); // Search for 'kubernetes_pod_id' field - await unflattenedPage.indexFieldSearchInput.waitFor(); - await unflattenedPage.indexFieldSearchInput.fill("kubernetes_pod_id"); + await pageManager.unflattenedPage.indexFieldSearchInput.waitFor(); + await pageManager.unflattenedPage.indexFieldSearchInput.fill("kubernetes_pod_id"); await page.waitForTimeout(2000); await page @@ -238,84 +233,84 @@ test.describe("Unflattened testcases", () => { .click(); // Switch to SQL mode and validate query editor content - await unflattenedPage.sqlModeToggle.waitFor(); - await unflattenedPage.sqlModeToggle.click(); + await pageManager.unflattenedPage.sqlModeToggle.waitFor(); + await pageManager.unflattenedPage.sqlModeToggle.click(); await page.waitForTimeout(2000); await expect( - unflattenedPage.logsSearchBarQueryEditor + pageManager.unflattenedPage.logsSearchBarQueryEditor .getByText(/kubernetes_pod_id/) .first() ).toBeVisible(); // Update the query editor with 'SELECT * FROM "e2e_automate"' - await unflattenedPage.logsSearchBarQueryEditor.waitFor(); - await unflattenedPage.logsSearchBarQueryEditor.click(); + await pageManager.unflattenedPage.logsSearchBarQueryEditor.waitFor(); + await pageManager.unflattenedPage.logsSearchBarQueryEditor.click(); await page.keyboard.press("Control+A"); await page.keyboard.press("Delete"); await page.keyboard.type('SELECT * FROM "e2e_automate"'); await page.waitForTimeout(2000); // Interact with log table rows and verify details - await unflattenedPage.logTableRowExpandMenu.waitFor(); - await unflattenedPage.logTableRowExpandMenu.click(); + await pageManager.unflattenedPage.logTableRowExpandMenu.waitFor(); + await pageManager.unflattenedPage.logTableRowExpandMenu.click(); - await unflattenedPage.logSourceColumn.waitFor(); - await unflattenedPage.logSourceColumn.click(); + await pageManager.unflattenedPage.logSourceColumn.waitFor(); + await pageManager.unflattenedPage.logSourceColumn.click(); await page.waitForTimeout(1000); - await unflattenedPage.o2IdText.waitFor(); - await unflattenedPage.o2IdText.click(); + await pageManager.unflattenedPage.o2IdText.waitFor(); + await pageManager.unflattenedPage.o2IdText.click(); await page.waitForTimeout(1000); - await unflattenedPage.unflattenedTab.waitFor(); - await unflattenedPage.unflattenedTab.click(); + await pageManager.unflattenedPage.unflattenedTab.waitFor(); + await pageManager.unflattenedPage.unflattenedTab.click(); await page.waitForTimeout(1000); // Close the dialog - await unflattenedPage.closeDialog.waitFor(); - await unflattenedPage.closeDialog.click(); + await pageManager.unflattenedPage.closeDialog.waitFor(); + await pageManager.unflattenedPage.closeDialog.click(); // Repeat the process: Navigate back to Streams Menu, search, toggle, etc. - await unflattenedPage.streamsMenu.waitFor(); - await unflattenedPage.streamsMenu.click(); + await pageManager.unflattenedPage.streamsMenu.waitFor(); + await pageManager.unflattenedPage.streamsMenu.click(); - await unflattenedPage.searchStreamInput.waitFor(); - await unflattenedPage.searchStreamInput.click(); - await unflattenedPage.searchStreamInput.fill("e2e_automate"); + await pageManager.unflattenedPage.searchStreamInput.waitFor(); + await pageManager.unflattenedPage.searchStreamInput.click(); + await pageManager.unflattenedPage.searchStreamInput.fill("e2e_automate"); await page.waitForTimeout(1000); - await unflattenedPage.streamDetailButton.waitFor(); - await unflattenedPage.streamDetailButton.click(); + await pageManager.unflattenedPage.streamDetailButton.waitFor(); + await pageManager.unflattenedPage.streamDetailButton.click(); await page.waitForTimeout(1000); - await unflattenedPage.storeOriginalDataToggle.waitFor(); - await unflattenedPage.storeOriginalDataToggle.click(); + await pageManager.unflattenedPage.storeOriginalDataToggle.waitFor(); + await pageManager.unflattenedPage.storeOriginalDataToggle.click(); - await unflattenedPage.schemaUpdateButton.waitFor(); - await unflattenedPage.schemaUpdateButton.click(); + await pageManager.unflattenedPage.schemaUpdateButton.waitFor(); + await pageManager.unflattenedPage.schemaUpdateButton.click(); - await unflattenedPage.closeButton.waitFor(); - await unflattenedPage.closeButton.click(); + await pageManager.unflattenedPage.closeButton.waitFor(); + await pageManager.unflattenedPage.closeButton.click(); await page.waitForTimeout(1000); await ingestion(page); await page.waitForTimeout(2000); - await unflattenedPage.exploreButton.waitFor(); - await unflattenedPage.exploreButton.click(); + await pageManager.unflattenedPage.exploreButton.waitFor(); + await pageManager.unflattenedPage.exploreButton.click(); await page.waitForTimeout(3000); - await unflattenedPage.dateTimeButton.waitFor(); - await unflattenedPage.dateTimeButton.click(); + await pageManager.unflattenedPage.dateTimeButton.waitFor(); + await pageManager.unflattenedPage.dateTimeButton.click(); - await unflattenedPage.relativeTab.waitFor(); - await unflattenedPage.relativeTab.click(); + await pageManager.unflattenedPage.relativeTab.waitFor(); + await pageManager.unflattenedPage.relativeTab.click(); await page.waitForTimeout(2000); // Final log row interaction - await unflattenedPage.logTableRowExpandMenu.waitFor(); - await unflattenedPage.logTableRowExpandMenu.click(); + await pageManager.unflattenedPage.logTableRowExpandMenu.waitFor(); + await pageManager.unflattenedPage.logTableRowExpandMenu.click(); await page.waitForTimeout(2000); await page.getByText("arrow_drop_down_timestamp:").waitFor(); diff --git a/tests/ui-testing/playwright-tests/Reports/reportsUpdated.spec.js b/tests/ui-testing/playwright-tests/Reports/reportsUpdated.spec.js index 05c5251236..18560bc146 100644 --- a/tests/ui-testing/playwright-tests/Reports/reportsUpdated.spec.js +++ b/tests/ui-testing/playwright-tests/Reports/reportsUpdated.spec.js @@ -1,8 +1,5 @@ import { test, expect } from "../baseFixtures.js"; -import { LoginPage } from '../../pages/generalPages/loginPage.js'; -import { DashboardPage } from '../../pages/dashboardPages/dashboardPage.js'; -import { ReportsPage } from '../../pages/reportsPages/reportsPage.js'; -import { IngestionPage } from '../../pages/generalPages/ingestionPage.js'; +import PageManager from '../../pages/page-manager.js'; function reportName() { const characters = 'abcdefghijklmnopqrstuvwxyz'; @@ -14,337 +11,321 @@ function reportName() { return TEST_REPORT_NAME; } - - test.describe("Report test cases Updated", () => { - let loginPage, dashboardPage, reportsPage, ingestionPage; + let pageManager; test.beforeEach(async ({ page }) => { - loginPage = new LoginPage(page); - ingestionPage = new IngestionPage(page); - dashboardPage = new DashboardPage(page); - reportsPage = new ReportsPage(page); - await loginPage.gotoLoginPage(); - await loginPage.loginAsInternalUser(); - await loginPage.login(); - await ingestionPage.ingestion(); + pageManager = new PageManager(page); + await pageManager.loginPage.gotoLoginPage(); + await pageManager.loginPage.loginAsInternalUser(); + await pageManager.loginPage.login(); + await pageManager.ingestionPage.ingestion(); }); test("Create, use, and delete dashboard and report", async ({ page }) => { const TEST_REPORT_NAME = reportName(); - await dashboardPage.navigateToDashboards(); - await dashboardPage.createDashboard(); + await pageManager.dashboardPage.navigateToDashboards(); + await pageManager.dashboardPage.createDashboard(); await expect(page).toHaveURL(/.*\/dashboards/); await page.goto(process.env["ZO_BASE_URL"] + "/web/reports?org_identifier=default"); - await reportsPage.createReportAddReportButton(); - await reportsPage.createReportReportNameInput(TEST_REPORT_NAME); - await reportsPage.createReportFolderInput(); - await reportsPage.createReportDashboardInput(dashboardPage.dashboardName); - await reportsPage.createReportDashboardTabInput(); - await reportsPage.createReportContinueButtonStep1(); - await reportsPage.createReportContinueButtonStep2(); - await reportsPage.createReportFillDetail(); - await reportsPage.createReportSaveButton(); - await reportsPage.loggedOut(); + await pageManager.reportsPage.createReportAddReportButton(); + await pageManager.reportsPage.createReportReportNameInput(TEST_REPORT_NAME); + await pageManager.reportsPage.createReportFolderInput(); + await pageManager.reportsPage.createReportDashboardInput(pageManager.dashboardPage.dashboardName); + await pageManager.reportsPage.createReportDashboardTabInput(); + await pageManager.reportsPage.createReportContinueButtonStep1(); + await pageManager.reportsPage.createReportContinueButtonStep2(); + await pageManager.reportsPage.createReportFillDetail(); + await pageManager.reportsPage.createReportSaveButton(); + await pageManager.reportsPage.loggedOut(); await page.waitForTimeout(10000); - await loginPage.gotoLoginPageSC(); + await pageManager.loginPage.gotoLoginPageSC(); await page.waitForTimeout(10000); - await loginPage.loginAsInternalUserSC(); - await loginPage.loginSC(); - await reportsPage.navigateToReports(); - await reportsPage.pauseReport(TEST_REPORT_NAME); - await reportsPage.updateReport(TEST_REPORT_NAME); + await pageManager.loginPage.loginAsInternalUserSC(); + await pageManager.loginPage.loginSC(); + await pageManager.reportsPage.navigateToReports(); + await pageManager.reportsPage.pauseReport(TEST_REPORT_NAME); + await pageManager.reportsPage.updateReport(TEST_REPORT_NAME); await page.goto(process.env["ZO_BASE_URL_SC_UI"] + "/web/reports?org_identifier=default"); await expect(page).toHaveURL(/.*\/reports/); - await reportsPage.deleteReport(TEST_REPORT_NAME); - await dashboardPage.navigateToDashboards(); - await dashboardPage.deleteDashboard(); + await pageManager.reportsPage.deleteReport(TEST_REPORT_NAME); + await pageManager.dashboardPage.navigateToDashboards(); + await pageManager.dashboardPage.deleteDashboard(); await page.waitForTimeout(10000); - await dashboardPage.loggedOut(); + await pageManager.dashboardPage.loggedOut(); await page.waitForTimeout(10000); - await loginPage.gotoLoginPage(); + await pageManager.loginPage.gotoLoginPage(); await page.waitForTimeout(10000); - await loginPage.loginAsInternalUser(); - await loginPage.login(); - await reportsPage.navigateToReports(); - await reportsPage.notAvailableReport(TEST_REPORT_NAME); + await pageManager.loginPage.loginAsInternalUser(); + await pageManager.loginPage.login(); + await pageManager.reportsPage.navigateToReports(); + await pageManager.reportsPage.notAvailableReport(TEST_REPORT_NAME); await page.goto(process.env["ZO_BASE_URL"] + "/web/dashboards?org_identifier=default"); - await dashboardPage.navigateToDashboards(); - await dashboardPage.notAvailableDashboard(); - + await pageManager.dashboardPage.navigateToDashboards(); + await pageManager.dashboardPage.notAvailableDashboard(); }); test("Create, use, and delete dashboard and once Schedule Now type report", async ({ page }) => { const TEST_REPORT_NAME = reportName(); - await dashboardPage.navigateToDashboards(); - await dashboardPage.createDashboard(); + await pageManager.dashboardPage.navigateToDashboards(); + await pageManager.dashboardPage.createDashboard(); await expect(page).toHaveURL(/.*\/dashboards/); await page.goto(process.env["ZO_BASE_URL"] + "/web/reports?org_identifier=default"); - await reportsPage.createReportAddReportButton(); - await reportsPage.createReportReportNameInput(TEST_REPORT_NAME); - await reportsPage.createReportFolderInput(); - await reportsPage.createReportDashboardInput(dashboardPage.dashboardName); - await reportsPage.createReportDashboardTabInput(); - await reportsPage.createReportContinueButtonStep1(); - await reportsPage.createReportOnce(); - await reportsPage.createReportContinueButtonStep2(); - await reportsPage.createReportFillDetail(); - await reportsPage.createReportSaveButton(); - await reportsPage.loggedOut(); + await pageManager.reportsPage.createReportAddReportButton(); + await pageManager.reportsPage.createReportReportNameInput(TEST_REPORT_NAME); + await pageManager.reportsPage.createReportFolderInput(); + await pageManager.reportsPage.createReportDashboardInput(pageManager.dashboardPage.dashboardName); + await pageManager.reportsPage.createReportDashboardTabInput(); + await pageManager.reportsPage.createReportContinueButtonStep1(); + await pageManager.reportsPage.createReportOnce(); + await pageManager.reportsPage.createReportContinueButtonStep2(); + await pageManager.reportsPage.createReportFillDetail(); + await pageManager.reportsPage.createReportSaveButton(); + await pageManager.reportsPage.loggedOut(); await page.waitForTimeout(10000); - await loginPage.gotoLoginPageSC(); + await pageManager.loginPage.gotoLoginPageSC(); await page.waitForTimeout(10000); - await loginPage.loginAsInternalUserSC(); - await loginPage.loginSC(); - await reportsPage.navigateToReports(); - await reportsPage.pauseReport(TEST_REPORT_NAME); - await reportsPage.updateReport(TEST_REPORT_NAME); + await pageManager.loginPage.loginAsInternalUserSC(); + await pageManager.loginPage.loginSC(); + await pageManager.reportsPage.navigateToReports(); + await pageManager.reportsPage.pauseReport(TEST_REPORT_NAME); + await pageManager.reportsPage.updateReport(TEST_REPORT_NAME); await page.goto(process.env["ZO_BASE_URL_SC_UI"] + "/web/reports?org_identifier=default"); await expect(page).toHaveURL(/.*\/reports/); - await reportsPage.deleteReport(TEST_REPORT_NAME); - await dashboardPage.navigateToDashboards(); - await dashboardPage.deleteDashboard(); + await pageManager.reportsPage.deleteReport(TEST_REPORT_NAME); + await pageManager.dashboardPage.navigateToDashboards(); + await pageManager.dashboardPage.deleteDashboard(); await page.waitForTimeout(10000); - await dashboardPage.loggedOut(); + await pageManager.dashboardPage.loggedOut(); await page.waitForTimeout(10000); - await loginPage.gotoLoginPage(); + await pageManager.loginPage.gotoLoginPage(); await page.waitForTimeout(10000); - await loginPage.loginAsInternalUser(); - await loginPage.login(); - await reportsPage.navigateToReports(); - await reportsPage.notAvailableReport(TEST_REPORT_NAME); + await pageManager.loginPage.loginAsInternalUser(); + await pageManager.loginPage.login(); + await pageManager.reportsPage.navigateToReports(); + await pageManager.reportsPage.notAvailableReport(TEST_REPORT_NAME); await page.goto(process.env["ZO_BASE_URL"] + "/web/dashboards?org_identifier=default"); - await dashboardPage.navigateToDashboards(); - await dashboardPage.notAvailableDashboard(); - + await pageManager.dashboardPage.navigateToDashboards(); + await pageManager.dashboardPage.notAvailableDashboard(); }); - test("Create, use, and delete dashboard and hours Schedule Now type report", async ({ page }) => { const TEST_REPORT_NAME = reportName(); - await dashboardPage.navigateToDashboards(); - await dashboardPage.createDashboard(); + await pageManager.dashboardPage.navigateToDashboards(); + await pageManager.dashboardPage.createDashboard(); await expect(page).toHaveURL(/.*\/dashboards/); await page.goto(process.env["ZO_BASE_URL"] + "/web/reports?org_identifier=default"); - await reportsPage.createReportAddReportButton(); - await reportsPage.createReportReportNameInput(TEST_REPORT_NAME); - await reportsPage.createReportFolderInput(); - await reportsPage.createReportDashboardInput(dashboardPage.dashboardName); - await reportsPage.createReportDashboardTabInput(); - await reportsPage.createReportContinueButtonStep1(); - await reportsPage.createReportHours(); - await reportsPage.createReportContinueButtonStep2(); - await reportsPage.createReportFillDetail(); - await reportsPage.createReportSaveButton(); - await reportsPage.loggedOut(); + await pageManager.reportsPage.createReportAddReportButton(); + await pageManager.reportsPage.createReportReportNameInput(TEST_REPORT_NAME); + await pageManager.reportsPage.createReportFolderInput(); + await pageManager.reportsPage.createReportDashboardInput(pageManager.dashboardPage.dashboardName); + await pageManager.reportsPage.createReportDashboardTabInput(); + await pageManager.reportsPage.createReportContinueButtonStep1(); + await pageManager.reportsPage.createReportHours(); + await pageManager.reportsPage.createReportContinueButtonStep2(); + await pageManager.reportsPage.createReportFillDetail(); + await pageManager.reportsPage.createReportSaveButton(); + await pageManager.reportsPage.loggedOut(); await page.waitForTimeout(10000); - await loginPage.gotoLoginPageSC(); + await pageManager.loginPage.gotoLoginPageSC(); await page.waitForTimeout(10000); - await loginPage.loginAsInternalUserSC(); - await loginPage.loginSC(); - await reportsPage.navigateToReports(); - await reportsPage.pauseReport(TEST_REPORT_NAME); - await reportsPage.updateReport(TEST_REPORT_NAME); + await pageManager.loginPage.loginAsInternalUserSC(); + await pageManager.loginPage.loginSC(); + await pageManager.reportsPage.navigateToReports(); + await pageManager.reportsPage.pauseReport(TEST_REPORT_NAME); + await pageManager.reportsPage.updateReport(TEST_REPORT_NAME); await page.goto(process.env["ZO_BASE_URL_SC_UI"] + "/web/reports?org_identifier=default"); await expect(page).toHaveURL(/.*\/reports/); - await reportsPage.deleteReport(TEST_REPORT_NAME); - await dashboardPage.navigateToDashboards(); - await dashboardPage.deleteDashboard(); + await pageManager.reportsPage.deleteReport(TEST_REPORT_NAME); + await pageManager.dashboardPage.navigateToDashboards(); + await pageManager.dashboardPage.deleteDashboard(); await page.waitForTimeout(10000); - await dashboardPage.loggedOut(); + await pageManager.dashboardPage.loggedOut(); await page.waitForTimeout(10000); - await loginPage.gotoLoginPage(); + await pageManager.loginPage.gotoLoginPage(); await page.waitForTimeout(10000); - await loginPage.loginAsInternalUser(); - await loginPage.login(); - await reportsPage.navigateToReports(); - await reportsPage.notAvailableReport(TEST_REPORT_NAME); + await pageManager.loginPage.loginAsInternalUser(); + await pageManager.loginPage.login(); + await pageManager.reportsPage.navigateToReports(); + await pageManager.reportsPage.notAvailableReport(TEST_REPORT_NAME); await page.goto(process.env["ZO_BASE_URL"] + "/web/dashboards?org_identifier=default"); - await dashboardPage.navigateToDashboards(); - await dashboardPage.notAvailableDashboard(); - + await pageManager.dashboardPage.navigateToDashboards(); + await pageManager.dashboardPage.notAvailableDashboard(); }); test("Create, use, and delete dashboard and days Schedule Now type report", async ({ page }) => { const TEST_REPORT_NAME = reportName(); - await dashboardPage.navigateToDashboards(); - await dashboardPage.createDashboard(); + await pageManager.dashboardPage.navigateToDashboards(); + await pageManager.dashboardPage.createDashboard(); await expect(page).toHaveURL(/.*\/dashboards/); await page.goto(process.env["ZO_BASE_URL"] + "/web/reports?org_identifier=default"); - await reportsPage.createReportAddReportButton(); - await reportsPage.createReportReportNameInput(TEST_REPORT_NAME); - await reportsPage.createReportFolderInput(); - await reportsPage.createReportDashboardInput(dashboardPage.dashboardName); - await reportsPage.createReportDashboardTabInput(); - await reportsPage.createReportContinueButtonStep1(); - await reportsPage.createReportDays(); - await reportsPage.createReportContinueButtonStep2(); - await reportsPage.createReportFillDetail(); - await reportsPage.createReportSaveButton(); - await reportsPage.loggedOut(); + await pageManager.reportsPage.createReportAddReportButton(); + await pageManager.reportsPage.createReportReportNameInput(TEST_REPORT_NAME); + await pageManager.reportsPage.createReportFolderInput(); + await pageManager.reportsPage.createReportDashboardInput(pageManager.dashboardPage.dashboardName); + await pageManager.reportsPage.createReportDashboardTabInput(); + await pageManager.reportsPage.createReportContinueButtonStep1(); + await pageManager.reportsPage.createReportDays(); + await pageManager.reportsPage.createReportContinueButtonStep2(); + await pageManager.reportsPage.createReportFillDetail(); + await pageManager.reportsPage.createReportSaveButton(); + await pageManager.reportsPage.loggedOut(); await page.waitForTimeout(10000); - await loginPage.gotoLoginPageSC(); + await pageManager.loginPage.gotoLoginPageSC(); await page.waitForTimeout(10000); - await loginPage.loginAsInternalUserSC(); - await loginPage.loginSC(); - await reportsPage.navigateToReports(); - await reportsPage.pauseReport(TEST_REPORT_NAME); - await reportsPage.updateReport(TEST_REPORT_NAME); + await pageManager.loginPage.loginAsInternalUserSC(); + await pageManager.loginPage.loginSC(); + await pageManager.reportsPage.navigateToReports(); + await pageManager.reportsPage.pauseReport(TEST_REPORT_NAME); + await pageManager.reportsPage.updateReport(TEST_REPORT_NAME); await page.goto(process.env["ZO_BASE_URL_SC_UI"] + "/web/reports?org_identifier=default"); await expect(page).toHaveURL(/.*\/reports/); - await reportsPage.deleteReport(TEST_REPORT_NAME); - await dashboardPage.navigateToDashboards(); - await dashboardPage.deleteDashboard(); + await pageManager.reportsPage.deleteReport(TEST_REPORT_NAME); + await pageManager.dashboardPage.navigateToDashboards(); + await pageManager.dashboardPage.deleteDashboard(); await page.waitForTimeout(10000); - await dashboardPage.loggedOut(); + await pageManager.dashboardPage.loggedOut(); await page.waitForTimeout(10000); - await loginPage.gotoLoginPage(); + await pageManager.loginPage.gotoLoginPage(); await page.waitForTimeout(10000); - await loginPage.loginAsInternalUser(); - await loginPage.login(); - await reportsPage.navigateToReports(); - await reportsPage.notAvailableReport(TEST_REPORT_NAME); + await pageManager.loginPage.loginAsInternalUser(); + await pageManager.loginPage.login(); + await pageManager.reportsPage.navigateToReports(); + await pageManager.reportsPage.notAvailableReport(TEST_REPORT_NAME); await page.goto(process.env["ZO_BASE_URL"] + "/web/dashboards?org_identifier=default"); - await dashboardPage.navigateToDashboards(); - await dashboardPage.notAvailableDashboard(); - + await pageManager.dashboardPage.navigateToDashboards(); + await pageManager.dashboardPage.notAvailableDashboard(); }); test("Create, use, and delete dashboard and weeks Schedule Now type report", async ({ page }) => { const TEST_REPORT_NAME = reportName(); - await dashboardPage.navigateToDashboards(); - await dashboardPage.createDashboard(); + await pageManager.dashboardPage.navigateToDashboards(); + await pageManager.dashboardPage.createDashboard(); await expect(page).toHaveURL(/.*\/dashboards/); await page.goto(process.env["ZO_BASE_URL"] + "/web/reports?org_identifier=default"); - await reportsPage.createReportAddReportButton(); - await reportsPage.createReportReportNameInput(TEST_REPORT_NAME); - await reportsPage.createReportFolderInput(); - await reportsPage.createReportDashboardInput(dashboardPage.dashboardName); - await reportsPage.createReportDashboardTabInput(); - await reportsPage.createReportContinueButtonStep1(); - await reportsPage.createReportWeeks(); - await reportsPage.createReportContinueButtonStep2(); - await reportsPage.createReportFillDetail(); - await reportsPage.createReportSaveButton(); - await reportsPage.loggedOut(); + await pageManager.reportsPage.createReportAddReportButton(); + await pageManager.reportsPage.createReportReportNameInput(TEST_REPORT_NAME); + await pageManager.reportsPage.createReportFolderInput(); + await pageManager.reportsPage.createReportDashboardInput(pageManager.dashboardPage.dashboardName); + await pageManager.reportsPage.createReportDashboardTabInput(); + await pageManager.reportsPage.createReportContinueButtonStep1(); + await pageManager.reportsPage.createReportWeeks(); + await pageManager.reportsPage.createReportContinueButtonStep2(); + await pageManager.reportsPage.createReportFillDetail(); + await pageManager.reportsPage.createReportSaveButton(); + await pageManager.reportsPage.loggedOut(); await page.waitForTimeout(10000); - await loginPage.gotoLoginPageSC(); + await pageManager.loginPage.gotoLoginPageSC(); await page.waitForTimeout(10000); - await loginPage.loginAsInternalUserSC(); - await loginPage.loginSC(); - await reportsPage.navigateToReports(); - await reportsPage.pauseReport(TEST_REPORT_NAME); - await reportsPage.updateReport(TEST_REPORT_NAME); + await pageManager.loginPage.loginAsInternalUserSC(); + await pageManager.loginPage.loginSC(); + await pageManager.reportsPage.navigateToReports(); + await pageManager.reportsPage.pauseReport(TEST_REPORT_NAME); + await pageManager.reportsPage.updateReport(TEST_REPORT_NAME); await page.goto(process.env["ZO_BASE_URL_SC_UI"] + "/web/reports?org_identifier=default"); await expect(page).toHaveURL(/.*\/reports/); - await reportsPage.deleteReport(TEST_REPORT_NAME); - await dashboardPage.navigateToDashboards(); - await dashboardPage.deleteDashboard(); + await pageManager.reportsPage.deleteReport(TEST_REPORT_NAME); + await pageManager.dashboardPage.navigateToDashboards(); + await pageManager.dashboardPage.deleteDashboard(); await page.waitForTimeout(10000); - await dashboardPage.loggedOut(); + await pageManager.dashboardPage.loggedOut(); await page.waitForTimeout(10000); - await loginPage.gotoLoginPage(); + await pageManager.loginPage.gotoLoginPage(); await page.waitForTimeout(10000); - await loginPage.loginAsInternalUser(); - await loginPage.login(); - await reportsPage.navigateToReports(); - await reportsPage.notAvailableReport(TEST_REPORT_NAME); + await pageManager.loginPage.loginAsInternalUser(); + await pageManager.loginPage.login(); + await pageManager.reportsPage.navigateToReports(); + await pageManager.reportsPage.notAvailableReport(TEST_REPORT_NAME); await page.goto(process.env["ZO_BASE_URL"] + "/web/dashboards?org_identifier=default"); - await dashboardPage.navigateToDashboards(); - await dashboardPage.notAvailableDashboard(); - + await pageManager.dashboardPage.navigateToDashboards(); + await pageManager.dashboardPage.notAvailableDashboard(); }); test("Create, use, and delete dashboard and months Schedule Now type report", async ({ page }) => { const TEST_REPORT_NAME = reportName(); - await dashboardPage.navigateToDashboards(); - await dashboardPage.createDashboard(); + await pageManager.dashboardPage.navigateToDashboards(); + await pageManager.dashboardPage.createDashboard(); await expect(page).toHaveURL(/.*\/dashboards/); await page.goto(process.env["ZO_BASE_URL"] + "/web/reports?org_identifier=default"); - await reportsPage.createReportAddReportButton(); - await reportsPage.createReportReportNameInput(TEST_REPORT_NAME); - await reportsPage.createReportFolderInput(); - await reportsPage.createReportDashboardInput(dashboardPage.dashboardName); - await reportsPage.createReportDashboardTabInput(); - await reportsPage.createReportContinueButtonStep1(); - await reportsPage.createReportMonths(); - await reportsPage.createReportContinueButtonStep2(); - await reportsPage.createReportFillDetail(); - await reportsPage.createReportSaveButton(); - await reportsPage.loggedOut(); + await pageManager.reportsPage.createReportAddReportButton(); + await pageManager.reportsPage.createReportReportNameInput(TEST_REPORT_NAME); + await pageManager.reportsPage.createReportFolderInput(); + await pageManager.reportsPage.createReportDashboardInput(pageManager.dashboardPage.dashboardName); + await pageManager.reportsPage.createReportDashboardTabInput(); + await pageManager.reportsPage.createReportContinueButtonStep1(); + await pageManager.reportsPage.createReportMonths(); + await pageManager.reportsPage.createReportContinueButtonStep2(); + await pageManager.reportsPage.createReportFillDetail(); + await pageManager.reportsPage.createReportSaveButton(); + await pageManager.reportsPage.loggedOut(); await page.waitForTimeout(10000); - await loginPage.gotoLoginPageSC(); + await pageManager.loginPage.gotoLoginPageSC(); await page.waitForTimeout(10000); - await loginPage.loginAsInternalUserSC(); - await loginPage.loginSC(); - await reportsPage.navigateToReports(); - await reportsPage.pauseReport(TEST_REPORT_NAME); - await reportsPage.updateReport(TEST_REPORT_NAME); + await pageManager.loginPage.loginAsInternalUserSC(); + await pageManager.loginPage.loginSC(); + await pageManager.reportsPage.navigateToReports(); + await pageManager.reportsPage.pauseReport(TEST_REPORT_NAME); + await pageManager.reportsPage.updateReport(TEST_REPORT_NAME); await page.goto(process.env["ZO_BASE_URL_SC_UI"] + "/web/reports?org_identifier=default"); await expect(page).toHaveURL(/.*\/reports/); - await reportsPage.deleteReport(TEST_REPORT_NAME); - await dashboardPage.navigateToDashboards(); - await dashboardPage.deleteDashboard(); + await pageManager.reportsPage.deleteReport(TEST_REPORT_NAME); + await pageManager.dashboardPage.navigateToDashboards(); + await pageManager.dashboardPage.deleteDashboard(); await page.waitForTimeout(10000); - await dashboardPage.loggedOut(); + await pageManager.dashboardPage.loggedOut(); await page.waitForTimeout(10000); - await loginPage.gotoLoginPage(); + await pageManager.loginPage.gotoLoginPage(); await page.waitForTimeout(10000); - await loginPage.loginAsInternalUser(); - await loginPage.login(); - await reportsPage.navigateToReports(); - await reportsPage.notAvailableReport(TEST_REPORT_NAME); + await pageManager.loginPage.loginAsInternalUser(); + await pageManager.loginPage.login(); + await pageManager.reportsPage.navigateToReports(); + await pageManager.reportsPage.notAvailableReport(TEST_REPORT_NAME); await page.goto(process.env["ZO_BASE_URL"] + "/web/dashboards?org_identifier=default"); - await dashboardPage.navigateToDashboards(); - await dashboardPage.notAvailableDashboard(); - + await pageManager.dashboardPage.navigateToDashboards(); + await pageManager.dashboardPage.notAvailableDashboard(); }); test("Create, use, and delete dashboard and custom Schedule Now type report", async ({ page }) => { const TEST_REPORT_NAME = reportName(); - await dashboardPage.navigateToDashboards(); - await dashboardPage.createDashboard(); + await pageManager.dashboardPage.navigateToDashboards(); + await pageManager.dashboardPage.createDashboard(); await expect(page).toHaveURL(/.*\/dashboards/); await page.goto(process.env["ZO_BASE_URL"] + "/web/reports?org_identifier=default"); - await reportsPage.createReportAddReportButton(); - await reportsPage.createReportReportNameInput(TEST_REPORT_NAME); - await reportsPage.createReportFolderInput(); - await reportsPage.createReportDashboardInput(dashboardPage.dashboardName); - await reportsPage.createReportDashboardTabInput(); - await reportsPage.createReportContinueButtonStep1(); - await reportsPage.createReportCustom(); - await reportsPage.createReportContinueButtonStep2(); - await reportsPage.createReportFillDetail(); - await reportsPage.createReportSaveButton(); - await reportsPage.loggedOut(); + await pageManager.reportsPage.createReportAddReportButton(); + await pageManager.reportsPage.createReportReportNameInput(TEST_REPORT_NAME); + await pageManager.reportsPage.createReportFolderInput(); + await pageManager.reportsPage.createReportDashboardInput(pageManager.dashboardPage.dashboardName); + await pageManager.reportsPage.createReportDashboardTabInput(); + await pageManager.reportsPage.createReportContinueButtonStep1(); + await pageManager.reportsPage.createReportCustom(); + await pageManager.reportsPage.createReportContinueButtonStep2(); + await pageManager.reportsPage.createReportFillDetail(); + await pageManager.reportsPage.createReportSaveButton(); + await pageManager.reportsPage.loggedOut(); await page.waitForTimeout(10000); - await loginPage.gotoLoginPageSC(); + await pageManager.loginPage.gotoLoginPageSC(); await page.waitForTimeout(10000); - await loginPage.loginAsInternalUserSC(); - await loginPage.loginSC(); - await reportsPage.navigateToReports(); - await reportsPage.pauseReport(TEST_REPORT_NAME); - await reportsPage.updateReport(TEST_REPORT_NAME); + await pageManager.loginPage.loginAsInternalUserSC(); + await pageManager.loginPage.loginSC(); + await pageManager.reportsPage.navigateToReports(); + await pageManager.reportsPage.pauseReport(TEST_REPORT_NAME); + await pageManager.reportsPage.updateReport(TEST_REPORT_NAME); await page.goto(process.env["ZO_BASE_URL_SC_UI"] + "/web/reports?org_identifier=default"); await expect(page).toHaveURL(/.*\/reports/); - await reportsPage.deleteReport(TEST_REPORT_NAME); - await dashboardPage.navigateToDashboards(); - await dashboardPage.deleteDashboard(); + await pageManager.reportsPage.deleteReport(TEST_REPORT_NAME); + await pageManager.dashboardPage.navigateToDashboards(); + await pageManager.dashboardPage.deleteDashboard(); await page.waitForTimeout(10000); - await dashboardPage.loggedOut(); + await pageManager.dashboardPage.loggedOut(); await page.waitForTimeout(10000); - await loginPage.gotoLoginPage(); + await pageManager.loginPage.gotoLoginPage(); await page.waitForTimeout(10000); - await loginPage.loginAsInternalUser(); - await loginPage.login(); - await reportsPage.navigateToReports(); - await reportsPage.notAvailableReport(TEST_REPORT_NAME); + await pageManager.loginPage.loginAsInternalUser(); + await pageManager.loginPage.login(); + await pageManager.reportsPage.navigateToReports(); + await pageManager.reportsPage.notAvailableReport(TEST_REPORT_NAME); await page.goto(process.env["ZO_BASE_URL"] + "/web/dashboards?org_identifier=default"); - await dashboardPage.navigateToDashboards(); - await dashboardPage.notAvailableDashboard(); - + await pageManager.dashboardPage.navigateToDashboards(); + await pageManager.dashboardPage.notAvailableDashboard(); }); - - - }); \ No newline at end of file diff --git a/tests/ui-testing/playwright-tests/Reports/reportsUpdated2.spec.js b/tests/ui-testing/playwright-tests/Reports/reportsUpdated2.spec.js index d29b97993f..63b8fbaef6 100644 --- a/tests/ui-testing/playwright-tests/Reports/reportsUpdated2.spec.js +++ b/tests/ui-testing/playwright-tests/Reports/reportsUpdated2.spec.js @@ -1,8 +1,5 @@ import { test, expect } from "../baseFixtures.js"; -import { LoginPage } from '../../pages/generalPages/loginPage.js'; -import { DashboardPage } from '../../pages/dashboardPages/dashboardPage.js'; -import { ReportsPage } from '../../pages/reportsPages/reportsPage.js'; -import { IngestionPage } from '../../pages/generalPages/ingestionPage.js'; +import PageManager from '../../pages/page-manager.js'; function reportName() { const characters = 'abcdefghijklmnopqrstuvwxyz'; @@ -17,304 +14,301 @@ function reportName() { test.describe("Report test cases Updated", () => { - let loginPage, dashboardPage, reportsPage, ingestionPage; + let pageManager; test.beforeEach(async ({ page }) => { - loginPage = new LoginPage(page); - ingestionPage = new IngestionPage(page); - dashboardPage = new DashboardPage(page); - reportsPage = new ReportsPage(page); - await loginPage.gotoLoginPage(); - await loginPage.loginAsInternalUser(); - await loginPage.login(); - await ingestionPage.ingestion(); + pageManager = new PageManager(page); + await pageManager.loginPage.gotoLoginPage(); + await pageManager.loginPage.loginAsInternalUser(); + await pageManager.loginPage.login(); + await pageManager.ingestionPage.ingestion(); }); test("Create, use, and delete dashboard and custom Schedule Later type report ", async ({ page }) => { const TEST_REPORT_NAME = reportName(); - await dashboardPage.navigateToDashboards(); - await dashboardPage.createDashboard(); + await pageManager.dashboardPage.navigateToDashboards(); + await pageManager.dashboardPage.createDashboard(); await expect(page).toHaveURL(/.*\/dashboards/); await page.goto(process.env["ZO_BASE_URL"] + "/web/reports?org_identifier=default"); - await reportsPage.createReportAddReportButton(); - await reportsPage.createReportReportNameInput(TEST_REPORT_NAME); - await reportsPage.createReportFolderInput(); - await reportsPage.createReportDashboardInput(dashboardPage.dashboardName); - await reportsPage.createReportDashboardTabInput(); - await reportsPage.createReportContinueButtonStep1(); - await reportsPage.createReportCustom(); - await reportsPage.createReportScheduleLater(); - await reportsPage.createReportDateTime(); - await reportsPage.createReportZone(); - await reportsPage.createReportContinueButtonStep2(); - await reportsPage.createReportFillDetail(); - await reportsPage.createReportSaveButton(); - await reportsPage.loggedOut(); + await pageManager.reportsPage.createReportAddReportButton(); + await pageManager.reportsPage.createReportReportNameInput(TEST_REPORT_NAME); + await pageManager.reportsPage.createReportFolderInput(); + await pageManager.reportsPage.createReportDashboardInput(pageManager.dashboardPage.dashboardName); + await pageManager.reportsPage.createReportDashboardTabInput(); + await pageManager.reportsPage.createReportContinueButtonStep1(); + await pageManager.reportsPage.createReportCustom(); + await pageManager.reportsPage.createReportScheduleLater(); + await pageManager.reportsPage.createReportDateTime(); + await pageManager.reportsPage.createReportZone(); + await pageManager.reportsPage.createReportContinueButtonStep2(); + await pageManager.reportsPage.createReportFillDetail(); + await pageManager.reportsPage.createReportSaveButton(); + await pageManager.reportsPage.loggedOut(); await page.waitForTimeout(10000); - await loginPage.gotoLoginPageSC(); + await pageManager.loginPage.gotoLoginPageSC(); await page.waitForTimeout(10000); - await loginPage.loginAsInternalUserSC(); - await loginPage.loginSC(); - await reportsPage.navigateToReports(); - await reportsPage.pauseReport(TEST_REPORT_NAME); - await reportsPage.updateReport(TEST_REPORT_NAME); + await pageManager.loginPage.loginAsInternalUserSC(); + await pageManager.loginPage.loginSC(); + await pageManager.reportsPage.navigateToReports(); + await pageManager.reportsPage.pauseReport(TEST_REPORT_NAME); + await pageManager.reportsPage.updateReport(TEST_REPORT_NAME); await page.goto(process.env["ZO_BASE_URL_SC_UI"] + "/web/reports?org_identifier=default"); await expect(page).toHaveURL(/.*\/reports/); - await reportsPage.deleteReport(TEST_REPORT_NAME); - await dashboardPage.navigateToDashboards(); - await dashboardPage.deleteDashboard(); + await pageManager.reportsPage.deleteReport(TEST_REPORT_NAME); + await pageManager.dashboardPage.navigateToDashboards(); + await pageManager.dashboardPage.deleteDashboard(); await page.waitForTimeout(10000); - await dashboardPage.loggedOut(); + await pageManager.dashboardPage.loggedOut(); await page.waitForTimeout(10000); - await loginPage.gotoLoginPage(); + await pageManager.loginPage.gotoLoginPage(); await page.waitForTimeout(10000); - await loginPage.loginAsInternalUser(); - await loginPage.login(); - await reportsPage.navigateToReports(); - await reportsPage.notAvailableReport(TEST_REPORT_NAME); + await pageManager.loginPage.loginAsInternalUser(); + await pageManager.loginPage.login(); + await pageManager.reportsPage.navigateToReports(); + await pageManager.reportsPage.notAvailableReport(TEST_REPORT_NAME); await page.goto(process.env["ZO_BASE_URL"] + "/web/dashboards?org_identifier=default"); - await dashboardPage.navigateToDashboards(); - await dashboardPage.notAvailableDashboard(); + await pageManager.dashboardPage.navigateToDashboards(); + await pageManager.dashboardPage.notAvailableDashboard(); }); test("Create, use, and delete dashboard and months Schedule Later type report ", async ({ page }) => { const TEST_REPORT_NAME = reportName(); - await dashboardPage.navigateToDashboards(); - await dashboardPage.createDashboard(); + await pageManager.dashboardPage.navigateToDashboards(); + await pageManager.dashboardPage.createDashboard(); await expect(page).toHaveURL(/.*\/dashboards/); await page.goto(process.env["ZO_BASE_URL"] + "/web/reports?org_identifier=default"); - await reportsPage.createReportAddReportButton(); - await reportsPage.createReportReportNameInput(TEST_REPORT_NAME); - await reportsPage.createReportFolderInput(); - await reportsPage.createReportDashboardInput(dashboardPage.dashboardName); - await reportsPage.createReportDashboardTabInput(); - await reportsPage.createReportContinueButtonStep1(); - await reportsPage.createReportMonths(); - await reportsPage.createReportScheduleLater(); - await reportsPage.createReportDateTime(); - await reportsPage.createReportZone(); - await reportsPage.createReportContinueButtonStep2(); - await reportsPage.createReportFillDetail(); - await reportsPage.createReportSaveButton(); - await reportsPage.loggedOut(); + await pageManager.reportsPage.createReportAddReportButton(); + await pageManager.reportsPage.createReportReportNameInput(TEST_REPORT_NAME); + await pageManager.reportsPage.createReportFolderInput(); + await pageManager.reportsPage.createReportDashboardInput(pageManager.dashboardPage.dashboardName); + await pageManager.reportsPage.createReportDashboardTabInput(); + await pageManager.reportsPage.createReportContinueButtonStep1(); + await pageManager.reportsPage.createReportMonths(); + await pageManager.reportsPage.createReportScheduleLater(); + await pageManager.reportsPage.createReportDateTime(); + await pageManager.reportsPage.createReportZone(); + await pageManager.reportsPage.createReportContinueButtonStep2(); + await pageManager.reportsPage.createReportFillDetail(); + await pageManager.reportsPage.createReportSaveButton(); + await pageManager.reportsPage.loggedOut(); await page.waitForTimeout(10000); - await loginPage.gotoLoginPageSC(); + await pageManager.loginPage.gotoLoginPageSC(); await page.waitForTimeout(10000); - await loginPage.loginAsInternalUserSC(); - await loginPage.loginSC(); - await reportsPage.navigateToReports(); - await reportsPage.pauseReport(TEST_REPORT_NAME); - await reportsPage.updateReport(TEST_REPORT_NAME); + await pageManager.loginPage.loginAsInternalUserSC(); + await pageManager.loginPage.loginSC(); + await pageManager.reportsPage.navigateToReports(); + await pageManager.reportsPage.pauseReport(TEST_REPORT_NAME); + await pageManager.reportsPage.updateReport(TEST_REPORT_NAME); await page.goto(process.env["ZO_BASE_URL_SC_UI"] + "/web/reports?org_identifier=default"); await expect(page).toHaveURL(/.*\/reports/); - await reportsPage.deleteReport(TEST_REPORT_NAME); - await dashboardPage.navigateToDashboards(); - await dashboardPage.deleteDashboard(); + await pageManager.reportsPage.deleteReport(TEST_REPORT_NAME); + await pageManager.dashboardPage.navigateToDashboards(); + await pageManager.dashboardPage.deleteDashboard(); await page.waitForTimeout(10000); - await dashboardPage.loggedOut(); + await pageManager.dashboardPage.loggedOut(); await page.waitForTimeout(10000); - await loginPage.gotoLoginPage(); + await pageManager.loginPage.gotoLoginPage(); await page.waitForTimeout(10000); - await loginPage.loginAsInternalUser(); - await loginPage.login(); - await reportsPage.navigateToReports(); - await reportsPage.notAvailableReport(TEST_REPORT_NAME); + await pageManager.loginPage.loginAsInternalUser(); + await pageManager.loginPage.login(); + await pageManager.reportsPage.navigateToReports(); + await pageManager.reportsPage.notAvailableReport(TEST_REPORT_NAME); await page.goto(process.env["ZO_BASE_URL"] + "/web/dashboards?org_identifier=default"); - await dashboardPage.navigateToDashboards(); - await dashboardPage.notAvailableDashboard(); + await pageManager.dashboardPage.navigateToDashboards(); + await pageManager.dashboardPage.notAvailableDashboard(); }); test("Create, use, and delete dashboard and weeks Schedule Later type report ", async ({ page }) => { const TEST_REPORT_NAME = reportName(); - await dashboardPage.navigateToDashboards(); - await dashboardPage.createDashboard(); + await pageManager.dashboardPage.navigateToDashboards(); + await pageManager.dashboardPage.createDashboard(); await expect(page).toHaveURL(/.*\/dashboards/); await page.goto(process.env["ZO_BASE_URL"] + "/web/reports?org_identifier=default"); - await reportsPage.createReportAddReportButton(); - await reportsPage.createReportReportNameInput(TEST_REPORT_NAME); - await reportsPage.createReportFolderInput(); - await reportsPage.createReportDashboardInput(dashboardPage.dashboardName); - await reportsPage.createReportDashboardTabInput(); - await reportsPage.createReportContinueButtonStep1(); - await reportsPage.createReportWeeks(); - await reportsPage.createReportScheduleLater(); - await reportsPage.createReportDateTime(); - await reportsPage.createReportZone(); - await reportsPage.createReportContinueButtonStep2(); - await reportsPage.createReportFillDetail(); - await reportsPage.createReportSaveButton(); - await reportsPage.loggedOut(); + await pageManager.reportsPage.createReportAddReportButton(); + await pageManager.reportsPage.createReportReportNameInput(TEST_REPORT_NAME); + await pageManager.reportsPage.createReportFolderInput(); + await pageManager.reportsPage.createReportDashboardInput(pageManager.dashboardPage.dashboardName); + await pageManager.reportsPage.createReportDashboardTabInput(); + await pageManager.reportsPage.createReportContinueButtonStep1(); + await pageManager.reportsPage.createReportWeeks(); + await pageManager.reportsPage.createReportScheduleLater(); + await pageManager.reportsPage.createReportDateTime(); + await pageManager.reportsPage.createReportZone(); + await pageManager.reportsPage.createReportContinueButtonStep2(); + await pageManager.reportsPage.createReportFillDetail(); + await pageManager.reportsPage.createReportSaveButton(); + await pageManager.reportsPage.loggedOut(); await page.waitForTimeout(10000); - await loginPage.gotoLoginPageSC(); + await pageManager.loginPage.gotoLoginPageSC(); await page.waitForTimeout(10000); - await loginPage.loginAsInternalUserSC(); - await loginPage.loginSC(); - await reportsPage.navigateToReports(); - await reportsPage.pauseReport(TEST_REPORT_NAME); - await reportsPage.updateReport(TEST_REPORT_NAME); + await pageManager.loginPage.loginAsInternalUserSC(); + await pageManager.loginPage.loginSC(); + await pageManager.reportsPage.navigateToReports(); + await pageManager.reportsPage.pauseReport(TEST_REPORT_NAME); + await pageManager.reportsPage.updateReport(TEST_REPORT_NAME); await page.goto(process.env["ZO_BASE_URL_SC_UI"] + "/web/reports?org_identifier=default"); await expect(page).toHaveURL(/.*\/reports/); - await reportsPage.deleteReport(TEST_REPORT_NAME); - await dashboardPage.navigateToDashboards(); - await dashboardPage.deleteDashboard(); + await pageManager.reportsPage.deleteReport(TEST_REPORT_NAME); + await pageManager.dashboardPage.navigateToDashboards(); + await pageManager.dashboardPage.deleteDashboard(); await page.waitForTimeout(10000); - await dashboardPage.loggedOut(); + await pageManager.dashboardPage.loggedOut(); await page.waitForTimeout(10000); - await loginPage.gotoLoginPage(); + await pageManager.loginPage.gotoLoginPage(); await page.waitForTimeout(10000); - await loginPage.loginAsInternalUser(); - await loginPage.login(); - await reportsPage.navigateToReports(); - await reportsPage.notAvailableReport(TEST_REPORT_NAME); + await pageManager.loginPage.loginAsInternalUser(); + await pageManager.loginPage.login(); + await pageManager.reportsPage.navigateToReports(); + await pageManager.reportsPage.notAvailableReport(TEST_REPORT_NAME); await page.goto(process.env["ZO_BASE_URL"] + "/web/dashboards?org_identifier=default"); - await dashboardPage.navigateToDashboards(); - await dashboardPage.notAvailableDashboard(); + await pageManager.dashboardPage.navigateToDashboards(); + await pageManager.dashboardPage.notAvailableDashboard(); }); test("Create, use, and delete dashboard and days Schedule Later type report ", async ({ page }) => { const TEST_REPORT_NAME = reportName(); - await dashboardPage.navigateToDashboards(); - await dashboardPage.createDashboard(); + await pageManager.dashboardPage.navigateToDashboards(); + await pageManager.dashboardPage.createDashboard(); await expect(page).toHaveURL(/.*\/dashboards/); await page.goto(process.env["ZO_BASE_URL"] + "/web/reports?org_identifier=default"); - await reportsPage.createReportAddReportButton(); - await reportsPage.createReportReportNameInput(TEST_REPORT_NAME); - await reportsPage.createReportFolderInput(); - await reportsPage.createReportDashboardInput(dashboardPage.dashboardName); - await reportsPage.createReportDashboardTabInput(); - await reportsPage.createReportContinueButtonStep1(); - await reportsPage.createReportDays(); - await reportsPage.createReportScheduleLater(); - await reportsPage.createReportDateTime(); - await reportsPage.createReportZone(); - await reportsPage.createReportContinueButtonStep2(); - await reportsPage.createReportFillDetail(); - await reportsPage.createReportSaveButton(); - await reportsPage.loggedOut(); + await pageManager.reportsPage.createReportAddReportButton(); + await pageManager.reportsPage.createReportReportNameInput(TEST_REPORT_NAME); + await pageManager.reportsPage.createReportFolderInput(); + await pageManager.reportsPage.createReportDashboardInput(pageManager.dashboardPage.dashboardName); + await pageManager.reportsPage.createReportDashboardTabInput(); + await pageManager.reportsPage.createReportContinueButtonStep1(); + await pageManager.reportsPage.createReportDays(); + await pageManager.reportsPage.createReportScheduleLater(); + await pageManager.reportsPage.createReportDateTime(); + await pageManager.reportsPage.createReportZone(); + await pageManager.reportsPage.createReportContinueButtonStep2(); + await pageManager.reportsPage.createReportFillDetail(); + await pageManager.reportsPage.createReportSaveButton(); + await pageManager.reportsPage.loggedOut(); await page.waitForTimeout(10000); - await loginPage.gotoLoginPageSC(); + await pageManager.loginPage.gotoLoginPageSC(); await page.waitForTimeout(10000); - await loginPage.loginAsInternalUserSC(); - await loginPage.loginSC(); - await reportsPage.navigateToReports(); - await reportsPage.pauseReport(TEST_REPORT_NAME); - await reportsPage.updateReport(TEST_REPORT_NAME); + await pageManager.loginPage.loginAsInternalUserSC(); + await pageManager.loginPage.loginSC(); + await pageManager.reportsPage.navigateToReports(); + await pageManager.reportsPage.pauseReport(TEST_REPORT_NAME); + await pageManager.reportsPage.updateReport(TEST_REPORT_NAME); await page.goto(process.env["ZO_BASE_URL_SC_UI"] + "/web/reports?org_identifier=default"); await expect(page).toHaveURL(/.*\/reports/); - await reportsPage.deleteReport(TEST_REPORT_NAME); - await dashboardPage.navigateToDashboards(); - await dashboardPage.deleteDashboard(); + await pageManager.reportsPage.deleteReport(TEST_REPORT_NAME); + await pageManager.dashboardPage.navigateToDashboards(); + await pageManager.dashboardPage.deleteDashboard(); await page.waitForTimeout(10000); - await dashboardPage.loggedOut(); + await pageManager.dashboardPage.loggedOut(); await page.waitForTimeout(10000); - await loginPage.gotoLoginPage(); + await pageManager.loginPage.gotoLoginPage(); await page.waitForTimeout(10000); - await loginPage.loginAsInternalUser(); - await loginPage.login(); - await reportsPage.navigateToReports(); - await reportsPage.notAvailableReport(TEST_REPORT_NAME); + await pageManager.loginPage.loginAsInternalUser(); + await pageManager.loginPage.login(); + await pageManager.reportsPage.navigateToReports(); + await pageManager.reportsPage.notAvailableReport(TEST_REPORT_NAME); await page.goto(process.env["ZO_BASE_URL"] + "/web/dashboards?org_identifier=default"); - await dashboardPage.navigateToDashboards(); - await dashboardPage.notAvailableDashboard(); + await pageManager.dashboardPage.navigateToDashboards(); + await pageManager.dashboardPage.notAvailableDashboard(); }); test("Create, use, and delete dashboard and hours Schedule Later type report ", async ({ page }) => { const TEST_REPORT_NAME = reportName(); - await dashboardPage.navigateToDashboards(); - await dashboardPage.createDashboard(); + await pageManager.dashboardPage.navigateToDashboards(); + await pageManager.dashboardPage.createDashboard(); await expect(page).toHaveURL(/.*\/dashboards/); await page.goto(process.env["ZO_BASE_URL"] + "/web/reports?org_identifier=default"); - await reportsPage.createReportAddReportButton(); - await reportsPage.createReportReportNameInput(TEST_REPORT_NAME); - await reportsPage.createReportFolderInput(); - await reportsPage.createReportDashboardInput(dashboardPage.dashboardName); - await reportsPage.createReportDashboardTabInput(); - await reportsPage.createReportContinueButtonStep1(); - await reportsPage.createReportHours(); - await reportsPage.createReportScheduleLater(); - await reportsPage.createReportDateTime(); - await reportsPage.createReportZone(); - await reportsPage.createReportContinueButtonStep2(); - await reportsPage.createReportFillDetail(); - await reportsPage.createReportSaveButton(); - await reportsPage.loggedOut(); + await pageManager.reportsPage.createReportAddReportButton(); + await pageManager.reportsPage.createReportReportNameInput(TEST_REPORT_NAME); + await pageManager.reportsPage.createReportFolderInput(); + await pageManager.reportsPage.createReportDashboardInput(pageManager.dashboardPage.dashboardName); + await pageManager.reportsPage.createReportDashboardTabInput(); + await pageManager.reportsPage.createReportContinueButtonStep1(); + await pageManager.reportsPage.createReportHours(); + await pageManager.reportsPage.createReportScheduleLater(); + await pageManager.reportsPage.createReportDateTime(); + await pageManager.reportsPage.createReportZone(); + await pageManager.reportsPage.createReportContinueButtonStep2(); + await pageManager.reportsPage.createReportFillDetail(); + await pageManager.reportsPage.createReportSaveButton(); + await pageManager.reportsPage.loggedOut(); await page.waitForTimeout(10000); - await loginPage.gotoLoginPageSC(); + await pageManager.loginPage.gotoLoginPageSC(); await page.waitForTimeout(10000); - await loginPage.loginAsInternalUserSC(); - await loginPage.loginSC(); - await reportsPage.navigateToReports(); - await reportsPage.pauseReport(TEST_REPORT_NAME); - await reportsPage.updateReport(TEST_REPORT_NAME); + await pageManager.loginPage.loginAsInternalUserSC(); + await pageManager.loginPage.loginSC(); + await pageManager.reportsPage.navigateToReports(); + await pageManager.reportsPage.pauseReport(TEST_REPORT_NAME); + await pageManager.reportsPage.updateReport(TEST_REPORT_NAME); await page.goto(process.env["ZO_BASE_URL_SC_UI"] + "/web/reports?org_identifier=default"); await expect(page).toHaveURL(/.*\/reports/); - await reportsPage.deleteReport(TEST_REPORT_NAME); - await dashboardPage.navigateToDashboards(); - await dashboardPage.deleteDashboard(); + await pageManager.reportsPage.deleteReport(TEST_REPORT_NAME); + await pageManager.dashboardPage.navigateToDashboards(); + await pageManager.dashboardPage.deleteDashboard(); await page.waitForTimeout(10000); - await dashboardPage.loggedOut(); + await pageManager.dashboardPage.loggedOut(); await page.waitForTimeout(10000); - await loginPage.gotoLoginPage(); + await pageManager.loginPage.gotoLoginPage(); await page.waitForTimeout(10000); - await loginPage.loginAsInternalUser(); - await loginPage.login(); - await reportsPage.navigateToReports(); - await reportsPage.notAvailableReport(TEST_REPORT_NAME); + await pageManager.loginPage.loginAsInternalUser(); + await pageManager.loginPage.login(); + await pageManager.reportsPage.navigateToReports(); + await pageManager.reportsPage.notAvailableReport(TEST_REPORT_NAME); await page.goto(process.env["ZO_BASE_URL"] + "/web/dashboards?org_identifier=default"); - await dashboardPage.navigateToDashboards(); - await dashboardPage.notAvailableDashboard(); + await pageManager.dashboardPage.navigateToDashboards(); + await pageManager.dashboardPage.notAvailableDashboard(); }); test("Create, use, and delete dashboard and once Schedule Later type report ", async ({ page }) => { const TEST_REPORT_NAME = reportName(); - await dashboardPage.navigateToDashboards(); - await dashboardPage.createDashboard(); + await pageManager.dashboardPage.navigateToDashboards(); + await pageManager.dashboardPage.createDashboard(); await expect(page).toHaveURL(/.*\/dashboards/); await page.goto(process.env["ZO_BASE_URL"] + "/web/reports?org_identifier=default"); - await reportsPage.createReportAddReportButton(); - await reportsPage.createReportReportNameInput(TEST_REPORT_NAME); - await reportsPage.createReportFolderInput(); - await reportsPage.createReportDashboardInput(dashboardPage.dashboardName); - await reportsPage.createReportDashboardTabInput(); - await reportsPage.createReportContinueButtonStep1(); - await reportsPage.createReportOnce(); - await reportsPage.createReportScheduleLater(); - await reportsPage.createReportDateTime(); - await reportsPage.createReportZone(); - await reportsPage.createReportContinueButtonStep2(); - await reportsPage.createReportFillDetail(); - await reportsPage.createReportSaveButton(); - await reportsPage.loggedOut(); + await pageManager.reportsPage.createReportAddReportButton(); + await pageManager.reportsPage.createReportReportNameInput(TEST_REPORT_NAME); + await pageManager.reportsPage.createReportFolderInput(); + await pageManager.reportsPage.createReportDashboardInput(pageManager.dashboardPage.dashboardName); + await pageManager.reportsPage.createReportDashboardTabInput(); + await pageManager.reportsPage.createReportContinueButtonStep1(); + await pageManager.reportsPage.createReportOnce(); + await pageManager.reportsPage.createReportScheduleLater(); + await pageManager.reportsPage.createReportDateTime(); + await pageManager.reportsPage.createReportZone(); + await pageManager.reportsPage.createReportContinueButtonStep2(); + await pageManager.reportsPage.createReportFillDetail(); + await pageManager.reportsPage.createReportSaveButton(); + await pageManager.reportsPage.loggedOut(); await page.waitForTimeout(10000); - await loginPage.gotoLoginPageSC(); + await pageManager.loginPage.gotoLoginPageSC(); await page.waitForTimeout(10000); - await loginPage.loginAsInternalUserSC(); - await loginPage.loginSC(); - await reportsPage.navigateToReports(); - await reportsPage.pauseReport(TEST_REPORT_NAME); - await reportsPage.updateReport(TEST_REPORT_NAME); + await pageManager.loginPage.loginAsInternalUserSC(); + await pageManager.loginPage.loginSC(); + await pageManager.reportsPage.navigateToReports(); + await pageManager.reportsPage.pauseReport(TEST_REPORT_NAME); + await pageManager.reportsPage.updateReport(TEST_REPORT_NAME); await page.goto(process.env["ZO_BASE_URL_SC_UI"] + "/web/reports?org_identifier=default"); await expect(page).toHaveURL(/.*\/reports/); - await reportsPage.deleteReport(TEST_REPORT_NAME); - await dashboardPage.navigateToDashboards(); - await dashboardPage.deleteDashboard(); + await pageManager.reportsPage.deleteReport(TEST_REPORT_NAME); + await pageManager.dashboardPage.navigateToDashboards(); + await pageManager.dashboardPage.deleteDashboard(); await page.waitForTimeout(10000); - await dashboardPage.loggedOut(); + await pageManager.dashboardPage.loggedOut(); await page.waitForTimeout(10000); - await loginPage.gotoLoginPage(); + await pageManager.loginPage.gotoLoginPage(); await page.waitForTimeout(10000); - await loginPage.loginAsInternalUser(); - await loginPage.login(); - await reportsPage.navigateToReports(); - await reportsPage.notAvailableReport(TEST_REPORT_NAME); + await pageManager.loginPage.loginAsInternalUser(); + await pageManager.loginPage.login(); + await pageManager.reportsPage.navigateToReports(); + await pageManager.reportsPage.notAvailableReport(TEST_REPORT_NAME); await page.goto(process.env["ZO_BASE_URL"] + "/web/dashboards?org_identifier=default"); - await dashboardPage.navigateToDashboards(); - await dashboardPage.notAvailableDashboard(); + await pageManager.dashboardPage.navigateToDashboards(); + await pageManager.dashboardPage.notAvailableDashboard(); }); diff --git a/tests/ui-testing/playwright-tests/Streams/multiselect-stream.spec.js b/tests/ui-testing/playwright-tests/Streams/multiselect-stream.spec.js index 566f52f685..4bd774fa04 100644 --- a/tests/ui-testing/playwright-tests/Streams/multiselect-stream.spec.js +++ b/tests/ui-testing/playwright-tests/Streams/multiselect-stream.spec.js @@ -1,6 +1,6 @@ import { test, expect } from "../baseFixtures.js"; import logData from "../../cypress/fixtures/log.json"; -import { LogsPage } from '../../pages/logsPages/logsPage.js'; +import PageManager from '../../pages/page-manager.js'; test.describe.configure({ mode: "parallel" }); @@ -53,7 +53,7 @@ const sendRequest = async (page, url, payload, headers) => { }; test.describe("Stream multiselect testcases", () => { - let logsPage; + let pageManager; function removeUTFCharacters(text) { return text.replace(/[^\x00-\x7F]/g, " "); } @@ -69,7 +69,7 @@ test.describe("Stream multiselect testcases", () => { test.beforeEach(async ({ page }) => { await login(page); - logsPage = new LogsPage(page); + pageManager = new PageManager(page); await page.waitForTimeout(5000); @@ -97,9 +97,9 @@ test.describe("Stream multiselect testcases", () => { `${logData.logsUrl}?org_identifier=${process.env["ORGNAME"]}` ); const allsearch = page.waitForResponse("**/api/default/_search**"); - await logsPage.selectStream("e2e_automate"); + await pageManager.logsPage.selectStream("e2e_automate"); await applyQueryButton(page); - await logsPage.clickQuickModeToggle(); + await pageManager.logsPage.clickQuickModeToggle(); }); @@ -242,7 +242,7 @@ await page.waitForTimeout(1000); page, }) => { await multistreamselect(page); - await logsPage.setDateTimeToToday(); + await pageManager.logsPage.setDateTimeToToday(); await expect(page.locator('[data-test="logs-search-index-list"]')).toContainText('e2e_automate, e2e_stream1'); });