test page.route
This commit is contained in:
parent
e4e743cc23
commit
694931a44d
|
|
@ -228,8 +228,8 @@ export class BrowserContext extends ChannelOwner<channels.BrowserContextChannel>
|
||||||
await route._innerContinue(true /* isFallback */).catch(() => {});
|
await route._innerContinue(true /* isFallback */).catch(() => {});
|
||||||
}
|
}
|
||||||
|
|
||||||
private _onRouteListener = ({ route, browserRequest }: { route: network.Route, browserRequest: network.Route }) => {
|
private _onRouteListener = ({ route, browserRequest }: { route: network.Route, browserRequest?: network.Request }) => {
|
||||||
const page = browserRequest.request()._safePage();
|
const page = browserRequest?._safePage();
|
||||||
if (page)
|
if (page)
|
||||||
page._onRoute(route);
|
page._onRoute(route);
|
||||||
else
|
else
|
||||||
|
|
|
||||||
|
|
@ -48,8 +48,9 @@ export class MockingProxy extends ChannelOwner<channels.MockingProxyChannel> {
|
||||||
if (isSimpleCORS)
|
if (isSimpleCORS)
|
||||||
return await route.continue();
|
return await route.continue();
|
||||||
|
|
||||||
this._browserRequests.set(route._guid, route.request());
|
const request = route.request();
|
||||||
const proxyUrl = `http://localhost:${this.port()}/pw_meta:${route.request()._guid}/`;
|
this._browserRequests.set(request._guid, request);
|
||||||
|
const proxyUrl = `http://localhost:${this.port()}/pw_meta:${request._guid}/`;
|
||||||
|
|
||||||
await route.continue({ headers: { 'x-playwright-proxy': encodeURIComponent(proxyUrl) } });
|
await route.continue({ headers: { 'x-playwright-proxy': encodeURIComponent(proxyUrl) } });
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -288,3 +288,34 @@ test('fetch', async ({ runInlineTest, server, request }) => {
|
||||||
expect(result.exitCode).toBe(0);
|
expect(result.exitCode).toBe(0);
|
||||||
expect(result.passed).toBe(1);
|
expect(result.passed).toBe(1);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('inject mode knows originating page', async ({ runInlineTest, server, request }) => {
|
||||||
|
server.setRoute('/fallback', async (req, res) => {
|
||||||
|
res.end('fallback');
|
||||||
|
});
|
||||||
|
server.setRoute('/page', async (req, res) => {
|
||||||
|
const proxyURL = decodeURIComponent((req.headers['x-playwright-proxy'] as string) ?? '');
|
||||||
|
const response = await request.get(proxyURL + server.PREFIX + '/fallback');
|
||||||
|
res.end(await response.body());
|
||||||
|
});
|
||||||
|
const result = await runInlineTest({
|
||||||
|
'playwright.config.ts': `
|
||||||
|
module.exports = {
|
||||||
|
use: {
|
||||||
|
mockingProxy: { port: 'inject' }
|
||||||
|
}
|
||||||
|
};
|
||||||
|
`,
|
||||||
|
'a.test.ts': `
|
||||||
|
import { test, expect } from '@playwright/test';
|
||||||
|
test('first', async ({ page, context }) => {
|
||||||
|
await page.route('${server.PREFIX}/fallback', route => route.fulfill({ body: 'first' }));
|
||||||
|
await page.goto('${server.PREFIX}/page');
|
||||||
|
expect(await page.textContent('body')).toEqual('first');
|
||||||
|
});
|
||||||
|
`
|
||||||
|
}, { workers: 1 });
|
||||||
|
|
||||||
|
expect(result.exitCode).toBe(0);
|
||||||
|
expect(result.passed).toBe(1);
|
||||||
|
});
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue