API Comparison

Originally published: 2026-09-04

Last modified: 2026-09-06

Get an up-to-date picture of how Best's API compares to Jest and Pest. See what is supported, what isn't, and what will be in the future.

Testing Functions

Function Jest Pest Best
describe ✅️ ✅️ ✅️
expect ✅️ ✅️ ✅️
it ✅️ ✅️ ✅️
test ✅️ ✅️ ❌️

Hooks

Hook Jest Pest Best
afterAll ✅️ ✅️ 📋️
afterEach ✅️ ✅️ 📋️
beforeAll ✅️ ✅️ 📋️
beforeEach ✅️ ✅️ 📋️

Modifiers

Modifier Jest Pest Best
and ❌️ ✅️ 🤷‍♂️
concurrent ✅️ ❌️ 🤷‍♂️
dd ❌️ ✅️ 🤷‍♂️
ddUnless ❌️ ✅️ 🤷‍♂️
ddWhen ❌️ ✅️ 🤷‍♂️
each ✅️ ✅️ 🤷‍♂️
failing ✅️ ❌️ 🤷‍♂️
json ❌️ ✅️ 🤷‍♂️
match ❌️ ✅️ 🤷‍♂️
not ✅️ ✅️ ✅️
only ✅️ ✅️ 🤷‍♂️
ray ❌️ ✅️ 🤷‍♂️
sequence ❌️ ✅️ 🤷‍♂️
skip ✅️ ✅️ ✅️
todo ✅️ ✅️ ✅️
unless ❌️ ✅️ 🤷‍♂️
when ❌️ ✅️ 🤷‍♂️

Asynchronous Modifiers

Modifier Jest Pest Best
resolves ✅️ ❌️ 🤷‍♂️
rejects ✅️ ❌️ 🤷‍♂️

Matchers

Matcher Jest Pest Best
toBe ✅️ ✅️ ✅️
toBeAlpha ❌️ ✅️ 🤷‍♂️
toBeAlphaNumeric ❌️ ✅️ 🤷‍♂️
toBeArray ❌️ ✅️ 🤷‍♂️
toBeBase64 ❌️ ✅️ 🤷‍♂️
toBeBetween ❌️ ✅️ 🤷‍♂️
toBeBool ❌️ ✅️ 🤷‍♂️
toBeCallable ❌️ ✅️ 🤷‍♂️
toBeCamelCase ❌️ ✅️ 🤷‍♂️
toBeCloseTo ✅️ ❌️ 🤷‍♂️
toBeDefined ✅️ ❌️ 🤷‍♂️
toBeDigits ❌️ ✅️ 🤷‍♂️
toBeDomain ❌️ ✅️ 🤷‍♂️
toBeEmail ❌️ ✅️ 🤷‍♂️
toBeEmpty ❌️ ✅️ 🤷‍♂️
toBeFalse ❌️ ✅️ 🤷‍♂️
toBeFalsy ✅️ ✅️ 🤷‍♂️
toBeFile ❌️ ✅️ 🤷‍♂️
toBeFloat ❌️ ✅️ 🤷‍♂️
toBeGreaterThan ✅️ ✅️ 📋️
toBeGreaterThanOrEqual ✅️ ✅️ 📋️
toBeHexadecimal ❌️ ✅️ 🤷‍♂️
toBeHostname ❌️ ✅️ 🤷‍♂️
toBeIn ❌️ ✅️ 🤷‍♂️
toBeInfinite ❌️ ✅️ 🤷‍♂️
toBeInstanceOf ✅️ ✅️ 🤷‍♂️
toBeInt ❌️ ✅️ 🤷‍♂️
toBeIpAddress ❌️ ✅️ 🤷‍♂️
toBeIterable ❌️ ✅️ 🤷‍♂️
toBeJson ❌️ ✅️ 🤷‍♂️
toBeKebabCase ❌️ ✅️ 🤷‍♂️
toBeLessThan ✅️ ✅️ 📋️
toBeLessThanOrEqual ✅️ ✅️ 📋️
toBeLowercase ❌️ ✅️ 🤷‍♂️
toBeMacAddress ❌️ ✅️ 🤷‍♂️
toBeNaN ✅️ ✅️ 🤷‍♂️
toBeNull ✅️ ✅️ 🤷‍♂️
toBeNumeric ❌️ ✅️ 🤷‍♂️
toBeObject ❌️ ✅️ 🤷‍♂️
toBeReadableDirectory ❌️ ✅️ 🤷‍♂️
toBeReadableFile ❌️ ✅️ 🤷‍♂️
toBeResource ❌️ ✅️ 🤷‍♂️
toBeScalar ❌️ ✅️ 🤷‍♂️
toBeSnakeCase ❌️ ✅️ 🤷‍♂️
toBeString ❌️ ✅️ 🤷‍♂️
toBeStudlyCase ❌️ ✅️ 🤷‍♂️
toBeTrue ❌️ ✅️ 🤷‍♂️
toBeTruthy ✅️ ✅️ 🤷‍♂️
toBeUlid ❌️ ✅️ 🤷‍♂️
toBeUndefined ✅️ ❌️ 🤷‍♂️
toBeUppercase ❌️ ✅️ 🤷‍♂️
toBeUrl ❌️ ✅️ 🤷‍♂️
toBeUuid ❌️ ✅️ 🤷‍♂️
toBeWritableDirectory ❌️ ✅️ 🤷‍♂️
toBeWritableFile ❌️ ✅️ 🤷‍♂️
toContain ✅️ ✅️ 🤷‍♂️
toContainEqual ✅️ ✅️ 🤷‍♂️
toContainOnlyInstancesOf ❌️ ✅️ 🤷‍♂️
toEndWith ❌️ ✅️ 🤷‍♂️
toEqual ✅️ ✅️ 🤷‍♂️
toEqualCanonicalizing ❌️ ✅️ 🤷‍♂️
toEqualWithDelta ❌️ ✅️ 🤷‍♂️
toHaveCamelCaseKeys ❌️ ✅️ 🤷‍♂️
toHaveCount ❌️ ✅️ 🤷‍♂️
toHaveKebabCaseKeys ❌️ ✅️ 🤷‍♂️
toHaveKey ❌️ ✅️ 🤷‍♂️
toHaveKeys ❌️ ✅️ 🤷‍♂️
toHaveLength ✅️ ✅️ ✅️
toHaveProperties ❌️ ✅️ 🤷‍♂️
toHaveProperty ✅️ ✅️ 🤷‍♂️
toHaveSameSize ❌️ ✅️ 🤷‍♂️
toHaveSnakeCaseKeys ❌️ ✅️ 🤷‍♂️
toHaveStudlyCaseKeys ❌️ ✅️ 🤷‍♂️
toMatch ✅️ ✅️ 🤷‍♂️
toMatchArray ❌️ ✅️ 🤷‍♂️
toMatchConstraint ❌️ ✅️ 🤷‍♂️
toMatchInlineSnapshot ✅️ ❌️ 🤷‍♂️
toMatchObject ✅️ ✅️ 🤷‍♂️
toMatchSnapshot ✅️ ❌️ 🤷‍♂️
toStartWith ❌️ ✅️ 🤷‍♂️
toStrictEqual ✅️ ❌️ 🤷‍♂️
toThrow ✅️ ✅️ ✅️
toThrowErrorMatchingSnapshot ✅️ ❌️ 🤷‍♂️

Mock functions

Function Jest Pest Best
toHaveBeenCalled ✅️ ❌️ 🤷‍♂️
toHaveBeenCalledTimes ✅️ ❌️ 🤷‍♂️
toHaveBeenCalledWith ✅️ ❌️ 🤷‍♂️
toHaveBeenLastCalledWith ✅️ ❌️ 🤷‍♂️
toHaveBeenNthCalledWith ✅️ ❌️ 🤷‍♂️
toHaveLastReturnedWith ✅️ ❌️ 🤷‍♂️
toHaveNthReturnedWith ✅️ ❌️ 🤷‍♂️
toHaveReturned ✅️ ❌️ 🤷‍♂️
toHaveReturnedTimes ✅️ ❌️ 🤷‍♂️
toHaveReturnedWith ✅️ ❌️ 🤷‍♂️

Asymmetric Matchers

🤷‍♂️

Assertion Count

🤷‍♂️

Extend Utilities

🤷‍♂️

Matcher State

🤷‍♂️

Serializable properties

🤷‍♂️