rfremoteserver

Robot Framework remote server written in Node.js

rfremoteserver

Robot Framework Remote Server written in Node.js, loosely based on https://github.com/mkorpela/RoboZombie and https://github.com/comick/node-robotremoteserver

Installation

npm install rfremoteserver

Usage

Create a Object like the following and pass it to an instance of RemoteServer.

var RemoteServer = require('rfremoteserver');
 
var SimpleKeywordLibrary = {
  get_files_in_directory: {
    docs: "returns files in a directory",
    args: ["dir"],
    implfunction(paramscallback){
      var self = this;
      var ret = {}
      fs.readdir('.', function(errfiles){
        ret.return = err || files;
        if (err) return self.fail(ret, callback);
        return RemoteServer.pass(ret, callback)
      });
    }
  }
};
 
var server = new RemoteServer({host: "localhost", port: 8270}, [SimpleKeywordLibrary]);
server.start_remote_server();

In the above example, the library is just a JavaScript object with each property being another JavaScript object. These properties are the keywords. They are also Objects and need to have three properties.

  • docs: String contain the keyword documentation

  • args: Array of the arguments that keyword accepts. use ["*args"] if your keyword accepts more than one argument.

  • impl: The actual keyword function. This function is what gets bound as an xmlrpc method callback hence its args are always params & callback. This function will need to call the callback function with an object that contains the following properties

      { 
        return: 'a return falue',
        status: 'PASS',    // or FAIL
        output: 'stdout'
      }
    

    There is two helper functions on RemoteServer pass and fail that set the status property

RemoteServer instance option Object should contain the following properties

  • host : hostname
  • port : port number to start listening on
  • timeout : the amount of time before the server forcibly timesout the keyword

Example test case file for Robot Framework to use the above remote keyword library

*** Variables ***
${PORT}    8270
 
 
*** Settings ***
Library    Remote    http://localhost:${PORT}
 
*** Test Cases ***
 
Test Keyword
    ${ret}=   File Should Exist  ${CURDIR}  testcases.txt
    Should Contain   ${files}  test