Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .eslintrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ module.exports = {
* Enforced rules
*/
// syntax preferences
"object-curly-spacing": ["error", "always"],
"quotes": [2, "single", {
"avoidEscape": true,
"allowTemplateLiterals": true
Expand Down
4 changes: 2 additions & 2 deletions packages/create-playwright/tests/integration.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -67,9 +67,9 @@ const test = base.extend<TestFixtures>({
},
});

for (const packageManager of ['npm', 'yarn'] as ('npm'|'yarn')[]) {
for (const packageManager of ['npm', 'yarn'] as ('npm' | 'yarn')[]) {
test.describe(`Package manager: ${packageManager}`, () => {
test.use({packageManager});
test.use({ packageManager });

test('should generate a project in the current directory', async ({ run }) => {
const { exitCode, dir, stdout } = await run([], { installGitHubActions: true, testDir: 'e2e', language: 'TypeScript' });
Expand Down
2 changes: 1 addition & 1 deletion src/cli/cli.ts
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,7 @@ const browsers = [
{ alias: 'wk', name: 'WebKit', type: 'webkit' },
];

for (const {alias, name, type} of browsers) {
for (const { alias, name, type } of browsers) {
commandWithOpenOptions(`${alias} [url]`, `open page in ${name}`, [])
.action(function(url, command) {
open({ ...command, browser: type }, url, command.target).catch(logErrorAndExit);
Expand Down
2 changes: 1 addition & 1 deletion src/client/android.ts
Original file line number Diff line number Diff line change
Expand Up @@ -360,7 +360,7 @@ function toSelectorChannel(selector: api.AndroidSelector): channels.AndroidSelec
focusable,
focused,
hasChild: hasChild ? { selector: toSelectorChannel(hasChild.selector) } : undefined,
hasDescendant: hasDescendant ? { selector: toSelectorChannel(hasDescendant.selector), maxDepth: hasDescendant.maxDepth} : undefined,
hasDescendant: hasDescendant ? { selector: toSelectorChannel(hasDescendant.selector), maxDepth: hasDescendant.maxDepth } : undefined,
longClickable,
scrollable,
selected,
Expand Down
6 changes: 3 additions & 3 deletions src/client/browserContext.ts
Original file line number Diff line number Diff line change
Expand Up @@ -71,16 +71,16 @@ export class BrowserContext extends ChannelOwner<channels.BrowserContextChannel,
this.tracing = new Tracing(this);
this._request = FetchRequest.from(initializer.fetchRequest);

this._channel.on('bindingCall', ({binding}) => this._onBinding(BindingCall.from(binding)));
this._channel.on('bindingCall', ({ binding }) => this._onBinding(BindingCall.from(binding)));
this._channel.on('close', () => this._onClose());
this._channel.on('page', ({page}) => this._onPage(Page.from(page)));
this._channel.on('page', ({ page }) => this._onPage(Page.from(page)));
this._channel.on('route', ({ route, request }) => this._onRoute(network.Route.from(route), network.Request.from(request)));
this._channel.on('backgroundPage', ({ page }) => {
const backgroundPage = Page.from(page);
this._backgroundPages.add(backgroundPage);
this.emit(Events.BrowserContext.BackgroundPage, backgroundPage);
});
this._channel.on('serviceWorker', ({worker}) => {
this._channel.on('serviceWorker', ({ worker }) => {
const serviceWorker = Worker.from(worker);
serviceWorker._context = this;
this._serviceWorkers.add(serviceWorker);
Expand Down
2 changes: 1 addition & 1 deletion src/client/browserType.ts
Original file line number Diff line number Diff line change
Expand Up @@ -210,7 +210,7 @@ export class BrowserType extends ChannelOwner<channels.BrowserTypeChannel, chann
throw new Error('Connecting over CDP is only supported in Chromium.');
const logger = params.logger;
return this._wrapApiCall(async (channel: channels.BrowserTypeChannel) => {
const paramsHeaders = Object.assign({'User-Agent': getUserAgent()}, params.headers);
const paramsHeaders = Object.assign({ 'User-Agent': getUserAgent() }, params.headers);
const headers = paramsHeaders ? headersObjectToArray(paramsHeaders) : undefined;
const result = await channel.connectOverCDP({
endpointURL,
Expand Down
2 changes: 1 addition & 1 deletion src/client/input.ts
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ export class Touchscreen implements api.Touchscreen {

async tap(x: number, y: number) {
await this._page._wrapApiCall(async channel => {
await channel.touchscreenTap({x, y});
await channel.touchscreenTap({ x, y });
});
}
}
2 changes: 1 addition & 1 deletion src/client/jsHandle.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ export class JSHandle<T = any> extends ChannelOwner<channels.JSHandleChannel, ch
constructor(parent: ChannelOwner, type: string, guid: string, initializer: channels.JSHandleInitializer) {
super(parent, type, guid, initializer);
this._preview = this._initializer.preview;
this._channel.on('previewUpdated', ({preview}) => this._preview = preview);
this._channel.on('previewUpdated', ({ preview }) => this._preview = preview);
}

async evaluate<R, Arg>(pageFunction: structs.PageFunctionOn<T, Arg, R>, arg?: Arg): Promise<R> {
Expand Down
2 changes: 1 addition & 1 deletion src/client/page.ts
Original file line number Diff line number Diff line change
Expand Up @@ -491,7 +491,7 @@ export class Page extends ChannelOwner<channels.PageChannel, channels.PageInitia
});
}

async close(options: { runBeforeUnload?: boolean } = {runBeforeUnload: undefined}) {
async close(options: { runBeforeUnload?: boolean } = { runBeforeUnload: undefined }) {
try {
await this._wrapApiCall(async (channel: channels.PageChannel) => {
if (this._ownedContext)
Expand Down
4 changes: 2 additions & 2 deletions src/dispatchers/browserContextDispatcher.ts
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ export class BrowserContextDispatcher extends Dispatcher<BrowserContext, channel
this._dispatchEvent('backgroundPage', { page: new PageDispatcher(this._scope, page) });
context.on(CRBrowserContext.CREvents.BackgroundPage, page => this._dispatchEvent('backgroundPage', { page: new PageDispatcher(this._scope, page) }));
for (const serviceWorker of (context as CRBrowserContext).serviceWorkers())
this._dispatchEvent('serviceWorker', { worker: new WorkerDispatcher(this._scope, serviceWorker)});
this._dispatchEvent('serviceWorker', { worker: new WorkerDispatcher(this._scope, serviceWorker) });
context.on(CRBrowserContext.CREvents.ServiceWorker, serviceWorker => this._dispatchEvent('serviceWorker', { worker: new WorkerDispatcher(this._scope, serviceWorker) }));
}
context.on(BrowserContext.Events.Request, (request: Request) => {
Expand All @@ -84,7 +84,7 @@ export class BrowserContextDispatcher extends Dispatcher<BrowserContext, channel
responseEndTiming: request._responseEndTiming,
page: PageDispatcher.fromNullable(this._scope, request.frame()._page.initializedOrUndefined())
}));
context.on(BrowserContext.Events.RequestFinished, ({ request, response}: { request: Request, response: Response | null }) => this._dispatchEvent('requestFinished', {
context.on(BrowserContext.Events.RequestFinished, ({ request, response }: { request: Request, response: Response | null }) => this._dispatchEvent('requestFinished', {
request: RequestDispatcher.from(scope, request),
response: ResponseDispatcher.fromNullable(scope, response),
responseEndTiming: request._responseEndTiming,
Expand Down
2 changes: 1 addition & 1 deletion src/dispatchers/browserTypeDispatcher.ts
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ export class BrowserTypeDispatcher extends Dispatcher<BrowserType, channels.Brow
const waitForNextTask = params.slowMo
? (cb: () => any) => setTimeout(cb, params.slowMo)
: makeWaitForNextTask();
const paramsHeaders = Object.assign({'User-Agent': getUserAgent()}, params.headers || {});
const paramsHeaders = Object.assign({ 'User-Agent': getUserAgent() }, params.headers || {});
const ws = new WebSocket(params.wsEndpoint, [], {
perMessageDeflate: false,
maxPayload: 256 * 1024 * 1024, // 256Mb,
Expand Down
2 changes: 1 addition & 1 deletion src/server/accessibility.ts
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ export class Accessibility {
interestingOnly = true,
root = null,
} = options;
const {tree, needle} = await this._getAXTree(root || undefined);
const { tree, needle } = await this._getAXTree(root || undefined);
if (!interestingOnly) {
if (root)
return needle && serializeTree(needle)[0];
Expand Down
2 changes: 1 addition & 1 deletion src/server/browserContext.ts
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ export abstract class BrowserContext extends SdkObject {
this._closePromise = new Promise(fulfill => this._closePromiseFulfill = fulfill);

if (this._options.recordHar)
this._harRecorder = new HarRecorder(this, {...this._options.recordHar, path: path.join(this._browser.options.artifactsDir, `${createGuid()}.har`)});
this._harRecorder = new HarRecorder(this, { ...this._options.recordHar, path: path.join(this._browser.options.artifactsDir, `${createGuid()}.har`) });

this.tracing = new Tracing(this);
this.fetchRequest = new BrowserContextFetchRequest(this);
Expand Down
2 changes: 1 addition & 1 deletion src/server/chromium/chromium.ts
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ export class Chromium extends BrowserType {
controller.setLogName('browser');
return controller.run(async progress => {
return await this._connectOverCDPInternal(progress, endpointURL, options);
}, TimeoutSettings.timeout({timeout}));
}, TimeoutSettings.timeout({ timeout }));
}

async _connectOverCDPInternal(progress: Progress, endpointURL: string, options: { slowMo?: number, headers?: types.HeadersArray }, onClose?: () => Promise<void>) {
Expand Down
4 changes: 2 additions & 2 deletions src/server/chromium/crAccessibility.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ import * as accessibility from '../accessibility';
import * as types from '../types';

export async function getAccessibilityTree(client: CRSession, needle?: dom.ElementHandle): Promise<{tree: accessibility.AXNode, needle: accessibility.AXNode | null}> {
const {nodes} = await client.send('Accessibility.getFullAXTree');
const { nodes } = await client.send('Accessibility.getFullAXTree');
const tree = CRAXNode.createTree(client, nodes);
return {
tree,
Expand Down Expand Up @@ -97,7 +97,7 @@ class CRAXNode implements accessibility.AXNode {

async _findElement(element: dom.ElementHandle): Promise<CRAXNode | null> {
const objectId = element._objectId;
const {node: {backendNodeId}} = await this._client.send('DOM.describeNode', { objectId });
const { node: { backendNodeId } } = await this._client.send('DOM.describeNode', { objectId });
const needle = this.find(node => node._payload.backendDOMNodeId === backendNodeId);
return needle || null;
}
Expand Down
2 changes: 1 addition & 1 deletion src/server/chromium/crBrowser.ts
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ export class CRBrowser extends Browser {
await Promise.all([...this._crPages.values()].map(page => page.pageOrError()));
}

_onAttachedToTarget({targetInfo, sessionId, waitingForDebugger}: Protocol.Target.attachedToTargetPayload) {
_onAttachedToTarget({ targetInfo, sessionId, waitingForDebugger }: Protocol.Target.attachedToTargetPayload) {
if (targetInfo.type === 'browser')
return;
const session = this._connection.session(sessionId)!;
Expand Down
2 changes: 1 addition & 1 deletion src/server/chromium/crConnection.ts
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,7 @@ export class CRSession extends EventEmitter {
throw new ProtocolError(true, `Target closed`);
const id = this._connection._rawSend(this._sessionId, method, params);
return new Promise((resolve, reject) => {
this._callbacks.set(id, {resolve, reject, error: new ProtocolError(false), method});
this._callbacks.set(id, { resolve, reject, error: new ProtocolError(false), method });
});
}

Expand Down
12 changes: 6 additions & 6 deletions src/server/chromium/crCoverage.ts
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ class JSCoverage {
this._client.send('Profiler.enable'),
this._client.send('Profiler.startPreciseCoverage', { callCount: true, detailed: true }),
this._client.send('Debugger.enable'),
this._client.send('Debugger.setSkipAllPauses', {skip: true})
this._client.send('Debugger.setSkipAllPauses', { skip: true })
]);
}

Expand All @@ -106,7 +106,7 @@ class JSCoverage {
if (!event.url && !this._reportAnonymousScripts)
return;
// This might fail if the page has already navigated away.
const response = await this._client._sendMayFail('Debugger.getScriptSource', {scriptId: event.scriptId});
const response = await this._client._sendMayFail('Debugger.getScriptSource', { scriptId: event.scriptId });
if (response)
this._scriptSources.set(event.scriptId, response.scriptSource);
}
Expand All @@ -130,7 +130,7 @@ class JSCoverage {
continue;
const source = this._scriptSources.get(entry.scriptId);
if (source)
coverage.push({...entry, source});
coverage.push({ ...entry, source });
else
coverage.push(entry);
}
Expand All @@ -157,7 +157,7 @@ class CSSCoverage {

async start(options: types.CSSCoverageOptions = {}) {
assert(!this._enabled, 'CSSCoverage is already enabled');
const {resetOnNavigation = true} = options;
const { resetOnNavigation = true } = options;
this._resetOnNavigation = resetOnNavigation;
this._enabled = true;
this._stylesheetURLs.clear();
Expand Down Expand Up @@ -186,7 +186,7 @@ class CSSCoverage {
if (!header.sourceURL)
return;
// This might fail if the page has already navigated away.
const response = await this._client._sendMayFail('CSS.getStyleSheetText', {styleSheetId: header.styleSheetId});
const response = await this._client._sendMayFail('CSS.getStyleSheetText', { styleSheetId: header.styleSheetId });
if (response) {
this._stylesheetURLs.set(header.styleSheetId, header.sourceURL);
this._stylesheetSources.set(header.styleSheetId, response.text);
Expand Down Expand Up @@ -266,7 +266,7 @@ function convertToDisjointRanges(nestedRanges: {
if (lastResult && lastResult.end === lastOffset)
lastResult.end = point.offset;
else
results.push({start: lastOffset, end: point.offset});
results.push({ start: lastOffset, end: point.offset });
}
lastOffset = point.offset;
if (point.type === 0)
Expand Down
16 changes: 8 additions & 8 deletions src/server/chromium/crDragDrop.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ declare global {
export class DragManager {
private _crPage: CRPage;
private _dragState: Protocol.Input.DragData | null = null;
private _lastPosition = {x: 0, y: 0};
private _lastPosition = { x: 0, y: 0 };
constructor(page: CRPage) {
this._crPage = page;
}
Expand All @@ -50,7 +50,7 @@ export class DragManager {
}

async interceptDragCausedByMove(x: number, y: number, button: types.MouseButton | 'none', buttons: Set<types.MouseButton>, modifiers: Set<types.KeyboardModifier>, moveCallback: () => Promise<void>): Promise<void> {
this._lastPosition = {x, y};
this._lastPosition = { x, y };
if (this._dragState) {
await this._crPage._mainFrameSession._client.send('Input.dispatchDragEvent', {
type: 'dragOver',
Expand All @@ -75,23 +75,23 @@ export class DragManager {
const dragListener = (event: Event) => dragEvent = event;
const mouseListener = () => {
didStartDrag = new Promise<boolean>(callback => {
window.addEventListener('dragstart', dragListener, {once: true, capture: true});
window.addEventListener('dragstart', dragListener, { once: true, capture: true });
setTimeout(() => callback(dragEvent ? !dragEvent.defaultPrevented : false), 0);
});
};
window.addEventListener('mousemove', mouseListener, {once: true, capture: true});
window.addEventListener('mousemove', mouseListener, { once: true, capture: true });
window.__cleanupDrag = async () => {
const val = await didStartDrag;
window.removeEventListener('mousemove', mouseListener, {capture: true});
window.removeEventListener('dragstart', dragListener, {capture: true});
window.removeEventListener('mousemove', mouseListener, { capture: true });
window.removeEventListener('dragstart', dragListener, { capture: true });
return val;
};
}).toString(), true, 'utility').catch(() => {});
}));

client.on('Input.dragIntercepted', onDragIntercepted!);
try {
await client.send('Input.setInterceptDrags', {enabled: true});
await client.send('Input.setInterceptDrags', { enabled: true });
} catch {
// If Input.setInterceptDrags is not supported, just do a regular move.
// This can be removed once we stop supporting old Electron.
Expand All @@ -105,7 +105,7 @@ export class DragManager {
}))).some(x => x);
this._dragState = expectingDrag ? (await dragInterceptedPromise).data : null;
client.off('Input.dragIntercepted', onDragIntercepted!);
await client.send('Input.setInterceptDrags', {enabled: false});
await client.send('Input.setInterceptDrags', { enabled: false });


if (this._dragState) {
Expand Down
4 changes: 2 additions & 2 deletions src/server/chromium/crExecutionContext.ts
Original file line number Diff line number Diff line change
Expand Up @@ -106,9 +106,9 @@ export class CRExecutionContext implements js.ExecutionContextDelegate {

function rewriteError(error: Error): Protocol.Runtime.evaluateReturnValue {
if (error.message.includes('Object reference chain is too long'))
return {result: {type: 'undefined'}};
return { result: { type: 'undefined' } };
if (error.message.includes('Object couldn\'t be returned by value'))
return {result: {type: 'undefined'}};
return { result: { type: 'undefined' } };

if (error instanceof TypeError && error.message.startsWith('Converting circular structure to JSON'))
rewriteErrorMessage(error, error.message + ' Are you passing a nested JSHandle?');
Expand Down
4 changes: 2 additions & 2 deletions src/server/chromium/crNetworkManager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ export class CRNetworkManager {
this._client.send('Network.setCacheDisabled', { cacheDisabled: true }),
this._client.send('Fetch.enable', {
handleAuthRequests: true,
patterns: [{urlPattern: '*', requestStage: 'Request'}, {urlPattern: '*', requestStage: 'Response'}],
patterns: [{ urlPattern: '*', requestStage: 'Request' }, { urlPattern: '*', requestStage: 'Response' }],
}),
]);
} else {
Expand Down Expand Up @@ -146,7 +146,7 @@ export class CRNetworkManager {
response = 'ProvideCredentials';
this._attemptedAuthentications.add(event.requestId);
}
const {username, password} = this._credentials || {username: undefined, password: undefined};
const { username, password } = this._credentials || { username: undefined, password: undefined };
this._client._sendMayFail('Fetch.continueWithAuth', {
requestId: event.requestId,
authChallengeResponse: { response, username, password },
Expand Down
6 changes: 3 additions & 3 deletions src/server/chromium/crPage.ts
Original file line number Diff line number Diff line change
Expand Up @@ -460,7 +460,7 @@ class FrameSession {
this._addBrowserListeners();
const promises: Promise<any>[] = [
this._client.send('Page.enable'),
this._client.send('Page.getFrameTree').then(({frameTree}) => {
this._client.send('Page.getFrameTree').then(({ frameTree }) => {
if (this._isMainFrame()) {
this._handleFrameTree(frameTree);
this._addRendererListeners();
Expand Down Expand Up @@ -815,7 +815,7 @@ class FrameSession {
}

_onLogEntryAdded(event: Protocol.Log.entryAddedPayload) {
const {level, text, args, source, url, lineNumber} = event.entry;
const { level, text, args, source, url, lineNumber } = event.entry;
if (args)
args.map(arg => releaseObject(this._client, arg.objectId!));
if (source !== 'worker') {
Expand Down Expand Up @@ -853,7 +853,7 @@ class FrameSession {
}

_onScreencastFrame(payload: Protocol.Page.screencastFramePayload) {
this._client.send('Page.screencastFrameAck', {sessionId: payload.sessionId}).catch(() => {});
this._client.send('Page.screencastFrameAck', { sessionId: payload.sessionId }).catch(() => {});
const buffer = Buffer.from(payload.data, 'base64');
this._page.emit(Page.Events.ScreencastFrame, {
buffer,
Expand Down
22 changes: 11 additions & 11 deletions src/server/chromium/crPdf.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,17 +21,17 @@ import { CRSession } from './crConnection';
import { readProtocolStream } from './crProtocolHelper';

const PagePaperFormats: { [key: string]: { width: number, height: number }} = {
letter: {width: 8.5, height: 11},
legal: {width: 8.5, height: 14},
tabloid: {width: 11, height: 17},
ledger: {width: 17, height: 11},
a0: {width: 33.1, height: 46.8 },
a1: {width: 23.4, height: 33.1 },
a2: {width: 16.54, height: 23.4 },
a3: {width: 11.7, height: 16.54 },
a4: {width: 8.27, height: 11.7 },
a5: {width: 5.83, height: 8.27 },
a6: {width: 4.13, height: 5.83 },
letter: { width: 8.5, height: 11 },
legal: { width: 8.5, height: 14 },
tabloid: { width: 11, height: 17 },
ledger: { width: 17, height: 11 },
a0: { width: 33.1, height: 46.8 },
a1: { width: 23.4, height: 33.1 },
a2: { width: 16.54, height: 23.4 },
a3: { width: 11.7, height: 16.54 },
a4: { width: 8.27, height: 11.7 },
a5: { width: 5.83, height: 8.27 },
a6: { width: 4.13, height: 5.83 },
};

const unitToPixels: { [key: string]: number } = {
Expand Down
Loading