Skip to content

Commit 2122e48

Browse files
author
iexitdev
committed
test(release): validate performance story metrics
1 parent b9fc50a commit 2122e48

6 files changed

Lines changed: 244 additions & 34 deletions

File tree

apps/expo-showcase/src/stories/performanceStories.tsx

Lines changed: 34 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import {
1717
type NativeStoryProps,
1818
type ShowcaseStory
1919
} from "./storyPrimitives";
20+
import performanceStoryMetadata from "./performanceStoryMetadata.json";
2021

2122
type PerfLinePoint = {
2223
benchmark: number;
@@ -122,12 +123,33 @@ const createCandles = (count: number): PerfCandlePoint[] => {
122123
return candles;
123124
};
124125

125-
const line100 = createLineData(100);
126-
const line1000 = createLineData(1000);
127-
const line10000 = createLineData(10000);
128-
const bars500 = createBarData(500);
129-
const combinedPerf = createCombinedData(36);
130-
const candles1000 = createCandles(1000);
126+
const getStoryMetadata = (storyId: string) => {
127+
const metadata = performanceStoryMetadata.stories.find(
128+
(story) => story.id === storyId
129+
);
130+
131+
if (!metadata) {
132+
throw new Error(`Missing performance story metadata for ${storyId}`);
133+
}
134+
135+
return metadata;
136+
};
137+
138+
const line100Metadata = getStoryMetadata("v2-perf-line-100");
139+
const line1000Metadata = getStoryMetadata("v2-perf-line-1000-scrub");
140+
const line10000Metadata = getStoryMetadata("v2-perf-line-10000-overview");
141+
const panLineMetadata = getStoryMetadata("v2-perf-line-10000-pan");
142+
const rangeMetadata = getStoryMetadata("v2-perf-range-2x10000");
143+
const barMetadata = getStoryMetadata("v2-perf-bar-500-selection");
144+
const combinedMetadata = getStoryMetadata("v2-perf-combined-tooltip");
145+
const candleMetadata = getStoryMetadata("v2-perf-candlestick-1000");
146+
147+
const line100 = createLineData(line100Metadata.totalPoints);
148+
const line1000 = createLineData(line1000Metadata.totalPoints);
149+
const line10000 = createLineData(line10000Metadata.totalPoints);
150+
const bars500 = createBarData(barMetadata.totalPoints);
151+
const combinedPerf = createCombinedData(combinedMetadata.totalPoints);
152+
const candles1000 = createCandles(candleMetadata.totalPoints);
131153

132154
const PerfSmallLine = ({ width }: NativeStoryProps) => (
133155
<ChartSection title="100 point line" kicker="Native performance">
@@ -230,8 +252,8 @@ const PerfMultiLineSharedTooltip = ({
230252

231253
const PerfPanLine = ({ onScrubEnd, onScrubStart, width }: NativeStoryProps) => {
232254
const [viewport, setViewport] = useState<LineChartViewportConfig>({
233-
endIndex: 9999,
234-
startIndex: 8000
255+
endIndex: panLineMetadata.totalPoints - 1,
256+
startIndex: panLineMetadata.totalPoints - panLineMetadata.visiblePoints
235257
});
236258
const handleViewportChange = useCallback(
237259
(event: LineChartViewportChangeEvent) => setViewport(event.viewport),
@@ -271,8 +293,8 @@ const PerfRangeSelector = ({
271293
width
272294
}: NativeStoryProps) => {
273295
const [viewport, setViewport] = useState<LineChartViewportConfig>({
274-
endIndex: 9999,
275-
startIndex: 8500
296+
endIndex: rangeMetadata.totalPoints - 1,
297+
startIndex: rangeMetadata.totalPoints - rangeMetadata.visiblePoints
276298
});
277299
const handleViewportChange = useCallback(
278300
(event: LineChartViewportChangeEvent) => setViewport(event.viewport),
@@ -363,8 +385,8 @@ const PerfCandlestick = ({
363385
width
364386
}: NativeStoryProps) => {
365387
const [viewport, setViewport] = useState<CandlestickChartViewportConfig>({
366-
endIndex: 999,
367-
startIndex: 920
388+
endIndex: candleMetadata.totalPoints - 1,
389+
startIndex: candleMetadata.totalPoints - candleMetadata.visiblePoints
368390
});
369391
const handleViewportChange = useCallback(
370392
(event: { viewport: CandlestickChartViewportConfig }) =>
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
{
2+
"schemaVersion": 1,
3+
"stories": [
4+
{
5+
"id": "v2-perf-line-100",
6+
"scenarioId": "small-line-initial-render",
7+
"chartType": "line",
8+
"totalPoints": 100,
9+
"seriesCount": 1,
10+
"visiblePoints": 100
11+
},
12+
{
13+
"id": "v2-perf-line-1000-scrub",
14+
"scenarioId": "standard-line-scrub",
15+
"chartType": "line",
16+
"totalPoints": 1000,
17+
"seriesCount": 1,
18+
"visiblePoints": 1000
19+
},
20+
{
21+
"id": "v2-perf-line-10000-overview",
22+
"scenarioId": "dense-line-decimated-overview",
23+
"chartType": "line",
24+
"totalPoints": 10000,
25+
"seriesCount": 1,
26+
"visiblePoints": 10000
27+
},
28+
{
29+
"id": "v2-perf-line-5x1000-tooltip",
30+
"scenarioId": "multi-line-shared-tooltip-scrub",
31+
"chartType": "line",
32+
"totalPoints": 1000,
33+
"seriesCount": 5,
34+
"visiblePoints": 1000
35+
},
36+
{
37+
"id": "v2-perf-line-10000-pan",
38+
"scenarioId": "scrollable-line-one-finger-pan",
39+
"chartType": "line",
40+
"totalPoints": 10000,
41+
"seriesCount": 1,
42+
"visiblePoints": 2000
43+
},
44+
{
45+
"id": "v2-perf-range-2x10000",
46+
"scenarioId": "range-selector-drag-and-thumb-resize",
47+
"chartType": "line",
48+
"totalPoints": 10000,
49+
"seriesCount": 2,
50+
"visiblePoints": 1500
51+
},
52+
{
53+
"id": "v2-perf-bar-500-selection",
54+
"scenarioId": "scrollable-bar-horizontal-scroll-and-selection",
55+
"chartType": "bar",
56+
"totalPoints": 500,
57+
"seriesCount": 1,
58+
"visiblePoints": 24
59+
},
60+
{
61+
"id": "v2-perf-combined-tooltip",
62+
"scenarioId": "combined-chart-shared-tooltip-and-legend",
63+
"chartType": "combined",
64+
"totalPoints": 36,
65+
"seriesCount": 2,
66+
"visiblePoints": 36
67+
},
68+
{
69+
"id": "v2-perf-candlestick-1000",
70+
"scenarioId": "candlestick-pan-pinch-and-tap-inspection",
71+
"chartType": "candlestick",
72+
"totalPoints": 1000,
73+
"seriesCount": 1,
74+
"visiblePoints": 80
75+
}
76+
]
77+
}

0 commit comments

Comments
 (0)