diff --git a/tests/page/page-history.spec.ts b/tests/page/page-history.spec.ts
index 2d04c54ac6..b5083fe0a6 100644
--- a/tests/page/page-history.spec.ts
+++ b/tests/page/page-history.spec.ts
@@ -267,3 +267,30 @@ it('regression test for issue 20791', async ({ page, server }) => {
await page.reload();
await expect.poll(() => messages).toEqual(['foo', 'foo']);
});
+
+it('should reload proper page', async ({ page, server }) => {
+ let mainRequest = 0, popupRequest = 0;
+ server.setRoute('/main.html', (req, res) => {
+ res.writeHead(200, { 'content-type': 'text/html; charset=utf-8' });
+ res.end(`
main: ${++mainRequest}
`);
+ });
+ server.setRoute('/popup.html', (req, res) => {
+ res.writeHead(200, { 'content-type': 'text/html; charset=utf-8' });
+ res.end(`popup: ${++popupRequest}
`);
+ });
+ await page.goto(server.PREFIX + '/main.html');
+ const [popup] = await Promise.all([
+ page.waitForEvent('popup'),
+ page.evaluate(() => window.open('/popup.html')),
+ ]);
+ await expect(page.locator('h1')).toHaveText('main: 1');
+ await expect(popup.locator('h1')).toHaveText('popup: 1');
+
+ await page.reload();
+ await expect(page.locator('h1')).toHaveText('main: 2');
+ await expect(popup.locator('h1')).toHaveText('popup: 1');
+
+ await popup.reload();
+ await expect(page.locator('h1')).toHaveText('main: 2');
+ await expect(popup.locator('h1')).toHaveText('popup: 2');
+});