Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: process documentation during publishing #8433

Merged
merged 1 commit into from May 30, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
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