Skip to content

[ZEPPELIN-6722] Record the pinned Angular notebook route baseline - #5512

Merged
voidmatcha merged 1 commit into
apache:masterfrom
kimyenac:ZEPPELIN-6722
Sep 30, 2026
Merged

voidmatcha merged 1 commit into
apache:masterfrom
kimyenac:ZEPPELIN-6722

Conversation

@kimyenac

Copy link
Copy Markdown
Contributor

What is this PR for?

Record the pinned Angular notebook route baseline with the benchmark contract from ZEPPELIN-6668, before the React route host (ZEPPELIN-6675) lands and the current Angular path can no longer be measured under the same conditions.

  • Measured at 7f7b995c3 (the ZEPPELIN-6668 merge, current master), with a clean working tree (workingTreeDirty: false).
  • One run in one environment: 10 cold and 10 warm samples, no outlier removed, nothing merged from other runs.
  • No script, fixture or config change. The measurement tool stays exactly as ZEPPELIN-6668 fixed it, so the recorded commit identifies the tool that produced these numbers.
Metric (ms) Cold median Cold p95 Warm median Warm p95
notebookReadyMs 1102.9 1181.9 806.2 871.6
fcpMs 28 44 36 40

Raw samples: cold 1092.4–1181.9 ms, warm 768.9–871.6 ms. The JSON files are authoritative; the table rounds to 0.1 ms.

Entry bundles (raw / gzip bytes): main 6,691,449 / 1,786,481, scripts 825,757 / 238,428, styles 136,950 / 23,253, polyfills 56,102 / 20,644; React remoteEntry.js 4,109 / 1,785.

Environment: macOS (Darwin 23.6.0), Apple M3 Pro, 36 GiB, Playwright Chromium 140.0.7339.186, Node v22.21.1 (the .nvmrc version), AC power. Zeppelin was built from the same commit (zeppelin-server with its dependencies, and shell), with anonymous access and an empty isolated notebook directory. Measurement started after the post-build Spotlight indexing settled (1-minute load average 3.8).

Files:

  • e2e/performance/baselines/70eef3f8-….raw.json / .summary.json: added with git add -f, as the README describes, because generated outputs stay git-ignored.
  • e2e/performance/README.md: the sentence saying there is no pinned baseline now points to the recorded one, and a Recorded Angular baseline section lists the commit, environment and summary. It also notes that note import needs at least one interpreter. With none installed, import fails with HTTP 500 (InterpreterSettingManager.getDefaultInterpreterSetting throws IndexOutOfBoundsException). The fixture's paragraphs use %sh, so building shell is enough. No existing sentence was removed; the two changed lines keep their original content.

What type of PR is it?

Improvement

Todos

  • Record 10 cold and 10 warm samples at a pinned master commit
  • Commit raw and summary JSON with the environment record
  • Point the README at the recorded baseline

What is the Jira issue?

ZEPPELIN-6722

How should this be tested?

cd zeppelin-web-angular
npm run test:shell -- test/notebook-baseline.spec.ts
# against an isolated Zeppelin serving the `npm run build` output, with the shell interpreter installed
PLAYWRIGHT_BASE_URL=http://localhost:8080/ PERF_NOTEBOOK_DISPOSABLE=1 npm run perf:notebook-baseline

What I ran locally:

  • Contract unit tests: 12/12 passed.
  • Dry run (1 cold + 1 warm) passed before the real run; its output was not committed.
  • The real run passed and the imported note was deleted afterwards (the notebook store was empty again).
  • I recomputed the median and nearest-rank p95 from the raw samples. They match the summary, and the raw and summary metadata are identical.
  • Bundle SHA-256, raw bytes and zlib gzip bytes match the built dist files.
  • Fixture hash mismatch: changing one byte in the fixture made the command fail with Benchmark fixture SHA-256 mismatch. The fixture was restored before committing.
  • Ready-condition mismatch was not exercised against a live server. It relies on the existing ZEPPELIN-6668 spec and unit tests.
  • No Playwright E2E suite run, since this PR changes no application or test code.

Numbers from a different machine are not expected to match. Compare a later run with this baseline only when it was recorded in the same environment.

Screenshots (if appropriate)

N/A.

Questions:

  • Does the license files need to update? No. The baseline JSON is covered by the existing RAT **/*.json exclusion.
  • Is there breaking changes for older versions? No.
  • Does this needs documentation? The benchmark README is updated in this PR.

🤖 Generated with Claude Code

Record 10 cold and 10 warm samples of the notebook route benchmark
from ZEPPELIN-6668 at 7f7b995, before the React route host
(ZEPPELIN-6675) lands. Raw samples, the summary and the environment
record are committed under e2e/performance/baselines/.

The README now points to the recorded baseline and notes that note
import needs at least one interpreter (the fixture uses %sh).

@voidmatcha voidmatcha left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Verified the recorded samples and summary, and confirmed that the benchmark contract completes successfully in dry-run mode. LGTM 👍

@voidmatcha
voidmatcha merged commit 28894a1 into apache:master Sep 30, 2026
41 of 42 checks passed
@voidmatcha

Copy link
Copy Markdown
Member

Merged into master (28894a1).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants