From b244f035bcf15a6061cf8cf029a97346b6b17086 Mon Sep 17 00:00:00 2001 From: Dmitry Gozman Date: Fri, 29 Oct 2021 22:27:57 -0700 Subject: [PATCH] chore: small cleanups around actions (#9895) --- packages/playwright-core/src/server/dom.ts | 1 - packages/playwright-core/src/server/frames.ts | 19 ++++++------------- .../src/server/injected/injectedScript.ts | 13 +++---------- 3 files changed, 9 insertions(+), 24 deletions(-) diff --git a/packages/playwright-core/src/server/dom.ts b/packages/playwright-core/src/server/dom.ts index 8397ebf2f0..f49389eee1 100644 --- a/packages/playwright-core/src/server/dom.ts +++ b/packages/playwright-core/src/server/dom.ts @@ -96,7 +96,6 @@ export class FrameExecutionContext extends js.ExecutionContext { ${injectedScriptSource.source} return new pwExport( ${this.frame._page._delegate.rafCountForStablePosition()}, - ${!!process.env.PWTEST_USE_TIMEOUT_FOR_RAF}, "${this.frame._page._browserContext._browser.options.name}", [${custom.join(',\n')}] ); diff --git a/packages/playwright-core/src/server/frames.ts b/packages/playwright-core/src/server/frames.ts index 2509fdf78d..fa9572337d 100644 --- a/packages/playwright-core/src/server/frames.ts +++ b/packages/playwright-core/src/server/frames.ts @@ -971,15 +971,6 @@ export class Frame extends SdkObject { return undefined as any; } - private async _retryWithSelectorIfNotConnected( - controller: ProgressController, - selector: string, options: types.TimeoutOptions & types.StrictOptions, - action: (progress: Progress, handle: dom.ElementHandle) => Promise): Promise { - return controller.run(async progress => { - return this._retryWithProgressIfNotConnected(progress, selector, options.strict, handle => action(progress, handle)); - }, this._page._timeoutSettings.timeout(options)); - } - async click(metadata: CallMetadata, selector: string, options: types.MouseClickOptions & types.PointerActionWaitOptions & types.NavigatingActionWaitOptions) { const controller = new ProgressController(metadata, this); return controller.run(async progress => { @@ -997,7 +988,7 @@ export class Frame extends SdkObject { async dragAndDrop(metadata: CallMetadata, source: string, target: string, options: types.DragActionOptions & types.PointerActionWaitOptions & types.NavigatingActionWaitOptions = {}) { const controller = new ProgressController(metadata, this); await controller.run(async progress => { - await dom.assertDone(await this._retryWithProgressIfNotConnected(progress, source, options.strict, async handle => { + dom.assertDone(await this._retryWithProgressIfNotConnected(progress, source, options.strict, async handle => { return handle._retryPointerAction(progress, 'move and down', false, async point => { await this._page.mouse.move(point.x, point.y); await this._page.mouse.down(); @@ -1007,7 +998,7 @@ export class Frame extends SdkObject { timeout: progress.timeUntilDeadline(), }); })); - await dom.assertDone(await this._retryWithProgressIfNotConnected(progress, target, options.strict, async handle => { + dom.assertDone(await this._retryWithProgressIfNotConnected(progress, target, options.strict, async handle => { return handle._retryPointerAction(progress, 'move and up', false, async point => { await this._page.mouse.move(point.x, point.y); await this._page.mouse.up(); @@ -1036,8 +1027,10 @@ export class Frame extends SdkObject { async focus(metadata: CallMetadata, selector: string, options: types.TimeoutOptions = {}) { const controller = new ProgressController(metadata, this); - await this._retryWithSelectorIfNotConnected(controller, selector, options, (progress, handle) => handle._focus(progress)); - await this._page._doSlowMo(); + await controller.run(async progress => { + dom.assertDone(await this._retryWithProgressIfNotConnected(progress, selector, undefined, handle => handle._focus(progress))); + await this._page._doSlowMo(); + }, this._page._timeoutSettings.timeout(options)); } async textContent(metadata: CallMetadata, selector: string, options: types.QueryOnSelectorOptions = {}): Promise { diff --git a/packages/playwright-core/src/server/injected/injectedScript.ts b/packages/playwright-core/src/server/injected/injectedScript.ts index 78ec000c74..fa49a3e94e 100644 --- a/packages/playwright-core/src/server/injected/injectedScript.ts +++ b/packages/playwright-core/src/server/injected/injectedScript.ts @@ -66,10 +66,9 @@ export class InjectedScript { private _engines: Map; _evaluator: SelectorEvaluatorImpl; private _stableRafCount: number; - private _replaceRafWithTimeout: boolean; private _browserName: string; - constructor(stableRafCount: number, replaceRafWithTimeout: boolean, browserName: string, customEngines: { name: string, engine: SelectorEngine}[]) { + constructor(stableRafCount: number, browserName: string, customEngines: { name: string, engine: SelectorEngine}[]) { this._evaluator = new SelectorEvaluatorImpl(new Map()); this._engines = new Map(); @@ -95,7 +94,6 @@ export class InjectedScript { this._engines.set(name, engine); this._stableRafCount = stableRafCount; - this._replaceRafWithTimeout = replaceRafWithTimeout; this._browserName = browserName; } @@ -404,7 +402,7 @@ export class InjectedScript { let samePositionCounter = 0; let lastTime = 0; - const predicate = (progress: InjectedScriptProgress, continuePolling: symbol) => { + return this.pollRaf((progress, continuePolling) => { if (force) { progress.log(` forcing action`); return callback(node, progress, continuePolling); @@ -455,12 +453,7 @@ export class InjectedScript { } return callback(node, progress, continuePolling); - }; - - if (this._replaceRafWithTimeout) - return this.pollInterval(16, predicate); - else - return this.pollRaf(predicate); + }); } elementState(node: Node, state: ElementStateWithoutStable): boolean | 'error:notconnected' {