feat(comment): expose comment id + focus ring on CommentMessage wrapper
Notification deep-link scroll targets #comment-{id}. Add the id to
the article wrapper along with tabindex="-1" so scrollIntoView +
.focus({preventScroll:true}) can land screen-reader and keyboard
focus on the specific comment. A focus-visible ring appears only
for keyboard users so mouse clicks don't trigger a visible outline.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -82,4 +82,25 @@ describe('CommentMessage', () => {
|
||||
await expect.element(textarea).toBeInTheDocument();
|
||||
await expect.element(textarea).toHaveValue('current edit text');
|
||||
});
|
||||
|
||||
it('exposes id="comment-{message.id}" on the article wrapper for deep-link scroll', async () => {
|
||||
render(CommentMessage, defaultProps());
|
||||
const article = page.getByRole('article').element();
|
||||
expect(article.getAttribute('id')).toBe('comment-msg-1');
|
||||
});
|
||||
|
||||
it('is focusable but not in tab order (tabindex="-1")', async () => {
|
||||
render(CommentMessage, defaultProps());
|
||||
const article = page.getByRole('article').element();
|
||||
expect(article.getAttribute('tabindex')).toBe('-1');
|
||||
});
|
||||
|
||||
it('shows a focus-visible ring when focused via keyboard', async () => {
|
||||
render(CommentMessage, defaultProps());
|
||||
const article = page.getByRole('article').element();
|
||||
const classes = article.className;
|
||||
expect(classes).toMatch(/focus-visible:ring-2/);
|
||||
expect(classes).toMatch(/focus-visible:ring-brand-navy/);
|
||||
expect(classes).toMatch(/outline-none/);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user