From 6c7ae41ae6b85fe228818b5187b3bbea1f78d6d2 Mon Sep 17 00:00:00 2001 From: Paul Irish Date: Thu, 6 Jul 2017 16:09:23 -0700 Subject: [PATCH] fix page.injectFile and add test. (#52) This line within `injectFile` wasn't doing much of anything: ```js let expression = fs.readFile(filePath, 'utf8', (err, data) => callback({err, data})); ``` * That's fixed. * A path error in examples/features.js is fixed. * Test added for injectFile. --- examples/features.js | 2 +- lib/Page.js | 12 +++++++----- test/assets/injectedfile.js | 1 + test/test.js | 9 +++++++++ 4 files changed, 18 insertions(+), 6 deletions(-) create mode 100644 test/assets/injectedfile.js diff --git a/examples/features.js b/examples/features.js index 7e4d277a71c..6c28f811560 100644 --- a/examples/features.js +++ b/examples/features.js @@ -19,7 +19,7 @@ var Browser = require('../lib/Browser'); var browser = new Browser(); browser.newPage().then(async page => { - var modernizrPath = path.join('..', 'third_party', 'phantomjs', 'examples', 'modernizr.js'); + var modernizrPath = path.join(__dirname, '../third_party/phantomjs/examples/modernizr.js'); await page.injectFile(modernizrPath); page.on('consolemessage', console.log); await page.evaluate(detectFeatures); diff --git a/lib/Page.js b/lib/Page.js index 51b12074993..ae4877e8371 100644 --- a/lib/Page.js +++ b/lib/Page.js @@ -128,11 +128,13 @@ class Page extends EventEmitter { * @return {!Promise} */ async injectFile(filePath) { - let callback; - let promise = new Promise(fulfill => callback = fulfill); - let expression = fs.readFile(filePath, 'utf8', (err, data) => callback({err, data})); - await promise; - return this._client.send('Runtime.evaluate', { expression, returnByValue: true }); + const contents = await new Promise((resolve, reject) => { + fs.readFile(filePath, 'utf8', (err, data) => { + if (err) return reject(err); + resolve(data); + }); + }); + return this._client.send('Runtime.evaluate', { expression: contents, returnByValue: true }); } /** diff --git a/test/assets/injectedfile.js b/test/assets/injectedfile.js new file mode 100644 index 00000000000..57b4464fcdd --- /dev/null +++ b/test/assets/injectedfile.js @@ -0,0 +1 @@ +__injected = 42; diff --git a/test/test.js b/test/test.js index ed5f25d9083..2448543157b 100644 --- a/test/test.js +++ b/test/test.js @@ -104,6 +104,15 @@ describe('Puppeteer', function() { })); }); + describe('Page.injectFile', function() { + it('should fail when navigating to bad url', SX(async function() { + const helloPath = path.join(__dirname, './assets/injectedfile.js'); + await page.injectFile(helloPath); + const result = await page.evaluate(() => __injected); + expect(result).toBe(42); + })); + }); + describe('Frame.evaluate', function() { let FrameUtils = require('./frame-utils'); it('should have different execution contexts', SX(async function() {