Deploy June 17, 2026#1054
Merged
Merged
Conversation
…e differently (#926) * Add autocomplete component fix tests fix multiple select revision checkbox Fix Snackbar, fetchRevisionBySearch and fetchRevisionbyID test Update SearchInputAndResult to theme.palette Rename AutocompleteInput and AutocompleteOption Remove SearchResultsList and SearchResultsListItem Fix input field for new remains populated after a revision is selected * Update snapshots * Fix failig tests in fetchRevisionsBySearch * Fix test converage
fix: remove raptor framework
…inal order (#1046) style scatter strip: swap Base/New rows, add labelled baselines, larger markers, dark-mode-aware tick text
… CommonGraph (#1045) * add client-side mode-detection helpers to kde.js (ported from kde-widget) * wire client-side mode detection into CommonGraph: valley-depth slider, mode-line overlays, peak labels (ported from kde-widget) * add tests for scatter tooltip and y-axis label formatters in CommonGraph * add checkbox to toggle mode-detection overlay * memoize vt-independent analysis so slider drags don't re-run KDE or reshuffle scatter jitter * extract mode detection into its own memo so it doesn't recompute on theme, unit, or showModes changes Add clarifying comment to unused kde code. * add tests for slider wiring, disabled state, and show-modes checkbox in CommonGraph bump codecov circleci orb 3.2.2 → 5.4.3 to fix GPG key validation failure * bump codecov orb to 6.0.0 — v5 still points at the retired keybase profile * name mode overlays after their parent series so the legend toggles them together
subtest alignment: cap subtest name width, stretch chevron cell full-height - Max-width on subtest names in the subtests-page row so long names wrap rather than push other cells off-grid. - alignSelf: 'stretch' on the chevron cell's Box so its white background fills the full row height edge-to-edge (the grid container's alignItems: 'center' previously sized each cell to content, leaving row tint visible above and below the chevron). - Snapshot updates for both changes.
⬆️ Update all npm dependencies (2026-06-11) Co-authored-by: depfu[bot] <23717796+depfu[bot]@users.noreply.github.com>
…l time modes memo used `vt` (the prop, only updated on mouse release) so mode lines only jumped when the user let go of the slider, making it look broken. Switch to `localVt` (the live slider state) so the mode overlay lines update on every drag pixel. fitModesFromKde is cheap (peak-finding on a pre-computed 1024-point grid) so running it continuously is fine.
…abels Labels like "Base A: 2590264 (48%)" are about 20 chars wide, which at typical font sizes is ~20% of the chart width — wider than the previous 13% threshold used to decide when to bump a label to a higher stagger level. Raise to 20%. Also make the chart height and KDE/scatter grid positions dynamic: each additional stagger level adds LABEL_ROW_PX (16 px) to the top margin and grows the container by the same amount, so labels never clip.
See the commit description, they are mostly cosmetic. This is based on @kala-moz's branch.
gaussianPracticalSupport previously used brentq to find where the Gaussian kernel drops to atol. For large bandwidths (bw > ~3989) the kernel peak is already below atol everywhere, so no root exists and brentq threw. Replace with an analytical solution; when the kernel is too wide fall back to 3σ so the convolution still produces a smooth curve. silvermansRule returned a hardcoded bw=1 for zero-variance data (all values identical), which is far too narrow for large-valued metrics like memory bytes. Use 0.1% of the data mean instead, giving a visible spike. Same fix in approximateSJBandwidth. Also wrap the Silverman fallback in safeKde in its own try/catch so a failure there returns null rather than crashing the component.
The previous percentile bootstrap (1000 resamples) does not correct for bias or skewness in the bootstrap distribution, which is common in performance data. Switch to BCa (bias-corrected and accelerated) bootstrap, matching scipy.stats.bootstrap(..., method='BCa', paired=False): - z0: bias-correction factor from the proportion of bootstrap samples below the observed statistic - a: acceleration from leave-one-out jackknife on both samples Increase nIter from 1000 to 9999, which is standard for BCa to give stable jackknife-based acceleration estimates. Implements erf, normalCDF, and normalPPF (Acklam rational approx, max error 1.15e-9) with no external dependencies.
Add getDisplayScale() which picks the best human-readable divisor and label for bytes (B/KB/MB/GB), KB (KB/MB/GB), and ms (ms/s/min) based on the magnitude of the values being displayed. Add adaptUnit() which wraps getDisplayScale() to return a sign-prefixed formatting function suitable for delta values (CI bounds, median diffs).
The unit in the CI summary line was hardcoded to "ms". Use the measurement unit from the API response instead, and scale it to the most readable sub-unit via adaptUnit() — so a memory result shows "-63.0 KB" rather than "-64512.0 ms". Replace the "not significant" suffix (which confused users when the p-value said significant but the CI straddled zero) with a targeted warning only when the CI crosses zero: "⚠ interval includes zero — effect direction uncertain".
Shared bandwidth: pre-compute bandwidths in a separate memo (approxSJ for top-level results, ISJ with silverman fallback for subtests) and use max(baseBw, newBw) for both curves so they are directly comparable. Axis bounds: derive min/max from the KDE grid extent rather than multiplying raw values by 0.95/1.05. The KDE grid is already padded by gaussianPracticalSupport(bw), so it scales correctly regardless of value magnitude. For near-constant data (range < 1% of midpoint) enforce a minimum axis range so ticks remain readable. Bandwidth slider: when bw/dataRange > 0.5 the KDE is genuinely flat; show a slider so users can dial the smoothing multiplier down to reveal structure. Unit-scaled axis: use getDisplayScale() on the axis bounds to pick KB/MB/GB for bytes data and s/min for ms data, applied consistently to tick labels, axis name, and tooltips.
Reviewer asked for a relative percentage alongside the absolute diff. Computes base median inline (proper even-length average), then formats as (+X.X%) / (-X.X%) next to the absolute value.
- bump ms decimals from 1 to 2 in getDisplayScale; values like 5.03ms now display as 5.03 rather than 5.0 - use decimals:2 fallback for unknown units - remove dead top-level tickFormatter made unused by the memo split - drop unnecessary type assertions flagged by no-unnecessary-type-assertion - update test expectations: ms tooltip/tick values use 2dp; Silverman fallback test triggers on numeric-bw throw; axis tick formatter test updated for toFixed(decimals) behavior
… measuring time. (#1050) If the numbers are large (e.g. we're measuring gigabytes), the math would just break -- this is what the first commit fixes. The second commit slightly improves the confidence in the case which the distribution are skewed, which is typical in our case. This is lifted from scipy, cross-checked like the other bits of code. Then the rest are cosmetic / fixes (in order of the patches): - it's nicer to say 800MB than 800000000 bytes - I thought that it was confusing when displaying the median diff: the test could be marked as high confidence, but the media diff bootstrap could be marked as low confidence. Conceptually this makes sense, but we can phrase it better: we want to warn when a confidence interval includes zero, e.g. "the median was improved by 0.5ms, confidence interval [0.6, -0.1], meaning this could well be a -0.1 regression. If this interval does not include 0 (e.g. 0.5ms, confidence interval [0.8, 0.3], then in all cases we're certain it improves things, there's low chance it regresses things - again when displaying large numbers such as amount of memory, our auto-sizing for the KDE was perfectible, I saw myself having to resize. I changed things so it looks better (leaving about 10% of padding on either side of the min/max). Also when the distribution is all over the place, I don't think the automatic bandwidth calculation makes any sense, so we add a slider much like we added one for the modal split. This fixes BMO https://bugzilla.mozilla.org/show_bug.cgi?id=2046147
✅ Deploy Preview for mozilla-perfcompare ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Check out the change-log below to see the updates:
[andra - esanuandra ]
PCF-391 The keyboard handling for the revision dropdown should be done differently (#926)
[david - davidmiculit ]
Bug 2040649 - Remove Raptor framework from PerfCompare (#1042)
[kala - kala-moz ]
Results Page: return the scatter series for base and new back to original order (#1046)
Bug: 2044194 Port client-side KDE mode detection from kde-widget into CommonGraph (#1045)
Bug 2034263: Give subtest column in subtest page a max-width (#1047)
[paul - padenot]
Two small followups on modal-work (#1049)
Assorted fixes to improve the app when numbers are very large and not measuring time. (#1050)