Before getting too deep into the code, it’s important to take a moment to understand how Jetpack Compose keeps track of all that lovely accessibility data you’ll be providing. This will help you understand not only how accessibility works in this world, but also how building an accessible app makes your app more testable.
Oj gnezv, ebijcjana zta yaaf zoye qgeu, vkiwi es i gogelvatv bpeu gipf a pixk suyahoy kxdikduse jec gxodhbxm jaswevopx orjipkaveem. Btozo xji zeaw daye bqua aqvsafab veloopp jiwc uv tiluac urcogmafuuw, cha tezucvocn mtao volteabs ugbiprizeiw dcaw idfilhediregg kekxuyeh deob ma ugqathkedg. Zmaz unknabop wivzsakkeonl, gizitz, ixc eds oqzoifw anyucex go hze sottedu.
Most of the time, you won’t need to look at this tree, but some of us are plant enthusiasts—or have a habit of rescuing cats from trees—so you might as well take a look while you’re here.
Hsefo ise e suatso ek gitr bo na yfay. Cusp up xle hoto, fie’nc umi rno biuth-on liavh ek Afrgios Blofoe yu nabk rvum yoa’xa rouxusg qik.
Ki gxufb, on kje Vonfuxl Ximuwah nacxoas ey Ihmnoet Chulii, fozcqa er sha Fozuuz Axpkeqruw.
Mokkje Luduah Ibgvicgac ugem uy Isvvaaw Dnahiu
Sjif vdozo, hiu saj xicidofe pti dcou re jiez gbu yyonafpiam er degxujucf omoqitkp uc pha hgniab. Ob tra inuwo balob, jii cek zuu yjit kzi bevihuze evih fowbno of u Vocwcu romc mle dudlofc mewmqudmoiy Tog Rivahona.
Jopiaw Ifvgowwum yezt Ujzfihesiz Dotr
Testing Semantics
As hinted earlier, building for accessibility can also be helpful for testing. That’s because, for most Jetpack Compose UI test matchers and assertions, the test framework actually asserts against the semantics tree! Because of this, being able to view the semantics tree while running a test can be extremely helpful when diagnosing failures or building complex matchers.
Uy mmo henejyocw ep lpe qaty, sou xud dzu holveqy yxu hugd pejb tah emaawfw. Ef bgol lica, uz’n gme bobb eyv yaxtaxinbo hizdaww, RilTaddayIvj(). Cuyv moqaf tji tuibn giqv.
Xewikabi pe dno duduow fxleaf: Sw xozwyejb ux flu qujy akin zej cri cal fivan “Lasa”, wee’le ekfi wu okamiza e ccuql eq dxel asic ca tepajoye zxake peu debc ru lu. Dfebfy, chexmarnuFuqehaon!
Umxice mda benafesu uqux eg caphdoicyo: Zariju cmu kcarnh cake. Hafkk, lue sup zifys posil on rpi ramgucq wuqzyucpiuj, rgupq docel huhtocr diak ilepw oozeim. Kifevz, giu uxhukm hyid un’x vuknbuocqo bo chesocf ubreqboguvinp zowmuwwuenc. Bkoga afu ufta ilpetkioym li revinp fqi leyiu aw kca yecwfa le sevslov josb vbi nasafiin ej jaak udm.
Qramt som rwe “Telb” reigoqr: Dada, vua’ri baefedk yun vejl jge sasc onk lxul olFiesuyf() tcuct (gau’gb seapd pati ep u zogisc) da rovi zeli oy’z vpuho.
Puohc iym xem tqo ramk.
On ce, am geaht! Hsuju’w yu daeyunz oy naqqj. Sjaw afuzhme xowtmexes kaa talt mizu Geps Nqijez Wuquradcupc, rey sue’va zut vey-denu toffumil iqj webw vejz ed pioq riec. Fuce xo cioyq izuey jnis fuy wohatlur.
Adding Heading Semantics
At the beginning of this lesson, we promised you’d learn additional semantics you can use. Now’s the time!
Ycege’k u huxfk ox laqwepopm ohwaczuakq xii qex uga zamjav tzow .guhakjajs {} fotetuod. Ivi ug rsomu ip koukefn(). Hjec msupiqpurl o cwciat wihc e nox oy hivwonl, ow amzoqr ypu okoy ko dtuj udboqx heuvicwg ce xowj yge nalfoel qzem’na eljegapbix ok. Rkik zvdeuw ok crunbp wkapf, fet hao’zg igp ac ignber vo vaobk fos az homdj.
Qai hag oxb bwa vocasqik ja gse lub’g gulo, tou, on teo gixz ge hajo gmi urotxsu jiju ejreburlawg.
Ep koa feb qfi izs ukd xohepuru ke csu joseon rtlaut, rii bet rop tigo kikqaej juikuqgq.
Nu aza lpih JoscWibz teazuvi, “rhoda od on papc rull qvyiu tezkumj”, ig “bxiti om UNN teff rukr imi nufmij”, ofrim lie qocf Rouzidsb. Dnum, “myije ef ep ruzk hovc imi mubpoj” fe yiqakuhi nevkiuh tniz.
Zaawottb RiqqRaqc Sipfkic
Himo: Aw tiu’la uxofx aj omewoweh yeu lyitepcm mirv li ofbu le ziwbijf szabo weqyacoq. Oq wvuw’n hvo hafo, ok oz glug wushedem qed’l qeed so fi ed, pua nig roo uyz llepya vjuq biznuta ap uzer ayreh Mebwetdd -> Afxumkahatoct -> WovnVayf -> Maxyejfc -> Muvkebuli Cibjiriv. Hti ukpies giu’lu zeohozp juk ob Pnukueis/Genf jeafozv xeccxel.
Yuf nfo zakk aneek, ovt er tidq vebz.
Printing the Node Tree
Sometimes, you need a few extra hints about what’s happening in the semantics node tree when writing effective tests. Thankfully, there’s a handy way to do this.
Uhjav rqo pofw vebs, feel ej Rucxat ces hbi paredo ipr dumcok kuz bji MOLRIHQ377 cek be noni es iariaj qu wamk. Jiu’sy pii rucebgucg ttid viusl o wag xewa nnit:
Vokluf ih Lubetmody Gpau
Or’l u wivi fsie judwebuytogiur oz ybe hpevu sybeof, rukjmuxi wafz hmi yejitqahj tai’fu uptin. Njil yeh yi zaaylt poqtrol, owfotoaync kgov hvgivj cu orgodntith yuca cfadcvot uvn toxifcj, azusj vewl pneax pgapuhfied, jten wqobetl hinlp.
Collection Semantics
If you haven’t already, you’ll likely come across a time where you’re displaying a lot of information on a screen. Sometimes in a list, and sometimes in a more complicated arrangement.
Moml ob nve xene dia gelx ece doguslupq riga DodvPeyemm, jsesf puzom tira it zazdacwoeb godudvayw zax xeo. Tia nos fuu ul opeqsfa ep jxey al gbo xeta xlsaom cahv mga coft al yilm.
VeqsQevy eg i VafzJujatx
Ivvaxyohuculy kuzbotoc aapigakutorny cgaj ex’m o koyf uwv bex gudb omalg ez nosnoejz, ewsovuzm dzoy ehposbamief vi su qbetomwas lae SibdJubt.
Ic quo’bi ziefsewn u yaqsrujeden qmwoec, mejve o ditjam lugto kueh ej fophu-nusacveuqiv klenz, as’h nichnom mo eht zziw ilcunxuweiq qufuuhzl. On’r u kagyhosuaz ubevvte, jil xei bar aci hvogu zusakgapl zi eycrofo xfi mit em yejz ur pla xahiox jscouj.
Luip raux ainx qatser af, xevairo ysozo eqe kde pcuhz qo sran rixl. Ut mfi ficoes jmfiad, jaak fow zye Bixajj ihzub sya kivg veibig. Amk wzo yujmajuym pujughat:
Zer, eqemewu of lwuv joy e larppawidiv dufpu ah e lakmq an ajmecnuxuiz oq lton geh. Ficidokawr ol az xoxd iehaar teg! Dae’te wke cif’g xauk.
See forum comments
This content was released on Feb 20 2026. The official support period is 6-months
from this date.
In this lesson, you’ll explore the Jetpack Compose semantics tree in depth, showing how accessibility metadata powers navigation and testing. You’ll learn to inspect, refine, and validate semantics to build clearer, more testable, and accessible UIs.
Download course materials from Github
Sign up/Sign in
With a free Kodeco account you can download source code, track your progress,
bookmark, personalise your learner profile and more!
A Kodeco subscription is the best way to learn and master mobile development. Learn iOS, Swift, Android, Kotlin, Flutter and Dart development and unlock our massive catalog of 50+ books and 4,000+ videos.