37 lines
1.9 KiB
Markdown
37 lines
1.9 KiB
Markdown
# QA report
|
||
|
||
Date: 2026-08-18
|
||
|
||
## Automated checks
|
||
|
||
- Clean Gradle build: `clean testDebugUnitTest lintDebug assembleDebug` — passed.
|
||
- Unit tests: 8 passed, 0 failed, 0 skipped.
|
||
- Device acceptance tests: 1 passed, 0 failed, 0 skipped.
|
||
- Level 5 bot: completed the production level in about 8.2 seconds with exactly one death, one retained corpse, pressure-plate activation, door passage, two jumps, and goal contact.
|
||
- Android Lint: no issues found.
|
||
- APK archive integrity: all entries passed `unzip -t`.
|
||
- Package metadata: `com.projectsacrifice.game.debug`, version code 3, min SDK 23, target SDK 34.
|
||
- APK signature: v1 and v2 schemes verified; one standard Android Debug signer.
|
||
|
||
## Device smoke test
|
||
|
||
Environment: official ARM64 Android Emulator, Android 16 / API 36, 2400×1080 landscape.
|
||
|
||
Verified:
|
||
|
||
1. streamed APK installation returns `Success`;
|
||
2. cold launch returns `Status: ok`;
|
||
3. `MainActivity` remains visible and `RESUMED`;
|
||
4. immersive landscape mode is applied;
|
||
5. level-selection screen renders correctly;
|
||
6. entering level 1 renders the HUD, character, goal, and mobile controls;
|
||
7. holding the right control completes level 1;
|
||
8. completion records best time/deaths and unlocks level 2 (`unlocked=2`);
|
||
9. reaching spikes in level 2 increments the volunteer counter, keeps the corpse in the level, and respawns a live volunteer without resetting the scene;
|
||
10. Android crash buffer remains empty after the corrected build and gameplay smoke tests.
|
||
11. the level 5 acceptance bot reproduces the complete saw/body/plate/door solution on the same Android 16 emulator; its initial red runs exposed an unstable saw impulse, and the final run passed after the body delivery was corrected.
|
||
|
||
## Distribution note
|
||
|
||
The delivered APK is a debug-signed tester build. It is directly installable, but it is not intended for Play Store publication. A production release should use the publisher's private release keystore and a non-debug application ID.
|