import {initializeOrg} from 'sentry-test/initializeOrg';
import {render, screen, userEvent} from 'sentry-test/reactTestingLibrary';
import ConfigStore from 'sentry/stores/configStore';
import AlertWizard from 'sentry/views/alerts/wizard/index';
describe('AlertWizard', () => {
beforeEach(() => {
ConfigStore.init();
});
it('sets crash free dataset to metrics', async () => {
const {organization, project, routerProps, router} = initializeOrg({
organization: {
features: [
'alert-crash-free-metrics',
'incidents',
'performance-view',
'crash-rate-alerts',
],
access: ['org:write', 'alerts:write'],
},
});
render(
,
{router, organization}
);
await userEvent.click(screen.getByText('Crash Free Session Rate'));
await userEvent.click(screen.getByText('Set Conditions'));
expect(router.push).toHaveBeenCalledWith({
pathname: '/organizations/org-slug/alerts/new/metric/',
query: {
aggregate:
'percentage(sessions_crashed, sessions) AS _crash_rate_alert_aggregate',
dataset: 'metrics',
eventTypes: 'session',
project: 'project-slug',
referrer: undefined,
},
});
});
it('should render alerts for enabled features', () => {
const {organization, project, routerProps, router} = initializeOrg({
organization: {
features: [
'alert-crash-free-metrics',
'incidents',
'performance-view',
'crash-rate-alerts',
'insights-addon-modules',
],
access: ['org:write', 'alerts:write'],
},
});
render(
,
{router, organization}
);
expect(screen.getByText('Errors')).toBeInTheDocument();
expect(screen.getByText('Sessions')).toBeInTheDocument();
expect(screen.getByText('Performance')).toBeInTheDocument();
expect(screen.getByText('Uptime Monitoring')).toBeInTheDocument();
expect(screen.getByText('LLM Monitoring')).toBeInTheDocument();
expect(screen.getByText('Custom')).toBeInTheDocument();
const alertGroups = screen.getAllByRole('radiogroup');
expect(alertGroups.length).toEqual(6);
});
it('should only render alerts for errors in self-hosted errors only', () => {
ConfigStore.set('isSelfHostedErrorsOnly', true);
const {organization, project, routerProps, router} = initializeOrg({
organization: {
features: [
'alert-crash-free-metrics',
'incidents',
'performance-view',
'crash-rate-alerts',
],
access: ['org:write', 'alerts:write'],
},
});
render(
,
{router, organization}
);
expect(screen.getByText('Errors')).toBeInTheDocument();
const alertGroups = screen.getAllByRole('radiogroup');
expect(alertGroups.length).toEqual(1);
});
it('shows uptime alert according to feature flag', () => {
const {organization, project, routerProps, router} = initializeOrg({
organization: {
features: [
'alert-crash-free-metrics',
'incidents',
'performance-view',
'crash-rate-alerts',
],
access: ['org:write', 'alerts:write'],
},
});
render(
,
{router, organization}
);
expect(screen.getByText('Uptime Monitor')).toBeInTheDocument();
});
});