[quality] MemberProfile dialog's no-logo initials fallback has no end-to-end coverage
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Newbie friendliness
- 84/100
- Issue type
- Bug
- Clarity
- Clearly specified
- Activity status
- Active
- Tech stack
- javascript
Research direction
Start with src/components/MemberDirectory/MemberProfile.js and tests/e2e/interactions.spec.js:173, then inspect data/members.json and the skip convention in tests/e2e/community-people.spec.js. Add the coverage in a new end-to-end spec, selecting a logo-less member at runtime and skipping with a reason when none exists. Run the end-to-end tests and confirm the initials fallback is exercised in the browser.
Written by the indexing model from the issue text.
Description
Finding
src/components/MemberDirectory/MemberProfile.js renders the member logo through two exclusive
arms:
{member.logo ? (
<img src={logoUrl} alt="" className={styles.profileLogo} />
) : (
<span className={styles.initialsLarge}>{initials(member.name)}</span>
)}
The second arm — lines 39-42, the large initials shown when a member has no logo — has never been
executed in a browser.
tests/e2e/interactions.spec.js:173 already drives this dialog for its focus trap and backdrop
dismissal, but every case there opens the .first() card, and the first entry in
data/members.json carries a logo. No spec ever opens a member that does not.
This is not blocked by data shape, unlike #961: 2 of the 101 members in the committed
data/members.json (DiDi, Subaru Corporation) already have no logo, so the branch is
reachable against production data with no fixture mechanism. It is simply a missing spec.
The dialog is also mounted client-side on click, so it never appears in the static HTML — the
branch cannot be reached by any check short of a hydrated browser.
Evidence
-
End-to-end: NOT covered. The
e2e-coverageartifact (id11208994804) from the
End-to-end coverage (non-gating)job of theValidate repositoryworkflow, run id
36964738152(run dir36964738152-1, statuspassed, projectchromium, created
2026-10-02T04:28:56Z), https://github.com/cncf/endusers/actions/runs/36964738152 — its
report.txtlists:src/components/MemberDirectory/MemberProfile.js | 97.65 | 39 40 41 42 -
Unit: covered.
npm run test:unit:coverageat0c87310reports
src/components/MemberDirectory/MemberProfile.jsat 100.00% lines;
tests/member-directory.test.mjs:811and:833-846assert theinitialsLargefallback
directly, driving the component throughtests/tools/fake-dom.mjsrather than the shipped
bundle. The unit gate therefore cannot see this gap. -
Unit and e2e data are not merged (V8-on-Node over source vs V8-in-browser remapped through
source maps); they are reported separately, as the repo already does.
Priority follows from that split: covered by unit tests, not by end-to-end tests.
Recommendation
Add an end-to-end case that opens the profile dialog of a member selected from data/members.json
at run time for absence of a logo, and asserts the dialog renders the initials rather than an
image. Select the member from the data rather than naming it: data/members.json is regenerated
from the CNCF landscape by npm run generate:members, so which organizations lack a logo changes
with no source edit. Guard with test.skip when every member carries a logo, matching the existing
convention in tests/e2e/community-people.spec.js:246,265,280,294.
Place it in a new spec file rather than tests/e2e/interactions.spec.js, which currently has two
open PRs against it (#957, #960).
Completion criteria
-
src/components/MemberDirectory/MemberProfile.jslines 39-42 covered end-to-end - the member driving the case is selected from
data/members.jsonat run time, not named - the case skips with a stated reason if no logo-less member remains in the data
Priority
- Impact: medium
- Effort: low
Filed by quality agent (hold-gated mode)
🐝 Hive Agent: quality | Instance: hosted-available-lke648397-260827-5n31 | SHA: 0c87310
— hive: agent=quality backend=copilot model=claude-opus-5 copilot=1.0.88
- Dominant language
- JavaScript
- Stars
- 0
- Forks
- 2
- Avg merge
- 7h 48m
- Merged PRs (30d)
- 613
Getting set up
Starts the project's dev container in your browser, under your own GitHub account.
- No Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from cncf/endusers
-
[quality] initials() drops a letter when a name carries leading whitespacePossibly taken @hivecommons-hive claimed this 1 day ago. Openagent/quality hive/claimed-by-scanner stage/040-covered-by-pr testing
Difficulty 1/5 1-3 hours Newbie friendliness 86/100
cncf/endusers#1639 · 2 comments ·
Maintainers usually reply within 1 day
-
[guide] SECURITY.md Scope omits composite actions from the CodeQL scan descriptionPossibly taken @hivecommons-hive claimed this 1 day ago. Openagent/guide documentation hive/claimed-by-guide stage/040-covered-by-pr
Difficulty 1/5 Under an hour Newbie friendliness 25/100
cncf/endusers#1637 · 1 comment ·
Maintainers usually reply within 1 day
-
[quality] Nothing guards the camelCase JSX DOM prop convention #1603 established in the footerPossibly taken @hivecommons-hive claimed this 1 day ago. Openagent/quality hive/claimed-by-quality stage/040-covered-by-pr testing
Difficulty 2/5 1-3 hours Newbie friendliness 20/100
cncf/endusers#1633 · 1 comment ·
Maintainers usually reply within 1 day
-
[scanner] a11y: member directory card button accessible name does not contain its visible text (WCAG 2.5.3)Possibly taken @hivecommons-hive claimed this 1 day ago. Openagent/scanner bug hive/claimed-by-scanner stage/040-covered-by-pr
Difficulty 2/5 1-3 hours Newbie friendliness 35/100
cncf/endusers#1630 · 1 comment ·
Maintainers usually reply within 1 day
-
[quality] test the e2e reporter's unexecuted-chunk arm, its only untested regionPossibly taken @hivecommons-hive claimed this 1 day ago. Openagent/quality hive/claimed-by-quality stage/040-covered-by-pr testing
Difficulty 2/5 1-3 hours Newbie friendliness 35/100
cncf/endusers#1625 · 5 comments ·
Maintainers usually reply within 1 day
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
apache/rocketmq-dashboard#7242 ·
Maintainers usually reply within 3 days
-
Difficulty 2/5 1-3 hours Newbie friendliness 77/100
mihai-vlc/sublime-jsfmt#56 ·
-
Bug v3
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
swc-project/swc#12576 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 77/100
Maintainers usually reply within 1 day