hydrateBreadcrumbs.spec.tsx 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. import hydrateBreadcrumbs, {
  2. replayInitBreadcrumb,
  3. } from 'sentry/utils/replays/hydrateBreadcrumbs';
  4. import {BreadcrumbFrame} from 'sentry/utils/replays/types';
  5. const ONE_DAY_MS = 60 * 60 * 24 * 1000;
  6. describe('hydrateBreadcrumbs', () => {
  7. const replayRecord = TestStubs.ReplayRecord({started_at: new Date('2023/12/23')});
  8. it('should set the timestampMs and offsetMs for each breadcrumb in the list', () => {
  9. const breadcrumbs = [
  10. TestStubs.Replay.ConsoleFrame({timestamp: new Date('2023/12/23')}),
  11. TestStubs.Replay.ConsoleFrame({timestamp: new Date('2023/12/24')}),
  12. TestStubs.Replay.ConsoleFrame({timestamp: new Date('2023/12/25')}),
  13. ];
  14. expect(hydrateBreadcrumbs(replayRecord, breadcrumbs)).toStrictEqual([
  15. {
  16. category: 'console',
  17. data: {logger: 'unknown'},
  18. level: 'fatal',
  19. message: '',
  20. type: 'debug',
  21. timestamp: new Date('2023/12/23'),
  22. timestampMs: 1703307600000,
  23. offsetMs: 0,
  24. },
  25. {
  26. category: 'console',
  27. data: {logger: 'unknown'},
  28. level: 'fatal',
  29. message: '',
  30. type: 'debug',
  31. timestamp: new Date('2023/12/24'),
  32. timestampMs: 1703307600000 + ONE_DAY_MS,
  33. offsetMs: ONE_DAY_MS,
  34. },
  35. {
  36. category: 'console',
  37. data: {logger: 'unknown'},
  38. level: 'fatal',
  39. message: '',
  40. type: 'debug',
  41. timestamp: new Date('2023/12/25'),
  42. timestampMs: 1703307600000 + ONE_DAY_MS * 2,
  43. offsetMs: ONE_DAY_MS * 2,
  44. },
  45. ]);
  46. });
  47. it('should drop breadcrumbs that cannot be parsed', () => {
  48. const breadcrumbs = [{foo: 'bar'}];
  49. // @ts-expect-error: Explicitly test invalid input
  50. expect(hydrateBreadcrumbs(replayRecord, breadcrumbs)).toStrictEqual([]);
  51. });
  52. });
  53. describe('replayInitBreadcrumb', () => {
  54. it('should return a RecordingFrame', () => {
  55. const replayRecord = TestStubs.ReplayRecord({});
  56. const frame: BreadcrumbFrame = replayInitBreadcrumb(replayRecord);
  57. expect(frame).toStrictEqual({
  58. category: 'replay.init',
  59. message: 'http://localhost:3000/',
  60. offsetMs: 0,
  61. timestamp: replayRecord.started_at,
  62. timestampMs: 1663865919000,
  63. type: 'init',
  64. });
  65. });
  66. });