Switch matchers to the new timeout

This commit is contained in:
Yury Semikhatsky 2024-05-22 16:57:21 -07:00
parent 680a2ea3da
commit 2d5c7c6707
10 changed files with 63 additions and 56 deletions

View file

@ -16,6 +16,8 @@
export const expect: typeof import('../../bundles/expect/node_modules/expect/build').expect = require('./expectBundleImpl').expect; export const expect: typeof import('../../bundles/expect/node_modules/expect/build').expect = require('./expectBundleImpl').expect;
export type ExpectMatcherContext = import('../../bundles/expect/node_modules/expect/build').MatcherContext; export type ExpectMatcherContext = import('../../bundles/expect/node_modules/expect/build').MatcherContext;
export const EXPECTED_COLOR: typeof import('../../bundles/expect/node_modules/jest-matcher-utils/build').EXPECTED_COLOR = require('./expectBundleImpl').EXPECTED_COLOR;
export const INVERTED_COLOR: typeof import('../../bundles/expect/node_modules/jest-matcher-utils/build').INVERTED_COLOR = require('./expectBundleImpl').INVERTED_COLOR; export const INVERTED_COLOR: typeof import('../../bundles/expect/node_modules/jest-matcher-utils/build').INVERTED_COLOR = require('./expectBundleImpl').INVERTED_COLOR;
export const RECEIVED_COLOR: typeof import('../../bundles/expect/node_modules/jest-matcher-utils/build').RECEIVED_COLOR = require('./expectBundleImpl').RECEIVED_COLOR; export const RECEIVED_COLOR: typeof import('../../bundles/expect/node_modules/jest-matcher-utils/build').RECEIVED_COLOR = require('./expectBundleImpl').RECEIVED_COLOR;
export const matcherErrorMessage: typeof import('../../bundles/expect/node_modules/jest-matcher-utils/build').matcherErrorMessage = require('./expectBundleImpl').matcherErrorMessage;
export const printReceived: typeof import('../../bundles/expect/node_modules/jest-matcher-utils/build').printReceived = require('./expectBundleImpl').printReceived; export const printReceived: typeof import('../../bundles/expect/node_modules/jest-matcher-utils/build').printReceived = require('./expectBundleImpl').printReceived;

View file

@ -49,7 +49,7 @@ import {
toPass toPass
} from './matchers'; } from './matchers';
import { toMatchSnapshot, toHaveScreenshot, toHaveScreenshotStepTitle } from './toMatchSnapshot'; import { toMatchSnapshot, toHaveScreenshot, toHaveScreenshotStepTitle } from './toMatchSnapshot';
import type { Expect } from '../../types/test'; import type { Expect, ExpectMatcherState } from '../../types/test';
import { currentTestInfo, currentExpectTimeout, setCurrentExpectConfigureTimeout } from '../common/globals'; import { currentTestInfo, currentExpectTimeout, setCurrentExpectConfigureTimeout } from '../common/globals';
import { filteredStackTrace, trimLongString } from '../util'; import { filteredStackTrace, trimLongString } from '../util';
import { import {
@ -131,9 +131,16 @@ function createExpect(info: ExpectMetaInfo) {
return (matchers: any) => { return (matchers: any) => {
const wrappedMatchers: any = {}; const wrappedMatchers: any = {};
Object.entries(matchers).forEach(([name, matcher]) => { Object.entries(matchers).forEach(([name, matcher]) => {
wrappedMatchers[name] = function (...args: any[]) { wrappedMatchers[name] = function(...args: any[]) {
this.timeout = currentExpectTimeout({}); const { isNot, promise, utils, expand } = this;
return (matcher as any).call(this, ...args); const newThis: ExpectMatcherState = {
isNot,
promise,
utils,
expand,
timeout: currentExpectTimeout({})
};
return (matcher as any).call(newThis, ...args);
}; };
}); });
expectLibrary.extend(wrappedMatchers); expectLibrary.extend(wrappedMatchers);
@ -178,8 +185,6 @@ function createExpect(info: ExpectMetaInfo) {
return expectInstance; return expectInstance;
} }
export const expect: Expect<{}> = createExpect({});
expectLibrary.setState({ expand: false }); expectLibrary.setState({ expand: false });
const customAsyncMatchers = { const customAsyncMatchers = {
@ -351,7 +356,7 @@ function computeArgsSuffix(matcherName: string, args: any[]) {
return value ? `(${value})` : ''; return value ? `(${value})` : '';
} }
expectLibrary.extend(customMatchers); export const expect: Expect<{}> = createExpect({}).extend(customMatchers);
export function mergeExpects(...expects: any[]) { export function mergeExpects(...expects: any[]) {
return expect; return expect;

View file

@ -15,14 +15,14 @@
*/ */
import { colors } from 'playwright-core/lib/utilsBundle'; import { colors } from 'playwright-core/lib/utilsBundle';
import type { ExpectMatcherContext } from './expect'; import type { ExpectMatcherState } from '../../types/test';
import type { Locator } from 'playwright-core'; import type { Locator } from 'playwright-core';
import type { StackFrame } from '@protocol/channels'; import type { StackFrame } from '@protocol/channels';
import { stringifyStackFrames } from 'playwright-core/lib/utils'; import { stringifyStackFrames } from 'playwright-core/lib/utils';
export const kNoElementsFoundError = '<element(s) not found>'; export const kNoElementsFoundError = '<element(s) not found>';
export function matcherHint(state: ExpectMatcherContext, locator: Locator | undefined, matcherName: string, expression: any, actual: any, matcherOptions: any, timeout?: number) { export function matcherHint(state: ExpectMatcherState, locator: Locator | undefined, matcherName: string, expression: any, actual: any, matcherOptions: any, timeout?: number) {
let header = state.utils.matcherHint(matcherName, expression, actual, matcherOptions).replace(/ \/\/ deep equality/, '') + '\n\n'; let header = state.utils.matcherHint(matcherName, expression, actual, matcherOptions).replace(/ \/\/ deep equality/, '') + '\n\n';
if (timeout) if (timeout)
header = colors.red(`Timed out ${timeout}ms waiting for `) + header; header = colors.red(`Timed out ${timeout}ms waiting for `) + header;

View file

@ -24,7 +24,7 @@ import { toExpectedTextValues, toMatchText } from './toMatchText';
import { constructURLBasedOnBaseURL, isRegExp, isString, isTextualMimeType, pollAgainstDeadline } from 'playwright-core/lib/utils'; import { constructURLBasedOnBaseURL, isRegExp, isString, isTextualMimeType, pollAgainstDeadline } from 'playwright-core/lib/utils';
import { currentTestInfo } from '../common/globals'; import { currentTestInfo } from '../common/globals';
import { TestInfoImpl } from '../worker/testInfo'; import { TestInfoImpl } from '../worker/testInfo';
import type { ExpectMatcherContext } from './expect'; import type { ExpectMatcherState } from '../../types/test';
import { takeFirst } from '../common/config'; import { takeFirst } from '../common/config';
interface LocatorEx extends Locator { interface LocatorEx extends Locator {
@ -36,7 +36,7 @@ interface APIResponseEx extends APIResponse {
} }
export function toBeAttached( export function toBeAttached(
this: ExpectMatcherContext, this: ExpectMatcherState,
locator: LocatorEx, locator: LocatorEx,
options?: { attached?: boolean, timeout?: number }, options?: { attached?: boolean, timeout?: number },
) { ) {
@ -50,7 +50,7 @@ export function toBeAttached(
} }
export function toBeChecked( export function toBeChecked(
this: ExpectMatcherContext, this: ExpectMatcherState,
locator: LocatorEx, locator: LocatorEx,
options?: { checked?: boolean, timeout?: number }, options?: { checked?: boolean, timeout?: number },
) { ) {
@ -64,7 +64,7 @@ export function toBeChecked(
} }
export function toBeDisabled( export function toBeDisabled(
this: ExpectMatcherContext, this: ExpectMatcherState,
locator: LocatorEx, locator: LocatorEx,
options?: { timeout?: number }, options?: { timeout?: number },
) { ) {
@ -74,7 +74,7 @@ export function toBeDisabled(
} }
export function toBeEditable( export function toBeEditable(
this: ExpectMatcherContext, this: ExpectMatcherState,
locator: LocatorEx, locator: LocatorEx,
options?: { editable?: boolean, timeout?: number }, options?: { editable?: boolean, timeout?: number },
) { ) {
@ -88,7 +88,7 @@ export function toBeEditable(
} }
export function toBeEmpty( export function toBeEmpty(
this: ExpectMatcherContext, this: ExpectMatcherState,
locator: LocatorEx, locator: LocatorEx,
options?: { timeout?: number }, options?: { timeout?: number },
) { ) {
@ -98,7 +98,7 @@ export function toBeEmpty(
} }
export function toBeEnabled( export function toBeEnabled(
this: ExpectMatcherContext, this: ExpectMatcherState,
locator: LocatorEx, locator: LocatorEx,
options?: { enabled?: boolean, timeout?: number }, options?: { enabled?: boolean, timeout?: number },
) { ) {
@ -112,7 +112,7 @@ export function toBeEnabled(
} }
export function toBeFocused( export function toBeFocused(
this: ExpectMatcherContext, this: ExpectMatcherState,
locator: LocatorEx, locator: LocatorEx,
options?: { timeout?: number }, options?: { timeout?: number },
) { ) {
@ -122,7 +122,7 @@ export function toBeFocused(
} }
export function toBeHidden( export function toBeHidden(
this: ExpectMatcherContext, this: ExpectMatcherState,
locator: LocatorEx, locator: LocatorEx,
options?: { timeout?: number }, options?: { timeout?: number },
) { ) {
@ -132,7 +132,7 @@ export function toBeHidden(
} }
export function toBeVisible( export function toBeVisible(
this: ExpectMatcherContext, this: ExpectMatcherState,
locator: LocatorEx, locator: LocatorEx,
options?: { visible?: boolean, timeout?: number }, options?: { visible?: boolean, timeout?: number },
) { ) {
@ -146,7 +146,7 @@ export function toBeVisible(
} }
export function toBeInViewport( export function toBeInViewport(
this: ExpectMatcherContext, this: ExpectMatcherState,
locator: LocatorEx, locator: LocatorEx,
options?: { timeout?: number, ratio?: number }, options?: { timeout?: number, ratio?: number },
) { ) {
@ -156,7 +156,7 @@ export function toBeInViewport(
} }
export function toContainText( export function toContainText(
this: ExpectMatcherContext, this: ExpectMatcherState,
locator: LocatorEx, locator: LocatorEx,
expected: string | RegExp | (string | RegExp)[], expected: string | RegExp | (string | RegExp)[],
options: { timeout?: number, useInnerText?: boolean, ignoreCase?: boolean } = {}, options: { timeout?: number, useInnerText?: boolean, ignoreCase?: boolean } = {},
@ -175,7 +175,7 @@ export function toContainText(
} }
export function toHaveAccessibleDescription( export function toHaveAccessibleDescription(
this: ExpectMatcherContext, this: ExpectMatcherState,
locator: LocatorEx, locator: LocatorEx,
expected: string | RegExp, expected: string | RegExp,
options?: { timeout?: number, ignoreCase?: boolean }, options?: { timeout?: number, ignoreCase?: boolean },
@ -187,7 +187,7 @@ export function toHaveAccessibleDescription(
} }
export function toHaveAccessibleName( export function toHaveAccessibleName(
this: ExpectMatcherContext, this: ExpectMatcherState,
locator: LocatorEx, locator: LocatorEx,
expected: string | RegExp, expected: string | RegExp,
options?: { timeout?: number, ignoreCase?: boolean }, options?: { timeout?: number, ignoreCase?: boolean },
@ -199,7 +199,7 @@ export function toHaveAccessibleName(
} }
export function toHaveAttribute( export function toHaveAttribute(
this: ExpectMatcherContext, this: ExpectMatcherState,
locator: LocatorEx, locator: LocatorEx,
name: string, name: string,
expected: string | RegExp | undefined | { timeout?: number }, expected: string | RegExp | undefined | { timeout?: number },
@ -224,7 +224,7 @@ export function toHaveAttribute(
} }
export function toHaveClass( export function toHaveClass(
this: ExpectMatcherContext, this: ExpectMatcherState,
locator: LocatorEx, locator: LocatorEx,
expected: string | RegExp | (string | RegExp)[], expected: string | RegExp | (string | RegExp)[],
options?: { timeout?: number }, options?: { timeout?: number },
@ -243,7 +243,7 @@ export function toHaveClass(
} }
export function toHaveCount( export function toHaveCount(
this: ExpectMatcherContext, this: ExpectMatcherState,
locator: LocatorEx, locator: LocatorEx,
expected: number, expected: number,
options?: { timeout?: number }, options?: { timeout?: number },
@ -254,7 +254,7 @@ export function toHaveCount(
} }
export function toHaveCSS( export function toHaveCSS(
this: ExpectMatcherContext, this: ExpectMatcherState,
locator: LocatorEx, locator: LocatorEx,
name: string, name: string,
expected: string | RegExp, expected: string | RegExp,
@ -267,7 +267,7 @@ export function toHaveCSS(
} }
export function toHaveId( export function toHaveId(
this: ExpectMatcherContext, this: ExpectMatcherState,
locator: LocatorEx, locator: LocatorEx,
expected: string | RegExp, expected: string | RegExp,
options?: { timeout?: number }, options?: { timeout?: number },
@ -279,7 +279,7 @@ export function toHaveId(
} }
export function toHaveJSProperty( export function toHaveJSProperty(
this: ExpectMatcherContext, this: ExpectMatcherState,
locator: LocatorEx, locator: LocatorEx,
name: string, name: string,
expected: any, expected: any,
@ -291,7 +291,7 @@ export function toHaveJSProperty(
} }
export function toHaveRole( export function toHaveRole(
this: ExpectMatcherContext, this: ExpectMatcherState,
locator: LocatorEx, locator: LocatorEx,
expected: string, expected: string,
options?: { timeout?: number, ignoreCase?: boolean }, options?: { timeout?: number, ignoreCase?: boolean },
@ -305,7 +305,7 @@ export function toHaveRole(
} }
export function toHaveText( export function toHaveText(
this: ExpectMatcherContext, this: ExpectMatcherState,
locator: LocatorEx, locator: LocatorEx,
expected: string | RegExp | (string | RegExp)[], expected: string | RegExp | (string | RegExp)[],
options: { timeout?: number, useInnerText?: boolean, ignoreCase?: boolean } = {}, options: { timeout?: number, useInnerText?: boolean, ignoreCase?: boolean } = {},
@ -324,7 +324,7 @@ export function toHaveText(
} }
export function toHaveValue( export function toHaveValue(
this: ExpectMatcherContext, this: ExpectMatcherState,
locator: LocatorEx, locator: LocatorEx,
expected: string | RegExp, expected: string | RegExp,
options?: { timeout?: number }, options?: { timeout?: number },
@ -336,7 +336,7 @@ export function toHaveValue(
} }
export function toHaveValues( export function toHaveValues(
this: ExpectMatcherContext, this: ExpectMatcherState,
locator: LocatorEx, locator: LocatorEx,
expected: (string | RegExp)[], expected: (string | RegExp)[],
options?: { timeout?: number }, options?: { timeout?: number },
@ -348,7 +348,7 @@ export function toHaveValues(
} }
export function toHaveTitle( export function toHaveTitle(
this: ExpectMatcherContext, this: ExpectMatcherState,
page: Page, page: Page,
expected: string | RegExp, expected: string | RegExp,
options: { timeout?: number } = {}, options: { timeout?: number } = {},
@ -361,7 +361,7 @@ export function toHaveTitle(
} }
export function toHaveURL( export function toHaveURL(
this: ExpectMatcherContext, this: ExpectMatcherState,
page: Page, page: Page,
expected: string | RegExp, expected: string | RegExp,
options?: { ignoreCase?: boolean, timeout?: number }, options?: { ignoreCase?: boolean, timeout?: number },
@ -376,7 +376,7 @@ export function toHaveURL(
} }
export async function toBeOK( export async function toBeOK(
this: ExpectMatcherContext, this: ExpectMatcherState,
response: APIResponseEx response: APIResponseEx
) { ) {
const matcherName = 'toBeOK'; const matcherName = 'toBeOK';
@ -398,7 +398,7 @@ export async function toBeOK(
} }
export async function toPass( export async function toPass(
this: ExpectMatcherContext, this: ExpectMatcherState,
callback: () => any, callback: () => any,
options: { options: {
intervals?: number[]; intervals?: number[];

View file

@ -17,12 +17,11 @@
import { expectTypes, callLogText } from '../util'; import { expectTypes, callLogText } from '../util';
import { kNoElementsFoundError, matcherHint } from './matcherHint'; import { kNoElementsFoundError, matcherHint } from './matcherHint';
import type { MatcherResult } from './matcherHint'; import type { MatcherResult } from './matcherHint';
import { currentExpectTimeout } from '../common/globals'; import type { ExpectMatcherState } from '../../types/test';
import type { ExpectMatcherContext } from './expect';
import type { Locator } from 'playwright-core'; import type { Locator } from 'playwright-core';
export async function toBeTruthy( export async function toBeTruthy(
this: ExpectMatcherContext, this: ExpectMatcherState,
matcherName: string, matcherName: string,
receiver: Locator, receiver: Locator,
receiverType: string, receiverType: string,
@ -39,7 +38,7 @@ export async function toBeTruthy(
promise: this.promise, promise: this.promise,
}; };
const timeout = currentExpectTimeout(options); const timeout = options.timeout ?? this.timeout;
const { matches, log, timedOut, received } = await query(!!this.isNot, timeout); const { matches, log, timedOut, received } = await query(!!this.isNot, timeout);
const notFound = received === kNoElementsFoundError ? received : undefined; const notFound = received === kNoElementsFoundError ? received : undefined;
const actual = matches ? expected : unexpected; const actual = matches ? expected : unexpected;

View file

@ -17,8 +17,7 @@
import { expectTypes, callLogText } from '../util'; import { expectTypes, callLogText } from '../util';
import { matcherHint } from './matcherHint'; import { matcherHint } from './matcherHint';
import type { MatcherResult } from './matcherHint'; import type { MatcherResult } from './matcherHint';
import { currentExpectTimeout } from '../common/globals'; import type { ExpectMatcherState } from '../../types/test';
import type { ExpectMatcherContext } from './expect';
import type { Locator } from 'playwright-core'; import type { Locator } from 'playwright-core';
// Omit colon and one or more spaces, so can call getLabelPrinter. // Omit colon and one or more spaces, so can call getLabelPrinter.
@ -26,7 +25,7 @@ const EXPECTED_LABEL = 'Expected';
const RECEIVED_LABEL = 'Received'; const RECEIVED_LABEL = 'Received';
export async function toEqual<T>( export async function toEqual<T>(
this: ExpectMatcherContext, this: ExpectMatcherState,
matcherName: string, matcherName: string,
receiver: Locator, receiver: Locator,
receiverType: string, receiverType: string,
@ -42,7 +41,7 @@ export async function toEqual<T>(
promise: this.promise, promise: this.promise,
}; };
const timeout = currentExpectTimeout(options); const timeout = options.timeout ?? this.timeout;
const { matches: pass, received, log, timedOut } = await query(!!this.isNot, timeout); const { matches: pass, received, log, timedOut } = await query(!!this.isNot, timeout);

View file

@ -16,7 +16,7 @@
import type { Locator, Page } from 'playwright-core'; import type { Locator, Page } from 'playwright-core';
import type { ExpectScreenshotOptions, Page as PageEx } from 'playwright-core/lib/client/page'; import type { ExpectScreenshotOptions, Page as PageEx } from 'playwright-core/lib/client/page';
import { currentTestInfo, currentExpectTimeout } from '../common/globals'; import { currentTestInfo } from '../common/globals';
import type { ImageComparatorOptions, Comparator } from 'playwright-core/lib/utils'; import type { ImageComparatorOptions, Comparator } from 'playwright-core/lib/utils';
import { getComparator, sanitizeForFilePath } from 'playwright-core/lib/utils'; import { getComparator, sanitizeForFilePath } from 'playwright-core/lib/utils';
import { import {
@ -30,7 +30,7 @@ import fs from 'fs';
import path from 'path'; import path from 'path';
import { mime } from 'playwright-core/lib/utilsBundle'; import { mime } from 'playwright-core/lib/utilsBundle';
import type { TestInfoImpl } from '../worker/testInfo'; import type { TestInfoImpl } from '../worker/testInfo';
import type { ExpectMatcherContext } from './expect'; import type { ExpectMatcherState } from '../../types/test';
import type { MatcherResult } from './matcherHint'; import type { MatcherResult } from './matcherHint';
import type { FullProjectInternal } from '../common/config'; import type { FullProjectInternal } from '../common/config';
@ -291,7 +291,7 @@ class SnapshotHelper {
} }
export function toMatchSnapshot( export function toMatchSnapshot(
this: ExpectMatcherContext, this: ExpectMatcherState,
received: Buffer | string, received: Buffer | string,
nameOrOptions: NameOrSegments | { name?: NameOrSegments } & ImageComparatorOptions = {}, nameOrOptions: NameOrSegments | { name?: NameOrSegments } & ImageComparatorOptions = {},
optOptions: ImageComparatorOptions = {} optOptions: ImageComparatorOptions = {}
@ -348,7 +348,7 @@ export function toHaveScreenshotStepTitle(
} }
export async function toHaveScreenshot( export async function toHaveScreenshot(
this: ExpectMatcherContext, this: ExpectMatcherState,
pageOrLocator: Page | Locator, pageOrLocator: Page | Locator,
nameOrOptions: NameOrSegments | { name?: NameOrSegments } & ToHaveScreenshotOptions = {}, nameOrOptions: NameOrSegments | { name?: NameOrSegments } & ToHaveScreenshotOptions = {},
optOptions: ToHaveScreenshotOptions = {} optOptions: ToHaveScreenshotOptions = {}
@ -380,7 +380,7 @@ export async function toHaveScreenshot(
scale: helper.options.scale ?? 'css', scale: helper.options.scale ?? 'css',
style, style,
isNot: !!this.isNot, isNot: !!this.isNot,
timeout: currentExpectTimeout(helper.options), timeout: helper.options.timeout ?? this.timeout,
comparator: helper.options.comparator, comparator: helper.options.comparator,
maxDiffPixels: helper.options.maxDiffPixels, maxDiffPixels: helper.options.maxDiffPixels,
maxDiffPixelRatio: helper.options.maxDiffPixelRatio, maxDiffPixelRatio: helper.options.maxDiffPixelRatio,

View file

@ -19,17 +19,17 @@ import type { ExpectedTextValue } from '@protocol/channels';
import { isRegExp, isString } from 'playwright-core/lib/utils'; import { isRegExp, isString } from 'playwright-core/lib/utils';
import { expectTypes, callLogText } from '../util'; import { expectTypes, callLogText } from '../util';
import { import {
type ExpectMatcherContext,
printReceivedStringContainExpectedResult, printReceivedStringContainExpectedResult,
printReceivedStringContainExpectedSubstring printReceivedStringContainExpectedSubstring
} from './expect'; } from './expect';
import { EXPECTED_COLOR, matcherErrorMessage } from '../common/expectBundle';
import type { ExpectMatcherState } from '../../types/test';
import { kNoElementsFoundError, matcherHint } from './matcherHint'; import { kNoElementsFoundError, matcherHint } from './matcherHint';
import type { MatcherResult } from './matcherHint'; import type { MatcherResult } from './matcherHint';
import { currentExpectTimeout } from '../common/globals';
import type { Locator } from 'playwright-core'; import type { Locator } from 'playwright-core';
export async function toMatchText( export async function toMatchText(
this: ExpectMatcherContext, this: ExpectMatcherState,
matcherName: string, matcherName: string,
receiver: Locator, receiver: Locator,
receiverType: string, receiverType: string,
@ -49,9 +49,9 @@ export async function toMatchText(
!(expected && typeof expected.test === 'function') !(expected && typeof expected.test === 'function')
) { ) {
throw new Error( throw new Error(
this.utils.matcherErrorMessage( matcherErrorMessage(
matcherHint(this, receiver, matcherName, receiver, expected, matcherOptions), matcherHint(this, receiver, matcherName, receiver, expected, matcherOptions),
`${this.utils.EXPECTED_COLOR( `${EXPECTED_COLOR(
'expected', 'expected',
)} value must be a string or regular expression`, )} value must be a string or regular expression`,
this.utils.printWithType('Expected', expected, this.utils.printExpected), this.utils.printWithType('Expected', expected, this.utils.printExpected),
@ -59,7 +59,7 @@ export async function toMatchText(
); );
} }
const timeout = currentExpectTimeout(options); const timeout = options.timeout ?? this.timeout;
const { matches: pass, received, log, timedOut } = await query(!!this.isNot, timeout); const { matches: pass, received, log, timedOut } = await query(!!this.isNot, timeout);
const stringSubstring = options.matchSubstring ? 'substring' : 'string'; const stringSubstring = options.matchSubstring ? 'substring' : 'string';

View file

@ -6513,6 +6513,7 @@ export type ExpectMatcherState = {
isNot: boolean; isNot: boolean;
promise: 'rejects' | 'resolves' | ''; promise: 'rejects' | 'resolves' | '';
utils: ExpectMatcherUtils; utils: ExpectMatcherUtils;
expand: boolean;
timeout: number; timeout: number;
}; };

View file

@ -361,6 +361,7 @@ export type ExpectMatcherState = {
isNot: boolean; isNot: boolean;
promise: 'rejects' | 'resolves' | ''; promise: 'rejects' | 'resolves' | '';
utils: ExpectMatcherUtils; utils: ExpectMatcherUtils;
expand: boolean;
timeout: number; timeout: number;
}; };