package Ġcom . xm . screenshot . testing Ċ Ċ import Ġcom . facebook . testing . screenshot . View Helpers Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . res . Configuration Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup . LayoutParams . WRAP _ CONTENT Ċ import Ġandroidx . test . platform . app . Instrumentation Registry Ċ import Ġandroidx . test . rule . Grant Permission Rule Ċ import Ġcom . facebook . testing . screenshot . Screenshot Ċ import Ġcom . xm . R Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . rules . Test Name Ċ import Ġorg . junit . Rule Ċ import Ġjava . util .* ĊĊ Ċ /** Ċ Ġ* ĠCreated Ġby ĠChrist o for os ĠFil ipp ou Ġon Ġ 3 0 / 0 3 / 2 0 1 9 Ċ Ġ*/ Ċ open Ġclass ĠScreen shot TestBase Ġ{ ĊĊĠĠĠ Ġ// Ġhttps :// stackoverflow . com / a / 3 2 8 2 7 6 0 0 ĊĠĠĠ Ġ@ Jvm Field ĊĠĠĠ Ġ@ Rule ĊĠĠĠ Ġval Ġpermission Rule : ĠGrant Permission Rule Ġ= ĠGrant Permission Rule . grant ( android . Manifest . permission . WRITE _ EXTERNAL _ STORAGE ) ĊĊĠĠĠ Ġ@ Jvm Field ĊĠĠĠ Ġ@ Rule ĊĠĠĠ Ġval Ġtest Name Ġ= ĠTest Name () ĊĊĠĠĠ Ġ// ĠResolution ĠDP Ġ 3 2 0 Ġx Ġ 4 8 0 , ĠAs pect Ratio Ġ 3 : 2 ĊĠĠĠ Ġprivate Ġval ĠDEVICE _ 1 Ġ= ĠTest Device ( 3 2 0 , Ġ 4 8 0 ) ĊĠĠĠ Ġ// ĠResolution ĠDP Ġ 3 6 0 Ġx Ġ 6 4 0 , ĠAs pect Ratio Ġ 1 6 : 9 ĊĠĠĠ Ġprivate Ġval ĠDEVICE _ 2 Ġ= ĠTest Device ( 3 6 0 , Ġ 6 4 0 ) ĊĠĠĠ Ġ// ĠResolution ĠDP Ġ 4 8 0 Ġx Ġ 8 0 0 , ĠAs pect Ratio Ġ 5 : 3 ĊĠĠĠ Ġprivate Ġval ĠDEVICE _ 3 Ġ= ĠTest Device ( 4 8 0 , Ġ 8 0 0 ) ĊĠĠĠ Ġ// ĠResolution ĠDP Ġ 6 0 0 Ġx Ġ 9 6 0 , ĠAs pect Ratio Ġ 8 : 5 ĊĠĠĠ Ġprivate Ġval ĠDEVICE _ 4 Ġ= ĠTest Device ( 6 0 0 , Ġ 9 6 0 ) ĊĊĠĠĠ Ġprotected Ġlateinit Ġvar Ġcontext : ĠContext ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġopen Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ Ġcontext Ġ= ĠInstrument ation Registry . get Instrumentation (). target Context ĊĠĠĠĠĠĠĠ Ġcontext . set Theme ( R . style . App Theme ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġupdate Resources ( locale : ĠLocale , Ġis Dark Theme : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconfiguration Ġ= Ġcontext . resources . configuration ĊĊĠĠĠĠĠĠĠ Ġconfiguration . set Locale ( locale ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġhttps :// stackoverflow . com / a / 3 2 4 7 6 0 2 7 ĊĠĠĠĠĠĠĠ Ġconfiguration . ui Mode Ġ= Ġconfiguration . ui Mode Ġand ĠConfiguration . UI _ MODE _ N IGHT _ MASK . inv () ĊĠĠĠĠĠĠĠ Ġif Ġ( is Dark Theme ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfiguration . ui Mode Ġ= Ġconfiguration . ui Mode Ġor ĠConfiguration . UI _ MODE _ N IGHT _ YES ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfiguration . ui Mode Ġ= Ġconfiguration . ui Mode Ġor ĠConfiguration . UI _ MODE _ N IGHT _ NO ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcontext Ġ= Ġcontext . create Configuration Context ( configuration ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġrecord ( view : ĠView , Ġdevice : ĠTest Device ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( device . height Ġ== ĠWR AP _ CONTENT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠView Helpers . setup View ( view ). set Exact Width Dp ( device . width ). layout () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠView Helpers . setup View ( view ). set Exact Width Dp ( device . width ). set Exact Height Dp ( device . height ). layout () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠScreen shot . snap ( view ). setName ( test Name . methodName Ġ+ Ġ"_" Ġ+ Ġdevice . info ). record () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġget View Config Com bos ( height : ĠInt ): ĠList < Test Device > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdevices Ġ= ĠArrayList < Test Device >() ĊĠĠĠĠĠĠĠ Ġ// Ġhere Ġwe Ġcan Ġadd Ġmore Ġlanguages Ġbut Ġin Ġorder Ġto Ġreduce Ġthe Ġnumber Ġof Ġscreenshots Ġfor Ġthe ĠPR Ġdemo Ġwe Ġremoved Ġ' el ' ĊĠĠĠĠĠĠĠ Ġval Ġlanguages Ġ= ĠarrayOf (" en ") ĊĊĠĠĠĠĠĠĠ Ġdevices . addAll ( generate Com bos ( languages , ĠTest Device ( DEVICE _ 1 . width , Ġheight ), Ġfalse )) ĊĠĠĠĠĠĠĠ Ġdevices . addAll ( generate Com bos ( languages , ĠTest Device ( DEVICE _ 4 . width , Ġheight ), Ġtrue )) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġdevices ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġgenerate Com bos ( locales : ĠArray < String >, Ġdevice : ĠTest Device , Ġis Dark Theme : ĠBoolean ): ĠList < Test Device > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdevices Ġ= ĠArrayList < Test Device >() ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( locale Str Ġin Ġlocales ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Device Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTest Device ( device . width , Ġdevice . height , Ġis Dark Theme , ĠLocale ( locale Str )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdevices . add ( new Device ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġdevices ĊĠĠĠ Ġ} Ċ Ċ }