Skip to content

fix(ios): confirm alerts without repeating activation - #2326

Merged
thymikee merged 1 commit into
callstack:mainfrom
billsbooth:codex/qa-alert-identity
Sep 6, 2026
Merged

fix(ios): confirm alerts without repeating activation#2326
thymikee merged 1 commit into
callstack:mainfrom
billsbooth:codex/qa-alert-identity

Conversation

@billsbooth

@billsbooth billsbooth commented Sep 6, 2026

Copy link
Copy Markdown
Contributor

Summary

Prevent one iOS alert action from tapping a replacement. Native activation happens once; subsequent checks only observe. For example, agent-device alert accept must leave a following prompt untouched.

Scope

Nine files: native confirmation, UIKit fixture, selected XCTest cases, help and docs. Independent of #2323's transport retry repair. No driver-version or permission-setup changes.

Verification

Production Swift policy: five failures before repair, seven checks passing afterward. At 9a1da31e1, frozen install, build and pnpm check:affected --run passed. An earlier cleanup failure reproduced on unchanged upstream; no retries/timeouts were added.

Automated QA evidence: current-head iOS passed 81 native tests, including all four replacement/deadline regressions. Hosted macOS passed 194 tests. First-head iOS also passed live ordinary alert get/wait/dismiss/accept and cleanup.

Validation

At 9a1da31e1, eleven checks passed; iOS failed its initial fixture-home text wait before alert actions. Settings replay needed three attempts. Capture/readiness diagnosis remains open; not merge-ready. First-head Android capture failure also remains recorded. Physical/system-popup parity is untested. Changed presentation is not unique identity or permission proof; identical alerts remain unconfirmed. UI is fixture-only.

Automated Test Plan

Run this PR's iOS / Smoke Tests check. Four selected RunnerTests+AlertObservationTests launch a credential-free fixture: changed-title accept, same-title dismiss, identical-looking replacement, expired-before-action. Assert first/replacement counts 1/0 (0/0 before admission), inspect Cancel/OK independently, retain XCTest results. Tests terminate the fixture.

Require existing live fixture alert outcomes/cleanup and macOS host policy tests. Never replay live permission acceptance to reproduce failures.

@thymikee

thymikee commented Sep 6, 2026

Copy link
Copy Markdown
Member

The macOS runner does not compile at 2413aeb: runningBackgroundSuspended is not available on macOS, but RunnerTests+AlertObservation.swift uses it unconditionally. Please follow the platform-specific handling already used in RunnerTests+Lifecycle.swift, then rerun the macOS build and tests.

The iOS tests passed, including the replacement-alert cases. Android also hit a snapshot timeout while waiting for landscape; that needs a passing run, but there is no evidence here that the alert change caused it.

@billsbooth
billsbooth force-pushed the codex/qa-alert-identity branch from 2413aeb to 9a1da31 Compare September 6, 2026 05:53
@thymikee

thymikee commented Sep 6, 2026

Copy link
Copy Markdown
Member

The macOS compile issue is fixed at 9a1da31e; the build and all 194 native tests passed. The iOS native suite also passed, including all four new alert regressions. No new code findings. The remaining iOS smoke failure happens before alert actions, while waiting for the fixture home screen with no readable captures. Please resolve or establish the cause of that failure and get the required iOS check passing before merge.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants