рд╡рд┐рдВрдбреЛрдЬрд╝ 10 рдкрд░ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреИрд╕реЗ рдмрдврд╝рд╛рдПрдВ (рдХрдХрдбрд╝реА + рдХрд╛рдкреАрдмрд╛рд░рд╛ + рд╕реЗрд▓реЗрдирд┐рдпрдо-рд╡реЗрдмрдбреНрд░рд╛рдЗрд╡рд░)

рд▓реЗрдЦ рд╡рд┐рдВрдбреЛрдЬ 10 рдореЗрдВ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рдСрдЯреЛрдЯреЗрд╕реНрдЯрд┐рдВрдЧ рдФрд░ рддреИрдирд╛рддреА рдХреЗ рд╕рд╛рде рдЦреБрдж рдХреЛ рдкрд░рд┐рдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрднрд┐рдкреНрд░реЗрдд рд╣реИ рдЬреЛ рдХрдХрдбрд╝реА + рдХреИрдкреАрдмрд╛рд░рд╛ + рд╕реЗрд▓реЗрдирд┐рдпрдо-рд╡реЗрдмрдбреНрд░рд╛рдЗрд╡рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рдмрд╣реБрдд рдЬрд╛рдирддреЗ рд╣реИрдВред рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рд╡рд┐рдЪрд╛рд░ рд╡рд┐рдВрдбреЛрдЬ 10 рдФрд░ рд▓рд┐рдирдХреНрд╕ рдкрд░ рддреИрдирд╛рддреА рдХреЗ рдорд╛рд╣реМрд▓ рдореЗрдВ рдЕрдВрддрд░ рдХреЗ рдХрд╛рд░рдг рдЖрдпрд╛ред


Cucumber + Capybara + Selenium-webdriver gem (рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╢рдмреНрдж рдЬреЛ рдпреВрдЖрдИ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдЪрд▓рд╛рдиреЗ рдФрд░ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВред

рдХрдХрдбрд╝реА


ucumber рдПрдХ рд░рддреНрди рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдорд╛рдирд╡ рднрд╛рд╖рд╛ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЧреЗрд░рдХрд┐рди рдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдЬреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрд░рдЪрдирд╛ рдФрд░ рдирд┐рдпрдореЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред рд╡рд┐рд╡рд░рдг рдпрд╣рд╛рдБ рдкрдврд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ


Capybara


Capybara рдПрдХ рд░рддреНрди рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП / рдХреНрд▓рд┐рдХ / рдЦреЛрдЬ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╛рдиреА рдпрд╣ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдХрдХрдбрд╝реА рдЪрд░рдгреЛрдВ рдФрд░ рд╡реЗрдмрдбреНрд░рд╛рдЗрд╡рд░ (рддрдерд╛рдХрдерд┐рдд рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрд╛ рдЙрджрд╛рд╣рд░рдг) рдХреЗ рдмреАрдЪ рдХреА рдХрдбрд╝реА рд╣реИред рдпрд╣рд╛рдБ рдЖрдк рдЗрд╕ рд░рддреНрди рдХреА рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред

рд╕реЗрд▓реЗрдирд┐рдпрдо-webdriver


рд╕реЗрд▓реЗрдирд┐рдпрдо-рд╡реЗрдмрдбреНрд░рд╛рдЗрд╡рд░ рдПрдХ рд╡реЗрдм рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдХрд░рдг рд╣реИред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдпрд╣ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИред

рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдХреНрд░рд┐рдпрд╛


рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рд╡рд┐рд╡рд░рдг
рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рд╣рдо рд░реВрдмреАрдорд╛рдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдЖрдк 30 рджрд┐рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░реАрдХреНрд╖рдг рд╕рдВрд╕реНрдХрд░рдг рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдФрд░ рдХреНрд░реЛрдо рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВред

Git (рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓реА рдпрд╛ рд╕рдорд╛рди VCS, рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рд╛рдЗрдЯ ) рдбрд╛рдЙрдирд▓реЛрдб рдФрд░ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВред рд▓реЗрдХрд┐рди Git рдХреА рдЬрд░реВрд░рдд рддрдм рдкрдбрд╝рддреА рд╣реИ рдЬрдм рдЖрдкрдХреЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рдХреЛрдИ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реЛ рдпрд╛ рдЖрдк рдЕрдкрдирд╛ рдХреЛрдб рдХрд┐рд╕реА Git рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд╕реНрдЯреЛрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реЛрдВред

рддреЛ рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ


рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд░реВрдмреАрдорд╛рдЗрди рд╕реНрдерд╛рдкрд┐рдд рд╣реИред

  1. рдЖрдкрдХреЛ рдЦреБрдж рд░реВрдмреА рднрд╛рд╖рд╛ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдВ рдЬрд╛рдПрдВ рдФрд░ RubyInstaller рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред рдореИрдВрдиреЗ DevKit рдкреИрдХреЗрдЬ рдХреЗ рд╕рд╛рде рдирд╡реАрдирддрдо рд░рд┐рд▓реАрдЬрд╝ (RubyInstaller 2.5.1-2) рдХреЛ рдЪреБрдирд╛ред рдЗрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкреИрдХреЗрдЬ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, рдЖрдк рдХрдВрд╕реЛрд▓ рд╕реЗ рд▓рд┐рдирдХреНрд╕ рдореЗрдВ, рд╕рд╛рде рд╣реА рд╕рд╛рде рд▓рдЪреАрд▓реЗ рдврдВрдЧ рд╕реЗ рд░рддреНрдиреЛрдВ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
  2. RubyInstaller рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рд╣реИ рдФрд░ рд╣рдо рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкрд░ рдЖрдЧреЗ рдмрдврд╝ рд░рд╣реЗ рд╣реИрдВред
    рдпрджрд┐ рд╣рдо рдПрдХ рдирдИ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд░реВрдмреАрдорд╛рдЗрди рдЦреЛрд▓реЗрдВ рдФрд░ рдПрдХ рдЦрд╛рд▓реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдирд╛рдПрдВ, рдЬреЛ рд╕реНрдерд╛рдкрд┐рдд рд░реВрдмреА рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред

  3. рдЕрдЧрд▓рд╛, рд╣рдореЗрдВ рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдлрд╝реЛрд▓реНрдбрд░реНрд╕ рдФрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдЗрд╕ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ


    рдпрд╣рд╛рдБ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
  4. рдЬреЗрдордлрд╛рдЗрд▓ - рдЗрд╕рдореЗрдВ рд░рддреНрдиреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реЛрддреА рд╣реИ рдЬреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ

    UI рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдмреБрдирд┐рдпрд╛рджреА рд░рддреНрдиреЛрдВ рдХреЗ рд╕рд╛рде рд╣рдорд╛рд░реЗ рдордгрд┐рдлрд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА рдпрд╣рд╛рдВ рджреА рдЧрдИ рд╣реИ
    source 'https://rubygems.org' gem 'cucumber' gem 'capybara' gem 'selenium-webdriver' gem 'chromedriver-helper' 


    рдЗрди 4 рд░рддреНрдиреЛрдВ рдХреЛ Gemfile рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
    рдордгрд┐ 'рдХреНрд░реЛрдореЗрдбреНрд░рд┐рд╡рд░-рд╣реЗрд▓реНрдкрд░' - рдХреНрд░реЛрдо рдЪрд╛рд▓рдХ рдЬреЛ рдХреНрд░реЛрдо рдкрд░ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ
    рдЗрд╕ рд░рддреНрди рдХреЗ рд╕рд╛рде рдЖрдкрдХреЛ рд╣рдорд╛рд░реЗ рдЪрдпрдирд┐рдд рд░рддреНрдиреЛрдВ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд░реВрдмрд╛рдЗрди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕реЗ рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рд╣реИ: рдЯреВрд▓реНрд╕ -> рдмрдВрдбрд▓рд░ -> рдЗрдВрд╕реНрдЯреЙрд▓ рдореЗрдиреВ ред рдмреБрдВрдбрд▓рд░ рднреА рдПрдХ рд░рддреНрди рд╣реИ, рд▓реЗрдХрд┐рди рд░рддреНрдиреЛрдВ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЖрдк рдЗрд╕реЗ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реЗ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдиреВ рдореЗрдВ рдХрдорд╛рдВрдб рдХрдорд╛рдВрдб рдкреНрд░реЙрдореНрдкреНрдЯ рдХреЗ рдирд╛рдо рд╕реЗ рд╕реНрдерд┐рдд рд╣реИ ...
    рд╡реИрд╕реЗ, рдЗрд╕ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдк рд░реВрдмреАрдорд╛рдЗрди рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░рдХреЗ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред
  5. Env.rb рдлрд╝рд╛рдЗрд▓ UI рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЖрд░рдмреА рдлрд╝рд╛рдЗрд▓ рд╣реИред рд╡реИрд░рд┐рдПрдмрд▓ рдФрд░ рдЯреЗрд╕реНрдЯ рдлрд╛рдЗрд▓ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рддреЗ рд╕рдордп, рдпрд╣ env.rb рд╣реЛрдЧрд╛ рдЬреЛ рдХрд┐ рдкрд╣рд▓реЗ рд╣реЛрдЧрд╛ред рдпрд╣ рдЙрд╕ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрд╛ рдкрдВрдЬреАрдХрд░рдг рд╣реИ рдЬрд┐рд╕ рдкрд░ рдкрд░реАрдХреНрд╖рдг рдЪрд▓реЗрдВрдЧреЗред Env.rb рдХрд╛ рдПрдХ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЙрджрд╛рд╣рд░рдг рдЬрд╣рд╛рдВ рдХреНрд░реЛрдо, рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдкрдВрдЬреАрдХреГрдд рд╣реИ, рдпрд╛ рдпрд╣ рд╕рдордЭрдиреЗ рджреЗрдВ рдХрд┐ рд╣рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
    рдЬрдм рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ рддреЛ рдорд╛рдорд▓реЗ - рд╣рдо рдмрд╛рдХреА рдЕрдиреБрд░реЛрдзреЛрдВ, рдПрдХреАрдХрд░рдг рдкрд░реАрдХреНрд╖рдг рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдХрдХрдбрд╝реА рдкрд░реАрдХреНрд╖рдг рдЗрд╕рдХреЗ рд▓рд┐рдП рдмрд┐рд▓реНрдХреБрд▓ рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИрдВред

    рд▓реЗрдЦрди env.rb
     require 'capybara/cucumber' require 'selenium-webdriver' Capybara.register_driver :driver do |app| case ENV['DRIVER'] when 'chrome' Capybara::Selenium::Driver.new(app, :browser => :chrome) when 'without_browser' Capybara.default_driver = :mechanize else client = Selenium::WebDriver::Remote::Http::Default.new Capybara::Selenium::Driver.new(app, :browser => :firefox, port: 10000 + Random.rand(1000), http_client: client) end end Capybara.default_driver = :driver Capybara.default_selector = :xpath 


    рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣рд╛рдБ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдХреЛ рд╕рдВрд╕реНрдХрд░рдгрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдореБрджреНрджрд╛ рд╣реИред
    рдпрджрд┐ рдЖрдкрдиреЗ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рд╕рдВрд╕реНрдХрд░рдг 46 рдпрд╛ рдЙрд╕рд╕реЗ рдХрдо рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдордгрд┐ 'рдХреЗрдкреНрдпрдмрд╛рд░рд╛' рд╕рдВрд╕реНрдХрд░рдг '2.53.4' рдпрд╛ рдЙрд╕рд╕реЗ рдХрдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

    рдпрджрд┐ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рд╕рдВрд╕реНрдХрд░рдг 46 рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ, рддреЛ рдпрд╣ "рдЬреЗрдХрдХреЛрдбреНрд░рд╛рдЗрд╡рд░" рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдЕрдиреНрдп рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП, рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЬреЗрдХреЙрдбреНрд░рд╛рдЗрд╡рд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ ред

    рднреВрдХрд░реЛрдбрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдХрд╛рд░рдгреЛрдВ рдореЗрдВ рдПрдХ рднреНрд░рдордг
    рд╕рдВрд╕реНрдХрд░рдг 47 рд╕реЗ рдкрд╣рд▓реЗ, рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдСрдЯреЛрдореЗрд╢рди рдбреНрд░рд╛рдЗрд╡рд░ рд╕рд┐рд░реНрдл рдПрдХ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдерд╛ рдЬрд┐рд╕реЗ рд╣рд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд╕рд╛рде рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд▓реЗрдХрд┐рди рдиреАрддрд┐рдЧрдд рдмрджрд▓рд╛рд╡ рдХреЗ рдХрд╛рд░рдг рдЗрд╕ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЕрдм рд╕рднреА рдПрдХреНрд╕рдЯреЗрдВрд╢рдиреЛрдВ рдкрд░ рдореЛрдЬрд╝рд┐рд▓рд╛ рджреНрд╡рд╛рд░рд╛ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд┐рдП рдЬрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

    Marionette рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдХреЗ рд╕рд╛рде рдЬрд╣рд╛рдЬ рдЪрд▓рд╛рдиреЗ рд╡рд╛рд▓рд╛ рдирдпрд╛ рдбреНрд░рд╛рдЗрд╡рд░ рд╣реИред рдЗрд╕ рдбреНрд░рд╛рдЗрд╡рд░ рдХрд╛ рдЕрдкрдирд╛ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╣реИ, рдЬреЛ рд╕реЗрд▓реЗрдирд┐рдпрдо / рд╡реЗрдмрдбреНрд░рд╛рдЗрд╡рд░ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рд╕рд╛рде рдЕрд╕рдВрдЧрдд рд╣реИред

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

    рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рд░реАрдХрд┐рдпреЛрдВ , "рдЬрд┐рдпреЛрдХреЛрдбреНрд░рд╛рдЗрд╡рд░" рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╕рд┐рд╕реНрдЯрдо рдкрде рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рддрд╛рдХрд┐ рд╣рдорд╛рд░реЗ "рдЬреЗрдХреЙрдбреНрд░рд┐рд╡рд░" рдХреЛ env.rb рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╕рдордп рдкрд╛рдпрд╛ рдЬрд╛рдПред

    рд╕рд┐рд╕реНрдЯрдо рдкрде


  6. рдЗрд╕рдХреЗ рдмрд╛рдж, рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдиреЗ рдФрд░ рдХреНрд░реЛрдо, рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдФрд░ рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкрд░ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд╣рддрд╛ рд╣реИ :)ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо mail.ru рдореЗрд▓ рджрд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдХрджрдо рд▓рд┐рдЦреЗрдВрдЧреЗ

    рдЪрд░рдгреЛрдВ рдХрд╛ рд╡рд░реНрдгрди
     # encoding: UTF-8 # language: ru Given(/^   "(.*?)"$/) do |page| visit page end Given(/^  "(.*?)"   c id "(.*?)"$/) do |text, field_id| find("//input[@id='#{field_id}']").set(text) end Given(/^  "(.*?)"     id "(.*?)"$/) do |text, select_id| find("//select[@id='#{select_id}']/option[text()='#{text}']").click end Given(/^    "(.*?)"$/) do |text| find("//input[@value='#{text}']").click end Given(/^ (\d+) (?:|)$/) do |sec| sleep sec.to_i end 


  7. рд╕рд╛рде рд╣реА рдЦреАрд░реЗ рдХрд╛ рдЯреЗрд╕реНрдЯ рднреА

    test.feature
     # encoding: UTF-8 # language: ru :   :       "https://mail.ru/"    "dorian.grey.2019"   c id "mailbox:login"    "********"   c id "mailbox:password"    "@inbox.ru"     id "mailbox:domain"      ""   5  


  8. рдпрд╣ рдХреЗрд╡рд▓ рд╣рдорд╛рд░реЗ рд╕рднреА рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдФрд░ рдпреВрдЖрдИ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд╕рдлрд▓ рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рдЖрдирдВрдж рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд╣реБрдЖ рд╣реИ (рдЙрджрд╛рд╣рд░рдг 1 рдкрд░реАрдХреНрд╖рдг рдореЗрдВ) :)ред рдЕрдВрддрд┐рдо рд╕реЗрдЯрд┐рдВрдЧ рдмрд╛рдИрдВ рдУрд░ рдкрд░реАрдХреНрд╖рдг рд░рди рд╕реЗрдЯрдЕрдк рд╣реИред RubyMine рдореЗрдиреВ рдкрд░ рдЬрд╛рдПрдВ -> рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ -> рдзрд╛рд╡рдХ рд╡рд┐рдХрд▓реНрдк - рдпрд╣рд╛рдВ рд╣рдо рдмрд╕ рдбреНрд░рд╛рдЗрд╡рд░ рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ :)
    ENV ['DRIVER'] env.rb рд╕реЗ рдпрд╣ рд▓реЙрдиреНрдЪ рд╕реЗрдЯрд┐рдВрдЧ рд╣реИред рдФрд░ рд╣рдореЗрдВ рдмрд╕ рд░рдирд░ рдСрдкреНрд╢рди рдореЗрдВ "DRIVER = рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕" рдпрд╛ "DRIVER = рдХреНрд░реЛрдо" рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рд╣рдо рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ



рдпрд╣ рд╕рдм рдЖрдкрдХреЗ рд▓рд┐рдП рд╕рдлрд▓ рдХрдХрдбрд╝реА рдкрд░реАрдХреНрд╖рдг рд╣реИ!

Source: https://habr.com/ru/post/hi423123/


All Articles