webpack-espower-loader

raw JSON →
2.0.0 verified Sat Apr 25 auth: no javascript

A webpack loader for power-assert that applies espower instrumentation to JavaScript sources during the webpack build process, enabling detailed assertion error messages (Power Assert) when tests fail. Current stable version is 2.0.0, with a 1.x branch for webpack 3 or lower. The loader is intended for use with webpack 4+; for webpack 3 or lower, use version 1.x. Key differentiator: it integrates Power Assert into webpack build pipelines, but note that it does not work with babel-loader (use babel-plugin-espower instead). The loader passes options through to espower.

error Error: Module not found: Error: Cannot resolve module 'espower'
cause espower is not installed as a peer dependency.
fix
Install espower: npm install --save-dev espower
error TypeError: Cannot read property 'replace' of undefined
cause Loader options are undefined or null when passed to espower.
fix
Ensure options object is provided in webpack config (even if empty).
error Error: webpack-espower-loader only works with webpack 4+. For webpack 3 use version 1.x.
cause Using webpack-espower-loader 2.x with webpack 3.
fix
Install webpack-espower-loader@1.0.2: npm install --save-dev webpack-espower-loader@1.0.2
breaking webpack-espower-loader 2.x does not work with webpack 3 or lower.
fix Use webpack-espower-loader@1.0.2 for webpack 3 or lower.
breaking webpack-espower-loader does not work with babel-loader (since babel 5).
fix Use babel-plugin-espower instead of webpack-espower-loader when using babel-loader.
deprecated The 'pattern' option (singular) is deprecated in favor of 'patterns' (plural).
fix Use 'patterns' in loader options.
gotcha The loader must be placed after transpilation loaders like babel-loader in the rule 'use' array.
fix Ensure webpack-espower-loader runs after babel-loader in the loader chain.
gotcha Secure coding: The loader does not escape special characters in assertion expressions; ensure test inputs are safe to avoid injection.
fix Sanitize or avoid dynamic generation of assertion messages from untrusted input.
npm install webpack-espower-loader
yarn add webpack-espower-loader
pnpm add webpack-espower-loader

Configures webpack-espower-loader in webpack 4+ and shows a basic Power Assert test that produces enhanced assertion output.

// webpack.config.js
{
  module: {
    exprContextCritical: false,
    rules: [{
      test: /\.js$/,
      exclude: /node_modules/,
      use: {
        loader: 'webpack-espower-loader',
        options: {
          patterns: [
            'assert(value, [message])',
            'assert.ok(value, [message])',
            'assert.equal(actual, expected, [message])',
            'assert.notEqual(actual, expected, [message])',
            'assert.strictEqual(actual, expected, [message])',
            'assert.notStrictEqual(actual, expected, [message])',
            'assert.deepEqual(actual, expected, [message])',
            'assert.notDeepEqual(actual, expected, [message])'
          ]
        }
      }
    }]
  }
}

// test.js
const assert = require('power-assert');
assert.deepEqual([1,2,3], [1,2,4]); // outputs Power Assert diagnostics