Skip to content

Commit d858161

Browse files
authored
feat(issues): Add context tooltips for issue header status (#92081)
For a new Sentry user, the issue header is an overwhelming amount of information, and it's not clear what the information is. We add tooltips for all issue statuses and provide a link to learn more in our docs. refs https://linear.app/getsentry/issue/RTC-854/issue-details-add-explanatory-mouseovers-to-titles <img width="221" alt="Screenshot 2025-05-21 at 7 11 48 PM" src="https://github.com/user-attachments/assets/193735d0-74ec-4066-8f29-c864e2db75da" />
1 parent 014ad52 commit d858161

File tree

3 files changed

+22
-6
lines changed

3 files changed

+22
-6
lines changed

static/app/components/group/inboxBadges/statusBadge.spec.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ describe('GroupStatusBadge', () => {
1212
/>
1313
);
1414
await userEvent.hover(screen.getByText('Archived'));
15-
expect(await screen.findByText('Archived until escalating')).toBeInTheDocument();
15+
expect(await screen.findByText('Archived until escalating.')).toBeInTheDocument();
1616
});
1717
it('should display new', () => {
1818
render(

static/app/components/group/inboxBadges/statusBadge.tsx

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,30 +18,37 @@ export function getBadgeProperties(
1818
return {
1919
tagType: 'highlight',
2020
status: t('Resolved'),
21+
tooltip: t('This issue was marked as fixed.'),
2122
};
2223
}
2324
if (status === 'unresolved') {
2425
if (substatus === GroupSubstatus.REGRESSED) {
2526
return {
2627
tagType: 'highlight',
2728
status: t('Regressed'),
29+
tooltip: t('This issue was resolved then occurred again.'),
2830
};
2931
}
3032
if (substatus === GroupSubstatus.ESCALATING) {
3133
return {
3234
tagType: 'error',
3335
status: t('Escalating'),
36+
tooltip: t('This issue is occurring significantly more often it used to.'),
3437
};
3538
}
3639
if (substatus === GroupSubstatus.NEW) {
3740
return {
3841
tagType: 'warning',
3942
status: t('New'),
43+
tooltip: t('This issue first occurred in the last 7 days.'),
4044
};
4145
}
4246
return {
4347
tagType: 'default',
4448
status: t('Ongoing'),
49+
tooltip: t(
50+
'This issue was created more than 7 days ago or has manually been marked as reviewed.'
51+
),
4552
};
4653
}
4754
if (status === 'ignored') {
@@ -50,10 +57,10 @@ export function getBadgeProperties(
5057
status: t('Archived'),
5158
tooltip:
5259
substatus === GroupSubstatus.ARCHIVED_FOREVER
53-
? t('Archived forever')
60+
? t('Archived forever.')
5461
: substatus === GroupSubstatus.ARCHIVED_UNTIL_ESCALATING
55-
? t('Archived until escalating')
56-
: t('Archived until condition met'),
62+
? t('Archived until escalating.')
63+
: t('Archived until condition met.'),
5764
};
5865
}
5966
return undefined;

static/app/views/issueDetails/streamline/header/header.tsx

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,12 @@ import ErrorBoundary from 'sentry/components/errorBoundary';
1212
import EventMessage from 'sentry/components/events/eventMessage';
1313
import {getBadgeProperties} from 'sentry/components/group/inboxBadges/statusBadge';
1414
import UnhandledTag from 'sentry/components/group/inboxBadges/unhandledTag';
15+
import ExternalLink from 'sentry/components/links/externalLink';
1516
import Link from 'sentry/components/links/link';
1617
import {TourElement} from 'sentry/components/tours/components';
1718
import {MAX_PICKABLE_DAYS} from 'sentry/constants';
1819
import {IconInfo} from 'sentry/icons';
19-
import {t} from 'sentry/locale';
20+
import {t, tct} from 'sentry/locale';
2021
import HookStore from 'sentry/stores/hookStore';
2122
import {space} from 'sentry/styles/space';
2223
import type {Event} from 'sentry/types/event';
@@ -177,7 +178,15 @@ export default function StreamlinedGroupHeader({
177178
)}
178179
{statusProps?.status ? (
179180
<Fragment>
180-
<Tooltip title={statusProps?.tooltip}>
181+
<Tooltip
182+
isHoverable
183+
title={tct('[tooltip] [link:Learn more]', {
184+
tooltip: statusProps?.tooltip ?? '',
185+
link: (
186+
<ExternalLink href="https://docs.sentry.io/product/issues/states-triage/" />
187+
),
188+
})}
189+
>
181190
<Subtext>{statusProps?.status}</Subtext>
182191
</Tooltip>
183192
</Fragment>

0 commit comments

Comments
 (0)