Releases: l2beat/earl
earl@1.2.0
earl@1.1.0
Minor Changes
- 3a60d1f: Add toHaveSubset validator
earl@1.0.1
Patch Changes
- 2886d70: Fix esm exports
earl@1.0.0
Major Changes
-
54b295f: Earl 1.0.0
This is the first stable release of Earl. It is an almost complete rewrite of the original Earl. The new version is much simpler, more powerful and easier to use.
Changes from the previous version
-
The package name has changed from
earljstoearl. The old package name will be deprecated on npm.- The new release includes both CommonJS and ESM builds.
-
Website updates
-
The website domain name has changed from
https://earljs.devtohttps://earl.fun. -
The old domain will keep redirecting to the new one for a while.
-
The documentation has been updated to include new guides, more examples.
-
The documentation engine changed from Docusaurus to Vitepress.
-
-
Snapshot testing no longer relies on
jest-snapshot.-
We developed a custom implementation which is much simpler and easier to maintain.
-
Snapshots are now saved alongside test files inside
.snapshotfiles. -
The
toMatchSnapshotvalidator now requires a test context to be passed to it. This is done by passingthisin mocha andctxin uvu. -
Test runner integration namely
earljs/mochaandearljs/uvuare no longer needed and have been removed.
-
-
Extending Earl with custom matchers and validators is now much easier. Instead of a special plugin system, custom matchers and validators are defined in the same way as the built in ones.
-
Adding validators is now done using
registerValidatorand declaring module overrides to make types work. -
Adding matchers is now done using
registerMatcherand declaring module overrides to make types work. -
The ability to add custom equality rules was removed and there are no plans to bring it back in the future.
-
A special export
earljs/internalis no longer needed and has been removed.
-
-
Validator API changes
-
The
expect()function now only takes a single argument, which is the value to be tested. No custom options can be passed to it. -
toBeAContainerWithhas been replaced bytoInclude. -
toBeAnArrayOfLengthhas been replaced bytoHaveLength. -
toBeAnArrayWithhas been replaced bytoInclude. -
toBeAnObjectWithhas been removed. We are planning to add a newtoHaveSubsetvalidator in the near future. -
toBeDefinedwas removed. It was unintuitive that it checked bothnullandundefined. Instead you should now callexpect(value).not.toBeNullish(). -
toBeExhaustedhas replaced bytoHaveBeenExhausted. -
toBeGreaterThannow works with numbers and bigints. -
toBeGreaterThanOrEqualTohas been replaced bytoBeGreaterThanOrEqualand now works with numbers and bigints. -
toBeLessThannow works with numbers and bigints. -
toBeLessThanOrEqualTohas been replaced bytoBeLessThanOrEqualand now works with numbers and bigints. -
toBeRejecteddoesn't take arguments anymore. Instead you should usetoBeRejectedWithto check the error. -
toEqualno longer has type checking problems with recursive types. -
toHaveBeenCalledExactlyWithhas been removed. It was a very ugly API. It has been replaced by a suite of new mock validators. -
toMatchSnapshotnow requires a test context to be passed to it. This is done by passingthisin mocha andctxin uvu. -
toReferentiallyEqualhas been replaced bytoExactlyEqual. -
toThrownow always fails if the function returns a promise.
-
-
Matcher API changes
-
All matchers now return
neverinstead of trying to imitate the type of the value they are matching. This behavior is going to stay until TypeScript introduces a better way to do this. -
arrayOfLengthhas been replaced bylength. -
arrayWithhas been replaced byincludes. -
containerWithhas been replaced byincludes. -
definednow checks for onlyundefined. Previously it checked for bothnullandundefined. Instead you should now callnotNullish. -
numberCloseTohas been replaced bycloseTo. The second parameter is now just the delta and not an object with thedeltaproperty. -
numberGreaterThanhas been replaced bygreaterThanand now works with numbers and bigints. -
numberGreaterThanOrEqualTohas been replaced bygreaterThanOrEqualand now works with numbers and bigints. -
numberLessThanhas been replaced bylessThanand now works with numbers and bigints. -
numberLessThanOrEqualTohas been replaced bylessThanOrEqualand now works with numbers and bigints. -
objectWithhas been replaced bysubset. -
stringMatchinghas been replaced byincludesandregex.
-
-
Mock API changes
-
Fix types for mocks. Previously, the types for
.executesand.executesOncewere incorrect. -
Rename
MocktoMockFunction. -
Rename
MockOftoMockFunctionOf. -
Calling configuration functions that change the default mock behavior no longer resets the mock. An explicit
resetfunction has been added for that purpose.
-
New features
-
New validators
-
toBeAnInteger. -
toBeASafeInteger. -
toBeBetween. -
toBeCloseTo. -
toBeEmpty. -
toEqualUnsorted. -
toHaveBeenCalled. -
toHaveBeenCalledTimes. -
toHaveBeenLastCalledWith. -
toHaveBeenNthCalledWith. -
toHaveBeenOnlyCalledWith. -
toMatchRegex. -
toMatchSchema. -
toSatisfy.
-
-
New matchers
-
between. -
closeTo. -
empty. -
integer. -
notEmpty. -
notNullish. -
property. -
regex. -
safeInteger. -
satisfies. -
schema. -
subset.
-
-
New mock capabilities
- Added
mockObjectthat can be used to mock objects.
- Added
-
earljs@0.2.3
Patch Changes
-
1887ac2: Snapshot tests in
uvuare now supported withearljs/uvu.To use Earl with
uvu, requireearljs/uvuin your test command:# using the uvu cli $ uvu -r earljs/uvu tests # using node directly $ node -r earljs/uvu tests/example.test.js
earljs@0.2.2
Patch Changes
- fde9d67: Fixed "a" matcher for functions
earljs@0.2.1
Patch Changes
- 7378e50: Earl formatting no longer crashes on object with constructor set to undefined.
earljs@0.2.0
earljs@0.1.12
Patch Changes
- afbd34b: Ensure that package is published with the readme. Readme updates.
earljs@0.1.11
Patch Changes
- d69576f: Fix types for mockFn's default implementation
- 00cae63: Function mocks can now be typed as Mock.Of
- a0f7b98: Improve support for comparing recursive objects
- 3651e17: Earl no longer crashes in mocha --watch mode
- d02b7d6: process.env.UPDATE_SNAPSHOTS set to "1" is now treated the same as when set to "true"