mirror of
https://github.com/openobserve/openobserve.git
synced 2026-11-05 16:10:43 +00:00
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> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7597/files#diff-565eab8b3c767ae50c9d05e591621d14f66b81af84d6b5ea6efe136c1c3933df">+6/-0</a> </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> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7597/files#diff-32972e38c1fe0e8bb887f9f254b3130916a36f96ea924f9987493d44efefeab9">+31/-50</a> </td> </tr> <tr> <td><strong>alerts-import.spec.js</strong><dd><code>Refactor alerts import tests to use PageManager</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7597/files#diff-62b6ec4818685eacc0a934d68aaadfd73b512ef4f4be25fcd5135b97c2844912">+48/-80</a> </td> </tr> <tr> <td><strong>alerts-ui-operations.spec.js</strong><dd><code>Update alerts UI tests to PageManager pattern</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7597/files#diff-c9b523b5f5dea834b69abdf20f4acef361bdf37b1585c450e10238b1d1984f2e">+54/-73</a> </td> </tr> <tr> <td><strong>indexquery.spec.js</strong><dd><code>Use PageManager in index query performance tests</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7597/files#diff-34747033f2191057e144ed1892b682d355e11788603a61aa98fbf991eed50c5a">+1/-3</a> </td> </tr> <tr> <td><strong>join.spec.js</strong><dd><code>Migrate join tests to PageManager usage</code> </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> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/7597/files#diff-d01da1c5a03b1d1c1c74e11f6e4ebe879def1ce87e407aa9a1afc8473040f4bc">+72/-72</a> </td> </tr> <tr> <td><strong>logspage.spec.js</strong><dd><code>Convert logs page tests to PageManager approach</code> </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> </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:
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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');
|
||||
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user