-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
d504693
commit b013f84
Showing
40 changed files
with
172 additions
and
41 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+630 KB
assets/store_presence/screenshots/tablet13-3-schedule-dark-overlay.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
# Store Listing | ||
|
||
## App name | ||
|
||
NWT Reading | ||
|
||
## Short description | ||
|
||
Bible reading schedule for the New World Translation, designed for Jehovah's Witnesses. | ||
Bible reading schedule for the New World Translation of Jehovah's Witnesses. | ||
|
||
## Full description | ||
|
||
NWT Reading provides a Bible reading schedule for the New World Translation of the Holy Scriptures, specifically for Jehovah's Witnesses. | ||
|
||
• Supports reading the Bible in all available languages of the complete New World Translation, including sign languages. | ||
• Scriptures open in the JW Library® app. | ||
• Tracks your reading progress and shows the number of days you are ahead or behind schedule. | ||
• Offers several reading plans: canonical, in the order the Bible books were written, and chronologically, as the events took place. | ||
• Allows you to select the reading speed or read without a specific end date. | ||
• Highlights dates with key events in the chronological plan. | ||
• Shows locations mentioned in each section and where to find them in the brochure “See the Good Land.” | ||
• NEW: Use multiple Bible reading plans in parallel. | ||
• NEW: Enjoy a dark mode theme for a more comfortable reading experience. | ||
• NEW: NWT Reading is now open source! Find us on GitHub and contribute. | ||
• User interface available in Czech, English, French, German, Hungarian, Italian, Polish, Portuguese (Brazil), Romanian, Russian, and Spanish. | ||
|
||
JW Library is a registered trademark of the Watch Tower Bible and Tract Society of Pennsylvania. |
Diff not rendered.
Diff not rendered.
Diff not rendered.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,122 @@ | ||
import 'dart:io'; | ||
|
||
import 'package:flutter/material.dart'; | ||
import 'package:flutter/services.dart'; | ||
import 'package:flutter_riverpod/flutter_riverpod.dart'; | ||
import 'package:flutter_test/flutter_test.dart'; | ||
import 'package:integration_test/integration_test.dart'; | ||
|
||
import 'package:nwt_reading/src/plans/presentations/plan_card.dart'; | ||
|
||
import '../test/test_data.dart'; | ||
import 'settled_tester.dart'; | ||
|
||
// Consider implementing | ||
// https://medium.com/@mregnauld/generate-screenshots-for-a-flutter-app-with-golden-testing-and-upload-them-to-the-stores-1-2-45f8df777aef. | ||
|
||
Future<ProviderContainer> getDefaultProviderContainer( | ||
WidgetTester tester) async => | ||
SettledTester(tester, sharedPreferences: { | ||
...testPlansPreferences, | ||
...await getWhatsNewSeenPreference() | ||
}).providerContainer; | ||
|
||
final os = Platform.operatingSystem; | ||
|
||
void takeScreenshot( | ||
{required IntegrationTestWidgetsFlutterBinding binding, | ||
required String filename}) async { | ||
await binding.takeScreenshot('assets/store_presence/screenshots/$os-$filename.png'); | ||
await Future<void>.delayed(const Duration(seconds: 5)); | ||
} | ||
|
||
void main() async { | ||
final binding = IntegrationTestWidgetsFlutterBinding.ensureInitialized(); | ||
WidgetController.hitTestWarningShouldBeFatal = true; | ||
|
||
testWidgets('Take the plans list screenshot', (tester) async { | ||
await getDefaultProviderContainer(tester); | ||
await binding.convertFlutterSurfaceToImage(); | ||
await tester.pumpAndSettle(); | ||
takeScreenshot(binding: binding, filename: '1-plans'); | ||
}); | ||
|
||
testWidgets('Take the schedule screenshot', (tester) async { | ||
await getDefaultProviderContainer(tester); | ||
await tester.tap(find.byType(PlanCard).first); | ||
await tester.pumpAndSettle(); | ||
await tester.scrollUntilVisible( | ||
find.byKey(const Key('day-33')), | ||
-500.0, | ||
); | ||
await tester.pumpAndSettle(); | ||
await tester.tap(find | ||
.descendant( | ||
of: find.byKey(const Key('day-34')), | ||
matching: find.byType(IconButton)) | ||
.first); | ||
await tester.pumpAndSettle(); | ||
await tester.tap(find.byKey(const Key('confirm-toggle-read'))); | ||
await tester.pumpAndSettle(); | ||
await tester.scrollUntilVisible( | ||
find.byKey(const Key('day-70')), | ||
500.0, | ||
); | ||
await tester.pumpAndSettle(); | ||
await tester.tap(find.byType(FloatingActionButton)); | ||
await tester.pumpAndSettle(); | ||
await binding.convertFlutterSurfaceToImage(); | ||
await tester.pumpAndSettle(); | ||
takeScreenshot(binding: binding, filename: '2-schedule'); | ||
await tester.tap(find.byType(BackButton)); | ||
await tester.pumpAndSettle(); | ||
await tester.tap(find.byIcon(Icons.settings)); | ||
await tester.pumpAndSettle(); | ||
await tester.tap(find.byIcon(Icons.dark_mode)); | ||
await tester.pumpAndSettle(); | ||
await tester.tap(find.byType(BackButton)); | ||
await tester.pumpAndSettle(); | ||
await tester.tap(find.byType(PlanCard).first); | ||
await tester.pumpAndSettle(); | ||
takeScreenshot(binding: binding, filename: '3-schedule-dark'); | ||
}); | ||
|
||
testWidgets('Take the new plan screenshot', (tester) async { | ||
await SettledTester(tester, | ||
sharedPreferences: await getWhatsNewSeenPreference()) | ||
.providerContainer; | ||
await tester.tap(find.byType(FloatingActionButton)); | ||
await tester.pumpAndSettle(); | ||
|
||
// Hide the keyboard. | ||
SystemChannels.textInput.invokeMethod('TextInput.hide'); | ||
await binding.convertFlutterSurfaceToImage(); | ||
await tester.pumpAndSettle(); | ||
takeScreenshot(binding: binding, filename: '4-new'); | ||
}); | ||
|
||
testWidgets('Take the plan edit screenshot', (tester) async { | ||
await getDefaultProviderContainer(tester); | ||
await tester.tap(find.byType(PlanCard).first); | ||
await tester.pumpAndSettle(); | ||
await tester.tap(find.byIcon(Icons.edit)); | ||
await tester.pumpAndSettle(); | ||
|
||
// Hide the keyboard. | ||
SystemChannels.textInput.invokeMethod('TextInput.hide'); | ||
await binding.convertFlutterSurfaceToImage(); | ||
await tester.pumpAndSettle(); | ||
takeScreenshot(binding: binding, filename: '5-edit'); | ||
}); | ||
|
||
testWidgets('Take the settings screenshot', (tester) async { | ||
await getDefaultProviderContainer(tester); | ||
await tester.tap(find.byIcon(Icons.settings)); | ||
await tester.pumpAndSettle(); | ||
await tester.tap(find.byIcon(Icons.dark_mode)); | ||
await tester.pumpAndSettle(); | ||
await binding.convertFlutterSurfaceToImage(); | ||
await tester.pumpAndSettle(); | ||
takeScreenshot(binding: binding, filename: '6-settings'); | ||
}); | ||
} |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
import 'dart:io'; | ||
import 'package:integration_test/integration_test_driver_extended.dart'; | ||
|
||
Future<void> main() async { | ||
await integrationDriver( | ||
onScreenshot: (String screenshotName, List<int> screenshotBytes, | ||
[Map<String, Object?>? args]) async { | ||
// ignore: avoid_print | ||
print('Saving screen shot $screenshotName.'); | ||
final File image = File(screenshotName); | ||
image.writeAsBytesSync(screenshotBytes); | ||
// Return false if the screenshot is invalid. | ||
return true; | ||
}, | ||
); | ||
} |