Selector queries have no fallback producer on the iOS Simulator, and any fallback needs producer equivalence
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức phù hợp với người mới
- 42/100
- Loại issue
- Tính năng
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Sôi nổi
- Công nghệ
- ios, typescript
Hướng nghiên cứu
Trước tiên, hãy đọc #2197 và #2273 để hiểu contract của snapshot trong Simulator và sự phân biệt giữa các lỗi truy vấn có kiểu. Sau đó, hãy lần theo bộ tạo snapshot chính, private-AX fallback của nó và đường dẫn truy vấn selector. Công việc được xem là hoàn tất khi các truy vấn fallback vẫn giữ việc khớp theo identifier và label, báo cáo các phủ định đúng với cùng error code, và trả lời nhất quán trước và sau khi suy giảm.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Split out of #2273 at triage request, to keep that issue scoped to the typed failure contract.
What this asks for
A selector query on the iOS Simulator has no fallback producer. Where the snapshot path degrades,
snapshot switches to the private-ax producer and still returns the element, and a selector query
for that same element fails.
This issue tracks giving the selector path a fallback, and the equivalence it would have to hold.
The observation behind it
Measured on agent-device 0.20.10, iOS Simulator, in a remote EAS Simulator session. Full method
and diagnostics are in #2273.
Six screens, 30 is visible calls each. Three screens answered every call. Three answered almost
none, all with XCTEST_RECORDED_FAILURE.
The split follows one thing only, which each capture states in its own header.
| screen | nodes | capture truncated and fell back | queries |
|---|---|---|---|
| screen 1 | 189 | no | answer |
| screen 2 | 177 | no | answer |
| screen 3 | 188 | no | answer |
| screen 4 | 901 | no | answer |
| screen 5 | 178 | yes | fail |
| screen 6 | 170 | yes | fail |
| screen 7 | 149 | yes | fail |
Node count does not predict it in either direction. Screen 4 holds 901 nodes and answers. Screen 7
holds 149 and fails.
A capture taken immediately before each probe held the element every time. So the element was
present and readable while the query for it failed.
Why this is not simply "add the fallback"
Triage notes that #2197 establishes the Simulator snapshot producer and presentation contract
first, and that this work should follow it. We agree, and we want to add one requirement from a
caller's side.
Producer equivalence. A selector resolved through the fallback producer must match identifiers
and labels the same way the primary producer matches them. If the two producers expose different
identifiers, or propagate labels differently, then a query answered from the fallback could report
an element absent when it is present.
For us that would be worse than the failure we reported. A failure stops a flow and names itself. A
false negative passes a check that should have failed, or fails a check that should have passed, and
neither names the producer.
We cannot measure that equivalence ourselves. We tried. We captured one screen twice in one
run, once clean and once degraded, and the two captures turned out to be different states of the
screen rather than one state read two ways. So we have no data on how the two producers differ, and
we are not claiming any.
Acceptance tests we would find convincing
- An element that is present is never reported absent, on either producer, for identifier and label
selectors alike. - A true negative is reported identically by both producers, and with the same error code.
- A screen that forces the fallback answers the same selector query as the same screen before it
degraded.
What would unblock us sooner
Nothing here is urgent for us if #2273 lands. A typed reason that separates "the query could not
run" from "the element is absent" lets a flow retry or read the screen instead, which is enough to
work around this. The fallback is the better fix and the slower one.
- Ngôn ngữ chính
- TypeScript
- Star
- 4.7k
- Fork
- 304
- Merge trung bình
- 11 giờ 29 phút
- Pull request đã merge (30 ngày)
- 514
Hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của callstack/agent-device
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
callstack/agent-device#1869 ·
-
needs-triage
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 32/100
callstack/agent-device#2948 ·
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 55/100
callstack/agent-device#2946 ·
-
needs-triage
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 45/100
callstack/agent-device#2940 ·
-
bug ready-for-agent
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 35/100
callstack/agent-device#2935 ·
Tất cả issue của callstack/agent-device
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
bcgov/bc-wallet-mobile#4761 · 1 bình luận ·
-
external-issue to-triage
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
-
area-deployment area-integrations triage:bot-seen
Độ khó 2/5 Nửa ngày Mức phù hợp với người mới 86/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
-
refactor
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100