From 641ffc2a2075d2c750777bbe2703671206e0ca24 Mon Sep 17 00:00:00 2001 From: Jack Franklin Date: Thu, 11 Feb 2021 10:34:44 +0000 Subject: [PATCH] chore: improve TS automated type tests (#6860) This PR: 1. Makes sure we remove and freshly install Puppeteer before testing our type defs, to avoid running on stale files. 2. Makes the tests run off `puppeteer.tgz` to avoid having version numbers in the file name and therefore having to update it when we bump versions. --- .gitignore | 3 +- scripts/test-ts-definition-files.ts | 29 ++++++++++++++++--- .../js-cjs-import-cjs-output/package.json | 2 +- .../js-cjs-import-esm-output/package.json | 2 +- .../js-esm-import-cjs-output/package.json | 2 +- .../js-esm-import-esm-output/package.json | 2 +- .../ts-cjs-import-cjs-output/package.json | 2 +- .../ts-esm-import-cjs-output/package.json | 2 +- .../ts-esm-import-esm-output/package.json | 2 +- 9 files changed, 33 insertions(+), 13 deletions(-) diff --git a/.gitignore b/.gitignore index f0dc23c33077a..1b6fdd7c47280 100644 --- a/.gitignore +++ b/.gitignore @@ -18,6 +18,5 @@ yarn.lock /lib test/coverage.json temp/ -puppeteer-core-*.tgz new-docs/ -puppeteer-*.tgz +puppeteer.tgz diff --git a/scripts/test-ts-definition-files.ts b/scripts/test-ts-definition-files.ts index d9f15133a681e..3ee8a3317eb4a 100644 --- a/scripts/test-ts-definition-files.ts +++ b/scripts/test-ts-definition-files.ts @@ -1,6 +1,7 @@ import { spawnSync } from 'child_process'; import { version } from '../package.json'; import path from 'path'; +import fs from 'fs'; const PROJECT_FOLDERS_ROOT = 'test-ts-types'; const EXPECTED_ERRORS = new Map([ [ @@ -71,13 +72,23 @@ function packPuppeteer() { const result = spawnSync('npm', ['pack'], { encoding: 'utf-8', }); - if (result.status !== 0) { console.log('Failed to pack Puppeteer', result.stderr); process.exit(1); } - return `puppeteer-${version}.tgz`; + // Move from puppeteer-X.Y.Z.tgz to puppeteer.tgz so we don't have to update + // it when versions change. + const moveResult = spawnSync('mv', [ + `puppeteer-${version}.tgz`, + 'puppeteer.tgz', + ]); + if (moveResult.status !== 0) { + console.log('Failed to rename Puppeteer tar', moveResult.stderr); + process.exit(1); + } + + return `puppeteer.tgz`; } const tar = packPuppeteer(); @@ -112,12 +123,22 @@ function testProject(folder: string) { ); const tarLocation = path.relative(projectLocation, tarPath); - console.log('===> Installing Puppeteer from tar file'); + console.log('===> Clearing left over node_modules to ensure clean slate'); + try { + fs.rmdirSync(path.join(projectLocation, 'node_modules'), { + recursive: true, + }); + } catch (_error) { + // We don't care if this errors because if it did it's most likely because + // there was no node_modules folder, which is fine. + } + console.log('===> Installing Puppeteer from tar file', tarLocation); const { status, stderr, stdout } = spawnSync( 'npm', - ['install', '--no-package-lock', tarLocation], + ['install', tarLocation], { env: { + ...process.env, PUPPETEER_SKIP_DOWNLOAD: '1', }, cwd: projectLocation, diff --git a/test-ts-types/js-cjs-import-cjs-output/package.json b/test-ts-types/js-cjs-import-cjs-output/package.json index 3c0d055e27700..6141e954b0d5a 100644 --- a/test-ts-types/js-cjs-import-cjs-output/package.json +++ b/test-ts-types/js-cjs-import-cjs-output/package.json @@ -7,6 +7,6 @@ "compile": "../../node_modules/.bin/tsc" }, "dependencies": { - "puppeteer": "file:../../puppeteer-7.0.4-post.tgz" + "puppeteer": "file:../../puppeteer.tgz" } } diff --git a/test-ts-types/js-cjs-import-esm-output/package.json b/test-ts-types/js-cjs-import-esm-output/package.json index 27d6b18b8a420..063237ea8a3d0 100644 --- a/test-ts-types/js-cjs-import-esm-output/package.json +++ b/test-ts-types/js-cjs-import-esm-output/package.json @@ -10,6 +10,6 @@ "typescript": "^4.1.3" }, "dependencies": { - "puppeteer": "file:../../puppeteer-7.0.4-post.tgz" + "puppeteer": "file:../../puppeteer.tgz" } } diff --git a/test-ts-types/js-esm-import-cjs-output/package.json b/test-ts-types/js-esm-import-cjs-output/package.json index 27d6b18b8a420..063237ea8a3d0 100644 --- a/test-ts-types/js-esm-import-cjs-output/package.json +++ b/test-ts-types/js-esm-import-cjs-output/package.json @@ -10,6 +10,6 @@ "typescript": "^4.1.3" }, "dependencies": { - "puppeteer": "file:../../puppeteer-7.0.4-post.tgz" + "puppeteer": "file:../../puppeteer.tgz" } } diff --git a/test-ts-types/js-esm-import-esm-output/package.json b/test-ts-types/js-esm-import-esm-output/package.json index 27d6b18b8a420..063237ea8a3d0 100644 --- a/test-ts-types/js-esm-import-esm-output/package.json +++ b/test-ts-types/js-esm-import-esm-output/package.json @@ -10,6 +10,6 @@ "typescript": "^4.1.3" }, "dependencies": { - "puppeteer": "file:../../puppeteer-7.0.4-post.tgz" + "puppeteer": "file:../../puppeteer.tgz" } } diff --git a/test-ts-types/ts-cjs-import-cjs-output/package.json b/test-ts-types/ts-cjs-import-cjs-output/package.json index 27d6b18b8a420..063237ea8a3d0 100644 --- a/test-ts-types/ts-cjs-import-cjs-output/package.json +++ b/test-ts-types/ts-cjs-import-cjs-output/package.json @@ -10,6 +10,6 @@ "typescript": "^4.1.3" }, "dependencies": { - "puppeteer": "file:../../puppeteer-7.0.4-post.tgz" + "puppeteer": "file:../../puppeteer.tgz" } } diff --git a/test-ts-types/ts-esm-import-cjs-output/package.json b/test-ts-types/ts-esm-import-cjs-output/package.json index 27d6b18b8a420..063237ea8a3d0 100644 --- a/test-ts-types/ts-esm-import-cjs-output/package.json +++ b/test-ts-types/ts-esm-import-cjs-output/package.json @@ -10,6 +10,6 @@ "typescript": "^4.1.3" }, "dependencies": { - "puppeteer": "file:../../puppeteer-7.0.4-post.tgz" + "puppeteer": "file:../../puppeteer.tgz" } } diff --git a/test-ts-types/ts-esm-import-esm-output/package.json b/test-ts-types/ts-esm-import-esm-output/package.json index 27d6b18b8a420..063237ea8a3d0 100644 --- a/test-ts-types/ts-esm-import-esm-output/package.json +++ b/test-ts-types/ts-esm-import-esm-output/package.json @@ -10,6 +10,6 @@ "typescript": "^4.1.3" }, "dependencies": { - "puppeteer": "file:../../puppeteer-7.0.4-post.tgz" + "puppeteer": "file:../../puppeteer.tgz" } }