introducing widget and integration tests
This commit is contained in:
parent
8856a3e54b
commit
84ca3e763a
|
@ -41,4 +41,6 @@ app.*.symbols
|
||||||
app.*.map.json
|
app.*.map.json
|
||||||
|
|
||||||
libCwtch.so
|
libCwtch.so
|
||||||
android/cwtch/cwtch.aar
|
android/cwtch/cwtch.aar
|
||||||
|
coverage
|
||||||
|
test/failures
|
||||||
|
|
|
@ -6,31 +6,33 @@
|
||||||
// tree, read text, and verify that the values of widget properties are correct.
|
// tree, read text, and verify that the values of widget properties are correct.
|
||||||
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter_app/views/addeditprofileview.dart';
|
||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:integration_test/integration_test.dart';
|
import 'package:integration_test/integration_test.dart';
|
||||||
|
|
||||||
import 'package:flutter_app/main.dart' as app;
|
import 'package:flutter_app/main.dart' as app;
|
||||||
|
|
||||||
void main() => run(_testMain);
|
void main() {
|
||||||
|
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
||||||
|
_testMain();
|
||||||
|
}
|
||||||
|
|
||||||
void _testMain() {
|
void _testMain() {
|
||||||
testWidgets('Counter increments smoke test', (WidgetTester tester) async {
|
testWidgets('New profile pane smoke test', (WidgetTester tester) async {
|
||||||
// Build our app and trigger a frame.
|
|
||||||
app.main();
|
app.main();
|
||||||
|
|
||||||
// Trigger a frame.
|
await tester.pump();
|
||||||
await tester.pumpAndSettle();
|
await tester.pump();
|
||||||
|
await tester.pump();
|
||||||
|
//await tester.pumpAndSettle(Duration(seconds: 3), EnginePhase.sendSemanticsUpdate, Duration(seconds: 30));
|
||||||
|
|
||||||
// Verify that our counter starts at 0.
|
|
||||||
expect(find.text('0'), findsOneWidget);
|
|
||||||
expect(find.text('1'), findsNothing);
|
|
||||||
|
|
||||||
// Tap the '+' icon and trigger a frame.
|
|
||||||
await tester.tap(find.byIcon(Icons.add));
|
await tester.tap(find.byIcon(Icons.add));
|
||||||
await tester.pump();
|
await tester.pump();
|
||||||
|
await tester.pump();
|
||||||
|
await tester.pump();
|
||||||
|
|
||||||
// Verify that our counter has incremented.
|
// Verify that our counter has incremented.
|
||||||
expect(find.text('0'), findsNothing);
|
// expect(find.text('0'), findsNothing);
|
||||||
expect(find.text('1'), findsOneWidget);
|
expect(find.byKey(Key('addprofile')), findsOneWidget);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -81,44 +81,7 @@ class FlwtchState extends State<Flwtch> {
|
||||||
localizationsDelegates: AppLocalizations.localizationsDelegates,
|
localizationsDelegates: AppLocalizations.localizationsDelegates,
|
||||||
supportedLocales: AppLocalizations.supportedLocales,
|
supportedLocales: AppLocalizations.supportedLocales,
|
||||||
title: 'Cwtch',
|
title: 'Cwtch',
|
||||||
theme: ThemeData(
|
theme: mkThemeData(opaque),
|
||||||
visualDensity: VisualDensity.adaptivePlatformDensity,
|
|
||||||
primarySwatch: Colors.red,
|
|
||||||
primaryColor: opaque.current().backgroundMainColor(),
|
|
||||||
canvasColor: opaque.current().backgroundPaneColor(),
|
|
||||||
accentColor: opaque.current().defaultButtonColor(),
|
|
||||||
buttonColor: opaque.current().defaultButtonColor(),
|
|
||||||
backgroundColor: opaque.current().backgroundMainColor(),
|
|
||||||
iconTheme: IconThemeData(
|
|
||||||
color: opaque.current().mainTextColor(),
|
|
||||||
),
|
|
||||||
cardColor: opaque.current().backgroundMainColor(),
|
|
||||||
textButtonTheme: TextButtonThemeData(
|
|
||||||
style: ButtonStyle(
|
|
||||||
backgroundColor: MaterialStateProperty.all(opaque.current().defaultButtonColor()),
|
|
||||||
foregroundColor: MaterialStateProperty.all(opaque.current().defaultButtonTextColor()),
|
|
||||||
overlayColor: MaterialStateProperty.all(opaque.current().defaultButtonActiveColor()),
|
|
||||||
padding: MaterialStateProperty.all(EdgeInsets.all(20))),
|
|
||||||
),
|
|
||||||
dialogTheme: DialogTheme(
|
|
||||||
backgroundColor: opaque.current().backgroundPaneColor(),
|
|
||||||
titleTextStyle: TextStyle(color: opaque.current().mainTextColor()),
|
|
||||||
contentTextStyle: TextStyle(color: opaque.current().mainTextColor())),
|
|
||||||
textTheme: TextTheme(
|
|
||||||
headline1: TextStyle(color: opaque.current().mainTextColor()),
|
|
||||||
headline2: TextStyle(color: opaque.current().mainTextColor()),
|
|
||||||
headline3: TextStyle(color: opaque.current().mainTextColor()),
|
|
||||||
headline4: TextStyle(color: opaque.current().mainTextColor()),
|
|
||||||
headline5: TextStyle(color: opaque.current().mainTextColor()),
|
|
||||||
headline6: TextStyle(color: opaque.current().mainTextColor()),
|
|
||||||
bodyText1: TextStyle(color: opaque.current().mainTextColor()),
|
|
||||||
bodyText2: TextStyle(color: opaque.current().mainTextColor()),
|
|
||||||
subtitle1: TextStyle(color: opaque.current().mainTextColor()),
|
|
||||||
subtitle2: TextStyle(color: opaque.current().mainTextColor()),
|
|
||||||
caption: TextStyle(color: opaque.current().mainTextColor()),
|
|
||||||
button: TextStyle(color: opaque.current().mainTextColor()),
|
|
||||||
overline: TextStyle(color: opaque.current().mainTextColor())),
|
|
||||||
),
|
|
||||||
// from dan: home: cwtchInit == true ? ProfileMgrView(cwtch) : SplashView(),
|
// from dan: home: cwtchInit == true ? ProfileMgrView(cwtch) : SplashView(),
|
||||||
// from erinn: home: columns.length == 3 ? TripleColumnView() : ProfileMgrView(),
|
// from erinn: home: columns.length == 3 ? TripleColumnView() : ProfileMgrView(),
|
||||||
home: cwtchInit == true ? (columns.length == 3 ? TripleColumnView() : ProfileMgrView()) : SplashView(),
|
home: cwtchInit == true ? (columns.length == 3 ? TripleColumnView() : ProfileMgrView()) : SplashView(),
|
||||||
|
|
|
@ -6,6 +6,7 @@ import 'dart:ui';
|
||||||
import 'dart:core';
|
import 'dart:core';
|
||||||
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter_app/settings.dart';
|
||||||
|
|
||||||
abstract class OpaqueThemeType {
|
abstract class OpaqueThemeType {
|
||||||
static final Color red = Color(0xFFFF0000);
|
static final Color red = Color(0xFFFF0000);
|
||||||
|
@ -1339,3 +1340,44 @@ class Opaque extends OpaqueThemeType {
|
||||||
return textMediumPt();
|
return textMediumPt();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ThemeData mkThemeData(Settings opaque) {
|
||||||
|
return ThemeData(
|
||||||
|
visualDensity: VisualDensity.adaptivePlatformDensity,
|
||||||
|
primarySwatch: Colors.red,
|
||||||
|
primaryColor: opaque.current().backgroundMainColor(),
|
||||||
|
canvasColor: opaque.current().backgroundPaneColor(),
|
||||||
|
accentColor: opaque.current().defaultButtonColor(),
|
||||||
|
buttonColor: opaque.current().defaultButtonColor(),
|
||||||
|
backgroundColor: opaque.current().backgroundMainColor(),
|
||||||
|
iconTheme: IconThemeData(
|
||||||
|
color: opaque.current().mainTextColor(),
|
||||||
|
),
|
||||||
|
cardColor: opaque.current().backgroundMainColor(),
|
||||||
|
textButtonTheme: TextButtonThemeData(
|
||||||
|
style: ButtonStyle(
|
||||||
|
backgroundColor: MaterialStateProperty.all(opaque.current().defaultButtonColor()),
|
||||||
|
foregroundColor: MaterialStateProperty.all(opaque.current().defaultButtonTextColor()),
|
||||||
|
overlayColor: MaterialStateProperty.all(opaque.current().defaultButtonActiveColor()),
|
||||||
|
padding: MaterialStateProperty.all(EdgeInsets.all(20))),
|
||||||
|
),
|
||||||
|
dialogTheme: DialogTheme(
|
||||||
|
backgroundColor: opaque.current().backgroundPaneColor(),
|
||||||
|
titleTextStyle: TextStyle(color: opaque.current().mainTextColor()),
|
||||||
|
contentTextStyle: TextStyle(color: opaque.current().mainTextColor())),
|
||||||
|
textTheme: TextTheme(
|
||||||
|
headline1: TextStyle(color: opaque.current().mainTextColor()),
|
||||||
|
headline2: TextStyle(color: opaque.current().mainTextColor()),
|
||||||
|
headline3: TextStyle(color: opaque.current().mainTextColor()),
|
||||||
|
headline4: TextStyle(color: opaque.current().mainTextColor()),
|
||||||
|
headline5: TextStyle(color: opaque.current().mainTextColor()),
|
||||||
|
headline6: TextStyle(color: opaque.current().mainTextColor()),
|
||||||
|
bodyText1: TextStyle(color: opaque.current().mainTextColor()),
|
||||||
|
bodyText2: TextStyle(color: opaque.current().mainTextColor()),
|
||||||
|
subtitle1: TextStyle(color: opaque.current().mainTextColor()),
|
||||||
|
subtitle2: TextStyle(color: opaque.current().mainTextColor()),
|
||||||
|
caption: TextStyle(color: opaque.current().mainTextColor()),
|
||||||
|
button: TextStyle(color: opaque.current().mainTextColor()),
|
||||||
|
overline: TextStyle(color: opaque.current().mainTextColor())),
|
||||||
|
);
|
||||||
|
}
|
|
@ -77,7 +77,7 @@ class _ProfileMgrViewState extends State<ProfileMgrView> {
|
||||||
create: (_) => ProfileInfoState(onion: onion),
|
create: (_) => ProfileInfoState(onion: onion),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
builder: (context, widget) => AddEditProfileView(),
|
builder: (context, widget) => AddEditProfileView(key: Key('addprofile')),
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
));
|
));
|
||||||
|
|
100
pubspec.lock
100
pubspec.lock
|
@ -7,14 +7,7 @@ packages:
|
||||||
name: archive
|
name: archive
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.0.13"
|
version: "3.1.2"
|
||||||
args:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: args
|
|
||||||
url: "https://pub.dartlang.org"
|
|
||||||
source: hosted
|
|
||||||
version: "1.6.0"
|
|
||||||
async:
|
async:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -57,20 +50,13 @@ packages:
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.15.0"
|
version: "1.15.0"
|
||||||
convert:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: convert
|
|
||||||
url: "https://pub.dartlang.org"
|
|
||||||
source: hosted
|
|
||||||
version: "2.1.1"
|
|
||||||
crypto:
|
crypto:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: crypto
|
name: crypto
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.5"
|
version: "3.0.0"
|
||||||
cupertino_icons:
|
cupertino_icons:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
|
@ -104,20 +90,18 @@ packages:
|
||||||
description: flutter
|
description: flutter
|
||||||
source: sdk
|
source: sdk
|
||||||
version: "0.0.0"
|
version: "0.0.0"
|
||||||
|
flutter_driver:
|
||||||
|
dependency: "direct main"
|
||||||
|
description: flutter
|
||||||
|
source: sdk
|
||||||
|
version: "0.0.0"
|
||||||
flutter_localizations:
|
flutter_localizations:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description: flutter
|
description: flutter
|
||||||
source: sdk
|
source: sdk
|
||||||
version: "0.0.0"
|
version: "0.0.0"
|
||||||
flutter_lokalise:
|
|
||||||
dependency: "direct dev"
|
|
||||||
description:
|
|
||||||
name: flutter_lokalise
|
|
||||||
url: "https://pub.dartlang.org"
|
|
||||||
source: hosted
|
|
||||||
version: "0.1.4"
|
|
||||||
flutter_test:
|
flutter_test:
|
||||||
dependency: "direct dev"
|
dependency: "direct main"
|
||||||
description: flutter
|
description: flutter
|
||||||
source: sdk
|
source: sdk
|
||||||
version: "0.0.0"
|
version: "0.0.0"
|
||||||
|
@ -126,20 +110,18 @@ packages:
|
||||||
description: flutter
|
description: flutter
|
||||||
source: sdk
|
source: sdk
|
||||||
version: "0.0.0"
|
version: "0.0.0"
|
||||||
freezed_annotation:
|
fuchsia_remote_debug_protocol:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description: flutter
|
||||||
name: freezed_annotation
|
source: sdk
|
||||||
url: "https://pub.dartlang.org"
|
version: "0.0.0"
|
||||||
source: hosted
|
|
||||||
version: "0.12.0"
|
|
||||||
http:
|
http:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: http
|
name: http
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.13.0"
|
version: "0.13.1"
|
||||||
http_parser:
|
http_parser:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -147,6 +129,13 @@ packages:
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "4.0.0"
|
version: "4.0.0"
|
||||||
|
integration_test:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
name: integration_test
|
||||||
|
url: "https://pub.dartlang.org"
|
||||||
|
source: hosted
|
||||||
|
version: "1.0.2+2"
|
||||||
intl:
|
intl:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -161,20 +150,6 @@ packages:
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.6.3"
|
version: "0.6.3"
|
||||||
json_annotation:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: json_annotation
|
|
||||||
url: "https://pub.dartlang.org"
|
|
||||||
source: hosted
|
|
||||||
version: "3.1.1"
|
|
||||||
logging:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: logging
|
|
||||||
url: "https://pub.dartlang.org"
|
|
||||||
source: hosted
|
|
||||||
version: "0.11.4"
|
|
||||||
matcher:
|
matcher:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -315,13 +290,6 @@ packages:
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "4.3.2+3"
|
version: "4.3.2+3"
|
||||||
quiver:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: quiver
|
|
||||||
url: "https://pub.dartlang.org"
|
|
||||||
source: hosted
|
|
||||||
version: "2.1.5"
|
|
||||||
sky_engine:
|
sky_engine:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description: flutter
|
description: flutter
|
||||||
|
@ -355,6 +323,13 @@ packages:
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.1.0"
|
version: "1.1.0"
|
||||||
|
sync_http:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: sync_http
|
||||||
|
url: "https://pub.dartlang.org"
|
||||||
|
source: hosted
|
||||||
|
version: "0.3.0"
|
||||||
term_glyph:
|
term_glyph:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -383,6 +358,20 @@ packages:
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.0"
|
version: "2.1.0"
|
||||||
|
vm_service:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: vm_service
|
||||||
|
url: "https://pub.dartlang.org"
|
||||||
|
source: hosted
|
||||||
|
version: "6.0.1-nullsafety.1"
|
||||||
|
webdriver:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: webdriver
|
||||||
|
url: "https://pub.dartlang.org"
|
||||||
|
source: hosted
|
||||||
|
version: "3.0.0"
|
||||||
win32:
|
win32:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -397,13 +386,6 @@ packages:
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.2.0"
|
version: "0.2.0"
|
||||||
yaml:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: yaml
|
|
||||||
url: "https://pub.dartlang.org"
|
|
||||||
source: hosted
|
|
||||||
version: "2.2.1"
|
|
||||||
sdks:
|
sdks:
|
||||||
dart: ">=2.12.0 <3.0.0"
|
dart: ">=2.12.0 <3.0.0"
|
||||||
flutter: ">=1.20.0"
|
flutter: ">=1.20.0"
|
||||||
|
|
10
pubspec.yaml
10
pubspec.yaml
|
@ -35,10 +35,18 @@ dependencies:
|
||||||
ffi: ^1.0.0
|
ffi: ^1.0.0
|
||||||
path_provider: ^2.0.0
|
path_provider: ^2.0.0
|
||||||
|
|
||||||
|
# todo: flutter_driver causes version conflict. eg https://github.com/flutter/flutter/issues/44829
|
||||||
|
# testing-related deps
|
||||||
|
integration_test: ^1.0.0
|
||||||
|
flutter_test:
|
||||||
|
sdk: flutter
|
||||||
|
flutter_driver:
|
||||||
|
sdk: flutter
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
flutter_test:
|
flutter_test:
|
||||||
sdk: flutter
|
sdk: flutter
|
||||||
flutter_lokalise: any
|
# flutter_lokalise: any
|
||||||
|
|
||||||
# alternatively: flutter pub run intl_translation:generate_from_arb --output-dir=lib/l10n --no-use-deferred-loading lib/intl/app_localizations.dart lib/l10n/intl_*.arb --api-token X --project-id Y
|
# alternatively: flutter pub run intl_translation:generate_from_arb --output-dir=lib/l10n --no-use-deferred-loading lib/intl/app_localizations.dart lib/l10n/intl_*.arb --api-token X --project-id Y
|
||||||
#flutter_lokalise:
|
#flutter_lokalise:
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 246 B |
|
@ -0,0 +1,62 @@
|
||||||
|
// This is a basic Flutter widget test.
|
||||||
|
//
|
||||||
|
// To perform an interaction with a widget in your test, use the WidgetTester
|
||||||
|
// utility that Flutter provides. For example, you can send tap and scroll
|
||||||
|
// gestures. You can also use WidgetTester to find child widgets in the widget
|
||||||
|
// tree, read text, and verify that the values of widget properties are correct.
|
||||||
|
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter_app/opaque.dart';
|
||||||
|
import 'package:flutter_app/settings.dart';
|
||||||
|
import 'package:flutter_app/widgets/buttontextfield.dart';
|
||||||
|
import 'package:flutter_app/widgets/cwtchlabel.dart';
|
||||||
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
|
import 'package:provider/provider.dart';
|
||||||
|
|
||||||
|
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
||||||
|
|
||||||
|
var settingsEnglishDark = Settings(Locale("en", ''), Opaque.dark);
|
||||||
|
var settingsEnglishLight = Settings(Locale("en", ''), Opaque.light);
|
||||||
|
ChangeNotifierProvider<Settings> getSettingsEnglishDark() => ChangeNotifierProvider.value(value: settingsEnglishDark);
|
||||||
|
|
||||||
|
void main() {
|
||||||
|
testWidgets('CwtchButtonTextField widget test', (WidgetTester tester) async {
|
||||||
|
final String testingStr = "A wonderful label";
|
||||||
|
final TextEditingController ctrlr1 = TextEditingController(text: testingStr);
|
||||||
|
|
||||||
|
// await tester.pumpWidget(MultiProvider(
|
||||||
|
// providers:[getSettingsEnglishDark()],
|
||||||
|
// child: Directionality(textDirection: TextDirection.ltr, child: CwtchLabel(label: testingStr))
|
||||||
|
// ));
|
||||||
|
|
||||||
|
await tester.pumpWidget(MultiProvider(
|
||||||
|
providers:[getSettingsEnglishDark()],
|
||||||
|
builder: (context, child) { return MaterialApp(
|
||||||
|
locale: Provider.of<Settings>(context).locale,
|
||||||
|
localizationsDelegates: AppLocalizations.localizationsDelegates,
|
||||||
|
supportedLocales: AppLocalizations.supportedLocales,
|
||||||
|
title: 'Test',
|
||||||
|
theme: mkThemeData(Provider.of<Settings>(context)),
|
||||||
|
home: Card(child: CwtchButtonTextField(
|
||||||
|
icon: Icon(Icons.bug_report_outlined),
|
||||||
|
tooltip: testingStr,
|
||||||
|
controller: ctrlr1,
|
||||||
|
)),
|
||||||
|
);}
|
||||||
|
));
|
||||||
|
|
||||||
|
// Verify that our counter starts at 0.
|
||||||
|
expect(find.text(testingStr), findsOneWidget);
|
||||||
|
expect(find.text('1'), findsNothing);
|
||||||
|
|
||||||
|
await expectLater(find.text(testingStr), matchesGoldenFile('buttontextfield01.png'));
|
||||||
|
|
||||||
|
// Tap the '+' icon and trigger a frame.
|
||||||
|
// await tester.tap(find.byIcon(Icons.add));
|
||||||
|
// await tester.pump();
|
||||||
|
//
|
||||||
|
// // Verify that our counter has incremented.
|
||||||
|
// expect(find.text('0'), findsNothing);
|
||||||
|
// expect(find.text('1'), findsOneWidget);
|
||||||
|
});
|
||||||
|
}
|
Binary file not shown.
After Width: | Height: | Size: 2.1 KiB |
|
@ -0,0 +1,56 @@
|
||||||
|
// This is a basic Flutter widget test.
|
||||||
|
//
|
||||||
|
// To perform an interaction with a widget in your test, use the WidgetTester
|
||||||
|
// utility that Flutter provides. For example, you can send tap and scroll
|
||||||
|
// gestures. You can also use WidgetTester to find child widgets in the widget
|
||||||
|
// tree, read text, and verify that the values of widget properties are correct.
|
||||||
|
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter_app/opaque.dart';
|
||||||
|
import 'package:flutter_app/settings.dart';
|
||||||
|
import 'package:flutter_app/widgets/cwtchlabel.dart';
|
||||||
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
|
import 'package:provider/provider.dart';
|
||||||
|
|
||||||
|
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
||||||
|
|
||||||
|
var settingsEnglishDark = Settings(Locale("en", ''), Opaque.dark);
|
||||||
|
var settingsEnglishLight = Settings(Locale("en", ''), Opaque.light);
|
||||||
|
ChangeNotifierProvider<Settings> getSettingsEnglishDark() => ChangeNotifierProvider.value(value: settingsEnglishDark);
|
||||||
|
|
||||||
|
void main() {
|
||||||
|
testWidgets('CwtchLabel widget test', (WidgetTester tester) async {
|
||||||
|
final String testingStr = "A wonderful label";
|
||||||
|
|
||||||
|
// await tester.pumpWidget(MultiProvider(
|
||||||
|
// providers:[getSettingsEnglishDark()],
|
||||||
|
// child: Directionality(textDirection: TextDirection.ltr, child: CwtchLabel(label: testingStr))
|
||||||
|
// ));
|
||||||
|
|
||||||
|
await tester.pumpWidget(MultiProvider(
|
||||||
|
providers:[getSettingsEnglishDark()],
|
||||||
|
builder: (context, child) { return MaterialApp(
|
||||||
|
locale: Provider.of<Settings>(context).locale,
|
||||||
|
localizationsDelegates: AppLocalizations.localizationsDelegates,
|
||||||
|
supportedLocales: AppLocalizations.supportedLocales,
|
||||||
|
title: 'Test',
|
||||||
|
theme: mkThemeData(Provider.of<Settings>(context)),
|
||||||
|
home: CwtchLabel(label: testingStr),
|
||||||
|
);}
|
||||||
|
));
|
||||||
|
|
||||||
|
// Verify that our counter starts at 0.
|
||||||
|
expect(find.text(testingStr), findsOneWidget);
|
||||||
|
expect(find.text('1'), findsNothing);
|
||||||
|
|
||||||
|
await expectLater(find.text(testingStr), matchesGoldenFile('cwtchlabel01.png'));
|
||||||
|
|
||||||
|
// Tap the '+' icon and trigger a frame.
|
||||||
|
// await tester.tap(find.byIcon(Icons.add));
|
||||||
|
// await tester.pump();
|
||||||
|
//
|
||||||
|
// // Verify that our counter has incremented.
|
||||||
|
// expect(find.text('0'), findsNothing);
|
||||||
|
// expect(find.text('1'), findsOneWidget);
|
||||||
|
});
|
||||||
|
}
|
|
@ -1,30 +0,0 @@
|
||||||
// This is a basic Flutter widget test.
|
|
||||||
//
|
|
||||||
// To perform an interaction with a widget in your test, use the WidgetTester
|
|
||||||
// utility that Flutter provides. For example, you can send tap and scroll
|
|
||||||
// gestures. You can also use WidgetTester to find child widgets in the widget
|
|
||||||
// tree, read text, and verify that the values of widget properties are correct.
|
|
||||||
|
|
||||||
import 'package:flutter/material.dart';
|
|
||||||
import 'package:flutter_test/flutter_test.dart';
|
|
||||||
|
|
||||||
import 'package:flutter_app/main.dart';
|
|
||||||
|
|
||||||
void main() {
|
|
||||||
testWidgets('Counter increments smoke test', (WidgetTester tester) async {
|
|
||||||
// Build our app and trigger a frame.
|
|
||||||
await tester.pumpWidget(Flwtch());
|
|
||||||
|
|
||||||
// Verify that our counter starts at 0.
|
|
||||||
expect(find.text('0'), findsOneWidget);
|
|
||||||
expect(find.text('1'), findsNothing);
|
|
||||||
|
|
||||||
// Tap the '+' icon and trigger a frame.
|
|
||||||
await tester.tap(find.byIcon(Icons.add));
|
|
||||||
await tester.pump();
|
|
||||||
|
|
||||||
// Verify that our counter has incremented.
|
|
||||||
expect(find.text('0'), findsNothing);
|
|
||||||
expect(find.text('1'), findsOneWidget);
|
|
||||||
});
|
|
||||||
}
|
|
Loading…
Reference in New Issue