test: unflake some tests (#23984)

This commit is contained in:
Dmitry Gozman 2023-06-30 13:08:18 -07:00 committed by GitHub
parent e28312ba63
commit 92c738b14a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 31 additions and 17 deletions

View file

@ -257,8 +257,8 @@ export class Route extends SdkObject {
async abort(errorCode: string = 'failed') { async abort(errorCode: string = 'failed') {
this._startHandling(); this._startHandling();
await this._delegate.abort(errorCode);
this._request._context.emit(BrowserContext.Events.RequestAborted, this._request); this._request._context.emit(BrowserContext.Events.RequestAborted, this._request);
await this._delegate.abort(errorCode);
this._endHandling(); this._endHandling();
} }
@ -285,13 +285,13 @@ export class Route extends SdkObject {
} }
const headers = [...(overrides.headers || [])]; const headers = [...(overrides.headers || [])];
this._maybeAddCorsHeaders(headers); this._maybeAddCorsHeaders(headers);
this._request._context.emit(BrowserContext.Events.RequestFulfilled, this._request);
await this._delegate.fulfill({ await this._delegate.fulfill({
status: overrides.status || 200, status: overrides.status || 200,
headers, headers,
body, body,
isBase64, isBase64,
}); });
this._request._context.emit(BrowserContext.Events.RequestFulfilled, this._request);
this._endHandling(); this._endHandling();
} }
@ -322,9 +322,9 @@ export class Route extends SdkObject {
throw new Error('New URL must have same protocol as overridden URL'); throw new Error('New URL must have same protocol as overridden URL');
} }
this._request._setOverrides(overrides); this._request._setOverrides(overrides);
await this._delegate.continue(this._request, overrides);
if (!overrides.isFallback) if (!overrides.isFallback)
this._request._context.emit(BrowserContext.Events.RequestContinued, this._request); this._request._context.emit(BrowserContext.Events.RequestContinued, this._request);
await this._delegate.continue(this._request, overrides);
this._endHandling(); this._endHandling();
} }

View file

@ -318,8 +318,6 @@ it('should isolate proxy credentials between contexts', async ({ contextFactory,
}); });
it('should exclude patterns', async ({ contextFactory, server, browserName, headless, proxyServer }) => { it('should exclude patterns', async ({ contextFactory, server, browserName, headless, proxyServer }) => {
it.fixme(browserName === 'chromium' && !headless, 'Chromium headed crashes with CHECK(!in_frame_tree_) in RenderFrameImpl::OnDeleteFrame.');
proxyServer.forwardTo(server.PORT); proxyServer.forwardTo(server.PORT);
// FYI: using long and weird domain names to avoid ATT DNS hijacking // FYI: using long and weird domain names to avoid ATT DNS hijacking
// that resolves everything to some weird search results page. // that resolves everything to some weird search results page.
@ -335,31 +333,49 @@ it('should exclude patterns', async ({ contextFactory, server, browserName, head
expect(await page.title()).toBe('Served by the proxy'); expect(await page.title()).toBe('Served by the proxy');
proxyServer.requestUrls = []; proxyServer.requestUrls = [];
const nonFaviconUrls = () => {
return proxyServer.requestUrls.filter(u => !u.includes('favicon'));
};
{ {
const error = await page.goto('http://1.non.existent.domain.for.the.test/target.html').catch(e => e); const error = await page.goto('http://1.non.existent.domain.for.the.test/target.html').catch(e => e);
expect(proxyServer.requestUrls).toEqual([]); expect(nonFaviconUrls()).toEqual([]);
expect(error.message).toBeTruthy(); expect(error.message).toBeTruthy();
// Make sure error page commits.
if (browserName === 'chromium')
await page.waitForURL('chrome-error://chromewebdata/');
else if (browserName === 'firefox')
await page.waitForURL('http://1.non.existent.domain.for.the.test/target.html', { waitUntil: 'commit' });
} }
{ {
const error = await page.goto('http://2.non.existent.domain.for.the.test/target.html').catch(e => e); const error = await page.goto('http://2.non.existent.domain.for.the.test/target.html').catch(e => e);
expect(proxyServer.requestUrls).toEqual([]); expect(nonFaviconUrls()).toEqual([]);
expect(error.message).toBeTruthy(); expect(error.message).toBeTruthy();
// Make sure error page commits.
if (browserName === 'chromium')
await page.waitForURL('chrome-error://chromewebdata/');
else if (browserName === 'firefox')
await page.waitForURL('http://2.non.existent.domain.for.the.test/target.html', { waitUntil: 'commit' });
} }
{ {
const error = await page.goto('http://foo.is.the.another.test/target.html').catch(e => e); const error = await page.goto('http://foo.is.the.another.test/target.html').catch(e => e);
expect(proxyServer.requestUrls).toEqual([]); expect(nonFaviconUrls()).toEqual([]);
expect(error.message).toBeTruthy(); expect(error.message).toBeTruthy();
}
// Make sure error page commits. // Make sure error page commits.
if (browserName === 'chromium') if (browserName === 'chromium')
await page.waitForURL('chrome-error://chromewebdata/'); await page.waitForURL('chrome-error://chromewebdata/');
else if (browserName === 'firefox')
await page.waitForURL('http://foo.is.the.another.test/target.html', { waitUntil: 'commit' });
}
{ {
await page.goto('http://3.non.existent.domain.for.the.test/target.html'); await page.goto('http://3.non.existent.domain.for.the.test/target.html');
expect(proxyServer.requestUrls).toContain('http://3.non.existent.domain.for.the.test/target.html'); expect(nonFaviconUrls()).toContain('http://3.non.existent.domain.for.the.test/target.html');
expect(await page.title()).toBe('Served by the proxy'); expect(await page.title()).toBe('Served by the proxy');
} }

View file

@ -125,9 +125,8 @@ it('should not throw when continuing while page is closing', async ({ page, serv
page.close(), page.close(),
]); ]);
}); });
const error = await page.goto(server.EMPTY_PAGE).catch(e => e); await page.goto(server.EMPTY_PAGE).catch(e => e);
await done; await done;
expect(error).toBeInstanceOf(Error);
}); });
it('should not throw when continuing after page is closed', async ({ page, server, isWebView2 }) => { it('should not throw when continuing after page is closed', async ({ page, server, isWebView2 }) => {

View file

@ -251,7 +251,7 @@ test('fixture time in beforeAll hook should not affect test', async ({ runInline
import { test as base, expect } from '@playwright/test'; import { test as base, expect } from '@playwright/test';
const test = base.extend({ const test = base.extend({
fixture: async ({}, use) => { fixture: async ({}, use) => {
await new Promise(f => setTimeout(f, 500)); await new Promise(f => setTimeout(f, 2000));
await use('hey'); await use('hey');
}, },
}); });
@ -260,7 +260,6 @@ test('fixture time in beforeAll hook should not affect test', async ({ runInline
}); });
test('test ok', async ({}) => { test('test ok', async ({}) => {
test.setTimeout(1000); test.setTimeout(1000);
await new Promise(f => setTimeout(f, 800));
}); });
` `
}); });