Skip to content

Instantly share code, notes, and snippets.

@CrispusDH
Created January 23, 2020 10:52
Show Gist options
  • Save CrispusDH/dbaf39a7ce231faed2eb71b971d76ac6 to your computer and use it in GitHub Desktop.
Save CrispusDH/dbaf39a7ce231faed2eb71b971d76ac6 to your computer and use it in GitHub Desktop.

Revisions

  1. CrispusDH created this gist Jan 23, 2020.
    49 changes: 49 additions & 0 deletions gistfile1.txt
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,49 @@
    import { Browser } from 'puppeteer';
    import * as puppeteer from 'puppeteer';
    import axios from 'axios';

    export const getBrowser = async (): Promise<Browser> => {
    switch (process.env.runningType) {
    case 'selenoid': {
    return await selenoidLaunch();
    }
    case 'local': {
    return await localLaunch();
    }
    }
    };

    const localLaunch = async (): Promise<Browser> => {
    return puppeteer.launch(
    {
    headless: false,
    defaultViewport: {
    width: 1366,
    height:766
    }
    });
    };

    const selenoidLaunch = async (): Promise<Browser> => {
    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}` }
    );
    };