/** Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠEP AM ĠSystems Ċ Ġ* Ċ Ġ* Ġ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 Ġcom . ep am . drill . plugins . test 2 code . e 2 e Ċ Ċ import Ġcom . ep am . drill . builds .* Ċ import Ġcom . ep am . drill . e 2 e .* Ċ import Ġcom . ep am . drill . e 2 e . plugin .* Ċ import Ġcom . ep am . drill . plugin . api . end .* Ċ import Ġcom . ep am . drill . plugins . test 2 code .* Ċ import Ġcom . ep am . drill . plugins . test 2 code . api .* Ċ import Ġcom . ep am . drill . plugins . test 2 code . common . api .* Ċ import Ġio . kot lint est .* Ċ import Ġio . kot lint est . matchers . double s .* Ċ import Ġio . kot lint est . matchers . num erics .* Ċ import Ġio . ktor . http .* Ċ import Ġkotlinx . coroutines .* Ċ import Ġkotlin . test .* Ċ Ċ class ĠPlugin InstanceState Test Ġ: ĠE 2 E Plugin Test () Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` deploy Ġbuild 2 Ġwith Ġfinish ing Ġactive Ġscope Ġand Ġsession Ġon Ġprevious Ġbuild `() Ġ{ ĊĠĠĠĠĠĠĠ Ġcreate Simple App With Plugin < Coverage Socket Streams > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconnect Agent < Build 1 > Ġ{ Ġplug Ui , Ġbuild Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplug Ui . build Coverage () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplug Ui . coverage Packages () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplug Ui . active Sessions () !!. run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcount ĠshouldBe Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtest Types ĠshouldBe Ġempty Set () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstart New Session Ġ= ĠStart New Session ( Start Payload (" MAN UAL ")). stringify () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplugin Action ( start New Session ) Ġ{ Ġstatus , Ġcontent Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus ĠshouldBe ĠHttpStatusCode . OK ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstart Session Ġ= Ġcontent !!. parse Json Data < Start Agent Session >() ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplug Ui . active Sessions () !!. run Ġ{ Ġcount ĠshouldBe Ġ 1 Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun With Session ( start Session . payload . sessionId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgt Ġ= Ġbuild . entry Point () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgt . test 1 () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgt . test 2 () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgt . test 3 () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplugin Action ( Stop Agent Session ( Agent Session Payload ( start Session . payload . sessionId )). stringify ()). join () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. join () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplug Ui . active Sessions () !!. count ĠshouldBe Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġswitch Scope Ġ= ĠSwitch Active Scope ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠActive Scope Change Payload ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscope Name Ġ= Ġ" new 2 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsave Prev Scope Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprev Scope Enabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). stringify () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplugin Action ( switch Scope ) Ġ{ Ġstatus , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus ĠshouldBe ĠHttpStatusCode . OK ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplug Ui . build Coverage () !!. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcount . covered ĠshouldBe GreaterThan Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplug Ui . coverage Packages () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplug Ui . coverage Packages () !!. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfirst (). coverage ĠshouldBe GreaterThan Ġ 0 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. join () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelay ( 1 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. reconnect < Build 2 > Ġ{ Ġplug Ui , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplug Ui . build Coverage () !!. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcount . covered ĠshouldBe Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` deploy Ġbuild 2 Ġwithout Ġfinish ing Ġactive Ġscope Ġand Ġsession Ġon Ġprevious Ġbuild `() Ġ{ ĊĠĠĠĠĠĠĠ Ġlateinit Ġvar Ġactive Scope Id First Build : ĠString ĊĠĠĠĠĠĠĠ Ġcreate Simple App With Plugin < Coverage Socket Streams > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconnect Agent < Build 1 > Ġ{ Ġplug Ui , Ġbuild Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplug Ui . coverage Packages () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplug Ui . active Sessions () !!. run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcount ĠshouldBe Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtest Types ĠshouldBe Ġempty Set () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplug Ui . active Scope () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstart New Session Ġ= ĠStart New Session ( Start Payload (" MAN UAL ")). stringify () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplugin Action ( start New Session ) Ġ{ Ġstatus , Ġcontent Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus ĠshouldBe ĠHttpStatusCode . OK ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstart Session Ġ= Ġcontent !!. parse Json Data < Start Agent Session >() ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplug Ui . active Sessions () !!. run Ġ{ Ġcount ĠshouldBe Ġ 1 Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun With Session ( start Session . payload . sessionId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgt Ġ= Ġbuild . entry Point () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgt . test 1 () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgt . test 2 () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgt . test 3 () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplugin Action ( Stop Agent Session ( Agent Session Payload ( start Session . payload . sessionId )). stringify ()). join () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. join () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplug Ui . active Sessions () !!. count ĠshouldBe Ġ 0 ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplug Ui . active Scope () !!. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactive Scope Id First Build Ġ= Ġid ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcoverage . percentage ĠshouldBe Ġ 1 0 0 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcoverage . by Test Type . find Ġ{ Ġit . type Ġ== Ġ" MAN UAL " Ġ} ?. summary ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcoverage . percentage ĠshouldBe Ġ 1 0 0 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtest Count ĠshouldBe Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcoverage . method Count . covered ĠshouldBe Ġ 4 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstart New Session 2 Ġ= ĠStart New Session ( Start Payload (" AUTO ")). stringify () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplugin Action ( start New Session 2 ) Ġ{ Ġstatus , Ġcontent Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus ĠshouldBe ĠHttpStatusCode . OK ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstart Session 2 Ġ= Ġcontent !!. parse Json Data < Start Agent Session >() ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplug Ui . active Sessions () !!. run Ġ{ Ġcount ĠshouldBe Ġ 1 Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun With Session ( start Session 2 . payload . sessionId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgt Ġ= Ġbuild . entry Point () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgt . test 1 () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgt . test 2 () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgt . test 3 () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. join () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelay ( 1 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. reconnect < Build 2 > Ġ{ Ġplug Ui , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplug Ui . active Sessions () !!. count ĠshouldBe Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplug Ui . active Scope () !!. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġshould Not Be Ġactive Scope Id First Build ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcoverage . percentage ĠshouldBe Ġ 0 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcoverage . by Test Type ĠshouldBe Ġempty List () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` re deploy Ġbuild 1 Ġafter Ġfinish ing Ġactive Ġscope Ġand Ġsession Ġon Ġthis Ġbuild `() Ġ{ ĊĠĠĠĠĠĠĠ Ġcreate Simple App With Plugin < Coverage Socket Streams > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconnect Agent < Build 1 > Ġ{ Ġplug Ui , Ġbuild Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplug Ui . coverage Packages () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplug Ui . active Sessions () !!. run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcount ĠshouldBe Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtest Types ĠshouldBe Ġempty Set () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstart New Session Ġ= ĠStart New Session ( Start Payload (" MAN UAL ")). stringify () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplugin Action ( start New Session ) Ġ{ Ġstatus , Ġcontent Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus ĠshouldBe ĠHttpStatusCode . OK ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstart Session Ġ= Ġcontent !!. parse Json Data < Start Agent Session >() ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplug Ui . active Sessions () !!. run Ġ{ Ġcount ĠshouldBe Ġ 1 Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun With Session ( start Session . payload . sessionId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgt Ġ= Ġbuild . entry Point () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgt . test 1 () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgt . test 2 () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgt . test 3 () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplugin Action ( Stop Agent Session ( Agent Session Payload ( start Session . payload . sessionId )). stringify ()). join () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. join () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplug Ui . active Sessions () !!. count ĠshouldBe Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġswitch Scope Ġ= ĠSwitch Active Scope ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠActive Scope Change Payload ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscope Name Ġ= Ġ" new 2 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsave Prev Scope Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprev Scope Enabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). stringify () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplugin Action ( switch Scope ). join () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplug Ui . coverage Packages () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplug Ui . coverage Packages () !!. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfirst (). coverage ĠshouldBe GreaterThan Ġ 0 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelay ( 1 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. reconnect < Build 1 > Ġ{ Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// same Ġversion Ġ- Ġno Ġmessages Ġwere Ġsent ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` toggle Ġbaseline Ġfor Ġa Ġsecond Ġbuild `() Ġ{ ĊĠĠĠĠĠĠĠ Ġcreate Simple App With Plugin < Coverage Socket Streams > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconnect Agent < Build 1 > Ġ{ Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. reconnect < Build 2 > Ġ{ Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġset Baseline Ġ= ĠToggle Baseline . stringify () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplugin Action ( set Baseline ) Ġ{ Ġstatus , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus ĠshouldBe ĠHttpStatusCode . OK ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġunset Baseline Ġ= ĠToggle Baseline . stringify () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplugin Action ( unset Baseline ) Ġ{ Ġstatus , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus ĠshouldBe ĠHttpStatusCode . OK ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġbe ĠBad ĠRequest Ġif Ġit Ġtries Ġto Ġchange Ġbaseline Ġfor Ġthe Ġfirst Ġbuild `() Ġ{ ĊĠĠĠĠĠĠĠ Ġcreate Simple App With Plugin < Coverage Socket Streams > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconnect Agent < Build 1 > Ġ{ Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġupdate Baseline Ġ= ĠToggle Baseline . stringify () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplugin Action ( update Baseline ) Ġ{ Ġstatus , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus ĠshouldBe ĠHttpStatusCode . BadRequest ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ