chore: drop Node.js v8 support (#5365)

* chore: update relevant Node.js versions from 8 to 10

* chore: remove node6 and node8 folders from puppeteer-firefox ci

* fix: loosen definition for proc.stdio

* fix: update typescript version used in npm run test-types
This commit is contained in:
Changhao Han 2020-03-10 21:55:32 +01:00 committed by GitHub
parent 0b1a9ceee2
commit 807fbbdc20
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
13 changed files with 39 additions and 74 deletions

View File

@ -1,7 +1,7 @@
environment: environment:
matrix: matrix:
- nodejs_version: "8.16.0" - nodejs_version: "10.18.1"
FLAKINESS_DASHBOARD_NAME: Appveyor Chromium (Win + node8) FLAKINESS_DASHBOARD_NAME: Appveyor Chromium (Win + node10)
FLAKINESS_DASHBOARD_PASSWORD: FLAKINESS_DASHBOARD_PASSWORD:
secure: g66jP+j6C+hkXLutBV9fdxB5fRJgcQQzy93SgQzXUmcCl/RjkJwnzyHvX0xfCVnv secure: g66jP+j6C+hkXLutBV9fdxB5fRJgcQQzy93SgQzXUmcCl/RjkJwnzyHvX0xfCVnv
@ -11,7 +11,7 @@ install:
- ps: $env:FLAKINESS_DASHBOARD_BUILD_URL="https://ci.appveyor.com/project/aslushnikov/puppeteer/builds/$env:APPVEYOR_BUILD_ID/job/$env:APPVEYOR_JOB_ID" - ps: $env:FLAKINESS_DASHBOARD_BUILD_URL="https://ci.appveyor.com/project/aslushnikov/puppeteer/builds/$env:APPVEYOR_BUILD_ID/job/$env:APPVEYOR_JOB_ID"
- ps: Install-Product node $env:nodejs_version - ps: Install-Product node $env:nodejs_version
- npm install - npm install
- if "%nodejs_version%" == "8.16.0" ( - if "%nodejs_version%" == "10.18.1" (
npm run lint && npm run lint &&
npm run coverage && npm run coverage &&
npm run test-doclint && npm run test-doclint &&

View File

@ -6,9 +6,6 @@ env:
task: task:
matrix: matrix:
- name: Chromium (node8 + linux)
container:
dockerfile: .ci/node8/Dockerfile.linux
- name: Chromium (node10 + linux) - name: Chromium (node10 + linux)
container: container:
dockerfile: .ci/node10/Dockerfile.linux dockerfile: .ci/node10/Dockerfile.linux
@ -25,12 +22,12 @@ task:
task: task:
osx_instance: osx_instance:
image: high-sierra-base image: high-sierra-base
name: Chromium (node8 + macOS) name: Chromium (node10 + macOS)
env: env:
HOMEBREW_NO_AUTO_UPDATE: 1 HOMEBREW_NO_AUTO_UPDATE: 1
node_install_script: node_install_script:
- brew install node@8 - brew install node@10
- brew link --force node@8 - brew link --force node@10
install_script: npm install --unsafe-perm install_script: npm install --unsafe-perm
lint_script: npm run lint lint_script: npm run lint
coverage_script: npm run coverage coverage_script: npm run coverage

View File

@ -19,24 +19,24 @@ before_install:
- 'if [ "$FIREFOX" = "true" ]; then rm -rf $FIREFOX_HOME; mozdownload -t daily -d $FIREFOX_HOME/latest.tar.bz --log-level DEBUG; fi' - 'if [ "$FIREFOX" = "true" ]; then rm -rf $FIREFOX_HOME; mozdownload -t daily -d $FIREFOX_HOME/latest.tar.bz --log-level DEBUG; fi'
- 'if [ "$FIREFOX" = "true" ]; then cd $FIREFOX_HOME; tar -xvf latest.tar.bz; cd -; ls $FIREFOX_HOME/firefox/firefox; fi' - 'if [ "$FIREFOX" = "true" ]; then cd $FIREFOX_HOME; tar -xvf latest.tar.bz; cd -; ls $FIREFOX_HOME/firefox/firefox; fi'
script: script:
- 'if [ "$NODE8" = "true" ]; then npm run lint; fi' - 'if [ "$NODE10" = "true" ]; then npm run lint; fi'
- 'if [ "$NODE8" = "true" ]; then npm run coverage; fi' - 'if [ "$NODE10" = "true" ]; then npm run coverage; fi'
- 'if [ "$FIREFOX" = "true" ]; then BINARY=$FIREFOX_HOME/firefox/firefox npm run funit; fi' - 'if [ "$FIREFOX" = "true" ]; then BINARY=$FIREFOX_HOME/firefox/firefox npm run funit; fi'
- 'if [ "$NODE8" = "true" ]; then npm run test-doclint; fi' - 'if [ "$NODE10" = "true" ]; then npm run test-doclint; fi'
- 'if [ "$NODE8" = "true" ]; then npm run test-types; fi' - 'if [ "$NODE10" = "true" ]; then npm run test-types; fi'
- 'if [ "$NODE8" = "true" ]; then npm run bundle; fi' - 'if [ "$NODE10" = "true" ]; then npm run bundle; fi'
- 'if [ "$NODE8" = "true" ]; then npm run unit-bundle; fi' - 'if [ "$NODE10" = "true" ]; then npm run unit-bundle; fi'
jobs: jobs:
include: include:
- node_js: "8.16.0" - node_js: "10.18.1"
env: env:
- NODE8=true - NODE10=true
- FLAKINESS_DASHBOARD_NAME="Travis Chromium (node8 + linux)" - FLAKINESS_DASHBOARD_NAME="Travis Chromium (node10 + linux)"
- FLAKINESS_DASHBOARD_BUILD_URL="${TRAVIS_JOB_WEB_URL}" - FLAKINESS_DASHBOARD_BUILD_URL="${TRAVIS_JOB_WEB_URL}"
- node_js: "8.16.0" - node_js: "10.18.1"
env: env:
- FIREFOX=true - FIREFOX=true
- FLAKINESS_DASHBOARD_NAME="Travis Firefox Nightly (node8 + linux)" - FLAKINESS_DASHBOARD_NAME="Travis Firefox Nightly (node10 + linux)"
- FLAKINESS_DASHBOARD_BUILD_URL="${TRAVIS_JOB_WEB_URL}" - FLAKINESS_DASHBOARD_BUILD_URL="${TRAVIS_JOB_WEB_URL}"
- FIREFOX_HOME=$TRAVIS_HOME/firefox-latest - FIREFOX_HOME=$TRAVIS_HOME/firefox-latest
before_deploy: "npm run apply-next-version" before_deploy: "npm run apply-next-version"
@ -47,6 +47,6 @@ deploy:
secure: Ng8o2KwJf90XCBNgUKK3jRZnwtdBSJatjYNmZBERJEqBWFTadFAp1NdhxZaqjnuG8aFYaH5bRJdL+EQBYUksVCbrv/gcaXeEFkwsfPfVX1QXGqu7NnZmtme2hbxppLQ7dEJ8hz2Z9K4vehqVOxmLabxvoupOumxEQMLCphVHh2FOmsm/S5JrRZqZ4V9k76eIc0/PiyfXNMdx5WTZjHbIRDIHRy9nqOXjFp2Rx3PMa3uU2fS8mTshYEYs151TA6e6VdHjqmBwEQC/M5tXbDlLCMNUr4JBtLTcL4OipNYjzkwD1N2xYlbSRqtvqqF4ifdvFhoI65a31GinlMC7Z/SH1Zy+d+/z3Mo7D63eYcsJVnsg9OYxTFy2piUntr0JqTBHtQoe/CvGxJmkcVt+H6YSkcBibSG9s9tG3qpAD5wBCFqqOYnfClX+YZziEd+Hngd9inxAf87qdvgVIZ5tPD2dygtE+te2/qoEHtvccv/HuS8MxNj5iKwlP7JaBPM6uAkazYqZP2R99I2ph9gNOEVuQLtk+3+OIdb8HWrEKUrJBgKhdKY1dvcKYElI+D8NRlyzrr6BnZfudACuAt2EtfKpfJ3mL+iRMFdBJ3ntLt93xBrB+j4z3pD0iWZcg1g3I742PFzQEHzyd/DDTP1yRTUoJeQWwoQRJyNO1m6Qk4wx77c= secure: Ng8o2KwJf90XCBNgUKK3jRZnwtdBSJatjYNmZBERJEqBWFTadFAp1NdhxZaqjnuG8aFYaH5bRJdL+EQBYUksVCbrv/gcaXeEFkwsfPfVX1QXGqu7NnZmtme2hbxppLQ7dEJ8hz2Z9K4vehqVOxmLabxvoupOumxEQMLCphVHh2FOmsm/S5JrRZqZ4V9k76eIc0/PiyfXNMdx5WTZjHbIRDIHRy9nqOXjFp2Rx3PMa3uU2fS8mTshYEYs151TA6e6VdHjqmBwEQC/M5tXbDlLCMNUr4JBtLTcL4OipNYjzkwD1N2xYlbSRqtvqqF4ifdvFhoI65a31GinlMC7Z/SH1Zy+d+/z3Mo7D63eYcsJVnsg9OYxTFy2piUntr0JqTBHtQoe/CvGxJmkcVt+H6YSkcBibSG9s9tG3qpAD5wBCFqqOYnfClX+YZziEd+Hngd9inxAf87qdvgVIZ5tPD2dygtE+te2/qoEHtvccv/HuS8MxNj5iKwlP7JaBPM6uAkazYqZP2R99I2ph9gNOEVuQLtk+3+OIdb8HWrEKUrJBgKhdKY1dvcKYElI+D8NRlyzrr6BnZfudACuAt2EtfKpfJ3mL+iRMFdBJ3ntLt93xBrB+j4z3pD0iWZcg1g3I742PFzQEHzyd/DDTP1yRTUoJeQWwoQRJyNO1m6Qk4wx77c=
on: on:
branch: master branch: master
condition: "$NODE8 = true" condition: "$NODE10 = true"
skip_cleanup: true skip_cleanup: true
tag: next tag: next

View File

@ -59,8 +59,8 @@ See [puppeteer vs puppeteer-core](https://github.com/puppeteer/puppeteer/blob/ma
Puppeteer follows the latest [maintenance LTS](https://github.com/nodejs/Release#release-schedule) version of Node. Puppeteer follows the latest [maintenance LTS](https://github.com/nodejs/Release#release-schedule) version of Node.
Note: Prior to v1.18.1, Puppeteer required at least Node v6.4.0. All subsequent versions rely on Note: Prior to v1.18.1, Puppeteer required at least Node v6.4.0. Versions from v1.18.1 to v2.1.0 rely on
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+. 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 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/v2.1.1/docs/api.md#). of `Browser`, open pages, and then manipulate them with [Puppeteer's API](https://github.com/puppeteer/puppeteer/blob/v2.1.1/docs/api.md#).

View File

@ -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/puppeteer/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/node10/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
@ -398,9 +398,9 @@ To use `puppeteer`, simply list the module as a dependency in your `package.json
### Running Puppeteer on Google Cloud Functions ### Running Puppeteer on Google Cloud Functions
The Node.js 8 runtime of [Google Cloud Functions](https://cloud.google.com/functions/docs/) comes with all system packages needed to run Headless Chrome. The Node.js 10 runtime of [Google Cloud Functions](https://cloud.google.com/functions/docs/) comes with all system packages needed to run Headless Chrome.
To use `puppeteer`, simply list the module as a dependency in your `package.json` and deploy your function to Google Cloud Functions using the `nodejs8` runtime. To use `puppeteer`, simply list the module as a dependency in your `package.json` and deploy your function to Google Cloud Functions using the `nodejs10` runtime.
### Running Puppeteer on Heroku ### Running Puppeteer on Heroku

View File

@ -1,4 +1,4 @@
FROM node:8.11.3 FROM node:10.18.1-stretch
RUN apt-get update && \ RUN apt-get update && \
apt-get -y install xvfb gconf-service libasound2 libatk1.0-0 libc6 libcairo2 libcups2 \ apt-get -y install xvfb gconf-service libasound2 libatk1.0-0 libc6 libcairo2 libcups2 \

View File

@ -1,6 +1,6 @@
FROM microsoft/windowsservercore:latest FROM microsoft/windowsservercore:latest
ENV NODE_VERSION 8.11.3 ENV NODE_VERSION 10.18.1
RUN setx /m PATH "%PATH%;C:\nodejs" RUN setx /m PATH "%PATH%;C:\nodejs"

View File

@ -1,17 +0,0 @@
FROM node:6.12.3
RUN apt-get update && \
apt-get -y install xvfb gconf-service libasound2 libatk1.0-0 libc6 libcairo2 libcups2 \
libdbus-1-3 libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 \
libgtk-3-0 libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 \
libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 \
libxtst6 ca-certificates fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils wget && \
rm -rf /var/lib/apt/lists/*
# Add user so we don't need --no-sandbox.
RUN groupadd -r pptruser && useradd -r -g pptruser -G audio,video pptruser \
&& mkdir -p /home/pptruser/Downloads \
&& chown -R pptruser:pptruser /home/pptruser
# Run everything after as non-privileged user.
USER pptruser

View File

@ -1,17 +0,0 @@
FROM node:8.11.3-stretch
RUN apt-get update && \
apt-get -y install xvfb gconf-service libasound2 libatk1.0-0 libc6 libcairo2 libcups2 \
libdbus-1-3 libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 \
libgtk-3-0 libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 \
libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 \
libxtst6 ca-certificates fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils wget && \
rm -rf /var/lib/apt/lists/*
# Add user so we don't need --no-sandbox.
RUN groupadd -r pptruser && useradd -r -g pptruser -G audio,video pptruser \
&& mkdir -p /home/pptruser/Downloads \
&& chown -R pptruser:pptruser /home/pptruser
# Run everything after as non-privileged user.
USER pptruser

View File

@ -2,30 +2,30 @@ env:
DISPLAY: :99.0 DISPLAY: :99.0
task: task:
name: node8 (linux) name: node10 (linux)
container: container:
dockerfile: .ci/node8/Dockerfile.linux dockerfile: .ci/node10/Dockerfile.linux
xvfb_start_background_script: Xvfb :99 -ac -screen 0 1024x768x24 xvfb_start_background_script: Xvfb :99 -ac -screen 0 1024x768x24
install_script: npm install install_script: npm install
test_script: npm run fjunit test_script: npm run fjunit
task: task:
name: node8 (macOS) name: node10 (macOS)
osx_instance: osx_instance:
image: high-sierra-base image: high-sierra-base
env: env:
HOMEBREW_NO_AUTO_UPDATE: 1 HOMEBREW_NO_AUTO_UPDATE: 1
node_install_script: node_install_script:
- brew install node@8 - brew install node@10
- brew link --force node@8 - brew link --force node@10
install_script: npm install install_script: npm install
test_script: npm run fjunit test_script: npm run fjunit
# task: # task:
# allow_failures: true # allow_failures: true
# windows_container: # windows_container:
# dockerfile: .ci/node8/Dockerfile.windows # dockerfile: .ci/node10/Dockerfile.windows
# os_version: 2016 # os_version: 2016
# name: node8 (windows) # name: node10 (windows)
# install_script: npm install --unsafe-perm # install_script: npm install --unsafe-perm
# test_script: npm run fjunit # test_script: npm run fjunit

View File

@ -6,7 +6,7 @@
"repository": "github:puppeteer/puppeteer", "repository": "github:puppeteer/puppeteer",
"homepage": "https://github.com/puppeteer/puppeteer/tree/master/experimental/puppeteer-firefox", "homepage": "https://github.com/puppeteer/puppeteer/tree/master/experimental/puppeteer-firefox",
"engines": { "engines": {
"node": ">=8.9.4" "node": ">=10.18.1"
}, },
"puppeteer": { "puppeteer": {
"firefox_revision": "v0.0.1" "firefox_revision": "v0.0.1"

View File

@ -168,7 +168,9 @@ class BrowserRunner {
const transport = await WebSocketTransport.create(browserWSEndpoint); const transport = await WebSocketTransport.create(browserWSEndpoint);
this.connection = new Connection(browserWSEndpoint, transport, slowMo); this.connection = new Connection(browserWSEndpoint, transport, slowMo);
} else { } else {
const transport = new PipeTransport(/** @type {!NodeJS.WritableStream} */(this.proc.stdio[3]), /** @type {!NodeJS.ReadableStream} */ (this.proc.stdio[4])); // stdio was assigned during start(), and the 'pipe' option there adds the 4th and 5th items to stdio array
const { 3: pipeWrite, 4: pipeRead } = /** @type {!Array<any>} */ (this.proc.stdio);
const transport = new PipeTransport(/** @type {!NodeJS.WritableStream} */ pipeWrite, /** @type {!NodeJS.ReadableStream} */ pipeRead);
this.connection = new Connection('', transport, slowMo); this.connection = new Connection('', transport, slowMo);
} }
return this.connection; return this.connection;

View File

@ -5,7 +5,7 @@
"main": "index.js", "main": "index.js",
"repository": "github:puppeteer/puppeteer", "repository": "github:puppeteer/puppeteer",
"engines": { "engines": {
"node": ">=8.16.0" "node": ">=10.18.1"
}, },
"puppeteer": { "puppeteer": {
"chromium_revision": "722234" "chromium_revision": "722234"
@ -23,7 +23,7 @@
"tsc": "tsc -p .", "tsc": "tsc -p .",
"apply-next-version": "node utils/apply_next_version.js", "apply-next-version": "node utils/apply_next_version.js",
"bundle": "npx browserify -r ./index.js:puppeteer -o utils/browser/puppeteer-web.js", "bundle": "npx browserify -r ./index.js:puppeteer -o utils/browser/puppeteer-web.js",
"test-types": "node utils/doclint/generate_types && npx -p typescript@2.1 tsc -p utils/doclint/generate_types/test/", "test-types": "node utils/doclint/generate_types && npx -p typescript@3.2 tsc -p utils/doclint/generate_types/test/",
"unit-bundle": "node utils/browser/test.js" "unit-bundle": "node utils/browser/test.js"
}, },
"author": "The Chromium Authors", "author": "The Chromium Authors",
@ -44,7 +44,7 @@
"@types/debug": "0.0.31", "@types/debug": "0.0.31",
"@types/extract-zip": "^1.6.2", "@types/extract-zip": "^1.6.2",
"@types/mime": "^2.0.0", "@types/mime": "^2.0.0",
"@types/node": "^8.10.34", "@types/node": "^10.17.14",
"@types/rimraf": "^2.0.2", "@types/rimraf": "^2.0.2",
"@types/ws": "^6.0.1", "@types/ws": "^6.0.1",
"commonmark": "^0.28.1", "commonmark": "^0.28.1",