{"version":3,"sources":["jsdelivr-header.js","/npm/@gliff-ai/jest-browserstack-automate@6.0.8/index.js"],"names":[],"mappings":"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","file":"/npm/@gliff-ai/jest-browserstack-automate@6.0.8/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/@gliff-ai/jest-browserstack-automate@6.0.8/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","const webdriver = require(\"selenium-webdriver\");\nconst browserstack = require(\"browserstack-local\");\nconst percySnapshotOriginal = require(\"@percy/selenium-webdriver\");\nconst { test: jestTest } = require(\"@jest/globals\");\n\nconst {\n  BROWSERSTACK_USERNAME,\n  BROWSERSTACK_ACCESS_KEY,\n  BROWSERSTACK_BUILD_NAME = \"local build\",\n  BROWSERSTACK_LOCAL_IDENTIFIER = null\n} = process.env;\n\nconst BROWSERSTACK_URL = BROWSERSTACK_USERNAME\n  ? `http://${BROWSERSTACK_USERNAME}:${BROWSERSTACK_ACCESS_KEY}@hub-cloud.browserstack.com/wd/hub`\n  : null;\n\nconst bsDesktopBrowsers = [\n  {\n    browserName: \"Chrome\",\n    browser_version: \"latest\",\n    os: \"OS X\",\n    os_version: \"Big Sur\",\n  },\n  {\n    browserName: \"Chrome\",\n    browser_version: \"latest\",\n    os: \"Windows\",\n    os_version: \"10\",\n  },\n  {\n    browserName: \"Safari\",\n    browser_version: \"latest\",\n    os: \"OS X\",\n    os_version: \"Big Sur\",\n  },\n  {\n    browserName: \"Edge\",\n    browser_version: \"latest\",\n    os: \"Windows\",\n    os_version: \"10\",\n  },\n  {\n    device: \"iPad 8th\",\n    real_mobile: \"true\",\n    browserName: \"Safari\",\n  },\n];\n\nconst getPercySnapshotFn = () => {\n  const snaps = new Set();\n\n  return async (driver, name, options) => {\n    if (snaps.has(name)) {\n      return;\n    } else {\n      snaps.add(name);\n      return percySnapshotOriginal(driver, name, {\n        widths: [1024, 1440],\n        ...options,\n      });\n    }\n  };\n};\n\nconst init = (project, desktopBrowsers = bsDesktopBrowsers) => {\n  const getDriver = (capabilities = {}, localBrowser = \"chrome\") => {\n    if (!BROWSERSTACK_URL) {\n      return new webdriver.Builder().forBrowser(localBrowser).build();\n    }\n\n    const baseCapabilities = {\n      \"browserstack.local\": \"true\",\n      \"browserstack.console\": \"errors\",\n      \"browserstack.localIdentifier\": BROWSERSTACK_LOCAL_IDENTIFIER,\n      name: \"Test Test\",\n      build: BROWSERSTACK_BUILD_NAME.substr(0, 254),\n\n      ...capabilities,\n    };\n\n    const driver = new webdriver.Builder()\n      .usingServer(BROWSERSTACK_URL)\n      .withCapabilities(baseCapabilities)\n      .build();\n\n    if (driver) {\n      return driver;\n    }\n\n    console.error(\"Couldn't get webdriver\");\n    throw new Error(\"Couldn't get webdriver\");\n  };\n\n  const initBrowserStackLocal = () =>\n    new Promise((resolve) => {\n      // Creates an instance of Local\n      const bs_local = new browserstack.Local();\n\n      const bs_local_args = {\n        key: BROWSERSTACK_ACCESS_KEY,\n        verbose: 3,\n      };\n\n      // Starts the Local instance with the required arguments\n      bs_local.start(bs_local_args, function () {\n        console.log(\"BrowserStack local started\");\n        resolve(bs_local);\n      });\n    });\n\n  const wrapper = (cb) => {\n    let bs_local;\n\n    beforeAll(async () => {\n      if (BROWSERSTACK_ACCESS_KEY) {\n        bs_local = await initBrowserStackLocal();\n\n        if (!bs_local) {\n          console.error(\"Couldn't init Browserstack Local\");\n          throw new Error(\"Couldn't init Browserstack Local\");\n        }\n      }\n    }, 30000);\n\n    describe(\"selenium tests\", () => {\n      cb();\n    });\n\n    afterAll((done) => {\n      if (bs_local) {\n        bs_local.stop(() => {\n          console.log(\"BrowserStack local stopped\");\n          done();\n        });\n      } else {\n        done();\n      }\n    }, 60000);\n  };\n\n  const test = async (\n    name,\n    action,\n    timeout = 60000,\n    driverOptions = { capabilities: {}, localBrowser: \"chrome\" }\n  ) => {\n    const percySnapshot = getPercySnapshotFn();\n\n    return jestTest.each(BROWSERSTACK_URL ? desktopBrowsers : [{}])(\n      `${name} - $browserName - $os`,\n      async (browser) => {\n        try {\n          const driver = await getDriver(\n            {\n              project,\n              ...driverOptions.capabilities,\n              ...browser,\n            },\n            driverOptions.localBrowser\n          );\n\n          if (BROWSERSTACK_URL) {\n            driver\n              .executeScript(\n                `browserstack_executor: {\"action\": \"setSessionName\", \"arguments\": {\"name\": \"${project}: ${name}\"}}`\n              )\n              .catch((e) => console.warn(`Couldn't setNmae - ${e}`));\n          }\n\n          try {\n            // Run the passed test\n            await action(driver, percySnapshot);\n\n            if (BROWSERSTACK_URL) {\n              await driver\n                .executeScript(\n                  'browserstack_executor: {\"action\": \"setSessionStatus\", \"arguments\": {\"status\":\"passed\",\"reason\": \"Passed\"}}'\n                )\n                .catch((e) => console.warn(`Couldn't send success - ${e}`));\n            }\n          } catch (error) {\n            try {\n              // We need to try to tell Browserstack we have failed!\n              if (BROWSERSTACK_URL) {\n                await driver\n                  .executeScript(\n                    `browserstack_executor: {\"action\": \"setSessionName\", \"arguments\": {\"name\": \"${project}: ${name}\"}}`\n                  )\n                  .catch((e) =>\n                    console.warn(`Couldn't send session name - ${e}`)\n                  );\n                const script = `browserstack_executor: {\"action\": \"setSessionStatus\", \"arguments\": {\"status\":\"failed\",\"reason\": \"${error.message\n                  .replace(/(\\r\\n|\\n|\\r)/gm, \" \")\n                  .replace(/\"/gm, \"'\")}\"}}`;\n\n                await driver\n                  .executeScript(script)\n                  .catch((e) => console.warn(`Couldn't send failure - ${e}`));\n              }\n            } catch (e) {\n              console.log(\"error reporting the error?\");\n              console.log(e);\n            }\n            throw error;\n          } finally {\n            await driver\n              .quit()\n              .catch((e) => console.warn(`Couldn't quit - ${e}`));\n          }\n        } catch (err) {\n          console.error(\"Couldn't init test\");\n          console.error(err);\n          throw err;\n        }\n      },\n      timeout\n    );\n  };\n\n  return { test, wrapper, webdriver };\n};\n\nmodule.exports = init;\n"]}