chain-studio/test/widget_test.dart
flemming-it a173eec1d0 feat: F∆I Studio MVP scaffold (Tier-2 desktop GUI)
Initial scaffold for the F∆I Platform Tier-2 generic GUI client.
Flutter Desktop (macOS, Linux, Windows). Three MVP pages with
mock data, sharing one navigation shell:

- Modules — installed modules with capabilities, declared
  permissions and required services.
- Audit — event-stream view with type filter and tone-coded
  rows (started / completed / failed).
- Approvals — pending system.approval@^0 reviews with prompt,
  payload preview, and approve/reject buttons.

Live gRPC connection arrives in the next iteration via
fai_dart_sdk (sibling repo, currently a typed stub).

Future Forgejo path: fai/studio. Local layout matches existing
fai_platform/ convention.

Background: see docs/architecture/client.md in the platform
repo. The tier-2 client was previously called "Stage" — renamed
to "Studio" on 2026-05-05 to avoid confusion with
"staging environment".

flutter analyze: clean. flutter test: 2/2.

Signed-off-by: flemming-it <stefan.a.flemming@googlemail.com>
2026-05-05 14:19:39 +02:00

28 lines
912 B
Dart

// Smoke test: app boots, navigation rail shows the three MVP
// pages, and the Modules page renders the mocked module list.
import 'package:flutter_test/flutter_test.dart';
import 'package:fai_studio/main.dart';
void main() {
testWidgets('Studio shell shows the three MVP destinations',
(tester) async {
await tester.pumpWidget(const StudioApp());
await tester.pump();
expect(find.text('F∆I Studio'), findsOneWidget);
expect(find.text('Modules'), findsWidgets);
expect(find.text('Audit'), findsOneWidget);
expect(find.text('Approvals'), findsOneWidget);
});
testWidgets('Modules page lists the mocked modules',
(tester) async {
await tester.pumpWidget(const StudioApp());
await tester.pump();
expect(find.text('echo'), findsOneWidget);
expect(find.text('text-extract'), findsOneWidget);
expect(find.text('llm-chat'), findsOneWidget);
});
}