From 6b73dbd305ad845b4ae80159b8a87c56ea0ff2aa Mon Sep 17 00:00:00 2001 From: Joel Date: Fri, 17 Jan 2020 20:25:31 +0000 Subject: [PATCH] chore: npm packages --- .npmignore | 3 -- package.json | 5 +-- packages/playwright-chromium/README.md | 2 ++ packages/playwright-chromium/index.js | 1 + packages/playwright-chromium/install.js | 39 +++++++++++++++++++++++ packages/playwright-chromium/package.json | 17 ++++++++++ packages/playwright-firefox/README.md | 2 ++ packages/playwright-firefox/index.js | 1 + packages/playwright-firefox/install.js | 39 +++++++++++++++++++++++ packages/playwright-firefox/package.json | 17 ++++++++++ packages/playwright-webkit/README.md | 2 ++ packages/playwright-webkit/index.js | 1 + packages/playwright-webkit/install.js | 39 +++++++++++++++++++++++ packages/playwright-webkit/package.json | 17 ++++++++++ packages/playwright/README.md | 2 ++ packages/playwright/install.js | 2 ++ packages/playwright/package.json | 14 ++++++++ utils/sync_package_versions.js | 36 +++++++++++++++++++++ 18 files changed, 234 insertions(+), 5 deletions(-) create mode 100644 packages/playwright-chromium/README.md create mode 100644 packages/playwright-chromium/index.js create mode 100644 packages/playwright-chromium/install.js create mode 100644 packages/playwright-chromium/package.json create mode 100644 packages/playwright-firefox/README.md create mode 100644 packages/playwright-firefox/index.js create mode 100644 packages/playwright-firefox/install.js create mode 100644 packages/playwright-firefox/package.json create mode 100644 packages/playwright-webkit/README.md create mode 100644 packages/playwright-webkit/index.js create mode 100644 packages/playwright-webkit/install.js create mode 100644 packages/playwright-webkit/package.json create mode 100644 packages/playwright/README.md create mode 100644 packages/playwright/install.js create mode 100644 packages/playwright/package.json create mode 100644 utils/sync_package_versions.js diff --git a/.npmignore b/.npmignore index 6b7ce811a4..7ce25572f8 100644 --- a/.npmignore +++ b/.npmignore @@ -10,9 +10,6 @@ lib/injected/ !lib/**/*.d.ts !index.d.ts -# Install -!install.js - # root for "playwright" package !index.js diff --git a/package.json b/package.json index 8a9b33b270..2cec4a3c8d 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "playwright", + "name": "playwright-core", "version": "0.9.17-post", "description": "A high-level API to automate web browsers", "repository": "github:Microsoft/playwright", @@ -28,7 +28,8 @@ "tsc": "tsc -p .", "build": "node utils/runWebpack.js --mode='development' && tsc -p .", "watch": "node utils/runWebpack.js --mode='development' --watch --silent | tsc -w -p .", - "apply-next-version": "node utils/apply_next_version.js" + "apply-next-version": "node utils/apply_next_version.js", + "sync-versions": "node utils/sync_package_versions.js" }, "author": { "name": "Microsoft Corporation" diff --git a/packages/playwright-chromium/README.md b/packages/playwright-chromium/README.md new file mode 100644 index 0000000000..8c10a95d5f --- /dev/null +++ b/packages/playwright-chromium/README.md @@ -0,0 +1,2 @@ +# playwright-chromium +This packagage contains the [Chromium](https://www.chromium.org/) flavor of [Playwright](http://github.com/microsoft/playwright). diff --git a/packages/playwright-chromium/index.js b/packages/playwright-chromium/index.js new file mode 100644 index 0000000000..3d5458a3ce --- /dev/null +++ b/packages/playwright-chromium/index.js @@ -0,0 +1 @@ +module.exports = require('playwright-core').chromium; diff --git a/packages/playwright-chromium/install.js b/packages/playwright-chromium/install.js new file mode 100644 index 0000000000..b6c9bac31b --- /dev/null +++ b/packages/playwright-chromium/install.js @@ -0,0 +1,39 @@ +downloadBrowser('chromium', require('./index').chromium); + +async function downloadBrowser(browser, playwright) { + let progressBar = null; + let lastDownloadedBytes = 0; + function onProgress(downloadedBytes, totalBytes) { + if (!progressBar) { + const ProgressBar = require('progress'); + progressBar = new ProgressBar(`Downloading ${browser} ${playwright._revision} - ${toMegabytes(totalBytes)} [:bar] :percent :etas `, { + complete: '=', + incomplete: ' ', + width: 20, + total: totalBytes, + }); + } + const delta = downloadedBytes - lastDownloadedBytes; + lastDownloadedBytes = downloadedBytes; + progressBar.tick(delta); + } + + const fetcher = playwright._createBrowserFetcher(); + const revisionInfo = fetcher.revisionInfo(); + await fetcher.download(revisionInfo.revision, onProgress); + logPolitely(`${browser} downloaded to ${revisionInfo.folderPath}`); +} + +function toMegabytes(bytes) { + const mb = bytes / 1024 / 1024; + return `${Math.round(mb * 10) / 10} Mb`; +} + +function logPolitely(toBeLogged) { + const logLevel = process.env.npm_config_loglevel; + const logLevelDisplay = ['silent', 'error', 'warn'].indexOf(logLevel) > -1; + + if (!logLevelDisplay) + console.log(toBeLogged); +} + diff --git a/packages/playwright-chromium/package.json b/packages/playwright-chromium/package.json new file mode 100644 index 0000000000..ac8b2111c5 --- /dev/null +++ b/packages/playwright-chromium/package.json @@ -0,0 +1,17 @@ +{ + "name": "playwright-chromium", + "version": "0.9.17-post", + "description": "A high-level API to automate web browsers", + "repository": "github:Microsoft/playwright", + "main": "index.js", + "scripts": { + "install": "node install.js" + }, + "author": { + "name": "Microsoft Corporation" + }, + "license": "Apache-2.0", + "dependencies": { + "playwright-core": "=0.9.17-post" + } +} diff --git a/packages/playwright-firefox/README.md b/packages/playwright-firefox/README.md new file mode 100644 index 0000000000..975e53f5db --- /dev/null +++ b/packages/playwright-firefox/README.md @@ -0,0 +1,2 @@ +# playwright-firefox +This packagage contains the [Firefox](https://www.mozilla.org/firefox/) flavor of [Playwright](http://github.com/microsoft/playwright). diff --git a/packages/playwright-firefox/index.js b/packages/playwright-firefox/index.js new file mode 100644 index 0000000000..11d23826de --- /dev/null +++ b/packages/playwright-firefox/index.js @@ -0,0 +1 @@ +module.exports = require('playwright-core').firefox; diff --git a/packages/playwright-firefox/install.js b/packages/playwright-firefox/install.js new file mode 100644 index 0000000000..0a2b6b13d6 --- /dev/null +++ b/packages/playwright-firefox/install.js @@ -0,0 +1,39 @@ +downloadBrowser('firefox', require('./index').firefox); + +async function downloadBrowser(browser, playwright) { + let progressBar = null; + let lastDownloadedBytes = 0; + function onProgress(downloadedBytes, totalBytes) { + if (!progressBar) { + const ProgressBar = require('progress'); + progressBar = new ProgressBar(`Downloading ${browser} ${playwright._revision} - ${toMegabytes(totalBytes)} [:bar] :percent :etas `, { + complete: '=', + incomplete: ' ', + width: 20, + total: totalBytes, + }); + } + const delta = downloadedBytes - lastDownloadedBytes; + lastDownloadedBytes = downloadedBytes; + progressBar.tick(delta); + } + + const fetcher = playwright._createBrowserFetcher(); + const revisionInfo = fetcher.revisionInfo(); + await fetcher.download(revisionInfo.revision, onProgress); + logPolitely(`${browser} downloaded to ${revisionInfo.folderPath}`); +} + +function toMegabytes(bytes) { + const mb = bytes / 1024 / 1024; + return `${Math.round(mb * 10) / 10} Mb`; +} + +function logPolitely(toBeLogged) { + const logLevel = process.env.npm_config_loglevel; + const logLevelDisplay = ['silent', 'error', 'warn'].indexOf(logLevel) > -1; + + if (!logLevelDisplay) + console.log(toBeLogged); +} + diff --git a/packages/playwright-firefox/package.json b/packages/playwright-firefox/package.json new file mode 100644 index 0000000000..88c9969bc1 --- /dev/null +++ b/packages/playwright-firefox/package.json @@ -0,0 +1,17 @@ +{ + "name": "playwright-firefox", + "version": "0.9.17-post", + "description": "A high-level API to automate web browsers", + "repository": "github:Microsoft/playwright", + "main": "index.js", + "scripts": { + "install": "node install.js" + }, + "author": { + "name": "Microsoft Corporation" + }, + "license": "Apache-2.0", + "dependencies": { + "playwright-core": "=0.9.17-post" + } +} diff --git a/packages/playwright-webkit/README.md b/packages/playwright-webkit/README.md new file mode 100644 index 0000000000..e4a5808f9b --- /dev/null +++ b/packages/playwright-webkit/README.md @@ -0,0 +1,2 @@ +# playwright-webkit +This packagage contains the [WebKit](https://www.webkit.org/) flavor of [Playwright](http://github.com/microsoft/playwright). diff --git a/packages/playwright-webkit/index.js b/packages/playwright-webkit/index.js new file mode 100644 index 0000000000..fc57e941a4 --- /dev/null +++ b/packages/playwright-webkit/index.js @@ -0,0 +1 @@ +module.exports = require('playwright-core').webkit; diff --git a/packages/playwright-webkit/install.js b/packages/playwright-webkit/install.js new file mode 100644 index 0000000000..f6a3fbba3c --- /dev/null +++ b/packages/playwright-webkit/install.js @@ -0,0 +1,39 @@ +downloadBrowser('webkit', require('./index').webkit); + +async function downloadBrowser(browser, playwright) { + let progressBar = null; + let lastDownloadedBytes = 0; + function onProgress(downloadedBytes, totalBytes) { + if (!progressBar) { + const ProgressBar = require('progress'); + progressBar = new ProgressBar(`Downloading ${browser} ${playwright._revision} - ${toMegabytes(totalBytes)} [:bar] :percent :etas `, { + complete: '=', + incomplete: ' ', + width: 20, + total: totalBytes, + }); + } + const delta = downloadedBytes - lastDownloadedBytes; + lastDownloadedBytes = downloadedBytes; + progressBar.tick(delta); + } + + const fetcher = playwright._createBrowserFetcher(); + const revisionInfo = fetcher.revisionInfo(); + await fetcher.download(revisionInfo.revision, onProgress); + logPolitely(`${browser} downloaded to ${revisionInfo.folderPath}`); +} + +function toMegabytes(bytes) { + const mb = bytes / 1024 / 1024; + return `${Math.round(mb * 10) / 10} Mb`; +} + +function logPolitely(toBeLogged) { + const logLevel = process.env.npm_config_loglevel; + const logLevelDisplay = ['silent', 'error', 'warn'].indexOf(logLevel) > -1; + + if (!logLevelDisplay) + console.log(toBeLogged); +} + diff --git a/packages/playwright-webkit/package.json b/packages/playwright-webkit/package.json new file mode 100644 index 0000000000..2062efee92 --- /dev/null +++ b/packages/playwright-webkit/package.json @@ -0,0 +1,17 @@ +{ + "name": "playwright-webkit", + "version": "0.9.17-post", + "description": "A high-level API to automate web browsers", + "repository": "github:Microsoft/playwright", + "main": "index.js", + "scripts": { + "install": "node install.js" + }, + "author": { + "name": "Microsoft Corporation" + }, + "license": "Apache-2.0", + "dependencies": { + "playwright-core": "=0.9.17-post" + } +} diff --git a/packages/playwright/README.md b/packages/playwright/README.md new file mode 100644 index 0000000000..e5d0b2f058 --- /dev/null +++ b/packages/playwright/README.md @@ -0,0 +1,2 @@ +# playwright +This is a placeholder package for [Playwright](http://github.com/microsoft/playwright). Install one of `playwright-chromium`, `playwright-webkit`, or `playwright-firefox` to use playwright. diff --git a/packages/playwright/install.js b/packages/playwright/install.js new file mode 100644 index 0000000000..171ff7e2b3 --- /dev/null +++ b/packages/playwright/install.js @@ -0,0 +1,2 @@ +console.error('This package, "playwright", is a placeholder. Please install "playwright-chromium", "playwright-firefox", or "playwright-webkit" to use playwright.'); +process.exit(1); \ No newline at end of file diff --git a/packages/playwright/package.json b/packages/playwright/package.json new file mode 100644 index 0000000000..237f2f5867 --- /dev/null +++ b/packages/playwright/package.json @@ -0,0 +1,14 @@ +{ + "name": "playwright", + "version": "0.9.17-post", + "description": "A high-level API to automate web browsers", + "repository": "github:Microsoft/playwright", + "main": "index.js", + "scripts": { + "install": "node install.js" + }, + "author": { + "name": "Microsoft Corporation" + }, + "license": "Apache-2.0" +} diff --git a/utils/sync_package_versions.js b/utils/sync_package_versions.js new file mode 100644 index 0000000000..4f60e48f90 --- /dev/null +++ b/utils/sync_package_versions.js @@ -0,0 +1,36 @@ +/** + * Copyright (c) Microsoft Corporation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +const fs = require('fs'); +const path = require('path'); +const {version} = require('../package.json'); +updatePackage('playwright', packageJSON => { + packageJSON.version = version; +}); + +for (const packageName of ['playwright-chromium', 'playwright-firefox', 'playwright-webkit']) { + updatePackage(packageName, packageJSON => { + packageJSON.version = version; + packageJSON.dependencies['playwright-core'] = `=${version}`; + }); +} + +function updatePackage(packageName, transform) { + const packageJSONPath = path.join(__dirname, '..', 'packages', packageName, 'package.json'); + console.log(`Updating ${packageJSONPath} to ${version}.`); + const packageJSON = JSON.parse(fs.readFileSync(packageJSONPath)); + transform(packageJSON); + fs.writeFileSync(packageJSONPath, JSON.stringify(packageJSON, undefined, 2) + '\n'); +} \ No newline at end of file