Calabash рдХреЗ рд╕рд╛рде Android рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреА рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╕реНрд╡реАрдХреГрддрд┐ рдкрд░реАрдХреНрд╖рдг



рдЫрд╡рд┐ рд╕реНрд░реЛрдд

рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдЖрдкрдХреЛ рдореЛрдмрд╛рдЗрд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдиреНрдп рдврд╛рдВрдЪреЗ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдХрд░рд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдЬрд┐рд╕рдХрд╛ рдирд╛рдо рд╣реИ рдХреИрд▓рд╛рдмрд╢, рдЬреЛ рдПрдВрдбреНрд░реЙрдЗрдб рдФрд░ рдЖрдИрдУрдПрд╕ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреА рд╕реНрд╡реАрдХреГрддрд┐ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рд╕рдорд╛рдзрд╛рди рд╣реИред рдпрд╣ рд▓реЗрдЦ рдЙрди рд╢реБрд░реБрдЖрддреА рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИ рдЬреЛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдпрд╛ Android рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред



рд╣реБрдХрд╝реНрдХрд╝реБрдо



Calabash Android рдФрд░ iOS рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреА рд╕реНрд╡реАрдХреГрддрд┐ рдкрд░реАрдХреНрд╖рдг рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдУрдкрди-рд╕реЛрд░реНрд╕ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдлреНрд░реЗрдорд╡рд░реНрдХ рд╣реИред рд╡рд┐рдХрд╛рд╕ рдФрд░ рд╕рдорд░реНрдерди Xamarin рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬрд╝рдорд╛рд░рд┐рди рд╡рд╛рдгрд┐рдЬреНрдпрд┐рдХ рдХреНрд▓рд╛рдЙрдб рдкрд░реАрдХреНрд╖рдг рдХреНрд╖рдорддрд╛рдУрдВ рдХреЛ рднреА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред



рдХреИрд▓рд╛рд╢ рдореЗрдВ рд╡реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реЛрддреЗ рд╣реИрдВ рдЬреЛ рдореВрд▓ рдФрд░ рд╕рдВрдХрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдмрдирд╛рддреЗ рд╣реИрдВред рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╣реИред рдРрд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ:



рдХреИрд▓рд╛рдмрд╢ рдХреА рддреБрд▓рдирд╛ рд╕реЗрд▓реЗрдирд┐рдпрдо рд╡реЗрдмрдбреНрд░рд╛рдЗрд╡рд░ рд╕реЗ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рд╕рдордЭрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдПрдХ рдХрдВрдкреНрдпреВрдЯрд░ рд╕реЗ рдПрдХ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рд╛рде рд╕рдВрдкрд░реНрдХ рдПрдХ рдЯрдЪ рд╕реНрдХреНрд░реАрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рджреЗрд╢реА рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреА рдмрд╛рддрдЪреАрдд рд╕реЗ рдХрд╛рдлреА рдЕрд▓рдЧ рд╣реИред



рдХреИрд▓рд╛рд╢ рдХрдХрдбрд╝реА рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдХрдХрдбрд╝реА рд╣рдореЗрдВ рдПрдХ рд╕рд░рд▓ "рдорд╛рдирд╡" рднрд╛рд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдЬреНрдЮрд╛рди рдХреЗ рдмрд┐рдирд╛ рдПрдХ рд╡реНрдпрд╛рдкрд╛рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ, рдкреНрд░рдмрдВрдзрдХ рдФрд░ рдкрд░реАрдХреНрд╖рдХ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ:



Feature: Rating a stand Scenario: Find and rate a stand from the list Given I am on the foodstand list Then I should see a "rating" button And I should not see "Dixie Burger & Gumbo Soup" When I touch the "rating" button Then I should see "Dixie Burger & Gumbo Soup" When I touch "Dixie Burger & Gumbo Soup" Then I should see details for "Dixie Burger & Gumbo Soup" When I touch the "rate_it" button Then I should see the rating panel When I touch "star5" And I touch "rate" Then "Dixie Burger & Gumbo Soup" should be rated 5 stars
      
      





рдЖрдк рдЦреАрд░реЗ рд╕реЗ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд▓реЗрдЦ рдХреЛ рдкрдврд╝рдХрд░: habrahabr.ru/post/62958



рдХреИрд▓рд╛рд╢ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЯреЗрд╕реНрдЯ рд▓рд╛рдн:



рдиреБрдХрд╕рд╛рди:



рд╕реНрдерд╛рдкрдирд╛



рдЖрдк рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рдФрд░ рд▓рд┐рдирдХреНрд╕ рдпрд╛ рдореИрдХрдУрдПрд╕ рджреЛрдиреЛрдВ рдкрд░ рдХреИрд▓рд╛рдмрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдореИрдВ 64-рдмрд┐рдЯ рд╡рд┐рдВрдбреЛрдЬ 8 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ (рдореИрдВрдиреЗ рд╡рд┐рдВрдбреЛрдЬ 7 64x рдкрд░ рднреА рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рд╣реИ)ред Calabash рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХреБрдЫ рдШрдЯрдХ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рд╣реЛрдВрдЧреЗ:

  1. JDK7 рдорд╛рдирдХ рд╕рдВрд╕реНрдХрд░рдг

    рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ JDK7 (рдпрд╛ 6) рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рд╣реИ, рддреЛ рдЙрд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдФрд░ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ: www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html ред JDK рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ JAVA_HOME рд╕рд┐рд╕реНрдЯрдо рд╡реИрд░рд┐рдПрдмрд▓ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛, рдЬреЛ JDK рдХреЗ рд╕реНрдерд╛рди рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдЧрд╛ред PATH рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдореЗрдВ рдЬрд╛рд╡рд╛ рдореЗрдВ рдкрде рдЬреЛрдбрд╝реЗрдВ ( рдпрджрд┐ рдЖрдкрдиреЗ JDK рд╕рдВрд╕реНрдерд╛рдкрди рдкрде рдирд╣реАрдВ рдмрджрд▓рд╛ рд╣реИ, рддреЛ рдЬрд╛рд╡рд╛ рдпрд╣рд╛рдБ рд╣реИ: C: \ Program Files \ Java \ jre7 \ bin )ред

  2. Android рдПрд╕рдбреАрдХреЗ

    рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рдХрд┐рд╕реА рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╕реНрдерд╛рди рдкрд░ рдЕрдирдЬрд╝рд┐рдк рдХрд░реЗрдВ Android SDK (рдпрд╛ ADT рдмрдВрдбрд▓): developer.android.com/sdk/index.html?hl=sk ред рдЙрд╕рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдПрдВрдбреНрд░реЙрдЗрдб рдПрд╕рдбреАрдХреЗ ( рдореЗрд░реЗ рд▓рд┐рдП: C: \ adt-bundle-windows-x86_64-20131030 \ sdk ) рдХреЗ рд╕реНрдерд╛рди рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реБрдП ANDROID_HOME рд╡реИрд░рд┐рдПрдмрд▓ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ PATH рдореЗрдВ рдПрдбрдм рд▓реЛрдХреЗрд╢рди рднреА рдЬреЛрдбрд╝реЗрдВ ( рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, C: \ adt-bundle-windows-x86_64 -20131030 \ sdk \ platform-tools )

  3. рдЪреАрдВрдЯреА

    рдбрд╛рдЙрдирд▓реЛрдб рдФрд░ рдЕрдирдЬрд╝рд┐рдк рдЪреАрдВрдЯреА (http://ant.apache.org/bindownload.cgi), рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╡реИрд░рд┐рдПрдмрд▓ ANT_HOME рдмрдирд╛рдПрдВ , рдЬрд┐рд╕рдореЗрдВ рдЖрдк рдЪреАрдВрдЯреА рдХреЛ рд░рд╛рд╕реНрддрд╛ рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдФрд░, рдкрд╣рд▓реЗ рдХреА рддрд░рд╣, ant.exe рдХрд╛ рд╕реНрдерд╛рди рдЬреЛрдбрд╝рдХрд░ рдкреИрда рдЪрд░ рдирд╛рдо рджреЗрдВ,% ANT_HOME% \ bin

  4. рд░реВрдмреА 1.9.3ред (2.0 рдирд╣реАрдВ !!!)

    Rubyinstaller.org/downloads рд╕реЗ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдХреЗ рджреМрд░рд╛рди, рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдХреЗ рджреМрд░рд╛рди рдмреЙрдХреНрд╕ рдХреЛ "рдЕрдкрдиреЗ рдкреЗрдЯреАрдПрдо рдореЗрдВ рд░реВрдмреА рдПрдХреНрдЬрд╝рд┐рдмрд┐рдЯ рдЬреЛрдбрд╝реЗрдВ" рдЪреЗрдХ рдХрд░реЗрдВред



  5. рд░реВрдмреА рд╡рд┐рдХрд╛рд╕ рдХрд┐рдЯ

    рд░реВрдмреА рд░рддреНрди (рдкреИрдХреЗрдЬ рдореИрдиреЗрдЬрд░) рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд░реВрдмреА рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдХрд┐рдЯ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЖрдкрдХреЛ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рд╕реНрдерд╛рдкрдирд╛ рдлрд╝рд╛рдЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: rubyinstaller.org/downloads ред рдСрди-рд╕реНрдХреНрд░реАрди рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдХреЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред



рдЙрд╕рдХреЗ рдмрд╛рдж, рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдЖрдкрдиреЗ рдЪрд░ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдЬреЛрдбрд╝рд╛ рд╣реИ:



рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИ, рд░реВрдмреА рд░рддреНрдиреЛрдВ рдХреЗ рдкреИрдХреЗрдЬ рдореИрдиреЗрдЬрд░ (рд╡рд┐рдВрдбреЛрдЬрд╝ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЪрд▓рд╛рдПрдВ) рд╕реЗ рдХреИрд▓рд╛рдмрд╢-рдПрдВрдбреНрд░реЙрдЗрдб рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ:

> gem install calabash-android





рд╕рдм рдХреБрдЫ рд╕реНрдерд╛рдкрд┐рдд рд╣реИ, рдЕрдм рдЖрдк рдкрд░реАрдХреНрд╖рдг рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред



рдЯреЗрд╕реНрдЯ рдХреЗрд╕ рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ



рд╕рдореАрдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЬрдЯрд┐рд▓ рдкрд░рд┐рджреГрд╢реНрдп рдирд╣реАрдВ рдмрдирд╛рдПрдВрдЧреЗ: рд╣рдо рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдиреВ рдХреЗ рдбрдЪ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдХреА рдЬрд╛рдВрдЪ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред рд╣рдо рдЬрд╛рдиреЗ-рдорд╛рдиреЗ рдХреНрд▓реАрди рдорд╛рд╕реНрдЯрд░ (рдлреНрд░реА) рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рдВрд╕реНрдХрд░рдг 3.8.1 рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВрдЧреЗ, рдЬрд┐рд╕рдХрд╛ APK рд╡реЗрдмрд╕рд╛рдЗрдЯ: www.androiddrawer.com рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИред



рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рд▓рд╛рдЧреВ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ:

  1. рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдиреВ рдореЗрдВ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рдЙрдкрд▓рдмреНрдзрддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛
  2. рдЖрд╡реЗрджрди рдХреА рднрд╛рд╖рд╛ рдХреЛ рдбрдЪ рдореЗрдВ рдмрджрд▓рдирд╛
  3. рдореЗрдиреВ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд╕рд╣реА рдЕрдиреБрд╡рд╛рдж рдХреА рдЬрд╛рдБрдЪ рдХрд░рдирд╛




рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд┐рд╢реНрд▓реЗрд╖рдг



рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдХрдВрд╕реЛрд▓ рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рдХреИрд▓рд╛рд╢ рд╡рд╛рддрд╛рд╡рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рд░реВрдмреА рдПрдкреАрдЖрдИ ( github.com/calabash/calabash-android/blob/master/documentation/ruby_api.md ) рд╣рдореЗрдВ рдЙрди рд╡рд╕реНрддреБрдУрдВ рдФрд░ рдЙрдирдХреЗ рдЧреБрдгреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬреЛ рд╕реНрдХреНрд░реАрди рдкрд░ рдореМрдЬреВрдж рд╣реИрдВред рдХреИрд▓рд╛рд╢ рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рд╡рд╛рддрд╛рд╡рд░рдг рдХреА рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЖрд╡рд╢реНрдпрдХ рдХрдорд╛рдВрдб рд╣реИрдВ: рдЖрд╡рд╢реНрдпрдХ рд╡рд╕реНрддреБрдУрдВ рдФрд░ рдЙрдирдХреЗ рдЧреБрдгреЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд╡реЗрд░реА , рдЯреИрдк рдХрд░реЗрдВ - рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб, рд╕рд╛рде рд╣реА рдкрд░рдлреЙрд░реНрдореЗрдВрд╕ рдХрдорд╛рдВрдб - рдХреБрдЫ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП (рдмреИрдХ рдмрдЯрди, рдореЗрдиреВ, рд╕реНрдХреНрд░реЙрд▓ рдФрд░ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ)ред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдпреВрдЖрдИ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдПрдХ рдЯреЗрд╕реНрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдмрд╣реБрдд рд╕рд░рд▓ рдХрд░реЗрдЧрд╛ред



рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЪрд╛рд╣рд┐рдП:

  1. рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛рдПрдВ рдЬрд╣рд╛рдВ рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрдЧреА:

     > mkdir calabash_habr && cd calabash_habr
          
          





  2. рдХрдХрдбрд╝реА рдлрд╝рд╛рдЗрд▓ рд╕рдВрд░рдЪрдирд╛ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВ, рдЬрд┐рд╕рдореЗрдВ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рд╡рд┐рд╡рд░рдг, рдЪрд░рдгреЛрдВ рдХрд╛ рд╡рд░реНрдгрди (рдХрджрдо рдкрд░рд┐рднрд╛рд╖рд╛), рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдПрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:

     > calabash-android gen
          
          







  3. рдПрдкреАрдХреЗ рдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдХреЗ рдореВрд▓ рдореЗрдВ рд░рдЦреЗрдВ

  4. рдЙрд╕рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдЖрд╡реЗрджрди рдкрд░ рдлрд┐рд░ рд╕реЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

     > calabash-android resign "Clean Master_3.8.1.apk"
          
          





    рдпрджрд┐ рдЖрдк рдкреБрдирдГ рд╕рд╛рдЗрди рдЗрди рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рдереЗ, рддреЛ рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рдХрдорд╛рдВрдб рдЪрд▓рд╛рдирд╛ рд╣реЛрдЧрд╛:

    keytool -genkey -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android -keyalg RSA -keysize 2048 -validity 10000 -dname "CN=Android Debug,O=Android,C=US"





  5. рдХрдиреЗрдХреНрдЯ рдбрд┐рд╡рд╛рдЗрд╕

  6. рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ:

     > adb install "Clean Master_3.8.1.apk"
          
          







рдЕрдм рд╣рдо рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

  1. рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рдХрдВрд╕реЛрд▓ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреИрд▓рд╛рд╢-рдХрдВрд╕реЛрд▓ рд╢реБрд░реВ рдХрд░рдирд╛

     > calabash-android console "Clean Master_3.8.1.apk"
          
          





  2. рд╣рдо рдкрд░реАрдХреНрд╖рдг рд╕рд░реНрд╡рд░ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ:

     irb(main):001:0> start_test_server_in_background
          
          





    рдпрджрд┐ рдЖрдк рдкрд░реАрдХреНрд╖рдг рд╕рд░реНрд╡рд░ рд╢реБрд░реВ рдирд╣реАрдВ рдХрд░ рд╕рдХреЗ, рддреЛ рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдВ:

     irb(main):001:0> reinstall_apps
          
          





  3. "рдореЗрдиреВ" рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ:

     irb(main):007:0> performAction('press_menu')
          
          





    рдФрд░ рд╣рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ:

     { "bonusInformation" => [], "message" => "", "success" => true }
          
          





    рдореЗрдиреВ рдЦреБрд▓ рдЧрдпрд╛ рд╣реИред

  4. рд╣рдореЗрдВ "рд╕реЗрдЯрд┐рдВрдЧ" рдкрд░ рдЬрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╣рдореЗрдВ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдЯреЗрдХреНрд╕реНрдЯ "рд╕реЗрдЯрд┐рдВрдЧреНрд╕" рд╣реИ:

     irb(main):008:0> query("* text:'Settings'")
          
          





    рдирддреАрдЬрддрди, рд╣рдореЗрдВ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ "рд╕реЗрдЯрд┐рдВрдЧ" рдкрд╛рда рдХреЗ рд╕рд╛рде рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдЖрдИрдбреА "рдореЗрдиреВрд╕реЗрдЯрд┐рдВрдЧ" рд╣реИ:

     [ [0] { "id" => "menuSettings", "enabled" => true, "contentDescription" => nil, "class" => "android.widget.Button", "text" => "Settings", "rect" => { "center_y" => 67.0, "center_x" => 720.0, "height" => 40, "y" => 47, "width" => 160, "x" => 640 }, "description" => "android.widget.Button@4280e6f8" } ]
          
          





  5. Id "menuSettings" рд╡рд╛рд▓реЗ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ:

     irb(main):011:0> tap('menuSettings')
          
          





    рдЙрд╕рдХреЗ рдмрд╛рдж, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдЦреБрд▓ рдЧрдИрдВ






  6. рдпрд╣ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рдХрдВрд╕реЛрд▓ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВ:

     irb(main):003:0> exit
          
          







рдЕрдм рдЯреЗрд╕реНрдЯ рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдХреИрд▓рд╛рд╢ рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЪрд░рдг рдмрдирд╛рдП рдЧрдП рд╣реИрдВ, рдЬреЛ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╕рдордп рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╣реИрдВред рд╕рд╛рдЗрдЯ рдкрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдореМрдЬреВрдж рдХрд╛рд░реНрдп рджреЗрдЦреЗрдВ: github.com/calabash/calabash-android/blob/master/ruby-gem/lib/calabash-android/canned_steps.dd , рдФрд░ рдпрджрд┐ рдкрд░реНрдпрд╛рдкреНрдд рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреНрд░рд┐рдпрд╛рдПрдБ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рд╡рд╣рд╛рдБ рд╣реИ рд╕рд╛рдЗрдЯ рдкрд░ рд╕реБрдВрджрд░ рд░реВрдмреА рдПрдкреАрдЖрдИ рдХрд╛ рд╡рд┐рд╡рд░рдг рдЙрдкрд▓рдмреНрдз рд╣реИ: github.com/calabash/calabash-android/blob/master/documentation/ruby_api.md ред



рдлрд╝рд╛рдЗрд▓ my_first.feature рдЦреЛрд▓реЗрдВ, рдЬреЛ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИ рдФрд░ рд╣рдорд╛рд░реА рдкрд░реАрдХреНрд╖рдг рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦреЗрдВред рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдо рдЙрди рдЪрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рдЬреЛ рдХреИрд▓рд╛рдмрд╢ рдСрдлрд╝рд░ ( github.com/calabash/calabash-android/blob/master/ruby-gem/lib/calabash-android/canned_neps.s.dds.md рдХрджрдореЛрдВ рдХрд╛ рд╡рд░реНрдгрди)



рд╣рдореЗрдВ рдирд┐рдореНрди рд╕рд╛рджреА рд▓рд┐рдкрд┐ рдорд┐рд▓рддреА рд╣реИ
 Feature: Menu localization #   Scenario: As a user I can open a menu and verify options #    "" When I press the menu key # ,   "Settings", "Update"  .. Then I see "Settings" Then I see "Update" Then I see "Like us" Then I see "Rate us" Then I see "Feedback" Then I see "FAQ" Then I see "Fast Clean" Then I see "About" Scenario: As a user I can change language app to Nedelrands When I press the menu key When I press "Settings" Then I press "Language" When I press "Nederlands" Then I see "Taal" When I go back When I press the menu key Then I see "Instellingen" Then I see "Moderniseren" Then I see "Net als wij" Then I see "Beoordeel ons" Then I see "Terugcontact" Then I see "FAQ" Then I see "Snel schoonmaken" Then I see "Over ons"
      
      







рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рдм рдХреБрдЫ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИред рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдПрдБ:

 > calabash-android run "Clean Master_3.8.1.apk"
      
      





рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдореЗрдВ рдпрд╣ рдорд┐рд▓рддрд╛ рд╣реИ:






рджреЛ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдореЗрдВ рд╕реЗ, рдПрдХ рдЕрд╕рдлрд▓ рд╣реЛ рдЧрдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рдХрджрдо рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рд╡рд┐рдлрд▓ рд░рд╣рд╛ред рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ, рдХреИрд▓рд╛рдмрд╢ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ_ x.png рдирд╛рдордХ рдПрдХ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдмрдирд╛рддрд╛ рд╣реИред

рджрд░рдЕрд╕рд▓, рд╢рдмреНрдж "рдЕрджреНрдпрддрди"
рдбрдЪ рдореЗрдВ рдЕрдиреБрд╡рд╛рджрд┐рдд рдирд╣реАрдВ








рдирд┐рд╖реНрдХрд░реНрд╖



рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдЙрдЪреНрдЪ-рдЧреБрдгрд╡рддреНрддрд╛ рд╕реНрд╡реАрдХреГрддрд┐ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдХреИрд▓рд╛рдмрд╢ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред рдЖрдк рдкрд░реАрдХреНрд╖рдг рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдмрд╣реБрдд рдкреНрд░рдпрд╛рд╕ рдХреЗ рдмрд┐рдирд╛ рдПрдВрдбреНрд░реЙрдЗрдб рдФрд░ рдЖрдИрдУрдПрд╕ рджреЛрдиреЛрдВ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░реЗрдВрдЧреЗред рдлреНрд░реЗрдорд╡рд░реНрдХ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдЙрдкрдпреЛрдЧ рдореЗрдВ рдЖрд╕рд╛рди рдФрд░ рдПрдХреАрдХреГрдд рд╣реИред рд╕рдордп рдХреЗ рд╕рд╛рде, рдореИрдВ рдХреИрд▓рд╛рд╢ рд░реВрдмреА рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдЫреЛрдЯреА рдкреЛрд╕реНрдЯ рд▓рд┐рдЦрдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВред рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА github.com/calabash/calabash-android рдкрд░ рджреЗрдЦреА рдЬрд╛ рд╕рдХрддреА рд╣реИред



рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рдЖрдк GitHub рдХреЗ рд╕рд╛рде рдПрдХ рддреИрдпрд╛рд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдХреНрд▓реЛрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: github.com/amazpyel/calabash_habr



All Articles