Files
Michał Pierzchała 9d7d60c5e0 test(coverage): declare every public command's coverage judgments once (#2418)
* 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/.
2026-09-09 15:55:00 +02:00

39 lines
1.6 KiB
TypeScript

import { PUBLIC_COMMANDS } from '@agent-device/command-registry/catalog';
import { projectCoverage } from '../command-coverage/declarations.ts';
import type { PublicCommand } from '../command-coverage/entries.ts';
import { buildCoverageClassificationSummary } from '../support/coverage-classification.ts';
export {
TVOS_COVERAGE_GAP_ISSUE,
TVOS_REMOTE_EVIDENCE,
TVOS_REMOTE_TEST_NAME,
} from '../command-coverage/evidence.ts';
export const TVOS_REMOTE_SCENARIO_COMMANDS: readonly PublicCommand[] = [
PUBLIC_COMMANDS.open,
PUBLIC_COMMANDS.scroll,
PUBLIC_COMMANDS.back,
PUBLIC_COMMANDS.home,
PUBLIC_COMMANDS.close,
];
/**
* One primary, observable owner for every public command on the tvOS leaf.
*
* There is no tvOS CI or live-device lane at HEAD, so the existing provider
* scenario is contract evidence rather than a live claim. The remaining
* contract rows cite Apple deployment/inventory tests, the typed Apple
* interaction policy, or the executable capability oracle. Capability denials
* are limited to whole-command denials; tvOS's narrower multi-touch refusal
* stays with the gesture contract instead of denying the supported one-contact
* gesture path. Host-dependent contracts retain their oracle admission state
* without claiming a stable tvOS capability.
*
* Projected from the command-owned declaration table; the rows are authored there.
*/
export const TVOS_PLATFORM_COVERAGE = projectCoverage('tvos');
export const TVOS_PLATFORM_COVERAGE_CLASSIFICATION_SUMMARY = buildCoverageClassificationSummary(
Object.values(TVOS_PLATFORM_COVERAGE),
);