Skip to content

Latest commit

 

History

History
183 lines (119 loc) · 4.76 KB

File metadata and controls

183 lines (119 loc) · 4.76 KB

WebdriverIO Selenoid Standalone Service

Buddy service for wdio-selenoid-standalone-service that starts the Selenoid UI container to allow you to view all tests running inside Selenoid.

Note: This service requires wdio-selenoid-standalone-service to be used, it is not designed to connect to existing Selenoid grids

Benefits of Selenoid-Ui

  • View the actual desktop and browser for all running tests
  • Unlock the session and interact with the browser being controlled as if it was local
  • View all session logs for increased debugging

Installation

Before starting make sure you have Docker installed and wdio-selenoid-standalone-service added to your wdio.conf

The easiest way is to keep wdio-selenoid-standalone-ui-service as a devDependency in your package.json.

{
    "devDependencies": {
        "wdio-selenoid-standalone-ui-service": "^1.0.0"
    }
}

You can simple do it by:

npm install wdio-selenoid-standalone-ui-service --save-dev

or

yarn add wdio-selenoid-standalone-ui-service --dev

Instructions on how to install WebdriverIO can be found here.

Configuration

Service configuration

In order to use the service you need to add selenoid-standalone-ui to your service array and change the default wdio path prop to match selenoid

export.config = {
    // ...
    services: [
        ['selenoid-standalone-ui']
    ],
    // ...
};

The above assumes you are using the default settings from wdio-selenoid-standalone-service, if not, you can change them with the options below.

Capabilities configuration

After adding the service, you will need to add the selenoid:options prop to your browser capabilities. Open wdio.conf and adjust the capabilities array to include the following:

export.config = {
    // ...
    capabilities: [
        {
            // ...
            browserName: 'chrome',
            'selenoid:options': {
                enableVnc: true,
            },
            // ...
        },
    ],
    // ...
};

More information about Selenoid-Ui can be found here

Options

The following options can be added to the service options. They are all optional

skipAutoPullImage

On startup, skip pulling the version of selenoid-ui required if it's not already available locally

Type: Boolean

Default: false

selenoidContainerName

The name of the selenoid service container name to connect to

Type: String

Default: wdio_selenoid

selenoidUiContainerName

The name this service should give to the created Selenoid-UI container

Type: String

Default: wdio_selenoidui

selenoidUiVersion

If you want to always use a specific version of Selenoid-UI, you can fix the version here. If unset, this service will use the image tagged with latest-release

Type: String

Default: latest-release

port

Port which the Selenoid-Ui container should use to accept incoming connections

Type: Number

Default: 8080

selenoidPort

The port of the running Selenoid instance for Selenoid-UI to connect to

Type: Number

Default: 4444

Warning

The following options are experimental and can cause unexpected problems. Use with caution

dockerArgs

Any additional arguments you want to pass to docker run when starting the container. docker run options

Type: String[]

Default: null

selenoidUiArgs

Any additional arguments you want to pass to selenoid-ui when starting the container. docs

Type: String[]

Default: null

Example Options

export.config = {
    // ...
    path: 'wd/hub'
    services: [
        [
            'selenoid-standalone-ui', { 
                skipAutoPullImage: 'false,
                selenoidContainerName: 'wdio_selenoid',
                selenoidUiContainerName: 'wdio_selenoidui',
                selenoidUiVersion: 'latest-release',
                port: 8080,
                selenoidPort: 4444
            },
        ],
    ],
    // ...
};

Troubleshooting

Service cannot connect to Selenoid

Ensure you have added wdio-selenoid-standalone-service to wdio.conf

I cannot access the VNC session from the UI

Ensure you have added the required selenoid:options to your browser capabilities to enableVNC