uiFramesRenderer.spec.tsx 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. import {vec2} from 'gl-matrix';
  2. import {makeCanvasMock, makeContextMock} from 'sentry-test/profiling/utils';
  3. import {UIFramesRenderer} from 'sentry/utils/profiling/renderers/uiFramesRenderer';
  4. import {Rect} from 'sentry/utils/profiling/speedscope';
  5. import {UIFrames} from 'sentry/utils/profiling/uiFrames';
  6. import {LightFlamegraphTheme} from '../flamegraph/flamegraphTheme';
  7. describe('UIFramesRenderer', () => {
  8. const canvas = makeCanvasMock({
  9. getContext: jest.fn().mockReturnValue(makeContextMock()),
  10. });
  11. const uiFrames = new UIFrames(
  12. {
  13. frozen: {
  14. unit: 'nanoseconds',
  15. values: [
  16. {
  17. elapsed_since_start_ns: 1,
  18. value: 1,
  19. },
  20. {
  21. elapsed_since_start_ns: 3,
  22. value: 1,
  23. },
  24. {
  25. elapsed_since_start_ns: 5.5,
  26. value: 1,
  27. },
  28. ],
  29. },
  30. slow: {
  31. unit: 'nanoseconds',
  32. values: [
  33. {
  34. elapsed_since_start_ns: 3,
  35. value: 1,
  36. },
  37. {
  38. elapsed_since_start_ns: 5,
  39. value: 1,
  40. },
  41. ],
  42. },
  43. },
  44. {unit: 'nanoseconds'},
  45. new Rect(0, 0, 10, 1)
  46. );
  47. const renderer = new UIFramesRenderer(canvas, uiFrames, LightFlamegraphTheme);
  48. it.each([
  49. [vec2.fromValues(-1, 0), null],
  50. [vec2.fromValues(11, 0), null],
  51. [vec2.fromValues(0.1, 0), [uiFrames.frames[0]]],
  52. [vec2.fromValues(2.5, 0), [uiFrames.frames[1], uiFrames.frames[2]]],
  53. [vec2.fromValues(4.5, 0), [uiFrames.frames[3], uiFrames.frames[4]]],
  54. ])('finds hovered node', (cursor, expected) => {
  55. const results = renderer.findHoveredNode(cursor, uiFrames.configSpace);
  56. if (Array.isArray(expected) && Array.isArray(results)) {
  57. for (let i = 0; i < results?.length; i++) {
  58. expect(results[i]).toBe(expected[i]);
  59. }
  60. } else {
  61. expect(results).toEqual(expected);
  62. }
  63. });
  64. });