nomadcode/apps/mobile/test/widget_test.dart
toki 663919c8b0 refactor: organize roadmap phases and update mobile app structure
- Reorganize roadmap archives into phase-based directory structure
- Add PHASE.md files for each roadmap phase
- Update mobile app: remove Mattermost-specific push notification code
- Update mobile app: migrate to workspace-based authentication
- Update pubspec.yaml and platform configs for nomadcode app
2026-05-25 13:59:24 +09:00

43 lines
1.2 KiB
Dart

import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:nomadcode_app/main.dart';
import 'package:nomadcode_app/screens/workspace_home_page.dart';
import 'package:nomadcode_app/models/project_workspace.dart';
void main() {
testWidgets('App renders console dashboard title', (
WidgetTester tester,
) async {
await tester.pumpWidget(const MyApp());
expect(find.text('NomadCode Console'), findsOneWidget);
expect(find.text('NomadCode Core'), findsNWidgets(2));
expect(find.text('IOP Bridge'), findsOneWidget);
});
testWidgets('WorkspaceHomePage triggers launcher callback on button tap', (
WidgetTester tester,
) async {
ProjectWorkspace? launchedProject;
await tester.pumpWidget(
MaterialApp(
home: WorkspaceHomePage(
onLaunchCodeServer: (project) async {
launchedProject = project;
return true;
},
),
),
);
final buttonFinder = find.widgetWithText(ElevatedButton, 'Open Workspace');
expect(buttonFinder, findsOneWidget);
await tester.tap(buttonFinder);
await tester.pumpAndSettle();
expect(launchedProject, isNotNull);
expect(launchedProject!.id, equals('nomadcode'));
});
}