From 5b1c35b01f7e9209d31f4f63aa249da4a0d70cf5 Mon Sep 17 00:00:00 2001 From: uid11 Date: Thu, 14 Nov 2024 02:54:23 +0300 Subject: [PATCH] FI-1506 fix: bin command `e2ed-install-browsers` --- bin/installBrowsers.sh | 4 ++++ package.json | 9 +++++---- scripts/writeInstallBrowsers.ts | 18 ++++++++++++++++++ scripts/writePrunedPackageJson.ts | 9 +-------- 4 files changed, 28 insertions(+), 12 deletions(-) create mode 100755 bin/installBrowsers.sh create mode 100644 scripts/writeInstallBrowsers.ts diff --git a/bin/installBrowsers.sh b/bin/installBrowsers.sh new file mode 100755 index 00000000..9d3bcfaa --- /dev/null +++ b/bin/installBrowsers.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env sh +set -eu + +npm install --global @playwright/browser-chromium@latest diff --git a/package.json b/package.json index 7a31d7be..950ac51f 100644 --- a/package.json +++ b/package.json @@ -10,8 +10,9 @@ "author": "uid11", "license": "MIT", "bin": { - "e2ed": "bin/runE2edInLocalEnvironment.js", - "e2ed-init": "bin/init.js" + "e2ed": "./bin/runE2edInLocalEnvironment.js", + "e2ed-init": "./bin/init.js", + "e2ed-install-browsers": "./bin/installBrowsers.sh" }, "bugs": "https://github.com/joomcode/e2ed/issues", "engines": { @@ -91,11 +92,11 @@ "build:remove:types-js": "find ./build/node_modules/e2ed/types/ -name *.js -exec rm {} \\;", "postbuild:remove": "touch ./build/node_modules/e2ed/types/index.js", "build:copy": "npm run build:copy:bin && npm run build:copy:scripts && npm run build:copy:meta && npm run build:copy:example && npm run build:copy:tsconfig", - "build:copy:bin": "cp ./bin/dockerEntrypoint.sh ./build/node_modules/e2ed/bin", + "build:copy:bin": "cp ./bin/dockerEntrypoint.sh ./bin/installBrowsers.sh ./build/node_modules/e2ed/bin", "postbuild:copy:bin": "npm run make:executable build/node_modules/e2ed/bin/init.js build/node_modules/e2ed/bin/runE2edInLocalEnvironment.js build/node_modules/e2ed/bin/runE2edInDockerEnvironment.js", "build:copy:scripts": "cp ./build/scripts/*.js ./build", "build:copy:meta": "cp -R ./LICENSE ./logo.svg ./README.md ./styles ./build/node_modules/e2ed", - "postbuild:copy:meta": "node ./build/writePrunedPackageJson.js", + "postbuild:copy:meta": "node ./build/writeInstallBrowsers.js && node ./build/writePrunedPackageJson.js", "prebuild:copy:example": "rm -r ./build/autotests", "build:copy:example": "cp -R ./autotests ./build/node_modules/e2ed/", "postbuild:copy:example": "(cd ./build/node_modules/e2ed/autotests && rm -r ./node_modules ./tests/internalTypeTests && mv ./.gitignore ./gitignore && mv ./packs/local.example.ts ./packs/local.ts)", diff --git a/scripts/writeInstallBrowsers.ts b/scripts/writeInstallBrowsers.ts new file mode 100644 index 00000000..10a3ca7e --- /dev/null +++ b/scripts/writeInstallBrowsers.ts @@ -0,0 +1,18 @@ +/** + * @file Writes actual Playwright version to `installBrowsers.sh` script. + */ + +import {readFileSync, writeFileSync} from 'node:fs'; +import {join} from 'node:path'; + +import packageJson from '../package.json'; + +const playwrightVersion = packageJson.dependencies['@playwright/test']; + +const installBrowsersPath = join(__dirname, 'node_modules', 'e2ed', 'bin', 'installBrowsers.sh'); + +const installBrowsersText = readFileSync(installBrowsersPath, 'utf8'); + +const newInstallBrowsersText = installBrowsersText.replace('@latest', `@${playwrightVersion}`); + +writeFileSync(installBrowsersPath, newInstallBrowsersText); diff --git a/scripts/writePrunedPackageJson.ts b/scripts/writePrunedPackageJson.ts index 7042893d..fb11fe36 100644 --- a/scripts/writePrunedPackageJson.ts +++ b/scripts/writePrunedPackageJson.ts @@ -9,22 +9,15 @@ import originalPackageJson from '../package.json'; type OriginalPackageJson = typeof originalPackageJson; -type PrunedPackageJson = Omit & { - bin: OriginalPackageJson['bin'] & {['e2ed-install-browsers']: string}; +type PrunedPackageJson = Omit & { devDependencies: undefined; scripts: undefined; }; const prunedPackageJsonPath = join(__dirname, 'node_modules', 'e2ed', 'package.json'); -const playwrightVersion = originalPackageJson.dependencies['@playwright/test']; - const prunedPackageJson: PrunedPackageJson = { ...originalPackageJson, - bin: { - ...originalPackageJson.bin, - 'e2ed-install-browsers': `npm install --global @playwright/browser-chromium@${playwrightVersion}`, - }, devDependencies: undefined, scripts: undefined, };