Bitrise’s buit-in karma jasmine testRunner seems out-of-date, every time gives error:
‘@angular-devkit/build-angular/plugins/karma’ karma plugin is meant to be used from within Angular CLI and will not work correctly outside of it.
It’s not hard to create a script step, things to do:
1. Download chrome.
brew update && brew cask install chromedriver google-chrome
Quite often, we got checksum error, possible cause, network cache, solution: directly run script from github repo, ideally from your forked repo to avoid cache.
brew cask install https://raw.githubusercontent.com/maodd/homebrew-cask/master/Casks/google-chrome.rb
2. Run ngTest, non-watch mode, so it can close itself after done.
./node_modules/@angular/cli/bin/ng test –watch=false –code-coverage
3. (Optional) Collect code coverage report.
The challenge here is Bitrise can deploy a folder as artifact, we need to find a way display report in single html file, also to keep the original multiple test files as many as possible.
We use a html-inline npm package to compact test report files, also zip the whole test result into a single file, and artifact both files.
if [ -d "$BITRISE_SOURCE_DIR/coverage" ]; then zip -r $BITRISE_DEPLOY_DIR/coverage.zip $BITRISE_SOURCE_DIR/coverage npm i -g html-inline html-inline -i $BITRISE_SOURCE_DIR/coverage/index.html -o coverage.html cp coverage.html $BITRISE_DEPLOY_DIR fi
The artifacts for each build looks like this:
Subfolder links inside the coverage report won’t work, but it’s good enough for us, until we can find a better html-package tool.