🛠 Development in progress This library is a wrapper around nodejs "assert" module The main porpuse is build new assertion library with soft assertions based on "assert" module allure/any other reporter ready const { expect} = require ( 'assertior' ) ; describe ( 'Suite' , function ( ) { it ( 'soft toEqual positive' , function ( ) { const val = 2 ; expect . soft ( val ) . toEqual ( 2 ) ; } ) ; it ( 'soft toDeepEqual positive' , function ( ) { const val = { a : 2 , b : 3 , c : [ 1 , 2 , 3 ] } ; expect . soft ( val ) . toDeepEqual ( { a : 2 , c : [ 1 , 2 , 3 ] , b : 3 } ) ; } ) ; } ) ; mocha example with allure // Allure step function allureStep ( stepAssertionName : string , error , expected , current ) { const step = allure . startStep ( stepAssertionName ) ; allure . attachment ( 'Expected value' , JSON . stringify ( expected , null , 2 ) , 'application/json' ) ; allure . attachment ( 'Current value' , JSON . stringify ( current , null , 2 ) , 'application/json' ) ; if ( error ) { allure . attachment ( 'Error' , JSON . stringify ( error , null , 2 ) , 'application/json' ) ; } step . step . stepResult . status = error ? 'broken' : 'passed' ; step . endStep ( ) ; } const { expect, initStepDeclarator} = require ( 'assertior' ) ; initStepDeclarator ( allureStep ) ; describe ( 'Suite' , function ( ) { it ( 'soft toEqual positive' , function ( ) { const val = 2 ; expect . soft ( val ) . toEqual ( 2 ) ; } ) ; it ( 'toDeepEqual positive' , function ( ) { const val = 2 ; expect ( val ) . toDeepEqual ( 2 ) ; } ) ; } ) ; const { expect} = require ( 'assertior' ) ; expect ( [ { foo : 'bar' } ] ) . toDeepEqual ( [ { foo : 'bar' } ] ) ; const { expect} = require ( 'assertior' ) ; expect ( [ { foo : 'bar' } ] ) . toNotDeepEqual ( [ { foo : 'foo' } ] ) ; const { expect} = require ( 'assertior' ) ; expect ( 'bar' ) . toEqual ( 'bar' ) ; const { expect} = require ( 'assertior' ) ; expect ( 'bar' ) . toNotEqual ( 'foo' ) ; const { expect} = require ( 'assertior' ) ; expect ( [ ] ) . toBeEmptyArray ( ) ; const { expect} = require ( 'assertior' ) ; expect ( 10 ) . isGreaterThan ( 9 ) ; const { expect} = require ( 'assertior' ) ; expect ( [ 1 , 2 , 3 ] ) . arrayHasLengthAbove ( 2 ) ; const { expect} = require ( 'assertior' ) ; expect ( [ 1 , 2 , 3 ] ) . toBeNotEmptyArray ( ) ; const { expect} = require ( 'assertior' ) ; expect ( { foo : 'bar' } ) . objectIncludesKeys ( [ 'foo' ] ) ; const { expect} = require ( 'assertior' ) ; expect ( { foo : 'bar' } ) . hasType ( 'object' ) ; expect ( [ ] ) . hasType ( 'array' ) ; expect ( null ) . hasType ( 'null' ) ; const { expect} = require ( 'assertior' ) ; expect ( 'foo' ) . stringIncludesSubstring ( 'foo' ) ; stringNotIncludesSubstring const { expect} = require ( 'assertior' ) ; expect ( 'foo' ) . stringNotIncludesSubstring ( 'foo' ) ; const { expect} = require ( 'assertior' ) ; expect ( { a : 1 } ) . objectIsNotEmpty ( 'foo' ) ; const { expect} = require ( 'assertior' ) ; expect ( { a : 1 } ) . objectIsEmpty ( 'foo' ) ; const { expect} = require ( 'assertior' ) ; expect ( 'test' ) . stringIsNotEmpty ( ) ; const { expect} = require ( 'assertior' ) ; expect ( 9 ) . isLessThan ( 10 ) ; const { expect} = require ( 'assertior' ) ; expect ( '' ) . stringIsEmpty ( ) ; const { expect} = require ( 'assertior' ) ; expect ( Promise . resolve ( 'test' ) ) . toBePromise ; const { expect} = require ( 'assertior' ) ; expect ( Symbol ( 'test' ) ) . toBeSymbol ; const { expect} = require ( 'assertior' ) ; expect ( [ ] ) . toBeArray ; const { expect} = require ( 'assertior' ) ; expect ( false ) . toBeBool ; const { expect} = require ( 'assertior' ) ; expect ( async ( ) => ( { } ) ) . toBeAsyncFunction ; const { expect} = require ( 'assertior' ) ; expect ( ( ) => ( { } ) ) . toBeFunction ; const { expect} = require ( 'assertior' ) ; expect ( new Set ( ) ) . toBeSet ; const { expect} = require ( 'assertior' ) ; expect ( undefined ) . toBeUndefined ; const { expect} = require ( 'assertior' ) ; expect ( 1 ) . toBeNumber ; const { expect} = require ( 'assertior' ) ; expect ( null ) . toBeNull ; const { expect} = require ( 'assertior' ) ; expect ( { } ) . toBeObject ; const { expect} = require ( 'assertior' ) ; expect ( '' ) . toBeString ; const { expect} = require ( 'assertior' ) ; expect ( [ 12 , 23 ] ) . arrayIncludesMembers ( 23 ) ; const { expect} = require ( 'assertior' ) ; expect ( [ 12 , 23 ] ) . arrayNotIncludesMembers ( 25 ) ; const { expect} = require ( 'assertior' ) ; expect ( 'test' ) . toMatchRegex ( / t / ig) ; const { expect} = require ( 'assertior' ) ; expect . soft ( 'bar' ) . toEqual ( 'bar' ) ; const { expect} = require ( 'assertior' ) ; expect . soft ( { a : 'bar' } ) . toDeepEqual ( { a : 'bar' } ) ; const { expect} = require ( 'assertior' ) ; expect . soft ( 'bar' ) . toNotEqual ( 'foo' ) ; const { expect} = require ( 'assertior' ) ; expect . soft ( [ { a : 'foo' } ] ) . toNotDeepEqual ( [ { a : 'bar' } ] ) ; const { expect} = require ( 'assertior' ) ; expect . soft ( [ ] ) . toBeEmptyArray ( ) ; const { expect} = require ( 'assertior' ) ; expect . soft ( [ 1 , 2 , 3 ] ) . toBeNotEmptyArray ( ) ; const { expect} = require ( 'assertior' ) ; expect . soft ( { foo : 'bar' } ) . objectIncludesKeys ( [ 'foo' ] ) ; const { expect} = require ( 'assertior' ) ; expect . soft ( { foo : 'bar' } ) . hasType ( 'object' ) ; expect . soft ( [ ] ) . hasType ( 'array' ) ; expect . soft ( null ) . hasType ( 'null' ) ; const { expect} = require ( 'assertior' ) ; expect . soft ( 'foo' ) . stringIncludesSubstring ( 'foo' ) ; stringNotIncludesSubstring const { expect} = require ( 'assertior' ) ; expect . soft ( 'foo' ) . stringNotIncludesSubstring ( 'foo' ) ; const { expect} = require ( 'assertior' ) ; expect . soft ( { a : 1 } ) . objectIsNotEmpty ( 'foo' ) ; const { expect} = require ( 'assertior' ) ; expect . soft ( { a : 1 } ) . objectIsEmpty ( 'foo' ) ; const { expect} = require ( 'assertior' ) ; expect . soft ( 'test' ) . stringIsNotEmpty ( ) ; const { expect} = require ( 'assertior' ) ; expect . soft ( '' ) . stringIsEmpty ( ) ; const { expect} = require ( 'assertior' ) ; expect . soft ( 10 ) . isGreaterThan ( 9 ) ; const { expect} = require ( 'assertior' ) ; expect . soft ( 9 ) . isLessThan ( 10 ) ; const { expect} = require ( 'assertior' ) ; expect . soft ( Promise . resolve ( 'test' ) ) . toBePromise ; const { expect} = require ( 'assertior' ) ; expect . soft ( Symbol ( 'test' ) ) . toBeSymbol ; const { expect} = require ( 'assertior' ) ; expect . soft ( false ) . toBeBool ; const { expect} = require ( 'assertior' ) ; expect . soft ( async ( ) => ( { } ) ) . toBeAsyncFunction ; const { expect} = require ( 'assertior' ) ; expect . soft ( ( ) => ( { } ) ) . toBeFunction ; const { expect} = require ( 'assertior' ) ; expect . soft ( new Set ( ) ) . toBeSet ; const { expect} = require ( 'assertior' ) ; expect . soft ( undefined ) . toBeUndefined ; const { expect} = require ( 'assertior' ) ; expect . soft ( 1 ) . toBeNumber ; const { expect} = require ( 'assertior' ) ; expect . soft ( null ) . toBeNull ; const { expect} = require ( 'assertior' ) ; expect . soft ( { } ) . toBeObject ; const { expect} = require ( 'assertior' ) ; expect . soft ( '' ) . toBeString ; const { expect} = require ( 'assertior' ) ; expect . soft ( [ ] ) . toBeArray ; const { expect} = require ( 'assertior' ) ; expect . soft ( 'test' ) . toMatchRegex ( / t / ig) ; const { expect} = require ( 'assertior' ) ; expect . soft ( [ 12 , 23 ] ) . arrayIncludesMembers ( 23 ) ; const { expect} = require ( 'assertior' ) ; expect . soft ( [ 12 , 23 ] ) . arrayNotIncludesMembers ( 25 ) ; const { expect} = require ( 'assertior' ) ; expect . soft ( [ 1 , 2 , 3 ] ) . arrayHasLengthAbove ( 2 ) ;