Slide 1

Slide 1 text

CODECEPTION 2.1 WHAT'S NEW?

Slide 2

Slide 2 text

PSR-4 ALL SUPPORT CLASSES MOVED TO _ S U P P O R T c l a s s _ n a m e : A c c e p t a n c e T e s t e r m o d u l e s : e n a b l e d : [ P h p B r o w s e r , \ H e l p e r \ A c c e p t a n c e ]

Slide 3

Slide 3 text

_ s u p p o r t / ├ ─ ─ A c c e p t a n c e T e s t e r . p h p ├ ─ ─ F u n c t i o n a l T e s t e r . p h p | ─ ─ U n i t T e s t e r . p h p ├ ─ ─ _ g e n e r a t e d │ ├ ─ ─ A c c e p t a n c e T e s t e r A c t i o n s . p h p │ ├ ─ ─ F u n c t i o n a l T e s t e r A c t i o n s . p h p │ └ ─ ─ U n i t T e s t e r A c t i o n s . p h p ├ ─ ─ H e l p e r │ ├ ─ ─ A c c e p t a n c e . p h p │ ├ ─ ─ F u n c t i o n a l . p h p │ ├ ─ ─ U n i t . p h p ├ ─ ─ P a g e │ ├ ─ ─ A c c e p t a n c e │ │ ├ ─ ─ L o g i n . p h p │ │ ├ ─ ─ U s e r │ │ │ └ ─ ─ L o g i n . p h p │ │ └ ─ ─ U s e r . p h p │ └ ─ ─ U s e r │ └ ─ ─ L o g i n . p h p ├ ─ ─ S t e p │ └ ─ ─ A c c e p t a n c e │ ├ ─ ─ L o g i n . p h p │ └ ─ ─ U s e r │ └ ─ ─ L o g i n . p h p

Slide 4

Slide 4 text

EXTENDING TESTER < ? p h p c l a s s A c c e p t a n c e T e s t e r e x t e n d s \ C o d e c e p t i o n \ A c t o r { / / m e t h o d s t a k e n f r o m m o d u l e a r e h e r e : u s e _ g e n e r a t e d \ A c c e p t a n c e T e s t e r A c t i o n s ; / / b u t t h i s c l a s s w o n ' t b e r e g e n e r a t e d / / s o y o u c a n u s e i t t o e x t e n d w i t h o w n a c t i o n s p u b l i c f u n c t i o n l o g i n ( ) { / / i m p l e m e n t i t h e r e ! } }

Slide 5

Slide 5 text

DEPENDENCY INJECTION INJECT EVERYTHING INTO ANYTHING!

Slide 6

Slide 6 text

/ / i n j e c t p a g e o b j e c t s f u n c t i o n u p d a t e P a s s w o r d ( P a g e \ U s e r $ p a g e , A c c e p t a n c e T e s t e r $ I ) { $ t h i s - > p a g e - > o p e n P r o f i l e ( ) ; $ t h i s - > p a g e - > e d i t P r o f i l e ( ) ; $ I - > f i l l F i e l d ( $ t h i s - > p a g e - > o l d P a s s w o r d F i e l d , ' 1 2 3 4 5 6 ' ) ; $ I - > f i l l F i e l d ( $ t h i s - > p a g e - > n e w P a s s w o r d F i e l d , ' 6 5 4 3 2 1 ' ) ; $ I - > f i l l F i e l d ( $ t h i s - > p a g e - > p a s s w o r d F i e l d R e p e a t , ' 6 5 4 3 2 1 ' ) ; $ I - > c l i c k ( $ t h i s - > p a g e - > s a v e B t n ) ; $ I - > s e e ( ' P a s s w o r d w a s u p d a t e d ' ) ; }

Slide 7

Slide 7 text

/ / i n j e c t s t e p o b j e c t f u n c t i o n a d d C u s t o m e r ( S t e p \ A d m i n $ I ) { $ I - > a m L o g g e d A s A d m i n ( ) ; $ I - > a m O n C u s t o m e r s P a g e ( ) ; $ I - > c l i c k ( " C r e a t e " ) ; / / . . . }

Slide 8

Slide 8 text

/ / i n j e c t m o d u l e s i n t o h e l p e r s c l a s s A c c e p t a n c e H e l p e r { p r o t e c t e d $ w e b D r i v e r M o d u l e ; f u n c t i o n _ i n j e c t ( \ C o d e c e p i t o n \ M o d u l e \ W e b D r i v e r $ w d ) { $ t h i s - > w e b D r i v e r M o d u l e = $ w d ; } }

Slide 9

Slide 9 text

MODULE CONFIG SIMPLIFIED m o d u l e s : e n a b l e d : - W e b D r i v e r : u r l : h t t p : / / c o d e c e p t i o n . c o m b r o w s e r : f i r e f o x - \ H e l p e r \ A c c e p t a n c e m o d u l e s : e n a b l e d : - R E S T : u r l : h t t p : / / a p i . l o c a l h o s t / v 1 / d e p e n d s : P h p B r o w s e r - \ H e l p e r \ A p i

Slide 10

Slide 10 text

CONFLICTS modules can define conflicts with each other For instance, WebDriver vs PHPBrowser vs Symfony2 this is done to avoid confusions in simultaneous usage

Slide 11

Slide 11 text

DEPENDENCIES specify module dependencies explicitly (BC break) m o d u l e s : e n a b l e d : R E S T : d e p e n d s : P h p B r o w s e r m o d u l e s : e n a b l e d : - S y m f o n y 2 - D o c t r i n e 2 : d e p e n d s : S y m f o n y 2

Slide 12

Slide 12 text

CURRENT / / r e t r i e v e c u r r e n t e n v i r o n m e n t $ s c e n a r i o - > c u r r e n t ( ' e n v ' ) ; / / l i s t o f a l l e n a b l e d m o d u l e s $ s c e n a r i o - > c u r r e n t ( ' m o d u l e s ' ) ; / / t e s t n a m e $ s c e n a r i o - > c u r r e n t ( ' n a m e ' ) ;

Slide 13

Slide 13 text

ENVIRONMENT MATRIX . / c o d e c e p t r u n - - e n v d e v , p h a n t o m - - e n v d e v , c h r o m e - - e n v d e v , f i r e f o x t e s t s / _ e n v s | ─ ─ c h r o m e . y m l | ─ ─ p h a n t o m . y m l | ─ ─ f i r e f o x . y m l | ─ ─ d e v . y m l

Slide 14

Slide 14 text

MODULE PARTS module can be loaded partially into tester class use only specific actions of module m o d u l e s : e n a b l e d : [ L a r a v e l 4 . O R M , R E S T . J s o n ] m o d u l e s : e n a b l e d : [ R E S T . X m l ]

Slide 15

Slide 15 text

WEBDRIVER: SESSION SNAPSHOT p u b l i c f u n c t i o n l o g i n ( A c c e p t a n c e T e s e r $ I ) { / / i f s n a p s h o t e x i s t s - s k i p p i n g l o g i n i f ( $ I - > l o a d S e s s i o n S n a p s h o t ( ' l o g i n ' ) ) r e t u r n ; / / l o g g i n g i n $ I - > a m O n P a g e ( ' / l o g i n ' ) ; $ I - > f i l l F i e l d ( ' n a m e ' , ' j o n ' ) ; $ I - > f i l l F i e l d ( ' p a s s w o r d ' , ' 1 2 3 3 4 5 ' ) ; $ I - > c l i c k ( ' L o g i n ' ) ; / / s a v i n g s n a p s h o t $ I - > s a v e S e s s i o n S n a p s h o t ( ' l o g i n ' ) ;

Slide 16

Slide 16 text

CODECEPTION 2.1 April 2015 backwards compatible (no major breaks) try it now in m a s t e r branch! http://codeception.com