Skip to content

Commit 95c69e3

Browse files
authored
Fix flaky app start tests (#2157)
1 parent b20509a commit 95c69e3

File tree

1 file changed

+18
-17
lines changed

1 file changed

+18
-17
lines changed

flutter/test/integrations/native_app_start_integration_test.dart

+18-17
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,15 @@ void main() {
2525
.thenAnswer((_) async => SentryId.empty());
2626
}
2727

28+
Future<void> registerIntegration(Fixture fixture) async {
29+
await fixture.registerIntegration();
30+
// Wait for the app start info to be fetched
31+
// This ensures that setAppStartInfo has been called, which happens asynchronously
32+
// in a post-frame callback. Waiting here prevents race conditions in subsequent tests
33+
// that might depend on or modify the app start info.
34+
await NativeAppStartIntegration.getAppStartInfo();
35+
}
36+
2837
group('$NativeAppStartIntegration', () {
2938
late Fixture fixture;
3039

@@ -44,8 +53,7 @@ void main() {
4453
NativeAppStartIntegration.appStartEnd =
4554
DateTime.fromMillisecondsSinceEpoch(10);
4655

47-
await fixture.registerIntegration();
48-
56+
await registerIntegration(fixture);
4957
final tracer = fixture.createTracer();
5058
final transaction = SentryTransaction(tracer);
5159

@@ -63,8 +71,7 @@ void main() {
6371
NativeAppStartIntegration.appStartEnd =
6472
DateTime.fromMillisecondsSinceEpoch(10);
6573

66-
await fixture.registerIntegration();
67-
74+
await registerIntegration(fixture);
6875
final tracer = fixture.createTracer();
6976
final transaction = SentryTransaction(tracer);
7077

@@ -83,8 +90,7 @@ void main() {
8390
DateTime.fromMillisecondsSinceEpoch(10);
8491
final measurement = SentryMeasurement.warmAppStart(Duration(seconds: 1));
8592

86-
await fixture.registerIntegration();
87-
93+
await registerIntegration(fixture);
8894
final tracer = fixture.createTracer();
8995
final transaction = SentryTransaction(tracer).copyWith();
9096
transaction.measurements[measurement.name] = measurement;
@@ -104,8 +110,7 @@ void main() {
104110
NativeAppStartIntegration.appStartEnd =
105111
DateTime.fromMillisecondsSinceEpoch(60001);
106112

107-
await fixture.registerIntegration();
108-
113+
await registerIntegration(fixture);
109114
final tracer = fixture.createTracer();
110115
final transaction = SentryTransaction(tracer);
111116

@@ -121,8 +126,7 @@ void main() {
121126
NativeAppStartIntegration.appStartEnd =
122127
DateTime.fromMillisecondsSinceEpoch(10);
123128

124-
await fixture.registerIntegration();
125-
129+
await registerIntegration(fixture);
126130
final appStartInfo = await NativeAppStartIntegration.getAppStartInfo();
127131
expect(appStartInfo?.start, DateTime.fromMillisecondsSinceEpoch(0));
128132
expect(appStartInfo?.end, DateTime.fromMillisecondsSinceEpoch(10));
@@ -133,7 +137,7 @@ void main() {
133137
() async {
134138
fixture.options.autoAppStart = false;
135139

136-
await fixture.registerIntegration();
140+
await registerIntegration(fixture);
137141

138142
final tracer = fixture.createTracer();
139143
final transaction = SentryTransaction(tracer);
@@ -155,8 +159,7 @@ void main() {
155159
const Duration(seconds: 5));
156160
fixture.options.autoAppStart = false;
157161

158-
await fixture.registerIntegration();
159-
162+
await registerIntegration(fixture);
160163
final tracer = fixture.createTracer();
161164
final transaction = SentryTransaction(tracer);
162165

@@ -175,8 +178,7 @@ void main() {
175178
() async {
176179
fixture.options.autoAppStart = false;
177180

178-
await fixture.registerIntegration();
179-
181+
await registerIntegration(fixture);
180182
SentryFlutter.setAppStartEnd(DateTime.fromMillisecondsSinceEpoch(10));
181183

182184
final tracer = fixture.createTracer();
@@ -272,8 +274,7 @@ void main() {
272274
when(fixture.binding.fetchNativeAppStart())
273275
.thenAnswer((_) async => appStartInfoSrc);
274276

275-
await fixture.registerIntegration();
276-
277+
await registerIntegration(fixture);
277278
final processor = fixture.options.eventProcessors.first;
278279
tracer = fixture.createTracer();
279280
final transaction = SentryTransaction(tracer);

0 commit comments

Comments
 (0)