forked from puppeteer/puppeteer
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
chore: make sure Puppeteer bundling works (puppeteer#3239)
This patch: - adds "browser" field to the package.json with default bundling options. - introduces "bundle" and "unit-bundle" commands to create bundle and test bundle - starts running bundle tests on Travis Node 8 bots Fixes puppeteer#2374.
- Loading branch information
1 parent
f49687f
commit 6ec3ce6
Showing
6 changed files
with
97 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -11,3 +11,4 @@ package-lock.json | |
yarn.lock | ||
/node6 | ||
/lib/protocol.d.ts | ||
/utils/browser/puppeteer-web.js |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
module.exports = window.WebSocket; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,80 @@ | ||
const path = require('path'); | ||
const fs = require('fs'); | ||
const puppeteer = require('../..'); | ||
const SimpleServer = require('../../test/server/SimpleServer'); | ||
const {TestRunner, Reporter, Matchers} = require('../testrunner/'); | ||
|
||
const puppeteerWebPath = path.join(__dirname, 'puppeteer-web.js'); | ||
if (!fs.existsSync(puppeteerWebPath)) | ||
throw new Error(`puppeteer-web is not built; run "npm run bundle"`); | ||
const puppeteerWeb = fs.readFileSync(puppeteerWebPath, 'utf8'); | ||
|
||
const testRunner = new TestRunner(); | ||
const {describe, fdescribe, xdescribe} = testRunner; | ||
const {it, xit, fit} = testRunner; | ||
const {afterAll, beforeAll, afterEach, beforeEach} = testRunner; | ||
const {expect} = new Matchers(); | ||
|
||
const defaultBrowserOptions = { | ||
args: ['--no-sandbox'] | ||
}; | ||
|
||
beforeAll(async state => { | ||
const assetsPath = path.join(__dirname, '..', '..', 'test', 'assets'); | ||
const port = 8998; | ||
state.server = await SimpleServer.create(assetsPath, port); | ||
state.serverConfig = { | ||
PREFIX: `http://localhost:${port}`, | ||
EMPTY_PAGE: `http://localhost:${port}/empty.html`, | ||
}; | ||
state.browser = await puppeteer.launch(defaultBrowserOptions); | ||
}); | ||
|
||
afterAll(async state => { | ||
await Promise.all([ | ||
state.server.stop(), | ||
state.browser.close() | ||
]); | ||
state.browser = null; | ||
state.server = null; | ||
}); | ||
|
||
beforeEach(async state => { | ||
state.page = await state.browser.newPage(); | ||
await state.page.evaluateOnNewDocument(puppeteerWeb); | ||
await state.page.addScriptTag({ | ||
content: puppeteerWeb + '\n//# sourceURL=puppeteer-web.js' | ||
}); | ||
}); | ||
|
||
afterEach(async state => { | ||
await state.page.close(); | ||
state.page = null; | ||
}); | ||
|
||
describe('Puppeteer-Web', () => { | ||
it('should work over web socket', async({page, serverConfig}) => { | ||
const browser2 = await puppeteer.launch(defaultBrowserOptions); | ||
// Use in-page puppeteer to create a new page and navigate it to the EMPTY_PAGE | ||
await page.evaluate(async(browserWSEndpoint, serverConfig) => { | ||
const puppeteer = require('puppeteer'); | ||
const browser = await puppeteer.connect({browserWSEndpoint}); | ||
const page = await browser.newPage(); | ||
await page.goto(serverConfig.EMPTY_PAGE); | ||
}, browser2.wsEndpoint(), serverConfig); | ||
const pageURLs = (await browser2.pages()).map(page => page.url()).sort(); | ||
expect(pageURLs).toEqual([ | ||
'about:blank', | ||
serverConfig.EMPTY_PAGE | ||
]); | ||
await browser2.close(); | ||
}); | ||
}); | ||
|
||
if (process.env.CI && testRunner.hasFocusedTestsOrSuites()) { | ||
console.error('ERROR: "focused" tests/suites are prohibitted on bots. Remove any "fit"/"fdescribe" declarations.'); | ||
process.exit(1); | ||
} | ||
|
||
new Reporter(testRunner); | ||
testRunner.run(); |