measure static method

Future<FrameGuardReport> measure(
  1. WidgetTester tester, {
  2. required String name,
  3. required Future<void> action(),
  4. FrameGuardSessionOptions? options,
  5. FrameBudget? budget,
  6. int warmupFrames = 5,
  7. Duration? warmup,
})

Measures action under a FrameGuard session and returns the report.

Ensures FrameGuard is initialized. Prefer profile/release for meaningful timings; debug mode still works but reports a warning.

Implementation

static Future<FrameGuardReport> measure(
  WidgetTester tester, {
  required String name,
  required Future<void> Function() action,
  FrameGuardSessionOptions? options,
  FrameBudget? budget,
  int warmupFrames = 5,
  Duration? warmup,
}) async {
  if (!FrameGuard.isInitialized) {
    FrameGuard.initialize();
  }

  final session = FrameGuard.startSession(
    name: name,
    options: options,
    budget: budget,
    warmupFrames: warmupFrames,
    warmup: warmup,
  );

  await action();
  // Allow pending frames to flush into timings callbacks.
  await tester.pump();
  await tester.pump(const Duration(milliseconds: 16));

  final report = await session.stop();
  FrameGuard.instance.clearActiveSession(session);
  return report;
}