68 lines
1.9 KiB
Dart
68 lines
1.9 KiB
Dart
import 'dart:io';
|
|
|
|
import 'package:flutter/material.dart';
|
|
import 'package:flutter_test/flutter_test.dart';
|
|
import 'package:oto_console/oto_console.dart';
|
|
|
|
void main() {
|
|
test('exports console contract models without shell dependency', () {
|
|
expect(
|
|
OtoConsoleSection.values.map((section) => section.name),
|
|
containsAllInOrder([
|
|
'overview',
|
|
'runners',
|
|
'pipelines',
|
|
'executions',
|
|
'artifacts',
|
|
'agent',
|
|
'settings',
|
|
]),
|
|
);
|
|
|
|
final contractFile = File('lib/src/oto_console_contract.dart');
|
|
final contractSource =
|
|
(contractFile.existsSync()
|
|
? contractFile
|
|
: File(
|
|
'packages/flutter/oto_console/lib/src/oto_console_contract.dart',
|
|
))
|
|
.readAsStringSync();
|
|
expect(contractSource, isNot(contains('oto_console_shell.dart')));
|
|
});
|
|
|
|
testWidgets('renders embeddable OTO console shell', (tester) async {
|
|
const config = OtoConsoleConfig(
|
|
serverHttpUrl: 'http://localhost:8080',
|
|
serverWireUrl: 'ws://localhost:18080/runner',
|
|
);
|
|
|
|
await tester.pumpWidget(
|
|
const MaterialApp(
|
|
home: OtoConsoleShell(
|
|
config: config,
|
|
capabilities: OtoCapabilityPack(
|
|
capabilities: [
|
|
OtoCapability(
|
|
name: 'Remote Run',
|
|
description: 'Dispatch remote build runs.',
|
|
),
|
|
],
|
|
),
|
|
overview: OtoConsoleOverview(
|
|
config: config,
|
|
statusText: 'Disconnected',
|
|
),
|
|
),
|
|
),
|
|
);
|
|
|
|
expect(find.text('Build Operations Overview'), findsOneWidget);
|
|
expect(find.byTooltip('Agent'), findsOneWidget);
|
|
|
|
await tester.tap(find.byTooltip('Agent'));
|
|
await tester.pumpAndSettle();
|
|
|
|
expect(find.textContaining('OTO agent surface is ready'), findsOneWidget);
|
|
expect(find.textContaining('Remote Run'), findsOneWidget);
|
|
});
|
|
}
|