Skip to content

Commit d71b9cd

Browse files
committed
feat(emulators): drive devtools from emulator
1 parent d944805 commit d71b9cd

File tree

89 files changed

+1016
-977
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

89 files changed

+1016
-977
lines changed

commons/test/TypeSerializer.test.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,11 @@ test('should be able to serialize and deserialize in a browser window', async ()
4141
await puppet.start();
4242
const context = await puppet.newContext(
4343
{
44-
userAgent: 'Page tests',
45-
proxyPassword: '',
46-
viewport: { width: 1920, height: 800 } as any,
44+
userAgentString: 'Page tests',
45+
configuration: {},
46+
async onNewPuppetPage(): Promise<any> {
47+
return null;
48+
},
4749
} as any,
4850
log,
4951
);
Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,20 @@
1-
import { IPuppetWorker } from '@secret-agent/puppet-interfaces/IPuppetWorker';
1+
import { IPuppetPage } from '@secret-agent/core-interfaces/IPuppetPage';
2+
import { IPuppetWorker } from '@secret-agent/core-interfaces/IPuppetWorker';
23
import INetworkEmulation from './INetworkEmulation';
3-
import IUserProfile from './IUserProfile';
4-
import INewDocumentInjectedScript from './INewDocumentInjectedScript';
54
import IWindowFraming from './IWindowFraming';
5+
import IBrowserEmulatorConfiguration from './IBrowserEmulatorConfiguration';
66

77
export default interface IBrowserEmulator extends INetworkEmulation {
88
readonly userAgentString: string;
99
readonly osPlatform: string;
1010
readonly canPolyfill: boolean;
1111
readonly windowFramingBase?: IWindowFraming;
1212
readonly windowFraming?: IWindowFraming;
13-
locale: string;
14-
userProfile: IUserProfile;
15-
sessionId?: string;
13+
configuration: IBrowserEmulatorConfiguration;
14+
sessionId: string;
1615

17-
newDocumentInjectedScripts(): Promise<INewDocumentInjectedScript[]>;
18-
newWorkerInjectedScripts(
19-
workerType: IPuppetWorker['type'],
20-
): Promise<INewDocumentInjectedScript[]>;
16+
configure(options: IBrowserEmulatorConfiguration): Promise<void>;
17+
18+
onNewPuppetPage(page: IPuppetPage): Promise<any>;
19+
onNewPuppetWorker?(worker: IPuppetWorker): Promise<any>;
2120
}

core-interfaces/IBrowserEmulatorClass.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
import IBrowserEmulator from './IBrowserEmulator';
22
import IBrowserEngine from './IBrowserEngine';
33
import IUserAgentMatchMeta from './IUserAgentMatchMeta';
4+
import IBrowserEmulatorConfiguration from './IBrowserEmulatorConfiguration';
45

56
export default interface IBrowserEmulatorClass {
67
id: string;
78
roundRobinPercent: number;
89
engine: IBrowserEngine;
9-
new (matchMeta?: IUserAgentMatchMeta): IBrowserEmulator;
10+
new (options: IBrowserEmulatorConfiguration, matchMeta?: IUserAgentMatchMeta): IBrowserEmulator;
1011
isMatch: (matchMeta: IUserAgentMatchMeta) => boolean;
1112
}
1213

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import IUserProfile from './IUserProfile';
2+
import IViewport from './IViewport';
3+
4+
export default interface IBrowserEmulatorConfiguration {
5+
userProfile?: IUserProfile;
6+
viewport?: IViewport;
7+
timezoneId?: string;
8+
locale?: string;
9+
}

core-interfaces/IBrowserEmulatorHooks.ts

Whitespace-only changes.
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import ITypedEventEmitter from './ITypedEventEmitter';
2+
3+
export default interface IConnectionTransport
4+
extends ITypedEventEmitter<IConnectionTransportEvents> {
5+
url?: string;
6+
send(body: string);
7+
close();
8+
clone(): IConnectionTransport;
9+
waitForOpen: Promise<void>;
10+
}
11+
12+
export interface IConnectionTransportEvents {
13+
close: void;
14+
message: string;
15+
}

core-interfaces/ICreateSessionOptions.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ import IViewport from './IViewport';
66
export default interface ICreateSessionOptions extends ISessionOptions {
77
sessionName?: string;
88
browserEmulatorId?: string;
9-
userProfile?: IUserProfile;
109
scriptInstanceMeta?: IScriptInstanceMeta;
10+
userProfile?: IUserProfile;
1111
viewport?: IViewport;
1212
timezoneId?: string;
1313
locale?: string;
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
import { ProtocolMapping } from 'devtools-protocol/types/protocol-mapping';
2+
3+
export default interface IDevtoolsSession {
4+
id: string;
5+
send<T extends keyof ProtocolMapping.Commands>(
6+
method: T,
7+
params: ProtocolMapping.Commands[T]['paramsType'][0],
8+
sendInitiator?: object,
9+
): Promise<ProtocolMapping.Commands[T]['returnType']>;
10+
11+
onMessage(object: IDevtoolsResponseMessage & IDevtoolsEventMessage): void;
12+
}
13+
14+
export interface IDevtoolsResponseMessage {
15+
sessionId: string;
16+
id: number;
17+
error?: { message: string; data: any };
18+
result?: any;
19+
}
20+
21+
export interface IDevtoolsEventMessage {
22+
sessionId: string;
23+
method: string;
24+
params: object;
25+
}

0 commit comments

Comments
 (0)