From a3d2ba699a3c7d1f5c2e0bd17c85a5fdea870401 Mon Sep 17 00:00:00 2001 From: Yury Semikhatsky Date: Fri, 6 Feb 2026 10:20:37 -0800 Subject: [PATCH] devops: roll script (#1377) --- package.json | 3 +- packages/playwright-mcp/package.json | 4 +- roll.js | 56 ++++++++++++++++++++++++++++ 3 files changed, 59 insertions(+), 4 deletions(-) create mode 100644 roll.js diff --git a/package.json b/package.json index 936044d..55a1707 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,8 @@ "lint": "npm run lint --workspaces", "test": "npm run test --workspaces", "build": "npm run build --workspaces", - "bump": "npm version --workspaces --no-git-tag-version" + "bump": "npm version --workspaces --no-git-tag-version", + "roll": "node roll.js" }, "workspaces": [ "packages/*" diff --git a/packages/playwright-mcp/package.json b/packages/playwright-mcp/package.json index b94a832..cd02597 100644 --- a/packages/playwright-mcp/package.json +++ b/packages/playwright-mcp/package.json @@ -22,9 +22,7 @@ "wtest": "playwright test --project=webkit", "dtest": "MCP_IN_DOCKER=1 playwright test --project=chromium-docker", "build": "echo OK", - "npm-publish": "npm run lint && npm run test && npm publish", - "copy-config": "cp ../../../playwright/packages/playwright/src/mcp/config.d.ts . && perl -pi -e \"s|import type \\* as playwright from 'playwright-core';|import type * as playwright from 'playwright';|\" ./config.d.ts", - "roll": "npm run copy-config && npm run lint" + "npm-publish": "npm run lint && npm run test && npm publish" }, "exports": { "./package.json": "./package.json", diff --git a/roll.js b/roll.js new file mode 100644 index 0000000..189a32f --- /dev/null +++ b/roll.js @@ -0,0 +1,56 @@ +const fs = require('fs'); +const path = require('path'); +const { execSync } = require('child_process'); + +function copyConfig() { + const src = path.join(__dirname, '..', 'playwright', 'packages', 'playwright', 'src', 'mcp', 'config.d.ts'); + const dst = path.join(__dirname, 'packages', 'playwright-mcp', 'config.d.ts'); + let content = fs.readFileSync(src, 'utf-8'); + content = content.replace( + "import type * as playwright from 'playwright-core';", + "import type * as playwright from 'playwright';" + ); + fs.writeFileSync(dst, content); + console.log(`Copied config.d.ts from ${src} to ${dst}`); +} + +function updatePlaywrightVersion(version) { + const files = [ + path.join(__dirname, 'package.json'), + path.join(__dirname, 'packages', 'playwright-mcp', 'package.json'), + path.join(__dirname, 'packages', 'playwright-cli', 'package.json'), + ]; + + for (const file of files) { + const json = JSON.parse(fs.readFileSync(file, 'utf-8')); + let updated = false; + for (const section of ['dependencies', 'devDependencies']) { + for (const pkg of ['@playwright/test', 'playwright', 'playwright-core']) { + if (json[section]?.[pkg]) { + json[section][pkg] = version; + updated = true; + } + } + } + if (updated) { + fs.writeFileSync(file, JSON.stringify(json, null, 2) + '\n'); + console.log(`Updated ${file}`); + } + } + + execSync('npm install', { cwd: __dirname, stdio: 'inherit' }); +} + +function doRoll(version) { + updatePlaywrightVersion(version); + copyConfig(); + // update readme + execSync('npm run lint', { cwd: __dirname, stdio: 'inherit' }); +} + +let version = process.argv[2]; +if (!version) { + version = execSync('npm info playwright@next version', { encoding: 'utf-8' }).trim(); + console.log(`Using next playwright version: ${version}`); +} +doRoll(version);