Skip to content

chore(seer): update seer references #91642

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 8 commits into from
May 16, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ describe('AutofixChanges', () => {
);

expect(
screen.getByText('Autofix had trouble applying its code changes.')
screen.getByText('Seer had trouble applying its code changes.')
).toBeInTheDocument();
});

Expand Down
4 changes: 2 additions & 2 deletions static/app/components/events/autofix/autofixChanges.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -231,7 +231,7 @@ export function AutofixChanges({
<MarkdownAlert
text={
step.termination_reason ||
t('Autofix had trouble applying its code changes.')
t('Seer had trouble applying its code changes.')
}
/>
</Alert.Container>
Expand Down Expand Up @@ -344,7 +344,7 @@ export function AutofixChanges({
: null
}
isAgentComment
blockName={t('Autofix is uncertain of the code changes...')}
blockName={t('Seer is uncertain of the code changes...')}
/>
)}
</AnimatePresence>
Expand Down
2 changes: 1 addition & 1 deletion static/app/components/events/autofix/autofixFeedback.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ function AutofixFeedback() {
size="xs"
onClick={() =>
openForm({
messagePlaceholder: t('How can we make Autofix better for you?'),
messagePlaceholder: t('How can we make Seer better for you?'),
tags: {
['feedback.source']: 'issue_details_ai_autofix',
['feedback.owner']: 'ml-ai',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -181,7 +181,7 @@ describe('AutofixInsightCards', () => {

await waitFor(() => {
expect(addErrorMessage).toHaveBeenCalledWith(
'Something went wrong when sending Autofix your message.'
'Something went wrong when sending Seer your message.'
);
});
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -533,7 +533,7 @@ function useUpdateInsightCard({groupId, runId}: {groupId: string; runId: string}
addSuccessMessage(t('Rethinking this...'));
},
onError: () => {
addErrorMessage(t('Something went wrong when sending Autofix your message.'));
addErrorMessage(t('Something went wrong when sending Seer your message.'));
},
});
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -280,7 +280,7 @@ function AutofixInsightSources({sources, title, codeUrls}: AutofixInsightSources
data-overlay="true"
>
<OverlayHeader>
<OverlayTitle>{t("Autofix's Thoughts")}</OverlayTitle>
<OverlayTitle>{t("Seer's Thoughts")}</OverlayTitle>
{title && <InsightTitle>"{title.trim()}"</InsightTitle>}
</OverlayHeader>
<OverlayContent>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ describe('AutofixOutputStream', () => {

await waitFor(() => {
expect(addErrorMessage).toHaveBeenCalledWith(
'Something went wrong when sending Autofix your message.'
'Something went wrong when sending Seer your message.'
);
});
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@ export function AutofixOutputStream({
addSuccessMessage('Thanks for the input.');
},
onError: () => {
addErrorMessage(t('Something went wrong when sending Autofix your message.'));
addErrorMessage(t('Something went wrong when sending Seer your message.'));
},
});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -393,7 +393,7 @@ function AutofixRootCauseDisplay({
: null
}
isAgentComment
blockName={t('Autofix is uncertain of the root cause...')}
blockName={t('Seer is uncertain of the root cause...')}
/>
)}
</AnimatePresence>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ describe('AutofixSetupWriteAccessModal', function () {
expect(screen.getByText('getsentry/seer')).toBeInTheDocument();

expect(
screen.getByRole('button', {name: 'Install the Autofix GitHub App'})
screen.getByRole('button', {name: 'Install the Seer GitHub App'})
).toHaveAttribute('href', 'https://github.com/apps/sentry-autofix/installations/new');
});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ function Content({groupId, closeModal}: {closeModal: () => void; groupId: string
<Fragment>
<p>
{tct(
'In order to create pull requests, install and grant write access to the [link:Sentry Autofix GitHub App] for the following repositories:',
'In order to create pull requests, install and grant write access to the [link:Sentry Seer GitHub App] for the following repositories:',
{
link: (
<ExternalLink
Expand All @@ -83,7 +83,7 @@ function Content({groupId, closeModal}: {closeModal: () => void; groupId: string
<Fragment>
<p>
{tct(
'In order to create pull requests, install and grant write access to the [link:Sentry Autofix GitHub App] for the relevant repositories.',
'In order to create pull requests, install and grant write access to the [link:Sentry Seer GitHub App] for the relevant repositories.',
{
link: (
<ExternalLink
Expand All @@ -109,7 +109,7 @@ export function AutofixSetupWriteAccessModal({
return (
<div id="autofix-write-access-modal">
<Header closeButton>
<h3>{t('Allow Autofix to Make Pull Requests')}</h3>
<h3>{t('Allow Seer to Make Pull Requests')}</h3>
</Header>
<Body>
<Content groupId={groupId} closeModal={closeModal} />
Expand All @@ -123,7 +123,7 @@ export function AutofixSetupWriteAccessModal({
external
priority="primary"
>
{t('Install the Autofix GitHub App')}
{t('Install the Seer GitHub App')}
</LinkButton>
</ButtonBar>
</Footer>
Expand Down
6 changes: 3 additions & 3 deletions static/app/components/events/autofix/autofixSolution.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -434,11 +434,11 @@ function AutofixSolutionDisplay({
title={
hasNoRepos
? t(
'You need to set up the GitHub integration and configure repository access for Autofix to write code for you.'
'You need to set up the GitHub integration and configure repository access for Seer to write code for you.'
)
: cantReadRepos
? t(
"We can't access any of your repos. Check your GitHub integration and configure repository access for Autofix to write code for you."
"We can't access any of your repos. Check your GitHub integration and configure repository access for Seer to write code for you."
)
: undefined
}
Expand Down Expand Up @@ -472,7 +472,7 @@ function AutofixSolutionDisplay({
: null
}
isAgentComment
blockName={t('Autofix is uncertain of the solution...')}
blockName={t('Seer is uncertain of the solution...')}
/>
)}
</AnimatePresence>
Expand Down
2 changes: 1 addition & 1 deletion static/app/components/events/autofix/autofixStartBox.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ export function AutofixStartBox({onSend, groupId}: AutofixStartBoxProps) {
}
analyticsParams={{group_id: groupId}}
>
{t('Start Autofix')}
{t('Start Seer')}
Copy link
Member

@roaga roaga May 16, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Now that summary and scanner are all part of Seer, wonder if this should be something like "Start Analysis". This is fine though

</StyledButton>
</InputWrapper>
</Container>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ describe('AutofixSteps', () => {
render(<AutofixSteps {...propsWithErroredStep} />);
expect(
await screen.findByText(
'Autofix encountered an error. Restarting step from scratch...'
'Seer encountered an error. Restarting step from scratch...'
)
).toBeInTheDocument();
});
Expand Down
10 changes: 5 additions & 5 deletions static/app/components/events/autofix/autofixSteps.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ function Step({
<Fragment>
{hasErroredStepBefore && hasStepAbove && (
<StepMessage>
{t('Autofix encountered an error. Restarting step from scratch...')}
{t('Seer encountered an error. Restarting step from scratch...')}
</StepMessage>
)}
{step.type === AutofixStepType.DEFAULT && (
Expand Down Expand Up @@ -174,19 +174,19 @@ export function AutofixSteps({data, groupId, runId}: AutofixStepsProps) {
errorMessage.toLowerCase().includes('tokens')
) {
customErrorMessage = t(
"Autofix worked so hard that it couldn't fit all its findings in its own memory. Please try again."
"Seer worked so hard that it couldn't fit all its findings in its own memory. Please try again."
);
} else if (errorMessage.toLowerCase().includes('iterations')) {
customErrorMessage = t(
'Autofix was taking a ton of iterations, so we pulled the plug out of fear it might go rogue. Please try again.'
'Seer was taking a ton of iterations, so we pulled the plug out of fear it might go rogue. Please try again.'
);
} else if (errorMessage.toLowerCase().includes('timeout')) {
customErrorMessage = t(
'Autofix was taking way too long, so we pulled the plug to put it out of its misery. Please try again.'
'Seer was taking way too long, so we pulled the plug to turn it off and on again. Please try again.'
);
} else {
customErrorMessage = t(
"Oops, Autofix went kaput. We've dispatched Autofix to fix Autofix. In the meantime, try again?"
"Oops, Seer went kaput. We've dispatched Seer to fix Seer. In the meantime, try again?"
);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -163,12 +163,12 @@ describe('SeerDrawer', () => {

expect(screen.getByText(mockEvent.id)).toBeInTheDocument();

expect(screen.getByText('Autofix')).toBeInTheDocument();
expect(screen.getByRole('heading', {name: 'Seer'})).toBeInTheDocument();

expect(screen.getByTestId('ai-setup-data-consent')).toBeInTheDocument();
});

it('renders initial state with Start Autofix button', async () => {
it('renders initial state with Start Seer button', async () => {
MockApiClient.addMockResponse({
url: `/organizations/${mockProject.organization.slug}/issues/${mockGroup.id}/autofix/`,
body: {autofix: null},
Expand All @@ -184,10 +184,10 @@ describe('SeerDrawer', () => {
screen.queryByTestId('ai-setup-loading-indicator')
);

expect(screen.getByText('Autofix')).toBeInTheDocument();
expect(screen.getByRole('heading', {name: 'Seer'})).toBeInTheDocument();

// Verify the Start Autofix button is available
const startButton = screen.getByRole('button', {name: 'Start Autofix'});
// Verify the Start Seer button is available
const startButton = screen.getByRole('button', {name: 'Start Seer'});
expect(startButton).toBeInTheDocument();
});

Expand Down Expand Up @@ -219,11 +219,11 @@ describe('SeerDrawer', () => {
expect(screen.getByText('Set Up the GitHub Integration')).toBeInTheDocument();
expect(screen.getByText('Set Up Now')).toBeInTheDocument();

const startButton = screen.getByRole('button', {name: 'Start Autofix'});
const startButton = screen.getByRole('button', {name: 'Start Seer'});
expect(startButton).toBeInTheDocument();
});

it('triggers autofix on clicking the Start button', async () => {
it('triggers Seer on clicking the Start button', async () => {
MockApiClient.addMockResponse({
url: `/organizations/${mockProject.organization.slug}/issues/${mockGroup.id}/autofix/`,
method: 'POST',
Expand All @@ -245,7 +245,7 @@ describe('SeerDrawer', () => {
screen.queryByTestId('ai-setup-loading-indicator')
);

const startButton = screen.getByRole('button', {name: 'Start Autofix'});
const startButton = screen.getByRole('button', {name: 'Start Seer'});
await userEvent.click(startButton);

expect(await screen.findByRole('button', {name: 'Start Over'})).toBeInTheDocument();
Expand Down Expand Up @@ -318,7 +318,7 @@ describe('SeerDrawer', () => {
);

// The feedback button should be visible, but not the Start Over button
expect(screen.getByTestId('autofix-button-bar')).toBeInTheDocument();
expect(screen.getByTestId('seer-button-bar')).toBeInTheDocument();
expect(screen.queryByRole('button', {name: 'Start Over'})).not.toBeInTheDocument();

// Restore the original implementation
Expand Down Expand Up @@ -352,7 +352,7 @@ describe('SeerDrawer', () => {
);

// Both buttons should be visible, but Start Over should be disabled
expect(screen.getByTestId('autofix-button-bar')).toBeInTheDocument();
expect(screen.getByTestId('seer-button-bar')).toBeInTheDocument();
const startOverButton = screen.getByRole('button', {name: 'Start Over'});
expect(startOverButton).toBeInTheDocument();
expect(startOverButton).toBeDisabled();
Expand Down Expand Up @@ -385,7 +385,7 @@ describe('SeerDrawer', () => {
);

// Both buttons should be visible, and Start Over should be enabled
expect(screen.getByTestId('autofix-button-bar')).toBeInTheDocument();
expect(screen.getByTestId('seer-button-bar')).toBeInTheDocument();
const startOverButton = screen.getByRole('button', {name: 'Start Over'});
expect(startOverButton).toBeInTheDocument();
expect(startOverButton).toBeEnabled();
Expand All @@ -401,6 +401,10 @@ describe('SeerDrawer', () => {
organization,
});

await waitForElementToBeRemoved(() =>
screen.queryByTestId('ai-setup-loading-indicator')
);

expect(await screen.findByRole('button', {name: 'Start Over'})).toBeInTheDocument();
});

Expand All @@ -414,10 +418,12 @@ describe('SeerDrawer', () => {
organization,
});

await waitForElementToBeRemoved(() =>
screen.queryByTestId('ai-setup-loading-indicator')
);

expect(await screen.findByRole('button', {name: 'Start Over'})).toBeInTheDocument();
expect(
await screen.findByRole('button', {name: 'Start Autofix'})
).toBeInTheDocument();
expect(await screen.findByRole('button', {name: 'Start Seer'})).toBeInTheDocument();
expect(screen.getByRole('button', {name: 'Start Over'})).toBeDisabled();
});

Expand All @@ -431,12 +437,16 @@ describe('SeerDrawer', () => {
organization,
});

await waitForElementToBeRemoved(() =>
screen.queryByTestId('ai-setup-loading-indicator')
);

const startOverButton = await screen.findByRole('button', {name: 'Start Over'});
expect(startOverButton).toBeInTheDocument();
await userEvent.click(startOverButton);

await waitFor(() => {
expect(screen.getByRole('button', {name: 'Start Autofix'})).toBeInTheDocument();
expect(screen.getByRole('button', {name: 'Start Seer'})).toBeInTheDocument();
});
});

Expand Down Expand Up @@ -471,7 +481,7 @@ describe('SeerDrawer', () => {
screen.queryByTestId('ai-setup-loading-indicator')
);

expect(screen.getByText('Autofix')).toBeInTheDocument();
expect(screen.getByRole('heading', {name: 'Seer'})).toBeInTheDocument();

// Since "Install the GitHub Integration" text isn't found, let's check for
// the "Set Up the GitHub Integration" text which is what the component is actually showing
Expand Down Expand Up @@ -505,7 +515,7 @@ describe('SeerDrawer', () => {
);

// We don't expect to see any notice about repositories since all are readable
expect(screen.queryByText(/Autofix can't access/)).not.toBeInTheDocument();
expect(screen.queryByText(/Seer can't access/)).not.toBeInTheDocument();
});

it('renders warning for unreadable GitHub repository', async () => {
Expand Down Expand Up @@ -533,7 +543,7 @@ describe('SeerDrawer', () => {
screen.queryByTestId('ai-setup-loading-indicator')
);

expect(screen.getByText(/Autofix can't access the/)).toBeInTheDocument();
expect(screen.getByText(/Seer can't access the/)).toBeInTheDocument();
expect(screen.getByText('org/repo')).toBeInTheDocument();
expect(screen.getByText(/GitHub integration/)).toBeInTheDocument();
});
Expand Down Expand Up @@ -563,7 +573,7 @@ describe('SeerDrawer', () => {
screen.queryByTestId('ai-setup-loading-indicator')
);

expect(screen.getByText(/Autofix can't access the/)).toBeInTheDocument();
expect(screen.getByText(/Seer can't access the/)).toBeInTheDocument();
expect(screen.getByText('org/gitlab-repo')).toBeInTheDocument();
expect(
screen.getByText(/It currently only supports GitHub repositories/)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,7 @@ export function SeerDrawer({group, project, event}: SeerDrawerProps) {
</SeerDrawerHeader>
<SeerDrawerNavigator>
<Flex align="center" gap={space(1)}>
<Header>{t('Autofix')}</Header>
<Header>{t('Seer')}</Header>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should it say Seer or Issue Fix or something else describing the feature inside this drawer?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Either works. The flyover is opened when you click on a button inside a box called "Seer", so there's a "link" (visually) there. I think "Seer" is fine here.

<FeatureBadge
type="beta"
tooltipProps={{
Expand Down Expand Up @@ -229,14 +229,14 @@ export function SeerDrawer({group, project, event}: SeerDrawerProps) {
/>
</Flex>
{!aiConfig.needsGenAiAcknowledgement && (
<ButtonBarWrapper data-test-id="autofix-button-bar">
<ButtonBarWrapper data-test-id="seer-button-bar">
<ButtonBar gap={1}>
<Feature features={['organizations:autofix-seer-preferences']}>
<LinkButton
to={`/settings/${organization.slug}/projects/${project.slug}/seer/`}
size="xs"
title={t('Project Settings for Autofix')}
aria-label={t('Project Settings for Autofix')}
title={t('Project Settings for Seer')}
aria-label={t('Project Settings for Seer')}
icon={<IconSettings />}
/>
</Feature>
Expand Down
Loading
Loading