chore: move create-playwright build to build.js infra (#9687)

Co-authored-by: Joel Einbinder <joel.einbinder@gmail.com>
This commit is contained in:
Max Schmitt 2021-10-22 10:13:05 +02:00 committed by GitHub
parent ea7a294924
commit 94d1fcf835
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 77 additions and 208 deletions

View File

@ -11,9 +11,6 @@ on:
jobs:
build:
runs-on: ubuntu-latest
defaults:
run:
working-directory: packages/create-playwright/
steps:
- uses: actions/checkout@v2
- name: Use Node.js
@ -23,6 +20,6 @@ jobs:
cache: 'npm'
- run: npm i -g npm@7
- run: npm ci
- run: npm i --no-save @playwright/test
- run: npm run build
- run: npm run test
working-directory: packages/create-playwright/

29
package-lock.json generated
View File

@ -39,6 +39,7 @@
"@types/yazl": "^2.4.2",
"@typescript-eslint/eslint-plugin": "^4.31.2",
"@typescript-eslint/parser": "^4.31.2",
"@vercel/ncc": "^0.31.1",
"@zip.js/zip.js": "^2.3.17",
"ansi-to-html": "^0.7.1",
"babel-loader": "^8.2.2",
@ -50,6 +51,7 @@
"cross-env": "^7.0.2",
"css-loader": "^6.4.0",
"electron": "^12.2.1",
"enquirer": "^2.3.6",
"eslint": "^7.31.0",
"eslint-plugin-notice": "^0.9.10",
"eslint-plugin-react-hooks": "^4.2.0",
@ -1653,9 +1655,9 @@
}
},
"node_modules/@vercel/ncc": {
"version": "0.30.0",
"resolved": "https://registry.npmjs.org/@vercel/ncc/-/ncc-0.30.0.tgz",
"integrity": "sha512-16ePj2GkwjomvE0HLL5ny+d+sudOwvZNYW8vjpMh3cyWdFxoMI8KSQiolVxeHBULbU1C5mVxLK5nL9NtnnpIew==",
"version": "0.31.1",
"resolved": "https://registry.npmjs.org/@vercel/ncc/-/ncc-0.31.1.tgz",
"integrity": "sha512-g0FAxwdViI6UzsiVz5HssIHqjcPa1EHL6h+2dcJD893SoCJaGdqqgUF09xnMW6goWnnhbLvgiKlgJWrJa+7qYA==",
"dev": true,
"bin": {
"ncc": "dist/ncc/cli.js"
@ -9307,6 +9309,15 @@
"integrity": "sha512-ho3Ruq+fFnBrZhUYI46n/bV2GjwzSkwuT4dTf0GkuNFmnb8nq4ny2z9JEVemFi6bdEJanHLlYfy9c6FN9B9McQ==",
"dev": true
},
"packages/create-playwright/node_modules/@vercel/ncc": {
"version": "0.30.0",
"resolved": "https://registry.npmjs.org/@vercel/ncc/-/ncc-0.30.0.tgz",
"integrity": "sha512-16ePj2GkwjomvE0HLL5ny+d+sudOwvZNYW8vjpMh3cyWdFxoMI8KSQiolVxeHBULbU1C5mVxLK5nL9NtnnpIew==",
"dev": true,
"bin": {
"ncc": "dist/ncc/cli.js"
}
},
"packages/playwright": {
"version": "1.17.0-next",
"hasInstallScript": true,
@ -10705,9 +10716,9 @@
}
},
"@vercel/ncc": {
"version": "0.30.0",
"resolved": "https://registry.npmjs.org/@vercel/ncc/-/ncc-0.30.0.tgz",
"integrity": "sha512-16ePj2GkwjomvE0HLL5ny+d+sudOwvZNYW8vjpMh3cyWdFxoMI8KSQiolVxeHBULbU1C5mVxLK5nL9NtnnpIew==",
"version": "0.31.1",
"resolved": "https://registry.npmjs.org/@vercel/ncc/-/ncc-0.31.1.tgz",
"integrity": "sha512-g0FAxwdViI6UzsiVz5HssIHqjcPa1EHL6h+2dcJD893SoCJaGdqqgUF09xnMW6goWnnhbLvgiKlgJWrJa+7qYA==",
"dev": true
},
"@webassemblyjs/ast": {
@ -11816,6 +11827,12 @@
"resolved": "https://registry.npmjs.org/@types/node/-/node-16.10.3.tgz",
"integrity": "sha512-ho3Ruq+fFnBrZhUYI46n/bV2GjwzSkwuT4dTf0GkuNFmnb8nq4ny2z9JEVemFi6bdEJanHLlYfy9c6FN9B9McQ==",
"dev": true
},
"@vercel/ncc": {
"version": "0.30.0",
"resolved": "https://registry.npmjs.org/@vercel/ncc/-/ncc-0.30.0.tgz",
"integrity": "sha512-16ePj2GkwjomvE0HLL5ny+d+sudOwvZNYW8vjpMh3cyWdFxoMI8KSQiolVxeHBULbU1C5mVxLK5nL9NtnnpIew==",
"dev": true
}
}
},

View File

@ -68,6 +68,7 @@
"@types/yazl": "^2.4.2",
"@typescript-eslint/eslint-plugin": "^4.31.2",
"@typescript-eslint/parser": "^4.31.2",
"@vercel/ncc": "^0.31.1",
"@zip.js/zip.js": "^2.3.17",
"ansi-to-html": "^0.7.1",
"babel-loader": "^8.2.2",
@ -79,6 +80,7 @@
"cross-env": "^7.0.2",
"css-loader": "^6.4.0",
"electron": "^12.2.1",
"enquirer": "^2.3.6",
"eslint": "^7.31.0",
"eslint-plugin-notice": "^0.9.10",
"eslint-plugin-react-hooks": "^4.2.0",

View File

@ -1,183 +0,0 @@
{
"name": "create-playwright",
"version": "0.1.7",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"version": "0.1.7",
"license": "MIT",
"bin": {
"create-playwright": "index.js"
},
"devDependencies": {
"@playwright/test": "file:../playwright-test",
"@types/node": "^16.9.0",
"@vercel/ncc": "^0.30.0",
"enquirer": "^2.3.6",
"typescript": "^4.4.2"
},
"engines": {
"node": ">=12"
}
},
"../playwright-test": {
"name": "@playwright/test",
"version": "1.17.0-next",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
"@babel/code-frame": "^7.14.5",
"@babel/core": "^7.14.8",
"@babel/plugin-proposal-class-properties": "^7.14.5",
"@babel/plugin-proposal-dynamic-import": "^7.14.5",
"@babel/plugin-proposal-export-namespace-from": "^7.14.5",
"@babel/plugin-proposal-logical-assignment-operators": "^7.14.5",
"@babel/plugin-proposal-nullish-coalescing-operator": "^7.14.5",
"@babel/plugin-proposal-numeric-separator": "^7.14.5",
"@babel/plugin-proposal-optional-chaining": "^7.14.5",
"@babel/plugin-proposal-private-methods": "^7.14.5",
"@babel/plugin-proposal-private-property-in-object": "^7.14.5",
"@babel/plugin-syntax-async-generators": "^7.8.4",
"@babel/plugin-syntax-json-strings": "^7.8.3",
"@babel/plugin-syntax-object-rest-spread": "^7.8.3",
"@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
"@babel/plugin-transform-modules-commonjs": "^7.14.5",
"@babel/preset-typescript": "^7.14.5",
"colors": "^1.4.0",
"expect": "^27.2.5",
"jest-matcher-utils": "^27.2.5",
"minimatch": "^3.0.3",
"ms": "^2.1.2",
"open": "^8.3.0",
"pirates": "^4.0.1",
"pixelmatch": "^5.2.1",
"playwright-core": "=1.17.0-next",
"source-map-support": "^0.4.18"
},
"engines": {
"node": ">=12"
}
},
"node_modules/@playwright/test": {
"resolved": "../playwright-test",
"link": true
},
"node_modules/@types/node": {
"version": "16.9.0",
"resolved": "https://registry.npmjs.org/@types/node/-/node-16.9.0.tgz",
"integrity": "sha512-nmP+VR4oT0pJUPFbKE4SXj3Yb4Q/kz3M9dSAO1GGMebRKWHQxLfDNmU/yh3xxCJha3N60nQ/JwXWwOE/ZSEVag==",
"dev": true
},
"node_modules/@vercel/ncc": {
"version": "0.30.0",
"resolved": "https://registry.npmjs.org/@vercel/ncc/-/ncc-0.30.0.tgz",
"integrity": "sha512-16ePj2GkwjomvE0HLL5ny+d+sudOwvZNYW8vjpMh3cyWdFxoMI8KSQiolVxeHBULbU1C5mVxLK5nL9NtnnpIew==",
"dev": true,
"bin": {
"ncc": "dist/ncc/cli.js"
}
},
"node_modules/ansi-colors": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz",
"integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==",
"dev": true,
"engines": {
"node": ">=6"
}
},
"node_modules/enquirer": {
"version": "2.3.6",
"resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz",
"integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==",
"dev": true,
"dependencies": {
"ansi-colors": "^4.1.1"
},
"engines": {
"node": ">=8.6"
}
},
"node_modules/typescript": {
"version": "4.4.2",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.2.tgz",
"integrity": "sha512-gzP+t5W4hdy4c+68bfcv0t400HVJMMd2+H9B7gae1nQlBzCqvrXX+6GL/b3GAgyTH966pzrZ70/fRjwAtZksSQ==",
"dev": true,
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
},
"engines": {
"node": ">=4.2.0"
}
}
},
"dependencies": {
"@playwright/test": {
"version": "file:../playwright-test",
"requires": {
"@babel/code-frame": "^7.14.5",
"@babel/core": "^7.14.8",
"@babel/plugin-proposal-class-properties": "^7.14.5",
"@babel/plugin-proposal-dynamic-import": "^7.14.5",
"@babel/plugin-proposal-export-namespace-from": "^7.14.5",
"@babel/plugin-proposal-logical-assignment-operators": "^7.14.5",
"@babel/plugin-proposal-nullish-coalescing-operator": "^7.14.5",
"@babel/plugin-proposal-numeric-separator": "^7.14.5",
"@babel/plugin-proposal-optional-chaining": "^7.14.5",
"@babel/plugin-proposal-private-methods": "^7.14.5",
"@babel/plugin-proposal-private-property-in-object": "^7.14.5",
"@babel/plugin-syntax-async-generators": "^7.8.4",
"@babel/plugin-syntax-json-strings": "^7.8.3",
"@babel/plugin-syntax-object-rest-spread": "^7.8.3",
"@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
"@babel/plugin-transform-modules-commonjs": "^7.14.5",
"@babel/preset-typescript": "^7.14.5",
"colors": "^1.4.0",
"expect": "^27.2.5",
"jest-matcher-utils": "^27.2.5",
"minimatch": "^3.0.3",
"ms": "^2.1.2",
"open": "^8.3.0",
"pirates": "^4.0.1",
"pixelmatch": "^5.2.1",
"playwright-core": "=1.17.0-next",
"source-map-support": "^0.4.18"
}
},
"@types/node": {
"version": "16.9.0",
"resolved": "https://registry.npmjs.org/@types/node/-/node-16.9.0.tgz",
"integrity": "sha512-nmP+VR4oT0pJUPFbKE4SXj3Yb4Q/kz3M9dSAO1GGMebRKWHQxLfDNmU/yh3xxCJha3N60nQ/JwXWwOE/ZSEVag==",
"dev": true
},
"@vercel/ncc": {
"version": "0.30.0",
"resolved": "https://registry.npmjs.org/@vercel/ncc/-/ncc-0.30.0.tgz",
"integrity": "sha512-16ePj2GkwjomvE0HLL5ny+d+sudOwvZNYW8vjpMh3cyWdFxoMI8KSQiolVxeHBULbU1C5mVxLK5nL9NtnnpIew==",
"dev": true
},
"ansi-colors": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz",
"integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==",
"dev": true
},
"enquirer": {
"version": "2.3.6",
"resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz",
"integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==",
"dev": true,
"requires": {
"ansi-colors": "^4.1.1"
}
},
"typescript": {
"version": "4.4.2",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.2.tgz",
"integrity": "sha512-gzP+t5W4hdy4c+68bfcv0t400HVJMMd2+H9B7gae1nQlBzCqvrXX+6GL/b3GAgyTH966pzrZ70/fRjwAtZksSQ==",
"dev": true
}
}
}

View File

@ -14,15 +14,6 @@
},
"license": "MIT",
"scripts": {
"prepublish": "npm run build",
"watch": "cd src && ncc build cli.ts --watch --out ../lib && cd ..",
"build": "cd src && ncc build cli.ts --minify --out ../lib && cd ..",
"test": "npx playwright test"
},
"devDependencies": {
"@types/node": "^16.9.0",
"@vercel/ncc": "^0.30.0",
"enquirer": "^2.3.6",
"typescript": "^4.4.2"
}
}

View File

@ -28,20 +28,43 @@ const { packages } = require('../list_packages');
* args: string[],
* shell: boolean,
* env?: NodeJS.ProcessEnv,
* cwd?: string,
* }} Step
*/
/**
* @type {Step[]}
* @typedef {{
* files: string,
* from: string,
* to: string,
* ignored?: string[],
* }} CopyFile
*/
/**
* @typedef {{
* committed: boolean,
* inputs: string[],
* mustExist?: string[],
* script: string,
* }} OnChange
*/
/** @type {Step[]} */
const steps = [];
/** @type {OnChange[]} */
const onChanges = [];
/** @type {CopyFile[]} */
const copyFiles = [];
const watchMode = process.argv.slice(2).includes('--watch');
const lintMode = process.argv.slice(2).includes('--lint');
const ROOT = path.join(__dirname, '..', '..');
/**
* @param {string} relative
* @returns {string}
*/
function filePath(relative) {
return path.join(ROOT, ...relative.split('/'));
}
@ -66,13 +89,17 @@ async function runWatch() {
copyFile(file, from, to);
});
}
/** @type{import('child_process').ChildProcess[]} */
const spawns = [];
for (const step of steps)
spawns.push(child_process.spawn(step.command, step.args, {
stdio: 'inherit', shell: step.shell, env: {
stdio: 'inherit',
shell: step.shell,
env: {
...process.env,
...step.env,
}
},
cwd: step.cwd,
}));
process.on('exit', () => spawns.forEach(s => s.kill()));
for (const onChange of onChanges)
@ -85,10 +112,13 @@ async function runBuild() {
*/
function runStep(step) {
const out = child_process.spawnSync(step.command, step.args, {
stdio: 'inherit', shell: step.shell, env: {
stdio: 'inherit',
shell: step.shell,
env: {
...process.env,
...step.env
}
},
cwd: step.cwd,
});
if (out.status)
process.exit(out.status);
@ -112,6 +142,11 @@ async function runBuild() {
}
}
/**
* @param {string} file
* @param {string} from
* @param {string} to
*/
function copyFile(file, from, to) {
const destination = path.resolve(filePath(to), path.relative(filePath(from), file));
fs.mkdirSync(path.dirname(destination), { recursive: true });
@ -141,6 +176,8 @@ for (const file of webPackFiles) {
for (const packageDir of packages) {
if (!fs.existsSync(path.join(packageDir, 'src')))
continue;
if (path.basename(packageDir) === 'create-playwright')
continue;
steps.push({
command: 'npx',
args: [
@ -148,7 +185,7 @@ for (const packageDir of packages) {
...(watchMode ? ['-w', '--source-maps'] : []),
'--extensions', '.ts',
'--out-dir', path.join(packageDir, 'lib'),
'--ignore', 'packages/playwright-core/src/server/injected/**/*',
'--ignore', '"packages/playwright-core/src/server/injected/**/*","packages/create-playwright/**/*"',
path.join(packageDir, 'src')],
shell: true,
});
@ -225,4 +262,12 @@ if (lintMode) {
});
}
// create-playwright package
steps.push({
command: 'npx',
args: ['ncc', 'build', 'cli.ts', (watchMode ? '--watch' : '--minify'), '--out', '../lib'],
shell: true,
cwd: 'packages/create-playwright/src'
});
watchMode ? runWatch() : runBuild();