Skip to content

Pulling fix/perf into develop#1267

Merged
ktun95 merged 12 commits into
developfrom
fix/perf
May 30, 2026
Merged

Pulling fix/perf into develop#1267
ktun95 merged 12 commits into
developfrom
fix/perf

Conversation

@github-actions
Copy link
Copy Markdown
Contributor

No description provided.

@codecov
Copy link
Copy Markdown

codecov Bot commented May 29, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 86.24%. Comparing base (df8993a) to head (40b14a6).
⚠️ Report is 189 commits behind head on develop.

Additional details and impacted files

Impacted file tree graph

@@             Coverage Diff             @@
##           develop    #1267      +/-   ##
===========================================
- Coverage    94.54%   86.24%   -8.31%     
===========================================
  Files          417      456      +39     
  Lines        22026     4137   -17889     
  Branches      1502      454    -1048     
===========================================
- Hits         20825     3568   -17257     
+ Misses        1201      520     -681     
- Partials         0       49      +49     
Files with missing lines Coverage Δ
packages/footer/src/styles/footerStyles.ts 100.00% <ø> (ø)
...kages/header-mui5/src/components/LogoContainer.tsx 100.00% <ø> (ø)
packages/header-mui5/src/styles/headerStyles.ts 100.00% <ø> (ø)
packages/navbar/src/components/Dropdown.tsx 100.00% <100.00%> (ø)
packages/navbar/src/components/MenuIcon.tsx 87.50% <100.00%> (-8.50%) ⬇️
packages/navbar/src/components/Navbar.tsx 66.66% <100.00%> (-17.16%) ⬇️
packages/ui-frontpage/src/Slideshow.tsx 100.00% <100.00%> (ø)
...ackages/ui-frontpage/src/StatusReportContainer.tsx 100.00% <100.00%> (ø)
packages/ui-frontpage/src/hooks/useDictyStatus.ts 100.00% <100.00%> (ø)
...kages/ui-frontpage/src/news/AuthorizedNewsList.tsx 100.00% <ø> (ø)
... and 1 more

... and 437 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@ktun95 ktun95 force-pushed the fix/perf branch 3 times, most recently from 9506501 to 9114b5e Compare May 29, 2026 16:24
@ktun95
Copy link
Copy Markdown
Collaborator

ktun95 commented May 29, 2026

#1266

ktun95 and others added 7 commits May 30, 2026 11:15
… LCP

Re-encode the three slideshow assets to AVIF and WebP (the tubulin PNG drops
from 397 KiB to 40 KiB AVIF) and serve them via <picture> with the original
JPEG/PNG as fallback. Add explicit width/height to lock each image's aspect
ratio, eagerly load the first slide with fetchpriority="high" (it is the page
LCP element), and lazy-load the rest.

Declare the .webp/.avif asset modules so the new imports type-check.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The status row swaps from the "unavailable" placeholder to the loaded popover
once the async uptime fetch resolves, shifting everything below it. Wrap the
swap in a fixed-height flex container so the transition no longer contributes
to cumulative layout shift.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Add a build.rollupOptions.output.manualChunks config that breaks the single
1.6 MB entry chunk into separately cacheable vendor chunks (mui, apollo,
editor, fp, fontawesome). Enable build.sourcemap so production stack traces
map back to source and Lighthouse can attribute code (fixes valid-source-maps).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Add preconnect hints for graphql.dictybase.dev and storage.dictybase.dev so
the browser opens those connections before the first GraphQL request and logo
fetch on the critical path.

Add a real public/robots.txt; without one the SPA fallback served index.html
for /robots.txt, which Lighthouse parsed as 28 invalid directives.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Read the uptime summary URL from VITE_APP_STATUS_JSON, defaulting to the
existing GitHub raw URL. This lets deployments point the request at a
dictybase-served proxy so it stays on a trusted, cacheable origin and off the
page's critical path, instead of hitting raw.githubusercontent.com directly.

Document the override (commented) in the production and staging env files.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Pass alt="dictyBase" to the header logo image so it has an accessible name
(fixes the image-alt accessibility and SEO audits).

Map the DCR News item date headings from h3 to a rendered h2 so the homepage
news section no longer skips a heading level under its h1 title, matching the
existing NewsItem behavior (fixes heading-order).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Navbar: make each dropdown a list item containing its sub-menu <ul> (instead
of a <ul> nested directly in a <ul>), turn the dropdown toggle into a
keyboard-operable role=button with aria-haspopup/aria-expanded, change the
mobile-menu wrapper from a stray <li> to a <div>, and give the hamburger
MenuIcon an aria-label and aria-expanded. Fixes the list, listitem and
aria-command-name audits.

Touch targets: enlarge footer links to a >=24px tap target and give the header
search field a min-width so it cannot collapse to an untappable sliver. Fixes
target-size.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
ktun95 and others added 4 commits May 30, 2026 12:42
Added a workflow section to describe the steps to take before
committing code, including linting, unit tests, build, and E2E
tests. Also added a section to encourage writing unit tests for
code changes.
…tests

Replace the `??` fallback for the uptime summary URL with a pipe of
fromNullable + getOrElse, matching the project's functional style. Add tests
for useDictyStatus covering the fetch-success (some), fetch-failure (none),
and JSON-parse-failure (none) paths.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…d height

Verify the container shows the unavailable placeholder when there is no status
data, swaps to the live-status popover when data is present, and reserves a
fixed min-height so the swap does not shift the page layout.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Add Enter and Space keydown tests for the dropdown toggle so the new
keyboard handler (added alongside the role="button" accessibility change)
is exercised, restoring patch coverage on Dropdown.tsx.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@ktun95
Copy link
Copy Markdown
Collaborator

ktun95 commented May 30, 2026

Note on the codecov/project check

codecov/patch passes — all modified lines in this PR are covered by tests (codecov confirms: "All modified and coverable lines are covered by tests"). The new useDictyStatus, StatusReportContainer, and navbar Dropdown keyboard-handler code all have tests, and every changed file reports 100% or ø (no change) in the codecov breakdown.

The failing codecov/project check is not caused by this branch — it's a comparison artifact:

  • Stale base: codecov reports the base is 189 commits behind head on develop and is comparing against an old cached commit (df8993a) rather than current develop.
  • Partial coverage upload: this CI run uploaded coverage for only the packages whose tests ran (~4,137 lines) versus the base's whole-monorepo report (~22,026 lines). Comparing those two denominators yields a meaningless −8.31% project delta. The only per-file "decreases" (MenuIcon, Navbar) are pre-existing untested lines whose percentage shifted because the file's denominator changed in this partial run — not lines this PR touched.

Adding more tests to the changed files cannot move codecov/project, since those files are already at 100%. Resolving it requires a maintainer-side fix (refresh the codecov base on current develop, fix the CI coverage upload to report the whole project, or relax the project status in codecov.yml). Flagging here so the check isn't read as a coverage regression introduced by this PR.

The lockfile had floated @playwright/test up to 1.56.1, which hits a known
browser-install regression (microsoft/playwright#40998) where
`playwright install` stalls after downloading Chrome. This stalled the
"Install Playwright" step of the integration-testing workflow indefinitely
across all four apps. Bump the spec from ^1.44.0 to ^1.60.0 and refresh the
lockfile so CI installs a known-good version.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@ktun95 ktun95 merged commit 6a2770d into develop May 30, 2026
13 of 14 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant