Are you feeling like your testing efforts are sucking the life out of you? Perhaps the Oxygen framework can help.
But why this test tool over another?
Why Another Framework?
Individuals initially create frameworks out of a specific need that they themselves have, so I'm curious to know what the reason was for them to create yet another framework.
Nachum Dimer, CEO and Cofounder of CloudBeat, explained to me in a recent TestTalks episode that in today's modern world, QA engineers are stuck in their tools choices.
There are plenty of developer-oriented frameworks—JUnit, NUnit, MSTest, etc., but those frameworks are usually complicated for QA engineers to work with because their focus is on unit testing.
These developer-centric tools can also be challenging to integrate with UI functional and API testing.
On the flip side, there are frameworks which are much more QA oriented, like Cypress, which is well-suited for developers but also helps automation and manual testers start working with automation.
At its core, however, it was developed to be a developer’s tool.
A Test Tool Gap for QA
Nachum feels there must be a better way to create a framework that, on one side, is simple enough for someone from with a non-programmer background, yet powerful enough for more advanced testers.
That would mean that if you are more of a programmer, you can write more advanced tests and add more layers to your automation; not just UI but things like API testing, database testing, and IoT testing as well.
Among the existing frameworks, there may be some that are simple and built for UI testing, but less suitable for comprehensive integration testing. There are also development frameworks that are less ideal for UI testing and classical QA engineering.
In essence, the folks at Oxygen saw a gap, and wanted to help QA move forward and adapt to CI/CD processes in order to shift-left.
Oxygen was created while keeping in mind the entire spectrum of users, developers, QA engineers, DevOps, and even IT for production monitoring.
The Two Parts of Oxygen
Oxygen is divided into two parts.
The first part is using it as a simple framework. Just like any other library, you can take your favorite IDE and use it.
The second part is the Oxygen IDE.
The IDE portion allows for less skilled or less technical people to be able to record tests out of the box, and to debug tests without the need to write compilation-based languages or architecture, as in the case of languages like you use Java or C# Sharp.
Here is an example I created of what a record and playback script looks like:
Notice how it decided the best locator to use, but also showed all the other options. (*The new Selenium IDE does something similar, but I think Selenium IDE can also dynamically use the other options at run time if it can’t find the original locator type.)
What Programming Language Does it Use?
The team selected JavaScript for its framework language.
You don't need a programming language, though, since Oxygen also uses a hybrid, keyword-type approach to script creation.
Because of the limitations of using a pure, codeless solution, Nachum explained that his team decided to combine some elements of a codeless approach with some from a coding approach.
How is Oxygen Different from Selenium IDE?
In contrast to the Selenium IDE, which is a kind of recorder and generator for other languages, Oxygen was designed to be a fully-integrated solution.
While you’re using it to record your tests it generates straightforward JavaScript, which looks like keywords. So even if you don't know JavaScript, you can start using the framework as your all-in-one, standalone testing solution.
For those of you who are familiar with QTP/UFT, Oxygen also has an Object Repository where you can store your element locations. This makes it easy to simplify your code maintenance and make changes if your elements/UI ever change all in one place.
Oxygen Wrapper On Top of Selenium and Appium
Unlike tools like Cypress, Oxygen is fully compatible with Selenium and Appium. It's a wrapper framework, and it doesn’t use a proprietary engine like Cypress.
It works 100% with the automation API’s that are considered the industry standards. This approach also means that the framework supports every browser that Selenium supports as well as Page Objects.
On top of that, there are also extra modules that are not typically found in other frameworks, like the ability to test:
- API
- IoT
- Soap
- Database
- SMS
When you start typing it in the IDE, you should use IntelliSense to show valid options. For example, if you have a Soap service, you also need to test in your flow; simply type “Soap” and it will show all available options:
This is really cool, because you can do email testing, and even IOT testing in the same test flow.
This makes it flexible enough that you can do things like connect your IoT device with a serial port to Oxygen and create an integration test.
Some customers use Oxygen to simulate certain actions on a mobile device, then go to their IoT device (which is operated by a mobile app), and verify what they did actually happened on the physical device.
Oxygen is more than just a Web automation tool. Think of it as a UI and integration testing solution, kind of like Selenium on steroids.
As you know, working with pure Selenium and Appium can be challenging.
That’s why the added layers of this framework’s supply hooks make it easier to do automated waits for different conditions, including the dreaded Stale Element error.
The tool automatically handles these tricky wait situations.
There are also a substantial number of add-ons to help you overcome typical Selenium API issues.
Integrations with CI/CD
Oxygen has a CLI command line interface that allows you to integrate and run your tests with your CI and build tools.
Results are stored in HTML, XML, and Excel reports and include screenshots.
Can You Feel Comfortable Investing in Oxygen?
Oxygen is a somewhat mature project.
It's been in development or almost four years now, and it's used by over 400 companies worldwide.
Unfortunately, it still doesn't have a big contribution community because they never actually invested in promoting it until early 2019.
Before then, the team focused primarily on the Israeli market, which was where their commercial operations were located.
In the past, many new frameworks have disappeared over time, but CloudBeat, which created Oxygen, is a commercial organization.
They have a paid-for test management platform, so they utilize funds from their commercial activities to help sponsor and fund the fully open-source Oxygen project.
Should You Use Oxygen?
First, it's quite suitable for companies or people who don't currently have any framework. Or if you have lots of tests that require integration testing.
Oxygen wasn’t created to replace an existing framework; if you already have, for example, a JUnit framework that you're happy with, then that’s fine.
But if you’re starting fresh and want a simple, all-in-one, standalone tool in one automation framework, Oxygen may be just what you’re looking for.