https://github.com/totvs/oe-test-agent
An e2e tool for Progress OpenEdge applications with Protractor
https://github.com/totvs/oe-test-agent
e2e openedge openedge-abl protractor
Last synced: 6 months ago
JSON representation
An e2e tool for Progress OpenEdge applications with Protractor
- Host: GitHub
- URL: https://github.com/totvs/oe-test-agent
- Owner: totvs
- Created: 2018-07-31T18:06:51.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2022-12-09T01:45:10.000Z (about 3 years ago)
- Last Synced: 2024-08-11T00:28:25.646Z (over 1 year ago)
- Topics: e2e, openedge, openedge-abl, protractor
- Language: OpenEdge ABL
- Homepage:
- Size: 7.59 MB
- Stars: 4
- Watchers: 15
- Forks: 5
- Open Issues: 12
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# 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**](https://www.protractortest.org), 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"](#robotexe).
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](https://www.typescriptlang.org) 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.
## Installation
```bash
npm i oe-test-agent
```
## Changelog
### **1.1.13**
- Solved a bug when using `select` to a value of a `COMBO-BOX` with `LIST-ITEM-PAIRS`.
### **1.1.7**
- Solved a bug when using `select` to a value of a `RADIO-SET` widget.
### **1.1.6**
- Solved a bug when using `select` to an invalid value.
### **1.1.5**
- 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.
### **1.1.4**
- The method `takeScreenshot` was changed to return the image filenames.
- Created the method `takeScreenshotFromProcess` to take a screenshot from each
window of a process.
### **1.1.3**
- 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.
### **1.1.2**
- Solved a bud when using `select` method with a `SELECT` widget.
### **1.1.1**, **1.1.0**:
#### **BREAKING CHANGES**
- The `delete` method was redefined to expect a where clause and not an object anymore
- The returns was changed to return only a `Promise`
### **1.0.11**:
- 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
### **1.0.6**:
- Solved a bug where OEElement `isElementValid` method was always returning true
- Improvements made at `waitForWindow` and `waitForElement` methods
### **1.0.5**:
- 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
### **1.0.4**:
- 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`
### **1.0.3**:
- 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
### **1.0.2**:
- README.md changes
### **1.0.1**:
- 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".
### Robot.exe
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"](https://www.autoitscript.com) - 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.