chore: update URLs (#5185)

This commit is contained in:
Mathias Bynens 2019-11-26 13:12:25 +01:00 committed by GitHub
parent c5a72e9887
commit eddb23b521
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
22 changed files with 99 additions and 99 deletions

View File

@ -40,5 +40,5 @@ README.md
tsconfig.json tsconfig.json
experimental experimental
# exclude types, see https://github.com/GoogleChrome/puppeteer/issues/3878 # exclude types, see https://github.com/puppeteer/puppeteer/issues/3878
/index.d.ts /index.d.ts

View File

@ -38,7 +38,7 @@ again.
1. Clone this repository 1. Clone this repository
```bash ```bash
git clone https://github.com/GoogleChrome/puppeteer git clone https://github.com/puppeteer/puppeteer
cd puppeteer cd puppeteer
``` ```
@ -63,7 +63,7 @@ information on using pull requests.
## Code Style ## 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). - 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. - 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 ## 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: 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 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. - 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) 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/GoogleChrome/puppeteer/tree/master/utils/testrunner) framework. 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. Despite being named 'unit', these are integration tests, making sure public API methods and events work as expected.
- To run all tests: - To run all tests:
@ -247,16 +247,16 @@ Releasing to npm consists of the following phases:
1. Source Code: mark a release. 1. Source Code: mark a release.
1. Bump `package.json` version following the SEMVER rules. 1. Bump `package.json` version following the SEMVER rules.
2. Run `npm run doc` to update the docs accordingly. 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. 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/GoogleChrome/puppeteer/pull/5078)). 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**. 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. 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`. - **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`. - For the “raw notes” section, use `git log --pretty="%h - %s" v2.0.0..HEAD`.
2. Publish `puppeteer` to npm. 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. 2. Run `git status` and make sure there are no untracked files.
- **WHY**: this is to avoid adding unnecessary files to the npm package. - **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. 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. 2. Run `npm publish`. This publishes the `puppeteer-core` package.
3. Run `git reset --hard` to reset the changes to `package.json`. 3. Run `git reset --hard` to reset the changes to `package.json`.
4. Source Code: mark post-release. 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. - **NOTE**: no other commits should be landed in-between release commit and bump commit.
## Updating npm dist tags ## Updating npm dist tags

View File

@ -1,12 +1,12 @@
# Puppeteer # Puppeteer
<!-- [START badges] --> <!-- [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] --> <!-- [END badges] -->
<img src="https://user-images.githubusercontent.com/10379601/29446482-04f7036a-841f-11e7-9872-91d1fc2ea683.png" height="200" align="right"> <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. > 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" # 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 ### 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 `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. 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 ### 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. 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 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*: **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 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. **Example** - create a PDF.
@ -113,7 +113,7 @@ Execute script on the command line
node hn.js 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 **Example** - evaluate script in the context of the page
@ -148,7 +148,7 @@ Execute script on the command line
node get-dimensions.js 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] --> <!-- [END getstarted] -->
@ -157,7 +157,7 @@ See [`Page.evaluate()`](https://github.com/GoogleChrome/puppeteer/blob/v2.0.0/do
**1. Uses Headless mode** **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 ```js
const browser = await puppeteer.launch({headless: false}); // default is true 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'}); 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. 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 ## Resources
- [API Documentation](https://github.com/GoogleChrome/puppeteer/blob/v2.0.0/docs/api.md) - [API Documentation](https://github.com/puppeteer/puppeteer/blob/v2.0.0/docs/api.md)
- [Examples](https://github.com/GoogleChrome/puppeteer/tree/master/examples/) - [Examples](https://github.com/puppeteer/puppeteer/tree/master/examples/)
- [Community list of Puppeteer resources](https://github.com/transitive-bullshit/awesome-puppeteer) - [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 # 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' 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)!) - `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 ## 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] --> <!-- [START faq] -->
@ -294,7 +294,7 @@ Check out [contributing guide](https://github.com/GoogleChrome/puppeteer/blob/ma
#### Q: Who maintains Puppeteer? #### Q: Who maintains Puppeteer?
The Chrome DevTools team maintains the library, but we'd love your help and expertise on the project! 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 Puppeteers goals and principles? #### Q: What are Puppeteers 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 shouldnt be your only testing solution, it does have a few good points compared to WebDriver: 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 shouldnt 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, its 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, its 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. Theres no need for evil “sleep(1000)” calls in puppeteer scripts. - Puppeteer has event-driven architecture, which removes a lot of potential flakiness. Theres 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 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 youll see what the browser is doing. You can even open Chrome DevTools to inspect the test environment. - Puppeteer shines when it comes to debugging: flip the “headless” bit to false, add “slowMo”, and youll 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. 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. Heres a typical story: This is not an artificial constraint: A lot of work on Puppeteer is actually taking place in the Chromium repository. Heres 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 were fixing it in Chromium: https://chromium-review.googlesource.com/c/chromium/src/+/1102154 - It turned out this is an issue with the DevTools protocol, so were 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. 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? #### 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: Whats considered a “Navigation”? #### Q: Whats considered a “Navigation”?
@ -373,13 +373,13 @@ await page.evaluate(() => {
#### Q: What features does Puppeteer not support? #### 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). * 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? #### 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? #### 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? #### Q: I have more questions! Where do I ask?
There are many ways to get help on Puppeteer: 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) - [Stack Overflow](https://stackoverflow.com/questions/tagged/puppeteer)
- [slack channel](https://join.slack.com/t/puppeteer/shared_invite/enQtMzU4MjIyMDA5NTM4LWI0YTE0MjM0NWQzYmE2MTRmNjM1ZTBkN2MxNmJmNTIwNTJjMmFhOWFjMGExMDViYjk2YjU2ZmYzMmE1NmExYzc) - [slack channel](https://join.slack.com/t/puppeteer/shared_invite/enQtMzU4MjIyMDA5NTM4LWI0YTE0MjM0NWQzYmE2MTRmNjM1ZTBkN2MxNmJmNTIwNTJjMmFhOWFjMGExMDViYjk2YjU2ZmYzMmE1NmExYzc)

View File

@ -4,16 +4,16 @@
- Interactive Documentation: https://pptr.dev - Interactive Documentation: https://pptr.dev
- API Translations: [中文|Chinese](https://zhaoqize.github.io/puppeteer-api-zh_CN/#/) - 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: - 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 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/GoogleChrome/puppeteer/blob/v1.20.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/GoogleChrome/puppeteer/blob/v1.19.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/GoogleChrome/puppeteer/blob/v1.17.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/GoogleChrome/puppeteer/blob/v1.15.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/GoogleChrome/puppeteer/blob/v1.13.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/GoogleChrome/puppeteer/blob/v1.12.2/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/GoogleChrome/puppeteer/releases) * [All releases](https://github.com/puppeteer/puppeteer/releases)
##### Table of Contents ##### 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. - `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_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_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_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/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/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) - `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. > **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: <[Object]>
Returns a list of devices to be used with [`page.emulate(options)`](#pageemulateoptions). Actual list of 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 ```js
const puppeteer = require('puppeteer'); 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`. - `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`. - `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`. - `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. - `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. - `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. - `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) #### 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. - `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'); 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]) #### keyboard.down(key[, options])
- `key` <[string]> Name of key to press, such as `ArrowLeft`. See [USKeyboardLayout] for a list of all key names. - `key` <[string]> Name of key to press, such as `ArrowLeft`. See [USKeyboardLayout] for a list of all key names.

View File

@ -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 ## Chrome headless doesn't launch on UNIX
@ -123,10 +123,10 @@ yum update nss -y
<details> <details>
<summary>Check out discussions</summary> <summary>Check out discussions</summary>
- [#290](https://github.com/GoogleChrome/puppeteer/issues/290) - Debian troubleshooting <br/> - [#290](https://github.com/puppeteer/puppeteer/issues/290) - Debian troubleshooting <br/>
- [#391](https://github.com/GoogleChrome/puppeteer/issues/391) - CentOS troubleshooting <br/> - [#391](https://github.com/puppeteer/puppeteer/issues/391) - CentOS troubleshooting <br/>
- [#379](https://github.com/GoogleChrome/puppeteer/issues/379) - Alpine troubleshooting <br/> - [#379](https://github.com/puppeteer/puppeteer/issues/379) - Alpine troubleshooting <br/>
</details> </details>
## Setting Up Chrome Linux Sandbox ## Setting Up Chrome Linux Sandbox
@ -183,7 +183,7 @@ export CHROME_DEVEL_SANDBOX=/usr/local/sbin/chrome-devel-sandbox
## Running Puppeteer on Travis CI ## 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: Tips-n-tricks:
- The `libnss3` package must be installed in order to run Chromium on Ubuntu Trusty - 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 ## 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. Getting headless Chrome up and running in Docker can be tricky.
The bundled Chromium that Puppeteer installs is missing the necessary 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 ### 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: Example Dockerfile:
@ -333,7 +333,7 @@ RUN apk add --no-cache \
ca-certificates \ ca-certificates \
ttf-freefont \ ttf-freefont \
nodejs \ nodejs \
yarn yarn
... ...

View File

@ -3,8 +3,8 @@
"version": "0.5.0", "version": "0.5.0",
"description": "Puppeteer API for Firefox", "description": "Puppeteer API for Firefox",
"main": "index.js", "main": "index.js",
"repository": "github:GoogleChrome/puppeteer", "repository": "github:puppeteer/puppeteer",
"homepage": "https://github.com/GoogleChrome/puppeteer/tree/master/experimental/puppeteer-firefox", "homepage": "https://github.com/puppeteer/puppeteer/tree/master/experimental/puppeteer-firefox",
"engines": { "engines": {
"node": ">=8.9.4" "node": ">=8.9.4"
}, },

View File

@ -560,7 +560,7 @@ function waitForWSEndpoint(browserProcess, timeout, preferredRevision) {
'Failed to launch the browser process!' + (error ? ' ' + error.message : ''), 'Failed to launch the browser process!' + (error ? ' ' + error.message : ''),
stderr, 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'))); ].join('\n')));
} }

View File

@ -543,7 +543,7 @@ class Page extends EventEmitter {
// to the 'console' // to the 'console'
// page event. // page event.
// //
// @see https://github.com/GoogleChrome/puppeteer/issues/3865 // @see https://github.com/puppeteer/puppeteer/issues/3865
return; return;
} }
const context = this._frameManager.executionContextById(event.executionContextId); const context = this._frameManager.executionContextById(event.executionContextId);

View File

@ -3,7 +3,7 @@
"version": "2.0.0-post", "version": "2.0.0-post",
"description": "A high-level API to control headless Chrome over the DevTools Protocol", "description": "A high-level API to control headless Chrome over the DevTools Protocol",
"main": "index.js", "main": "index.js",
"repository": "github:GoogleChrome/puppeteer", "repository": "github:puppeteer/puppeteer",
"engines": { "engines": {
"node": ">=8.16.0" "node": ">=8.16.0"
}, },

View File

@ -42,7 +42,7 @@ module.exports.addTests = function({testRunner, expect, puppeteer}) {
await page.click('button'); await page.click('button');
expect(await page.evaluate(() => result)).toBe('Clicked'); 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}) => { it('should click on a span with an inline element inside', async({page, server}) => {
await page.setContent(` await page.setContent(`
<style> <style>
@ -173,7 +173,7 @@ module.exports.addTests = function({testRunner, expect, puppeteer}) {
await page.click('button.does-not-exist').catch(e => error = e); await page.click('button.does-not-exist').catch(e => error = e);
expect(error.message).toBe('No node found for selector: button.does-not-exist'); 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}) => { it('should not hang with touch-enabled viewports', async({page, server}) => {
await page.setViewport(puppeteer.devices['iPhone 6'].viewport); await page.setViewport(puppeteer.devices['iPhone 6'].viewport);
await page.mouse.down(); await page.mouse.down();
@ -222,7 +222,7 @@ module.exports.addTests = function({testRunner, expect, puppeteer}) {
await page.click('#button-8', {button: 'right'}); await page.click('#button-8', {button: 'right'});
expect(await page.evaluate(() => document.querySelector('#button-8').textContent)).toBe('context menu'); 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}) => { it('should click links which cause navigation', async({page, server}) => {
await page.setContent(`<a href="${server.EMPTY_PAGE}">empty.html</a>`); await page.setContent(`<a href="${server.EMPTY_PAGE}">empty.html</a>`);
// This await should not hang. // This await should not hang.
@ -237,7 +237,7 @@ module.exports.addTests = function({testRunner, expect, puppeteer}) {
await button.click(); await button.click();
expect(await frame.evaluate(() => window.result)).toBe('Clicked'); 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}) => { xit('should click the button with fixed position inside an iframe', async({page, server}) => {
await page.goto(server.EMPTY_PAGE); await page.goto(server.EMPTY_PAGE);
await page.setViewport({width: 500, height: 500}); await page.setViewport({width: 500, height: 500});

View File

@ -83,11 +83,11 @@ module.exports.addTests = function({testRunner, expect, puppeteer, defaultBrowse
await headlessPage.goto(server.EMPTY_PAGE); await headlessPage.goto(server.EMPTY_PAGE);
const cookie = await headlessPage.evaluate(() => document.cookie); const cookie = await headlessPage.evaluate(() => document.cookie);
await headlessBrowser.close(); 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 => {}); await rmAsync(userDataDir).catch(e => {});
expect(cookie).toBe('foo=true'); 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}) => { xit('OOPIF: should report google.com frame', async({server}) => {
// https://google.com is isolated by default in Chromium embedder. // https://google.com is isolated by default in Chromium embedder.
const browser = await puppeteer.launch(headfulOptions); const browser = await puppeteer.launch(headfulOptions);

View File

@ -90,7 +90,7 @@ module.exports.addTests = function({testRunner, expect, defaultBrowserOptions, p
await page.goto(httpsServer.PREFIX + '/mixedcontent.html', {waitUntil: 'load'}); await page.goto(httpsServer.PREFIX + '/mixedcontent.html', {waitUntil: 'load'});
expect(page.frames().length).toBe(2); expect(page.frames().length).toBe(2);
// Make sure blocked iframe has functional execution context // 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()[0].evaluate('1 + 2')).toBe(3);
expect(await page.frames()[1].evaluate('2 + 3')).toBe(5); expect(await page.frames()[1].evaluate('2 + 3')).toBe(5);
}); });

View File

@ -126,7 +126,7 @@ module.exports.addTests = function({testRunner, expect, defaultBrowserOptions, p
expect(fs.readdirSync(userDataDir).length).toBeGreaterThan(0); expect(fs.readdirSync(userDataDir).length).toBeGreaterThan(0);
await browser.close(); await browser.close();
expect(fs.readdirSync(userDataDir).length).toBeGreaterThan(0); 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 => {}); await rmAsync(userDataDir).catch(e => {});
}); });
it('userDataDir argument', async({server}) => { it('userDataDir argument', async({server}) => {
@ -148,7 +148,7 @@ module.exports.addTests = function({testRunner, expect, defaultBrowserOptions, p
expect(fs.readdirSync(userDataDir).length).toBeGreaterThan(0); expect(fs.readdirSync(userDataDir).length).toBeGreaterThan(0);
await browser.close(); await browser.close();
expect(fs.readdirSync(userDataDir).length).toBeGreaterThan(0); 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 => {}); await rmAsync(userDataDir).catch(e => {});
}); });
it('userDataDir option should restore state', async({server}) => { 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); await page2.goto(server.EMPTY_PAGE);
expect(await page2.evaluate(() => localStorage.hey)).toBe('hello'); expect(await page2.evaluate(() => localStorage.hey)).toBe('hello');
await browser2.close(); 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 => {}); 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}) => { xit('userDataDir option should restore cookies', async({server}) => {
const userDataDir = await mkdtempAsync(TMP_FOLDER); const userDataDir = await mkdtempAsync(TMP_FOLDER);
const options = Object.assign({userDataDir}, defaultBrowserOptions); const options = Object.assign({userDataDir}, defaultBrowserOptions);
@ -183,7 +183,7 @@ module.exports.addTests = function({testRunner, expect, defaultBrowserOptions, p
await page2.goto(server.EMPTY_PAGE); await page2.goto(server.EMPTY_PAGE);
expect(await page2.evaluate(() => document.cookie)).toBe('doSomethingOnlyOnce=true'); expect(await page2.evaluate(() => document.cookie)).toBe('doSomethingOnlyOnce=true');
await browser2.close(); 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 => {}); await rmAsync(userDataDir).catch(e => {});
}); });
it('should return the default arguments', async() => { 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); expect(await restoredPage.evaluate(() => 7 * 8)).toBe(56);
await browser.close(); 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}) => { it('should be able to connect to the same page simultaneously', async({server}) => {
const browserOne = await puppeteer.launch(); const browserOne = await puppeteer.launch();
const browserTwo = await puppeteer.connect({ browserWSEndpoint: browserOne.wsEndpoint() }); const browserTwo = await puppeteer.connect({ browserWSEndpoint: browserOne.wsEndpoint() });

View File

@ -406,7 +406,7 @@ module.exports.addTests = function({testRunner, expect, headless, puppeteer, CHR
columnNumber: CHROME ? 14 : 6, // console.|log vs |console.log 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}) => { 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.goto(server.EMPTY_PAGE);
await page.evaluate(async() => { await page.evaluate(async() => {
@ -909,7 +909,7 @@ module.exports.addTests = function({testRunner, expect, headless, puppeteer, CHR
expect(await page.evaluate(() => __injected)).toBe(35); 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}) => { xit('should throw when added with content to the CSP page', async({page, server}) => {
await page.goto(server.PREFIX + '/csp.html'); await page.goto(server.PREFIX + '/csp.html');
let error = null; let error = null;
@ -1146,7 +1146,7 @@ module.exports.addTests = function({testRunner, expect, headless, puppeteer, CHR
} }
expect(error.message).toContain('Values must be strings'); 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}) => { 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.goto(server.PREFIX + '/input/select.html');
await page.evaluate(() => window.Event = null); await page.evaluate(() => window.Event = null);

View File

@ -60,7 +60,7 @@ module.exports.addTests = function({testRunner, expect, CHROME}) {
page.waitForNavigation() 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}) => { it('should work when header manipulation headers with redirect', async({page, server}) => {
server.setRedirect('/rrredirect', '/empty.html'); server.setRedirect('/rrredirect', '/empty.html');
await page.setRequestInterception(true); await page.setRequestInterception(true);
@ -72,7 +72,7 @@ module.exports.addTests = function({testRunner, expect, CHROME}) {
}); });
await page.goto(server.PREFIX + '/rrredirect'); 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}) => { it('should be able to remove headers', async({page, server}) => {
await page.setRequestInterception(true); await page.setRequestInterception(true);
page.on('request', request => { page.on('request', request => {
@ -132,7 +132,7 @@ module.exports.addTests = function({testRunner, expect, CHROME}) {
const response = await page.goto(server.EMPTY_PAGE); const response = await page.goto(server.EMPTY_PAGE);
expect(response.ok()).toBe(true); 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}) => { it('should work with redirect inside sync XHR', async({page, server}) => {
await page.goto(server.EMPTY_PAGE); await page.goto(server.EMPTY_PAGE);
server.setRedirect('/logo.png', '/pptr.png'); server.setRedirect('/logo.png', '/pptr.png');

View File

@ -188,7 +188,7 @@ const utils = module.exports = {
commit: { commit: {
sha, sha,
timestamp, timestamp,
url: `https://github.com/GoogleChrome/puppeteer/commit/${sha}`, url: `https://github.com/puppeteer/puppeteer/commit/${sha}`,
}, },
build: { build: {
url: process.env.FLAKINESS_DASHBOARD_BUILD_URL, url: process.env.FLAKINESS_DASHBOARD_BUILD_URL,
@ -208,7 +208,7 @@ const utils = module.exports = {
if (test.fullName.includes(COVERAGE_TESTSUITE_NAME)) if (test.fullName.includes(COVERAGE_TESTSUITE_NAME))
return; return;
const testpath = test.location.filePath.substring(utils.projectRoot().length); 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({ dashboard.reportTestResult({
testId: test.testId, testId: test.testId,
name: test.location.fileName + ':' + test.location.lineNumber, name: test.location.fileName + ':' + test.location.lineNumber,

View File

@ -5,7 +5,7 @@ const execSync = require('child_process').execSync;
// Compare current HEAD to upstream master SHA. // Compare current HEAD to upstream master SHA.
// If they are not equal - refuse to publish since // If they are not equal - refuse to publish since
// we're not tip-of-tree. // 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'); const current_sha = execSync(`git rev-parse HEAD`).toString('utf8');
if (upstream_sha.trim() !== current_sha.trim()) { if (upstream_sha.trim() !== current_sha.trim()) {
console.log('REFUSING TO PUBLISH: this is not tip-of-tree!'); console.log('REFUSING TO PUBLISH: this is not tip-of-tree!');

View File

@ -2,7 +2,7 @@
To bundle Puppeteer using [Browserify](http://browserify.org/): 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` 2. `npm install`
3. Run `npm run bundle` 3. Run `npm run bundle`
@ -22,7 +22,7 @@ another browser instance through its WS Endpoint:
</script> </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. for details.
### Running inside Chrome Extension ### Running inside Chrome Extension
@ -34,4 +34,4 @@ to your `manifest.json` file:
"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'" "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.

View File

@ -18,8 +18,8 @@ const Message = require('../Message');
module.exports.ensureReleasedAPILinks = function(sources, version) { module.exports.ensureReleasedAPILinks = function(sources, version) {
// Release version is everything that doesn't include "-". // Release version is everything that doesn't include "-".
const apiLinkRegex = /https:\/\/github.com\/GoogleChrome\/puppeteer\/blob\/v[^/]*\/docs\/api.md/ig; const apiLinkRegex = /https:\/\/github.com\/puppeteer\/puppeteer\/blob\/v[^/]*\/docs\/api.md/ig;
const lastReleasedAPI = `https://github.com/GoogleChrome/puppeteer/blob/v${version.split('-')[0]}/docs/api.md`; const lastReleasedAPI = `https://github.com/puppeteer/puppeteer/blob/v${version.split('-')[0]}/docs/api.md`;
const messages = []; const messages = [];
for (const source of sources) { for (const source of sources) {

View File

@ -28,36 +28,36 @@ const {expect} = new Matchers();
describe('ensureReleasedAPILinks', function() { describe('ensureReleasedAPILinks', function() {
it('should work with non-release version', function() { it('should work with non-release version', function() {
const source = new Source('doc.md', ` 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'); const messages = ensureReleasedAPILinks([source], '1.3.0-post');
expect(messages.length).toBe(1); expect(messages.length).toBe(1);
expect(messages[0].type).toBe('warning'); expect(messages[0].type).toBe('warning');
expect(messages[0].text).toContain('doc.md'); expect(messages[0].text).toContain('doc.md');
expect(source.text()).toBe(` 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() { it('should work with release version', function() {
const source = new Source('doc.md', ` 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'); const messages = ensureReleasedAPILinks([source], '1.3.0');
expect(messages.length).toBe(1); expect(messages.length).toBe(1);
expect(messages[0].type).toBe('warning'); expect(messages[0].type).toBe('warning');
expect(messages[0].text).toContain('doc.md'); expect(messages[0].text).toContain('doc.md');
expect(source.text()).toBe(` 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() { it('should keep master links intact', function() {
const source = new Source('doc.md', ` 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'); const messages = ensureReleasedAPILinks([source], '1.3.0');
expect(messages.length).toBe(0); expect(messages.length).toBe(0);
expect(source.text()).toBe(` 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)
`); `);
}); });
}); });

View File

@ -11,7 +11,7 @@
}, },
"repository": { "repository": {
"type": "git", "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", "author": "The Chromium Authors",
"license": "Apache-2.0" "license": "Apache-2.0"

View File

@ -8,7 +8,7 @@
}, },
"repository": { "repository": {
"type": "git", "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", "author": "The Chromium Authors",
"license": "Apache-2.0" "license": "Apache-2.0"