/**
 * Common browser configuration for Puppeteer tests
 * Prevents bookmark prompts and other UI interruptions
 */

const { createSeededChromeProfile } = require('../shared/chrome_profile');

const BROWSER_CONFIG = {
    headless: Boolean(process.env.CI),
    // userDataDir is defined as a lazy getter below so merely importing
    // this module (some scripts import both configs) doesn't create an
    // unused profile directory.
    args: [
        '--no-sandbox',
        '--disable-setuid-sandbox',
        '--disable-dev-shm-usage',
        '--disable-accelerated-2d-canvas',
        '--no-first-run',
        '--no-zygote',
        '--disable-gpu',
        '--disable-extensions',
        '--disable-default-apps',
        '--disable-sync',
        '--disable-bookmarks-ui',
        '--disable-features=TranslateUI',
        '--disable-popup-blocking',
        '--disable-bookmark-prompt-on-load',
        '--disable-save-password-bubble',
        '--disable-prompt-on-repost',
        '--disable-background-networking',
        '--disable-background-timer-throttling',
        '--disable-backgrounding-occluded-windows',
        '--disable-breakpad',
        '--disable-client-side-phishing-detection',
        '--disable-component-extensions-with-background-pages',
        '--disable-features=site-per-process',
        '--disable-hang-monitor',
        '--disable-ipc-flooding-protection',
        '--disable-renderer-backgrounding'
    ],
    ignoreDefaultArgs: ['--enable-automation'],
    defaultViewport: {
        width: 1280,
        height: 800
    }
};

// Disables Chrome's password leak detection, whose invisible tab-modal
// "data breach" dialog otherwise eats all real CDP input after logging
// in with the CI credentials — see chrome_profile.js and issue #4430.
// Lazy + memoized: the profile directory is only created when a launch
// actually reads the option.
let seededProfileDir = null;
Object.defineProperty(BROWSER_CONFIG, 'userDataDir', {
    enumerable: true,
    get() {
        if (!seededProfileDir) {
            seededProfileDir = createSeededChromeProfile();
        }
        return seededProfileDir;
    }
});

/**
 * Page initialization options
 */
const PAGE_CONFIG = {
    waitUntil: 'domcontentloaded',
    timeout: 5000  // Reduced from 30000 to 5000ms
};

module.exports = {
    BROWSER_CONFIG,
    PAGE_CONFIG
};
