A Vitest Environment for unit testing UI5 code. Run your unit tests in a blazing fast way! Neither webserver nor browser are required. It runs in Node.js and uses jsdom to emulate browser environment.
See Vitest Environment and jsdom for more details.
Install vitest-environment-ui5, and vitest, as devDependencies:
$ npm i -D vitest vitest-environment-ui5Vitest uses node as default test environment. In order to change it to a different environment, vitest-environment-ui5, we will either have to define it in vitest.config.js or add a @vitest-environment docblock at the top of the test file. See Vitest Config for more details.
vitest-environment-ui5 builds jsdom from a local HTML file, no webserver required. The HTML file should contain the UI5 bootstrap, similar to this one: ui5 bootstrap.
You can change the UI5 bootstrap configuration as you wish, just like in your webapp. You can even open the file in a browser to see UI5 being loaded. However, no tests will be executed.
import { defineConfig } from "vitest/config";
export default defineConfig({
test: {
environment: "ui5",
environmentOptions: {
ui5: {
path: "test/ui5-unit-test.html", // Path to the HTML file containing UI5 bootstrap
timeout: 200, // UI5 load timeout in ms, default is 100ms
},
},
},
});/**
* @vitest-environment ui5
* @vitest-environment-options { "path": "test/ui5-unit-test.html" }
*/
import { expect, test } from "vitest";
test("UI5 is loaded", () => {
expect(window.sap).toBeTruthy();
expect(sap).toBeTruthy();
expect(sap.ui.getCore()).toBeTruthy();
expect(sap.ui.version).toBeTruthy();
});Run the tests with Vitest CLI:
$ vitestjsdom is not a real browser, but gets the job done for unit testing. All major javascript frameworks use it today: React, Vue, Svelte, and even our old friend jQuery. It has over 20M weekly downloads in NPM!
This package simplifies what was introduced in the blog post Modern JavaScript testing frameworks with Fiori/UI5 – Vitest
Mauricio Lauffer
This project is licensed under the MIT License - see the LICENSE file for details.