Find Twitch's chat identity button, which is not called identity - #23
Merged
Conversation
The chip never appeared on Twitch. Two guesses had to be right for it to work and both were wrong: - Twitch does not call it identity. The control is the badge carousel, and its only names are `data-a-target="chat-badge-carousel-badge-icon"` and an accessible name of "ChatBadgeCarousel". Searching for the word "identity" found nothing on the page at all. - It is not in the buttons container. Cheer, the emote picker, the balances, the settings gear and Send all live in `.chat-input__buttons-container`, which is the only place this looked. The badge carousel sits beside them in the `.chat-input` row, outside that container. Both are now taken from a signed-in channel page rather than guessed, and the harness markup is the real markup so the fault cannot come back unnoticed. Kick was already working and still resolves the identical button — checked against a live page, old selector and new selector return the same element. It is pinned to the exact badge anyway: Kick gives every badge in chat an `identity-badge-*` test id and names two icons `...Badge`, so the loose match that worked did so only because the footer happens to hold one of them today. The new suite builds each platform's real markup and asserts the adapter finds that control, refuses the send button, and offers nothing on a page that is not showing one. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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.
The Chat identity chip never appeared on Twitch. Two guesses had to be right for it to work, and both were wrong.
Twitch does not call it identity. The control is the badge carousel:
data-a-target="chat-badge-carousel-badge-icon", accessible nameChatBadgeCarousel. The word "identity" appears nowhere on the page, so a search for it found nothing.It is not in the buttons container. Cheer, the emote picker, the balances, the settings gear and Send all live in
.chat-input__buttons-container— the only place this looked. The badge carousel sits beside them in the.chat-inputrow, outside that container. Confirmed on a signed-in page:inButtonsContainer: false.Both facts are now read off a real signed-in channel page rather than guessed, and the harness markup was rewritten to match it, so the same miss cannot happen quietly again.
Kick
Kick was already working and still resolves the identical button — checked against a live page, the old selector and the new one return the same element (
sameElement: true).It is pinned to the exact badge anyway. Kick gives every badge in chat an
identity-badge-*test id and names two of its icons...Badge(VerifiedBadge,ModeratorBadge), so the loose*identity*match worked only because the footer happens to contain exactly one of them today. The exact test id and the exact icon name cannot be hijacked by a second one appearing.Tests
New
chatidentitysuite builds each platform's real markup and asserts the adapter finds that control, never returns the send button, and offers nothing at all on a page that is not showing one. 1369 passing.🤖 Generated with Claude Code