diff --git a/lib/app.dart b/lib/app.dart index 401a138d..4da83a50 100644 --- a/lib/app.dart +++ b/lib/app.dart @@ -81,6 +81,7 @@ class JournalApp extends StatelessWidget { } return MaterialApp( + key: ValueKey("App"), title: 'GitJournal', theme: ThemeData( brightness: Brightness.light, diff --git a/lib/screens/home_screen.dart b/lib/screens/home_screen.dart index cf7427b7..f657e2a5 100644 --- a/lib/screens/home_screen.dart +++ b/lib/screens/home_screen.dart @@ -16,6 +16,7 @@ class HomeScreen extends StatelessWidget { final appState = container.appState; var createButton = FloatingActionButton( + key: ValueKey("FAB"), onPressed: () => _newPost(context), child: Icon(Icons.add), ); @@ -51,6 +52,7 @@ class HomeScreen extends StatelessWidget { bool shouldShowBadge = !appState.remoteGitRepoConfigured && appState.hasJournalEntries; var appBarMenuButton = BadgeIconButton( + key: ValueKey("DrawerButton"), icon: const Icon(Icons.menu), itemCount: shouldShowBadge ? 1 : 0, onPressed: () { diff --git a/test_driver/main_test.dart b/test_driver/main_test.dart index f0b81a68..856ef28f 100644 --- a/test_driver/main_test.dart +++ b/test_driver/main_test.dart @@ -5,8 +5,6 @@ import 'package:test/test.dart'; void main() { group('Test', () { - final loadedFinder = find.text('Why not add your first\n Journal Entry?'); - FlutterDriver driver; int screenshotNum = 0; @@ -24,14 +22,49 @@ void main() { Future _takeScreenshot() async { var filePath = screenshotNum.toString() + ".png"; + screenshotNum += 1; + + print("Taking screenshot $filePath"); final file = await File(filePath).create(recursive: true); final pixels = await driver.screenshot(); await file.writeAsBytes(pixels); } test('Anonymous GitClone works', () async { + final loadedFinder = find.text('Why not add your first\n Journal Entry?'); await driver.waitFor(loadedFinder, timeout: Duration(seconds: 5)); await _takeScreenshot(); + + // Open the Drawer + final drawerButtonFinder = find.byValueKey("DrawerButton"); + await driver.tap(drawerButtonFinder); + await Future.delayed(Duration(milliseconds: 500)); + await _takeScreenshot(); + + // The Git Host setup screen + /* + await driver.tap(find.text("Setup Git Host")); + await driver.waitFor(find.text("GitHub"), timeout: Duration(seconds: 2)); + await _takeScreenshot(); + // FIXME: This doesn't seem to work! + await driver.tap(find.pageBack()); + */ + + // Close the drawer + var app = find.byValueKey("App"); + await driver.scroll(app, -300.0, 0.0, const Duration(milliseconds: 300)); + + // Create a new note + var fab = find.byValueKey("FAB"); + await driver.waitFor(fab, timeout: Duration(seconds: 2)); + await driver.tap(fab); + await driver.waitFor(find.text('Write here'), + timeout: Duration(seconds: 2)); + await _takeScreenshot(); + + await driver.enterText( + "Your notes will be saved in Markdown with a YAML header for the metadata.\n\nThe writing experience is clean and distraction free"); + await _takeScreenshot(); }); }); }