Create Virtual Sensor

Limited availability

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

The Create Virtual Sensor command of the WebDriver API creates a virtual sensor of a given type that 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, it replaces any real sensor of the same type for the top-level browsing context.

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, for example "ambient-light", "accelerometer", or "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 specifying the upper bound, in hertz, of the sampling frequency the virtual sensor supports.

minSamplingFrequency Optional

A number specifying the lower bound, in hertz, of the sampling frequency 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 or is not a supported virtual sensor type, a virtual sensor of that type already exists, or the supplied frequency values are invalid (for example, not a number or 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 as 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