# Testing signals — prisma/prisma

> Canonical page: https://codevetter.com/unpack/prisma/testing-signals

# Testing signals — prisma/prisma

Scanned commit dd867230cd8fe08d203b395999f20b4e717fe10b (2026-09-22). Generated by codevetter codevetter 1.12.0 on 2026-09-22.

Vitest is the package, integration, and e2e runner. The root config discovers every package vitest.config.ts, forces telemetry off, and on CI caps workers at 50% because PGlite plus Postgres oversubscribes the runner. Package tests are sharded four ways with v8 coverage; integration tests are also sharded but, until about 2026-08-21, do not run in merge queue. A large scorecard separates features proven by a database integration test from features that are only unit-tested. Fixture drift is a git diff of emitted contract files, not an ad-hoc snapshot.
- Root vitest.config.ts sets test.projects to packages/**/vitest.config.ts, env.PRISMA_DISABLE_TELEMETRY=1, and maxWorkers 50% when CI is set. Coverage uses @vitest/coverage-v8 via provider v8, reportOnFailure, and composeCoverageConfig. A VITEST_COVERAGE_SHARD env var suppresses text/json reporters and thresholds so shards can emit blobs. — [vitest.config.ts#L1-L36](https://github.com/prisma/prisma/blob/dd867230cd8fe08d203b395999f20b4e717fe10b/vitest.config.ts#L1-L36) [package.json#L84-L99](https://github.com/prisma/prisma/blob/dd867230cd8fe08d203b395999f20b4e717fe10b/package.json#L84-L99)
- pnpm test:packages builds everything except examples and test workspaces, then runs vitest run. pnpm test:e2e is pnpm --filter e2e-tests test. pnpm test:integration is pnpm --filter integration-tests test. pnpm test:journeys and pnpm test:vite-plugin are separate integration-tests scripts. — [package.json#L14-L23](https://github.com/prisma/prisma/blob/dd867230cd8fe08d203b395999f20b4e717fe10b/package.json#L14-L23) [test/integration/package.json#L2-L15](https://github.com/prisma/prisma/blob/dd867230cd8fe08d203b395999f20b4e717fe10b/test/integration/package.json#L2-L15) [test/e2e/framework/package.json#L2-L12](https://github.com/prisma/prisma/blob/dd867230cd8fe08d203b395999f20b4e717fe10b/test/e2e/framework/package.json#L2-L12)
- integration-tests pretest builds integration-tests and the postgres, mongo, and pgvector public packages. Its test script is vitest run. test:journeys uses vitest.journeys.config.ts. The tree includes cli-journeys e2e files, authoring parity fixtures, sql-orm-client suites, mongo runtime tests, and vite-plugin.hmr.e2e.test.ts. — [test/integration/package.json#L6-L15](https://github.com/prisma/prisma/blob/dd867230cd8fe08d203b395999f20b4e717fe10b/test/integration/package.json#L6-L15)
- e2e-tests emit runs prisma contract emit against test/fixtures/prisma.config.ts and the sqlite fixture config. The Testing Guide says e2e loads committed fixtures under test/fixtures/generated/contract.json instead of emitting on every test, with one emission check. — [test/e2e/framework/package.json#L12-L13](https://github.com/prisma/prisma/blob/dd867230cd8fe08d203b395999f20b4e717fe10b/test/e2e/framework/package.json#L12-L13) [docs/Testing Guide.md#L64-L79](https://github.com/prisma/prisma/blob/dd867230cd8fe08d203b395999f20b4e717fe10b/docs/Testing%20Guide.md#L64-L79)
- CI workflow CI (PR) triggers on pull_request and merge_group with permissions contents: read and cancel-in-progress concurrency. An inert-diff job lets docs-only PRs skip expensive steps. The build job runs pnpm install --frozen-lockfile, pnpm build, and pnpm check:clean-tree. — [.github/workflows/ci.yml#L1-L49](https://github.com/prisma/prisma/blob/dd867230cd8fe08d203b395999f20b4e717fe10b/.github/workflows/ci.yml#L1-L49)
- The lint job runs lint:deps, lint:code, lint:packages, lint:examples, lint:rules, lint:rules:symlinks, lint:skills, lint:rules:footprint, lint:docs, lint:manifests, lint:workflows, test:scripts, lint:casts, lint:throws, lint:framework-vocabulary, lint:consumer-internal-imports, lint:legacy-name, lint:vitest-timeouts, lint:publishability, check:upgrade-coverage, check:error-reference, and check:release-notes. — [.github/workflows/ci.yml#L71-L143](https://github.com/prisma/prisma/blob/dd867230cd8fe08d203b395999f20b4e717fe10b/.github/workflows/ci.yml#L71-L143) [package.json#L34-L50](https://github.com/prisma/prisma/blob/dd867230cd8fe08d203b395999f20b4e717fe10b/package.json#L34-L50)
- Package tests run as a 4-way matrix on ubuntu with a postgres:15 service, TEST_TIMEOUT_MULTIPLIER=2, and pnpm coverage:packages --shard=i/4 writing blob reports. Coverage merges the four blobs with pnpm coverage:packages:merge and pnpm coverage:report. Examples tests start the cloudflare-worker compose Postgres on 5433 and fetch the Prisma 7 schema engine for prisma7-adoption. — [.github/workflows/ci.yml#L167-L270](https://github.com/prisma/prisma/blob/dd867230cd8fe08d203b395999f20b4e717fe10b/.github/workflows/ci.yml#L167-L270) [.github/workflows/ci.yml#L273-L305](https://github.com/prisma/prisma/blob/dd867230cd8fe08d203b395999f20b4e717fe10b/.github/workflows/ci.yml#L273-L305)
- Integration tests are sharded 1/4 through 4/4 via pnpm test:integration --shard. The job comment says that until about 2026-08-21 they do not run on merge_group, still run on every PR, and also run nightly from integration-nightly.yml. E2E runs pnpm test:e2e against postgres:15 unless the diff is inert. — [.github/workflows/ci.yml#L318-L388](https://github.com/prisma/prisma/blob/dd867230cd8fe08d203b395999f20b4e717fe10b/.github/workflows/ci.yml#L318-L388)
- A supabase-acceptance job (timeout 25 minutes) installs a pinned Supabase CLI 2.95.4 by checksummed tarball and starts a local stack from examples/supabase so role, grant, and JWT behavior is tested against real Supabase defaults, not only a hermetic shim. — [.github/workflows/ci.yml#L390-L435](https://github.com/prisma/prisma/blob/dd867230cd8fe08d203b395999f20b4e717fe10b/.github/workflows/ci.yml#L390-L435)
- pnpm fixtures:check runs fixtures:emit (examples, selected apps, sql-builder, sql-orm-client, postgres, extension-supabase, e2e-tests, integration-tests, plus extension contract spaces and migration regen) and then git diff --exit-code on **/contract.* and **/expected.contract.json. — [package.json#L57-L60](https://github.com/prisma/prisma/blob/dd867230cd8fe08d203b395999f20b4e717fe10b/package.json#L57-L60)
- pnpm test:scripts runs node --test on dozens of scripts/*.test.mjs and scripts/*.test.ts files (coverage, workflow triggers, publish deps, casts, skills, package manifests). That is the Node test runner, not Vitest. — [package.json#L50](https://github.com/prisma/prisma/blob/dd867230cd8fe08d203b395999f20b4e717fe10b/package.json#L50)
- scorecard.md defines ✅ as proven by a Prisma 8 integration test that hits Postgres (PGlite), SQLite, or MongoDB (mongodb-memory-server) and asserts a runtime result. Unit tests of SQL, AST, plans, or types do not qualify. 🟡 means the public surface is reachable but no such integration test exists. Categories include 123 migration rows and 32 CLI-command rows. — [scorecard.md#L1-L39](https://github.com/prisma/prisma/blob/dd867230cd8fe08d203b395999f20b4e717fe10b/scorecard.md#L1-L39)

Every claim links to its cited files at the pinned commit. Citations identify source evidence; they do not establish runtime correctness. Independent CodeVetter scan — not reviewed by upstream maintainers.

## Public product links

- [CodeVetter](https://codevetter.com/)
- [Download](https://codevetter.com/download)
- [Documentation](https://codevetter.com/docs/)
- [Source](https://github.com/Codevetter/codevetter)
