Install & Compatibility
Where this runs
tested against v? · npm install
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
muslnode 18–226 runs
build_error
glibcnode 18–226 runs
build_error
Code
Verified usage
Verified import paths — ran on the pinned version, not inferred.
default
✓ import unexpected from 'unexpected'; import unexpectedExpress from 'unexpected-express'; unexpected.use(unexpectedExpress);
✗ const unexpected = require('unexpected'); unexpected.use(require('unexpected-express'));
ESM only since v13; CommonJS require not supported
unexpectedExpress
✓ import unexpectedExpress from 'unexpected-express';
✗ import { unexpectedExpress } from 'unexpected-express';
Despite the name, the plugin is a default export, not a named export
expect
✓ import expect from 'unexpected';
✗ import { expect } from 'unexpected';
Unexpected's expect is a default export
Demonstrates testing an Express route that returns JSON based on request params
import unexpected from 'unexpected';
import unexpectedExpress from 'unexpected-express';
import express from 'express';
const expect = unexpected.clone().use(unexpectedExpress);
const app = express();
app.get('/user/:id', (req, res) => {
res.json({ id: req.params.id });
});
await expect(app, 'to yield exchange', {
request: 'GET /user/42',
response: { statusCode: 200, body: { id: '42' } }
});
Errors
Common errors & fixes
TypeError: unexpectedExpress is not a function
Using named import instead of default import
fixUse `import unexpectedExpress from 'unexpected-express'`
Error: Cannot find module 'unexpected-express'
Package not installed or installed as dev dependency and missing in production
fixRun `npm install --save-dev unexpected-express`
TypeError: expect(...).to is not a function
Forgetting to use the cloned expect instance with the plugin installed
fixUse `const expect = unexpected.clone().use(unexpectedExpress);`
Audit
Dependencies
unexpectedrequiredpeer dependency: required as the core assertion framework
expressrequiredpeer dependency: provides the middleware to test
unexpected-messyrequiredtransitive dependency for HTTP request/response assertions