What is New in MarathonITE 4.0?
New Features
Selenium/WebDriver bindings for test scripts.
MarathonITE 4.0 uses open source Marathon Java Driver for executing the scripts. Marathon Java Driver is an implementation of JsonWireProtocol for Java/Swing applications.
Faster execution of test scripts
There are two Java Virtual Machine instances used by MarathonITE. One is used by MarathonITE itself and the other one is used to launch the Application Under Test (AUT). In V3, we used to load the script runtime within the AUT VM. So, each time a test is executed, a script runtime is initialized and loaded into the VM. This adds to the execution time of a test script. In V4, the script runtime is loaded in Marathon VM itself. Besides reducing the execution time of the scripts, this also helps in avoiding the conflicting JAR version (JAR hell) sometimes experienced by Marathon users.
Better reporting through Allure framework
When executing scripts in batch mode, you can use
-allure
option on command line to generate reports using allure reporting framework. Now MarathonITE supports adding extra meta data to the test scripts.Distributed test execution through Marathon Grid
Centralized object repository
Compatibility with MarathonITE 3.0
Though we strived to keep MarathonITE 4.0 to be backward compatible with MarathonITE 3.0 - there are places where this wasn't technically feasible.
Dropped support for Jython
MarathonITE 4.0 doesn't support Jython for scripting.
get_component
returns aWebElement
not ajava.awt.Component
Since Marathon V3, the script runtime is in the AUT VM, we are able to return the Java component with
get_component
. However, this is not possible with Marathon V4. As an alternative, you can useexecute_script
to perform operations on components. execute_script accepts Java code block and returns a value.JInternalFrame
needs an entry in the object mapIn MarathonV3, a JInternalFrame is searched using the name passed in the frame() method call. In MarathonV4, an entry for JInternalFrame should be available in object map for frame() method to work.
If your application is using JInternalFrame, you can do the following:
- Create a new project, record the effected portion. Find the recognition properties for the JInternalFrame component.
- Add an entry for the frame() in the object map entry for the old project.