test: Page manager for all spec files (#7597)

### **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.<subpage>` syntax

- Refactor logs and reports tests to centralize page object usage


___



### **Changes walkthrough** 📝
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><details><summary>1
files</summary><table>
<tr>
<td><strong>page-manager.js</strong><dd><code>Import and instantiate
UnflattenedPage in PageManager</code>&nbsp; &nbsp; &nbsp; &nbsp;
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7597/files#diff-565eab8b3c767ae50c9d05e591621d14f66b81af84d6b5ea6efe136c1c3933df">+6/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

</table></details></td></tr><tr><td><strong>Tests</strong></td><td><details><summary>8
files</summary><table>
<tr>
<td><strong>alerts-e2e-flow.spec.js</strong><dd><code>Convert alerts E2E
flow to use PageManager</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7597/files#diff-32972e38c1fe0e8bb887f9f254b3130916a36f96ea924f9987493d44efefeab9">+31/-50</a>&nbsp;
</td>

</tr>

<tr>
<td><strong>alerts-import.spec.js</strong><dd><code>Refactor alerts
import tests to use PageManager</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7597/files#diff-62b6ec4818685eacc0a934d68aaadfd73b512ef4f4be25fcd5135b97c2844912">+48/-80</a>&nbsp;
</td>

</tr>

<tr>
<td><strong>alerts-ui-operations.spec.js</strong><dd><code>Update alerts
UI tests to PageManager pattern</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7597/files#diff-c9b523b5f5dea834b69abdf20f4acef361bdf37b1585c450e10238b1d1984f2e">+54/-73</a>&nbsp;
</td>

</tr>

<tr>
<td><strong>indexquery.spec.js</strong><dd><code>Use PageManager in
index query performance tests</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7597/files#diff-34747033f2191057e144ed1892b682d355e11788603a61aa98fbf991eed50c5a">+1/-3</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>join.spec.js</strong><dd><code>Migrate join tests to
PageManager usage</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7597/files#diff-b161f6e50affa381ff0ea27463a79c061139041f44ecaef5a64e4aa88ef97d45">+80/-116</a></td>

</tr>

<tr>
<td><strong>logshistogram.spec.js</strong><dd><code>Refactor histogram
tests to employ PageManager</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7597/files#diff-d01da1c5a03b1d1c1c74e11f6e4ebe879def1ce87e407aa9a1afc8473040f4bc">+72/-72</a>&nbsp;
</td>

</tr>

<tr>
<td><strong>logspage.spec.js</strong><dd><code>Convert logs page tests
to PageManager approach</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7597/files#diff-b1a64252adae01c5e8f7e758e3c820f5476260f60c44a4a57b4f15a05a59a85a">+209/-211</a></td>

</tr>

<tr>
<td><strong>reportsUpdated.spec.js</strong><dd><code>Update report tests
to use PageManager instance</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/7597/files#diff-1608bba793d8fd81e04853ee9017257376c7fda7177bbd20a4613db29b84b628">+230/-249</a></td>

</tr>
</table></details></td></tr></tr></tbody></table>

___

> <details> <summary> Need help?</summary><li>Type <code>/help how to
...</code> in the comments thread for any questions about PR-Agent
usage.</li><li>Check out the <a
href="https://qodo-merge-docs.qodo.ai/usage-guide/">documentation</a>
for more information.</li></details>
This commit is contained in:
Shrinath Rao
2025-07-17 18:45:57 +05:30
committed by GitHub
parent 6719b0387a
commit a2849841ab
16 changed files with 1408 additions and 1486 deletions
+14
View File
@@ -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);
}
}
}
+10 -4
View File
@@ -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);
}
}
@@ -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);
});
});
@@ -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');
@@ -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);
});
});
@@ -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 = {
@@ -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();
});
});
@@ -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();
});
});
@@ -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();
});
});
@@ -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();
});
})
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();
});
});
@@ -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");
});
});
@@ -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();
});
});
@@ -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();
@@ -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();
});
});
@@ -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();
});
@@ -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');
});