Ecosyste.ms: Awesome

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

Awesome Lists | Featured Topics | Projects

https://github.com/webdriverio-community/wdio-safaridriver-service

WebdriverIO service to start & stop SafariDriver
https://github.com/webdriverio-community/wdio-safaridriver-service

safari wdio-plugin wdio-service webdriverio

Last synced: 2 months ago
JSON representation

WebdriverIO service to start & stop SafariDriver

Awesome Lists containing this project

README

        

⚠️ __DEPRECATION WARNING:__ This service got deprecated and is no longer maintained. If you use WebdriverIO __v8.14__ or higher. We recommend to remove the service as dependency and from your WebdriverIO configuration as it is no longer needed. For more information, please read [this blog post](https://webdriver.io/blog/2023/07/31/driver-management).

# WDIO SafariDriver Service [![CI](https://github.com/webdriverio-community/wdio-safaridriver-service/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/webdriverio-community/wdio-safaridriver-service/actions/workflows/ci.yml)

This service helps you to run the Safari browser seamlessly when running tests with the [WDIO testrunner](http://webdriver.io/guide/testrunner/gettingstarted.html). It uses the [`/usr/bin/safaridriver`](https://developer.apple.com/documentation/webkit/testing_with_webdriver_in_safari) that comes with Safari/OSX.

Note - this service does not require a Selenium server, but uses the `/usr/bin/safaridriver` to communicate with the browser directly. Obvisously, it only supports:

```js
capabilities: [{
browserName: 'safari'
}]
```

## Installation

The easiest way is to keep `wdio-safaridriver-service` as a devDependency in your `package.json`.

```json
{
"devDependencies": {
"wdio-safaridriver-service": "^1.0.0"
}
}
```

You can simple do it by:

```bash
npm install wdio-safaridriver-service --save-dev
```

Instructions on how to install `WebdriverIO` can be found [here.](http://webdriver.io/guide/getstarted/install.html)

## Configure Safari to Enable WebDriver Support

Safari’s WebDriver support for developers is turned off by default. How you enable it depends on your operating system.

### High Sierra and later

Run `safaridriver --enable` once. (If you’re upgrading from a previous macOS release, you may need to use sudo.)

### Sierra and earlier

1. If you haven’t already done so, make the Develop menu available. Choose Safari > Preferences, and on the Advanced tab, select “Show Develop menu in menu bar.” For details, see [Safari Help](https://support.apple.com/guide/safari/welcome).

2. Choose Develop > Allow Remote Automation.

3. Authorize `safaridriver` to launch the XPC service that hosts the local web server. To permit this, manually run `/usr/bin/safaridriver` once and follow the authentication prompt.

## Configuration

By design, only Safari is available, and will only work on Mac OS. In order to use the service you need to add `safaridriver` to your service array:

```js
// wdio.conf.js
export.config = {
// port to find safaridriver
port: 4447, // if you want to specify the port. Default is 4444
path: '/',
// ...
capabilities: [{
/*
* safaridriver can only handle 1 instance unfortunately
* https://developer.apple.com/documentation/webkit/about_webdriver_for_safari
*/
maxInstances: 1,
}],
services: [
['safaridriver', {
outputDir: './logs',
logFileName: 'wdio-safaridriver.log'
}]
],
// ...
};
```

## Options

### `port`
The port on which the driver should run on.

Example: `4444`
Type: `number`

### `args`

Array of arguments to pass to the safaridriver executable. `-p` will use wdioConfig.port if not specified.

Type: `string[]`

### `outputDir`

The path where the output of the Safaridriver server should be stored (uses the `config.outputDir` by default when not set).

Type: `string`

### `logFileName`

The name of the log file to be written in outputDir.

Type: `string`

----

For more information on WebdriverIO see the [homepage](http://webdriver.io).