import { Browser } from 'puppeteer'; import * as puppeteer from 'puppeteer'; import axios from 'axios'; export const getBrowser = async (): Promise => { switch (process.env.runningType) { case 'selenoid': { return await selenoidLaunch(); } case 'local': { return await localLaunch(); } } }; const localLaunch = async (): Promise => { return puppeteer.launch( { headless: false, defaultViewport: { width: 1366, height:766 } }); }; const selenoidLaunch = async (): Promise => { const selenoidUrl = '127.0.0.1'; const { data } = await axios.post( `http://${selenoidUrl}:4444/wd/hub/session`, { desiredCapabilities: { 'browserName': 'chrome', 'browserVersion': '77.0', 'selenoid:options': { sessionTimeout: '10m', enableVnc: true } } } ); const sessionId = data.sessionId; await new Promise((resolve) => setTimeout(resolve, 5000)); return await puppeteer.connect( { browserWSEndpoint: `ws://${selenoidUrl}:4444/devtools/${sessionId}` } ); };