SAPUI5 User Interface Testing
Testing the $#*! out of your UI
Objective
- Ready to go test setup including
- Unit Tests
- Integration Tests
- CI-ready test automation using karma
- Visual regression testing using BackstopJS
in 30 minutes
Setup
- Create Project from SAP Web IDE Template "SAP Fiori Master-Detail Application" (metadata.xml)
- Sync via git or export
- npm init
- add server.js
- add server.js as main script
- npm start
- http://localhost:3000
test.html
- flpSandbox.html - Runs app in launchpad sandbox
- flpSandboxMockServer.html - Runs app in launchpad sandbox with mock data
- testsuite.qunit.html - Runs all tests
- unitTests.qunit.html - Runs all unit tests
- allTests.js - Loads/includes all unit tests
- opaTest.qunit.html - Runs all integration tests
- AllJourneys.js - Loads/includes all integration tests
Automation
Test Automation with karma
npm install --save-dev karma karma-openui5
npm install -g karma-cli
- add karma.conf.js
- adapt openui5 path
- add resourceRoots
- add files config
karma start
Add QUnit
-
npm install --save-dev karma-qunit qunitjs
- add to frameworks in karma.conf.js
be aware of qunit version
keep in sync with your SAPUI5 version
Add a Launcher
-
npm install --save-dev karma-chrome-launcher
- Add browsers config to karma.conf.js
Add Coverage Reporting
-
npm install --save-dev karma-coverage
- add preprocessors to karma.conf.js
- add reporters to karma.conf.js
Add JUnit Reporting
-
npm install --save-dev karma-junit-reporter
- add preprocessors to karma.conf.js
- add reporters to karma.conf.js
Add Chrome Headless
-
npm install --save-dev puppeteer
- add snippet below
-
karma start --browsers ChromeHeadless
// see https://github.com/karma-runner/karma-chrome-launcher
const ChromiumRevision =
require('puppeteer/package.json').puppeteer.chromium_revision;
const Downloader = require('puppeteer/utils/ChromiumDownloader');
const revisionInfo = Downloader
.revisionInfo(Downloader.currentPlatform(), ChromiumRevision);
process.env.CHROME_BIN = revisionInfo.executablePath;
Add npm scripts
"scripts": {
"test": "karma start --single-run
--browsers ChromeHeadless",
"tdd": "karma start"
}
npm test
see gist
BackstopJS
-
npm install -g backstopjs
-
backstop init
backstop.json
- set url
- use flpSandboxMockServer
- set serverDelay=0
- make sure UI is completly rendered
- delay = wait for ms
- readyEvent = wait for string logged to the console
- readySelectors = wait for a selector to appear
backstop test
SAPUI5 User Interface Testing
By Christian Schuff
SAPUI5 User Interface Testing
- 816