/* Ċ Ġ* ĠCopyright Ġ 2 0 2 1 ĠAutom ate ĠThe ĠPlan et ĠLtd . Ċ Ġ* ĠAuthor : ĠAnt on ĠAnge lov Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* ĠYou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġplugins . video Ċ Ċ import Ġorg . apache . commons . io . FileUtils Ċ import Ġsolutions . bell at rix . core . plugins . EventListener Ċ import Ġsolutions . bell at rix . core . plugins . Plugin Ċ import Ġsolutions . bell at rix . core . plugins . TestResult Ċ import Ġjava . io . File Ċ import Ġjava . lang . reflect . Method Ċ import Ġjava . nio . file . Paths Ċ Ċ abstract Ġclass ĠVideo Plugin ( private Ġval Ġis Enabled : ĠBoolean ) Ġ: ĠPlugin () Ġ{ ĊĠĠĠ Ġprotected Ġabstract Ġval Ġoutput Folder : ĠString ĊĠĠĠ Ġprotected Ġabstract Ġfun Ġget Unique FileName ( test Name : ĠString ): ĠString ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠV IDE O _ GENERATED Ġ= ĠEvent Listener < Video Plugin EventArgs >() ĊĠĠĠĠĠĠĠ Ġval ĠV IDE O _ FULL _ PATH Ġ= ĠThread Local < String >() ĊĠĠĠĠĠĠĠ Ġval ĠF FM PEG _ VIDEO _ REC ORDER Ġ= ĠFF mpeg Video Recorder () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġpre Before Test ( test Result : ĠTest Result , Ġmember Info : ĠMethod ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( isEnabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvideo Save Dir Ġ= Ġoutput Folder ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvideo FileName Ġ= Ġget Unique FileName ( member Info . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtake Video ( video Save Dir , Ġvideo FileName ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġignore Ġsince Ġit Ġis Ġfailing Ġoften Ġbecause Ġof Ġbugs Ġin ĠRemote Ġdriver Ġfor ĠChrome ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġpre After Test ( test Result : ĠTest Result , Ġmember Info : ĠMethod ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( isEnabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvideo Save Dir Ġ= Ġoutput Folder ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvideo FileName Ġ= Ġget Unique FileName ( member Info . name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvideo FullPath : ĠString Ġ= ĠPaths . get ( video Save Dir , Ġvideo FileName ). toString () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠF FM PEG _ VIDEO _ REC ORDER . close () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( test Result Ġ== ĠTest Result . FAILURE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠV IDE O _ GENERATED . broadcast ( Video Plugin EventArgs ( VIDEO _ FULL _ PATH . get ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFileUtils . force Delete On Exit ( File ( video FullPath )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġtake Video ( screenshot Save Dir : ĠString , Ġfilename : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġvideo FullPath Ġ= ĠFF mpeg Video Recorder (). start Recording ( screenshot Save Dir , Ġfilename ) ĊĠĠĠĠĠĠĠ ĠV IDE O _ FULL _ PATH . set ( video FullPath ) ĊĠĠĠ Ġ} Ċ }