fix: Android app startup — INTERNET permission, MobSF scan, E2E robustness
- Add INTERNET permission to main AndroidManifest.xml (was missing from
release builds, causing all network calls to fail on device)
- Add scripts/mobsf_scan.sh: uploads release APK to MobSF after each
build and asserts required permissions are declared; docker pull -q
suppresses progress-bar noise
- Wire MobSF scan into build-android task; add mobsf-stop convenience task
- Fix _AccountTile subtitle overflow on Android: replace Column([Text,Text])
with single Text('email\ntype') so ListTile can measure height correctly
- E2E test robustness on Android: use pumpUntil(find.text('Alice')) instead
of pumpUntil(FAB)+expect to handle Drift background-isolate stream delay;
add skipOffstage:false to tap; remove stale email-address assertion
- Uninstall app before each Android integration test run to clear leftover
DB state and prevent "Unable to start the app" on repeated runs
- Update widget tests to use find.textContaining for merged subtitle text
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
40cbf0b3b0
commit
077ddbd9c3
@@ -192,21 +192,18 @@ void main() {
|
||||
final saveButton = find.widgetWithText(FilledButton, 'Save');
|
||||
await tester.ensureVisible(saveButton);
|
||||
await tester.tap(saveButton);
|
||||
// Save makes an async connection before navigating — wait for the FAB,
|
||||
// which is only present on the account list screen.
|
||||
// Wait for the account to appear in the list. This covers both the async
|
||||
// connection+save and the Drift background-isolate stream propagation,
|
||||
// which pumpAndSettle() alone does not flush on Android.
|
||||
await pumpUntil(
|
||||
tester,
|
||||
find.widgetWithIcon(FloatingActionButton, Icons.add),
|
||||
find.text('Alice'),
|
||||
timeout: const Duration(seconds: 30),
|
||||
);
|
||||
|
||||
// Back at account list.
|
||||
expect(find.text('Alice'), findsOneWidget);
|
||||
expect(find.text(userEmail), findsOneWidget);
|
||||
|
||||
// ── Navigate to mailboxes ──────────────────────────────────────────────
|
||||
_log('navigate to mailboxes');
|
||||
await tester.tap(find.text('Alice'));
|
||||
await tester.tap(find.text('Alice', skipOffstage: false));
|
||||
await pumpUntil(tester, find.text('INBOX'));
|
||||
_log('mailboxes settled');
|
||||
|
||||
|
||||
Reference in New Issue
Block a user