UNPKG

js_tgbrowser

Version:

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

67 lines (58 loc) 1.97 kB
#!/usr/bin/env node const { Builder, Capabilities } = require('selenium-webdriver'); async function inspectSession() { const remoteUrl = process.env.SELENIUM_REMOTE_URL; if (!remoteUrl) { console.error('SELENIUM_REMOTE_URL is not set'); process.exitCode = 1; return; } let capabilities = {}; if (process.env.SELENIUM_REMOTE_CAPABILITIES) { try { capabilities = JSON.parse(process.env.SELENIUM_REMOTE_CAPABILITIES); } catch (error) { console.error('Failed to parse SELENIUM_REMOTE_CAPABILITIES:', error); process.exitCode = 1; return; } } const builder = new Builder().forBrowser('chrome').usingServer(remoteUrl); if (Object.keys(capabilities).length) { builder.withCapabilities(capabilities); } let driver; try { driver = await builder.build(); const session = await driver.getSession(); const sessionId = session.getId(); const caps = session.getCapabilities(); console.log('Session Id:', sessionId); console.log('Capabilities (raw):', JSON.stringify(caps, null, 2)); if (caps && typeof caps.toJSON === 'function') { console.log('Capabilities (json):', JSON.stringify(caps.toJSON(), null, 2)); } const hubBase = remoteUrl.endsWith('/') ? remoteUrl : `${remoteUrl}/`; try { const sessionResponse = await fetch(`${hubBase}session/${sessionId}`); const sessionPayload = await sessionResponse.text(); console.log('Session details payload:', sessionPayload); } catch (fetchError) { console.error('Failed to fetch session details from hub:', fetchError); } } catch (error) { console.error('Error while creating session:', error); } finally { if (driver) { try { await driver.quit(); } catch (quitError) { console.error('Error while quitting session:', quitError); } } } } if (require.main === module) { inspectSession(); } module.exports = inspectSession;