Progress utility for e2e tests with Protractor

openedge, abl, progress, protractor, e2e, openedge-abl
npm install oe-test-agent@1.1.13


OE Test Agent

An e2e tool for Progress OpenEdge applications with Protractor

Quick start

The OE Test Agent was developed in order to make our e2e test for OpenEdge applications easier.

Our dev team was already familiar with Protractor, so we took advantage of that to create this project using only socket communication between JavaScript and OE and an external tool - also created by us - called "Robot".

In other words, the OE Test Agent acts as a web driver of Protractor, allowing it to interact with OpenEdge applications as a user would. We also built a set of TypeScript libraries for helping developers to manipulate widgets, properties and events of OpenEdge applications, so that you can easily write tests in a traditional behavior-driven development style.


npm i oe-test-agent



  • Solved a bug when using select to a value of a COMBO-BOX with LIST-ITEM-PAIRS.


  • Solved a bug when using select to a value of a RADIO-SET widget.


  • Solved a bug when using select to an invalid value.


  • Solved a bug when running an OE application without having the source (.p) in the PROPATH.
  • Solved a bug when taking a screenshot of a window.


  • The method takeScreenshot was changed to return the image filenames.
  • Created the method takeScreenshotFromProcess to take a screenshot from each window of a process.


  • Now it's possible to send a string value at windowSendKeys method.
  • Brazilian Portuguese titles are now supported at alertClick methods.
  • Now it's possible to send more than one title to Robot find a window - delimited by | characters.
  • Created the method takeScreenshot to take an OS screenshot and return the Base64 value from the image.
  • Now it's possible to update the default timeout value.


  • Solved a bud when using select method with a SELECT widget.

1.1.1, 1.1.0:


  • The delete method was redefined to expect a where clause and not an object anymore
  • The returns was changed to return only a Promise<boolean>


  • Solved a bug when enabling coverage

1.0.7, 1.0.8, 1.0.9, 1.0.10:

  • Solved a bug on the socket communication
  • Removed unused dependencies


  • Solved a bug where OEElement isElementValid method was always returning true
  • Improvements made at waitForWindow and waitForElement methods


  • Socket communication improvements
  • Created a method to return if an OEElement is valid or not
  • Created an OEAgent singleton instance to use at e2e that uses Page Objects


  • Removed unused dependency
  • Created Keys enum - to use with windowSendKeys
  • Created static attribute DEFAULT_TIMEOUT - to use with waitFor methods
  • ENTRY event is now fired when using select and check


  • Solved a bug when searching for elements using waitForElement or findElement
  • When executing selectRow for a empty BROWSE, no errors will be throw
  • Improvements on the socket communication
  • Changed return type to JavaScript's Promise instead of Protractor's promise.Promise
  • Included console messages when using "Robot"
  • Will set profiler's file only if none was defined


  • README.md changes


  • Documentation

Want to help?

You're welcome to open an issue to report bugs, suggest improvements on this GitHub or to submit a PR.

Other tools

In order to make this project work with all kinds of Progress OpenEdge applications, besides the socket communication, we had to build an auxiliary tool that we decided to call "Robot".


If you are familiar with Progress OE applications, you probably know that visual messages - with VIEW-AS ALERT-BOX attributes - block every other execution until the user closes the current message.

To solve that, we created "Robot.exe". This tool - built using "Auto It" - simulates a mouse click to the opened message and can also send keyboard events to any other Windows application that is currently open.

Heads up! You may need to sign "Robot.exe" with a valid certificate or add it to your antivirus whitelist.