nexo/apps/flutter-test/README.md

2.6 KiB

flutter-test

Test-only Flutter app for the Nexo messaging package.

Purpose

This app is the workspace test harness for packages/messaging_flutter. Keep it small and focused on proving the messaging/notification package contract:

  • plugin registration in a real Flutter application
  • method-channel calls from Dart to the native plugin
  • event-channel delivery from native code to Dart
  • notification-open routing callbacks
  • Android manifest merge behavior
  • manual Firebase FCM and nexo server ACK smoke testing

This app is not a nexo product app and is not the original Mattermost app. The original Mattermost app belongs under apps/mattermost/; app-specific product UI and business logic belong in consuming apps outside this repository.

Structure

apps/flutter-test/
  lib/                    # Small test harness UI
  test/                   # Widget tests for the harness
  integration_test/       # Device/emulator plugin integration tests
  android/                # Android test host used to load the plugin
  ios/                    # iOS host scaffold
  macos/                  # macOS host scaffold

Running The App

Install dependencies:

flutter pub get

Run on a connected device or emulator:

flutter run

For Android FCM smoke testing, make sure the Android app has the required Firebase configuration, including android/app/google-services.json.

Verification

The integration test uses the plugin's test/debug event injection path for method-channel, event-channel, and opened-routing checks. Real FCM delivery, ACK, inline reply, and dismiss behavior remain manual smoke checks.

Run checks from this directory:

flutter analyze
flutter test
flutter test integration_test

Run Android native unit tests from apps/flutter-test/android:

./gradlew testDebugUnitTest

Android Gradle tests require a configured Android SDK through ANDROID_HOME or apps/flutter-test/android/local.properties.

When the local machine does not have a usable Android SDK or emulator, use the repository-level remote environment guide: ../../packages/messaging_flutter/docs/android-test-environment.md.

Maintenance Rules

  • Keep the app thin.
  • Prefer deterministic test controls over product-like UI.
  • Do not add consuming-app business logic here.
  • Do not grow this host into a nexo product app.
  • Do not use this path for the original Mattermost app; that belongs under apps/mattermost/.
  • Add integration tests here when a plugin behavior needs a real Flutter host.
  • Keep manual FCM and server checks documented with the owning module.