# Testing signals — strapi/strapi

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

# Testing signals — strapi/strapi

Scanned commit 93476f908c08d6d3d5215c06483829e3c6da1b32 (2026-10-02). Generated by codevetter codevetter 1.15.0 on 2026-10-02.

Source inspection; upstream code and tests were not executed.

Tests and CI were inspected, not executed; test existence does not establish a passing result. Jest remains central, with separate Vitest projects and Playwright browser suites. Inspected API tests assert persisted document behavior, while authentication unit tests use mocked database/session dependencies. CI configuration shows conditional execution, multiple runtime/database targets, and explicit browser-coverage limitations; no comprehensive coverage measurement was performed.
- The Jest unit preset selects __tests__ files, transforms through SWC, excludes .vitest.test.ts, and disables coverage unless requested. Core's Jest config specializes discovery to *.test.ts. — [jest-preset.unit.js#L3-24](https://github.com/strapi/strapi/blob/93476f908c08d6d3d5215c06483829e3c6da1b32/jest-preset.unit.js#L3-L24) [packages/core/core/jest.config.js#L3-9](https://github.com/strapi/strapi/blob/93476f908c08d6d3d5215c06483829e3c6da1b32/packages/core/core/jest.config.js#L3-L9)
- Vitest has a root project aggregator and a core package config merged with the shared unit preset. CI invokes yarn test:unit:vitest separately from Nx/Jest unit tests, so these are distinct inspected test lanes. — [vitest.config.ts#L1-7](https://github.com/strapi/strapi/blob/93476f908c08d6d3d5215c06483829e3c6da1b32/vitest.config.ts#L1-L7) [packages/core/core/vitest.config.ts#L1-11](https://github.com/strapi/strapi/blob/93476f908c08d6d3d5215c06483829e3c6da1b32/packages/core/core/vitest.config.ts#L1-L11) [.github/workflows/tests.yml#L210-228](https://github.com/strapi/strapi/blob/93476f908c08d6d3d5215c06483829e3c6da1b32/.github/workflows/tests.yml#L210-L228)
- API tests use Jest's Node environment and *.api.js/ts discovery. Inspected create tests build fixtures, call strapi.documents, and check database row count, default/explicit locales, draft status, published creation, and ignored caller-supplied publishedAt. — [jest.config.api.js#L3-7](https://github.com/strapi/strapi/blob/93476f908c08d6d3d5215c06483829e3c6da1b32/jest.config.api.js#L3-L7) [tests/api/core/strapi/document-service/create.test.api.ts#L25-114](https://github.com/strapi/strapi/blob/93476f908c08d6d3d5215c06483829e3c6da1b32/tests/api/core/strapi/document-service/create.test.api.ts#L25-L114)
- Inspected publish API tests assert creator-field presence, equal draft/published locale counts, and no extra published variants after publishing twice. These source assertions cover selected variant persistence properties, but were not run during this investigation. — [tests/api/core/strapi/document-service/publish.test.api.ts#L26-105](https://github.com/strapi/strapi/blob/93476f908c08d6d3d5215c06483829e3c6da1b32/tests/api/core/strapi/document-service/publish.test.api.ts#L26-L105)
- JWT tests mock configuration, session manager, and database calls, exercising refresh issuance and error cases. Auth-session controller tests assert refresh-only availability, authentication requirements, and sanitized/current-session output; these mocks do not themselves validate real cookie transport or database integration. — [packages/plugins/users-permissions/server/src/services/__tests__/jwt.test.js#L17-99](https://github.com/strapi/strapi/blob/93476f908c08d6d3d5215c06483829e3c6da1b32/packages/plugins/users-permissions/server/src/services/__tests__/jwt.test.js#L17-L99) [packages/plugins/users-permissions/server/src/controllers/__tests__/auth-sessions.test.js#L21-125](https://github.com/strapi/strapi/blob/93476f908c08d6d3d5215c06483829e3c6da1b32/packages/plugins/users-permissions/server/src/controllers/__tests__/auth-sessions.test.js#L21-L125)
- Frontend Jest uses admin-test-utils setup/environment and SWC transforms. Playwright create-content specs reset/import fixtures, log in, save/publish content, and reorder components; base configuration uses one worker, CI retries, and trace capture on first retry. — [jest-preset.front.js#L23-38](https://github.com/strapi/strapi/blob/93476f908c08d6d3d5215c06483829e3c6da1b32/jest-preset.front.js#L23-L38) [tests/e2e/tests/content-manager/create-content.spec.ts#L13-86](https://github.com/strapi/strapi/blob/93476f908c08d6d3d5215c06483829e3c6da1b32/tests/e2e/tests/content-manager/create-content.spec.ts#L13-L86) [playwright.base.config.js#L71-107](https://github.com/strapi/strapi/blob/93476f908c08d6d3d5215c06483829e3c6da1b32/playwright.base.config.js#L71-L107)
- CI builds on Node 22/24/26, uses path-filter outputs and Nx affected targets for selected checks, and defines sharded PostgreSQL/MySQL API jobs. These workflow definitions were inspected rather than executed or checked against run history. — [.github/workflows/tests.yml#L25-65](https://github.com/strapi/strapi/blob/93476f908c08d6d3d5215c06483829e3c6da1b32/.github/workflows/tests.yml#L25-L65) [.github/workflows/tests.yml#L175-198](https://github.com/strapi/strapi/blob/93476f908c08d6d3d5215c06483829e3c6da1b32/.github/workflows/tests.yml#L175-L198) [.github/workflows/tests.yml#L566-575](https://github.com/strapi/strapi/blob/93476f908c08d6d3d5215c06483829e3c6da1b32/.github/workflows/tests.yml#L566-L575) [.github/workflows/tests.yml#L607-616](https://github.com/strapi/strapi/blob/93476f908c08d6d3d5215c06483829e3c6da1b32/.github/workflows/tests.yml#L607-L616) [.github/filters.yaml#L3-25](https://github.com/strapi/strapi/blob/93476f908c08d6d3d5215c06483829e3c6da1b32/.github/filters.yaml#L3-L25)
- Shared CE E2E jobs span Chromium/WebKit/Firefox, but current and legacy media-library jobs explicitly select Chromium. Workflow comments identify WebKit drag/drop helper limitations, unknown Firefox media-suite behavior, and parked folder drag/drop specs; raw E2E failure handling also depends on the Trunk upload outcome. — [.github/workflows/tests.yml#L270-316](https://github.com/strapi/strapi/blob/93476f908c08d6d3d5215c06483829e3c6da1b32/.github/workflows/tests.yml#L270-L316) [.github/workflows/tests.yml#L318-368](https://github.com/strapi/strapi/blob/93476f908c08d6d3d5215c06483829e3c6da1b32/.github/workflows/tests.yml#L318-L368) [.github/workflows/tests.yml#L392-423](https://github.com/strapi/strapi/blob/93476f908c08d6d3d5215c06483829e3c6da1b32/.github/workflows/tests.yml#L392-L423)

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)
