Skip to content

Commit 4a9b336

Browse files
authored
chore: for not use Node's events in client (#34791)
1 parent 6833b66 commit 4a9b336

File tree

10 files changed

+22
-15
lines changed

10 files changed

+22
-15
lines changed

packages/playwright-core/src/client/android.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,7 @@
1414
* limitations under the License.
1515
*/
1616

17-
import { EventEmitter } from 'events';
18-
17+
import { EventEmitter } from './eventEmitter';
1918
import { BrowserContext, prepareBrowserContextParams } from './browserContext';
2019
import { ChannelOwner } from './channelOwner';
2120
import { TargetClosedError, isTargetClosedError } from './errors';

packages/playwright-core/src/client/browserType.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,6 @@
1414
* limitations under the License.
1515
*/
1616

17-
import path from 'path';
18-
1917
import { Browser } from './browser';
2018
import { BrowserContext, prepareBrowserContextParams } from './browserContext';
2119
import { ChannelOwner } from './channelOwner';
@@ -101,7 +99,7 @@ export class BrowserType extends ChannelOwner<channels.BrowserTypeChannel> imple
10199
ignoreAllDefaultArgs: !!options.ignoreDefaultArgs && !Array.isArray(options.ignoreDefaultArgs),
102100
env: options.env ? envObjectToArray(options.env) : undefined,
103101
channel: options.channel,
104-
userDataDir: (path.isAbsolute(userDataDir) || !userDataDir) ? userDataDir : path.resolve(userDataDir),
102+
userDataDir: (this._platform.path().isAbsolute(userDataDir) || !userDataDir) ? userDataDir : this._platform.path().resolve(userDataDir),
105103
};
106104
return await this._wrapApiCall(async () => {
107105
const result = await this._channel.launchPersistentContext(persistentParams);

packages/playwright-core/src/client/connection.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@
1414
* limitations under the License.
1515
*/
1616

17-
import { EventEmitter } from 'events';
1817

18+
import { EventEmitter } from './eventEmitter';
1919
import { Android, AndroidDevice, AndroidSocket } from './android';
2020
import { Artifact } from './artifact';
2121
import { Browser } from './browser';

packages/playwright-core/src/client/eventEmitter.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,6 @@
2222
* USE OR OTHER DEALINGS IN THE SOFTWARE.
2323
*/
2424

25-
import { EventEmitter as OriginalEventEmitter } from 'events';
26-
2725
import { isUnderTest } from '../utils/isomorphic/debug';
2826

2927
import type { EventEmitter as EventEmitterType } from 'events';
@@ -32,6 +30,12 @@ type EventType = string | symbol;
3230
type Listener = (...args: any[]) => any;
3331
type EventMap = Record<EventType, Listener | Listener[]>;
3432

33+
let defaultMaxListenersProvider = () => 10;
34+
35+
export function setDefaultMaxListenersProvider(provider: () => number) {
36+
defaultMaxListenersProvider = provider;
37+
}
38+
3539
export class EventEmitter implements EventEmitterType {
3640

3741
private _events: EventMap | undefined = undefined;
@@ -58,7 +62,7 @@ export class EventEmitter implements EventEmitterType {
5862
}
5963

6064
getMaxListeners(): number {
61-
return this._maxListeners === undefined ? OriginalEventEmitter.defaultMaxListeners : this._maxListeners;
65+
return this._maxListeners === undefined ? defaultMaxListenersProvider() : this._maxListeners;
6266
}
6367

6468
emit(type: EventType, ...args: any[]): boolean {

packages/playwright-core/src/client/frame.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,7 @@
1515
* limitations under the License.
1616
*/
1717

18-
import { EventEmitter } from 'events';
19-
18+
import { EventEmitter } from './eventEmitter';
2019
import { ChannelOwner } from './channelOwner';
2120
import { addSourceUrlToScript } from './clientHelper';
2221
import { ElementHandle, convertInputFiles, convertSelectOptionValues } from './elementHandle';

packages/playwright-core/src/client/network.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,6 @@
1414
* limitations under the License.
1515
*/
1616

17-
import { URLSearchParams } from 'url';
18-
1917
import { ChannelOwner } from './channelOwner';
2018
import { isTargetClosedError } from './errors';
2119
import { Events } from './events';

packages/playwright-core/src/client/page.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -799,7 +799,7 @@ export class Page extends ChannelOwner<channels.PageChannel> implements api.Page
799799
}
800800

801801
async pause(_options?: { __testHookKeepTestTimeout: boolean }) {
802-
if (require('inspector').url())
802+
if (this._platform.isDebuggerAttached())
803803
return;
804804
const defaultNavigationTimeout = this._browserContext._timeoutSettings.defaultNavigationTimeout();
805805
const defaultTimeout = this._browserContext._timeoutSettings.defaultTimeout();

packages/playwright-core/src/common/platform.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ export type Platform = {
4242
createGuid: () => string;
4343
fs: () => typeof fs;
4444
inspectCustom: symbol | undefined;
45+
isDebuggerAttached(): boolean;
4546
isLogEnabled(name: 'api' | 'channel'): boolean;
4647
log(name: 'api' | 'channel', message: string | Error | object): void;
4748
path: () => typeof path;
@@ -70,6 +71,7 @@ export const webPlatform: Platform = {
7071

7172
inspectCustom: undefined,
7273

74+
isDebuggerAttached: () => false,
7375

7476
isLogEnabled(name: 'api' | 'channel') {
7577
return false;
@@ -105,6 +107,8 @@ export const emptyPlatform: Platform = {
105107

106108
inspectCustom: undefined,
107109

110+
isDebuggerAttached: () => false,
111+
108112
isLogEnabled(name: 'api' | 'channel') {
109113
return false;
110114
},

packages/playwright-core/src/inProcessFactory.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@
1414
* limitations under the License.
1515
*/
1616

17-
import path from 'path';
17+
import * as path from 'path';
18+
import { EventEmitter } from 'events';
1819

1920
import { AndroidServerLauncherImpl } from './androidServerImpl';
2021
import { BrowserServerLauncherImpl } from './browserServerImpl';
@@ -25,6 +26,7 @@ import { setDebugMode } from './utils/isomorphic/debug';
2526
import { getFromENV } from './server/utils/env';
2627
import { nodePlatform } from './server/utils/nodePlatform';
2728
import { setPlatformForSelectors } from './client/selectors';
29+
import { setDefaultMaxListenersProvider } from './client/eventEmitter';
2830

2931
import type { Playwright as PlaywrightAPI } from './client/playwright';
3032
import type { Language } from './utils';
@@ -35,6 +37,7 @@ export function createInProcessPlaywright(platform: Platform): PlaywrightAPI {
3537
const playwright = createPlaywright({ sdkLanguage: (process.env.PW_LANG_NAME as Language | undefined) || 'javascript' });
3638
setDebugMode(getFromENV('PWDEBUG') || '');
3739
setPlatformForSelectors(nodePlatform);
40+
setDefaultMaxListenersProvider(() => EventEmitter.defaultMaxListeners);
3841

3942
setLibraryStackPrefix(path.join(__dirname, '..'));
4043

packages/playwright-core/src/server/utils/nodePlatform.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,8 @@ export const nodePlatform: Platform = {
6767

6868
inspectCustom: util.inspect.custom,
6969

70+
isDebuggerAttached: () => !!require('inspector').url(),
71+
7072
isLogEnabled(name: 'api' | 'channel') {
7173
return debugLogger.isEnabled(name);
7274
},

0 commit comments

Comments
 (0)