💪

Jetpack Compose UI TestでperformKeyPressを使う

1 min read

やりたいこと

TextFieldでEnterボタンを押したい。

色々と調べた

performKeyPress()にはKeyEventを引数に取ること、そしてKeyEventはNativeKeyEventを引数に取るらしい。
しかし、具体的なsample codeが一つもなくて、ものすごく悩んだ。ここで、良い文献を挙げられないぐらい、何もない(久しぶりに、暗中模索をした)。
結局、performKeyPressを書いた時に、候補で出てくる引数で、それっぽいものを片っ端から入れていって、動くコードを見つけた。

動くコード

composeTestRule
    .onNode(
	hasContentDescription("Input Address")
		and hasText(nameLabel)
    )
    .performKeyPress(
	KeyEvent(
	    NativeKeyEvent(100, 100, ACTION_DOWN, KEYCODE_ENTER, 1)
	)
    )
composeTestRule
    .onNode(
	hasContentDescription("Input Address")
		and hasText(nameLabel)
    )
    .performKeyPress(
	KeyEvent(
	    NativeKeyEvent(100, 100, ACTION_UP, KEYCODE_ENTER, 1)
	)
    )

ここで重要なのはACTION_DOWNとACTION_UPを両方すること。押して離さないと、動かない場合がある。

Discussion

ログインするとコメントできます