Repository navigation
test(e2e): assert the /events end user talk schedule renders - #1395
Merged
Merged
Conversation
src/components/EndUserTalkSchedule/index.js reports 100.00% lines and 100.00% regions in the browser coverage report, and that number is incidental. tests/e2e/events.spec.js predates the component (added with the schedule in #1369) and asserts only the page's Markdown-sourced headings, hero photo, figcaption link and outbound hosts; loading /events for any of those executes every line of the component, so 83 talk cards, the in-page day-jump anchors and the Sessionize provenance links are executed with no assertion made about them. Adds tests/e2e/end-user-talk-schedule.spec.js, driven from data/kubecon-na-2026-end-user-talks.json through loadSiteData() the way awards.spec.js is driven from data/awards.json, so a re-run of collect:end-user-talks is covered on arrival rather than needing the spec rewritten. Signed-off-by: quality <quality@hive.kubestellar.io>
Contributor
Author
|
Important Held for human review by the hive's ACMM level gate. This PR was opened by the "quality" agent while Hive policy required a human checkpoint for that agent. Non-outreach agents are held at ACMM L3–L5; the Hive will keep the |
This was referenced Oct 13, 2026
3 tasks
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.
Test Improvement
Adds
tests/e2e/end-user-talk-schedule.spec.js, the first end-to-endassertions for the KubeCon NA 2026 end user talk schedule that
src/components/EndUserTalkSchedule/index.jsrenders into/events.The component reports 100.00% lines and 100.00% regions in the browser
coverage report, and that number is incidental.
tests/e2e/events.spec.jspredates the component — it was written for the page's Markdown (frontmatter
metadata,
##section order, the hero photo, the figcaption link, theoutbound event hosts) and the schedule arrived later, with the data, in #1369.
Loading
/eventsfor any of those existing assertions executes every line ofthe component, so 83 talk cards, the in-page day-jump anchors and the
Sessionize provenance links are executed with nothing asserted about what they
produced.
grepovertests/e2e/forEnd user talk days,End user talks,Sessionizeandkubecon-na-2026returns no matches onmain.The consequence is that the coverage number cannot fall. A regression that
empties the schedule, breaks the MDX mount, or changes the heading ids the
jump links target leaves
/eventsserving its Markdown sections with theschedule missing or inert, at 100.00% coverage, with every check green.
tests/end-user-talk-schedule.test.mjsis a thorough unit contract, but itcalls
EndUserTalkSchedule()and walks the returned React element treethrough
tests/tools/react-element-tree.mjs. Three failure modes survive it,the same three
tests/e2e/awards.spec.jsrecords forAwardsTimeline:what the function returns; it cannot prove MDX compiled the import and
mounted it.
#day.idanchors pointing ath5elementscarrying that id. The unit test matches those hrefs against ids in the
element tree. Only the served document proves the ids survive into the DOM
and that each anchor resolves to a real target.
The element tree cannot distinguish that citation from the page's own
"Full schedule" bullet, which links the same URL — so this spec scopes the
assertion to the component's own paragraph rather than the article.
What it asserts
Every expectation is derived from
data/kubecon-na-2026-end-user-talks.jsonthrough
loadSiteData(), the wayawards.spec.jsis driven fromdata/awards.json, so a re-run ofnpm run collect:end-user-talksis coveredon arrival instead of needing this spec rewritten.
equals
talkCount— without it every assertion below could degrade into acheck over nothing
article, with the session count andtimezone taken from the data
#idresolving to exactly oneelement in the served document carrying that day's label
corpus order so the day/slot grouping is asserted too
time[datetime]value and label, start then end, in corpus orderapiUrlandsourceUrland the UTC-formatted verified dateOutbound hrefs are asserted as rendered attributes only and are never
requested, so the suite makes no third-party traffic from CI. The talk cards
and slot times are each read in a single
evaluateAllround trip rather thanone locator assertion per record: at 83 sessions the per-record form would
dominate the suite's wall time without testing anything the single read does
not.
Verification
At
mainf5586b0plus this commit, node v26.10.0:npx playwright test tests/e2e/end-user-talk-schedule.spec.js— 6 passednpx playwright test(full suite) — 320 passednpm run test:unit:coverage:check— exits 0npx prettier --checkon the new file — cleanCONTRIBUTING.md"Browser source coverage" procedure (runbase-1791878466,sealed
passed, 346 specs passed in chromium) reportssrc/components/EndUserTalkSchedule/index.js | 100.00 | 100.00 | |, whichis the evidence that the existing coverage number is not an assertion.
Related Issue
Refs #1374 (non-closing: #1374 is the
sec-checkfinding that the talks feedrenders 85 hrefs with no host allow-list, and it is already marked
hive/covered-by-pr. This PR asserts the rendered DOM and closes none ofthat; it is filed here because the issue opened for this e2e-assertion gap was
consolidated into #1374 on arrival. The allow-list gate remains #1374's to
track.)
This PR is disjoint from the open hold-gated PRs on the same feed: #1375 adds
tests/end-user-talks-link-safety.test.mjs, #1383 addstests/end-user-talks-data.test.mjs, and #1385 editsCONTRIBUTING.mdand.cspell.yml. This PR adds one new file,tests/e2e/end-user-talk-schedule.spec.js,and touches nothing else.
Filed by quality agent (hold-gated mode). Human review required.
— hive: agent=quality backend=copilot model=claude-opus-5 copilot=1.0.88