diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index b72195b5..302f2a10 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -10,13 +10,13 @@ jobs: - ubuntu-latest - windows-latest browser: - - ChromeHeadless - - FirefoxHeadless + - chrome + - firefox include: - os: macos-latest - browser: Safari + browser: safari - os: windows-latest - browser: EdgeHeadless + browser: edge fail-fast: false runs-on: ${{ matrix.os }} steps: diff --git a/package.json b/package.json index 1558d838..111155af 100644 --- a/package.json +++ b/package.json @@ -51,7 +51,8 @@ "po2json": "latest", "sinon": "latest", "sinon-chai": "latest", - "@web/test-runner": "latest" + "@web/test-runner": "latest", + "@web/test-runner-webdriver": "latest" }, "keywords": [ "vnc", diff --git a/web-test-runner.config.mjs b/web-test-runner.config.mjs index 96901af2..e5a1e7cc 100644 --- a/web-test-runner.config.mjs +++ b/web-test-runner.config.mjs @@ -1,11 +1,74 @@ import { defaultReporter } from '@web/test-runner'; import { summaryReporter } from '@web/test-runner'; +import { webdriverLauncher } from '@web/test-runner-webdriver'; + +let browsers; +let launchers; + +if (process.env.TEST_BROWSER_NAME) { + browsers = process.env.TEST_BROWSER_NAME.split(','); +} else { + browsers = ['chrome', 'firefox']; + if (process.platform === 'win32') { + browsers.push('edge'); + } + if (process.platform === 'darwin') { + browsers.push('safari'); + } +} + +launchers = []; + +for (let browser of browsers) { + switch (browser) { + case 'chrome': + launchers.push(webdriverLauncher({ + capabilities: { + browserName: 'chrome', + 'goog:chromeOptions': { + args: ['headless', 'disable-gpu'] + }, + }, + })); + break; + case 'firefox': + launchers.push(webdriverLauncher({ + capabilities: { + browserName: 'firefox', + 'moz:firefoxOptions': { + args: ['-headless'] + } + }, + })); + break; + case 'edge': + launchers.push(webdriverLauncher({ + capabilities: { + browserName: 'edge', + 'ms:edgeOptions': { + args: ['--headless'] + } + }, + })); + break; + case 'safari': + launchers.push(webdriverLauncher({ + capabilities: { + browserName: 'safari', + }, + })); + break; + default: + throw new Error('Unknown browser: ' + browser); + } +} export default { nodeResolve: true, files: [ 'tests/test.*.js', ], + browsers: launchers, reporters: [ defaultReporter(), summaryReporter(),