티스토리 뷰

반응형

 

안녕하세요 :) Zedd입니다.

 

제가 이 글에서 

이렇게 말했었는데요. 네 맞는 말입니다!

UITest에서는 유니크한 accessibilityLabel 또는 accessibilityIdentifier로 UI Element를 가져올 수 있어요.

그러면 accessibilityLabel과 accessibilityIdentifier의 차이점은 무엇일까요!? 

 

accessibilityLabel


이 프로퍼티에 들어있는 값은 최종 사용자를 대상으로 하는 값입니다. (end-user facing)

즉, 보이스오버 사용자들은 accessibilityLabel에 들어있는 값을 듣게 되는 것이죠.

따라서 이 프로퍼티는 로컬라이징된 String이 들어가는 것이 좋습니다.

 

 

accessibilityIdentifier


방금 본 accessibilityLabel이 최종 사용자를 대상으로 하는 반면, accessibilityIdentifier는 개발자 전용입니다.(developer-facing)

주로 UI Test에서 접근 가능한 UI Element를 식별하는데 사용된다고 합니다.

따라서 이 프로퍼티는 로컬라이징이 필요없고, 되어서도 안됩니다.

 

최종사용자가 아닌 개발자에게만 의미가 있는 값이므로,

지금 UI Context에서 의미가 있는 값을 사용해야합니다. 물론 해당 화면안에서 유니크한 값이어야 하구요.

 +(플러스) 버튼이 있다고 했을 시, 최종사용자에게는 "추가"라고 읽혀져야 하겠죠.

물론 영어권 사용자들에게는 Add라고 읽혀져야 하겠구요.

 

accessibilityIdentifier는 최종 사용자와는 관련이 없는 프로퍼티이기 때문에,

그냥 "addButton"이런식으로 할당해도 되는 것입니다.

(accessibilityLabel에는 따로 "~ button"같은거 넣으면 안됩니다. Add, Play, Help..이런식으로 되어야함)

 

accessibilityLabel로 해도 UITest에서는 전혀 문제가 없습니다. 

하지만 만약 보이스오버 사용자들의 접근성을 높히기 위해

+(플러스) 버튼이 단순히 "추가"가 아니라 "할 일 추가"로 바뀌었다고 생각해봅시다.

 

그럼 accessibilityLabel을 사용하여 작성한 UITest는 전부 깨지게 됩니다.

왜냐면 UITest쪽에서는 여전히 "추가"로 UI Element를 찾고있기 때문이죠.

 

로컬라이징 역시 이슈가 됩니다.

만약 시뮬레이터 환경이 영어를 쓴다고(?) 가정해봅시다.

그럼 +버튼의 accessibilityLabel역시 "추가"가 아닌 "Add"로 들어가있을 겁니다.

하지만 UITest쪽에서는 "추가"로 UI Element를 찾고있습니다.

UITest는 "추가"라는 accessibilityLabel 또는 accessibilityIdentifier를 찾지 못하므로 test가 실패하게 됩니다.

 

그러니까 우리는 좋은 UITest를 작성하려면 accessibilityIdentifier를 사용해야한다는거죠!!!

accessibilityLabel이 아예 바뀌든, 로컬라이징 되든..

accessibilityIdentifier는 변함이 없을테니 UITest는 영향을 받지 않게 됩니다.

 

아시겠나요!?

그러니 UITest를 작성하시려는 분들은...

accessibilityLabel말고 accessibilityIdentifier를 사용해라! 가 결론입니다.

 

기존에 있던 accessibilityLabel을 지우고 accessibilityIdentifier를 써라 < 가 절대 아닌거 아시죠!?!?!???!!?!?

accessibilityLabel과 accessibilityIdentifier를 같이 쓰는게 가장 이상적이겠죠?

 

제가 UITest글을 쓰면서 이 부분을 봤어야 ㅎㅏ는데...OTL

accessibilityLabel로 사용한 부분들을 전부 고쳐야겠습니다...

 

참고 :

stackoverflow.com/questions/21152716/whats-the-difference-between-setaccessibilitylabel-and-accessibilityidentifier

반응형