Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
fix: process documentation during publishing (#8433)
  • Loading branch information
jrandolf committed May 30, 2022
1 parent 54efc2c commit d111d19
Show file tree
Hide file tree
Showing 18 changed files with 107 additions and 168 deletions.
1 change: 0 additions & 1 deletion .github/release-please.yml
@@ -1,4 +1,3 @@
releaseType: node
handleGHRelease: true
primaryBranch: main
manifest: true
60 changes: 29 additions & 31 deletions .github/workflows/publish.yml
Expand Up @@ -3,10 +3,36 @@ name: Publish
on:
push:
tags:
- '*'
- v*

jobs:
pre-publish:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Checkout
uses: actions/checkout@v3
with:
ref: main
- name: Install dependencies
run: npm install
- name: Build
run: |
node utils/generate_version_file.js
IS_PRE_RELEASE=1 npm run doc
- name: Configure git
run: |
git config --global user.name 'actions-bot'
git config --global user.email '<github-actions-bot@google.com>'
- name: Commit and push
run: |
git add -A
git commit -m "chore: freeze current version in code"
git push
publish:
needs: pre-publish
runs-on: ubuntu-latest
permissions:
contents: read
Expand All @@ -17,6 +43,8 @@ jobs:
run: npm install
- name: Build puppeteer
run: npm run build
- name: Generate release documentation
run: IS_RELEASE=1 npm run doc
- name: Publish puppeteer
env:
NPM_TOKEN: ${{secrets.NPM_TOKEN_PUPPETEER}}
Expand All @@ -36,33 +64,3 @@ jobs:
npm config set registry 'https://wombat-dressing-room.appspot.com/'
npm config set '//wombat-dressing-room.appspot.com/:_authToken' '${NPM_TOKEN}'
npm publish
post-publish:
needs: publish
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Checkout
uses: actions/checkout@v3
with:
ref: main
- name: Append `-post` to version
id: post-version
run: |
npm version --no-git-tag-version --no-commit-hooks "$(jq -r .version ./package.json)-post"
echo ::set-output name=VERSION::$(jq -r .version ./package.json)
- name: Build
run: |
npm install
npm run build
npm run doc
- name: Configure git
run: |
git config --global user.name 'actions-bot'
git config --global user.email '<github-actions-bot@google.com>'
- name: Commit and push
run: |
git add -A
git commit -m "chore: bump version to ${{ steps.post-version.outputs.VERSION }}"
git push
2 changes: 1 addition & 1 deletion .husky/pre-push
@@ -1,4 +1,4 @@
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"

npm run tsc && npm run eslint && npm run doc && npm run ensure-pinned-deps
npm run tsc && npm run eslint && npm run doc && npm run prettier && npm run ensure-pinned-deps
1 change: 1 addition & 0 deletions .prettierignore
Expand Up @@ -14,3 +14,4 @@ CHANGELOG.md
test/assets/
/.local-chromium/
/.local-firefox/
test-ts-types
27 changes: 0 additions & 27 deletions .versionrc.js

This file was deleted.

15 changes: 1 addition & 14 deletions CONTRIBUTING.md
Expand Up @@ -312,17 +312,4 @@ By default, it will use the Chromium revision in `src/revisions.ts` from the `ma

## Releasing to npm

Releasing to npm consists of the following phases:

1. Source Code: mark a release.
1. Run `npm run release`. (This automatically bumps the version number in `package.json`, populates the changelog, updates the docs, and creates a Git commit for the next step.)
1. Send a PR for the commit created in the previous step.
1. 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/puppeteer/puppeteer/pull/2446)
1. Merge the PR.
1. Once merged, publish the release notes from `CHANGELOG.md` 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`.
1. As soon as the Git tag is created by completing the previous step, our CI automatically `npm publish`es the new releases for both the `puppeteer` and `puppeteer-core` packages.
1. Source Code: mark post-release.
1. Bump `package.json` version to the `-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/pull/6808))
- **NOTE**: no other commits should be landed in-between release commit and bump commit.
We use [release-please](https://github.com/googleapis/release-please) to automate releases. When a release should be done, check for the release PR in our [pull requests](https://github.com/puppeteer/puppeteer/pulls) and merge it.
22 changes: 11 additions & 11 deletions README.md
Expand Up @@ -8,7 +8,7 @@

<img src="https://user-images.githubusercontent.com/10379601/29446482-04f7036a-841f-11e7-9872-91d1fc2ea683.png" height="200" align="right">

###### [API](https://github.com/puppeteer/puppeteer/blob/v14.1.1/docs/api.md) | [FAQ](#faq) | [Contributing](https://github.com/puppeteer/puppeteer/blob/main/CONTRIBUTING.md) | [Troubleshooting](https://github.com/puppeteer/puppeteer/blob/main/docs/troubleshooting.md)
###### [API](https://github.com/puppeteer/puppeteer/blob/main/docs/api.md) | [FAQ](#faq) | [Contributing](https://github.com/puppeteer/puppeteer/blob/main/CONTRIBUTING.md) | [Troubleshooting](https://github.com/puppeteer/puppeteer/blob/main/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.
Expand Down Expand Up @@ -39,7 +39,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, download into another path, or download a different browser, see [Environment variables](https://github.com/puppeteer/puppeteer/blob/v14.1.1/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, download into another path, or download a different browser, see [Environment variables](https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#environment-variables).

### puppeteer-core

Expand All @@ -63,7 +63,7 @@ Note: Prior to v1.18.1, Puppeteer required at least Node v6.4.0. Versions from v
Node 8.9.0+. Starting from v3.0.0 Puppeteer starts to rely on Node 10.18.1+. 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/puppeteer/puppeteer/blob/v14.1.1/docs/api.md#).
of `Browser`, open pages, and then manipulate them with [Puppeteer's API](https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#).

**Example** - navigating to https://example.com and saving a screenshot as _example.png_:

Expand All @@ -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/puppeteer/puppeteer/blob/v14.1.1/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/main/docs/api.md#pagesetviewportviewport).

**Example** - create a PDF.

Expand All @@ -115,7 +115,7 @@ Execute script on the command line
node hn.js
```

See [`Page.pdf()`](https://github.com/puppeteer/puppeteer/blob/v14.1.1/docs/api.md#pagepdfoptions) for more information about creating pdfs.
See [`Page.pdf()`](https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#pagepdfoptions) for more information about creating pdfs.

**Example** - evaluate script in the context of the page

Expand Down Expand Up @@ -150,7 +150,7 @@ Execute script on the command line
node get-dimensions.js
```

See [`Page.evaluate()`](https://github.com/puppeteer/puppeteer/blob/v14.1.1/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/main/docs/api.md#pageevaluatepagefunction-args) for more information on `evaluate` and related methods like `evaluateOnNewDocument` and `exposeFunction`.

<!-- [END getstarted] -->

Expand All @@ -160,7 +160,7 @@ See [`Page.evaluate()`](https://github.com/puppeteer/puppeteer/blob/v14.1.1/docs

**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/puppeteer/puppeteer/blob/v14.1.1/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/main/docs/api.md#puppeteerlaunchoptions) when launching a browser:

```js
const browser = await puppeteer.launch({ headless: false }); // default is true
Expand All @@ -176,7 +176,7 @@ pass in the executable's path when creating a `Browser` instance:
const browser = await puppeteer.launch({ executablePath: '/path/to/Chrome' });
```

You can also use Puppeteer with Firefox Nightly (experimental support). See [`Puppeteer.launch()`](https://github.com/puppeteer/puppeteer/blob/v14.1.1/docs/api.md#puppeteerlaunchoptions) for more information.
You can also use Puppeteer with Firefox Nightly (experimental support). See [`Puppeteer.launch()`](https://github.com/puppeteer/puppeteer/blob/main/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/+/refs/heads/main/docs/chromium_browser_vs_google_chrome.md) describes some differences for Linux users.

Expand All @@ -188,7 +188,7 @@ Puppeteer creates its own browser user profile which it **cleans up on every run

## Resources

- [API Documentation](https://github.com/puppeteer/puppeteer/blob/v14.1.1/docs/api.md)
- [API Documentation](https://github.com/puppeteer/puppeteer/blob/main/docs/api.md)
- [Examples](https://github.com/puppeteer/puppeteer/tree/main/examples/)
- [Community list of Puppeteer resources](https://github.com/transitive-bullshit/awesome-puppeteer)

Expand Down Expand Up @@ -330,7 +330,7 @@ See [Contributing](https://github.com/puppeteer/puppeteer/blob/main/CONTRIBUTING

Official Firefox support is currently experimental. The ongoing collaboration with Mozilla aims to support common end-to-end testing use cases, for which developers expect cross-browser coverage. The Puppeteer team needs input from users to stabilize Firefox support and to bring missing APIs to our attention.

From Puppeteer v2.1.0 onwards you can specify [`puppeteer.launch({product: 'firefox'})`](https://github.com/puppeteer/puppeteer/blob/v14.1.1/docs/api.md#puppeteerlaunchoptions) to run your Puppeteer scripts in Firefox Nightly, without any additional custom patches. While [an older experiment](https://www.npmjs.com/package/puppeteer-firefox) required a patched version of Firefox, [the current approach](https://wiki.mozilla.org/Remote) works with “stock” Firefox.
From Puppeteer v2.1.0 onwards you can specify [`puppeteer.launch({product: 'firefox'})`](https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#puppeteerlaunchoptions) to run your Puppeteer scripts in Firefox Nightly, without any additional custom patches. While [an older experiment](https://www.npmjs.com/package/puppeteer-firefox) required a patched version of Firefox, [the current approach](https://wiki.mozilla.org/Remote) works with “stock” Firefox.

We will continue to collaborate with other browser vendors to bring Puppeteer support to browsers such as Safari.
This effort includes exploration of a standard for executing cross-browser commands (instead of relying on the non-standard DevTools Protocol used by Chrome).
Expand Down Expand Up @@ -433,7 +433,7 @@ await page.evaluate(() => {

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/puppeteer/puppeteer/blob/v14.1.1/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/main/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?
Expand Down
2 changes: 1 addition & 1 deletion package.json
Expand Up @@ -44,7 +44,7 @@
"commitlint": "commitlint --from=HEAD~1",
"prettier": "prettier --check .",
"prettier-fix": "prettier --write .",
"lint": "npm run eslint && npm run build && npm run doc && npm run prettier",
"lint": "npm run build && npm run eslint && npm run doc && npm run prettier",
"doc": "node utils/doclint/cli.js",
"generate-api-docs-for-testing": "commonmark docs/api.md > docs/api.html",
"clean-lib": "rimraf lib",
Expand Down
1 change: 0 additions & 1 deletion release-please-config.json
@@ -1,5 +1,4 @@
{
"last-release-sha": "d4321e53c909c7ecf90f5f27d3a136cba176f40b",
"packages": {
".": {
"releaseType": "node",
Expand Down
3 changes: 0 additions & 3 deletions test-ts-types/js-cjs-import-esm-output/package.json
Expand Up @@ -6,9 +6,6 @@
"scripts": {
"compile": "../../node_modules/.bin/tsc"
},
"devDependencies": {
"typescript": "4.2.4"
},
"dependencies": {
"puppeteer": "file:../../puppeteer.tgz"
}
Expand Down
3 changes: 0 additions & 3 deletions test-ts-types/js-esm-import-cjs-output/package.json
Expand Up @@ -6,9 +6,6 @@
"scripts": {
"compile": "../../node_modules/.bin/tsc"
},
"devDependencies": {
"typescript": "4.2.4"
},
"dependencies": {
"puppeteer": "file:../../puppeteer.tgz"
}
Expand Down
3 changes: 0 additions & 3 deletions test-ts-types/js-esm-import-esm-output/package.json
Expand Up @@ -6,9 +6,6 @@
"scripts": {
"compile": "../../node_modules/.bin/tsc"
},
"devDependencies": {
"typescript": "4.2.4"
},
"dependencies": {
"puppeteer": "file:../../puppeteer.tgz"
}
Expand Down
3 changes: 0 additions & 3 deletions test-ts-types/ts-cjs-import-cjs-output/package.json
Expand Up @@ -6,9 +6,6 @@
"scripts": {
"compile": "../../node_modules/.bin/tsc"
},
"devDependencies": {
"typescript": "4.2.4"
},
"dependencies": {
"puppeteer": "file:../../puppeteer.tgz"
}
Expand Down
3 changes: 0 additions & 3 deletions test-ts-types/ts-esm-import-cjs-output/package.json
Expand Up @@ -6,9 +6,6 @@
"scripts": {
"compile": "../../node_modules/.bin/tsc"
},
"devDependencies": {
"typescript": "4.2.4"
},
"dependencies": {
"puppeteer": "file:../../puppeteer.tgz"
}
Expand Down
3 changes: 0 additions & 3 deletions test-ts-types/ts-esm-import-esm-output/package.json
Expand Up @@ -6,9 +6,6 @@
"scripts": {
"compile": "../../node_modules/.bin/tsc"
},
"devDependencies": {
"typescript": "4.2.4"
},
"dependencies": {
"puppeteer": "file:../../puppeteer.tgz"
}
Expand Down
13 changes: 10 additions & 3 deletions utils/doclint/cli.js
Expand Up @@ -29,6 +29,7 @@ const YELLOW_COLOR = '\x1b[33m';
const RESET_COLOR = '\x1b[0m';

const IS_RELEASE = Boolean(process.env.IS_RELEASE);
const IS_PRE_RELEASE = Boolean(process.env.IS_PRE_RELEASE);

run();

Expand All @@ -39,7 +40,7 @@ async function run() {
const messages = [];
let changedFiles = false;

if (IS_RELEASE) {
if (IS_RELEASE || IS_PRE_RELEASE) {
const versions = await Source.readFile(
path.join(PROJECT_DIR, 'versions.js')
);
Expand All @@ -61,9 +62,15 @@ async function run() {
const mdSources = [readme, api, troubleshooting, contributing];

const preprocessor = require('./preprocessor/index.js');
messages.push(...(await preprocessor.runCommands(mdSources, VERSION)));
messages.push(
...(await preprocessor.ensureReleasedAPILinks([readme], VERSION))
...(await preprocessor.runCommands(mdSources, VERSION, IS_RELEASE))
);
messages.push(
...(await preprocessor.ensureReleasedAPILinks(
[readme],
VERSION,
IS_RELEASE
))
);

const browser = await puppeteer.launch();
Expand Down

0 comments on commit d111d19

Please sign in to comment.