fix(chromium): do not bring page to front before screenshot (#2614)

This commit is contained in:
Dmitry Gozman 2020-06-18 10:52:08 -07:00 committed by GitHub
parent c544bffee3
commit 971bd88922
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 4 additions and 13 deletions

View file

@ -216,7 +216,6 @@ export class CRPage implements PageDelegate {
})
};
}
await this._mainFrameSession._client.send('Page.bringToFront', {});
// When taking screenshots with documentRect (based on the page content, not viewport),
// ignore current page scale.
const clip = { ...documentRect, scale: viewportRect ? visualViewport.scale : 1 };

View file

@ -30,13 +30,7 @@ export class Screenshotter {
constructor(page: Page) {
this._page = page;
const browserContext = page.context();
this._queue = (browserContext as any)[taskQueueSymbol];
if (!this._queue) {
this._queue = new TaskQueue();
(browserContext as any)[taskQueueSymbol] = this._queue;
}
this._queue = new TaskQueue();
}
private async _originalViewportSize(): Promise<{ viewportSize: types.Size, originalViewportSize: types.Size | null }> {
@ -152,8 +146,6 @@ export class Screenshotter {
}
}
const taskQueueSymbol = Symbol('TaskQueue');
class TaskQueue {
private _chain: Promise<any>;

View file

@ -116,7 +116,7 @@ describe.skip(ffheadful)('Page.screenshot', function() {
expect(page.viewportSize().height).toBe(500);
});
it('should run in parallel in multiple pages', async({page, server, context, golden}) => {
const N = 2;
const N = 5;
const pages = await Promise.all(Array(N).fill(0).map(async() => {
const page = await context.newPage();
await page.goto(server.PREFIX + '/grid.html');
@ -124,10 +124,10 @@ describe.skip(ffheadful)('Page.screenshot', function() {
}));
const promises = [];
for (let i = 0; i < N; ++i)
promises.push(pages[i].screenshot({ clip: { x: 50 * i, y: 0, width: 50, height: 50 } }));
promises.push(pages[i].screenshot({ clip: { x: 50 * (i % 2), y: 0, width: 50, height: 50 } }));
const screenshots = await Promise.all(promises);
for (let i = 0; i < N; ++i)
expect(screenshots[i]).toBeGolden(golden(`grid-cell-${i}.png`));
expect(screenshots[i]).toBeGolden(golden(`grid-cell-${i % 2}.png`));
await Promise.all(pages.map(page => page.close()));
});
it.fail(FFOX)('should allow transparency', async({page, golden}) => {