Create Virtual Sensor

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

Want more browser support for this feature? Tell us why.

The Create Virtual Sensor command of the WebDriver API creates a virtual sensor of a given type, which overrides the platform sensor of the same type. This lets tests exercise the Sensor APIs with predetermined readings instead of relying on real hardware. While the virtual sensor exists, new connections to a sensor of the same type in the top-level browsing context use the virtual sensor instead of the platform sensor.

Note: Sensor instances of the same type can coexist and use different device sensors. A sensor already connected to a real, hardware sensor continues receiving readings from it and switches to the virtual sensor only if it connects again.

Syntax

Method URI template
POST /session/{session id}/sensor

URL parameters

session id

Identifier of the session.

Payload

The input is an object:

type

A string identifying the virtual sensor type to create. Possible values include "ambient-light", "accelerometer", and "gyroscope". Only one virtual sensor of a given type can exist at a time in the top-level browsing context.

connected Optional

A boolean indicating whether the sensor is able to provide readings. Defaults to true.

maxSamplingFrequency Optional

A number, in hertz, specifying the upper bound of the sampling frequency that the virtual sensor supports.

minSamplingFrequency Optional

A number, in hertz, specifying the lower bound of the sampling frequency that the virtual sensor supports.

Return value

null if successful.

Errors

invalid session id

Session does not exist.

invalid argument

The type is not a string, is not a supported virtual sensor type, or a virtual sensor of that type already exists. The specified sampling frequency values are invalid if they are not a number or if minSamplingFrequency is greater than maxSamplingFrequency.

Examples

Creating a virtual sensor

With a WebDriver server running on localhost:4444, assume an active session has been created. To create a virtual AmbientLightSensor, send its type in the request payload, replacing ID with the sessionId from the New Session response:

bash
curl -i -H "Content-Type: application/json" \
  -d '{"type": "ambient-light"}' \
  http://localhost:4444/session/ID/sensor

The server responds with a null value to indicate success:

http
HTTP/1.1 200 OK
content-type: application/json; charset=utf-8

{"value":null}

Specifications

Specification
Generic Sensor API
# create-virtual-sensor-command

Browser compatibility

See also