# Harmony Test App
This folder contains the minimum pieces needed for on-device ArkJS testing:
- `rong_harmony_smoke/`: Rust cdylib that exposes `startHttpServer()`
- `app/`: minimal HarmonyOS app that loads the `.so` and starts the HTTP server on launch
- `dev.sh`: builds the cdylib, stages it into the app, installs/starts the HAP, forwards a local port, and uses `curl` to trigger tests and read the JSON result
## Layout
```text
testing/harmony/
├── rong_harmony_smoke/ # Rust cdylib entry point for HTTP-controlled test runs
├── app/ # Minimal HarmonyOS test shell
└── dev.sh # Build, stage, install, and launch helper
```
## Flow
1. Build and stage the native library:
```bash
./testing/harmony/dev.sh --rust-only
```
Use `TEST_FILTER=...` to run a single case or subset. Leave it empty to run all
device tests.
2. Or run the full device flow:
```bash
./testing/harmony/dev.sh test
```
3. Run a single case or subset from the PC by setting a filter before launch:
```bash
TEST_FILTER=rong.test_call_simple ./testing/harmony/dev.sh test
```
4. For debugging, watch runner logs:
```bash
The app page only explains what the app does. The native library starts a local
HTTP server inside the app process. `dev.sh` waits until the device port is
listening, forwards a host port with `hdc fport`, then uses `curl` against
`/health` and `/run` to get the full JSON report on the PC. `RongSmoke` hilog
is only for debugging.
## Notes
- Generated outputs and caches are intentionally not kept in this tree.
- `build-profile.json5` intentionally leaves signing empty. Fill it in with your local Harmony signing config before packaging the app.