Remove dead frontend modules; add tests, a11y, and ESLint fixes (#321) #468
No reviewers
Labels
No labels
agent:fix_bugfix
agent:fix_conflicts
agent:fix_security
agent:gap_analysis
agent:implement
agent:open_issues
agents
agent:security_audit
agent:verify
area
timecurve
arena
arena-v2
audit
block:feature_review
block:security
bug
contracts
design
devops
docs
documentation
enhancement
epic
feature
frontend
indexer
low priority
megaeth
operations
ops
performance
QA
qa checklist
referrals
removal
security
smart-contracts
tech-debt
testing
time-arena
timecurve
visual-qa
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
code/yieldomega!468
Loading…
Reference in a new issue
No description provided.
Delete branch "issue-321-dead-modules-tests-a11y-eslint"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
GitLab #321 — remove dead/orphan arena frontend modules and close the testing, accessibility, and ESLint gaps called out in the #309 gap analysis.
Removed (zero imports):
TimerHeroLiveBuys.tsx,ArenaBuyModals.tsx,e2e/arena-live-buys-modals.spec.tsplaywright.config.tstestIgnorefor the deleted specAdded / fixed:
ArenaSimplePage,ArenaWarbowHeroPanel,ArenaCharmCredCard,WalletProfileModalarenaSaleSessionBuyPreflight.tstabIndex+ Arrow/Home/End keyboard navigation (warbowTargetListKeyboard.ts)aria-labelonArenaSimplePagefrontend/src/pages/arena/(react-refresh disables on shared helper modules;useArenaSaleSessionhook-deps fixed)Docs:
docs/testing/frontend-content-audit.md,frontend/public/art/README.mdAcceptance checklist
rg TimerHeroLiveBuys ArenaBuyModals frontend/src frontend/e2e(docs/historical refs only)cd frontend && npm test -- ArenaSimplePage ArenaWarbowHeroPanel ArenaCharmCredCard arenaSaleSessionBuyPreflight WalletProfileModalnpm test -- warbowTargetListKeyboard ArenaWarbowHeroPanel+ manual Arrow keys on/arenaWarBow listnpm run lintzero warnings insrc/pages/arena/cd frontend && npx eslint src/pages/arena/cd frontend && npm run typecheck && npm testThird-party verification
Optional after merge:
bash scripts/e2e-anvil.sh(Playwright config no longer ignores deleted spec).Related
changed the description
changed the description
Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.
Bugbot Autofix is ON. A cloud agent has been kicked off to fix the reported issue.
Reviewed by Cursor Bugbot for commit
765cffbaf5. Configure here.Buy aria-label ignores pay token
Medium Severity
The new default
aria-labelon the buy CTA always usesprimarySpendAssetLabel(DOUB/CL8Y), even whensession.payWithis ETH, USDM, or Play CRED. Assistive tech can announce the wrong spend asset while the checkout actually uses another pay mode.Reviewed by Cursor Bugbot for commit
765cffbaf5. Configure here.Security review — MR !468
Commit reviewed:
765cffbaf5e056e35fe280bcd70727929c5ec3faScope: Frontend-only diff — dead module removal (
TimerHeroLiveBuys,ArenaBuyModals, orphaned Playwright spec), buy-submit preflight extraction (arenaSaleSessionBuyPreflight.ts), WarBow listbox keyboard/a11y, ESLint/hook-deps cleanup, new Vitest smoke tests.Method: Traced attacker-controlled inputs (indexer buy rows, wallet addresses, WarBow steal targets, pay-asset labels) to DOM sinks (
href,aria-label, text nodes) and to buy/steal transaction submission paths. Compared extracted preflight guards against prior inlinesubmitBuychecks.Outcome:
FINDINGS: 0medium+Areas reviewed (no issues)
arenaSaleSessionBuyPreflightpreserves all prior sync guards (wallet connector, chain mismatch, paused arena, CRED bounds, cooldown, CHARM bounds latch). No authz bypass or guard removal.WalletProfileModal/AddressInline/explorerAddressUrlvalidate addresses viaviem.isAddress; invalid input renders fallback text, not raw HTML. Newaria-labelstrings use fixed copy orprimarySpendAssetLabel(DOUB/CL8YfromisArenaV2), not indexer/user strings.useArenaWarbowHerostill requiresisAddress()beforewarbowStealand runs onchain preflight.referralRegistryAddrwas unused insubmitBuy. No contract/indexer/server surface change.Inline threads: none (zero medium+ findings).
Security review: no medium+ findings on this diff.
added 1 commit
d837d2ab- fix: use paySpendSuffix in buy CTA aria-labelCompare with previous version
changed the description
resolved all threads
added 31 commits
main499b0205- Merge origin/main into issue-321-dead-modules-tests-a11y-eslintCompare with previous version
Resolved merge conflicts with
origin/main:ArenaWarbowHeroPanel.tsx— kept WarBow target list keyboard navigation (roving tabIndex, Arrow/Home/End, Enter/Space) and merged main’stargetIsInsideAddressActionclick guard so profile/explorer links don’t select a steal target.useArenaSaleSession.ts— keptarenaSaleSessionBuyPreflightextraction; removed duplicate inline submit guards from main.Sanity:
npm run typecheck,npx eslint src/pages/arena/, and targeted Vitest suites all pass.changed the description
Security review — MR !468
Commit reviewed:
499b0205cdc39c82d32aa35c36b64469cc67ada4Scope: Re-review after
origin/mainmerge — dead module removal (TimerHeroLiveBuys,ArenaBuyModals, orphaned Playwright spec), buy-submit preflight extraction (arenaSaleSessionBuyPreflight.ts), WarBow listbox keyboard/a11y (warbowTargetListKeyboard.ts,targetIsInsideAddressActionclick guard), buy CTAaria-label(paySpendSuffix), ESLint/hook-deps cleanup, new Vitest smoke tests.Method: Traced attacker-controlled inputs (indexer buy rows, wallet addresses, WarBow steal targets, pay-asset mode) to DOM sinks (
href,aria-label, text nodes) and to buy/steal transaction submission paths. Compared extracted preflight guards against pre-refactorsubmitBuyand post-mergeorigin/maininline guards.Outcome:
FINDINGS: 0medium+Areas reviewed (no issues)
arenaSaleSessionBuyPreflightpreserves all prior sync guards (wallet connector, chain mismatch, paused arena, CRED bounds, cooldown, CHARM bounds latch). Merge kept extraction; no guard removal vsmain.WalletProfileModaldisplay usesAddressInline(viem.isAddress);explorerAddressUrlrejects non-addresses. Buy CTAaria-labeluses fixed copy +paySpendSuffix(DOUB/CL8Y/CRED/ETH/USDMfrompayWithenum), not indexer/user strings.isAddress-validated targets frombuildWarbowTargets; Enter/Space updates victim input only (no auto-submit);useArenaWarbowHero.runWarBowStealstill requiresisAddress()+ onchain preflight beforewarbowSteal.targetIsInsideAddressActionprevents profile/explorer clicks from selecting steal targets; no authz or tx-path regression.referralRegistryAddrwas unused insubmitBuy. No contract/indexer/server surface change.Inline threads: none (zero medium+ findings).
Security review: no medium+ findings on this diff.
mentioned in commit
85d54aa36d