CodeVetter · Repo Unpack · Testing signals
react/create-react-app
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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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)