Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

Maestro `eraseText` fails on real Android devices: `test` and `replay` cannot opt in to the test IME

Đang mở
#2,997 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

Chưa có ai nhận issue này.

Đánh giá

Độ khó
3/5
Thời gian dự kiến
1-2 ngày
Mức phù hợp với người mới
74/100
Loại issue
Tính năng
Độ rõ ràng
Đặc tả rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
android, typescript
Lĩnh vực
cli, mobile, testing

Hướng nghiên cứu

Start with packages/maestro/src/daemon-port/daemon-runtime-port.ts and src/daemon/session-lifecycle/internal/session-open-execution.ts, then trace the test and replay command entry points. Check how open --test-ime activates the helper and how shouldActivateAndroidTestIme handles real devices. Done means test and replay offer an opt-in, eraseText passes on real devices, and the device keyboard is restored while the default remains off.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

Summary

On a real Android device, a Maestro flow with eraseText fails under agent-device test --maestro:

Replay failed at step 27 (eraseText): Android text input requires provider-native text injection or the bundled test IME helper for non-ASCII/control characters; the adb-shell fallback supports ASCII text only. On emulators the test IME activates automatically; on real devices pass `open --test-ime` to enable it

The same flow passes on an emulator. ASCII inputText works on the device.

Cause

eraseText types backspace characters:

https://github.com/callstack/agent-device/blob/16e07572ab28227563fd76ab062cb375c4b7e1db/packages/maestro/src/daemon-port/daemon-runtime-port.ts#L262-L265

Backspace is a control character, so it needs the test IME. On real devices the test IME is opt-in through open --test-ime:

https://github.com/callstack/agent-device/blob/16e07572ab28227563fd76ab062cb375c4b7e1db/src/daemon/session-lifecycle/internal/session-open-execution.ts#L128-L134

test and replay have no such flag, so a flow run on a real device never gets the test IME.

What I tried

  • open --test-ime --session <name>, then test --session <name>: fails at launchApp with android device <serial> is owned by session "<name>"
  • same with replay --maestro --session <name>: same error
  • {"testIme": true} in a config file passed through AGENT_DEVICE_CONFIG: test still fails with the error above
  • adb shell ime set to the helper before test: still fails with the error above

Check with the test IME on

Local patch: shouldActivateAndroidTestIme returns true for real devices. With it, a flow with eraseText passes on the device, and the device keyboard is restored after the run.

Request

An opt-in for flow runs. The real-device default stays off, as decided in #1198. For example:

  • --test-ime on test and replay
  • or testIme from agent-device.json for flow runs

Environment

  • agent-device 0.21.14. Same gating in 0.21.15 and on main at 16e0757
  • Pixel 8, Android 17, USB
  • macOS host
Ngôn ngữ chính
TypeScript
Star
4.7k
Fork
304
Merge trung bình
11 giờ 6 phút
Pull request đã merge (30 ngày)
521

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. 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.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của callstack/agent-device

Tất cả issue của callstack/agent-device

Issue tương tự

Thêm issue về TypeScript

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.