From 7b94cf9f6094808c3e9e364fcef3d3238ce0376b Mon Sep 17 00:00:00 2001 From: Francesco Novy Date: Wed, 26 Jul 2023 15:48:58 +0200 Subject: [PATCH] test(e2e): Show test progress & ensure we clean before running tests --- packages/e2e-tests/package.json | 3 +- packages/e2e-tests/run.ts | 33 +++++++++++++++++-- .../create-next-app/package.json | 1 + .../create-react-app/package.json | 1 + .../create-remix-app/package.json | 1 + .../nextjs-app-dir/package.json | 1 + .../node-express-app/package.json | 1 + .../react-create-hash-router/package.json | 1 + .../package.json | 1 + .../standard-frontend-react/package.json | 1 + .../test-applications/sveltekit/package.json | 1 + 11 files changed, 41 insertions(+), 4 deletions(-) diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index 93471552edab..2a34eab9b297 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -20,7 +20,8 @@ "test:validate-test-app-setups": "ts-node validate-test-app-setups.ts", "test:prepare": "ts-node prepare.ts", "test:validate": "run-s test:validate-configuration test:validate-test-app-setups", - "clean": "rimraf tmp test-applications/**/{node_modules,dist,build,.next,.sveltekit,pnpm-lock.yaml}" + "clean": "rimraf tmp node_modules && yarn clean:test-applications", + "clean:test-applications": "rimraf test-applications/**/{node_modules,dist,build,.next,.sveltekit,pnpm-lock.yaml}" }, "devDependencies": { "@types/glob": "8.0.0", diff --git a/packages/e2e-tests/run.ts b/packages/e2e-tests/run.ts index cdf400f52498..68263f79c4c9 100644 --- a/packages/e2e-tests/run.ts +++ b/packages/e2e-tests/run.ts @@ -1,15 +1,37 @@ /* eslint-disable max-lines */ /* eslint-disable no-console */ -import { exec } from 'child_process'; +import { spawn } from 'child_process'; import * as dotenv from 'dotenv'; import { sync as globSync } from 'glob'; import { resolve } from 'path'; -import { promisify } from 'util'; import { validate } from './lib/validate'; import { registrySetup } from './registrySetup'; -const asyncExec = promisify(exec); +function asyncExec(command: string, options: { env: Record; cwd: string }): Promise { + return new Promise((resolve, reject) => { + const process = spawn(command, { ...options, shell: true }); + + process.stdout.on('data', data => { + console.log(`${data}`); + }); + + process.stderr.on('data', data => { + console.error(`${data}`); + }); + + process.on('error', error => { + reject(error); + }); + + process.on('close', code => { + if (code !== 0) { + return reject(); + } + resolve(); + }); + }); +} async function run(): Promise { // Load environment variables from .env file locally @@ -31,8 +53,13 @@ async function run(): Promise { const env = { ...process.env, ...envVarsToInject }; try { + console.log('Cleaning test-applications...'); + console.log(''); + registrySetup(); + await asyncExec('pnpm clean:test-applications', { env, cwd: __dirname }); + const testAppPaths = appName ? [appName.trim()] : globSync('*', { cwd: `${__dirname}/test-applications/` }); console.log(`Runnings tests for: ${testAppPaths.join(', ')}`); diff --git a/packages/e2e-tests/test-applications/create-next-app/package.json b/packages/e2e-tests/test-applications/create-next-app/package.json index b4f971150d8f..0fd95034f36c 100644 --- a/packages/e2e-tests/test-applications/create-next-app/package.json +++ b/packages/e2e-tests/test-applications/create-next-app/package.json @@ -4,6 +4,7 @@ "private": true, "scripts": { "build": "next build", + "clean": "npx rimraf node_modules,pnpm-lock.yaml", "test:prod": "TEST_ENV=prod playwright test", "test:dev": "TEST_ENV=dev playwright test", "test:build": "pnpm install && npx playwright install && pnpm build", diff --git a/packages/e2e-tests/test-applications/create-react-app/package.json b/packages/e2e-tests/test-applications/create-react-app/package.json index 8584121f92dc..1cdcc07f6617 100644 --- a/packages/e2e-tests/test-applications/create-react-app/package.json +++ b/packages/e2e-tests/test-applications/create-react-app/package.json @@ -23,6 +23,7 @@ "build": "react-scripts build", "test": "react-scripts test", "eject": "react-scripts eject", + "clean": "npx rimraf node_modules,pnpm-lock.yaml", "test:build": "pnpm install && pnpm build", "test:build-ts3.8": "pnpm install && pnpm add typescript@3.8 && pnpm build", "test:build-canary": "pnpm install && pnpm add react@canary react-dom@canary && pnpm build", diff --git a/packages/e2e-tests/test-applications/create-remix-app/package.json b/packages/e2e-tests/test-applications/create-remix-app/package.json index a2b64bbe0ffc..06adb8434d79 100644 --- a/packages/e2e-tests/test-applications/create-remix-app/package.json +++ b/packages/e2e-tests/test-applications/create-remix-app/package.json @@ -6,6 +6,7 @@ "dev": "remix dev", "start": "remix-serve build", "typecheck": "tsc", + "clean": "npx rimraf node_modules,pnpm-lock.yaml", "test:build": "pnpm install && npx playwright install && pnpm build", "test:assert": "pnpm playwright test" }, diff --git a/packages/e2e-tests/test-applications/nextjs-app-dir/package.json b/packages/e2e-tests/test-applications/nextjs-app-dir/package.json index a5ce5514e3ca..d8701ef8df7c 100644 --- a/packages/e2e-tests/test-applications/nextjs-app-dir/package.json +++ b/packages/e2e-tests/test-applications/nextjs-app-dir/package.json @@ -4,6 +4,7 @@ "private": true, "scripts": { "build": "next build > .tmp_build_output", + "clean": "npx rimraf node_modules,pnpm-lock.yaml", "test:prod": "TEST_ENV=production playwright test", "test:dev": "TEST_ENV=development playwright test", "test:build": "pnpm install && npx playwright install && pnpm build", diff --git a/packages/e2e-tests/test-applications/node-express-app/package.json b/packages/e2e-tests/test-applications/node-express-app/package.json index 45efd817e901..1c1264bd52ec 100644 --- a/packages/e2e-tests/test-applications/node-express-app/package.json +++ b/packages/e2e-tests/test-applications/node-express-app/package.json @@ -6,6 +6,7 @@ "build": "tsc", "start": "node dist/app.js", "test": "playwright test", + "clean": "npx rimraf node_modules,pnpm-lock.yaml", "test:build": "pnpm install && pnpm build", "test:assert": "pnpm test" }, diff --git a/packages/e2e-tests/test-applications/react-create-hash-router/package.json b/packages/e2e-tests/test-applications/react-create-hash-router/package.json index c3bfaf4c9e0c..72e1fc09c055 100644 --- a/packages/e2e-tests/test-applications/react-create-hash-router/package.json +++ b/packages/e2e-tests/test-applications/react-create-hash-router/package.json @@ -22,6 +22,7 @@ "build": "react-scripts build", "start": "serve -s build", "test": "playwright test", + "clean": "npx rimraf node_modules,pnpm-lock.yaml", "test:build": "pnpm install && npx playwright install && pnpm build", "test:build-canary": "pnpm install && pnpm add react@canary react-dom@canary && npx playwright install && pnpm build", "test:assert": "pnpm test" diff --git a/packages/e2e-tests/test-applications/standard-frontend-react-tracing-import/package.json b/packages/e2e-tests/test-applications/standard-frontend-react-tracing-import/package.json index 8ad3f32e13e9..72a6f223e960 100644 --- a/packages/e2e-tests/test-applications/standard-frontend-react-tracing-import/package.json +++ b/packages/e2e-tests/test-applications/standard-frontend-react-tracing-import/package.json @@ -23,6 +23,7 @@ "build": "react-scripts build", "start": "serve -s build", "test": "playwright test", + "clean": "npx rimraf node_modules,pnpm-lock.yaml", "test:build": "pnpm install && npx playwright install && pnpm build", "test:assert": "pnpm test" }, diff --git a/packages/e2e-tests/test-applications/standard-frontend-react/package.json b/packages/e2e-tests/test-applications/standard-frontend-react/package.json index 554821b1366c..5d0d4716ef1c 100644 --- a/packages/e2e-tests/test-applications/standard-frontend-react/package.json +++ b/packages/e2e-tests/test-applications/standard-frontend-react/package.json @@ -22,6 +22,7 @@ "build": "react-scripts build", "start": "serve -s build", "test": "playwright test", + "clean": "npx rimraf node_modules,pnpm-lock.yaml", "test:build": "pnpm install && npx playwright install && pnpm build", "test:build-ts3.8": "pnpm install && pnpm add typescript@3.8 && npx playwright install && pnpm build", "test:build-canary": "pnpm install && pnpm add react@canary react-dom@canary && npx playwright install && pnpm build", diff --git a/packages/e2e-tests/test-applications/sveltekit/package.json b/packages/e2e-tests/test-applications/sveltekit/package.json index 4c644d83127a..5adf85d8e7d8 100644 --- a/packages/e2e-tests/test-applications/sveltekit/package.json +++ b/packages/e2e-tests/test-applications/sveltekit/package.json @@ -6,6 +6,7 @@ "dev": "vite dev", "build": "vite build", "preview": "vite preview", + "clean": "npx rimraf node_modules,pnpm-lock.yaml", "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", "test:prod": "TEST_ENV=production playwright test",