mocha-teamcity-reporter
Teamcity reporter which makes it possible to display test results in real-time, makes test information
available on the Tests tab of the Build Results page.
- Breaking: Only supported on node.js 6 and above
- Breaking: Only Mocha version 6 and above is now supported
- Please remain on
mocha-teamcity-reporter@3
if this is an issue
- Please remain on
- New reporter option
ignoreHookWithName
to skip reporting for hooks with title containing some word (@DJ-Glock) - Added postfix _hook for flowId for hooks to ensure flowIds will never intersect.
- Implement 'hook end' event (@DJ-GLock)
- General maintenance and tidy up (@DJ-Glock)
- recordHookFailures option may not work as intended as mocha6 is now doing this itself
- NodeJs 6+
- Mocha 6+
- Web Browser supporting ES5
In your project run a npm install command:
npm install mocha-teamcity-reporter --save-dev
Basically, have your project's package.json be like:
{
"devDependencies": {
"mocha-teamcity-reporter": ">=2.0.0"
}
}
https://github.com/visionmedia/mocha/wiki/Third-party-reporters describes using third party reporters in mocha.
Then call mocha with:
mocha --reporter mocha-teamcity-reporter test
- Use
lib/teamcityBrowser
- Has option parsing stripped out for the moment
- Example use can be found in
test\browser
- Custom log function can be set with window.customLogFunction
Can set flowId like:
mocha test --reporter mocha-teamcity-reporter --reporter-options flowId=gobbledygook
Can set a top-level suite name, which will wrap all other suites.
This is useful for reading test output when running multiple suites in a single build
- Environment variable: MOCHA_TEAMCITY_TOP_LEVEL_SUITE=
- Reporter option: topLevelSuite=
To enable this please Please note this will probaly be made default in the next major version
- Environment variable: USE_STD_ERROR=true
- Reporter option: useStdError=true
Record failures for hooks such as before/after etc Please note this will probably be made default in the next major version
- Environment variable: RECORD_HOOK_FAILURES=true
- Reporter option: recordHookFailures=true
Display skip tests as ignored
- Environment variable: DISPLAY_IGNORED_AS_IGNORED=true
- Reporter option: displayIgnoredAsIgnored=true
This option should be used in pair with recordHookFailures. It allows you to skip reporting of hooks containing some word. Including root hooks.
- Environment variable: IGNORE_HOOK_WITH_NAME=HookNoReporting
- Reporter option: ignoreHookWithName=HookNoReporting
Example:
mocha test --reporter mocha-teamcity-reporter --reporter-options recordHookFailures --reporter-options ignoreHookWithName=HookNoReporting
For root hooks defined the following way:
exports.mochaHooks = () => {
return {
beforeEach: [
function beforeEachRootHookNoReporting() {
assert.strictEqual(1, 1);
}
],
afterEach: [
function afterEachRoot() {
assert.strictEqual(1, 1);
},
]
};
};
beforeEach hook beforeEachRootHookNoReporting() will not be reported as testStarted. But hook afterEachRoot() will be reported:
This will allow a hyperlink to appear to compare actual vs expected Please note this requires the error thrown in mocha to have the properties actual and expected. For example an assertionError has this
- Environment variable: ACTUAL_VS_EXPECTED=true
- Reporter option: actualVsExpected=true
This will be shown in teamcity like this:
AssertionError [ERR_ASSERTION]: 2 == 1
at Context.<anonymous> (test/test_data/simple.js:11:11)
======= Failed test run #10 ==========
Show diff between expected and actual values
- Set with reporter-options:
mocha test --reporter mocha-teamcity-reporter --reporter-options topLevelSuite=top-level-suite-name
mocha test --reporter mocha-teamcity-reporter --reporter-options useStdError=true
mocha test --reporter mocha-teamcity-reporter --reporter-options useStdError=true
- Set with environment variable
MOCHA_TEAMCITY_TOP_LEVEL_SUITE='top-level-suite-name' mocha test --reporter mocha-teamcity-reporter
This is not supported out of the box by this plugin but have a look at the following:
- Using https://github.com/stanleyhlng/mocha-multi-reporters
- https://stackoverflow.com/questions/11354203/is-it-possible-to-get-the-raw-build-log-from-a-teamcity-build/67635511#67635511
- Or view #60 for more details
- Project can be viewed at Pubic Teamcity at Jetbrains mocha reporter
- Thanks to JetBrains for hosting
- Always Welcome
- Would prefer if customisation is added it is controlled via mocha options or environment variables
- Only requirement is for code to pass linting and functional tests
mocha test/test_data/simple.js --reporter mocha-teamcity-reporter
or npm run test-teamcity-example
https://confluence.jetbrains.com/display/TCD10/Build+Script+Interaction+with+TeamCity