An open API service indexing awesome lists of open source software.

https://github.com/google/karma-webkit-launcher

A Karma plugin. Launcher for Webkit.
https://github.com/google/karma-webkit-launcher

epiphany karma karma-plugin safari webkit

Last synced: 13 days ago
JSON representation

A Karma plugin. Launcher for Webkit.

Awesome Lists containing this project

README

        

# karma-webkit-launcher

[![Build status: Playwright (MacOS)](https://github.com/google/karma-webkit-launcher/actions/workflows/playwright_macos_tests.yml/badge.svg)](https://github.com/google/karma-webkit-launcher/actions/workflows/playwright_macos_tests.yml)
[![Build status: Playwright (Ubuntu)](https://github.com/google/karma-webkit-launcher/actions/workflows/playwright_ubuntu_tests.yml/badge.svg)](https://github.com/google/karma-webkit-launcher/actions/workflows/playwright_ubuntu_tests.yml)
[![Build status: Playwright (Windows)](https://github.com/google/karma-webkit-launcher/actions/workflows/playwright_windows_tests.yml/badge.svg)](https://github.com/google/karma-webkit-launcher/actions/workflows/playwright_windows_tests.yml)
[![Build status: Epiphany](https://github.com/google/karma-webkit-launcher/actions/workflows/epiphany_tests.yml/badge.svg)](https://github.com/google/karma-webkit-launcher/actions/workflows/epiphany_tests.yml)
[![NPM version](https://img.shields.io/npm/v/karma-webkit-launcher.svg)](https://www.npmjs.org/package/karma-webkit-launcher)

[![NPM](https://nodei.co/npm/karma-webkit-launcher.png?downloads=true&downloadRank=true)](https://nodei.co/npm/karma-webkit-launcher/)

Karma Launcher for Apple's Webkit

## Installation

The easiest way is to keep karma-webkit-launcher as a devDependency in your package.json, by running

```bash
npm install karma-webkit-launcher --save-dev
```

## Supported WebKit-Launcher

This karma-webkit-launcher provides the following browser launcher.

| Karma Runner Browsers | ENV | Type | CI note |
| --------------------- | ------------------- | ----------------------------------------------------------------- | -------------- |
| WebKit | WEBKIT_BIN | Native / [Playwright][playwright] / [Safari][safari] (MacOS only) | - |
| WebKitHeadless | WEBKIT_HEADLESS_BIN | Native / [Playwright][playwright] | - |
| Safari | SAFARI_BIN | Native MacOS only | not supported |
| Epiphany | EPIPHANY_BIN | Native Ubuntu only | needs xvfb-run |

## Configuration

For the configuration just add `Webkit` or `WebkitHeadless` in your browser list.

```js
// karma.conf.js
export default (config) => {
config.set({
browsers: ['Webkit'], // You may use 'WebkitHeadless' or other supported browser
```

You can pass the list of browsers as a CLI argument too:

```bash
karma start --browsers Webkit
```

## Headless Webkit with Playwright / Playwright-Webkit

[Playwright](https://github.com/microsoft/playwright) is a Node.js library to automate Chromium, Firefox and WebKit with a single API. Playwright is built to enable cross-browser web automation that is ever-green, capable, reliable and fast.

Headless execution is supported for all the browsers on all platforms.
Check out [system requirements](https://playwright.dev/docs/intro/#system-requirements) for details.

If no environment variable is set and Playwright is available, it will be automatically utilized.
Additionally, if you exclusively intend to perform WebKit testing, you can install 'playwright-webkit' exclusively for that purpose.

### Example Usage

#### Installing Playwright and karma-webkit-launcher

```bash
npm install playwright karma-webkit-launcher --save-dev
```

#### Example Karma configuration

```js
// karma.conf.js
module.exports = function (config) {
config.set({
browsers: ["WebkitHeadless"],
});
};
```

### Manually define Playwright executable

To force the use of Playwright over an local Webkit instance, just overwrite the `WEBKIT_HEADLESS_BIN` or `WEBKIT_BIN` environment variable.

```js
// karma.conf.js
import playwright from "playwright";
process.env.WEBKIT_HEADLESS_BIN = playwright.webkit.executablePath();

module.exports = function (config) {
config.set({
browsers: ["WebkitHeadless"],
});
};
```

## Advanced Topics

### Detected if Safari or Playwright is used

In some instances it is helpful to detect if Playwright or a real Safari Browser is used.
For this reason it's possible to detect which kind of browser is currently running the tests over this runner.

```javascript
if (
new URLSearchParams(document.referrer || window.location.search).get(
"test_browser"
) == "Playwright"
) {
// Playwright specific tests
}
```

See: [Playwright Karma Test](test/playwright_test.js)

```javascript
if (
new URLSearchParams(document.referrer || window.location.search).get(
"test_browser"
) == "Safari"
) {
// Safari specific tests
}
```

See: [Safari Karma Test](test/safari_test.js)

For more information on Karma see the [Karma Homepage][karma].

[karma]: https://karma-runner.github.io/
[playwright]: https://playwright.dev/
[safari]: https://www.apple.com/safari/