const { chromium } = require('@playwright/test'); const path = require('path'); const fs = require('fs'); const logsdata = require("../../../test-data/logs_data.json"); const testLogger = require('./test-logger.js'); const metricsIngestion = require('./metrics-ingestion.js'); const { ingestTraces } = require('./trace-ingestion.js'); const { ingestRumErrors } = require('./rum-error-ingestion.js'); /** * Global setup for all tests - handles authentication and test data ingestion * This runs once before all tests start */ async function globalSetup() { testLogger.info('Starting global setup for all tests'); // Create auth storage directory const authDir = path.join(__dirname, 'auth'); if (!fs.existsSync(authDir)) { fs.mkdirSync(authDir, { recursive: true }); } const authFile = path.join(authDir, 'user.json'); // Launch browser and create context const browser = await chromium.launch({ args: process.env.CI ? ['--no-sandbox', '--disable-setuid-sandbox'] : [] }); const context = await browser.newContext({ viewport: { width: 1500, height: 1024 } }); const page = await context.newPage(); try { testLogger.info('Performing global login authentication'); // Navigate to login page with org identifier to establish correct org context const loginUrl = `${process.env["ZO_BASE_URL"]}?org_identifier=${process.env["ORGNAME"]}`; await page.goto(loginUrl); testLogger.debug('Navigated to base URL with org', { url: loginUrl }); await page.waitForLoadState('domcontentloaded'); await page.waitForTimeout(2000); // Debug: Log current URL and page title const currentUrl = page.url(); const pageTitle = await page.title(); testLogger.debug('Page loaded', { currentUrl, pageTitle }); // Handle internal user login if needed — data-test only, no text matching. const internalUserButton = page.locator('[data-test="login-as-internal-user"]'); if (await internalUserButton.count()) { if (await internalUserButton.first().isVisible().catch(() => false)) { await internalUserButton.first().click(); testLogger.debug('Clicked internal user login button'); await page.waitForLoadState('domcontentloaded'); } } // Fill login credentials — data-test only. OInput's WRAPPER carries // `data-test=""`; the actual /