Cucumber's wire protocol allows step definitions to be implemented and invoked on any platform.

Communication is over a TCP socket, which Cucumber connects to when it finds a definition file with the .wire extension in the step_definitions folder (or other load path). Note that these files are rendered with ERB when loaded.

A Wire::DataPacket flowing in either direction is formatted as a JSON-encoded string, with a newline character signaling the end of a packet. See the specs for Cucumber::Wire::DataPacket for more details.

Cucumber sends the following request messages out over the wire:

Every message supports two standard responses:

Some messages support more responses - see individual scenarios for details.