# Testing signals — react/create-react-app

> Canonical page: https://codevetter.com/unpack/create-react-app/testing-signals

# Testing signals — react/create-react-app

Scanned commit 6254386531d263688ccfa542d0e628fbc0de0b28 (2025-02-14). Generated by codevetter codevetter 1.12.0 on 2026-09-22.

Tests are split across package-level Jest unit tests and a fixture integration suite under test/ that builds real apps with the local react-scripts. The root test script runs tasks/e2e-simple.sh; full behavior coverage is tasks/e2e-behavior.sh and tasks/e2e-docker.sh. GitHub Actions runs these on pull requests. Unit tests use Jest; a few packages still mention Flow. There is no Cypress/Playwright app suite — e2e here means CLI integration against webpack builds. Coverage of the dev server, eject, and the docs site is thin compared with the fixture build matrix.
- Root package.json test script is node tasks/e2e-simple.sh. The e2e script is node tasks/e2e-simple.sh && node tasks/e2e-behavior.sh. e2e:docker is node tasks/e2e-docker.sh. There is no root jest.config; each package runs Jest via its own npm test or via the integration runner. — [package.json#L40-80](https://github.com/react/create-react-app/blob/6254386531d263688ccfa542d0e628fbc0de0b28/package.json#L40-L80) [tasks/e2e-simple.sh#L1-40](https://github.com/react/create-react-app/blob/6254386531d263688ccfa542d0e628fbc0de0b28/tasks/e2e-simple.sh#L1-L40)
- react-dev-utils tests live in packages/react-dev-utils/__tests__ and cover WebpackDevServerUtils, formatWebpackMessages, ModuleScopePlugin, and browsersHelper-style helpers. The package test script is jest. — [packages/react-dev-utils/package.json#L1-30](https://github.com/react/create-react-app/blob/6254386531d263688ccfa542d0e628fbc0de0b28/packages/react-dev-utils/package.json#L1-L30)
- babel-plugin-named-asset-import and confusing-browser-globals each expose an npm test script (Jest or node test runner as declared). babel-preset-react-app fixtures under its package test directory compile sample files with the preset and snapshot or assert output. — [packages/babel-plugin-named-asset-import/package.json#L1-25](https://github.com/react/create-react-app/blob/6254386531d263688ccfa542d0e628fbc0de0b28/packages/babel-plugin-named-asset-import/package.json#L1-L25) [packages/confusing-browser-globals/package.json#L1-25](https://github.com/react/create-react-app/blob/6254386531d263688ccfa542d0e628fbc0de0b28/packages/confusing-browser-globals/package.json#L1-L25) [packages/babel-preset-react-app/package.json#L1-30](https://github.com/react/create-react-app/blob/6254386531d263688ccfa542d0e628fbc0de0b28/packages/babel-preset-react-app/package.json#L1-L30)
- react-error-overlay has its own Jest + jsdom setup and a webpack build (build, build:prod). Tests render the overlay iframe and stack-frame parser. A Flow annotation path remains (npm run flow) even though most of the repo is plain JS. — [packages/react-error-overlay/package.json#L1-40](https://github.com/react/create-react-app/blob/6254386531d263688ccfa542d0e628fbc0de0b28/packages/react-error-overlay/package.json#L1-L40)
- Template unit test App.test.js only asserts that the learn-react link renders. It does not cover index.js boot, web-vitals, or CSS. The kitchen-sink behavior of webpack loaders is instead covered by test/fixtures compiled during e2e. — [packages/cra-template/template/src/App.test.js#L1-20](https://github.com/react/create-react-app/blob/6254386531d263688ccfa542d0e628fbc0de0b28/packages/cra-template/template/src/App.test.js#L1-L20) [test/fixtures/typescript-advanced/src/App.tsx#L1-40](https://github.com/react/create-react-app/blob/6254386531d263688ccfa542d0e628fbc0de0b28/test/fixtures/typescript-advanced/src/App.tsx#L1-L40)
- GitHub Actions build-and-test.yml checks out the repo, sets up Node, enables corepack/yarn, installs, and builds the local tarballs via tasks/build.js style steps before e2e. e2e-base.yml is a reusable workflow_call so the docker e2e job can share steps. lint.yml runs the eslint script. — [.github/workflows/build-and-test.yml#L1-120](https://github.com/react/create-react-app/blob/6254386531d263688ccfa542d0e628fbc0de0b28/.github/workflows/build-and-test.yml#L1-L120) [.github/workflows/e2e-base.yml#L1-80](https://github.com/react/create-react-app/blob/6254386531d263688ccfa542d0e628fbc0de0b28/.github/workflows/e2e-base.yml#L1-L80) [.github/workflows/lint.yml#L1-50](https://github.com/react/create-react-app/blob/6254386531d263688ccfa542d0e628fbc0de0b28/.github/workflows/lint.yml#L1-L50)
- eslint is a first-class check: root script eslint runs on packages and tasks. .eslintrc.json extends the local eslint-config-react-app (or a root config that points at it) and prettier is enforced via .prettierrc. The format script writes; CI lint does not auto-fix. — [.eslintrc.json#L1-40](https://github.com/react/create-react-app/blob/6254386531d263688ccfa542d0e628fbc0de0b28/.eslintrc.json#L1-L40) [.prettierrc#L1-20](https://github.com/react/create-react-app/blob/6254386531d263688ccfa542d0e628fbc0de0b28/.prettierrc#L1-L20) [package.json#L40-70](https://github.com/react/create-react-app/blob/6254386531d263688ccfa542d0e628fbc0de0b28/package.json#L40-L70)
- What is lightly tested: eject.js has historical integration coverage but is not part of e2e-simple's critical path; the Docusaurus site has no automated visual or link test in the workflows read; WebpackDevServer HTTPS, proxy, and host-check branches are mostly untested outside manual QA; react-app-polyfill has no behavioral browser matrix in CI. (inferred) — [tasks/e2e-simple.sh#L1-80](https://github.com/react/create-react-app/blob/6254386531d263688ccfa542d0e628fbc0de0b28/tasks/e2e-simple.sh#L1-L80) [.github/workflows/build-and-test.yml#L1-100](https://github.com/react/create-react-app/blob/6254386531d263688ccfa542d0e628fbc0de0b28/.github/workflows/build-and-test.yml#L1-L100) [packages/react-scripts/scripts/eject.js#L1-40](https://github.com/react/create-react-app/blob/6254386531d263688ccfa542d0e628fbc0de0b28/packages/react-scripts/scripts/eject.js#L1-L40)

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)
