Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Codeception 2.1

Codeception 2.1

New features of Codeception Testing Framework

Michael Bodnarchuk

April 16, 2015
Tweet

More Decks by Michael Bodnarchuk

Other Decks in Programming

Transcript

  1. 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 ]
  2. _ 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
  3. 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 ! } }
  4. / / 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 ' ) ; }
  5. / / 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 " ) ; / / . . . }
  6. / / 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 ; } }
  7. 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
  8. CONFLICTS modules can define conflicts with each other For instance,

    WebDriver vs PHPBrowser vs Symfony2 this is done to avoid confusions in simultaneous usage
  9. 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
  10. 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 ' ) ;
  11. 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
  12. 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 ]
  13. 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 ' ) ;
  14. CODECEPTION 2.1 April 2015 backwards compatible (no major breaks) try

    it now in m a s t e r branch! http://codeception.com