Skip to content

Upgrading ava 4 to 5

Breaking4.3.3 → 5.3.1Breaking1Platform1New2Changed9Fixed4

BreakingUpgrade verdict

1 breaking change and a platform requirement change.

  • TypeScript users may need to adjust imports since AVA now exports types instead of interfaces.
  • AVA needs a newer version of Node.js to run.
2 items need code or config changes

Node.js requirement changed in 5.0.0: >=12.22 <13 || >=14.17 <15 || >=16.4 <17 || >=18 → >=14.19 <15 || >=16.15 <17 || >=18.

Drops del, slash.

Installs 141 packages in all (was 164).

Breaking1
Exports types rather than interfaces.
Platform1
AVA now requires Node.js 14.19, 16.15 or 18.

Generated by DepDelta from published .d.ts files. Not mixed with prose notes.

  • removed: export * from '../index'
  • removed: export { default } from '../index'
  • added: const test: TestFn
  • added: default test
  • added: export * from '../types/assertions'
  • added: export * from '../types/subscribable'
  • added: export * from '../types/test-fn'
  • added: export * from '../types/try-fn'
  • removed: export * from '../plugin'
  • added: export { SharedWorker } from '../types/shared-worker'
  • added: function registerSharedWorker<Data = unknown>(options: SharedWorker.Plugin.RegistrationOptions<'ava-4', Data>): SharedWorker.Plugin.Protocol<Data>
  • removed: const test: TestFn
  • removed: default test
  • removed: export * from './types/assertions'
  • removed: export * from './types/subscribable'
  • removed: export * from './types/test-fn'
  • removed: export * from './types/try-fn'
  • added: export * from './entrypoints/main'
  • added: export { default } from './entrypoints/main'
  • removed: function registerSharedWorker<Data = unknown>(options: SharedWorker.Plugin.RegistrationOptions<'ava-4', Data>): SharedWorker.Plugin.Protocol<Data>
  • removed: namespace SharedWorker
  • removed: namespace SharedWorker.Plugin
  • removed: type SharedWorker.BroadcastMessage<Data = unknown> = { readonly id: string; replies: () => AsyncIterableIterator<ReceivedMessage<Data>> }
  • removed: type SharedWorker.Factory = (options: FactoryOptions) => void
  • removed: type SharedWorker.FactoryOptions = { negotiateProtocol <Data = unknown>(supported: readonly ['ava-4']): Protocol<Data> }
  • removed: type SharedWorker.Plugin.Protocol<Data = unknown> = { readonly available: Promise<void>; readonly currentlyAvailable: boolean; readonly protocol: 'ava-4'; publish: (data: Data) => PublishedMessage<Data>; subscri…
  • removed: type SharedWorker.Plugin.PublishedMessage<Data = unknown> = { readonly id: string; replies: () => AsyncIterableIterator<ReceivedMessage<Data>> }
  • removed: type SharedWorker.Plugin.ReceivedMessage<Data = unknown> = { readonly data: Data; readonly id: string; reply: (data: Data) => PublishedMessage<Data> }
  • removed: type SharedWorker.Plugin.RegistrationOptions<Identifier extends ProtocolIdentifier, Data = unknown> = { readonly filename: string | URL; readonly initialData?: Data; readonly supportedProtocols: readonly Identifier[]; readonly teardown?: () => void }
  • removed: type SharedWorker.Protocol<Data = unknown> = { readonly initialData: Data; readonly protocol: 'ava-4'; broadcast: (data: Data) => BroadcastMessage<Data>; ready: () => Protocol<Data>; subscribe: () => Asyn…
  • removed: type SharedWorker.ProtocolIdentifier = 'ava-4'
  • removed: type SharedWorker.PublishedMessage<Data = unknown> = { readonly id: string; replies: () => AsyncIterableIterator<ReceivedMessage<Data>> }
  • removed: type SharedWorker.ReceivedMessage<Data = unknown> = { readonly data: Data; readonly id: string; readonly testWorker: TestWorker; reply: (data: Data) => PublishedMessage<Data> }
  • removed: type SharedWorker.TestWorker<Data = unknown> = { readonly id: string; readonly file: string; publish: (data: Data) => PublishedMessage<Data>; subscribe: () => AsyncIterableIterator<ReceivedMessage<Data>>; t…
  • added: export * from './entrypoints/plugin'
  • removed: call AssertAssertion(actual: any, message?: string): boolean
  • removed: call DeepEqualAssertion<Actual extends Expected, Expected>(actual: Actual, expected: Expected, message?: string): expected is Actual
  • removed: call DeepEqualAssertion<Actual, Expected extends Actual>(actual: Actual, expected: Expected, message?: string): actual is Expected
  • removed: call DeepEqualAssertion<Actual, Expected>(actual: Actual, expected: Expected, message?: string): boolean
  • removed: call FailAssertion(message?: string): boolean
  • removed: call FalseAssertion(actual: any, message?: string): actual is false
  • removed: call FalsyAssertion(actual: any, message?: string): boolean
  • removed: call IsAssertion<Actual, Expected extends Actual>(actual: Actual, expected: Expected, message?: string): actual is Expected
  • removed: call LikeAssertion<Expected extends Record<string, any>>(value: any, selector: Expected, message?: string): value is Expected
  • removed: call NotAssertion<Actual, Expected>(actual: Actual, expected: Expected, message?: string): boolean
  • removed: call NotDeepEqualAssertion<Actual, Expected>(actual: Actual, expected: Expected, message?: string): boolean
  • removed: call NotRegexAssertion(string: string, regex: RegExp, message?: string): boolean
  • removed: call NotThrowsAssertion(fn: () => any, message?: string): void
  • removed: call NotThrowsAsyncAssertion(fn: () => PromiseLike<any>, message?: string): Promise<void>
  • removed: call NotThrowsAsyncAssertion(promise: PromiseLike<any>, message?: string): Promise<void>
  • removed: call PassAssertion(message?: string): boolean
  • removed: call RegexAssertion(string: string, regex: RegExp, message?: string): boolean
  • removed: call SnapshotAssertion(expected: any, message?: string): void
  • removed: call ThrowsAssertion<ThrownError extends Error>(fn: () => any, expectations?: ThrowsExpectation, message?: string): ThrownError | undefined
  • removed: call ThrowsAsyncAssertion<ThrownError extends Error>(fn: () => PromiseLike<any>, expectations?: ThrowsExpectation, message?: string): Promise<ThrownError | undefined>
  • removed: call ThrowsAsyncAssertion<ThrownError extends Error>(promise: PromiseLike<any>, expectations?: ThrowsExpectation, message?: string): Promise<ThrownError | undefined>
  • removed: call TrueAssertion(actual: any, message?: string): actual is true
  • removed: call TruthyAssertion(actual: any, message?: string): boolean
  • removed: interface AssertAssertion
  • removed: interface Assertions
  • removed: interface DeepEqualAssertion
  • removed: interface FailAssertion
  • removed: interface FalseAssertion
  • removed: interface FalsyAssertion
  • removed: interface IsAssertion
  • removed: interface LikeAssertion
  • removed: interface NotAssertion
  • removed: interface NotDeepEqualAssertion
  • removed: interface NotRegexAssertion
  • removed: interface NotThrowsAssertion
  • removed: interface NotThrowsAsyncAssertion
  • removed: interface PassAssertion
  • removed: interface RegexAssertion
  • removed: interface SnapshotAssertion
  • removed: interface ThrowsAssertion
  • removed: interface ThrowsAsyncAssertion
  • removed: interface TrueAssertion
  • removed: interface TruthyAssertion
  • removed: method AssertAssertion.skip(actual: any, message?: string): void
  • removed: method DeepEqualAssertion.skip(actual: any, expected: any, message?: string): void
  • removed: method FailAssertion.skip(message?: string): void
  • removed: method FalseAssertion.skip(actual: any, message?: string): void
  • removed: method FalsyAssertion.skip(actual: any, message?: string): void
  • removed: method IsAssertion.skip(actual: any, expected: any, message?: string): void
  • removed: method LikeAssertion.skip(value: any, selector: any, message?: string): void
  • removed: method NotAssertion.skip(actual: any, expected: any, message?: string): void
  • removed: method NotDeepEqualAssertion.skip(actual: any, expected: any, message?: string): void
  • removed: method NotRegexAssertion.skip(string: string, regex: RegExp, message?: string): void
  • removed: method NotThrowsAssertion.skip(fn: () => any, message?: string): void
  • removed: method NotThrowsAsyncAssertion.skip(nonThrower: any, message?: string): void
  • removed: method PassAssertion.skip(message?: string): void
  • removed: method RegexAssertion.skip(string: string, regex: RegExp, message?: string): void
  • removed: method SnapshotAssertion.skip(expected: any, message?: string): void
  • removed: method ThrowsAssertion.skip(fn: () => any, expectations?: any, message?: string): void
  • removed: method ThrowsAsyncAssertion.skip(thrower: any, expectations?: any, message?: string): void
  • removed: method TrueAssertion.skip(actual: any, message?: string): void
  • removed: method TruthyAssertion.skip(actual: any, message?: string): void
  • removed: property Assertions.assert: AssertAssertion
  • removed: property Assertions.deepEqual: DeepEqualAssertion
  • removed: property Assertions.fail: FailAssertion
  • removed: property Assertions.false: FalseAssertion
  • removed: property Assertions.falsy: FalsyAssertion
  • removed: property Assertions.is: IsAssertion
  • removed: property Assertions.like: LikeAssertion
  • removed: property Assertions.not: NotAssertion
  • removed: property Assertions.notDeepEqual: NotDeepEqualAssertion
  • removed: property Assertions.notRegex: NotRegexAssertion
  • removed: property Assertions.notThrows: NotThrowsAssertion
  • removed: property Assertions.notThrowsAsync: NotThrowsAsyncAssertion
  • removed: property Assertions.pass: PassAssertion
  • removed: property Assertions.regex: RegexAssertion
  • removed: property Assertions.snapshot: SnapshotAssertion
  • removed: property Assertions.throws: ThrowsAssertion
  • removed: property Assertions.throwsAsync: ThrowsAsyncAssertion
  • removed: property Assertions.true: TrueAssertion
  • removed: property Assertions.truthy: TruthyAssertion
  • changed: type ErrorConstructor = new (...args: any[]) => Error → type ErrorConstructor<ErrorType extends Error = Error> = { new (...args: any[]): ErrorType; readonly prototype: ErrorType }
  • changed: type ThrowsExpectation = { code?: string | number; instanceOf?: ErrorConstructor; is?: Error; message?: string | RegExp | ((message: string) => boolean); name?: string } → type ThrowsExpectation<ErrorType extends ErrorConstructor | Error> = { code?: string | number; instanceOf?: ErrorType extends ErrorConstructor ? ErrorType : ErrorType extends Error ? ErrorConstructor<ErrorType> : never; is?: Err…
  • added: type AssertAssertion = { (actual: any, message?: string): boolean; skip(actual: any, message?: string): void }
  • added: type Assertions = { assert: AssertAssertion; deepEqual: DeepEqualAssertion; like: LikeAssertion; fail: FailAssertion; false: FalseAssertion; falsy: FalsyAssertion; is: IsAsserti…
  • added: type DeepEqualAssertion = { <Actual, Expected extends Actual>(actual: Actual, expected: Expected, message?: string): actual is Expected; <Actual extends Expected, Expected>(actual: Actu…
  • added: type FailAssertion = { (message?: string): boolean; skip(message?: string): void }
  • added: type FalseAssertion = { (actual: any, message?: string): actual is false; skip(actual: any, message?: string): void }
  • added: type FalsyAssertion = { (actual: any, message?: string): boolean; skip(actual: any, message?: string): void }
  • added: type IsAssertion = { <Actual, Expected extends Actual>(actual: Actual, expected: Expected, message?: string): actual is Expected; skip(actual: any, expected: any, message?: strin…
  • added: type LikeAssertion = { <Expected extends Record<string, any>>(value: any, selector: Expected, message?: string): value is Expected; skip(value: any, selector: any, message?: string…
  • added: type NotAssertion = { <Actual, Expected>(actual: Actual, expected: Expected, message?: string): boolean; skip(actual: any, expected: any, message?: string): void }
  • added: type NotDeepEqualAssertion = { <Actual, Expected>(actual: Actual, expected: Expected, message?: string): boolean; skip(actual: any, expected: any, message?: string): void }
  • added: type NotRegexAssertion = { (string: string, regex: RegExp, message?: string): boolean; skip(string: string, regex: RegExp, message?: string): void }
  • added: type NotThrowsAssertion = { (fn: () => any, message?: string): void; skip(fn: () => any, message?: string): void }
  • added: type NotThrowsAsyncAssertion = { (fn: () => PromiseLike<any>, message?: string): Promise<void>; (promise: PromiseLike<any>, message?: string): Promise<void>; skip(nonThrower: any, message?:…
  • added: type PassAssertion = { (message?: string): boolean; skip(message?: string): void }
  • added: type RegexAssertion = { (string: string, regex: RegExp, message?: string): boolean; skip(string: string, regex: RegExp, message?: string): void }
  • added: type SnapshotAssertion = { (expected: any, message?: string): void; skip(expected: any, message?: string): void }
  • added: type ThrownError<ErrorType extends ErrorConstructor | Error> = ErrorType extends ErrorConstructor ? ErrorType['prototype'] : ErrorType
  • added: type ThrowsAssertion = { <ErrorType extends ErrorConstructor | Error>(fn: () => any, expectations?: ThrowsExpectation<ErrorType>, message?: string): ThrownError<ErrorType> | undefine…
  • added: type ThrowsAsyncAssertion = { <ErrorType extends ErrorConstructor | Error>(fn: () => PromiseLike<any>, expectations?: ThrowsExpectation<ErrorType>, message?: string): Promise<ThrownError<…
  • added: type TrueAssertion = { (actual: any, message?: string): actual is true; skip(actual: any, message?: string): void }
  • added: type TruthyAssertion = { (actual: any, message?: string): boolean; skip(actual: any, message?: string): void }
  • added: namespace SharedWorker
  • added: namespace SharedWorker.Plugin
  • added: type SharedWorker.BroadcastMessage<Data = unknown> = { readonly id: string; replies: () => AsyncIterableIterator<ReceivedMessage<Data>> }
  • added: type SharedWorker.Factory = (options: FactoryOptions) => void
  • added: type SharedWorker.FactoryOptions = { negotiateProtocol <Data = unknown>(supported: readonly ['ava-4']): Protocol<Data> }
  • added: type SharedWorker.Plugin.Protocol<Data = unknown> = { readonly available: Promise<void>; readonly currentlyAvailable: boolean; readonly protocol: 'ava-4'; publish: (data: Data) => PublishedMessage<Data>; subscri…
  • added: type SharedWorker.Plugin.PublishedMessage<Data = unknown> = { readonly id: string; replies: () => AsyncIterableIterator<ReceivedMessage<Data>> }
  • added: type SharedWorker.Plugin.ReceivedMessage<Data = unknown> = { readonly data: Data; readonly id: string; reply: (data: Data) => PublishedMessage<Data> }
  • added: type SharedWorker.Plugin.RegistrationOptions<Identifier extends ProtocolIdentifier, Data = unknown> = { readonly filename: string | URL; readonly initialData?: Data; readonly supportedProtocols: readonly Identifier[]; readonly teardown?: () => void }
  • added: type SharedWorker.Protocol<Data = unknown> = { readonly initialData: Data; readonly protocol: 'ava-4'; broadcast: (data: Data) => BroadcastMessage<Data>; ready: () => Protocol<Data>; subscribe: () => Asyn…
  • added: type SharedWorker.ProtocolIdentifier = 'ava-4'
  • added: type SharedWorker.PublishedMessage<Data = unknown> = { readonly id: string; replies: () => AsyncIterableIterator<ReceivedMessage<Data>> }
  • added: type SharedWorker.ReceivedMessage<Data = unknown> = { readonly data: Data; readonly id: string; readonly testWorker: TestWorker; reply: (data: Data) => PublishedMessage<Data> }
  • added: type SharedWorker.TestWorker<Data = unknown> = { readonly id: string; readonly file: string; publish: (data: Data) => PublishedMessage<Data>; subscribe: () => AsyncIterableIterator<ReceivedMessage<Data>>; t…
  • removed: interface Subscribable
  • removed: method Subscribable.subscribe(observer: { error(error: any): void; complete(): void }): void
  • added: type Subscribable = { subscribe(observer: { error(error: any): void; complete(): void }): void }
  • removed: call AfterFn<Args extends unknown[]>(implementation: Implementation<Args, Context>, ...args: Args): void
  • removed: call AfterFn<Args extends unknown[]>(title: string, implementation: Implementation<Args, Context>, ...args: Args): void
  • removed: call AlwaysInterface<Args extends unknown[]>(implementation: Implementation<Args, Context>, ...args: Args): void
  • removed: call AlwaysInterface<Args extends unknown[]>(title: string, implementation: Implementation<Args, Context>, ...args: Args): void
  • removed: call BeforeFn<Args extends unknown[]>(implementation: Implementation<Args, Context>, ...args: Args): void
  • removed: call BeforeFn<Args extends unknown[]>(title: string, implementation: Implementation<Args, Context>, ...args: Args): void
  • removed: call FailingFn<Args extends unknown[]>(macro: Macro<Args, Context>, ...args: Args): void
  • removed: call FailingFn<Args extends unknown[]>(title: string, implementation: Implementation<Args, Context>, ...args: Args): void
  • removed: call HookSkipFn<Args extends unknown[]>(implementation: Implementation<Args, Context>, ...args: Args): void
  • removed: call HookSkipFn<Args extends unknown[]>(title: string, implementation: Implementation<Args, Context>, ...args: Args): void
  • removed: call LogFn(...values: any[]): void
  • removed: call MacroFn<Args extends unknown[]>(declaration: MacroDeclarationOptions<Args, Context>): Macro<Args, Context>
  • removed: call MacroFn<Args extends unknown[]>(exec: ImplementationFn<Args, Context>): Macro<Args, Context>
  • removed: call OnlyFn<Args extends unknown[]>(macro: Macro<Args, Context>, ...args: Args): void
  • removed: call OnlyFn<Args extends unknown[]>(title: string, implementation: Implementation<Args, Context>, ...args: Args): void
  • removed: call PlanFn(count: number): void
  • removed: call SerialFn<Args extends unknown[]>(macro: Macro<Args, Context>, ...args: Args): void
  • removed: call SerialFn<Args extends unknown[]>(title: string, implementation: Implementation<Args, Context>, ...args: Args): void
  • removed: call SkipFn<Args extends unknown[]>(macro: Macro<Args, Context>, ...args: Args): void
  • removed: call SkipFn<Args extends unknown[]>(title: string, implementation: Implementation<Args, Context>, ...args: Args): void
  • removed: call TestFn<Args extends unknown[]>(macro: Macro<Args, Context>, ...args: Args): void
  • removed: call TestFn<Args extends unknown[]>(title: string, implementation: Implementation<Args, Context>, ...args: Args): void
  • removed: interface AfterFn<Context = unknown>
  • removed: interface AlwaysInterface<Context = unknown>
  • removed: interface BeforeFn<Context = unknown>
  • removed: interface ExecutionContext<Context = unknown> extends Assertions
  • removed: interface FailingFn<Context = unknown>
  • removed: interface HookSkipFn<Context = unknown>
  • removed: interface LogFn
  • removed: interface MacroFn<Context = unknown>
  • removed: interface Meta
  • removed: interface OnlyFn<Context = unknown>
  • removed: interface PlanFn
  • removed: interface SerialFn<Context = unknown>
  • removed: interface SkipFn<Context = unknown>
  • removed: interface TestFn<Context = unknown>
  • removed: method LogFn.skip(...values: any[]): void
  • removed: method PlanFn.skip(count: number): void
  • removed: property AfterFn.always: AlwaysInterface<Context>
  • removed: property AfterFn.skip: HookSkipFn<Context>
  • removed: property AlwaysInterface.skip: HookSkipFn<Context>
  • removed: property BeforeFn.skip: HookSkipFn<Context>
  • removed: property ExecutionContext.context: Context
  • removed: property FailingFn.only: OnlyFn<Context>
  • removed: property FailingFn.skip: SkipFn<Context>
  • removed: property Meta.file: string
  • removed: property Meta.snapshotDirectory: string
  • removed: property SerialFn.after: AfterFn<Context>
  • removed: property SerialFn.afterEach: AfterFn<Context>
  • removed: property SerialFn.before: BeforeFn<Context>
  • removed: property SerialFn.beforeEach: BeforeFn<Context>
  • removed: property SerialFn.failing: FailingFn<Context>
  • removed: property SerialFn.only: OnlyFn<Context>
  • removed: property SerialFn.skip: SkipFn<Context>
  • removed: property SerialFn.todo: TodoFn
  • removed: property TestFn.after: AfterFn<Context>
  • removed: property TestFn.afterEach: AfterFn<Context>
  • removed: property TestFn.before: BeforeFn<Context>
  • removed: property TestFn.beforeEach: BeforeFn<Context>
  • removed: property TestFn.failing: FailingFn<Context>
  • removed: property TestFn.macro: MacroFn<Context>
  • removed: property TestFn.meta: Meta
  • removed: property TestFn.only: OnlyFn<Context>
  • removed: property TestFn.serial: SerialFn<Context>
  • removed: property TestFn.skip: SkipFn<Context>
  • removed: property TestFn.todo: TodoFn
  • removed: readonly property ExecutionContext.log: LogFn
  • removed: readonly property ExecutionContext.passed: boolean
  • removed: readonly property ExecutionContext.plan: PlanFn
  • removed: readonly property ExecutionContext.teardown: TeardownFn
  • removed: readonly property ExecutionContext.timeout: TimeoutFn
  • removed: readonly property ExecutionContext.title: string
  • removed: readonly property ExecutionContext.try: TryFn<Context>
  • added: type AfterFn<Context = unknown> = { <Args extends unknown[]>(title: string, implementation: Implementation<Args, Context>, ...args: Args): void; <Args extends unknown[]>(implementation: Impleme…
  • added: type AlwaysInterface<Context = unknown> = { <Args extends unknown[]>(title: string, implementation: Implementation<Args, Context>, ...args: Args): void; <Args extends unknown[]>(implementation: Impleme…
  • added: type BeforeFn<Context = unknown> = { <Args extends unknown[]>(title: string, implementation: Implementation<Args, Context>, ...args: Args): void; <Args extends unknown[]>(implementation: Impleme…
  • added: type ExecutionContext<Context = unknown> = { context: Context; readonly title: string; readonly passed: boolean; readonly log: LogFn; readonly plan: PlanFn; readonly teardown: TeardownFn; readonly timeo…
  • added: type FailingFn<Context = unknown> = { <Args extends unknown[]>(title: string, implementation: Implementation<Args, Context>, ...args: Args): void; <Args extends unknown[]>(macro: Macro<Args, Cont…
  • added: type HookSkipFn<Context = unknown> = { <Args extends unknown[]>(title: string, implementation: Implementation<Args, Context>, ...args: Args): void; <Args extends unknown[]>(implementation: Impleme…
  • added: type LogFn = { (...values: any[]): void; skip(...values: any[]): void }
  • added: type MacroFn<Context = unknown> = { <Args extends unknown[]>(exec: ImplementationFn<Args, Context>): Macro<Args, Context>; <Args extends unknown[]>(declaration: MacroDeclarationOptions<Args, Co…
  • added: type Meta = { file: string; snapshotDirectory: string }
  • added: type OnlyFn<Context = unknown> = { <Args extends unknown[]>(title: string, implementation: Implementation<Args, Context>, ...args: Args): void; <Args extends unknown[]>(macro: Macro<Args, Cont…
  • added: type PlanFn = { (count: number): void; skip(count: number): void }
  • added: type SerialFn<Context = unknown> = { <Args extends unknown[]>(title: string, implementation: Implementation<Args, Context>, ...args: Args): void; <Args extends unknown[]>(macro: Macro<Args, Cont…
  • added: type SkipFn<Context = unknown> = { <Args extends unknown[]>(title: string, implementation: Implementation<Args, Context>, ...args: Args): void; <Args extends unknown[]>(macro: Macro<Args, Cont…
  • added: type TestFn<Context = unknown> = { <Args extends unknown[]>(title: string, implementation: Implementation<Args, Context>, ...args: Args): void; <Args extends unknown[]>(macro: Macro<Args, Cont…
  • removed: call TryFn<Args extends unknown[]>(fn: Implementation<Args, Context>, ...args: Args): Promise<TryResult>
  • removed: call TryFn<Args extends unknown[]>(title: string, fn: Implementation<Args, Context>, ...args: Args): Promise<TryResult>
  • removed: interface AssertionError extends Error
  • removed: interface TryFn<Context = unknown>
  • removed: interface TryResult
  • removed: method TryResult.commit(options?: CommitDiscardOptions): void
  • removed: method TryResult.discard(options?: CommitDiscardOptions): void
  • removed: property TryResult.errors: AssertionError[]
  • removed: property TryResult.logs: string[]
  • removed: property TryResult.passed: boolean
  • removed: property TryResult.title: string
  • added: type AssertionError = Record<string, unknown> & Error
  • added: type TryFn<Context = unknown> = { <Args extends unknown[]>(title: string, fn: Implementation<Args, Context>, ...args: Args): Promise<TryResult>; <Args extends unknown[]>(fn: Implementation<Ar…
  • added: type TryResult = { title: string; passed: boolean; errors: AssertionError[]; logs: string[]; commit(options?: CommitDiscardOptions): void; discard(options?: CommitDiscardOption…