UIVeri5 is an E2E testing framework for UI5-based applications. It uses WebDriverJS to drive a real browser and interacts with your application as a real user would. UIVeri5 is heavily inspired by Protractor and brings most (and more) of its benefits to UI5 applications.
- Automatic synchronization with UI5 app rendering so there is no need to add waits and sleeps to your test. Tests are reliable by design.
- Tests are written in synchronous manner, no callbacks, no promise chaining so are really simple to write and maintain.
- Full power of webdriverjs, protractor and jasmine - deferred selectors, custom matchers, custom locators.
- Control locators (OPA5 declarative matchers) allow locating and interacting with UI5 controls.
- Does not depend on testability support in applications - works with autorefreshing views, resizing elements, animated transitions.
- Declarative authentications - authentication flow over OAuth2 providers, etc.
- Console operation, CI ready, fully configurable or IDE.
- Covers full UI5 browser matrix: Chrome, Firefox, IE, Edge, Safari, iOS, Android.
- Works with browser cloud provider like SauseLabs
- Use generated snippets from Test Recorder that is build-in every UI5 app (from UI5 1.74)
- Open-source, fork and modify to fit your specific neeeds.
- NodeJS, version 8.0 or higher
UIVeri5 accepts a declarative configuration in a conf.js file. Configuration could be overriten with command-line arguments. All configuration options are explained in Configuration
Install globally:
$ npm install @ui5/uiveri5 -g
Create a clean folder that will contain your test and configuration files. UIVeri5 uses Jasmine as a test runner so the test resides in a spec.js file. Put the declarative configuration in the conf.js file.
- conf.js
exports.config = {
profile: 'integration',
baseUrl: 'https://openui5.hana.ondemand.com/test-resources/sap/m/demokit/master-detail/webapp/test/mockServer.html',
};
- masterdetail.spec.js
describe('masterdetail', function () {
it('should load the app',function() {
expect(browser.getTitle()).toBe('Master-Detail');
});
it('should display the details screen',function() {
element(by.control(