@nevware21/tripwire-chai
v0.1.8
Published
Tripwire Chai Extension
Downloads
333
Readme
@nevware21/tripwire-chai
Chai.js compatibility shim powered by tripwire - Drop-in replacement for Chai's assert API.
Chai v5.x Compatible - Designed to match the Chai v5.x assert API
Purpose
Migrate from Chai.js without rewriting your tests. Perfect when:
- Chai dependencies are causing build issues
- You need Web Worker support (broken in some Chai versions)
- Your project is stuck due to Chai dependency conflicts
- You want to unblock your tests and migrate gradually
Note: This is NOT a complete Chai replacement. Only the assert.* API is implemented. The expect and should APIs are NOT available.
Installation
npm install @nevware21/tripwire-chai --save-devRecommended version range:
{
"devDependencies": {
"@nevware21/tripwire-chai": ">= 0.1.8 < 2.x"
}
}Quick Migration
Step 1: Update imports
- import { assert } from 'chai';
+ import { assert } from '@nevware21/tripwire-chai';Step 2: Run your tests
Most assert.* functions should work immediately.
Step 3: Fix error message tests (if any)
Error messages differ from Chai. Use regex instead of exact strings:
- assert.throws(() => fn(), "exact chai message");
+ assert.throws(() => fn(), /error message/);What's Supported?
Fully Implemented (assert API)
- Basic:
equal,notEqual,strictEqual,deepEqual,isOk,isTrue, etc. - Types:
isObject,isArray,isString,isNumber,isBoolean,isFunction,isNull,isUndefined,isNaN,isFinite, etc. - Comparisons:
isAbove,isAtLeast,isBelow,isAtMost,closeTo,approximately,operator - Properties:
property,deepProperty,nestedProperty,ownPropertywith value validation - Collections:
include,deepInclude,nestedInclude,ownInclude,deepOwnInclude,members,sameMembers,keys - Deep Keys:
hasAnyDeepKeys,hasAllDeepKeys,containsAllDeepKeys,doesNotHaveAnyDeepKeys,doesNotHaveAllDeepKeysfor Maps/Sets with object keys - Size:
lengthOf,sizeOf - Changes:
changes,increases,decreaseswith delta tracking - Errors:
throws,doesNotThrow,ifError - State:
isExtensible,isSealed,isFrozen,isEmpty
NOT Implemented
expectAPI - Use core@nevware21/tripwireinsteadshouldAPI - No plans to implement- Plugins -
use()function not available
Usage Example
import { assert } from '@nevware21/tripwire-chai';
// Your existing Chai tests should work
assert.equal(1 + 1, 2);
assert.isArray([1, 2, 3]);
assert.deepEqual({ a: 1 }, { a: 1 });
assert.throws(() => { throw new Error(); });
assert.property({ a: 1 }, 'a');
assert.include([1, 2, 3], 2);Documentation
Migration Guide & Examples: Documentation Guide
Migrating from Chai: Migration Guide - Complete guide for upgrading from Chai.js to Tripwire
API Reference: TypeDoc Documentation
Core Package: @nevware21/tripwire - Consider migrating for better features
Repository: github.com/nevware21/tripwire
When to Use Core Tripwire
Consider switching to @nevware21/tripwire for:
- Better error messages
- Fluent
expectsyntax - New features and improvements
- Long-term maintenance
Browser Support
- Comprehensive support from ES5+ for broad compatibility
- Tested in Node.js, browsers, and Web Workers
Contributing
License
This project is licensed under the MIT License. See the LICENSE file for details.
