diff --git a/dev/bots/check_code_samples.dart b/dev/bots/check_code_samples.dart
index a6b363c..65faf0e 100644
--- a/dev/bots/check_code_samples.dart
+++ b/dev/bots/check_code_samples.dart
@@ -431,7 +431,6 @@
   'examples/api/test/widgets/image/image.frame_builder.0_test.dart',
   'examples/api/test/widgets/image/image.loading_builder.0_test.dart',
   'examples/api/test/widgets/shortcuts/logical_key_set.0_test.dart',
-  'examples/api/test/widgets/shortcuts/callback_shortcuts.0_test.dart',
   'examples/api/test/widgets/page_storage/page_storage.0_test.dart',
   'examples/api/test/widgets/scrollbar/raw_scrollbar.1_test.dart',
   'examples/api/test/widgets/scrollbar/raw_scrollbar.2_test.dart',
diff --git a/examples/api/test/widgets/shortcuts/callback_shortcuts.0.dart b/examples/api/test/widgets/shortcuts/callback_shortcuts.0.dart
deleted file mode 100644
index f0ac673..0000000
--- a/examples/api/test/widgets/shortcuts/callback_shortcuts.0.dart
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright 2014 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import 'package:flutter/services.dart';
-import 'package:flutter_api_samples/widgets/shortcuts/callback_shortcuts.0.dart' as example;
-import 'package:flutter_test/flutter_test.dart';
-
-void main() {
-  testWidgets('CallbackShortcutsApp increments and decrements', (WidgetTester tester) async {
-    await tester.pumpWidget(
-      const example.CallbackShortcutsApp(),
-    );
-
-    expect(find.text('count: 0'), findsOneWidget);
-
-    // Increment the counter.
-    await tester.sendKeyEvent(LogicalKeyboardKey.arrowUp);
-    await tester.pump();
-
-    expect(find.text('count: 1'), findsOneWidget);
-
-    // Decrement the counter.
-    await tester.sendKeyEvent(LogicalKeyboardKey.arrowDown);
-    await tester.pump();
-
-    expect(find.text('count: 0'), findsOneWidget);
-  });
-}
diff --git a/examples/api/test/widgets/shortcuts/callback_shortcuts.0_test.dart b/examples/api/test/widgets/shortcuts/callback_shortcuts.0_test.dart
new file mode 100644
index 0000000..d65eccc
--- /dev/null
+++ b/examples/api/test/widgets/shortcuts/callback_shortcuts.0_test.dart
@@ -0,0 +1,55 @@
+// Copyright 2014 The Flutter Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+import 'package:flutter/services.dart';
+import 'package:flutter_api_samples/widgets/shortcuts/callback_shortcuts.0.dart'
+    as example;
+import 'package:flutter_test/flutter_test.dart';
+
+void main() {
+  testWidgets('Verify correct labels are displayed', (WidgetTester tester) async {
+    await tester.pumpWidget(
+      const example.CallbackShortcutsApp(),
+    );
+
+    expect(find.text('CallbackShortcuts Sample'), findsOneWidget);
+    expect(
+      find.text('Press the up arrow key to add to the counter'),
+      findsOneWidget,
+    );
+    expect(
+      find.text('Press the down arrow key to subtract from the counter'),
+      findsOneWidget,
+    );
+    expect(find.text('count: 0'), findsOneWidget);
+  });
+
+  testWidgets('Up and down arrow press updates counter', (WidgetTester tester) async {
+    await tester.pumpWidget(
+      const example.CallbackShortcutsApp(),
+    );
+
+    int counter = 0;
+
+    while (counter < 10) {
+      expect(find.text('count: $counter'), findsOneWidget);
+
+      // Increment the counter.
+      await tester.sendKeyEvent(LogicalKeyboardKey.arrowUp);
+      await tester.pump();
+
+      counter++;
+    }
+
+    while (counter >= 0) {
+      expect(find.text('count: $counter'), findsOneWidget);
+
+      // Decrement the counter.
+      await tester.sendKeyEvent(LogicalKeyboardKey.arrowDown);
+      await tester.pump();
+
+      counter--;
+    }
+  });
+}
