Introduction to the remote interface with a list of available remote servers

README.rst

Remote library interface

This project exists to give a high level introduction to Robot Framework remote library interface and to list the available remote servers.

Introduction

The remote library interface allows Robot Framework test libraries to be run as external processes. An important use case for this support is running test libraries on different machines than where Robot Framework itself is executed. This allows interesting possibilities for distributed testing.

Another big use case is implementing test libraries using other languages that Robot Framework supports natively. In practice test libraries can be implemented using any language that supports the XML-RPC protocol that the remote interface uses for communication. Many languages and platforms are supported already, and implementing support for new languages or for new usages is pretty straightforward.

Architecture

The remote interface consists of the Remote library, remote servers and actual test libraries running behind these servers. The high level architecture is illustrated in the picture below.

remote.png

The Remote library is one of Robot Framework's standard libraries and thus automatically installed with the framework. It does not have any keywords of its own, but instead works as a proxy between Robot Framework and remote servers.

Remote servers expose the keywords provided by the actual test libraries to the Remote library. The Remote library and remote servers communicate using a simple remote protocol on top of an XML-RPC channel. The remote protocol and the whole remote library interface are described in detail in the Robot Framework User Guide.

How remote servers interact with the actual test libraries depends on the language and the remote server design. See the implementation of the available remote servers below for concrete examples.

It is also possible to create solutions that combine a remote server and one or more libraries together into a single distribution. For example, RemoteSwingLibrary bundles SwingLibrary, jrobotremoteserver and also the Remote library itself, and its users do not even need to know that they use the remote interface.

Available remote servers

Following generic remote servers are available as separate projects. See the project pages for installation and usage instructions.

Language / Platform Remote Server
Python PythonRemoteServer
Java jrobotremoteserver
Ruby robot-remote-server-rb
.NET nrobotremote
Clojure robot-remote-server-clj
Perl plrobotremoteserver
node.js node-robotremoteserver
PHP phrrs

Please submit an issue and/or pull request to this project if you have created a new remote server or existing information needs to be updated.