UNPKG

aft-mocha-reporter

Version:

Automated Functional Testing (AFT) Reporter for use with Mocha Test Framework

56 lines (50 loc) 3.27 kB
# AFT-Mocha-Reporter a Mocha `Reporter` integration for AFT providing support for AFT plugins, configuration and helpers ## Installation `> npm i aft-mocha-reporter` ## Mocha Configuration using this `Reporter` requires either calling the `mocha` command with the following argument `--reporter=aft-mocha-reporter` or from within a `.mocharc.json` file like the following: ```json // .mocharc.json { ... "reporter": "/path/to/aft-mocha-reporter.js", ... } ``` ## AFT Helpers this package comes with two helper classes that can be utilised from within your Mocha specs to make use of AFT features. ### `AftMochaTest` the `AftMochaTest` class extends from the `AftTest` class providing the ability to parse the Spec name for any referenced Test. each Test ID must be surrounded with square brackets `[ABC123]`. you can then either directly call the `AftMochaTest.shouldRun()` async function which will determine if your test should be run based on any AFT `PolicyPlugin` instances referenced in your `aftconfig.json` file or you can call `aftMochaTest(this, testFunction)` which will perform the `AftMochaTest.shouldRun()` call and mark the test as skipped if it should not be run. using the `AftMochaTest` class would look like the following: > **!!WARNING!!** using arrow functions in your Spec definition **IS NOT SUPPORTED** if using `AftMochaTest` because it removes the `this` scope ```javascript describe('YourTestSuite', () => { // use `aftMochaTest` to report results it('can check if test [C1234] should be run', async function() { await aftMochaTest(this, async (v: AftMochaTest) => { // calls `v.test.skip()` if should not be run await v.reporter.error('we should never get here if C1234 should not be run'); const result = await doStuff(); await t.verify(result, equaling('expected')); }); // handles submitting the result to any AFT Reporter Plugins }); // use `AftMochaReporter` to report results it('can check if test [C2345] should be run', async function() { const aft = new AftMochaTest(this); const shouldRun = await aft.shouldRun(); if (shouldRun.result !== true) { await aft.pending(shouldRun.message); // marks test as skipped } const result = await doStuff(); expect(result).to.equal('expected'); // AftMochaReporter handles submitting the result to any AFT Reporter Plugins }); }); ``` which would output the following to your console and any AFT `ReportingPlugin` instances referenced in your `aftconfig.json` if the test ID should not be run: ```text 17:52:45 - [YourTestSuite can check if test [C1234] should be run] - WARN - none of the supplied tests should be run: [C1234] 17:52:45 - [YourTestSuite can check if test [C1234] should be run] - WARN - test skipped ``` ## NOTES - the `AftMochaTest` constructors expects to be passed a valid `scope` containing reference to the currently executing `Mocha.Test`. typically this will be the `this` object within your Spec - this Mocha `Reporter` works in both parallel and sequential execution modes, but you **MUST ALWAYS** use a non-arrow function for your Spec definition if you are using `AftMochaTest` class within your Spec