address comments

This commit is contained in:
Yury Semikhatsky 2024-05-23 15:28:13 -07:00
parent 62054a3b36
commit 7994315d0b
4 changed files with 23 additions and 25 deletions

View file

@ -33,24 +33,6 @@ export function currentlyLoadingFileSuite() {
return currentFileSuite;
}
let currentExpectConfigureTimeout: number | undefined;
export function setCurrentExpectConfigureTimeout(timeout: number | undefined) {
currentExpectConfigureTimeout = timeout;
}
export function currentExpectTimeout(options: { timeout?: number }) {
const testInfo = currentTestInfo();
if (options.timeout !== undefined)
return options.timeout;
if (currentExpectConfigureTimeout !== undefined)
return currentExpectConfigureTimeout;
let defaultExpectTimeout = testInfo?._projectInternal?.expect?.timeout;
if (typeof defaultExpectTimeout === 'undefined')
defaultExpectTimeout = 5000;
return defaultExpectTimeout;
}
let _isWorkerProcess = false;
export function setIsWorkerProcess() {

View file

@ -50,7 +50,7 @@ import {
} from './matchers';
import { toMatchSnapshot, toHaveScreenshot, toHaveScreenshotStepTitle } from './toMatchSnapshot';
import type { Expect, ExpectMatcherState } from '../../types/test';
import { currentTestInfo, currentExpectTimeout, setCurrentExpectConfigureTimeout } from '../common/globals';
import { currentTestInfo } from '../common/globals';
import { filteredStackTrace, trimLongString } from '../util';
import {
expect as expectLibrary,
@ -129,18 +129,18 @@ function createExpect(info: ExpectMetaInfo) {
if (property === 'extend') {
return (matchers: any) => {
const wrappedMatchers: any = {};
Object.entries(matchers).forEach(([name, matcher]) => {
for (const [name, matcher] of Object.entries(matchers)) {
wrappedMatchers[name] = function(...args: any[]) {
const { isNot, promise, utils } = this;
const newThis: ExpectMatcherState = {
isNot,
promise,
utils,
timeout: currentExpectTimeout({})
timeout: currentExpectTimeout()
};
return (matcher as any).call(newThis, ...args);
};
});
}
expectLibrary.extend(wrappedMatchers);
return expectInstance;
};
@ -255,7 +255,7 @@ class ExpectMetaInfoProxyHandler implements ProxyHandler<any> {
if (this._info.isPoll) {
if ((customAsyncMatchers as any)[matcherName] || matcherName === 'resolves' || matcherName === 'rejects')
throw new Error(`\`expect.poll()\` does not support "${matcherName}" matcher.`);
matcher = (...args: any[]) => pollMatcher(matcherName, !!this._info.isNot, this._info.pollIntervals, currentExpectTimeout({ timeout: this._info.pollTimeout }), this._info.generator!, ...args);
matcher = (...args: any[]) => pollMatcher(matcherName, !!this._info.isNot, this._info.pollIntervals, this._info.pollTimeout ?? currentExpectTimeout(), this._info.generator!, ...args);
}
return (...args: any[]) => {
const testInfo = currentTestInfo();
@ -347,6 +347,22 @@ async function pollMatcher(matcherName: any, isNot: boolean, pollIntervals: numb
}
}
let currentExpectConfigureTimeout: number | undefined;
function setCurrentExpectConfigureTimeout(timeout: number | undefined) {
currentExpectConfigureTimeout = timeout;
}
function currentExpectTimeout() {
if (currentExpectConfigureTimeout !== undefined)
return currentExpectConfigureTimeout;
const testInfo = currentTestInfo();
let defaultExpectTimeout = testInfo?._projectInternal?.expect?.timeout;
if (typeof defaultExpectTimeout === 'undefined')
defaultExpectTimeout = 5000;
return defaultExpectTimeout;
}
function computeArgsSuffix(matcherName: string, args: any[]) {
let value = '';
if (matcherName === 'toHaveScreenshot')

View file

@ -6511,7 +6511,7 @@ export interface ExpectMatcherUtils {
export type ExpectMatcherState = {
/**
* Wehther this matcher was called with the negated .not modifier.
* Whether this matcher was called with the negated .not modifier.
*/
isNot: boolean;
/**

View file

@ -359,7 +359,7 @@ export interface ExpectMatcherUtils {
export type ExpectMatcherState = {
/**
* Wehther this matcher was called with the negated .not modifier.
* Whether this matcher was called with the negated .not modifier.
*/
isNot: boolean;
/**