Experience migrating from Jython to Remote library?


I have projects implement libraries in Java and run them with the Robot Framework Maven Plugin. There are many challenges with this approach, the main blocker being that the Maven Plugin is Jython based, thus Python 2, which is not supported by Robot Framework >=5 and more and more libraries.

Now I am wondering about a migration strategy: does someone have experience migrating Java libraries to Remote libraries?

And if yes, same catches to look out for?


I don’t have experience in migration, only as an user of a Remote library, SikuliLibrary.

I don’t have first hand experience, but off the top of my head I would assume the following:

  • Remote library will require additional deployment since you run RF tests and the library instance separately. Like how you keep a Selenium grid running for selenium tests, the remote library is your grid (or RemoteWebDriver server instance).

  • as per the previous bullet point, running as Java, separate from python, you loose out on any all-in-one integration of RF code and the Java code that you could have run via jython. I don’t think there’s that much feature set in this area.

  • you do gain more Java specific features that you could utilize via remote library since you are not constrained by jython. This may also mean you could run more Java code and libraries which may not have been able to run in jython.

  • you lose out on any calling of python code via jython when switching to Java remote library

  • you would need to find different plugins or tooling to execute the RF tests in python, and the Java remote libraries (the latter probably maven based). But it shouldn’t be hard to find such tooling, you just have to look around.

If the Java libraries that were run in jython are fairly simple, not call python code, or anything specific to jython, the migration should be pretty simple, you can load the Java library into the Java remote server instance, and call the keywords via the Remote Library interface. I would think the keyword calling convention remains the same, safe for anything specific to following the remote server interface. The Java code may need little to no revision. If anything it would be the test suite or test cases in RF that need updating to be calling remote library rather than a local (Java) library via the jython-based runner.