aboutsummaryrefslogtreecommitdiffstats
path: root/AGENTS.md
diff options
context:
space:
mode:
authorDanilo M. <danix@danix.xyz>2026-11-02 11:47:41 +0100
committerDanilo M. <danix@danix.xyz>2026-11-02 11:47:41 +0100
commitc9a53ac6c1b59572f8d6cba8f41e6fcd242c4fa1 (patch)
tree3e1406d3a1c7dd2fcf02a14c09146eb5c7eaa9c3 /AGENTS.md
parent9b772b59192069388dfede54933b380d639f5627 (diff)
downloadHardenedPass-c9a53ac6c1b59572f8d6cba8f41e6fcd242c4fa1.tar.gz
HardenedPass-c9a53ac6c1b59572f8d6cba8f41e6fcd242c4fa1.zip
test: add a disposable end-to-end environment for emulator runs
scripts/e2e-env.sh starts a git-over-SSH server in Docker, seeded with a small pass-compatible store encrypted to a throwaway OpenPGP key, and can push the throwaway SSH and OpenPGP keys to an emulator. Keys are generated at runtime into the gitignored .e2e/ directory, so no key material is committed. AGENTS.md documents the emulator setup. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Diffstat (limited to 'AGENTS.md')
-rw-r--r--AGENTS.md19
1 files changed, 19 insertions, 0 deletions
diff --git a/AGENTS.md b/AGENTS.md
index e1ed9d1b..e408b90d 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -48,6 +48,25 @@ CI is `.github/workflows/pull_request.yml` (named "CI"), on push to `master`. Wo
`setup-gradle` composite action from this fork at `@master`. It checks the repository out
itself, so it cannot be referenced with a local `./` path.
+## End-to-end testing on an emulator
+
+`scripts/e2e-env.sh up` starts a disposable git-over-SSH server in Docker
+(`ssh://git@10.0.2.2:2222/srv/git/store.git` from the emulator) seeded with a small store
+encrypted to a throwaway OpenPGP key. Keys are generated into `.e2e/` (gitignored), never
+committed; `push-keys` copies them to the emulator's Download folder. `down` removes it.
+Never drive tests against a real password store or with real keys.
+
+Emulator: AVD `aps-test` (Pixel 6, AOSP Android 15 x86_64, no Google services), using the SDK
+in `local.properties`:
+
+ $ANDROID_HOME/emulator/emulator -avd aps-test -no-window -no-audio -no-boot-anim \
+ -no-snapshot-save -gpu swiftshader_indirect &
+ ./gradlew installFreeDebug
+
+Drive it with `adb shell input`, `uiautomator dump` and `screencap`. Decrypt screens set
+`FLAG_SECURE`, so screenshots of them are black; read them from the `uiautomator` dump.
+Fingerprint: `adb emu finger touch 1` after enrolling one in Settings.
+
## Verified facts and gotchas
- Bouncy Castle: every `org.bouncycastle` module is forced to the catalog version by a