82 lines
2.4 KiB
Markdown
82 lines
2.4 KiB
Markdown
# nexo_client
|
|
|
|
Flutter client and integration test host for the Nexo messaging runtime.
|
|
|
|
## Purpose
|
|
|
|
This app is the workspace client harness. 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 Mattermost ACK smoke testing
|
|
|
|
Product-specific UI should stay small until Nexo's messaging surface is ready.
|
|
This app should keep the minimum surface needed to prove package integration.
|
|
|
|
## Structure
|
|
|
|
```text
|
|
apps/client/
|
|
lib/ # Small harness UI
|
|
test/ # Widget tests for the harness
|
|
integration_test/ # Device/emulator plugin integration tests
|
|
android/ # Android app used to host the plugin
|
|
ios/ # iOS host scaffold
|
|
macos/ # macOS host scaffold
|
|
```
|
|
|
|
## Running The App
|
|
|
|
Install dependencies:
|
|
|
|
```sh
|
|
flutter pub get
|
|
```
|
|
|
|
Run on a connected device or emulator:
|
|
|
|
```sh
|
|
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:
|
|
|
|
```sh
|
|
flutter analyze
|
|
flutter test
|
|
flutter test integration_test
|
|
```
|
|
|
|
Run Android native unit tests from `apps/client/android`:
|
|
|
|
```sh
|
|
./gradlew testDebugUnitTest
|
|
```
|
|
|
|
Android Gradle tests require a configured Android SDK through `ANDROID_HOME` or
|
|
`apps/client/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`](../../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.
|
|
- Add integration tests here when a plugin behavior needs a real Flutter host.
|
|
- Keep manual FCM and server checks documented with the owning module.
|