mirror of
https://github.com/callstack/agent-device.git
synced 2026-09-14 20:06:34 +08:00
9d7d60c5e0
* test(coverage): declare every public command's six platform coverage judgments once One row per public command in test/integration/command-coverage/declarations.ts carries the android-emulator, ios-simulator, macOS, tvOS, web and Linux classifications with the same fields the six per-platform manifests use today. Each platform's Record<PublicCommand, ...> is projected from that table at load time by a small per-platform view module, so no projected record is committed. No judgment is derived from another platform's: all six stay authored per command. * test(coverage): read the projected per-platform coverage view The six coverage smoke tests, live harnesses and coverage reports now import the platform view module that projects the declaration table. Both the depgraph blast-radius query and the device-lane test follow the iOS and macOS paths. * test(coverage): delete the six per-platform coverage manifests Their rows now live once, per command, in the declaration table; each platform's record is projected from it at load time. * fix(check-affected): extend macos-coverage and integration-node ownership to command-coverage/ test/integration/command-coverage/declarations.ts now carries the per-command coverage judgments that used to live directly under test/integration/macos-e2e/. Its nested path wasn't matched by macosCoverageOwnership (top-level or macos-e2e/ only) or isNodeIntegrationPath (no nested segments), so it fell through to vitest-related, which can't actually run its node --test consumers. Extend both rules to also match test/integration/command-coverage/.
40 lines
1.2 KiB
TypeScript
40 lines
1.2 KiB
TypeScript
import {
|
|
assertCoverageComplete as assertLiveCoverageComplete,
|
|
writeCoverageReport as writeLiveCoverageReport,
|
|
} from '../live-device-e2e/coverage.ts';
|
|
import {
|
|
ANDROID_EMULATOR_BEHAVIOR_COVERAGE,
|
|
type AndroidEmulatorBehaviorId,
|
|
} from './behavior-coverage.ts';
|
|
import {
|
|
ANDROID_EMULATOR_COVERAGE_CLASSIFICATION_SUMMARY,
|
|
liveCommandsForScenario,
|
|
} from './coverage.ts';
|
|
import type { LiveContext } from './live-harness.ts';
|
|
|
|
export function assertCoverageComplete(
|
|
context: LiveContext,
|
|
selectedScenarios: readonly { id: string }[],
|
|
): void {
|
|
assertLiveCoverageComplete(
|
|
context,
|
|
selectedScenarios,
|
|
liveCommandsForScenario,
|
|
liveBehaviorsForScenario,
|
|
'Android emulator E2E coverage is incomplete',
|
|
);
|
|
}
|
|
|
|
export function writeCoverageReport(context: LiveContext): string {
|
|
return writeLiveCoverageReport(context, {
|
|
classificationSummary: ANDROID_EMULATOR_COVERAGE_CLASSIFICATION_SUMMARY,
|
|
tier: context.tier,
|
|
});
|
|
}
|
|
|
|
export function liveBehaviorsForScenario(scenarioId: string): AndroidEmulatorBehaviorId[] {
|
|
return Object.entries(ANDROID_EMULATOR_BEHAVIOR_COVERAGE)
|
|
.filter(([, entry]) => entry.owner === scenarioId)
|
|
.map(([behavior]) => behavior as AndroidEmulatorBehaviorId);
|
|
}
|