Files
callstack__agent-device/test/integration/android-emulator-e2e/behavior-coverage.ts
Michał Pierzchała 32b9db2d7a test: add Android full emulator coverage (#1484)
* test: add Android full emulator coverage

* ci: package Android helpers before nightly coverage

* fix: harden Android nightly runtime evidence

* fix: expose trace artifacts in MCP schema

* style: format Android coverage manifest

* fix: address Android coverage review findings

* refactor: share live device coverage helpers

* fix: restore fixture landmarks in device smokes

* refactor: centralize live artifact assertions

* fix: normalize fixture canary visibility
2026-07-30 21:07:06 +02:00

88 lines
3.2 KiB
TypeScript

export type AndroidEmulatorBehaviorId =
| 'android-resource-id-selectors'
| 'cold-start-deep-link-navigation'
| 'helper-backed-gesture-recovery'
| 'home-recents-restoration'
| 'ime-owned-input-recovery'
| 'long-list-scroll-recovery'
| 'orientation-fixture-state'
| 'push-broadcast-delivery'
| 'runtime-permission-recovery'
| 'safe-back-navigation'
| 'safe-keyboard-dismissal'
| 'system-ime-keyboard'
| 'test-ime-restoration'
| 'test-ime-unicode-input';
type BehaviorCoverageEntry = {
assertion: string;
owner: string;
};
export const ANDROID_EMULATOR_BEHAVIOR_COVERAGE = {
'android-resource-id-selectors': {
assertion: 'fixture test IDs are observed as Android resource IDs before their selectors act',
owner: 'smoke:automation-system',
},
'cold-start-deep-link-navigation': {
assertion: 'cold deep link renders payload and normal navigation returns through Back',
owner: 'smoke:automation-system',
},
'home-recents-restoration': {
assertion:
'Home and Recents produce distinct Android system evidence before fixture restoration',
owner: 'smoke:automation-system',
},
'orientation-fixture-state': {
assertion:
'fixture window state observes landscape and portrait after Android rotation commands',
owner: 'smoke:automation-system',
},
'runtime-permission-recovery': {
assertion:
'the fixture observes microphone permission granted by its prompt, then denied after Android revocation',
owner: 'full:lifecycle-system',
},
'ime-owned-input-recovery': {
assertion:
'the Android IME diagnostic remains reachable after text input and keyboard recovery returns to the app field',
owner: 'full:lifecycle-system',
},
'push-broadcast-delivery': {
assertion:
'an Android push broadcast with typed extras is rendered by the fixture after its native receiver records it',
owner: 'full:lifecycle-system',
},
'helper-backed-gesture-recovery': {
assertion:
'the Android helper-backed direct gesture flow observes one- and two-pointer motion plus every transform effect',
owner: 'full:fixture-replays',
},
'long-list-scroll-recovery': {
assertion:
'fixture traversal reaches the footer, returns to the top, and rediscovers the catalog landmark',
owner: 'full:fixture-replays',
},
'safe-back-navigation': {
assertion: 'Back leaves the fixture automation route through normal in-app navigation',
owner: 'smoke:automation-system',
},
'safe-keyboard-dismissal': {
assertion: 'keyboard dismiss hides the IME while Checkout form remains on screen',
owner: 'smoke:keyboard-ime',
},
'system-ime-keyboard': {
assertion: 'visible keyboard belongs to the emulator system IME rather than the test helper',
owner: 'smoke:keyboard-ime',
},
'test-ime-restoration': {
assertion:
'closing the form session restores the prior system IME with structured doctor proof',
owner: 'smoke:form-input',
},
'test-ime-unicode-input': {
assertion: 'the exact test IME package commits a Unicode form value that is read back',
owner: 'smoke:form-input',
},
} as const satisfies Record<AndroidEmulatorBehaviorId, BehaviorCoverageEntry>;