Skip to content

Native keyboard-focus tests flake with wayland_scope_evidence_expired under coverage #632

Closed

Description

@Calmingstorm

Summary

tests/test_computer_native_keyboard_focus_class.py fails intermittently in CI's instrumented coverage-no-drop run: the native observation is rejected with wayland_scope_evidence_expired before the assertion. Each time, the plain tests job passes and a rerun passes, so it is a timing-sensitive test rather than a product failure. It has recurred three times with different parameters.

Occurrences

  • v4.9.1 master (2026-09-28): test_predicate_requires_current_native_evidence[backend_label_only] (coverage run; rerun passed).
  • campaign/v4.10.0-review @ a5322b47 (2026-09-30, run 36668964361 attempt 1): test_click_then_shortcut_rejects_real_binding_changes[source_digest] (rerun passed).
  • v4.11.0 master @ a93348f0 (2026-09-30, run 36671753276 attempt 1): test_predicate_requires_current_native_evidence[geometry]. The assertion expected Image loaded and got {"status": "rejected", "reason": "wayland_scope_evidence_expired", ...} (attempt 2 passed).

Likely cause

The scope-evidence freshness deadline these tests exercise is wall-clock based. Under coverage instrumentation on the shared self-hosted runners, setup can outlast the deadline before the observation, so the evidence expires first.

Expected

The tests control the evidence clock, or measure the deadline from a fixture-owned time source, so instrumentation speed cannot expire it. Keep the production freshness rule unchanged.

Impact

CI only: a master or PR run can fail spuriously and needs a manual rerun, which delays releases.

Activity

  1. Calmingstorm commented on Oct 1, 2026

    @Calmingstorm
    OwnerAuthor
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions