From 53c78a8a2905fc428c7208e4f7462f518032d220 Mon Sep 17 00:00:00 2001 From: Ross Wollman Date: Wed, 22 Apr 2020 17:02:15 -0700 Subject: [PATCH] fix(downloads): fix `acceptDownloads` complaint (#1777) (#1923) --- src/download.ts | 2 +- test/download.spec.js | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/download.ts b/src/download.ts index 4f03fb60a7..b666812527 100644 --- a/src/download.ts +++ b/src/download.ts @@ -39,9 +39,9 @@ export class Download { this._url = url; this._finishedCallback = () => {}; this._finishedPromise = new Promise(f => this._finishedCallback = f); - this._page.emit(Events.Page.Download, this); page._browserContext._downloads.add(this); this._acceptDownloads = !!this._page._browserContext._options.acceptDownloads; + this._page.emit(Events.Page.Download, this); } url(): string { diff --git a/test/download.spec.js b/test/download.spec.js index bc79ae47e0..995b3c5961 100644 --- a/test/download.spec.js +++ b/test/download.spec.js @@ -70,6 +70,19 @@ describe('Download', function() { expect(fs.readFileSync(path).toString()).toBe('Hello world'); await page.close(); }); + it(`should report download path within page.on('download', …) handler`, async({browser, server}) => { + const page = await browser.newPage({ acceptDownloads: true }); + const onDownloadPathPath = new Promise((res) => { + page.on('download', dl => { + dl.path().then(res); + }); + }); + await page.setContent(`download`); + await page.click('a'); + const path = await onDownloadPathPath; + expect(fs.readFileSync(path).toString()).toBe('Hello world'); + await page.close(); + }) it.skip(FFOX).fail(CHROMIUM || WEBKIT)('should report alt-click downloads', async({browser, server}) => { // Firefox does not download on alt-click by default. // Our WebKit embedder does not download on alt-click, although Safari does.