Skip to content

Commit 2b0b0a9

Browse files
authored
fix(misc): assorted fixes (#3031)
1 parent ced0bc2 commit 2b0b0a9

File tree

7 files changed

+16
-20
lines changed

7 files changed

+16
-20
lines changed

src/frames.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -685,7 +685,7 @@ export class Frame {
685685
let result;
686686
if (path !== null) {
687687
let contents = await util.promisify(fs.readFile)(path, 'utf8');
688-
contents += '//# sourceURL=' + path.replace(/\n/g, '');
688+
contents += '\n//# sourceURL=' + path.replace(/\n/g, '');
689689
result = (await context.evaluateHandleInternal(addScriptContent, { content: contents, type })).asElement()!;
690690
} else {
691691
result = (await context.evaluateHandleInternal(addScriptContent, { content: content!, type })).asElement()!;
@@ -740,7 +740,7 @@ export class Frame {
740740

741741
if (path !== null) {
742742
let contents = await util.promisify(fs.readFile)(path, 'utf8');
743-
contents += '/*# sourceURL=' + path.replace(/\n/g, '') + '*/';
743+
contents += '\n/*# sourceURL=' + path.replace(/\n/g, '') + '*/';
744744
return (await context.evaluateHandleInternal(addStyleContent, contents)).asElement()!;
745745
}
746746

src/rpc/client/browserContext.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ import { Browser } from './browser';
2626
import { Events } from '../../events';
2727
import { TimeoutSettings } from '../../timeoutSettings';
2828
import { Waiter } from './waiter';
29-
import { TimeoutError } from '../../errors';
3029
import { headersObjectToArray } from '../serializers';
3130

3231
export class BrowserContext extends ChannelOwner<BrowserContextChannel, BrowserContextInitializer> {
@@ -207,7 +206,7 @@ export class BrowserContext extends ChannelOwner<BrowserContextChannel, BrowserC
207206
const timeout = this._timeoutSettings.timeout(typeof optionsOrPredicate === 'function' ? {} : optionsOrPredicate);
208207
const predicate = typeof optionsOrPredicate === 'function' ? optionsOrPredicate : optionsOrPredicate.predicate;
209208
const waiter = new Waiter();
210-
waiter.rejectOnTimeout(timeout, new TimeoutError(`Timeout while waiting for event "${event}"`));
209+
waiter.rejectOnTimeout(timeout, `Timeout while waiting for event "${event}"`);
211210
if (event !== Events.BrowserContext.Close)
212211
waiter.rejectOnEvent(this, Events.BrowserContext.Close, new Error('Context closed'));
213212
const result = await waiter.waitForEvent(this, event, predicate as any);

src/rpc/client/electron.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ import { serializeArgument, FuncOn, parseResult, SmartHandle, JSHandle } from '.
2323
import { ElectronEvents, ElectronLaunchOptionsBase } from '../../server/electron';
2424
import { TimeoutSettings } from '../../timeoutSettings';
2525
import { Waiter } from './waiter';
26-
import { TimeoutError } from '../../errors';
2726
import { Events } from '../../events';
2827
import { LoggerSink } from '../../loggerSink';
2928
import { envObjectToArray } from '../serializers';
@@ -102,7 +101,7 @@ export class ElectronApplication extends ChannelOwner<ElectronApplicationChannel
102101
const timeout = this._timeoutSettings.timeout(typeof optionsOrPredicate === 'function' ? {} : optionsOrPredicate);
103102
const predicate = typeof optionsOrPredicate === 'function' ? optionsOrPredicate : optionsOrPredicate.predicate;
104103
const waiter = new Waiter();
105-
waiter.rejectOnTimeout(timeout, new TimeoutError(`Timeout while waiting for event "${event}"`));
104+
waiter.rejectOnTimeout(timeout, `Timeout while waiting for event "${event}"`);
106105
if (event !== ElectronEvents.ElectronApplication.Close)
107106
waiter.rejectOnEvent(this, ElectronEvents.ElectronApplication.Close, new Error('Electron application closed'));
108107
const result = await waiter.waitForEvent(this, event, predicate as any);

src/rpc/client/frame.ts

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ import { Page } from './page';
2929
import { EventEmitter } from 'events';
3030
import { Waiter } from './waiter';
3131
import { Events } from '../../events';
32-
import { TimeoutError } from '../../errors';
3332

3433
const fsReadFileAsync = util.promisify(fs.readFile.bind(fs));
3534

@@ -94,20 +93,21 @@ export class Frame extends ChannelOwner<FrameChannel, FrameInitializer> {
9493
});
9594
}
9695

97-
private _setupNavigationWaiter(): Waiter {
96+
private _setupNavigationWaiter(options: types.TimeoutOptions): Waiter {
9897
const waiter = new Waiter();
9998
waiter.rejectOnEvent(this._page!, Events.Page.Close, new Error('Navigation failed because page was closed!'));
10099
waiter.rejectOnEvent(this._page!, Events.Page.Crash, new Error('Navigation failed because page crashed!'));
101100
waiter.rejectOnEvent<Frame>(this._page!, Events.Page.FrameDetached, new Error('Navigating frame was detached!'), frame => frame === this);
101+
const timeout = this._page!._timeoutSettings.navigationTimeout(options);
102+
waiter.rejectOnTimeout(timeout, `Timeout ${timeout}ms exceeded.`);
103+
102104
return waiter;
103105
}
104106

105107
async waitForNavigation(options: types.WaitForNavigationOptions = {}): Promise<network.Response | null> {
106108
return this._wrapApiCall(this._apiName('waitForNavigation'), async () => {
107109
const waitUntil = verifyLoadState('waitUntil', options.waitUntil === undefined ? 'load' : options.waitUntil);
108-
const timeout = this._page!._timeoutSettings.navigationTimeout(options);
109-
const waiter = this._setupNavigationWaiter();
110-
waiter.rejectOnTimeout(timeout, new TimeoutError(`Timeout ${timeout}ms exceeded.`));
110+
const waiter = this._setupNavigationWaiter(options);
111111

112112
const toUrl = typeof options.url === 'string' ? ` to "${options.url}"` : '';
113113
waiter.log(`waiting for navigation${toUrl} until "${waitUntil}"`);
@@ -144,9 +144,7 @@ export class Frame extends ChannelOwner<FrameChannel, FrameInitializer> {
144144
if (this._loadStates.has(state))
145145
return;
146146
return this._wrapApiCall(this._apiName('waitForLoadState'), async () => {
147-
const timeout = this._page!._timeoutSettings.navigationTimeout(options);
148-
const waiter = this._setupNavigationWaiter();
149-
waiter.rejectOnTimeout(timeout, new TimeoutError(`Timeout ${timeout}ms exceeded.`));
147+
const waiter = this._setupNavigationWaiter(options);
150148
await waiter.waitForEvent<types.LifecycleEvent>(this._eventEmitter, 'loadstate', s => {
151149
waiter.log(` "${s}" event fired`);
152150
return s === state;

src/rpc/client/page.ts

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

18-
import { TimeoutError } from '../../errors';
1918
import { Events } from '../../events';
2019
import { assert, assertMaxArguments, helper, Listener } from '../../helper';
2120
import { TimeoutSettings } from '../../timeoutSettings';
@@ -335,7 +334,7 @@ export class Page extends ChannelOwner<PageChannel, PageInitializer> {
335334
const timeout = this._timeoutSettings.timeout(typeof optionsOrPredicate === 'function' ? {} : optionsOrPredicate);
336335
const predicate = typeof optionsOrPredicate === 'function' ? optionsOrPredicate : optionsOrPredicate.predicate;
337336
const waiter = new Waiter();
338-
waiter.rejectOnTimeout(timeout, new TimeoutError(`Timeout while waiting for event "${event}"`));
337+
waiter.rejectOnTimeout(timeout, `Timeout while waiting for event "${event}"`);
339338
if (event !== Events.Page.Crash)
340339
waiter.rejectOnEvent(this, Events.Page.Crash, new Error('Page crashed'));
341340
if (event !== Events.Page.Close)

src/rpc/client/waiter.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
import { EventEmitter } from 'events';
1818
import { rewriteErrorMessage } from '../../utils/stackTrace';
19+
import { TimeoutError } from '../../errors';
1920

2021
export class Waiter {
2122
private _dispose: (() => void)[] = [];
@@ -33,11 +34,11 @@ export class Waiter {
3334
this._rejectOn(promise.then(() => { throw error; }), dispose);
3435
}
3536

36-
rejectOnTimeout(timeout: number, error: Error) {
37+
rejectOnTimeout(timeout: number, message: string) {
3738
if (!timeout)
3839
return;
3940
const { promise, dispose } = waitForTimeout(timeout);
40-
this._rejectOn(promise.then(() => { throw error; }), dispose);
41+
this._rejectOn(promise.then(() => { throw new TimeoutError(message); }), dispose);
4142
}
4243

4344
dispose() {

test/page.jest.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -979,13 +979,13 @@ describe('Page.selectOption', function() {
979979
});
980980
it('should return [] on no matched values', async({page, server}) => {
981981
await page.goto(server.PREFIX + '/input/select.html');
982-
const result = await page.selectOption('select','42','abc');
982+
const result = await page.selectOption('select', ['42','abc']);
983983
expect(result).toEqual([]);
984984
});
985985
it('should return an array of matched values', async({page, server}) => {
986986
await page.goto(server.PREFIX + '/input/select.html');
987987
await page.evaluate(() => makeMultiple());
988-
const result = await page.selectOption('select','blue','black','magenta');
988+
const result = await page.selectOption('select', ['blue','black','magenta']);
989989
expect(result.reduce((accumulator,current) => ['blue', 'black', 'magenta'].includes(current) && accumulator, true)).toEqual(true);
990990
});
991991
it('should return an array of one element when multiple is not set', async({page, server}) => {

0 commit comments

Comments
 (0)