iOS alert resolution reads every element of the app window when a popover is found
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 64/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Activo
- Stack tecnológico
- swift
- Área
- mobile-dev, performance, testing-qa
Línea de trabajo
Start in RunnerTests+Alert.swift around the resolution root and preferredAlertTitle, then inspect actionableElements in RunnerTests+SystemModal.swift and compare the no-alert fix from #2901. Bound the XCTest queries under the popover or dimming region and check the deadline between reads. Add a popover-over-long-list regression fixture and verify the command finishes within its budget.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Problem
Alert handling in the iOS runner reads per element over a whole app window, with no deadline check, when a popover is found. #2901 fixed the no-alert case (firstDismissPopupWindow now uses one predicate query). The same cost remains when a popover is present:
- the resolution root becomes the whole app window (
RunnerTests+Alert.swift~47-48); actionableElements(RunnerTests+SystemModal.swift~121-143) makes about 5 XCTest reads for each button, cell and link;preferredAlertTitle(RunnerTests+Alert.swift~219) walks every descendant.
A popover over a list with many rows can therefore overrun the command watchdog and keep the runner busy. The synchronous XCTest work continues after the watchdog answers the client, so later commands get RUNNER_BUSY. This is the same wedge #2901 fixed for the no-alert path.
Required behavior
Alert resolution makes a bounded number of XCTest reads, whatever the screen size: query under the dimming or popover region, use predicates instead of walks, and check the command deadline between reads. Add a regression fixture with a popover over a long list, and assert the command finishes well within its budget.
Found in the adversarial review of #2901.
- Lenguaje dominante
- TypeScript
- Estrellas
- 5.1k
- Forks
- 339
- Merge medio
- 12 h 53 min
- PR fusionados (30 d)
- 644
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de callstack/agent-device
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
callstack/agent-device#3982 ·
Los mantenedores suelen responder en 1 día
-
A session bound to an Apple device rejects --device=<its own UDID>Posiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abiertobug
Dificultad 2/5 1-3 horas Aptitud para principiantes 64/100
callstack/agent-device#3945 ·
Los mantenedores suelen responder en 1 día
-
Limrun iOS fill reports success but drops non-ASCII textPosiblemente ocupada @mvanhorn la tomó hace 6 días. Abiertobug ready-for-agent
Dificultad 2/5 1-3 horas Aptitud para principiantes 87/100
callstack/agent-device#3819 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
callstack/agent-device#1869 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 4/5 3-5 días Aptitud para principiantes 55/100
callstack/agent-device#3981 ·
Los mantenedores suelen responder en 1 día
Todos los issues de callstack/agent-device
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 1-3 horas Aptitud para principiantes 84/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 83/100
keptinventory/kept#336 ·
Los mantenedores suelen responder en 1 día
-
good first issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
-
hemi-earn
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
vetro-protocol/vetro-monorepo#1013 ·
Los mantenedores suelen responder en 1 día