js_tgbrowser
Version:
Playwright helpers for connecting to TestGrid remote browsers via Selenium + CDP.
67 lines (58 loc) • 1.97 kB
JavaScript
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;