13e8580a34
This patch: - split browser launching logic from Browser into `lib/Launcher.js` - introduce `puppeteer` namespace which currently has a single `launch` method to start a browser With this patch, the browser is no longer created with the `new Browser(..)` command. Instead, it should be "launched" via the `puppeteer.launch` method: ```js const puppeteer = require('puppeteer'); puppeteer.launch().then(async browser => { ... }); ``` With this approach browser instance lifetime matches the lifetime of actual browser process. This helps us: - remove proxy streams, e.g. browser.stderr and browser.stdout - cleanup browser class and make it possible to connect to remote browser - introduce events on the browser instance, e.g. 'page' event. In case of lazy-launching browser, we should've launch browser when an event listener is added, which is unneded comlpexity. |
||
---|---|---|
.. | ||
FileSystem.js | ||
Phantom.js | ||
README.md | ||
runner.js | ||
System.js | ||
utilities.js | ||
WebPage.js | ||
WebServer.js |
PhantomShim
PhantomShim is a phantomJS script runner built atop of Puppeteer API.
Q: Can I use PhantomShim to run my scripts?
No.
PhantomShim aims to pass PhantomJS tests rather then to be a valid PhantomJS script runner:
- PhantomShim shortcuts a lot of corners (e.g. handling only a few keys that are necessary to pass tests).
- PhantomShim spawns nested event loops to emulate PhantomJS execution model. This might result in unpredictable side-effects, e.g. in unexpected reenterability.
Q: What's the purpose of PhantomShim?
The goal is to prove comprehensiveness of Puppeteer API.
PhantomShim is built atop of Puppeteer API and is used to run PhantomJS tests. Whenever PhantomShim can't implement certain capability to pass phantomJS test, Puppeteer API is improved to make it possible.
Q: Are there plans to evolve PhantomShim into a real PhantomJS script runner?
No.
On the contrary, PhantomShim is likely to be removed from the Puppeteer repository as it passes all interesting PhantomJS tests.