jasmine-allure-reporter vs jest-allure vs mocha-allure-reporter
Allure Test Reporting Integration for JavaScript Test Runners
jasmine-allure-reporterjest-alluremocha-allure-reporterSimilar Packages:

Allure Test Reporting Integration for JavaScript Test Runners

jasmine-allure-reporter, jest-allure, and mocha-allure-reporter are integration packages that connect JavaScript test runners (Jasmine, Jest, and Mocha, respectively) to the Allure test reporting framework. Allure generates rich, interactive HTML reports that visualize test execution timelines, group tests by features or epics, display attachments (like screenshots or logs), and provide detailed failure analysis. These reporters translate test events and metadata from their respective test frameworks into Allure's internal data model, enabling developers to produce standardized, professional-grade test reports regardless of their underlying test runner.

Npm Package Weekly Downloads Trend

3 Years

Github Stars Ranking

Stat Detail

Package
Downloads
Stars
Size
Issues
Publish
License
jasmine-allure-reporter034-239 years agoISC
jest-allure011622.8 kB35-MIT
mocha-allure-reporter04526.1 kB0-Apache-2.0

Allure Reporting for JavaScript Test Runners: Jasmine, Jest, and Mocha Compared

Allure is a flexible, open-source test reporting framework that generates rich, interactive test reports with detailed timelines, attachments, steps, and failure analysis. In the JavaScript ecosystem, integrating Allure into your testing workflow requires a reporter plugin specific to your test runner. The three main options — jasmine-allure-reporter, jest-allure, and mocha-allure-reporter — each bridge their respective test frameworks to Allure’s data model. However, they differ significantly in architecture, feature support, and maintenance status. Let’s break down how they work and which one fits your stack.

⚠️ Maintenance Status: One Is Deprecated

Before diving into features, it’s critical to note that jasmine-allure-reporter is officially deprecated. According to its npm page, the package is no longer maintained and users are encouraged to migrate to alternatives. This alone disqualifies it for new projects.

// DO NOT use this in new projects
const JasmineAllureReporter = require('jasmine-allure-reporter');
jasmine.getEnv().addReporter(new JasmineAllureReporter());

In contrast, both jest-allure and mocha-allure-reporter are actively maintained and compatible with recent versions of their respective test runners.

🧪 Test Runner Integration: How Each Hooks Into Your Tests

jasmine-allure-reporter (Deprecated)

This reporter attaches directly to Jasmine’s global environment via jasmine.getEnv().addReporter(). It listens to Jasmine’s lifecycle events (suiteStarted, specStarted, etc.) and translates them into Allure results.

// jasmine-allure-reporter (deprecated)
const reporter = require('jasmine-allure-reporter');
jasmine.getEnv().addReporter(reporter);

It supports basic Allure features like test descriptions and severity labels via custom matchers or metadata, but lacks modern capabilities like step nesting or attachments.

jest-allure

jest-allure integrates as a Jest environment or reporter, depending on usage. The recommended approach uses the AllureEnvironment to wrap test execution and expose an allure object globally.

// jest.config.js
module.exports = {
  testEnvironment: 'node',
  setupFilesAfterEnv: ['jest-allure/dist/setup'],
};

// In your test file
allure.description('Verifies user login flow');
allure.label('severity', 'critical');
test('logs in successfully', () => {
  // ...
});

This gives you direct access to the Allure API inside tests, enabling fine-grained control over test metadata, steps, and attachments.

mocha-allure-reporter

This reporter plugs into Mocha via the --reporter CLI flag or programmatically through Mocha’s reporter() method. It captures Mocha’s test events and maps them to Allure’s model.

// Via CLI
mocha --reporter mocha-allure-reporter test/*.js

// Programmatically
const Mocha = require('mocha');
const mocha = new Mocha();
mocha.reporter('mocha-allure-reporter');

It also provides a global allure object during test execution, similar to jest-allure, allowing manual enrichment of test cases.

// In a Mocha test
it('should create a user', function() {
  allure.feature('User Management');
  allure.step('Send POST request', () => {
    // ...
  });
});

📝 Feature Support: Steps, Attachments, and Labels

All three packages aim to support core Allure concepts, but implementation depth varies.

Test Steps

  • jasmine-allure-reporter: No native step support. You must manually manage step-like behavior using nested describe blocks, which doesn’t translate to Allure steps.

  • jest-allure: Full step support via allure.step():

allure.step('Validate input', () => {
  expect(input).toBeTruthy();
});
  • mocha-allure-reporter: Also supports allure.step() with identical syntax:
allure.step('Check response status', () => {
  assert.equal(res.statusCode, 200);
});

Attachments

  • jasmine-allure-reporter: No attachment API.

  • jest-allure: Supports binary and text attachments:

allure.attachment('Screenshot', screenshotBuffer, 'image/png');
  • mocha-allure-reporter: Same attachment API:
allure.attachment('Log file', logContent, 'text/plain');

Labels and Metadata

Both jest-allure and mocha-allure-reporter allow setting Allure labels (e.g., epic, feature, story, severity) directly in tests:

// jest-allure
allure.epic('Authentication');
allure.story('Login with valid credentials');

// mocha-allure-reporter
allure.label('epic', 'Authentication');
allure.label('story', 'Login with valid credentials');

jasmine-allure-reporter only supports limited metadata via Jasmine’s built-in mechanisms, which don’t map cleanly to Allure’s labeling system.

🛠️ Configuration and Output

All three write Allure result files (.json or .xml) to a configured output directory (default: allure-results). However, only the active reporters (jest-allure, mocha-allure-reporter) support modern configuration options.

For example, in jest-allure, you can customize the results directory via environment variables:

ALLURE_RESULTS_DIR=./custom-results npx jest

Similarly, mocha-allure-reporter respects the ALLURE_RESULTS_DIR env var or can be configured programmatically.

jasmine-allure-reporter offers minimal configuration and hardcodes paths in older versions.

🔄 Real-World Usage Scenarios

Scenario 1: You’re Using Jasmine (Legacy Project)

If you’re stuck on Jasmine due to legacy code, do not add jasmine-allure-reporter to new tests. Instead, consider migrating to Jest or Mocha incrementally, or use a generic Allure adapter that doesn’t rely on this deprecated package.

Scenario 2: You’re Using Jest (Modern Frontend Stack)

Choose jest-allure. It integrates cleanly with Jest’s setup lifecycle, supports TypeScript out of the box, and gives you full access to Allure’s feature set without polluting your test globals excessively.

Scenario 3: You’re Using Mocha (Node.js or Legacy Browser Tests)

Go with mocha-allure-reporter. It’s stable, well-documented, and works seamlessly with Mocha’s flexible test structure, including async hooks and dynamic test generation.

📊 Summary Table

Featurejasmine-allure-reporterjest-alluremocha-allure-reporter
Maintenance Status❌ Deprecated✅ Active✅ Active
Test Steps❌ Not supportedallure.step()allure.step()
Attachments❌ Not supported✅ Full support✅ Full support
Labels (epic, etc.)⚠️ Limited✅ Direct methods✅ Via allure.label()
Integration MethodJasmine reporterJest setup fileMocha CLI or programmatic
Recommended For❌ Avoid✅ New Jest projects✅ Mocha-based projects

💡 Final Recommendation

  • Avoid jasmine-allure-reporter entirely — it’s deprecated and lacks modern Allure features.
  • If your project uses Jest, jest-allure is the clear choice: it’s well-maintained, feature-complete, and integrates smoothly with Jest’s conventions.
  • If you’re on Mocha, mocha-allure-reporter is mature, reliable, and gives you the same level of control over Allure reporting as its Jest counterpart.

Ultimately, your test runner dictates your Allure reporter. But with Jasmine’s option off the table, the decision comes down to aligning with your existing testing infrastructure — not comparing feature parity between equally viable tools.

How to Choose: jasmine-allure-reporter vs jest-allure vs mocha-allure-reporter

  • jasmine-allure-reporter:

    Do not choose jasmine-allure-reporter for any new project — it is officially deprecated according to its npm page and lacks support for modern Allure features like test steps and attachments. If you're maintaining a legacy Jasmine codebase, prioritize migrating to a supported test runner like Jest or Mocha instead of relying on this unmaintained package.

  • jest-allure:

    Choose jest-allure if your project uses Jest as its test runner. It provides full access to Allure's feature set — including test steps, attachments, and labels — through a clean global allure object, integrates via Jest's standard setup mechanism, and is actively maintained with good TypeScript support.

  • mocha-allure-reporter:

    Choose mocha-allure-reporter if you're using Mocha for testing, especially in Node.js environments or legacy browser test suites. It offers complete Allure integration with step tracking, attachments, and metadata labeling, and can be configured via CLI flags or programmatically, making it flexible for various Mocha setups.

README for jasmine-allure-reporter

Jasmine Allure Plugin

A plugin to generate an Allure report out of Jasmine tests.

Using Allure Reporter in Jasmine2

Add the lib into package.json and then configure the plugin:

// conf.js
var AllureReporter = require('jasmine-allure-reporter');
jasmine.getEnv().addReporter(new AllureReporter({
  resultsDir: 'allure-results'
}));

Using Allure Reporter in Protractor

Put the above code into the onPrepare inside of your conf.js:

// conf.js
exports.config = {
  framework: 'jasmine2',
  onPrepare: function() {
    var AllureReporter = require('jasmine-allure-reporter');
    jasmine.getEnv().addReporter(new AllureReporter({
      resultsDir: 'allure-results'
    }));
  }
}

Generate HTML report from Allure results

The Reporter will generate xml files inside of a resultsDir, then we need to generate HTML out of them. You can use Maven for that. Copy ready-to-use pom.xml from node_modules/jasmine-allure-reporter and run:

mvn site -Dallure.results_pattern=allure-results

It will put HTMLs into target/site/allure-maven-plugin folder. To serve them via localhost:1324 use:

mvn jetty:run -Djetty.port=1234

Otherwise choose one of other ways to generate HTML.

Adding Screenshot in the end of each test

  onPrepare: function () {
    var AllureReporter = require('jasmine-allure-reporter');
    jasmine.getEnv().addReporter(new AllureReporter());
    jasmine.getEnv().afterEach(function(done){
      browser.takeScreenshot().then(function (png) {
        allure.createAttachment('Screenshot', function () {
          return new Buffer(png, 'base64')
        }, 'image/png')();
        done();
      })
    });
  }

Note done callback!

TBD

  • Currently attachments are added to the test case instead of the current step. This needs to be fixed in allure-js-commons.
  • Add support for Features.
  • Add support to Jasmine1. Right now only Jasmine2 is available (do we really need this?).
  • Add ability to use reflection for decoration method of page objects so that we don't need to write Allure-related boilerplate tying ourselves to one specific reporter.

For Developers

See the system tests to quickly check how the reporter works in real life: node_modules/protractor/bin/protractor ./test/system/conf.js