A Node.js shim for XSEngine tests

Downloads in past


3.2.2a year ago2 years agoMinified + gzip package size for @sap/xsjs-test in KB


Unit test framework for the compatibility layer (XS runtime)
Simple steps to use xsjs-test in your project:
  • Declare a dev dependency to @sap/xsjs-test in your XSJS application project (package.json)
  • Your tests are in folder test/ parallel to package.json and lib/
  • Configure a xstest script in your application package.json which runs xstest script
  • Run with npm run xstest


1) Dev dependency to @sap/xsjs-test Please verify which version of @sap/xsjs-test is released and refer to it accordingly. Dev dependency means that @sap/xsjs-test will be installed only in local dev installation, not in productive installation. Another option would be to install @sap/xsjs-test globally on your PC:
npm install -g @sap/xsjs-test
Then you do not need to include it in dev dependency, it is visible everywhere on your workstation.
2) Test folder Normally xsjs runtime files are under xsjs/ folder. So following paths are expected: <>/xsjs/package.json <>/xsjs/lib/ <>/xsjs/test/ The last path is where the tests are expected. Of course you are free to put the tests in another folder, but then a special configuration is required.
3) Test script There is a normal binary script defined in bin folder. The normal way would be to define a script in the application package.json
"scripts": {
  "xstest" : "xstest"

4) Test execution
npm run xstest

5) Example configuration in file ./test/xstest.json
    test: {
        format: "xml", // optional, default: "html"
        pattern: ".*[Tt]Test", // optional, default: "".*[Tt]Test"
        reportdir: "test results folder", // optional, default: "."
        filename: "test results file name without extension" // optional, default: "report"
    coverage: {
        reporting: {
            reports: ["json"] // default: "html"
        dir: "coverage results folder", // optional, default: "{test.reportdir}/coverage"
        filename: "coverage results file name without extension" // optional, default "coverage"

Known Restrictions

  • jasmine.callHTTPService() (see http://help.sap.com/hana/SAPHANAXSUnitJavaScriptAPIReferenceen/jasmine.html ) is not supported because of the different underlying architecture of XSA. Instead of writing integration tests going through http, you should rely on pure unit tests to check the expected responses.
  • jasmine.tags is not supported.
  • jasmine.addProfile() is not supported.
  • describe( ... ).x() is not supported.
  • spys on globals like Date, Array, etc. won't work because each xsjslib is executed in a separate context. Try to stub/spy/mock via local members of your test instead.
  • jasmine.hdbConnection not supported (use jasmine.dbConnection)
  • jasmine.log is not supported (use console.log)
  • describeDB() and xdescribeDB() are not supported because they were already deprecated before (see http://help.sap.com/hana/SAPHANAXSUnitJavaScriptAPIReferenceen/global.html#describeDb )
  • jasmine expect().toThrowError() is not supported (use toThrow(new Error()) instead)
  • tableUtils::copyUserSchema() (http://help.sap.com/hana/SAPHANAXSUnitJavaScriptAPIReferenceen/module-tableUtils-TableUtils.html) are not supported on HDI because there is a) no schema to copy from and b) by default no writable user schema
  • tableUtils.fillFromCsvFile() is not supported. Use HDI .tableimport files instead to fill your HDI container with test data.
  • mockstar is discouraged/deprecated. Use HDI containers instead. If you need to reference larger test data, use HDI synonyms.


This package is provided under the terms of the SAP Developer License Agreement.