rewrite socket onto transport interface
This commit is contained in:
parent
d89e8912f6
commit
86c95a47b3
|
|
@ -25,22 +25,40 @@ import { separator } from '../reporters/base';
|
||||||
import { PlaywrightServer } from 'playwright-core/lib/remote/playwrightServer';
|
import { PlaywrightServer } from 'playwright-core/lib/remote/playwrightServer';
|
||||||
import { TestServerDispatcher } from './testServer';
|
import { TestServerDispatcher } from './testServer';
|
||||||
import { EventEmitter } from 'stream';
|
import { EventEmitter } from 'stream';
|
||||||
import { type TestServerSocket, TestServerConnection } from '../isomorphic/testServerConnection';
|
import { type TestServerTransport, TestServerConnection } from '../isomorphic/testServerConnection';
|
||||||
import { createFileMatcherFromArguments } from '../util';
|
import { createFileMatcherFromArguments } from '../util';
|
||||||
import { TeleSuiteUpdater } from '../isomorphic/teleSuiteUpdater';
|
import { TeleSuiteUpdater } from '../isomorphic/teleSuiteUpdater';
|
||||||
|
|
||||||
class InMemoryServerSocket extends EventEmitter implements TestServerSocket {
|
class InMemoryTransport extends EventEmitter implements TestServerTransport {
|
||||||
public readonly send: (data: string) => void;
|
public readonly _send: (data: string) => void;
|
||||||
public readonly close: () => void;
|
|
||||||
|
|
||||||
constructor(send: (data: any) => void, close: () => void = () => {}) {
|
constructor(send: (data: any) => void) {
|
||||||
super();
|
super();
|
||||||
this.send = send;
|
this._send = send;
|
||||||
this.close = close;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
addEventListener(event: string, listener: (e: any) => void) {
|
close() {
|
||||||
this.addListener(event, listener);
|
this.emit('close');
|
||||||
|
}
|
||||||
|
|
||||||
|
onclose(listener: () => void): void {
|
||||||
|
this.on('close', listener);
|
||||||
|
}
|
||||||
|
|
||||||
|
onerror(listener: () => void): void {
|
||||||
|
this.on('error', listener);
|
||||||
|
}
|
||||||
|
|
||||||
|
onmessage(listener: (message: string) => void): void {
|
||||||
|
this.on('message', listener);
|
||||||
|
}
|
||||||
|
|
||||||
|
onopen(listener: () => void): void {
|
||||||
|
this.on('open', listener);
|
||||||
|
}
|
||||||
|
|
||||||
|
send(data: string): void {
|
||||||
|
this._send(data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -55,22 +73,22 @@ export async function runWatchModeLoop(configLocation: ConfigLocation, initialOp
|
||||||
const options: WatchModeOptions = { ...initialOptions };
|
const options: WatchModeOptions = { ...initialOptions };
|
||||||
|
|
||||||
const testServerDispatcher = new TestServerDispatcher(configLocation);
|
const testServerDispatcher = new TestServerDispatcher(configLocation);
|
||||||
const inMemorySocket = new InMemoryServerSocket(
|
const transport = new InMemoryTransport(
|
||||||
async data => {
|
async data => {
|
||||||
const { id, method, params } = JSON.parse(data);
|
const { id, method, params } = JSON.parse(data);
|
||||||
try {
|
try {
|
||||||
const result = await testServerDispatcher.transport.dispatch(method, params);
|
const result = await testServerDispatcher.transport.dispatch(method, params);
|
||||||
inMemorySocket.emit('message', { data: JSON.stringify({ id, result }) });
|
transport.emit('message', JSON.stringify({ id, result }));
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
inMemorySocket.emit('message', { data: JSON.stringify({ id, error: String(e) }) });
|
transport.emit('message', JSON.stringify({ id, error: String(e) }));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
testServerDispatcher.transport.sendEvent = (method, params) => {
|
testServerDispatcher.transport.sendEvent = (method, params) => {
|
||||||
inMemorySocket.emit('message', { data: JSON.stringify({ method, params }) });
|
transport.emit('message', JSON.stringify({ method, params }));
|
||||||
};
|
};
|
||||||
const testServerConnection = new TestServerConnection(inMemorySocket);
|
const testServerConnection = new TestServerConnection(transport);
|
||||||
inMemorySocket.emit('open');
|
transport.emit('open');
|
||||||
|
|
||||||
const telesuiteUpdater = new TeleSuiteUpdater({ pathSeparator: path.sep, onUpdate() { } });
|
const telesuiteUpdater = new TeleSuiteUpdater({ pathSeparator: path.sep, onUpdate() { } });
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue