improve test scripts (#6016)

1. don't run browser tests in `headless` mode by default when running
tests individually. because when writing/running tests, i usually want
to see/debug using the browser. if one still wants headless, it's as
easy as: `yarn workspace @uppy/xyz test --browser.headless`. instead
append the `headless` mode when running all tests together - it doesn't
make sense to run all projects' tests without headless mode.
2. don't always run browser tests with `watch`: watch doesn't make sense
when running multiple projects in turbo (one project just blocks the
rest watching for changes). if one still wants to run a single test with
watch mode, it's as easy as: `yarn workspace @uppy/xyz test --watch`
3. don't cache test runs: if I run the `test` command. most of the time
I want to actually run tests (not skip them if they already ran last
time)
4. output logs when running tests. it's nice to see that the tests have
actually run (also on CI)
5. when running all tests, use concurrency=1, because the tests also
includes e2e tests, running multiple browsers in parallel really just
makes the test fail on my computer (and uses a lot of memory)

current output is not very informative:

<img width="840" height="410" alt="Screenshot 2025-10-17 at 17 09 55"
src="https://github.com/user-attachments/assets/9ca8278c-f160-478c-87e2-2ef861ba4bb1"
/>

with this PR:

<img width="672" height="495" alt="Screenshot 2025-10-17 at 17 20 49"
src="https://github.com/user-attachments/assets/1339c96b-d0c1-42e1-8fa1-d5a4a36ea42a"
/>
This commit is contained in:
Mikael Finstad 2025-10-17 22:07:01 +08:00 committed by GitHub
parent 6a60ee517d
commit 1fbb95da2b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
9 changed files with 13 additions and 10 deletions

View file

@ -4,7 +4,7 @@
"type": "module",
"scripts": {
"build": "tsc && vite build",
"test": "vitest run --browser.headless",
"test": "vitest run",
"dev": "vite",
"serve": "vite preview"
},

View file

@ -6,7 +6,7 @@
"scripts": {
"dev": "vite dev",
"build": "vite build",
"test": "vitest run --browser.headless",
"test": "vitest run",
"preview": "vite preview",
"prepare": "svelte-kit sync || echo ''",
"check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",

View file

@ -6,7 +6,7 @@
"scripts": {
"dev": "vite",
"build": "vite build",
"test": "vitest run --browser.headless",
"test": "vitest run",
"preview": "vite preview --port 5050"
},
"dependencies": {

View file

@ -21,7 +21,8 @@
"dev": "yarn workspace @uppy-dev/dev dev",
"dev:with-companion": "npm-run-all --parallel start:companion dev",
"start:companion": "yarn workspace @uppy/companion start:dev",
"test": "turbo run test --filter='./packages/@uppy/*' --filter='./packages/uppy' --filter='./examples/{react,vue,sveltekit}'",
"test": "turbo run test --concurrency=1 --filter='./packages/@uppy/*' --filter='./packages/uppy' --filter='./examples/{react,vue,sveltekit}' -- --browser.headless",
"test:e2e": "turbo run test:e2e --concurrency=1 --filter='./packages/@uppy/*' --filter='./packages/uppy' --filter='./examples/{react,vue,sveltekit}' -- --browser.headless",
"test:watch": "turbo watch test --filter='./packages/@uppy/*' --filter='./packages/uppy'",
"typecheck": "turbo run typecheck --filter='./packages/@uppy/*' --filter='./packages/uppy'",
"version": "changeset version && corepack yarn install --mode=update-lockfile && node scripts/update-readme-versions.mjs",

View file

@ -13,7 +13,7 @@
"build:css": "sass --load-path=../../ src/style.scss dist/style.css && postcss dist/style.css -u cssnano -o dist/style.min.css",
"typecheck": "tsc --build",
"test": "vitest run --silent='passed-only'",
"test:e2e": "vitest watch --project browser --browser.headless false"
"test:e2e": "vitest run --project browser"
},
"keywords": [
"file uploader",

View file

@ -19,7 +19,6 @@ export default defineConfig({
include: ['src/**/*.browser.test.{ts,tsx}'],
browser: {
enabled: true,
headless: true,
provider: 'playwright',
instances: [{ browser: 'chromium' }],
},

View file

@ -13,7 +13,7 @@
"build:css": "sass --load-path=../../ src/style.scss dist/style.css && postcss dist/style.css -u cssnano -o dist/style.min.css",
"typecheck": "tsc --build",
"test": "vitest run --silent='passed-only'",
"test:e2e": "vitest watch --project browser --browser.headless false"
"test:e2e": "vitest run --project browser"
},
"keywords": [
"file uploader",

View file

@ -10,7 +10,6 @@ export default defineConfig({
globalSetup: './vitest.setup.ts',
browser: {
enabled: true,
headless: true,
provider: 'playwright',
instances: [{ browser: 'chromium' }],
},

View file

@ -34,8 +34,12 @@
"inputs": ["src/**/*.{js,ts,jsx,tsx}", "tsconfig.json"]
},
"test": {
"outputLogs": "errors-only",
"dependsOn": ["^test"]
"dependsOn": ["^test"],
"cache": false
},
"test:e2e": {
"dependsOn": ["^test:e2e"],
"cache": false
}
}
}