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.
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.
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 in section Remote Library Interface. The default port used by the remote protocol is 8270 and it has been registered by IANA for this purpose.
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.
Following generic remote servers are available as separate projects. See the project pages for installation and usage instructions.
|Language / Platform||Remote Server|
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.