Skip to content

Commit 7dd1250

Browse files
authored
chore(webkit): encode jpeg screenshots natively via Page.snapshotRect (#41171)
1 parent a2905f5 commit 7dd1250

1 file changed

Lines changed: 3 additions & 8 deletions

File tree

  • packages/playwright-core/src/server/webkit

packages/playwright-core/src/server/webkit/wkPage.ts

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,6 @@
1515
* limitations under the License.
1616
*/
1717

18-
import { PNG } from 'pngjs';
19-
import jpegjs from 'jpeg-js';
2018
import { headersArrayToObject, headersObjectToArray } from '@isomorphic/headers';
2119
import { splitErrorMessage } from '@isomorphic/stackTrace';
2220
import { eventsHelper } from '@utils/eventsHelper';
@@ -874,12 +872,9 @@ export class WKPage implements PageDelegate {
874872
const omitDeviceScaleFactor = scale === 'css';
875873
this.validateScreenshotDimension(rect.width, omitDeviceScaleFactor);
876874
this.validateScreenshotDimension(rect.height, omitDeviceScaleFactor);
877-
const result = await progress.race(this._session.send('Page.snapshotRect', { ...rect, coordinateSystem: documentRect ? 'Page' : 'Viewport', omitDeviceScaleFactor }));
878-
const prefix = 'data:image/png;base64,';
879-
let buffer: Buffer = Buffer.from(result.dataURL.substr(prefix.length), 'base64');
880-
if (format === 'jpeg')
881-
buffer = jpegjs.encode(PNG.sync.read(buffer), quality).data;
882-
return buffer;
875+
const result = await progress.race(this._session.send('Page.snapshotRect', { ...rect, coordinateSystem: documentRect ? 'Page' : 'Viewport', omitDeviceScaleFactor, format: format as 'png' | 'jpeg', quality }));
876+
// Strip the 'data:image/<format>;base64,' prefix.
877+
return Buffer.from(result.dataURL.substring(result.dataURL.indexOf(',') + 1), 'base64');
883878
}
884879

885880
async getContentFrame(handle: dom.ElementHandle): Promise<frames.Frame | null> {

0 commit comments

Comments
 (0)