Skip to content

[Reference] test: arbitrary changes to 20 isolated source+test files#111110

Closed
JoshuaKGoldberg wants to merge 5 commits intomasterfrom
frontend-jest-ci-changed-since-20-low-interconnect
Closed

[Reference] test: arbitrary changes to 20 isolated source+test files#111110
JoshuaKGoldberg wants to merge 5 commits intomasterfrom
frontend-jest-ci-changed-since-20-low-interconnect

Conversation

@JoshuaKGoldberg
Copy link
Copy Markdown
Member

@JoshuaKGoldberg JoshuaKGoldberg commented Mar 19, 2026

Verifying #110568 works for: 20 sources and 20 tests (low interconnectivity — settings pages, uptime assertions).

  • Jest (0): 1 skipped, 2714 passed, 2715 total
  • Jest (1): 6 skipped, 1 todo, 2599 passed, 2606 total
  • Jest (2): 2 skipped, 2752 passed, 2754 total
  • Jest (3): 3269 passed, 3269 total
  • Total: 11,344 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 changed the title test: arbitrary changes to 20 isolated source+test files [Reference] test: arbitrary changes to 20 isolated source+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-20-low-interconnect branch 2 times, most recently from dee2c24 to 739e1ff Compare March 25, 2026 16:55
@JoshuaKGoldberg JoshuaKGoldberg force-pushed the frontend-jest-ci-changed-since-20-low-interconnect branch from 739e1ff to 3ef27ba Compare March 25, 2026 21:45
@JoshuaKGoldberg JoshuaKGoldberg changed the title [Reference] test: arbitrary changes to 20 isolated source+test files [Reference] test: arbitrary changes to 19 isolated + 1 medium-connected source+test files Mar 25, 2026
@JoshuaKGoldberg JoshuaKGoldberg changed the title [Reference] test: arbitrary changes to 19 isolated + 1 medium-connected source+test files [Reference] test: arbitrary changes to 20 isolated source+test files Mar 26, 2026
@JoshuaKGoldberg JoshuaKGoldberg force-pushed the frontend-jest-ci-changed-since-20-low-interconnect branch from 3ef27ba to 1882d7d Compare March 26, 2026 17:31
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-20-low-interconnect branch from 1882d7d to d8243ee 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