# Testing signals — evanw/esbuild

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

# Testing signals — evanw/esbuild

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

Go tests use the standard testing package and cover cmd, internal, and pkg. Bundler expectations are snapshot files updated with UPDATE_SNAPSHOTS=1. A second layer of Node scripts drives the real binary, the JS API, plugins, source maps, and WASM. CI splits fast race tests, slow compatibility suites, an old Go 1.13 job, tag validation, and a 6-hour install matrix. There is no separate browser product to test; React in scripts is a fixture dependency.
- make test runs test-common in parallel: test-go, vet-go, no-filepath, verify-source-map, end-to-end-tests, js-api-tests, plugin-tests, register-test, node-unref-tests, and decorator-tests. test-go is go test ./cmd/... ./internal/... ./pkg/... and does not pass -race unless ESBUILD_RACE is set. — [docs/development.md#L13-L17](https://github.com/evanw/esbuild/blob/f6058f8364fe7ab91ca57a83e02577ed74c9cae4/docs/development.md#L13-L17) [Makefile#L19-L50](https://github.com/evanw/esbuild/blob/f6058f8364fe7ab91ca57a83e02577ed74c9cae4/Makefile#L19-L50)
- CI job esbuild on ubuntu, macos, and windows runs go test -race, go vet, npm ci in scripts, register-test, verify-source-map, end-to-end-tests.js, js-api-tests.js, node-unref-tests.js, and plugin-tests.js. Ubuntu also runs no-filepath, ts-type-tests, lib-typecheck, decorator-tests, both WASM targets, sucrase, esprima, preact splitting, unicode table generation, and Yarn PnP. — [.github/workflows/ci.yml#L88-L214](https://github.com/evanw/esbuild/blob/f6058f8364fe7ab91ca57a83e02577ed74c9cae4/.github/workflows/ci.yml#L88-L214)
- Bundler tests in internal/bundler_tests compare against snapshots/*.txt. The header says to regenerate with UPDATE_SNAPSHOTS=1 make test and inspect the diff. expectBundled runs each case on fs.MockUnix and again with Windows path conversion. — [internal/bundler_tests/bundler_test.go#L1-L7](https://github.com/evanw/esbuild/blob/f6058f8364fe7ab91ca57a83e02577ed74c9cae4/internal/bundler_tests/bundler_test.go#L1-L7) [internal/bundler_tests/bundler_test.go#L72-L80](https://github.com/evanw/esbuild/blob/f6058f8364fe7ab91ca57a83e02577ed74c9cae4/internal/bundler_tests/bundler_test.go#L72-L80)
- Snapshot files exist for css, dce, default, glob, importphase, importstar, loader, lower, packagejson, splitting, ts, tsconfig, and yarnpnp. Separate Go tests exist for the lexer, parser, printer, css parser, compat, resolver yarnpnp, runtime, logger, and pkg/api. — [internal/bundler_tests/bundler_test.go#L1-L7](https://github.com/evanw/esbuild/blob/f6058f8364fe7ab91ca57a83e02577ed74c9cae4/internal/bundler_tests/bundler_test.go#L1-L7)
- The slow CI job uses Node 16 because a comment says WASM tests break on Node 18, and runs make test-rollup, CI=1 make uglify, make test-tsc, make test-old-ts, plus GOOS=plan9 builds for 386, amd64, and arm. — [.github/workflows/ci.yml#L42-L84](https://github.com/evanw/esbuild/blob/f6058f8364fe7ab91ca57a83e02577ed74c9cae4/.github/workflows/ci.yml#L42-L84)
- A dedicated job installs Go 1.13, the minimum declared in go.mod, to prove the tree still builds on that compiler. check-go-version in the Makefile requires the go.version toolchain for release tasks. — [.github/workflows/ci.yml#L216-L228](https://github.com/evanw/esbuild/blob/f6058f8364fe7ab91ca57a83e02577ed74c9cae4/.github/workflows/ci.yml#L216-L228) [Makefile#L29-L30](https://github.com/evanw/esbuild/blob/f6058f8364fe7ab91ca57a83e02577ed74c9cae4/Makefile#L29-L30) [go.mod#L3-L5](https://github.com/evanw/esbuild/blob/f6058f8364fe7ab91ca57a83e02577ed74c9cae4/go.mod#L3-L5)
- scripts/register-test.js writes a temporary require.extensions['.ts'] hook that calls transformSync with loader ts, then runs node -r register on an entry.ts. It is not a published register package; it is a regression test for that pattern. — [scripts/register-test.js#L1-L40](https://github.com/evanw/esbuild/blob/f6058f8364fe7ab91ca57a83e02577ed74c9cae4/scripts/register-test.js#L1-L40)
- decorator-tests compiles scripts/decorator-tests.ts with the built esbuild at --target=es2022 and fails if git diff shows the checked-in JS changed. The Makefile says the source of those tests is github.com/evanw/decorator-tests. — [Makefile#L113-L121](https://github.com/evanw/esbuild/blob/f6058f8364fe7ab91ca57a83e02577ed74c9cae4/Makefile#L113-L121)
- make test-all adds ts-type-tests, test-wasm-node, test-wasm-browser, lib-typecheck, and test-yarnpnp on top of test-common. test-wasm-node runs go test ./internal/... with GOOS=js GOARCH=wasm and then node scripts/wasm-tests.js. — [Makefile#L25-L27](https://github.com/evanw/esbuild/blob/f6058f8364fe7ab91ca57a83e02577ed74c9cae4/Makefile#L25-L27) [Makefile#L94-L99](https://github.com/evanw/esbuild/blob/f6058f8364fe7ab91ca57a83e02577ed74c9cae4/Makefile#L94-L99)
- e2e.yml every 6 hours runs make test-e2e-npm, test-e2e-pnpm, test-e2e-yarn, and test-e2e-yarn-berry against the published esbuild package, including --ignore-scripts and --no-optional install paths. — [.github/workflows/e2e.yml#L1-L41](https://github.com/evanw/esbuild/blob/f6058f8364fe7ab91ca57a83e02577ed74c9cae4/.github/workflows/e2e.yml#L1-L41) [Makefile#L153-L178](https://github.com/evanw/esbuild/blob/f6058f8364fe7ab91ca57a83e02577ed74c9cae4/Makefile#L153-L178)
- compat-table/package.json vendors compat-table at commit 8f4179ff, plus @mdn/browser-compat-data and caniuse-lite, which feed the engine support tables under internal/compat. Those generated tables are not executed as unit tests by themselves. — [compat-table/package.json#L1-L10](https://github.com/evanw/esbuild/blob/f6058f8364fe7ab91ca57a83e02577ed74c9cae4/compat-table/package.json#L1-L10) [internal/compat/compat.go#L1-L16](https://github.com/evanw/esbuild/blob/f6058f8364fe7ab91ca57a83e02577ed74c9cae4/internal/compat/compat.go#L1-L16)
- lib-typecheck runs tsc -noEmit on lib/tsconfig.json and lib/tsconfig-nolib.json. The published .d.ts surface is lib/shared/types.ts, copied into the npm package as lib/main.d.ts. — [Makefile#L145-L151](https://github.com/evanw/esbuild/blob/f6058f8364fe7ab91ca57a83e02577ed74c9cae4/Makefile#L145-L151) [lib/package.json#L1-L6](https://github.com/evanw/esbuild/blob/f6058f8364fe7ab91ca57a83e02577ed74c9cae4/lib/package.json#L1-L6) [npm/esbuild/package.json#L12-L13](https://github.com/evanw/esbuild/blob/f6058f8364fe7ab91ca57a83e02577ed74c9cae4/npm/esbuild/package.json#L12-L13)

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)
