UNPKG

js_tgbrowser

Version:

Playwright helpers for connecting to TestGrid remote browsers via Selenium + CDP.

64 lines (51 loc) 1.56 kB
const registerTestgridFixture = require('./testgrid-register'); function ensureEnv(name, value) { if (value === undefined || process.env[name] !== undefined) { return; } process.env[name] = typeof value === 'object' ? JSON.stringify(value) : String(value); } function normalizeConfig(settings = {}) { if (!settings.remoteUrl) { throw new Error( 'setupTestgrid requires a "remoteUrl" (Selenium hub endpoint) in its configuration.' ); } const capabilities = { ...(settings.capabilities || {}) }; return { remoteUrl: settings.remoteUrl, capabilities, cdpProxyPath: settings.cdpProxyPath, hostHeader: settings.hostHeader, debugScopes: settings.debugScopes }; } function deriveHostHeader(remoteUrl, explicitHostHeader) { if (explicitHostHeader) { return explicitHostHeader; } try { return new URL(remoteUrl).hostname || undefined; } catch (error) { return undefined; } } function setupTestgrid(settings) { const config = normalizeConfig(settings); registerTestgridFixture(); ensureEnv('SELENIUM_REMOTE_URL', config.remoteUrl); if (config.capabilities && Object.keys(config.capabilities).length) { ensureEnv('SELENIUM_REMOTE_CAPABILITIES', config.capabilities); } ensureEnv('TESTGRID_CDP_PROXY_PATH', config.cdpProxyPath); config.hostHeader = deriveHostHeader(config.remoteUrl, config.hostHeader); ensureEnv('TESTGRID_HOST_HEADER', config.hostHeader); ensureEnv('DEBUG', config.debugScopes); return config; } module.exports = { setupTestgrid };