diff --git a/.betterer.results b/.betterer.results index 90befadff48..b34a711b13a 100644 --- a/.betterer.results +++ b/.betterer.results @@ -11,9 +11,6 @@ exports[`no enzyme tests`] = { "packages/jaeger-ui-components/src/TracePageHeader/SpanGraph/ViewingLayer.test.tsx:793800575": [ [14, 35, 13, "RegExp match", "2409514259"] ], - "packages/jaeger-ui-components/src/TracePageHeader/SpanGraph/index.test.tsx:596989456": [ - [14, 35, 13, "RegExp match", "2409514259"] - ], "packages/jaeger-ui-components/src/TraceTimelineViewer/ListView/index.test.tsx:3266788928": [ [14, 56, 13, "RegExp match", "2409514259"] ], diff --git a/packages/jaeger-ui-components/src/TracePageHeader/SpanGraph/CanvasSpanGraph.tsx b/packages/jaeger-ui-components/src/TracePageHeader/SpanGraph/CanvasSpanGraph.tsx index a0454c80009..d114bf03130 100644 --- a/packages/jaeger-ui-components/src/TracePageHeader/SpanGraph/CanvasSpanGraph.tsx +++ b/packages/jaeger-ui-components/src/TracePageHeader/SpanGraph/CanvasSpanGraph.tsx @@ -72,7 +72,13 @@ export class UnthemedCanvasSpanGraph extends React.PureComponent; + return ( + + ); } } diff --git a/packages/jaeger-ui-components/src/TracePageHeader/SpanGraph/TickLabels.tsx b/packages/jaeger-ui-components/src/TracePageHeader/SpanGraph/TickLabels.tsx index 132efa0f9a1..e63dd89018b 100644 --- a/packages/jaeger-ui-components/src/TracePageHeader/SpanGraph/TickLabels.tsx +++ b/packages/jaeger-ui-components/src/TracePageHeader/SpanGraph/TickLabels.tsx @@ -56,5 +56,9 @@ export default function TickLabels(props: TickLabelsProps) { ); } - return
{ticks}
; + return ( +
+ {ticks} +
+ ); } diff --git a/packages/jaeger-ui-components/src/TracePageHeader/SpanGraph/index.test.tsx b/packages/jaeger-ui-components/src/TracePageHeader/SpanGraph/index.test.tsx index ba8d949e2fc..a1d45aa2454 100644 --- a/packages/jaeger-ui-components/src/TracePageHeader/SpanGraph/index.test.tsx +++ b/packages/jaeger-ui-components/src/TracePageHeader/SpanGraph/index.test.tsx @@ -12,23 +12,21 @@ // See the License for the specific language governing permissions and // limitations under the License. -import { shallow, ShallowWrapper } from 'enzyme'; +import { getAllByTestId, render, screen } from '@testing-library/react'; import React from 'react'; import traceGenerator from '../../demo/trace-generators'; import transformTraceData from '../../model/transform-trace-data'; import { polyfill as polyfillAnimationFrame } from '../../utils/test/requestAnimationFrame'; -import CanvasSpanGraph from './CanvasSpanGraph'; import TickLabels from './TickLabels'; -import ViewingLayer, { ViewingLayerProps, UnthemedViewingLayer } from './ViewingLayer'; -import SpanGraph, { SpanGraphProps } from './index'; +import SpanGraph, { SpanGraphProps, TIMELINE_TICK_INTERVAL } from './index'; describe('', () => { polyfillAnimationFrame(window); - const trace = transformTraceData(traceGenerator.trace({})); + const trace = transformTraceData(traceGenerator.trace({}))!; const props = { trace, updateViewRangeTime: () => {}, @@ -39,52 +37,35 @@ describe('', () => { }, }; - let wrapper: ShallowWrapper; - beforeEach(() => { - wrapper = shallow(); + render(); }); - it('renders a ', () => { - expect(wrapper.find(CanvasSpanGraph).length).toBe(1); + it('renders ', () => { + const canvasSpanGraphComponent = screen.getByTestId('CanvasSpanGraph'); + expect(canvasSpanGraphComponent).toBeTruthy(); }); - it('renders a ', () => { - expect(wrapper.find(TickLabels).length).toBe(1); + it('renders ', () => { + const tickLabelsComponent = screen.getByTestId('TickLabels'); + expect(tickLabelsComponent).toBeTruthy(); }); - it('returns a
if a trace is not provided', () => { - wrapper = shallow(); - expect(wrapper.matchesElement(
)).toBeTruthy(); + it('returns an empty div if a trace is not provided', () => { + const { container } = render(); + expect(container.firstChild).toBeEmptyDOMElement(); }); - it('passes the number of ticks to render to components', () => { - const tickHeader = wrapper.find(TickLabels); - const viewingLayer = wrapper.find(ViewingLayer); - expect(tickHeader.prop('numTicks')).toBeGreaterThan(1); - expect(viewingLayer.prop('numTicks')).toBeGreaterThan(1); - expect(tickHeader.prop('numTicks')).toBe(viewingLayer.prop('numTicks')); + it('renders with the correct numnber of ticks', async () => { + const tickLabelsDiv = screen.getByTestId('TickLabels'); + expect(getAllByTestId(tickLabelsDiv, 'tick').length).toBe(TIMELINE_TICK_INTERVAL + 1); }); - it('passes items to CanvasSpanGraph', () => { - const canvasGraph = wrapper.find(CanvasSpanGraph).first(); - const items = trace?.spans.map((span) => ({ - valueOffset: span.relativeStartTime, - valueWidth: span.duration, - serviceName: span.process.serviceName, - })); - expect(canvasGraph.prop('items')).toEqual(items); - }); - - it('does not regenerate CanvasSpanGraph without new trace', () => { - const canvasGraph = wrapper.find(CanvasSpanGraph).first(); - const items = canvasGraph.prop('items'); - - wrapper.instance().forceUpdate(); - - const newCanvasGraph = wrapper.find(CanvasSpanGraph).first(); - const newItems = newCanvasGraph.prop('items'); - - expect(newItems).toBe(items); + it('renders with the correct value next to each tick', () => { + render(); + expect(screen.getByText(/0.2/)).toBeTruthy(); + expect(screen.getByText(/0.4/)).toBeTruthy(); + expect(screen.getByText(/0.6/)).toBeTruthy(); + expect(screen.getByText(/0.8/)).toBeTruthy(); }); }); diff --git a/packages/jaeger-ui-components/src/TracePageHeader/SpanGraph/index.tsx b/packages/jaeger-ui-components/src/TracePageHeader/SpanGraph/index.tsx index 8133aaaa8e9..3a1a0275e72 100644 --- a/packages/jaeger-ui-components/src/TracePageHeader/SpanGraph/index.tsx +++ b/packages/jaeger-ui-components/src/TracePageHeader/SpanGraph/index.tsx @@ -25,7 +25,7 @@ import TickLabels from './TickLabels'; import ViewingLayer from './ViewingLayer'; const DEFAULT_HEIGHT = 60; -const TIMELINE_TICK_INTERVAL = 4; +export const TIMELINE_TICK_INTERVAL = 4; export type SpanGraphProps = { height?: number;