diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml index 40aef8a03..02638e413 100644 --- a/.github/workflows/node.js.yml +++ b/.github/workflows/node.js.yml @@ -11,7 +11,7 @@ on: jobs: build: - runs-on: ubuntu-latest + runs-on: self-hosted-arc strategy: matrix: diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index bc5e3b940..23f62c2ec 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -15,7 +15,7 @@ permissions: jobs: publish: name: Publishing to NPM - runs-on: ubuntu-latest + runs-on: self-hosted-arc steps: - name: Checkout uses: actions/checkout@v4 diff --git a/.github/workflows/standalone-e2e.yml b/.github/workflows/standalone-e2e.yml index 5a551dffa..058a2da0e 100644 --- a/.github/workflows/standalone-e2e.yml +++ b/.github/workflows/standalone-e2e.yml @@ -6,7 +6,7 @@ on: jobs: integration-test: - runs-on: ubuntu-latest + runs-on: self-hosted-arc strategy: matrix: node-version: [20.18.1] diff --git a/test/integration/standalone/constants.ts b/test/integration/standalone/constants.ts new file mode 100644 index 000000000..edc9bd327 --- /dev/null +++ b/test/integration/standalone/constants.ts @@ -0,0 +1,20 @@ +import _ from "lodash"; +import { BrowserName } from "../../../src/browser/types"; + +export const BROWSER_NAME = (process.env.BROWSER || "chrome").toLowerCase() as keyof typeof BrowserName; + +export const BROWSER_CONFIG = { + desiredCapabilities: { + browserName: BROWSER_NAME, + }, + headless: true, + system: { + debug: Boolean(process.env.DEBUG) || false, + }, +}; + +if (/chrome/i.test(BROWSER_NAME)) { + _.set(BROWSER_CONFIG.desiredCapabilities, "goog:chromeOptions", { + args: ["--no-sandbox", "--disable-dev-shm-usage"], + }); +} diff --git a/test/integration/standalone/preload-browser.fixture.ts b/test/integration/standalone/preload-browser.fixture.ts new file mode 100644 index 000000000..6dadebc0c --- /dev/null +++ b/test/integration/standalone/preload-browser.fixture.ts @@ -0,0 +1,8 @@ +import { launchBrowser } from "../../../src/browser/standalone"; +import { BROWSER_CONFIG } from "./constants"; + +exports.mochaGlobalSetup = async function (): Promise { + // Here we trigger downloading browsers before running tests + const browser = await launchBrowser(BROWSER_CONFIG); + await browser.deleteSession(); +}; diff --git a/test/integration/standalone/standalone.test.ts b/test/integration/standalone/standalone.test.ts index 3b956450a..b388bd62a 100644 --- a/test/integration/standalone/standalone.test.ts +++ b/test/integration/standalone/standalone.test.ts @@ -1,7 +1,6 @@ import { strict as assert } from "assert"; -import _ from "lodash"; import { launchBrowser } from "../../../src/browser/standalone"; -import { BrowserName } from "../../../src/browser/types"; +import { BROWSER_CONFIG } from "./constants"; describe("Standalone Browser E2E Tests", function () { this.timeout(25000); @@ -16,8 +15,6 @@ describe("Standalone Browser E2E Tests", function () { let browser: WebdriverIO.Browser; - const browserName = (process.env.BROWSER || "chrome").toLowerCase() as keyof typeof BrowserName; - after(async function () { if (browser) { await browser.deleteSession(); @@ -25,23 +22,7 @@ describe("Standalone Browser E2E Tests", function () { }); it("should launch browser and access a website", async function () { - const browserConfig = { - desiredCapabilities: { - browserName, - }, - headless: true, - system: { - debug: Boolean(process.env.DEBUG) || false, - }, - }; - - if (/chrome/i.test(browserName)) { - _.set(browserConfig.desiredCapabilities, "goog:chromeOptions", { - args: ["--no-sandbox", "--disable-dev-shm-usage"], - }); - } - - browser = await launchBrowser(browserConfig); + browser = await launchBrowser(BROWSER_CONFIG); assert.ok(browser, "Browser should be initialized"); assert.ok(browser.sessionId, "Browser should have a valid session ID");