Problem
An alert accept/dismiss tap can land after the command's deadline. The last deadline guard runs before the synchronous coordinate tap (RunnerTests+Alert.swift ~131-143 → RunnerTests+Interaction.swift ~527-535). On a slow host the tap is synthesized late: CI job 107674012511 logged the activation point at about 56 s and XCTest's coordinate tap at 82.99 s, then ALERT_DEADLINE_EXCEEDED. The caller is told the command failed while the tap still lands.
The #2843 banner test (testAlertActivationDoesNotWaitOutANotificationBanner) proves XCTest's interruption handling was not consulted (RunnerTests+AlertObservationTests.swift ~124-128). It does not prove the tap landed before the deadline, which is why it failed there.
Required behavior
- Check the deadline immediately before the event is synthesized, and never tap after it.
- Keep the post-activation uncertainty response. Never retry an alert tap.
- Split the test so that "no interruption handling" and "confirmed before the deadline" are asserted separately.
Refs #2491, #2843.
Problem
An alert
accept/dismisstap can land after the command's deadline. The last deadline guard runs before the synchronous coordinate tap (RunnerTests+Alert.swift~131-143 →RunnerTests+Interaction.swift~527-535). On a slow host the tap is synthesized late: CI job 107674012511 logged the activation point at about 56 s and XCTest's coordinate tap at 82.99 s, thenALERT_DEADLINE_EXCEEDED. The caller is told the command failed while the tap still lands.The #2843 banner test (
testAlertActivationDoesNotWaitOutANotificationBanner) proves XCTest's interruption handling was not consulted (RunnerTests+AlertObservationTests.swift~124-128). It does not prove the tap landed before the deadline, which is why it failed there.Required behavior
Refs #2491, #2843.