chore: update URLs (#5185)
This commit is contained in:
parent
c5a72e9887
commit
eddb23b521
@ -40,5 +40,5 @@ README.md
|
||||
tsconfig.json
|
||||
experimental
|
||||
|
||||
# exclude types, see https://github.com/GoogleChrome/puppeteer/issues/3878
|
||||
# exclude types, see https://github.com/puppeteer/puppeteer/issues/3878
|
||||
/index.d.ts
|
||||
|
@ -38,7 +38,7 @@ again.
|
||||
1. Clone this repository
|
||||
|
||||
```bash
|
||||
git clone https://github.com/GoogleChrome/puppeteer
|
||||
git clone https://github.com/puppeteer/puppeteer
|
||||
cd puppeteer
|
||||
```
|
||||
|
||||
@ -63,7 +63,7 @@ information on using pull requests.
|
||||
|
||||
## Code Style
|
||||
|
||||
- Coding style is fully defined in [.eslintrc](https://github.com/GoogleChrome/puppeteer/blob/master/.eslintrc.js)
|
||||
- Coding style is fully defined in [.eslintrc](https://github.com/puppeteer/puppeteer/blob/master/.eslintrc.js)
|
||||
- Code should be annotated with [closure annotations](https://github.com/google/closure-compiler/wiki/Annotating-JavaScript-for-the-Closure-Compiler).
|
||||
- Comments should be generally avoided. If the code would not be understood without comments, consider re-writing the code to make it self-explanatory.
|
||||
|
||||
@ -124,7 +124,7 @@ To deliver to a different location, use "deliver" option:
|
||||
|
||||
## Writing Documentation
|
||||
|
||||
All public API should have a descriptive entry in [`docs/api.md`](https://github.com/GoogleChrome/puppeteer/blob/master/docs/api.md). There's a [documentation linter](https://github.com/GoogleChrome/puppeteer/tree/master/utils/doclint) which makes sure documentation is aligned with the codebase.
|
||||
All public API should have a descriptive entry in [`docs/api.md`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md). There's a [documentation linter](https://github.com/puppeteer/puppeteer/tree/master/utils/doclint) which makes sure documentation is aligned with the codebase.
|
||||
|
||||
To run the documentation linter, use:
|
||||
|
||||
@ -148,8 +148,8 @@ A barrier for introducing new installation dependencies is especially high:
|
||||
- Tests should be *hermetic*. Tests should not depend on external services.
|
||||
- Tests should work on all three platforms: Mac, Linux and Win. This is especially important for screenshot tests.
|
||||
|
||||
Puppeteer tests are located in [`test/test.js`](https://github.com/GoogleChrome/puppeteer/blob/master/test/test.js)
|
||||
and are written with a [TestRunner](https://github.com/GoogleChrome/puppeteer/tree/master/utils/testrunner) framework.
|
||||
Puppeteer tests are located in [`test/test.js`](https://github.com/puppeteer/puppeteer/blob/master/test/test.js)
|
||||
and are written with a [TestRunner](https://github.com/puppeteer/puppeteer/tree/master/utils/testrunner) framework.
|
||||
Despite being named 'unit', these are integration tests, making sure public API methods and events work as expected.
|
||||
|
||||
- To run all tests:
|
||||
@ -247,16 +247,16 @@ Releasing to npm consists of the following phases:
|
||||
1. Source Code: mark a release.
|
||||
1. Bump `package.json` version following the SEMVER rules.
|
||||
2. Run `npm run doc` to update the docs accordingly.
|
||||
3. Update the “Releases per Chromium Version” list in [`docs/api.md`](https://github.com/GoogleChrome/puppeteer/blob/master/docs/api.md) to include the new version.
|
||||
4. Send a PR titled `'chore: mark version vXXX.YYY.ZZZ'` ([example](https://github.com/GoogleChrome/puppeteer/pull/5078)).
|
||||
3. Update the “Releases per Chromium Version” list in [`docs/api.md`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md) to include the new version.
|
||||
4. Send a PR titled `'chore: mark version vXXX.YYY.ZZZ'` ([example](https://github.com/puppeteer/puppeteer/pull/5078)).
|
||||
5. Make sure the PR passes **all checks**.
|
||||
- **WHY**: there are linters in place that help to avoid unnecessary errors, e.g. [like this](https://github.com/GoogleChrome/puppeteer/pull/2446)
|
||||
- **WHY**: there are linters in place that help to avoid unnecessary errors, e.g. [like this](https://github.com/puppeteer/puppeteer/pull/2446)
|
||||
6. Merge the PR.
|
||||
7. Once merged, publish the release notes using [GitHub's “draft new release tag” option](https://github.com/GoogleChrome/puppeteer/releases/new).
|
||||
7. Once merged, publish the release notes using [GitHub's “draft new release tag” option](https://github.com/puppeteer/puppeteer/releases/new).
|
||||
- **NOTE**: tag names are prefixed with `'v'`, e.g. for version `1.4.0` the tag is `v1.4.0`.
|
||||
- For the “raw notes” section, use `git log --pretty="%h - %s" v2.0.0..HEAD`.
|
||||
2. Publish `puppeteer` to npm.
|
||||
1. On your local machine, pull from [upstream](https://github.com/GoogleChrome/puppeteer) and make sure the last commit is the one just merged.
|
||||
1. On your local machine, pull from [upstream](https://github.com/puppeteer/puppeteer) and make sure the last commit is the one just merged.
|
||||
2. Run `git status` and make sure there are no untracked files.
|
||||
- **WHY**: this is to avoid adding unnecessary files to the npm package.
|
||||
3. Run `npm install` to make sure the latest `lib/protocol.d.ts` is generated.
|
||||
@ -267,7 +267,7 @@ Releasing to npm consists of the following phases:
|
||||
2. Run `npm publish`. This publishes the `puppeteer-core` package.
|
||||
3. Run `git reset --hard` to reset the changes to `package.json`.
|
||||
4. Source Code: mark post-release.
|
||||
1. Bump `package.json` version to `-post` version, run `npm run doc` to update the “released APIs” section at the top of `docs/api.md` accordingly, and send a PR titled `'chore: bump version to vXXX.YYY.ZZZ-post'` ([example](https://github.com/GoogleChrome/puppeteer/commit/d02440d1eac98028e29f4e1cf55413062a259156))
|
||||
1. Bump `package.json` version to `-post` version, run `npm run doc` to update the “released APIs” section at the top of `docs/api.md` accordingly, and send a PR titled `'chore: bump version to vXXX.YYY.ZZZ-post'` ([example](https://github.com/puppeteer/puppeteer/commit/d02440d1eac98028e29f4e1cf55413062a259156))
|
||||
- **NOTE**: no other commits should be landed in-between release commit and bump commit.
|
||||
|
||||
## Updating npm dist tags
|
||||
|
46
README.md
46
README.md
@ -1,12 +1,12 @@
|
||||
# Puppeteer
|
||||
|
||||
<!-- [START badges] -->
|
||||
[![Linux Build Status](https://img.shields.io/travis/com/GoogleChrome/puppeteer/master.svg)](https://travis-ci.com/GoogleChrome/puppeteer) [![Windows Build Status](https://img.shields.io/appveyor/ci/aslushnikov/puppeteer/master.svg?logo=appveyor)](https://ci.appveyor.com/project/aslushnikov/puppeteer/branch/master) [![Build Status](https://api.cirrus-ci.com/github/GoogleChrome/puppeteer.svg)](https://cirrus-ci.com/github/GoogleChrome/puppeteer) [![NPM puppeteer package](https://img.shields.io/npm/v/puppeteer.svg)](https://npmjs.org/package/puppeteer) [![Issue resolution status](https://isitmaintained.com/badge/resolution/GoogleChrome/puppeteer.svg)](https://github.com/GoogleChrome/puppeteer/issues)
|
||||
[![Linux Build Status](https://img.shields.io/travis/com/puppeteer/puppeteer/master.svg)](https://travis-ci.com/puppeteer/puppeteer) [![Windows Build Status](https://img.shields.io/appveyor/ci/mathiasbynens/puppeteer/master.svg?logo=appveyor)](https://ci.appveyor.com/project/mathiasbynens/puppeteer/branch/master) [![Build Status](https://api.cirrus-ci.com/github/puppeteer/puppeteer.svg)](https://cirrus-ci.com/github/puppeteer/puppeteer) [![npm puppeteer package](https://img.shields.io/npm/v/puppeteer.svg)](https://npmjs.org/package/puppeteer) [![Issue resolution status](https://isitmaintained.com/badge/resolution/puppeteer/puppeteer.svg)](https://github.com/puppeteer/puppeteer/issues)
|
||||
<!-- [END badges] -->
|
||||
|
||||
<img src="https://user-images.githubusercontent.com/10379601/29446482-04f7036a-841f-11e7-9872-91d1fc2ea683.png" height="200" align="right">
|
||||
|
||||
###### [API](https://github.com/GoogleChrome/puppeteer/blob/v2.0.0/docs/api.md) | [FAQ](#faq) | [Contributing](https://github.com/GoogleChrome/puppeteer/blob/master/CONTRIBUTING.md) | [Troubleshooting](https://github.com/GoogleChrome/puppeteer/blob/master/docs/troubleshooting.md)
|
||||
###### [API](https://github.com/puppeteer/puppeteer/blob/v2.0.0/docs/api.md) | [FAQ](#faq) | [Contributing](https://github.com/puppeteer/puppeteer/blob/master/CONTRIBUTING.md) | [Troubleshooting](https://github.com/puppeteer/puppeteer/blob/master/docs/troubleshooting.md)
|
||||
|
||||
> Puppeteer is a Node library which provides a high-level API to control Chrome or Chromium over the [DevTools Protocol](https://chromedevtools.github.io/devtools-protocol/). Puppeteer runs [headless](https://developers.google.com/web/updates/2017/04/headless-chrome) by default, but can be configured to run full (non-headless) Chrome or Chromium.
|
||||
|
||||
@ -37,7 +37,7 @@ npm i puppeteer
|
||||
# or "yarn add puppeteer"
|
||||
```
|
||||
|
||||
Note: When you install Puppeteer, it downloads a recent version of Chromium (~170MB Mac, ~282MB Linux, ~280MB Win) that is guaranteed to work with the API. To skip the download, see [Environment variables](https://github.com/GoogleChrome/puppeteer/blob/v2.0.0/docs/api.md#environment-variables).
|
||||
Note: When you install Puppeteer, it downloads a recent version of Chromium (~170MB Mac, ~282MB Linux, ~280MB Win) that is guaranteed to work with the API. To skip the download, see [Environment variables](https://github.com/puppeteer/puppeteer/blob/v2.0.0/docs/api.md#environment-variables).
|
||||
|
||||
|
||||
### puppeteer-core
|
||||
@ -53,7 +53,7 @@ npm i puppeteer-core
|
||||
`puppeteer-core` is intended to be a lightweight version of Puppeteer for launching an existing browser installation or for connecting to a remote one. Be sure that the version of puppeteer-core you install is compatible with the
|
||||
browser you intend to connect to.
|
||||
|
||||
See [puppeteer vs puppeteer-core](https://github.com/GoogleChrome/puppeteer/blob/master/docs/api.md#puppeteer-vs-puppeteer-core).
|
||||
See [puppeteer vs puppeteer-core](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#puppeteer-vs-puppeteer-core).
|
||||
|
||||
### Usage
|
||||
|
||||
@ -63,7 +63,7 @@ Note: Prior to v1.18.1, Puppeteer required at least Node v6.4.0. All subsequent
|
||||
Node 8.9.0+. All examples below use async/await which is only supported in Node v7.6.0 or greater.
|
||||
|
||||
Puppeteer will be familiar to people using other browser testing frameworks. You create an instance
|
||||
of `Browser`, open pages, and then manipulate them with [Puppeteer's API](https://github.com/GoogleChrome/puppeteer/blob/v2.0.0/docs/api.md#).
|
||||
of `Browser`, open pages, and then manipulate them with [Puppeteer's API](https://github.com/puppeteer/puppeteer/blob/v2.0.0/docs/api.md#).
|
||||
|
||||
**Example** - navigating to https://example.com and saving a screenshot as *example.png*:
|
||||
|
||||
@ -88,7 +88,7 @@ Execute script on the command line
|
||||
node example.js
|
||||
```
|
||||
|
||||
Puppeteer sets an initial page size to 800×600px, which defines the screenshot size. The page size can be customized with [`Page.setViewport()`](https://github.com/GoogleChrome/puppeteer/blob/v2.0.0/docs/api.md#pagesetviewportviewport).
|
||||
Puppeteer sets an initial page size to 800×600px, which defines the screenshot size. The page size can be customized with [`Page.setViewport()`](https://github.com/puppeteer/puppeteer/blob/v2.0.0/docs/api.md#pagesetviewportviewport).
|
||||
|
||||
**Example** - create a PDF.
|
||||
|
||||
@ -113,7 +113,7 @@ Execute script on the command line
|
||||
node hn.js
|
||||
```
|
||||
|
||||
See [`Page.pdf()`](https://github.com/GoogleChrome/puppeteer/blob/v2.0.0/docs/api.md#pagepdfoptions) for more information about creating pdfs.
|
||||
See [`Page.pdf()`](https://github.com/puppeteer/puppeteer/blob/v2.0.0/docs/api.md#pagepdfoptions) for more information about creating pdfs.
|
||||
|
||||
**Example** - evaluate script in the context of the page
|
||||
|
||||
@ -148,7 +148,7 @@ Execute script on the command line
|
||||
node get-dimensions.js
|
||||
```
|
||||
|
||||
See [`Page.evaluate()`](https://github.com/GoogleChrome/puppeteer/blob/v2.0.0/docs/api.md#pageevaluatepagefunction-args) for more information on `evaluate` and related methods like `evaluateOnNewDocument` and `exposeFunction`.
|
||||
See [`Page.evaluate()`](https://github.com/puppeteer/puppeteer/blob/v2.0.0/docs/api.md#pageevaluatepagefunction-args) for more information on `evaluate` and related methods like `evaluateOnNewDocument` and `exposeFunction`.
|
||||
|
||||
<!-- [END getstarted] -->
|
||||
|
||||
@ -157,7 +157,7 @@ See [`Page.evaluate()`](https://github.com/GoogleChrome/puppeteer/blob/v2.0.0/do
|
||||
|
||||
**1. Uses Headless mode**
|
||||
|
||||
Puppeteer launches Chromium in [headless mode](https://developers.google.com/web/updates/2017/04/headless-chrome). To launch a full version of Chromium, set the [`headless` option](https://github.com/GoogleChrome/puppeteer/blob/v2.0.0/docs/api.md#puppeteerlaunchoptions) when launching a browser:
|
||||
Puppeteer launches Chromium in [headless mode](https://developers.google.com/web/updates/2017/04/headless-chrome). To launch a full version of Chromium, set the [`headless` option](https://github.com/puppeteer/puppeteer/blob/v2.0.0/docs/api.md#puppeteerlaunchoptions) when launching a browser:
|
||||
|
||||
```js
|
||||
const browser = await puppeteer.launch({headless: false}); // default is true
|
||||
@ -173,7 +173,7 @@ pass in the executable's path when creating a `Browser` instance:
|
||||
const browser = await puppeteer.launch({executablePath: '/path/to/Chrome'});
|
||||
```
|
||||
|
||||
See [`Puppeteer.launch()`](https://github.com/GoogleChrome/puppeteer/blob/v2.0.0/docs/api.md#puppeteerlaunchoptions) for more information.
|
||||
See [`Puppeteer.launch()`](https://github.com/puppeteer/puppeteer/blob/v2.0.0/docs/api.md#puppeteerlaunchoptions) for more information.
|
||||
|
||||
See [`this article`](https://www.howtogeek.com/202825/what%E2%80%99s-the-difference-between-chromium-and-chrome/) for a description of the differences between Chromium and Chrome. [`This article`](https://chromium.googlesource.com/chromium/src/+/master/docs/chromium_browser_vs_google_chrome.md) describes some differences for Linux users.
|
||||
|
||||
@ -185,8 +185,8 @@ Puppeteer creates its own Chromium user profile which it **cleans up on every ru
|
||||
|
||||
## Resources
|
||||
|
||||
- [API Documentation](https://github.com/GoogleChrome/puppeteer/blob/v2.0.0/docs/api.md)
|
||||
- [Examples](https://github.com/GoogleChrome/puppeteer/tree/master/examples/)
|
||||
- [API Documentation](https://github.com/puppeteer/puppeteer/blob/v2.0.0/docs/api.md)
|
||||
- [Examples](https://github.com/puppeteer/puppeteer/tree/master/examples/)
|
||||
- [Community list of Puppeteer resources](https://github.com/transitive-bullshit/awesome-puppeteer)
|
||||
|
||||
|
||||
@ -268,7 +268,7 @@ Puppeteer creates its own Chromium user profile which it **cleans up on every ru
|
||||
# Protocol traffic can be rather noisy. This example filters out all Network domain messages
|
||||
env DEBUG="puppeteer:*" env DEBUG_COLORS=true node script.js 2>&1 | grep -v '"Network'
|
||||
|
||||
7. Debug your Puppeteer (node) code easily, using [ndb](https://github.com/GoogleChromeLabs/ndb)
|
||||
7. Debug your Puppeteer (node) code easily, using [ndb](https://github.com/puppeteerLabs/ndb)
|
||||
|
||||
- `npm install -g ndb` (or even better, use [npx](https://github.com/zkat/npx)!)
|
||||
|
||||
@ -285,7 +285,7 @@ Puppeteer creates its own Chromium user profile which it **cleans up on every ru
|
||||
|
||||
## Contributing to Puppeteer
|
||||
|
||||
Check out [contributing guide](https://github.com/GoogleChrome/puppeteer/blob/master/CONTRIBUTING.md) to get an overview of Puppeteer development.
|
||||
Check out [contributing guide](https://github.com/puppeteer/puppeteer/blob/master/CONTRIBUTING.md) to get an overview of Puppeteer development.
|
||||
|
||||
<!-- [START faq] -->
|
||||
|
||||
@ -294,7 +294,7 @@ Check out [contributing guide](https://github.com/GoogleChrome/puppeteer/blob/ma
|
||||
#### Q: Who maintains Puppeteer?
|
||||
|
||||
The Chrome DevTools team maintains the library, but we'd love your help and expertise on the project!
|
||||
See [Contributing](https://github.com/GoogleChrome/puppeteer/blob/master/CONTRIBUTING.md).
|
||||
See [Contributing](https://github.com/puppeteer/puppeteer/blob/master/CONTRIBUTING.md).
|
||||
|
||||
#### Q: What are Puppeteer’s goals and principles?
|
||||
|
||||
@ -320,7 +320,7 @@ We adapt [Chromium principles](https://www.chromium.org/developers/core-principl
|
||||
|
||||
That said, you **can** use Puppeteer to run tests against Chromium, e.g. using the community-driven [jest-puppeteer](https://github.com/smooth-code/jest-puppeteer). While this probably shouldn’t be your only testing solution, it does have a few good points compared to WebDriver:
|
||||
|
||||
- Puppeteer requires zero setup and comes bundled with the Chromium version it works best with, making it [very easy to start with](https://github.com/GoogleChrome/puppeteer/#getting-started). At the end of the day, it’s better to have a few tests running chromium-only, than no tests at all.
|
||||
- Puppeteer requires zero setup and comes bundled with the Chromium version it works best with, making it [very easy to start with](https://github.com/puppeteer/puppeteer/#getting-started). At the end of the day, it’s better to have a few tests running chromium-only, than no tests at all.
|
||||
- Puppeteer has event-driven architecture, which removes a lot of potential flakiness. There’s no need for evil “sleep(1000)” calls in puppeteer scripts.
|
||||
- Puppeteer runs headless by default, which makes it fast to run. Puppeteer v1.5.0 also exposes browser contexts, making it possible to efficiently parallelize test execution.
|
||||
- Puppeteer shines when it comes to debugging: flip the “headless” bit to false, add “slowMo”, and you’ll see what the browser is doing. You can even open Chrome DevTools to inspect the test environment.
|
||||
@ -330,9 +330,9 @@ That said, you **can** use Puppeteer to run tests against Chromium, e.g. using t
|
||||
We see Puppeteer as an **indivisible entity** with Chromium. Each version of Puppeteer bundles a specific version of Chromium – **the only** version it is guaranteed to work with.
|
||||
|
||||
This is not an artificial constraint: A lot of work on Puppeteer is actually taking place in the Chromium repository. Here’s a typical story:
|
||||
- A Puppeteer bug is reported: https://github.com/GoogleChrome/puppeteer/issues/2709
|
||||
- A Puppeteer bug is reported: https://github.com/puppeteer/puppeteer/issues/2709
|
||||
- It turned out this is an issue with the DevTools protocol, so we’re fixing it in Chromium: https://chromium-review.googlesource.com/c/chromium/src/+/1102154
|
||||
- Once the upstream fix is landed, we roll updated Chromium into Puppeteer: https://github.com/GoogleChrome/puppeteer/pull/2769
|
||||
- Once the upstream fix is landed, we roll updated Chromium into Puppeteer: https://github.com/puppeteer/puppeteer/pull/2769
|
||||
|
||||
However, oftentimes it is desirable to use Puppeteer with the official Google Chrome rather than Chromium. For this to work, you should install a `puppeteer-core` version that corresponds to the Chrome version.
|
||||
|
||||
@ -343,7 +343,7 @@ npm install puppeteer-core@chrome-71
|
||||
|
||||
#### Q: Which Chromium version does Puppeteer use?
|
||||
|
||||
Look for `chromium_revision` in [package.json](https://github.com/GoogleChrome/puppeteer/blob/master/package.json). To find the corresponding Chromium commit and version number, search for the revision prefixed by an `r` in [OmahaProxy](https://omahaproxy.appspot.com/)'s "Find Releases" section.
|
||||
Look for `chromium_revision` in [package.json](https://github.com/puppeteer/puppeteer/blob/master/package.json). To find the corresponding Chromium commit and version number, search for the revision prefixed by an `r` in [OmahaProxy](https://omahaproxy.appspot.com/)'s "Find Releases" section.
|
||||
|
||||
#### Q: What’s considered a “Navigation”?
|
||||
|
||||
@ -373,13 +373,13 @@ await page.evaluate(() => {
|
||||
|
||||
#### Q: What features does Puppeteer not support?
|
||||
|
||||
You may find that Puppeteer does not behave as expected when controlling pages that incorporate audio and video. (For example, [video playback/screenshots is likely to fail](https://github.com/GoogleChrome/puppeteer/issues/291).) There are two reasons for this:
|
||||
You may find that Puppeteer does not behave as expected when controlling pages that incorporate audio and video. (For example, [video playback/screenshots is likely to fail](https://github.com/puppeteer/puppeteer/issues/291).) There are two reasons for this:
|
||||
|
||||
* Puppeteer is bundled with Chromium — not Chrome — and so by default, it inherits all of [Chromium's media-related limitations](https://www.chromium.org/audio-video). This means that Puppeteer does not support licensed formats such as AAC or H.264. (However, it is possible to force Puppeteer to use a separately-installed version Chrome instead of Chromium via the [`executablePath` option to `puppeteer.launch`](https://github.com/GoogleChrome/puppeteer/blob/v2.0.0/docs/api.md#puppeteerlaunchoptions). You should only use this configuration if you need an official release of Chrome that supports these media formats.)
|
||||
* Puppeteer is bundled with Chromium — not Chrome — and so by default, it inherits all of [Chromium's media-related limitations](https://www.chromium.org/audio-video). This means that Puppeteer does not support licensed formats such as AAC or H.264. (However, it is possible to force Puppeteer to use a separately-installed version Chrome instead of Chromium via the [`executablePath` option to `puppeteer.launch`](https://github.com/puppeteer/puppeteer/blob/v2.0.0/docs/api.md#puppeteerlaunchoptions). You should only use this configuration if you need an official release of Chrome that supports these media formats.)
|
||||
* Since Puppeteer (in all configurations) controls a desktop version of Chromium/Chrome, features that are only supported by the mobile version of Chrome are not supported. This means that Puppeteer [does not support HTTP Live Streaming (HLS)](https://caniuse.com/#feat=http-live-streaming).
|
||||
|
||||
#### Q: I am having trouble installing / running Puppeteer in my test environment. Where should I look for help?
|
||||
We have a [troubleshooting](https://github.com/GoogleChrome/puppeteer/blob/master/docs/troubleshooting.md) guide for various operating systems that lists the required dependencies.
|
||||
We have a [troubleshooting](https://github.com/puppeteer/puppeteer/blob/master/docs/troubleshooting.md) guide for various operating systems that lists the required dependencies.
|
||||
|
||||
#### Q: How do I try/test a prerelease version of Puppeteer?
|
||||
|
||||
@ -394,7 +394,7 @@ Please note that prerelease may be unstable and contain bugs.
|
||||
#### Q: I have more questions! Where do I ask?
|
||||
|
||||
There are many ways to get help on Puppeteer:
|
||||
- [bugtracker](https://github.com/GoogleChrome/puppeteer/issues)
|
||||
- [bugtracker](https://github.com/puppeteer/puppeteer/issues)
|
||||
- [Stack Overflow](https://stackoverflow.com/questions/tagged/puppeteer)
|
||||
- [slack channel](https://join.slack.com/t/puppeteer/shared_invite/enQtMzU4MjIyMDA5NTM4LWI0YTE0MjM0NWQzYmE2MTRmNjM1ZTBkN2MxNmJmNTIwNTJjMmFhOWFjMGExMDViYjk2YjU2ZmYzMmE1NmExYzc)
|
||||
|
||||
|
30
docs/api.md
30
docs/api.md
@ -4,16 +4,16 @@
|
||||
|
||||
- Interactive Documentation: https://pptr.dev
|
||||
- API Translations: [中文|Chinese](https://zhaoqize.github.io/puppeteer-api-zh_CN/#/)
|
||||
- Troubleshooting: [troubleshooting.md](https://github.com/GoogleChrome/puppeteer/blob/master/docs/troubleshooting.md)
|
||||
- Troubleshooting: [troubleshooting.md](https://github.com/puppeteer/puppeteer/blob/master/docs/troubleshooting.md)
|
||||
- Releases per Chromium Version:
|
||||
* Chromium 79.0.3942.0 - [Puppeteer v2.0.0](https://github.com/GoogleChrome/puppeteer/blob/v2.0.0/docs/api.md)
|
||||
* Chromium 78.0.3882.0 - [Puppeteer v1.20.0](https://github.com/GoogleChrome/puppeteer/blob/v1.20.0/docs/api.md)
|
||||
* Chromium 77.0.3803.0 - [Puppeteer v1.19.0](https://github.com/GoogleChrome/puppeteer/blob/v1.19.0/docs/api.md)
|
||||
* Chromium 76.0.3803.0 - [Puppeteer v1.17.0](https://github.com/GoogleChrome/puppeteer/blob/v1.17.0/docs/api.md)
|
||||
* Chromium 75.0.3765.0 - [Puppeteer v1.15.0](https://github.com/GoogleChrome/puppeteer/blob/v1.15.0/docs/api.md)
|
||||
* Chromium 74.0.3723.0 - [Puppeteer v1.13.0](https://github.com/GoogleChrome/puppeteer/blob/v1.13.0/docs/api.md)
|
||||
* Chromium 73.0.3679.0 - [Puppeteer v1.12.2](https://github.com/GoogleChrome/puppeteer/blob/v1.12.2/docs/api.md)
|
||||
* [All releases](https://github.com/GoogleChrome/puppeteer/releases)
|
||||
* Chromium 79.0.3942.0 - [Puppeteer v2.0.0](https://github.com/puppeteer/puppeteer/blob/v2.0.0/docs/api.md)
|
||||
* Chromium 78.0.3882.0 - [Puppeteer v1.20.0](https://github.com/puppeteer/puppeteer/blob/v1.20.0/docs/api.md)
|
||||
* Chromium 77.0.3803.0 - [Puppeteer v1.19.0](https://github.com/puppeteer/puppeteer/blob/v1.19.0/docs/api.md)
|
||||
* Chromium 76.0.3803.0 - [Puppeteer v1.17.0](https://github.com/puppeteer/puppeteer/blob/v1.17.0/docs/api.md)
|
||||
* Chromium 75.0.3765.0 - [Puppeteer v1.15.0](https://github.com/puppeteer/puppeteer/blob/v1.15.0/docs/api.md)
|
||||
* Chromium 74.0.3723.0 - [Puppeteer v1.13.0](https://github.com/puppeteer/puppeteer/blob/v1.13.0/docs/api.md)
|
||||
* Chromium 73.0.3679.0 - [Puppeteer v1.12.2](https://github.com/puppeteer/puppeteer/blob/v1.12.2/docs/api.md)
|
||||
* [All releases](https://github.com/puppeteer/puppeteer/releases)
|
||||
|
||||
|
||||
##### Table of Contents
|
||||
@ -387,8 +387,8 @@ If Puppeteer doesn't find them in the environment during the installation step,
|
||||
- `HTTP_PROXY`, `HTTPS_PROXY`, `NO_PROXY` - defines HTTP proxy settings that are used to download and run Chromium.
|
||||
- `PUPPETEER_SKIP_CHROMIUM_DOWNLOAD` - do not download bundled Chromium during installation step.
|
||||
- `PUPPETEER_DOWNLOAD_HOST` - overwrite URL prefix that is used to download Chromium. Note: this includes protocol and might even include path prefix. Defaults to `https://storage.googleapis.com`.
|
||||
- `PUPPETEER_CHROMIUM_REVISION` - specify a certain version of Chromium you'd like Puppeteer to use. See [puppeteer.launch([options])](#puppeteerlaunchoptions) on how executable path is inferred. **BEWARE**: Puppeteer is only [guaranteed to work](https://github.com/GoogleChrome/puppeteer/#q-why-doesnt-puppeteer-vxxx-work-with-chromium-vyyy) with the bundled Chromium, use at your own risk.
|
||||
- `PUPPETEER_EXECUTABLE_PATH` - specify an executable path to be used in `puppeteer.launch`. See [puppeteer.launch([options])](#puppeteerlaunchoptions) on how the executable path is inferred. **BEWARE**: Puppeteer is only [guaranteed to work](https://github.com/GoogleChrome/puppeteer/#q-why-doesnt-puppeteer-vxxx-work-with-chromium-vyyy) with the bundled Chromium, use at your own risk.
|
||||
- `PUPPETEER_CHROMIUM_REVISION` - specify a certain version of Chromium you'd like Puppeteer to use. See [puppeteer.launch([options])](#puppeteerlaunchoptions) on how executable path is inferred. **BEWARE**: Puppeteer is only [guaranteed to work](https://github.com/puppeteer/puppeteer/#q-why-doesnt-puppeteer-vxxx-work-with-chromium-vyyy) with the bundled Chromium, use at your own risk.
|
||||
- `PUPPETEER_EXECUTABLE_PATH` - specify an executable path to be used in `puppeteer.launch`. See [puppeteer.launch([options])](#puppeteerlaunchoptions) on how the executable path is inferred. **BEWARE**: Puppeteer is only [guaranteed to work](https://github.com/puppeteer/puppeteer/#q-why-doesnt-puppeteer-vxxx-work-with-chromium-vyyy) with the bundled Chromium, use at your own risk.
|
||||
- `PUPPETEER_PRODUCT` - specify which browser you'd like Puppeteer to use. Must be one of `chrome` or `firefox`. Setting `product` programmatically in [puppeteer.launch([options])](#puppeteerlaunchoptions) supercedes this environment variable. The product is exposed in [`puppeteer.product`](#puppeteerproduct)
|
||||
|
||||
> **NOTE** PUPPETEER_* env variables are not accounted for in the [`puppeteer-core`](https://www.npmjs.com/package/puppeteer-core) package.
|
||||
@ -478,7 +478,7 @@ The default flags that Chromium will be launched with.
|
||||
- returns: <[Object]>
|
||||
|
||||
Returns a list of devices to be used with [`page.emulate(options)`](#pageemulateoptions). Actual list of
|
||||
devices can be found in [lib/DeviceDescriptors.js](https://github.com/GoogleChrome/puppeteer/blob/master/lib/DeviceDescriptors.js).
|
||||
devices can be found in [lib/DeviceDescriptors.js](https://github.com/puppeteer/puppeteer/blob/master/lib/DeviceDescriptors.js).
|
||||
|
||||
```js
|
||||
const puppeteer = require('puppeteer');
|
||||
@ -530,7 +530,7 @@ try {
|
||||
- `product` <[string]> Which browser to launch. At this time, this is either `chrome` or `firefox`. See also `PUPPETEER_PRODUCT`.
|
||||
- `ignoreHTTPSErrors` <[boolean]> Whether to ignore HTTPS errors during navigation. Defaults to `false`.
|
||||
- `headless` <[boolean]> Whether to run browser in [headless mode](https://developers.google.com/web/updates/2017/04/headless-chrome). Defaults to `true` unless the `devtools` option is `true`.
|
||||
- `executablePath` <[string]> Path to a browser executable to run instead of the bundled Chromium. If `executablePath` is a relative path, then it is resolved relative to [current working directory](https://nodejs.org/api/process.html#process_process_cwd). **BEWARE**: Puppeteer is only [guaranteed to work](https://github.com/GoogleChrome/puppeteer/#q-why-doesnt-puppeteer-vxxx-work-with-chromium-vyyy) with the bundled Chromium, use at your own risk.
|
||||
- `executablePath` <[string]> Path to a browser executable to run instead of the bundled Chromium. If `executablePath` is a relative path, then it is resolved relative to [current working directory](https://nodejs.org/api/process.html#process_process_cwd). **BEWARE**: Puppeteer is only [guaranteed to work](https://github.compuppeteer/puppeteer/#q-why-doesnt-puppeteer-vxxx-work-with-chromium-vyyy) with the bundled Chromium, use at your own risk.
|
||||
- `slowMo` <[number]> Slows down Puppeteer operations by the specified amount of milliseconds. Useful so that you can see what is going on.
|
||||
- `defaultViewport` <?[Object]> Sets a consistent viewport for each page. Defaults to an 800x600 viewport. `null` disables the default viewport.
|
||||
- `width` <[number]> page width in pixels.
|
||||
@ -1296,7 +1296,7 @@ const iPhone = puppeteer.devices['iPhone 6'];
|
||||
})();
|
||||
```
|
||||
|
||||
List of all available devices is available in the source code: [DeviceDescriptors.js](https://github.com/GoogleChrome/puppeteer/blob/master/lib/DeviceDescriptors.js).
|
||||
List of all available devices is available in the source code: [DeviceDescriptors.js](https://github.com/puppeteer/puppeteer/blob/master/lib/DeviceDescriptors.js).
|
||||
|
||||
#### page.emulateMedia(type)
|
||||
- `type` <?[string]> Changes the CSS media type of the page. The only allowed values are `'screen'`, `'print'` and `null`. Passing `null` disables CSS media emulation.
|
||||
@ -2334,7 +2334,7 @@ await page.keyboard.press('KeyA');
|
||||
await page.keyboard.up('Shift');
|
||||
```
|
||||
|
||||
> **NOTE** On MacOS, keyboard shortcuts like `⌘ A` -> Select All do not work. See [#1313](https://github.com/GoogleChrome/puppeteer/issues/1313)
|
||||
> **NOTE** On MacOS, keyboard shortcuts like `⌘ A` -> Select All do not work. See [#1313](https://github.com/puppeteer/puppeteer/issues/1313)
|
||||
|
||||
#### keyboard.down(key[, options])
|
||||
- `key` <[string]> Name of key to press, such as `ArrowLeft`. See [USKeyboardLayout] for a list of all key names.
|
||||
|
@ -34,7 +34,7 @@ const browser = await puppeteer.launch({
|
||||
});
|
||||
```
|
||||
|
||||
> Context: [issue 3681](https://github.com/GoogleChrome/puppeteer/issues/3681#issuecomment-447865342).
|
||||
> Context: [issue 3681](https://github.com/puppeteer/puppeteer/issues/3681#issuecomment-447865342).
|
||||
|
||||
## Chrome headless doesn't launch on UNIX
|
||||
|
||||
@ -123,10 +123,10 @@ yum update nss -y
|
||||
|
||||
<details>
|
||||
<summary>Check out discussions</summary>
|
||||
|
||||
- [#290](https://github.com/GoogleChrome/puppeteer/issues/290) - Debian troubleshooting <br/>
|
||||
- [#391](https://github.com/GoogleChrome/puppeteer/issues/391) - CentOS troubleshooting <br/>
|
||||
- [#379](https://github.com/GoogleChrome/puppeteer/issues/379) - Alpine troubleshooting <br/>
|
||||
|
||||
- [#290](https://github.com/puppeteer/puppeteer/issues/290) - Debian troubleshooting <br/>
|
||||
- [#391](https://github.com/puppeteer/puppeteer/issues/391) - CentOS troubleshooting <br/>
|
||||
- [#379](https://github.com/puppeteer/puppeteer/issues/379) - Alpine troubleshooting <br/>
|
||||
</details>
|
||||
|
||||
## Setting Up Chrome Linux Sandbox
|
||||
@ -183,7 +183,7 @@ export CHROME_DEVEL_SANDBOX=/usr/local/sbin/chrome-devel-sandbox
|
||||
|
||||
## Running Puppeteer on Travis CI
|
||||
|
||||
> 👋 We run our tests for Puppeteer on Travis CI - see our [`.travis.yml`](https://github.com/GoogleChrome/puppeteer/blob/master/.travis.yml) for reference.
|
||||
> 👋 We run our tests for Puppeteer on Travis CI - see our [`.travis.yml`](https://github.com/puppeteer/puppeteer/blob/master/.travis.yml) for reference.
|
||||
|
||||
Tips-n-tricks:
|
||||
- The `libnss3` package must be installed in order to run Chromium on Ubuntu Trusty
|
||||
@ -249,7 +249,7 @@ Running Puppeteer smoothly on CircleCI requires the following steps:
|
||||
|
||||
## Running Puppeteer in Docker
|
||||
|
||||
> 👋 We use [Cirrus Ci](https://cirrus-ci.org/) to run our tests for Puppeteer in a Docker container - see our [`Dockerfile.linux`](https://github.com/GoogleChrome/puppeteer/blob/master/.ci/node8/Dockerfile.linux) for reference.
|
||||
> 👋 We use [Cirrus Ci](https://cirrus-ci.org/) to run our tests for Puppeteer in a Docker container - see our [`Dockerfile.linux`](https://github.com/puppeteer/puppeteer/blob/master/.ci/node8/Dockerfile.linux) for reference.
|
||||
|
||||
Getting headless Chrome up and running in Docker can be tricky.
|
||||
The bundled Chromium that Puppeteer installs is missing the necessary
|
||||
@ -316,7 +316,7 @@ how to run this Dockerfile from a webserver running on App Engine Flex (Node).
|
||||
|
||||
### Running on Alpine
|
||||
|
||||
The [newest Chromium package](https://pkgs.alpinelinux.org/package/edge/community/x86_64/chromium) supported on Alpine is 77, which corresponds to [Puppeteer v1.19.0](https://github.com/GoogleChrome/puppeteer/releases/tag/v1.19.0).
|
||||
The [newest Chromium package](https://pkgs.alpinelinux.org/package/edge/community/x86_64/chromium) supported on Alpine is 77, which corresponds to [Puppeteer v1.19.0](https://github.com/puppeteer/puppeteer/releases/tag/v1.19.0).
|
||||
|
||||
Example Dockerfile:
|
||||
|
||||
@ -333,7 +333,7 @@ RUN apk add --no-cache \
|
||||
ca-certificates \
|
||||
ttf-freefont \
|
||||
nodejs \
|
||||
yarn
|
||||
yarn
|
||||
|
||||
...
|
||||
|
||||
|
@ -3,8 +3,8 @@
|
||||
"version": "0.5.0",
|
||||
"description": "Puppeteer API for Firefox",
|
||||
"main": "index.js",
|
||||
"repository": "github:GoogleChrome/puppeteer",
|
||||
"homepage": "https://github.com/GoogleChrome/puppeteer/tree/master/experimental/puppeteer-firefox",
|
||||
"repository": "github:puppeteer/puppeteer",
|
||||
"homepage": "https://github.com/puppeteer/puppeteer/tree/master/experimental/puppeteer-firefox",
|
||||
"engines": {
|
||||
"node": ">=8.9.4"
|
||||
},
|
||||
|
@ -560,7 +560,7 @@ function waitForWSEndpoint(browserProcess, timeout, preferredRevision) {
|
||||
'Failed to launch the browser process!' + (error ? ' ' + error.message : ''),
|
||||
stderr,
|
||||
'',
|
||||
'TROUBLESHOOTING: https://github.com/GoogleChrome/puppeteer/blob/master/docs/troubleshooting.md',
|
||||
'TROUBLESHOOTING: https://github.com/puppeteer/puppeteer/blob/master/docs/troubleshooting.md',
|
||||
'',
|
||||
].join('\n')));
|
||||
}
|
||||
|
@ -543,7 +543,7 @@ class Page extends EventEmitter {
|
||||
// to the 'console'
|
||||
// page event.
|
||||
//
|
||||
// @see https://github.com/GoogleChrome/puppeteer/issues/3865
|
||||
// @see https://github.com/puppeteer/puppeteer/issues/3865
|
||||
return;
|
||||
}
|
||||
const context = this._frameManager.executionContextById(event.executionContextId);
|
||||
|
@ -3,7 +3,7 @@
|
||||
"version": "2.0.0-post",
|
||||
"description": "A high-level API to control headless Chrome over the DevTools Protocol",
|
||||
"main": "index.js",
|
||||
"repository": "github:GoogleChrome/puppeteer",
|
||||
"repository": "github:puppeteer/puppeteer",
|
||||
"engines": {
|
||||
"node": ">=8.16.0"
|
||||
},
|
||||
|
@ -42,7 +42,7 @@ module.exports.addTests = function({testRunner, expect, puppeteer}) {
|
||||
await page.click('button');
|
||||
expect(await page.evaluate(() => result)).toBe('Clicked');
|
||||
});
|
||||
// @see https://github.com/GoogleChrome/puppeteer/issues/4281
|
||||
// @see https://github.com/puppeteer/puppeteer/issues/4281
|
||||
it('should click on a span with an inline element inside', async({page, server}) => {
|
||||
await page.setContent(`
|
||||
<style>
|
||||
@ -173,7 +173,7 @@ module.exports.addTests = function({testRunner, expect, puppeteer}) {
|
||||
await page.click('button.does-not-exist').catch(e => error = e);
|
||||
expect(error.message).toBe('No node found for selector: button.does-not-exist');
|
||||
});
|
||||
// @see https://github.com/GoogleChrome/puppeteer/issues/161
|
||||
// @see https://github.com/puppeteer/puppeteer/issues/161
|
||||
it('should not hang with touch-enabled viewports', async({page, server}) => {
|
||||
await page.setViewport(puppeteer.devices['iPhone 6'].viewport);
|
||||
await page.mouse.down();
|
||||
@ -222,7 +222,7 @@ module.exports.addTests = function({testRunner, expect, puppeteer}) {
|
||||
await page.click('#button-8', {button: 'right'});
|
||||
expect(await page.evaluate(() => document.querySelector('#button-8').textContent)).toBe('context menu');
|
||||
});
|
||||
// @see https://github.com/GoogleChrome/puppeteer/issues/206
|
||||
// @see https://github.com/puppeteer/puppeteer/issues/206
|
||||
it('should click links which cause navigation', async({page, server}) => {
|
||||
await page.setContent(`<a href="${server.EMPTY_PAGE}">empty.html</a>`);
|
||||
// This await should not hang.
|
||||
@ -237,7 +237,7 @@ module.exports.addTests = function({testRunner, expect, puppeteer}) {
|
||||
await button.click();
|
||||
expect(await frame.evaluate(() => window.result)).toBe('Clicked');
|
||||
});
|
||||
// @see https://github.com/GoogleChrome/puppeteer/issues/4110
|
||||
// @see https://github.com/puppeteer/puppeteer/issues/4110
|
||||
xit('should click the button with fixed position inside an iframe', async({page, server}) => {
|
||||
await page.goto(server.EMPTY_PAGE);
|
||||
await page.setViewport({width: 500, height: 500});
|
||||
|
@ -83,11 +83,11 @@ module.exports.addTests = function({testRunner, expect, puppeteer, defaultBrowse
|
||||
await headlessPage.goto(server.EMPTY_PAGE);
|
||||
const cookie = await headlessPage.evaluate(() => document.cookie);
|
||||
await headlessBrowser.close();
|
||||
// This might throw. See https://github.com/GoogleChrome/puppeteer/issues/2778
|
||||
// This might throw. See https://github.com/puppeteer/puppeteer/issues/2778
|
||||
await rmAsync(userDataDir).catch(e => {});
|
||||
expect(cookie).toBe('foo=true');
|
||||
});
|
||||
// TODO: Support OOOPIF. @see https://github.com/GoogleChrome/puppeteer/issues/2548
|
||||
// TODO: Support OOOPIF. @see https://github.com/puppeteer/puppeteer/issues/2548
|
||||
xit('OOPIF: should report google.com frame', async({server}) => {
|
||||
// https://google.com is isolated by default in Chromium embedder.
|
||||
const browser = await puppeteer.launch(headfulOptions);
|
||||
|
@ -90,7 +90,7 @@ module.exports.addTests = function({testRunner, expect, defaultBrowserOptions, p
|
||||
await page.goto(httpsServer.PREFIX + '/mixedcontent.html', {waitUntil: 'load'});
|
||||
expect(page.frames().length).toBe(2);
|
||||
// Make sure blocked iframe has functional execution context
|
||||
// @see https://github.com/GoogleChrome/puppeteer/issues/2709
|
||||
// @see https://github.com/puppeteer/puppeteer/issues/2709
|
||||
expect(await page.frames()[0].evaluate('1 + 2')).toBe(3);
|
||||
expect(await page.frames()[1].evaluate('2 + 3')).toBe(5);
|
||||
});
|
||||
|
@ -126,7 +126,7 @@ module.exports.addTests = function({testRunner, expect, defaultBrowserOptions, p
|
||||
expect(fs.readdirSync(userDataDir).length).toBeGreaterThan(0);
|
||||
await browser.close();
|
||||
expect(fs.readdirSync(userDataDir).length).toBeGreaterThan(0);
|
||||
// This might throw. See https://github.com/GoogleChrome/puppeteer/issues/2778
|
||||
// This might throw. See https://github.com/puppeteer/puppeteer/issues/2778
|
||||
await rmAsync(userDataDir).catch(e => {});
|
||||
});
|
||||
it('userDataDir argument', async({server}) => {
|
||||
@ -148,7 +148,7 @@ module.exports.addTests = function({testRunner, expect, defaultBrowserOptions, p
|
||||
expect(fs.readdirSync(userDataDir).length).toBeGreaterThan(0);
|
||||
await browser.close();
|
||||
expect(fs.readdirSync(userDataDir).length).toBeGreaterThan(0);
|
||||
// This might throw. See https://github.com/GoogleChrome/puppeteer/issues/2778
|
||||
// This might throw. See https://github.com/puppeteer/puppeteer/issues/2778
|
||||
await rmAsync(userDataDir).catch(e => {});
|
||||
});
|
||||
it('userDataDir option should restore state', async({server}) => {
|
||||
@ -165,10 +165,10 @@ module.exports.addTests = function({testRunner, expect, defaultBrowserOptions, p
|
||||
await page2.goto(server.EMPTY_PAGE);
|
||||
expect(await page2.evaluate(() => localStorage.hey)).toBe('hello');
|
||||
await browser2.close();
|
||||
// This might throw. See https://github.com/GoogleChrome/puppeteer/issues/2778
|
||||
// This might throw. See https://github.com/puppeteer/puppeteer/issues/2778
|
||||
await rmAsync(userDataDir).catch(e => {});
|
||||
});
|
||||
// This mysteriously fails on Windows on AppVeyor. See https://github.com/GoogleChrome/puppeteer/issues/4111
|
||||
// This mysteriously fails on Windows on AppVeyor. See https://github.com/puppeteer/puppeteer/issues/4111
|
||||
xit('userDataDir option should restore cookies', async({server}) => {
|
||||
const userDataDir = await mkdtempAsync(TMP_FOLDER);
|
||||
const options = Object.assign({userDataDir}, defaultBrowserOptions);
|
||||
@ -183,7 +183,7 @@ module.exports.addTests = function({testRunner, expect, defaultBrowserOptions, p
|
||||
await page2.goto(server.EMPTY_PAGE);
|
||||
expect(await page2.evaluate(() => document.cookie)).toBe('doSomethingOnlyOnce=true');
|
||||
await browser2.close();
|
||||
// This might throw. See https://github.com/GoogleChrome/puppeteer/issues/2778
|
||||
// This might throw. See https://github.com/puppeteer/puppeteer/issues/2778
|
||||
await rmAsync(userDataDir).catch(e => {});
|
||||
});
|
||||
it('should return the default arguments', async() => {
|
||||
@ -344,7 +344,7 @@ module.exports.addTests = function({testRunner, expect, defaultBrowserOptions, p
|
||||
expect(await restoredPage.evaluate(() => 7 * 8)).toBe(56);
|
||||
await browser.close();
|
||||
});
|
||||
// @see https://github.com/GoogleChrome/puppeteer/issues/4197#issuecomment-481793410
|
||||
// @see https://github.com/puppeteer/puppeteer/issues/4197#issuecomment-481793410
|
||||
it('should be able to connect to the same page simultaneously', async({server}) => {
|
||||
const browserOne = await puppeteer.launch();
|
||||
const browserTwo = await puppeteer.connect({ browserWSEndpoint: browserOne.wsEndpoint() });
|
||||
|
@ -406,7 +406,7 @@ module.exports.addTests = function({testRunner, expect, headless, puppeteer, CHR
|
||||
columnNumber: CHROME ? 14 : 6, // console.|log vs |console.log
|
||||
});
|
||||
});
|
||||
// @see https://github.com/GoogleChrome/puppeteer/issues/3865
|
||||
// @see https://github.com/puppeteer/puppeteer/issues/3865
|
||||
it_fails_ffox('should not throw when there are console messages in detached iframes', async({browser, page, server}) => {
|
||||
await page.goto(server.EMPTY_PAGE);
|
||||
await page.evaluate(async() => {
|
||||
@ -909,7 +909,7 @@ module.exports.addTests = function({testRunner, expect, headless, puppeteer, CHR
|
||||
expect(await page.evaluate(() => __injected)).toBe(35);
|
||||
});
|
||||
|
||||
// @see https://github.com/GoogleChrome/puppeteer/issues/4840
|
||||
// @see https://github.com/puppeteer/puppeteer/issues/4840
|
||||
xit('should throw when added with content to the CSP page', async({page, server}) => {
|
||||
await page.goto(server.PREFIX + '/csp.html');
|
||||
let error = null;
|
||||
@ -1146,7 +1146,7 @@ module.exports.addTests = function({testRunner, expect, headless, puppeteer, CHR
|
||||
}
|
||||
expect(error.message).toContain('Values must be strings');
|
||||
});
|
||||
// @see https://github.com/GoogleChrome/puppeteer/issues/3327
|
||||
// @see https://github.com/puppeteer/puppeteer/issues/3327
|
||||
it_fails_ffox('should work when re-defining top-level Event class', async({page, server}) => {
|
||||
await page.goto(server.PREFIX + '/input/select.html');
|
||||
await page.evaluate(() => window.Event = null);
|
||||
|
@ -60,7 +60,7 @@ module.exports.addTests = function({testRunner, expect, CHROME}) {
|
||||
page.waitForNavigation()
|
||||
]);
|
||||
});
|
||||
// @see https://github.com/GoogleChrome/puppeteer/issues/3973
|
||||
// @see https://github.com/puppeteer/puppeteer/issues/3973
|
||||
it('should work when header manipulation headers with redirect', async({page, server}) => {
|
||||
server.setRedirect('/rrredirect', '/empty.html');
|
||||
await page.setRequestInterception(true);
|
||||
@ -72,7 +72,7 @@ module.exports.addTests = function({testRunner, expect, CHROME}) {
|
||||
});
|
||||
await page.goto(server.PREFIX + '/rrredirect');
|
||||
});
|
||||
// @see https://github.com/GoogleChrome/puppeteer/issues/4743
|
||||
// @see https://github.com/puppeteer/puppeteer/issues/4743
|
||||
it('should be able to remove headers', async({page, server}) => {
|
||||
await page.setRequestInterception(true);
|
||||
page.on('request', request => {
|
||||
@ -132,7 +132,7 @@ module.exports.addTests = function({testRunner, expect, CHROME}) {
|
||||
const response = await page.goto(server.EMPTY_PAGE);
|
||||
expect(response.ok()).toBe(true);
|
||||
});
|
||||
// @see https://github.com/GoogleChrome/puppeteer/issues/4337
|
||||
// @see https://github.com/puppeteer/puppeteer/issues/4337
|
||||
it('should work with redirect inside sync XHR', async({page, server}) => {
|
||||
await page.goto(server.EMPTY_PAGE);
|
||||
server.setRedirect('/logo.png', '/pptr.png');
|
||||
|
@ -188,7 +188,7 @@ const utils = module.exports = {
|
||||
commit: {
|
||||
sha,
|
||||
timestamp,
|
||||
url: `https://github.com/GoogleChrome/puppeteer/commit/${sha}`,
|
||||
url: `https://github.com/puppeteer/puppeteer/commit/${sha}`,
|
||||
},
|
||||
build: {
|
||||
url: process.env.FLAKINESS_DASHBOARD_BUILD_URL,
|
||||
@ -208,7 +208,7 @@ const utils = module.exports = {
|
||||
if (test.fullName.includes(COVERAGE_TESTSUITE_NAME))
|
||||
return;
|
||||
const testpath = test.location.filePath.substring(utils.projectRoot().length);
|
||||
const url = `https://github.com/GoogleChrome/puppeteer/blob/${sha}/${testpath}#L${test.location.lineNumber}`;
|
||||
const url = `https://github.com/puppeteer/puppeteer/blob/${sha}/${testpath}#L${test.location.lineNumber}`;
|
||||
dashboard.reportTestResult({
|
||||
testId: test.testId,
|
||||
name: test.location.fileName + ':' + test.location.lineNumber,
|
||||
|
@ -5,7 +5,7 @@ const execSync = require('child_process').execSync;
|
||||
// Compare current HEAD to upstream master SHA.
|
||||
// If they are not equal - refuse to publish since
|
||||
// we're not tip-of-tree.
|
||||
const upstream_sha = execSync(`git ls-remote https://github.com/GoogleChrome/puppeteer --tags master | cut -f1`).toString('utf8');
|
||||
const upstream_sha = execSync(`git ls-remote https://github.com/puppeteer/puppeteer --tags master | cut -f1`).toString('utf8');
|
||||
const current_sha = execSync(`git rev-parse HEAD`).toString('utf8');
|
||||
if (upstream_sha.trim() !== current_sha.trim()) {
|
||||
console.log('REFUSING TO PUBLISH: this is not tip-of-tree!');
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
To bundle Puppeteer using [Browserify](http://browserify.org/):
|
||||
|
||||
1. Clone Puppeteer repository: `git clone https://github.com/GoogleChrome/puppeteer && cd puppeteer`
|
||||
1. Clone Puppeteer repository: `git clone https://github.com/puppeteer/puppeteer && cd puppeteer`
|
||||
2. `npm install`
|
||||
3. Run `npm run bundle`
|
||||
|
||||
@ -22,7 +22,7 @@ another browser instance through its WS Endpoint:
|
||||
</script>
|
||||
```
|
||||
|
||||
See our [puppeteer-web tests](https://github.com/GoogleChrome/puppeteer/blob/master/utils/browser/test.js)
|
||||
See our [puppeteer-web tests](https://github.com/puppeteer/puppeteer/blob/master/utils/browser/test.js)
|
||||
for details.
|
||||
|
||||
### Running inside Chrome Extension
|
||||
@ -34,4 +34,4 @@ to your `manifest.json` file:
|
||||
"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'"
|
||||
```
|
||||
|
||||
Please see discussion in https://github.com/GoogleChrome/puppeteer/issues/3455.
|
||||
Please see discussion in https://github.com/puppeteer/puppeteer/issues/3455.
|
||||
|
@ -18,8 +18,8 @@ const Message = require('../Message');
|
||||
|
||||
module.exports.ensureReleasedAPILinks = function(sources, version) {
|
||||
// Release version is everything that doesn't include "-".
|
||||
const apiLinkRegex = /https:\/\/github.com\/GoogleChrome\/puppeteer\/blob\/v[^/]*\/docs\/api.md/ig;
|
||||
const lastReleasedAPI = `https://github.com/GoogleChrome/puppeteer/blob/v${version.split('-')[0]}/docs/api.md`;
|
||||
const apiLinkRegex = /https:\/\/github.com\/puppeteer\/puppeteer\/blob\/v[^/]*\/docs\/api.md/ig;
|
||||
const lastReleasedAPI = `https://github.com/puppeteer/puppeteer/blob/v${version.split('-')[0]}/docs/api.md`;
|
||||
|
||||
const messages = [];
|
||||
for (const source of sources) {
|
||||
|
@ -28,36 +28,36 @@ const {expect} = new Matchers();
|
||||
describe('ensureReleasedAPILinks', function() {
|
||||
it('should work with non-release version', function() {
|
||||
const source = new Source('doc.md', `
|
||||
[API](https://github.com/GoogleChrome/puppeteer/blob/v1.1.0/docs/api.md#class-page)
|
||||
[API](https://github.com/puppeteer/puppeteer/blob/v1.1.0/docs/api.md#class-page)
|
||||
`);
|
||||
const messages = ensureReleasedAPILinks([source], '1.3.0-post');
|
||||
expect(messages.length).toBe(1);
|
||||
expect(messages[0].type).toBe('warning');
|
||||
expect(messages[0].text).toContain('doc.md');
|
||||
expect(source.text()).toBe(`
|
||||
[API](https://github.com/GoogleChrome/puppeteer/blob/v1.3.0/docs/api.md#class-page)
|
||||
[API](https://github.com/puppeteer/puppeteer/blob/v1.3.0/docs/api.md#class-page)
|
||||
`);
|
||||
});
|
||||
it('should work with release version', function() {
|
||||
const source = new Source('doc.md', `
|
||||
[API](https://github.com/GoogleChrome/puppeteer/blob/v1.1.0/docs/api.md#class-page)
|
||||
[API](https://github.com/puppeteer/puppeteer/blob/v1.1.0/docs/api.md#class-page)
|
||||
`);
|
||||
const messages = ensureReleasedAPILinks([source], '1.3.0');
|
||||
expect(messages.length).toBe(1);
|
||||
expect(messages[0].type).toBe('warning');
|
||||
expect(messages[0].text).toContain('doc.md');
|
||||
expect(source.text()).toBe(`
|
||||
[API](https://github.com/GoogleChrome/puppeteer/blob/v1.3.0/docs/api.md#class-page)
|
||||
[API](https://github.com/puppeteer/puppeteer/blob/v1.3.0/docs/api.md#class-page)
|
||||
`);
|
||||
});
|
||||
it('should keep master links intact', function() {
|
||||
const source = new Source('doc.md', `
|
||||
[API](https://github.com/GoogleChrome/puppeteer/blob/master/docs/api.md#class-page)
|
||||
[API](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)
|
||||
`);
|
||||
const messages = ensureReleasedAPILinks([source], '1.3.0');
|
||||
expect(messages.length).toBe(0);
|
||||
expect(source.text()).toBe(`
|
||||
[API](https://github.com/GoogleChrome/puppeteer/blob/master/docs/api.md#class-page)
|
||||
[API](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)
|
||||
`);
|
||||
});
|
||||
});
|
||||
|
@ -11,7 +11,7 @@
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/GoogleChrome/puppeteer/tree/master/utils/testrunner"
|
||||
"url": "https://github.com/puppeteer/puppeteer/tree/master/utils/testrunner"
|
||||
},
|
||||
"author": "The Chromium Authors",
|
||||
"license": "Apache-2.0"
|
||||
|
@ -8,7 +8,7 @@
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/GoogleChrome/puppeteer/tree/master/utils/testserver"
|
||||
"url": "https://github.com/puppeteer/puppeteer/tree/master/utils/testserver"
|
||||
},
|
||||
"author": "The Chromium Authors",
|
||||
"license": "Apache-2.0"
|
||||
|
Loading…
Reference in New Issue
Block a user