import type { OptionsWithExtraProps, SnackbarMessage, VariantType, SnackbarKey } from 'notistack'; import { useSnackbar } from 'notistack'; type ExtendedOptionsWithExtraProps = OptionsWithExtraProps & { SnackbarProps?: OptionsWithExtraProps & { 'data-test'?: string; } } export default function useEnqueueSnackbar() { const { enqueueSnackbar, closeSnackbar } = useSnackbar(); return function wrappedEnqueueSnackbar(message: SnackbarMessage, options: ExtendedOptionsWithExtraProps) { const key: SnackbarKey = enqueueSnackbar( message, { ...(options || {}) as Record, SnackbarProps: { onClick: () => closeSnackbar(key), ...({ 'data-test': 'snackbar', // keep above options.snackbarProps 'data-snackbar-variant': `${options.variant}` || 'default', }) as Record, ...(options.SnackbarProps || {}) as Record, } } ); return key; }; }