package Ġcom . air bnb . android . show k ase . processor . writer Ċ Ċ import Ġcom . air bnb . android . show k ase . processor . writer . Show k ase Browser Writer . Companion . COLOR _ PROPERTY _ NAME Ċ import Ġcom . air bnb . android . show k ase . processor . writer . Show k ase Browser Writer . Companion . COMPONENT _ PROPERTY _ NAME Ċ import Ġcom . air bnb . android . show k ase . processor . writer . Show k ase Browser Writer . Companion . TY PO GR AP HY _ PROPERTY _ NAME Ċ import Ġcom . air bnb . android . show k ase . processor . writer . Show k ase Extension Functions Writer . Companion . CONTEXT _ CLASS _ NAME Ċ import Ġcom . air bnb . android . show k ase . processor . writer . Show k ase Extension Functions Writer . Companion . SHOW K ASE _ OBJECT _ CLASS _ NAME Ċ import Ġcom . squareup . kotlin po et . Annotation Spec Ċ import Ġcom . squareup . kotlin po et . ClassName Ċ import Ġcom . squareup . kotlin po et . Fun Spec Ċ import Ġcom . squareup . kotlin po et . K Modifier Ċ import Ġcom . squareup . kotlin po et . Property Spec Ċ import Ġcom . squareup . kotlin po et . Type Spec Ċ import Ġjavax . annotation . processing . Processing Environment Ċ Ċ internal Ġclass ĠShow k ase Screenshot Test Writer ( private Ġval Ġprocessing Env : ĠProcessing Environment ) Ġ{ ĊĠĠĠ Ġinternal Ġfun Ġgenerate Screenshot Tests ( ĊĠĠĠĠĠĠĠ Ġcomponents Size : ĠInt , ĊĠĠĠĠĠĠĠ Ġcolors Size : ĠInt , ĊĠĠĠĠĠĠĠ Ġty pography Size : ĠInt , ĊĠĠĠĠĠĠĠ Ġroot Module PackageName : ĠString , ĊĠĠĠĠĠĠĠ Ġtest ClassName : ĠString ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġshow k ase Screenshot Test ClassName Ġ= Ġ"${ test ClassName }_ Show k ase Code gen " ĊĠĠĠĠĠĠĠ Ġval Ġfile Builder Ġ= ĠgetFile Builder ( root Module PackageName , Ġshow k ase Screenshot Test ClassName ) ĊĠĠĠĠĠĠĠ Ġfile Builder ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Type ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( Type Spec . class Builder ( show k ase Screenshot Test ClassName )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuperclass ( ClassName ( root Module PackageName , Ġtest ClassName )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Annotation ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAnnotation Spec . builder ( RUN WITH _ CLASS NAME ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Member ("% T :: class ", ĠJ UNIT _ CLASS NAME ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Property ( add Compose Test Rule Property ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Property ( add Storage Runtime Permission Property ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Test ( components Size , Ġ" comp osable ", ĠCOMPONENT _ PROPERTY _ NAME ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Test ( typography Size , Ġ" typography ", ĠTY PO GR AP HY _ PROPERTY _ NAME ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Test ( colors Size , Ġ" color ", ĠCOLOR _ PROPERTY _ NAME ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuild () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġfile Builder . build (). writeTo ( processing Env . filer ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd Compose Test Rule Property () Ġ= ĊĠĠĠĠĠĠĠ ĠProperty Spec . builder ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" compose Test Rule ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCOMP OSE _ CONTENT _ TEST _ RULE _ CLASS _ NAME ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Annotation ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAnnotation Spec . builder ( RULE _ CLASS NAME ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. use Site Target ( Annotation Spec . Use Site Target . GET ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Modifiers ( K Modifier . OVERRIDE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. initializer ("% T ()", ĠCREATE _ COMP OSE _ RULE _ CLASS _ NAME ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠ Ġprivate Ġfun Ġadd Storage Runtime Permission Property () Ġ= ĠProperty Spec . builder ( ĊĠĠĠĠĠĠĠ Ġ" permission Rule ", ĊĠĠĠĠĠĠĠ ĠG RAN T _ PERMISSION _ RULE _ CLASS _ NAME ĊĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ. add Annotation ( Annotation Spec . builder ( RULE _ CLASS NAME ). build ()) ĊĠĠĠĠĠĠĠ Ġ. add Annotation ( Annotation Spec . builder ( JVM _ FIELD _ CLASS _ NAME ). build ()) ĊĠĠĠĠĠĠĠ Ġ. initializer ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"% T . grant (\ n Ġ% T . permission . WRITE _ EXTERNAL _ STORAGE ,\ n Ġ% T . permission . READ _ EXTERNAL _ STORAGE Ġ\ n )", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠG RAN T _ PERMISSION _ RULE _ CLASS _ NAME , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMAN IFEST _ CLASS _ NAME , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMAN IFEST _ CLASS _ NAME ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠ Ġprivate Ġfun ĠType Spec . Builder . add Test ( ĊĠĠĠĠĠĠĠ Ġsize : ĠInt , ĊĠĠĠĠĠĠĠ Ġtest Name Prefix : ĠString , ĊĠĠĠĠĠĠĠ ĠpropertyName : ĠString ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠmethodName Ġ= Ġtest Name Prefix . replace First Char Ġ{ Ġit . uppercase () Ġ} ĊĠĠĠĠĠĠĠ Ġfor Ġ( index Ġin Ġ 0 Ġuntil Ġsize ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfunction Name Ġ= Ġ"${ test Name Prefix }_ screenshot _ test _$ index " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Function ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFun Spec . builder ( function Name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Annotation ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAnnotation Spec . builder ( J UNIT _ TEST ). build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Code ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" take ${ methodName } Screenshot (% T . getMetadata (). $ propertyName [$ index ]) ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSHOW K ASE _ OBJECT _ CLASS _ NAME ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠJ UNIT _ ORG Ġ= Ġ" org . junit " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠJ UNIT _ RUN NER Ġ= Ġ"$ J UNIT _ ORG . runner " ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠRUN WITH _ CLASS NAME Ġ= ĠClass Name ( J UNIT _ RUN NER , Ġ" RunWith ") ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠJ UNIT _ CLASS NAME Ġ= ĠClass Name ("${ J UNIT _ RUN NER } s ", Ġ" JUnit 4 ") ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠJ UNIT _ TEST Ġ= ĠClass Name ( J UNIT _ ORG , Ġ" Test ") ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠRULE _ CLASS NAME Ġ= ĠClass Name ( J UNIT _ ORG , Ġ" Rule ") ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠJ UNIT 4 _ PACKAGE Ġ= Ġ" android x . compose . ui . test . junit 4 " ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠCOMP OSE _ CONTENT _ TEST _ RULE _ CLASS _ NAME Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠClass Name ( J UNIT 4 _ PACKAGE , Ġ" Compose Content Test Rule ") ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠCREATE _ COMP OSE _ RULE _ CLASS _ NAME Ġ= ĠClass Name ( J UNIT 4 _ PACKAGE , Ġ" create Compose Rule ") ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠIN STR UMENT ATION _ REGISTRY _ CLASS _ NAME Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠClass Name (" android x . test . platform . app ", Ġ" Instrumentation Registry ") ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠG RAN T _ PERMISSION _ RULE _ CLASS _ NAME Ġ= ĠClass Name (" android x . test . rule ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Grant Permission Rule ") ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠJVM _ FIELD _ CLASS _ NAME Ġ= ĠClass Name (" kotlin . jvm ", Ġ" Jvm Field ") ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠMAN IFEST _ CLASS _ NAME Ġ= ĠClass Name (" android ", Ġ" Manifest ") ĊĠĠĠ Ġ} Ċ } Ċ