Skip to content

[Reference] test: arbitrary changes to 4 source files and 6 test files#111076

Closed
JoshuaKGoldberg wants to merge 5 commits intomasterfrom
frontend-jest-ci-changed-since-many-sources-and-tests
Closed

[Reference] test: arbitrary changes to 4 source files and 6 test files#111076
JoshuaKGoldberg wants to merge 5 commits intomasterfrom
frontend-jest-ci-changed-since-many-sources-and-tests

Conversation

@JoshuaKGoldberg
Copy link
Copy Markdown
Member

@JoshuaKGoldberg JoshuaKGoldberg commented Mar 19, 2026

Verifying #110568 works for: many sources and tests.

  • Jest (0): 6 skipped, 127 passed, 133 total
  • Jest (1): No tests found, exiting with code 0
  • Jest (2): No tests found, exiting with code 0
  • Jest (3): No tests found, exiting with code 0
  • Total: 133 tests out of 14,640

@github-actions github-actions bot added the Scope: Frontend Automatically applied to PRs that change frontend components label Mar 19, 2026
@JoshuaKGoldberg JoshuaKGoldberg force-pushed the frontend-jest-ci-changed-since branch from 9e2e96f to bfb60f9 Compare March 19, 2026 14:47
@JoshuaKGoldberg JoshuaKGoldberg force-pushed the frontend-jest-ci-changed-since-many-sources-and-tests branch from 778664c to 1512313 Compare March 19, 2026 14:47
@JoshuaKGoldberg JoshuaKGoldberg force-pushed the frontend-jest-ci-changed-since branch from bfb60f9 to ad17db8 Compare March 19, 2026 15:06
@JoshuaKGoldberg JoshuaKGoldberg force-pushed the frontend-jest-ci-changed-since-many-sources-and-tests branch from 1512313 to 8ab276f Compare March 19, 2026 15:07
@JoshuaKGoldberg JoshuaKGoldberg force-pushed the frontend-jest-ci-changed-since branch from ad17db8 to 33ec412 Compare March 19, 2026 15:15
@JoshuaKGoldberg JoshuaKGoldberg force-pushed the frontend-jest-ci-changed-since-many-sources-and-tests branch from 8ab276f to f0fd5bb Compare March 19, 2026 15:15
@JoshuaKGoldberg JoshuaKGoldberg force-pushed the frontend-jest-ci-changed-since branch from 33ec412 to a7801c2 Compare March 19, 2026 17:04
@JoshuaKGoldberg JoshuaKGoldberg force-pushed the frontend-jest-ci-changed-since-many-sources-and-tests branch from f0fd5bb to 4e33eb2 Compare March 19, 2026 17:06
@JoshuaKGoldberg JoshuaKGoldberg force-pushed the frontend-jest-ci-changed-since branch from a7801c2 to 1d52432 Compare March 19, 2026 17:19
@JoshuaKGoldberg JoshuaKGoldberg force-pushed the frontend-jest-ci-changed-since-many-sources-and-tests branch from 4e33eb2 to 0552aee Compare March 19, 2026 17:19
@JoshuaKGoldberg JoshuaKGoldberg changed the title test: arbitrary changes to 4 source files and 6 test files [Reference] test: arbitrary changes to 4 source files and 6 test files Mar 19, 2026
@JoshuaKGoldberg JoshuaKGoldberg force-pushed the frontend-jest-ci-changed-since branch from 1d52432 to 6138aa6 Compare March 25, 2026 16:36
@JoshuaKGoldberg JoshuaKGoldberg force-pushed the frontend-jest-ci-changed-since-many-sources-and-tests branch 2 times, most recently from 938ee1c to a1520ae Compare March 25, 2026 16:55
The git diff for the non-frontend file guard was comparing against HEAD
(the synthetic merge commit) instead of HEAD^2 (the PR branch tip).
This included base branch changes in the diff, causing false positives
that unnecessarily forced full test runs.

Made-with: Cursor
@JoshuaKGoldberg JoshuaKGoldberg force-pushed the frontend-jest-ci-changed-since branch from 14d8c0e to 5c9ae7e Compare March 26, 2026 20:13
@JoshuaKGoldberg JoshuaKGoldberg force-pushed the frontend-jest-ci-changed-since-many-sources-and-tests branch from a1520ae to 2b15279 Compare March 26, 2026 20:17
JoshuaKGoldberg added a commit that referenced this pull request Mar 30, 2026
_"Why run many unit test when few do trick?"_ – Kevin Malone, Senior
Frontend Developer

Changes the Frontend > Jest jobs to use Jest's [`--changedSince`
option](https://jestjs.io/docs/cli#--changedsince) when possible. That
has them only run test suites that are impacted by the changes in a PR
based on the module dependency graph. Jest requires the commit history
since the base commit, so this adds a second _"run only necessary Jest
tests"_ flow in `frontend-optional.yml`. Specifically, that:

1. Increases the frontend-optional fetch-depth in PRs to `100`, which
should get most PRs' commits pretty quickly
2. Tries to compute a `MERGE_BASE` using `git merge-base`
* Note that this also clears `MERGE_BASE` if the PR touches any
non-`static/` files.
3. If `MERGE_BASE` could be computed, passes it as a process env var to
test scripts for use as Jest's `changedSince`
* If `MERGE_BASE` couldn't be computed, the new _"run only necessary
Jest tests"_ flow is skipped

My plan (thanks to reviewer feedback) is to keep this running as a
secondary, optional test flow on `master` for a couple weeks. If all
seems well, we can remove the original _"run all Jest tests"_ logic and
only run the _"run only necessary Jest tests"_ logic.

The following PRs exercise different scales of changes:

| PR | Source Files | Test Files | Interconnectivity | Ran Suites | /
1,881 suites |
|---|---|---|---|---|---|
| [#110624](#110624) | 0 | 1 |
⬜️ None | 1 | 0.05% |
| [#111073](#111073) | 0 | 6 |
⬜️ None | 6 | 0.32% |
| [#111122](#111122) | 0 | 100 |
⬜️ None | 100 | 5.3% |
| [#111074](#111074) | 1 | 0 | 🟦
Low | 5 | 0.27% |
| [#111075](#111075) | 4 | 0 | 🟦
Low | 7 | 0.37% |
| [#111076](#111076) | 3 | 3 | 🟦
Low | 13 | 0.69% |
| [#111110](#111110) | 20 | 20 |
🟦 Low | 74 | 3.9% |
| [#111111](#111111) | 100 | 100
| 🟦 Low | 196 | 10.4% |
| [#111119](#111119) | 1 | 1 | 🟨
Medium | 30 | 1.6% |
| [#111628](#111628) | 3 | 3 | 🟨
Medium | 78 | 4.1% |
| [#111629](#111629) | 10 | 10 |
🟨 Medium | 167 | 8.9% |
| [#111633](#111633) | 25 | 25 |
🟨 Medium | 227 | 12.1% |
| [#111652](#111652) | 100 | 100
| 🟨 Medium | 549 | 29.2% |
| [#111115](#111115) | 3 | 3 | 🟧
High | 1,652 | 87.8% |
| [#111083](#111083) | 20 | 20 |
🟧 High | 1,660 | 88.3% |
| [#111086](#111086) | 100 | 100
| 🟧 High | 1,721 | 91.5% |
| [#110568](#110568) | 0 | 0 | 🟥
Config (Full) | 1,881 | 100% |

For low-connectivity changes (isolated components, feature-specific
views), `--changedSince` provides pretty great savings: even 100
low-connectivity files only trigger ~10% of suites. Medium-connectivity
files still scale pretty well, with 100 files hitting ~29%.
High-connectivity files (widely-imported utils, core components) sadly
trigger 85-90% of suites, which is inevitable given Sentry's highly
connected module graph.

Fixes ENG-7103
Base automatically changed from frontend-jest-ci-changed-since to master March 30, 2026 14:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Scope: Frontend Automatically applied to PRs that change frontend components

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant