8
Extending Open Source Frameworks for Advanced Functional Testing
THIS CHAPTER WAS CONTRIBUTED BY WIM SELLES, TEST AUTOMATION AUTOMATION ENGINEER AT RABOBANK, NETHERLANDS
!"# %&''&%( $%&' ()'*+,'-*. /.0-.%%1 2*.'1,2'%3 45 6,4*4,.7 &-.2% 89:9; <-=%& -. '>% ?%'>%1<,.3& ,.3 @*17& A*1 , &+,<< 2*+B,.5 2*+B,.5 2,<<%3 3%$%&'%1&C 3%$%&'%1&C D-+ >,& 4%%. )&-.0 E%1A%2'* E%1 A%2'* &-.2% 89:FC 89:FC G. H,12> 89:" >% &',1'%3 &',1 '%3 @-'> '>% -+B<%I -+B< %I +%.','-*. *A ,. ,)'*+,'-*. A1,+%@*17 A1,+%@*17 @-'> E1*'1,2'*1 J K)2)+4%1LM '* ,)'*I +,'% , >541-3 ,BB 4,&%3 *. (.0)<,1 (.0)< ,1CC N%A*1% E%1A%2'* -.'1*3)2%3 &)BB*1' A*1 E1*'1,2'*1 -. O2'*4%1 89:"; D-+ ,.3 , 2*<<%,0)% *A >-& +,.,0%3 '* &%' )B ,. *.I&-'% 3%=-2% <,4 A*1 6,4*4,.7C
THE DIGITAL QUALITY HANDBOOK
INTRODUCTION One of the key benets of using open source testing tools is having the exibility *A 2)&'*+-T-.0 '>%+ A*1 ).-U)% )&% 2,&%& ,.3 2*+B<%+%.'-.0 '>%+ '* +%%' &B%2-,< ,BB '%&'-.0 1%U)-1%+%.'&C $>%1% ,1% B<%.'5 *A %V,+B<%& *. '>% +,17%' @>%1% *10,.-T,'-*.& B*&-'-*.%3 '%&' A1,+%@*17&; &)2> ,& M%<%.-)+ D%4W1-=%1X R1-3 ,.3 (BB-)+; ,& '%2>.*<*05 A*).3,'-*. A*1 2)&'*+ ',-<*1%3 '%&' &*<)'-*.& &,'-&A5-.0 &B%2-,< 1%U)-1%+%.'&C D-'>-. '>-& 2>,B'%1; , &-+-<,1 %V,+B<% *A %V'%.3-.0 '>% M%<%.-)+ D%4W1-=%1 '%&' A1,+%@*17 @-<< 4% B1*=-3%3C $>% =,<)% *A '>-& ,BB1*,2> @-<< 4% -<<)&'1,'%3 '>1*)0> , B*@%1A)< *B%. &*)12% '%&' A1,+%@*17 .,+%3 E1*'1,2'*1C : (& B,1' *A +*4-<% @%4; 1%&B*.&-=% @%4 *1 >541-3 ,BB '%&'-.0; -' -& .%2%&&,15 '* 3%,< @-'> %-'>%1 ).-U)% *4Q%2'& *1 35.,+-2 *4Q%2'& 2>,.0-.0 )B*. ,. %=%.' *1 *'>%1 '1-00%1&C M*+%'-+%& M%<%.-)+ 2,..*' A)<<5 3%'%2' ,.3 B1*=-3% '>% +%,.& A*1 ,331%&&-.0 &)2> &','% 2>,.0%& ,.3 '1,.&-'-*.&C Y*1 '>-& 1%,&*.; '>% 2*++).-'5 3%=%<*B%3 E1*'1,2'*1 @>-2> 1).& *. '*B *A ?*3%CQ& ,.3 >,& 4%%. &B%2-,<<5 3%&-0.%3 A*1 '%&'-.0 (.0)<,1LM ,BB<-2,'-*.&C E1*'1,2'*1 )&%& M%<%.-)+ D%4W1-=%1 ,.3 &)BB*1'& NWW A1,+%@*17& <-7% L,&I +-.%8; H*2>,Z *1 K)2)+4%1F '* %V%2)'% '%&'& *. 1%,< 41*@&%1& ,.3 3%=-2%&C
FIRST STEPS WITH PROTRACTOR D>,' @*)<3 , '5B-2,< '%&' &*<)'-*. 4,&%3 *. E1*'1,2'*1 <**7 <-7%[ G' +%1%<5 consists of a small number of plain text les that need to be understood and ,)'>*1%3 ,22*13-.0<5C The Spec.js le is the place for test automation engineers to develop their scripts or test scenarios. Conf.js is the le where conguration of the underI <5-.0 M%<%.-)+ D%4W1-=%1X R1-3 -& 3*.%C $>% MB%2CQ& 3%&21-4%& '>% ',10%'& A*1
EXTENDING OPEN SOURCE FRAMEWORKS FOR ADVANCED FUNCTIONAL TESTING
)*+,-. /0 B1*=-3%& '>% %V,+B<% &*)12% 2*3% ` 12.3451a *A , '%&' '>,' )&%&
E1*'1,2'*1C
!"#$%& ()* + ,-./0& 12/&34526 7%89%-398% !"0& :
Last but not least, the test execution environment needs to be congured. This -& 3*.% 45 +*3-A5-.0 '>% 3678451 le. With this particular example in )*+,-. /9 a typical execution environment for web apps is dened and congured to use
THE DIGITAL QUALITY HANDBOOK
!"#$%& (;* + ,-./0& 138<=4526 !"0& =8% 7%89%-398%
HOW RABOBANK WENT HYBRID WITH PROTRACTOR 6,4*4,.7 3%=%<*B& ,.3 +,-.',-.& , >541-3 S 4,.7-.0 ,BB<-2,'-*.C H*1% '>,. _"b *A -'& -+B<%+%.','-*. -& 4,&%3 *. D%4c-%@C $>% 1%&' -& .,'-=%C $>% +,-. 1%,&*. A*1 21%,'-.0 , >541-3 4,.7-.0 ,BB<-2,'-*. -& '* >,=% , 2*++*. B<,'A*1+ B*@%1-.0 )B ,<< )&% 2,&%& 1%<,'%3 '* +*4-<%; @%4; ,.3 +*4-<% @%4C
EXTENDING OPEN SOURCE FRAMEWORKS FOR ADVANCED FUNCTIONAL TESTING
WHY PROTRACTOR ( 2*)B<% *A 5%,1& ,0* 6,4*4,.7 '1-%3 '* &*<=% , &%' *A B1*4<%+&C e%%B -. +-.3 '>,' -. 89:F '>% +,17%' @,& @,5 +*1% -++,')1% -. 1%0,13& '* *AA%1-.0 '>% B1*B%1 +%,.& A*1 '%&'-.0 >541-3 +*4-<% ,BB<-2,'-*.&C $>-& &,-3; ,A'%1 , 2,1%A)< ,.,<5&-& *A '>% B,-. B*-.'& '>% '%,+ 0*' '* '>% <-&' *A >-0> <%=%< 1%U)-1%+%.'& '*@,13& '>% &**.I'*I2*+% '%2>.-2,< A*).3,'-*. A*1 '%&' ,)'*+,'-*.C :C $>% '%&' ,)'*+,'-*. &*<)'-*. .%%3%3 '* &)BB*1' '>% A*<<*@-.0 2,B,4-<-'-%&] ,C $%&' '>% ,BB -. B,1,<<%< .,'-=%<5; -. @%4 ,.3 -. +*4-<% @%4 +*3%& 4C Efciently serve 15 different teams that are involved in the SDLC of '>-& ,BB 8C $>% &*<)'-*. &>*)<3 >,=% %,&-<5 B1*=-3%3 +*27%3 ,BB 3,',CC ZC N5 &)BB*1'-.0 +)<'-B<% '%,+&; -' .%%3%3 '* 4% ,22%&&-4<% ,.3 &>,1%3 ,+*.0 ,<< *A '>% ,A*1%+%.'-*.%3 '%,+& \ 4*'> '%&'%1& ,.3 3%=%<*B%1&C FC $>% +,-.'%.,.2% *A '>% '%&' %.=-1*.+%.' &>*)<3 >,=% 4%%. =%15 %,&5 ,.3 &%,+<%&& A*1 ,<< *A '>% '%,+&C "C $%&'& @*)<3 >,=% '* 4% @1-''%. -. R>%17-.C _ OA 2*)1&%; '>%1% @%1% ,<&* *'>%1 2>,<<%.0%&; 4)' ',7-.0 '>% ,4*=% -.'* 2*.I &-3%1,'-*.; 6,4*4,.7 3%2-3%3 '* ')1. '* E1*'1,2'*1 ,& '>% &>%<< A1,+%@*17 A*1 '>%-1 &*<)'-*.C
SPECIAL REQUIREMENTS OR EXTENDING PROTRACTOR ( A1,+%@*17; ,<< 45 -'&%
; ,' <%,&' .*' %.*)0> '* A)<<5 &)BB*1' '%,+& @-'> ,)'*+,'-.0 '>% A%,')1%& '>%5 4)-<3C $,7% '>% A*<<*@-.0 ,& ,. %V,+B<%C
$>% '%&' '**<&%' )&%3 45 6,4*4,.7 -.2<)3%3 E1*'1,2'*1 ,.3 K)2)+4%1LMC G. *13%1 '* '%&' ,.5 0-=%. A%,')1% A*1 `+*4-<%a @%4; *.% .%%3%3 '* <*0-. '* , &%2)1%
THE DIGITAL QUALITY HANDBOOK
GA '>%1% ,1% :" '%,+&; '>% @>%%< &>*)<3 .*' 4% 1%-.=%.'%3 :" '-+%& `,.3 %=%. +*1%; ',7-.0 -.'* ,22*).' >*@ 21%,'-=% 3%=%<*B%1& 2*)<3 4%aC /&B%2-,<<5 @>%. '>% 0*,< A*1 %,2> '%,+ -& '* 21%,'%; 3%<-=%1; ,.3 2*.'1-4)'% :;.*- 8.<:,-. -.&'%,3 *A f@,&'-.0 '-+%g @-'> '%&' '**<&X ,)'>%.'-2,'-*. +%'>*3&C $>-& @,& '>% &',1'-.0 B*-.' A*1 <,5-.0 '>% A*).3,'-*.& *A ,. )'-<-'5 <-41,15 2,<<%3 fB1*'1,2'*1I)'-<&gC 6,4*4,.7 @,.'%3 , 2*++*. B<,2% A*1 3%B%.3%.25 +,.,0%+%.' *A '>%-1 '%&' '**<&C G' &>*)<3 >,=% ,<&* 4**&'%3 &>,1-.0 '%&' ,)'*+,'-*. 7.*@<%30% '>1*)0>*)'
'>% *10,.-T,'-*.C $>)&; %,2> '%,+ &>*)<3 >,=% )&%3 '>% =%15 &,+% =%1&-*. *A '>% '%&' '**<&%' '* B1%=%.' '%2>.-2,< '**< 3%B'>&C Y1*+ *.% >,.3 &-3%; E1*'1,2'*1 @,& %=*<=-.0 1%,<<5 A,&'C O. '>% *'>%1; M%<%.-)+ D%4W1-=%1 @,& ,001%&&-=%<5 &'1-=-.0 '* &)BB*1' '>% A,&' 1%<%,&% 252<%& *A +*3%1. @%4 41*@&%1&C N5 )&-.0 fB1*'1,2'*1I)'-<&g '>% ,)'>%.'-2,'-*. +%2>,.-&+ 1%U)-1%3 A*1 '%&'-.0 1%&)<'%3 -. , &-.0<% +%'>*3 2,<<%3 f<*0*.`ag; ,& -<<)&'1,'%3 -. )*+,-. /=4 N,&%3 *. '>% 2,B,4-<-'-%& B,&&%3 '* '>% M%<%.-)+ D%4W1-=%1; '>% +%'>*3 -'&% '* 3%'%1+-.% -A -' .%%3& '* <*0*. '* `, +*4-<%a @%4 *1 , .,'-=% =%1&-*. *A '>% ,BBC D%<<; -. A,2' fB1*'1,2'*1I)'-<&g ',7%& 2,1% *A '>% >%,=5 <-A'-.0 B,1' ,.3 ,)'*+,'-*. %.0-.%%1& Q)&' .%%3 '* B1*=-3% 21%3%.'-,<&C ?*'% '>,' '>% 3*2)+%.','-*. *A '>% +%'>*3 -& 0%.%1,'%3 ,)'*+,'-2,<<5C
EXTENDING OPEN SOURCE FRAMEWORKS FOR ADVANCED FUNCTIONAL TESTING
!"#$%& (:* F8#"< !$<39"8<-0"9? G-2&A 8< 1/%89%-398%H$9"026
Y1*+ '>,' B*-.' *.; '>-& )&%A)< <-41,15 %=*<=%3 -.'* , .B+ +*3)<% A*1 E1*'1,2'*1
THE DIGITAL QUALITY HANDBOOK
fB1*'1,2'*1I)'-<&g .*@ 2*.',-.&] ▪ (<< *A '>% 3%B%.3%.2-%& `'>% ).3%1<5-.0 '%&' A1,+%@*17&a; &)2> ,& E1*'1,2'*1; K)2)+4%1LM; %'2C ▪ “Default” congurations for Protractor and CucumberJS ▪ i'-<-'5 +%'>*3& '* %,&% '>% '%&'-.0 *A A1*.'%.3 B1*Q%2'& ▪ H%,.& A,2-<-','-.0 1%B*1'-.0 `>**7& ,.3 4,&-2 '%&' %V%2)'-*. 1%B*1' 0%.%1,'-*.a ▪ Conguration les ▪ /V,+B<%& G. ,33-'-*.; ,& B,1' *A fB1*'1,2'*1I)'-<&g %V'1, .B+I+*3)<%& @%1% 3%=%<*B%3 '* 41-.0 -. =,<)% ,33%3 2,B,4-<-'-%& A*1] ▪ Re-running of aky tests with “protractor-ake” ▪ Y-<'%1-.0 -. '>% 3%=-2% <,4 '* 1%'1-%=% '>% 2*11%2' M%<%.-)+ D%4W1-=%1 2,B,I 4-<-'-%& ▪ G+,0% 2*+B,1-&*.& `&21%%.&>*'&X %<%+%.'&a 21%,'%3 @-'> `+*4-<%a @%4 *1 .,'-=% ,BB& `4,&%3 *. , A*17 *A fB-VI3-AAgaC M)BB*1' A*1 K)2)+4%1; Y-1%A*V; G.'%1.%' /VB<*1%1; H-21*&*A' /30% ,.3 M,A,1@,& -.'1*3)2%3 01,3),<<5 (& 5*) 2*)<3 &%% -. )*+,-. />( fB1*'1,2'*1I)'-<&g -& A)<<5 3*2)+%.'%3C /,2> +%'>*3 >,& -'& *@. ,)'*+,'-2,<<5 0%.%1,'%3 ,.3 @%<
EXTENDING OPEN SOURCE FRAMEWORKS FOR ADVANCED FUNCTIONAL TESTING
!"#$%& (M* N<29-00-9"8< 7%83&A$%& =8% 1/%89%-398%H$9"026
PROTRACTOR AND FLAKY TESTS 8
THE DIGITAL QUALITY HANDBOOK
-+B<%+%.'%3 '%&'&; *'>%1& 3-1%2'<5 1%<,'% '* 2>,.0%& *A '>% ',10%' %.=-1*.+%.' *1 -'& ,=,-<,4-<-'5; +*1% B1%2-&%<5; '* -'& <,27 *A ,=,-<,4-<-'5C Y*1 %V,+B<%; , ',10%' 3%=-2% +,5 +,% -.&',<<,'-*. *A , .,'-=% ,BB +,5 A,-<; *1 B1*4,4<5 , 41*@&%1 &%&&-*. 2*)<3 .*' 4% -.-'-,'%3 ,& 3%&-1%3C e%%B *. )&-.0 5*)1 -+,0-.,'-*. ,.3 5*) @-<< 0%' '* , <*.0 <-&' *A B*'%.'-,< 0<-'2>%& '>,' +,5 `,.3 @-<)&; -' -& >,13 '* '>-.7 *A +*4-<% ',10%' %.=-1*.+%.'& -. =%15 A1-%.3<5 '%1+&C D>,' -& %=%. @*1&%; *.% .%%3& '* 2*).' *. '>%+ '* 0%' '>% Q*4 3*.%C $1-275; -&.j' -'[ $>-& -& @>5 ?-27 $*+<-. 3%=%<*B%3 , ?EHI+*3)<% '>,' @*)<3 1%I1). B*'%.'-,<<5 aky Protractor tests before they would be announced as “failures”. Initially “protractor-ake” did not meet the requirements of Rabobank, because it *.<5 &)BB*1'%3 L,&+-.% ,.3 H*2>, '%&'&C $>%1%A*1%; K)2)+4%1LM B,1&%1 ,.3 K)2)+4%1LM 3*2)+%.','-*.d @%1% -.'1*3)2%3 .%V'; &* '>,' '>% ?EH +*3)<% 2*)<3 4% ,3*B'%3 ,.3 )&%3 45 6,4*4,.7 ,& @%<
protractor:subtask --rerun-ake --attemps=amount Apparently, this feature enhances efciency, saves debugging time, and even +*1% &*; -A 5*) 2*.&-3%1 '>% <,10% .)+4%1 *A 6,4*4,.7 '%,+& @*17-.0 *. '>-& B1*Q%2'C
FILTER ON THE DEVICE LAB TO RETRIEVE CORRECT CAPABILITIES (PERFECTO CLOUD)10 $>-& ?EH +*3)<% >,& '@* 2<%,1 0*,<&] ▪ (<@,5& 1%U)%&' 3%=-2%& @-'> , &',.3,13X 2*.'1*<<%3 &%' *A 2,B,4-<-'-%&C
EXTENDING OPEN SOURCE FRAMEWORKS FOR ADVANCED FUNCTIONAL TESTING
6,4*4,.7 @,& 3%=%<*B%3C $>)&; '>% +*3)<% 1%')1.& '>% 3%&-1%3 2,B,4-<-'-%& '* 4% )&%3 45 '>% '%&' 2*3%C D-'> fB1*'1,2'*1I)'-<&g *.% 2*)<3 &%<%2' ,<< -OM 3%=-2%& 45 ,BB%.3-.0 , &-.0<% 2*++,.3 <-.% *B'-*.; Q)&' <-7% '>-&C]
protractor:subtask –capabilityFilter=’[{“platform ! Name”:”iOS”}]’ What if selecting more than one specic devices would be necessary? No issues here, since the capability lter is able to accept any number of ltering criteria.
protractor:subtask –capabilityFilter=’[{“model”:”i ! Phone-6S”}, {“model”:”Galaxy S6”}]’ Running some of the commands above will produce a JSON-formatted le de I &21-4-.0 ,<< *A '>% 3%&-1%3 2,B,4-<-'-%& .%%3%3 45 6,4*4,.7 -. *13%1 '* &',1' , device in the Cloud. It is based on a predened template. One could refer to the %V'1,2' -. )*+,-. /@ '* 0%' '>% A)<< B-2')1%C $>-& @,5 +)<'-B<% -+B<%+%.','-*.& A*1 &',1'-.0 3%=-2%& @-<< 4% B1%=%.'%3 ,.3 '>%1% -& .* .%%3 A*1 ,<< *A '>% A%,')1% '%,+& '* 7%%B ,.3 +,-.',-. '>-& 7-.3 *A 7.*@<%30%C $>% ,4*=% ?EH +*3)<% -& '>% 2%.'1,< B<,2% A*1] ▪ H,-.',-.-.0 ,.3 %=*<=-.0 '>% 7.*@<%30% A*1 +,.,0-.0 ,<< *A '>% 3%=-2%& )&%3 ▪ /.&)1-.0 '>% &,+% 3%=-2% 2*.3-'-*.& A*1 %=%15 '%&'; -C%C , +*1% &',4<% ',10%' %.=-1*.+%.' ▪ iB3,'-.0 '>% =%1&-*. *A '>% '%&'%3 ,BB @-'>*)' .*'-A5-.0 %,2> '%,+ -. ,3=,.2%
THE DIGITAL QUALITY HANDBOOK
!"#$%& (O* +< JK-./0& 8= - L&P"3& D&./0-9& !"0&
IMAGE COMPARISON (SCREENSHOTS/ UI ELEMENT SCREENSHOTS) 6,4*4,.7 ,<&* .%%3%3 '>% ,4-<-'5 '* 2*+B,1% &21%%.&X iG %<%+%.'& @-'> %,2> *'>%1C 6%&%,12>-.0 '>% '*B-2 *. '>% G.'%1.%' -. 89:" '>%5 A*).3 '>% <-41,15 E-VIW-AAC $>% 2*1% *A E-VIW-AA :: 2*)<3 .*' 4% )&%3 A*1 '%&'-.0 '>% >541-3 ,BB *A 6,4*4,.7 @-'> 41*@&%1& 3-AA%1%.' A1*+ K>1*+%C P%.2%; '>%5 A*17%3 E-VIW-AA ,.3 ,33%3 K)2)+4%1; >541-3 ,BB ,.3 ,33-'-*.,< 41*@&%1 &)BB*1'C M21%%.&X iG %<%+%.'& 2*)<3 .*@ 4% 2*+B,1%3 3)1-.0 '>% f.*1+, Q)&' , &-.0<% <-.% *A 2*3%C
A6B2<-. < 13-..7C
expect(browser.imageComparison.checkScreen(‘exampleP ! age’)).toEqual(0);
EXTENDING OPEN SOURCE FRAMEWORKS FOR ADVANCED FUNCTIONAL TESTING
Y*1 %V,+B<%; *.% 2*)<3 2*+B,1% , 4,&%<-.% iG %<%+%.' -+,0% @-'> '>% ,2'),< iG %<%+%.' -+,0% ,& -' @*)<3 4% A,2%3 45 ,.5*.% %VB<*1-.0 '>-& =%1&-*. *A '>% ,BB +,.),<<5C G. '>% B,1'-2)<,1 %V,+B<% 3%B-2'%3 -. )*+,-. /F( '>% ,2'),< iG %<%+%.' &21%%.&>*' 3%=-,'%& A1*+ '>% +,.3,'*15 2*<*1 A*1 ,<%1'-.0 +%&&,0%&C $>-& -& 3%'%2'%3 ,.3 1%B*1'%3 45 '>% '**< ,& , &)4&',.'-,< 3-AA%1%.2%C ▪ G<1.E*7.C
▪ H3:,
▪ I*88.-.73.C
!"#$%& (Q* +< JK-./0& 8= L&9&39"<# L&P"-9"8<2 -#-"<29 G-2&0"<& R&S$"%&.&<92
(& , 2*.&%U)%.2%; -. 89:S '>% A*<<*@-.0 A1,+%@*17 A%,')1%& @%1% 2*.'1-4)'%3 '* '>% E-VIW-AA *B%. &*)12% B1*Q%2'C ▪ K)2)+4%1LM ▪ H)<'-B<% 41*@&%1 &%&&-*.& ▪ (BB-)+ ,& '>% 4,274*.% A*1 -+,0% 2*+B,1-&*. *. +*4-<% 3%=-2%& (' '>% %.3 *A 89:S D-+ ,..*).2%3 ,.3 B)4<-&>%3 >-& *@. *B%. &*)12% ?EH
+*3)<% fB1*'1,2'*1I-+,0%I2*+B,1-&*.g:8 @-'> %=%. +*1% A).2'-*.,<-'5 '>,' Rabobank and others could benet from.
THE DIGITAL QUALITY HANDBOOK
B1*2%&&; 2*.&',.' ,<-0.+%.' ,.3 3-&2-B<-.% ,+*.0&' ,<< *A '>% -.=*<=%3 '%,+&C Since each of them would contribute a specic component to the app while )'-<-T-.0 , 2*++*. A1,+%@*17 ,.3 -.A1,&'1)2')1%; -' -& -+B*1',.' A*1 %,2> '%,+ '* ',7% 2,1% *A -'& *@. ',&7& @-'>*)' .%0<%2'-.0 3%B%.3%.2-%& '>,' @*)<3 4% '>% A*).3,'-*. A*1 *'>%1 '%,+& '* B%1A*1+ '>%-1 .%,1 A)')1% ,2'-=-'-%&C ( B1*+-.%.' %V,+B<% A*1 &)2> , 3%B%.3%.25 @*)<3 4% '>% f2*.&',.'<5g ,.3 1,B-3<5 2>,.0-.0 P$Hh 2*3%C D-'>-. '>% '-+%A1,+% *A , @%%7 '>% P$Hh 2*3% for a date eld might change from three input elds (denoting day, month, and year) to three select options. Such a change would denitely break all of the tests relying on this specic date eld. G. *13%1 '* +-'-0,'% ,.3 +,.,0% '>-& 1-&7; 6,4*4,.7 ,01%%3 '>,' %,2> '%,+ @*)<3 21%,'% E,0%O4Q%2'& @-'> , 2*.&-&'%.' (EG '>,' *'>%1 '%,+& 2*)<3 ,<&* 1%)&% A*1 '%&'-.0 '>%-1 *@. A%,')1%&C (& <*.0 ,& '>% (EG @*)<3 .*' 2>,.0%; 3%I B%.3%.' '%&'& @*)<3 .*' 41%,7 @>%. '>% .%@ =%1&-*. *A '>% ,A*1%+%.'-*.%3 date eld would be introduced.
SUMMARY (' '>% %.3 *A '>% 3,5; 45 %V'%.3-.0 '>% E1*'1,2'*1 A1,+%@*17 D-+ +,.,0%3 '* *AA%1 , 1*4)&' A1,+%@*17 &,'-&A5-.0 '>% .%%3& *A :" A%,')1% '%,+& 2*.&-&'-.0 *A 4*'> 3%=%<*B%1& ,.3 '%&'%1&C G' @,& 3%&-0.%3 A1*+ 01*).3 T%1* '* &%,+I <%&&<5 -.'%01,'% @-'>-. '>% ',10%' %.=-1*.+%.' ,.3 GW/& )&%3 *. 3,-<5 4,&-& 45 '>% 3%=%<*B%1& ,' 6,4*4,.7C G' @,& ,<&* %,&-<5 2*..%2'%3 @-'> '>% L%.7-.& KG workow as well. OB%. &*)12%; 4%&' B1,2'-2%&; ,.3 -.3)&'15 &',.3,13& `&)2> ,& E,0%O4Q%2'&; K)I 2)+4%1; ,.3 , .)+4%1 *A *B%. &*)12% +*3)<%&a ,<<*@ '%&'-.0 '%,+& '* 3%=%<*B ,.3 3%<-=%1 '%&' ,)'*+,'-*. 2*3% ,.3 %.>,.2%+%.'& -. , A1-%.3<5 ,.3 %,&5; 5%' 2*.'1*<<%3; +,..%1 @-'>*)' ,.5 @*11-%& ,4*)' '>% ).3%1<5-.0 '%&' %.0-.%C