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

рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдХреИрд╕реЗ рд╣рдо рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╣реИрдВред
рдпрд╣ рд╕рдм рдХреНрдпреЛрдВ?
рд╣рдо рдЕрдкрдиреЗ рдЕрдиреБрднрд╡ рд╕реЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдВрдЧреЗ - рдПрдХ рдЫреЛрдЯреА рд╕реАрдПрд╕рдПрд╕-рд╢реИрд▓реА рдХреЗ рд╕рдВрдкрд╛рджрди рдореЗрдВ "рдХрд╛рд░реНрдЯ рдореЗрдВ рдЙрддреНрдкрд╛рдж рдЬреЛрдбрд╝реЗрдВ" рдмрдЯрди рдореЛрдмрд╛рдЗрд▓ рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЗрд╕ рд░реВрдк рдореЗрдВ, рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рдФрд░ рд░рд┐рд▓реАрдЬ рдХреЛ рд╣рд┐рдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдРрд╕реЗ рдХрдИ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ рдЬрд╣рд╛рдВ рдирдИ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛, рдорд╛рдореВрд▓реА рд╕реБрдзрд╛рд░ рдФрд░ рд╕реБрдзрд╛рд░, рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЛ рддреЛрдбрд╝рддреЗ рд╣реИрдВред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рд╣рдо рдЕрдХреНрд╕рд░ рд░рд┐рд▓реАрдЬрд╝ рдХреЗ рдмрд╛рдж рдФрд░ рдЧреНрд░рд╛рд╣рдХреЛрдВ рд╕реЗ рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реАрдЦрддреЗ рд╣реИрдВред рдЗрд╕рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рджреЛ рд╕рд╛рд▓ рдкрд╣рд▓реЗ, рд╣рдордиреЗ рд╡рд┐рдХрд╛рд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдИ 2 рдИ рдкрд░реАрдХреНрд╖рдг рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ред рдЙрд╕рдХреЗ рдмрд╛рдж, рдЕрдзрд┐рдХрд╛рдВрд╢ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд╕реНрддрд░ рдкрд░ рдкрд╣рдЪрд╛рдиреА рдЧрдИрдВ, рди рдХрд┐ рдпреБрджреНрдз рдХреЗ рдорд╛рд╣реМрд▓ рдкрд░ред
E2E рд╢реБрд░реВ рд╕реЗ рдЕрдВрдд рддрдХ рдПрдХ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдкрд░рд┐рджреГрд╢реНрдп рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд░рд╣рд╛ рд╣реИред рдИ 2 рдИ рдкрд░реАрдХреНрд╖рдг рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдЕрдиреБрдХрд░рдг рдХрд░рддрд╛ рд╣реИ, рдареАрдХ рдЙрд╕реА рддрд░рд╣ рдЬреИрд╕реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ред
рд╣рдо E2E рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:
- рдкреНрд░рддрд┐рдЧрдорди рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
- рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
- CI / CD рдореЗрдВ рдПрдХреАрдХрд░рдг рдХреЗ рд▓рд┐рдП
рдЗрд╕рдореЗрдВ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ рдХрд┐ рд╕рднреА рдореЙрдбреНрдпреВрд▓ рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╕рд╣реА рдФрд░ рдЕрдиреБрдорд╛рдирд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред
E2E рдкрд░реАрдХреНрд╖рдг рд╣рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдЙрди рдЦрдВрдбреЛрдВ рдХреЛ рдХрд╡рд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ рдЬреЛ рдпреВрдирд┐рдЯ рдФрд░ рдПрдХреАрдХрд░рдг рдкрд░реАрдХреНрд╖рдгреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рддреНрдпрд╛рдкрд┐рдд рдирд╣реАрдВ рд╣реИрдВред рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдг рдФрд░ рдПрдХреАрдХрд░рдг рдкрд░реАрдХреНрд╖рдг рдЖрд╡реЗрджрди рдХреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рдХрд╡рд░ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рдПрдХ рдкреГрдердХ рд╣рд┐рд╕реНрд╕реЗ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рдпреЗ рднрд╛рдЧ рдЕрдкрдиреЗ рджрдо рдкрд░ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗ рдПрдХ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВрдЧреЗ рдпрд╛ рдирд╣реАрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдпреВрдирд┐рдЯ рдФрд░ рдПрдХреАрдХрд░рдг рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ E2E рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдПрдХ рд╕реЗрдЯ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рд╣рдореЗрдВ рд╕рдВрдкреВрд░реНрдг рд╕рдорд╛рдзрд╛рди рдХрд╛ рд╕рдмрд╕реЗ рд╕рдВрдкреВрд░реНрдг рддрд░реАрдХреЗ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред

рдИ 2 рдИ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдиреЗ рдФрд░ рдЪрд▓рд╛рдиреЗ рдореЗрдВ рд╕рдордп рдФрд░ рд╕рдВрд╕рд╛рдзрди рд▓рдЧрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Google 70/20/10 рдЬреБрджрд╛рдИ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ: 70% рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг, 20% рдПрдХреАрдХрд░рдг рдкрд░реАрдХреНрд╖рдг рдФрд░ 10% E2E рдкрд░реАрдХреНрд╖рдгред рдкреНрд░рддреНрдпреЗрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рд╕рдЯреАрдХ рд╕рдВрдпреЛрдЬрди рдЕрд▓рдЧ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░ рдЗрд╕реЗ рдкрд┐рд░рд╛рдорд┐рдб рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
E2E рдкрд░реАрдХреНрд╖рдг рд╕рд░рд▓ рдирд╣реАрдВ рд╣реИрдВ рдФрд░ рдкрд╣рд▓реА рдмрд╛рд░ рдореЗрдВ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдФрд░ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдорд╣рдВрдЧреЗ рд▓рдЧрддреЗ рд╣реИрдВред Virto рдХреЙрдорд░реНрд╕ рдореЗрдВ, рд╣рдо рд▓рдЧрд╛рддрд╛рд░ рд╡рд┐рдХрд╛рд╕ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдФрд░ рдирдП рд░рд┐рд▓реАрдЬ рд╣реЛрдиреЗ рдкрд░ E2E рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреА рд▓рд╛рдЧрдд рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд╣рдореЗрдВ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рд╕рдорд╛рдзрд╛рди рдЖрдкрдХреЛ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ E2E рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдВрдЧреЗред
рдЕрдЪреНрдЫреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╣рд╛рдиреА - рдпрд╣ рд▓рдЧрднрдЧ рддреИрдпрд╛рд░ рд╣реИ E2E рдкрд░реАрдХреНрд╖рдг
рдЖрдк рдЕрдХреНрд╕рд░ рд╕реБрди рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдИ 2 рдИ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдиреЗ рдореЗрдВ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ, рдЙрдиреНрд╣реЗрдВ рдмрдирд╛рдП рд░рдЦрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрддрд╛ рд╣реИред рд╣рд╛рдВ, рдпрд╣ рдРрд╕рд╛ рд╣реИ, рд╡реЗ рдкреНрд░рд▓реЗрдЦрди рдХреЗ рд╕рдорд╛рди рд╣реА рдмрдирд╛рдП рд░рдЦрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИред рдЙрдиреНрд╣реЗрдВ рд╡рд┐рдХрд╛рд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдФрд░ рд▓реЗрдЦрди рджрд╕реНрддрд╛рд╡реЗрдЬ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛, рдЬрд┐рд╕рд╕реЗ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдкрд░ рдХрдмреНрдЬрд╛ рд╣реЛ рдЧрдпрд╛ред
E2E рдмрдирд╛рдирд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдХрд╣рд╛рдиреА рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕ рдЪрд░рдг рдореЗрдВ рд╣рдо рдХрд┐рддрдиреА рд╕рд╛рд╡рдзрд╛рдиреА рд╕реЗ рд╡рд┐рд╡рд░рдг рддреИрдпрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ, рд╡рд┐рдХрд╛рд╕ рдЯреАрдо рдХреЗ рд▓рд┐рдП E2E рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдирд╛ рдЗрддрдирд╛ рд╕рд░рд▓ рд╣реЛрдЧрд╛ рдЬреЛ рдпрд╣ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдЧрд╛ рдХрд┐ рдЗрд╕ рдкрд░рд┐рджреГрд╢реНрдп рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╕рдордп рд╕рднреА рдкреНрд░рдгрд╛рд▓рд┐рдпрд╛рдВ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИрдВред
рдХрд╛рд░реНрдЯ рдореЗрдВ рдХрд┐рд╕реА рдЖрдЗрдЯрдо рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдЯрди рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╣рд╛рдиреА рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:
GIVEN I am signed in to the storefront AND Some product page is open (/product-name) AND my cart is empty WHEN I click to the "Add" button on the item with the following parameters: THEN I should see a dropdown menu where I can choose from 1 to 10+
рдЬреЛ рддрдм рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ:

рдХреБрдЫ рд╕рдордп рдмрд╛рдж, рддрдХрдиреАрдХреА рд▓реЗрдЦрдХ рдпрд╛ рдПрдХ рдирдИ рд╡рд┐рдХрд╛рд╕ рдЯреАрдо, рдкреНрд░рд▓реЗрдЦрди рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЪрд▓рд╛рдиреЗ рдФрд░ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреА рд╣реИ рдпрд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╡реАрдбрд┐рдпреЛ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рд░рд┐рдХреЙрд░реНрдб рдХрд░ рд╕рдХрддреА рд╣реИред
рдЖрд╕рд╛рди - рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ
рдкрд░реАрдХреНрд╖рдг рдЙрдкрдХрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдордиреЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ AngularJS рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╕рд┐рдд рдПрдХ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд E2E рдкрд░реАрдХреНрд╖рдг рд╕реНрд╡рдЪрд╛рд▓рди рдкреНрд░рдгрд╛рд▓реА, рдкреНрд░реЛрдЯреНрд░реИрдХреНрдЯрд░ рдХреЛ рдЪреБрдирд╛ред
Protractor рдПрдХ Node.js рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╣реИ рдЬреЛ WebDriverJS рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдкреНрд░реЛрдЯреНрд░реИрдХреНрдЯрд░ Node.js, рдЬреИрд╕реНрдореАрди, рд╕реЗрд▓реЗрдирд┐рдпрдо, рдореЛрдЪрд╛, рдХрдХрдбрд╝реА рдФрд░ рд╡реЗрдм рдЬреИрд╕реА рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХрд┐рдпреЛрдВ рдХреЗ рд╕рдВрдпреЛрдЬрди рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдкреНрд░реЛрдЯреНрд░реИрдХреНрдЯрд░ рдХреЛ рдПрдВрдЧреБрд▓рд░рдЬреЗрдПрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдПрдВрдЧреБрд▓рд░рдЬреЗрдПрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ, рдкреЗрдЬ рдХреЛ рд░рд┐рдлреНрд░реЗрд╢ рдХрд░рдиреЗ, рдЖрджрд┐ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд┐рдП рдмрд┐рдирд╛ рд╕рдордп рд▓рд┐рдЦрдирд╛ рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ ... рдЕрдиреБрднрд╡ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдбреЗрд╡рд▓рдкрд░ рдПрдВрдЯреНрд░реА рдереНрд░реЗрд╢реЛрд▓реНрдб рдмрд╣реБрдд рдХрдо рд╣реИред
рд╡рд┐рд╢реНрд╡ рд╕реНрддрд░ рдкрд░ рдкреНрд░реЛрдЯреЗрдХреНрдЯрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП npm рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:
npm install -g protractor
webdriver-manager рдПрдХ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд╣реИ рдЬреЛ рд╕реЗрд▓реЗрдирд┐рдпрдо рд╕рд░реНрд╡рд░ рдХреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИред рд╕реЗрд▓реЗрдирд┐рдпрдо рд╕рд░реНрд╡рд░ - рдХрд╛ рдЙрдкрдпреЛрдЧ рдкрд░реАрдХреНрд╖рдг рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рдмреАрдЪ рдЖрджреЗрд╢реЛрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЗрдВрд╕реНрдЯреЙрд▓ рдпрд╛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдБ:
webdriver-manager update
рдФрд░ рдЪрд▓рд╛рдПрдВ:
webdriver-manager start
рдпрд╣ рдХрдорд╛рдВрдб рд╕реЗрд▓реЗрдирд┐рдпрдо рд╕рд░реНрд╡рд░ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд▓реЙрдЧ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдВрдбреЛ рдЦреЛрд▓рддрд╛ рд╣реИред рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЯреЗрдХреНрдЯрд░ рдЗрд╕ рд╕рд░реНрд╡рд░ рдХреЛ рдЕрдиреБрд░реЛрдз рднреЗрдЬреЗрдЧрд╛ред
рдкреНрд░реЛрдЯреЗрдХреНрдЯрд░ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИред рдкрд░реАрдХреНрд╖рдг рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдмреБрдирд┐рдпрд╛рджреА рдЪрд░рдгреЛрдВ рдХрд╛ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг
рдореБрдЦреНрдп рд╕рд╛рдЗрдЯ рдкрд░ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рд╕рд╣реА рд╕рдВрд░рдЪрдирд╛
E2E рдкрд░реАрдХреНрд╖рдг рд╣рдореЗрд╢рд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдпрд╛ рдереАрдо рдХреЗ рд╕рдорд╛рди рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рд╣реЛрддреЗ рд╣реИрдВред
рд╣рдордиреЗ рдмрд╛рд╣рд░реА E2E рдкрд░реАрдХреНрд╖рдг рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐, рд╕рд╛рджрдЧреА рдкреНрд░рддреАрдд рд╣реЛрдиреЗ рдХреЗ рд╕рд╛рде, рд╕реЗрд╡рд╛рдПрдВ рд╕реНрдерд╛рдиреАрдп рдорд╢реАрди рдФрд░ рдмрд╛рдж рдореЗрдВ рд░рдЦрд░рдЦрд╛рд╡ рдкрд░ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдкреНрд░рдХреНрд╖реЗрдкрдг рдХреЛ рдЬрдЯрд┐рд▓ рдмрдирд╛рддреА рд╣реИрдВред рдХреЛрдб рдФрд░ рдкрд░реАрдХреНрд╖рдг рд╡рд┐рднрд┐рдиреНрди рднреМрддрд┐рдХ рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИрдВ, рдЬреЛ рдЗрд╕ рддрдереНрдп рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЙрдиреНрд╣реЗрдВ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рднреВрд▓ рдЬрд╛рддреЗ рд╣реИрдВред
рдПрдХ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдб рдФрд░ рдЯреЗрд╕реНрдЯ рдЦреЛрдЬрдирд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдФрд░ рдмрдирд╛рдП рд░рдЦрдиреЗ рдореЗрдВ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИред
рдПрдХ рдмреБрдирд┐рдпрд╛рджреА рдЙрджрд╛рд╣рд░рдг
рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛
рд╣реИ ред
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдирд┐рдореНрди рд╕рдВрд░рдЪрдирд╛ рдХрд╛ E2E рдлрд╝реЛрд▓реНрдбрд░ рдмрдирд╛рддрд╛ рд╣реИ, рдЬреЛ рдкрд░реАрдХреНрд╖рдг рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреГрд╖реНрда рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
E2E/ |--cart | |--cart.pageObject.js | |--*.spec.js |--home | |--home.pageObject.js | |--*.spec.js |--conf.js
- conf.js - рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рд░реВрдЯ рдкрд░ рд╣реИ
- рдкреНрд░рддреНрдпреЗрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдлрд╝реЛрд▓реНрдбрд░ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдпрд╣ рд╕реНрдерд┐рдд рд╣реИ
- PageObject рдлрд╝рд╛рдЗрд▓ рдкреГрд╖реНрда рдкрд░ рддрддреНрд╡реЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
- рдХрдИ рдХрд▓реНрдкрдирд╛ рдлрд╛рдЗрд▓реЗрдВ - рдЬрд╣рд╛рдВ рдкрд░реАрдХреНрд╖рдг рд╕реНрдерд┐рдд рд╣реИрдВ
рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ, рдХрд╛ рдЙрдкрдпреЛрдЧ:
- baseUrl - рдЬреЛ рдЖрдкрдХреЛ рд╡рд┐рднрд┐рдиреНрди рд╡рд╛рддрд╛рд╡рд░рдгреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ
- params - рдЬрд┐рдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕реА рдкреГрд╖реНрда рдкрд░ рдкреНрд░рдореБрдЦ рддрддреНрд╡ рдЦреЛрдЬрдиреЗ рдпрд╛ рдлрд╝реЙрд░реНрдо рднрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
github.com/VirtoCommerce/vc-storefront/blob/master/VirtoCommerce.Storefront.Test/e2e/conf.js#L21
github.com/VirtoCommerce/vc-storefront/blob/master/VirtoCommerce.Storefront.Test/e2e/conf.js#L29рдпреЗ рдкреИрд░рд╛рдореАрдЯрд░ рддрдм IT рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬрдм DEV рдФрд░ QA рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдореЛрдб рдореЗрдВ рдЬреЗрдирдХреАрдВрд╕ рдореЗрдВ рд▓реЙрдиреНрдЪ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддреЗ рд╣реИрдВред
protractor conf.js --baseUrl=https://some-url.azurewebsites.net/--params.api.endpoint=https://some-admin-url.azurewebsites.net
рдкреГрд╖реНрда рдкрд░ рддрддреНрд╡реЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдХрд╛ рдЕрдиреБрдХреВрд▓рди
рдкреНрд░реЛрдЯреНрд░реИрдХреНрдЯрд░ рдкреГрд╖реНрда рдкрд░ рддрддреНрд╡реЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╣реА рд▓рдЪреАрд▓реЗ рддрд░реАрдХреЗ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ:
- by.binding
- by.model
- by.repeater
- by.className
- by.css
- by.select ()
- by.partialButtonText ()
- ...
рд▓реЗрдХрд┐рди рд╣рд╛рд▓ рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ, рд╣рдо рдЙрд╕ рдореЙрдбрд▓ рдкрд░ рдЖрдП рдЬреЛ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рднрд╛рдЧ рд▓реЗрдиреЗ рд╡рд╛рд▓реЗ рддрддреНрд╡реЛрдВ рдХреЛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╡рд░реНрдЧ рдХреЗ рд╕рд╛рде рдкреНрд░реЛрдЯреНрд░реИрдХреНрдЯрд░- рдкреНрд░реАрдлрд┐рдХреНрд╕ рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдкрд░реАрдХреНрд╖рдг рдореЗрдВ, рдпреЗ рддрддреНрд╡ byclassName рджреНрд╡рд╛рд░рд╛ рдкрд╛рдП рдЬрд╛рддреЗ рд╣реИрдВред
рдпрд╣ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд░рдЦрд░рдЦрд╛рд╡ рдФрд░ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рд╕рд░рд▓ рдмрдирд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдпрд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЙрдкрдХрд░рдг рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдИ 2 рдИ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рднрд╛рдЧ рд▓реЗрдиреЗ рд╡рд╛рд▓реЗ рддрддреНрд╡ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рд╣рдо рдХрд┐рди рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд░рд╣реЗ рд╣реИрдВ
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, Chrome рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдХреНрд░реЛрдо рд╢реЛ рдореЗрдВ E2E рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд╣рдорд╛рд░реЗ рдЕрдиреБрднрд╡ рдХреЗ рд░реВрдк рдореЗрдВ, рдпрд╣ рд╣рдореЗрдВ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдФрд░ рд╕рд╛рде рд╣реА рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓реЗрдЦрди рдХреЛ рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдпрджрд┐ рдЖрдкрдХреЛ рдХрдИ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдПрдХ рддрд░рдл рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ, рджреВрд╕рд░реА рддрд░рдл рд╡рд┐рднрд┐рдиреНрди рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдбреНрд░рд╛рдЗрд╡рд░реЛрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдФрд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рд╕рд╛рде рдХрдард┐рдирд╛рдЗрдпрд╛рдВ рд╣реИрдВред
рд╡рд┐рднрд┐рдиреНрди рдЧреНрд░рд╛рд╣рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ, рд╣рдордиреЗ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕, рд╕рдлрд╛рд░реА рдФрд░ IE рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рд░реВрдк рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рд╣реИред рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдкрд░реАрдХреНрд╖рдг рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрд░реЛрдо рдореЗрдВ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рдирдХрд▓ рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╕рдлрд╛рд░реА рдФрд░ IE рдореЗрдВ E2E рдХреЗ рд▓реЙрдиреНрдЪ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕рд┐рд╕реНрдЯрдо рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди, рдкреЛрд░реНрдЯ рдЦреЛрд▓рдиреЗ, рд╕реБрд░рдХреНрд╖рд╛ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдФрд░ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдФрд░ рдЕрд╕рдВрдЧрддрд┐ рдХреЗ рд╕рд╛рде рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмрд╣реБрдд рд╕рд╛рд░реА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓рддреА рд╣реИред
рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ
рдЖрд╡рд╢реНрдпрдХ рд╡реЗрдмрдбреНрд░рд╛рдЗрд╡рд░ рдбрд╛рдЙрдирд▓реЛрдб рдФрд░ рдЗрдВрд╕реНрдЯреЙрд▓
рдХрд░рдирд╛ рд╣реЛрдЧрд╛редрдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдХ рдирдпрд╛ рдЕрдиреБрднрд╛рдЧ рдорд▓реНрдЯреАрдкреНрд▓реЗрдмрд┐рд▓рд┐рдЯреА рдЬреЛрдбрд╝реЗрдВ:
exports.config = { тАж multiCapabilities: [ { 'browserName' : 'chrome' }, { 'browserName' : 'firefox' } ], тАж }
рдЪреВрдВрдХрд┐ рдЖрдзреБрдирд┐рдХ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рд╕реНрддрд╛рд╡реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрддреЗ рд╕рдордп рдЗрд╕реЗ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдкреНрд░реЛрдЯреЗрдХреНрдЯрд░ рдЖрдкрдХреЛ рд╡рд┐рднрд┐рдиреНрди рд╕реНрдХреНрд░реАрди рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмреНрд░рд╛рдЙрдЬрд╝рд░.driver.manage () рд╡рд┐рдВрдбреЛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдХреНрд░реАрди рдХрд╛ рдЖрдХрд╛рд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реЛрддрд╛ рд╣реИред (рд╕реЗрдЯ рдХрд░реЗрдВ)ред рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдордиреЗ рд╕реНрдХреНрд░реАрди рдХрд╛ рдЖрдХрд╛рд░ 1600 рд╕реЗ 800 рддрдХ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рд╣реИред
exports.config = { тАж capabilities: { 'browserName': 'chrome' }, onPrepare: function() { browser.driver.manage().window().setSize(1600, 800)
рдпрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдорд▓реНрдЯреАрдХреИрдкрд┐рдмрд┐рд▓рд┐рдЯреА рд╕реЗрдХреНрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗред рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдо рддреАрди рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд░рд╕реНрддрд╛рд╡реЛрдВ рдХреЗ рд▓рд┐рдП рдХреНрд░реЛрдо рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдПрдВрдЧреЗред
multiCapabilities: [ { 'browserName': 'chrome', 'chromeOptions' : { args: ['--lang=en', '--window-size=1920,1080'] }, specs: ['specs.js'] }, { 'browserName': 'chrome', 'chromeOptions' : { args: ['--lang=en', '--window-size=1680,1050'] }, specs: ['specs.js'] }, { 'browserName': 'chrome', 'chromeOptions' : { args: ['--lang=en', '--window-size=1600,900'] }, specs: ['specs.js'] }]
E2E рдкреНрд░рд▓реЗрдЦрди рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред
рдПрдХ рдмрд╛рд░ рдлрд┐рд░, E2E рдПрдХ рддрддреНрд╡ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдЪреНрдЫрд╛ рд╣реИ, рдпрд╣ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рд╡рд┐рдХрд╛рд╕ рдЯреАрдо рджреНрд╡рд╛рд░рд╛ рдХреНрдпрд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдПрдХ рдирдИ рд╡рд┐рдХрд╛рд╕ рдЯреАрдо рдпрд╛ рддрдХрдиреАрдХреА рд▓реЗрдЦрдХ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЛ рд▓рд╛рдЗрд╡ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреИрд╕реЗ рдПрдХ рдирдпрд╛ рдХрд░реНрдордЪрд╛рд░реА рдЗрди рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдЪрд▓рд╛ рд╕рдХрддрд╛ рд╣реИред
CI / CD рдПрдХреАрдХрд░рдг
рдХреЛрдИ рднреА рдкрд░реАрдХреНрд╖рдг рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рд╕рдордп-рд╕рдордп рдкрд░ рдЪрд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рд╕рдордп рд▓реЗрдЦрди рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдмрд░реНрдмрд╛рдж рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рд╡реЗ рдХреБрдЫ рд╣рдлрд╝реНрддреЗ рдореЗрдВ рдмреЗрдХрд╛рд░ рд╣реЛ рдЬрд╛рдПрдВрдЧреЗ, рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЦрд░реЛрдВрдЪ рд╕реЗ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рдЖрд╕рд╛рди рд╣реЛрдЧрд╛ред
рд╣рдордиреЗ E2E рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ CI / CD рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдФрд░ E2E рдХреЛ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрджрдо рдЙрдард╛рдпрд╛ рд╣реИред
CI / CD рдореЗрдВ рдПрдХреАрдХрд░рдг рдЖрдкрдХреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдФрд░ рдЕрдВрддрд░реНрджреГрд╖реНрдЯрд┐ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ DE2 рдФрд░ QA рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд▓рд┐рдП E2E рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдХрд┐ рд╕рд┐рд╕реНрдЯрдо рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдмрд╛рдж рднреА рдЪрд╛рд▓реВ рд░рд╣рддрд╛ рд╣реИред рдФрд░ рдЕрдЧрд░ рдирд┐рд░реНрдгрдп рдЯреВрдЯ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЬрд╛рдирдХрд╛рд░реА рджреЗрдВ рдХрд┐ рдпрд╣ рдХрдм рдФрд░ рдХрд┐рд╕ рдмрджрд▓рд╛рд╡ рдкрд░ рд╣реБрдЖред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореЙрдбреНрдпреВрд▓ рдХреЗ рдПрдХ рдЕрджреНрдпрддрди рд╣реЛрдиреЗ рдкрд░ рдирдП рд╕рдВрд╕реНрдХрд░рдг рд▓реЙрдиреНрдЪ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдирдпрд╛ рд╕рдВрд╕реНрдХрд░рдг QA тАЛтАЛрд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдорд┐рд▓рддрд╛ рд╣реИред
рджреВрд╕рд░реЗ, E2E рдкрд░реАрдХреНрд╖рдг рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдореЛрдб рдореЗрдВ DEV рдФрд░ QA рд╡рд╛рддрд╛рд╡рд░рдг рдкрд░ рдПрдХ рд╢реЗрдбреНрдпреВрд▓ рдкрд░ рд░рд╛рдд рдореЗрдВ рдЪрд▓рд╛рдП рдЬрд╛рддреЗ рд╣реИрдВред
рддреАрд╕рд░рд╛, рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╕реНрд╡рдпрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛рдиреБрд╕рд╛рд░ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред
рд▓реЙрдиреНрдЪ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╡рд┐рдХрд╛рд╕ рдЯреАрдо рд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд╕рднреА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкреНрд░рддрд┐рднрд╛рдЧрд┐рдпреЛрдВ рдХреЛ рдкрд░реАрдХреНрд╖рдг рдкрд░рд┐рдгрд╛рдореЛрдВ рдкрд░ HTML рд░рд┐рдкреЛрд░реНрдЯ рдХреЗ рд╕рд╛рде рдПрдХ рдИрдореЗрд▓ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред
рд╕рдВрдкреВрд░реНрдг рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЯреАрдо рдХреЛ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдкрд░рд┐рдгрд╛рдо рдкрд░ рдЬрд╛рдирдХрд╛рд░реА рдХреА рдЕрдирд┐рд╡рд╛рд░реНрдп рдЙрдкрд▓рдмреНрдзрддрд╛ рдкрд░ рдзреНрдпрд╛рди рджреЗрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдЗрд╕рд╕реЗ рдПрдХ рдУрд░ рд╡рд┐рдХрд╛рд╕ рдЯреАрдо рдХреЛ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдорд┐рд▓рддрд╛ рд╣реИ рдФрд░ рджреВрд╕рд░реА рдУрд░ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреА рдЕрдкреЗрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдкреНрд░рдмрдВрдзрди рд╣реЛрддрд╛ рд╣реИред рд╡рд┐рдХрд╛рд╕ рдЯреАрдо рддреЗрдЬреА рд╕реЗ рдмрджрд▓рд╛рд╡ рдХрд░ рд╕рдХрддреА рд╣реИ, рдЬрдмрдХрд┐ рдпрд╣ рдорд╣рд╕реВрд╕ рдХрд░рддреЗ рд╣реБрдП рдХрд┐ рдореБрдЦреНрдп рд╡реНрдпрд╡рд╕рд╛рдп рдкрд░рд┐рджреГрд╢реНрдп рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреА рд╣реИ, рдХрд┐ рд░рд┐рд▓реАрдЬрд╝ рд╕реЗ рдкрд╣рд▓реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреА рдкрд╣рдЪрд╛рди рдХреА рдЬрд╛рддреА рд╣реИред рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рдкрд░реАрдХреНрд╖рдг рджреНрд╡рд╛рд░рд╛ рд╕рдорд╕реНрдпрд╛ рдХреА рдкрд╣рдЪрд╛рди рдХреА рдЬрд╛рддреА рд╣реИ рдФрд░ рд░рд┐рд▓реАрдЬ рдХреЛ рд╕реНрдердЧрд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЬрд╛рдирдХрд╛рд░реА рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдЯреВрдЯ рдЧрдпрд╛ рдФрд░ рдлрд┐рд░ рд╕реБрдзрд╛рд░ рдкрд░ рдХрд╛рдо рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреИрд╕реЗ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИред
рд░рд┐рдкреЛрд░реНрдЯ рдЬрдирд░реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдкреНрд░реЛрдЯреНрд░реИрдХреНрдЯрд░-рдЬреИрд╕реНрдореАрди 2-рдПрдЪрдЯреАрдПрдордПрд▓-рд░рд┐рдкреЛрд░реНрдЯрд░ рдкреНрд▓рдЧрдЗрди (https://github.com/VirtoCommerce/protractor-jasmine2-html-reporter) рдХреЗ рд╕рдВрд╢реЛрдзрд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдкреНрд▓рдЧрдЗрди рдПрдХ HTML рд░рд┐рдкреЛрд░реНрдЯ рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдЗрдирд▓рд╛рдЗрди рддрддреНрд╡реЛрдВ рдХреЗ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рддрд╛ рд╣реИред
рдЗрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ:
- рдкреНрд░реЛрдЯреНрд░реЗрдХреНрдЯрд░-рдЬреИрд╕реНрдореАрди 2-html-рд░рд┐рдкреЛрд░реНрдЯрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ
- рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдкреНрд░реЛрдЯреНрд░реЗрдХреНрдЯрд░-рдЬреИрд╕реНрдореАрди 2-html-рд░рд┐рдкреЛрд░реНрдЯрд░ рдЬреЛрдбрд╝рдирд╛
- рдХрдиреЗрдХреНрд╢рди рд░рд┐рдкреЛрд░реНрдЯ рдСрдирдкреНрд░реЗрдо рд╡рд┐рдзрд┐
var HtmlScreenshotReporter = require('protractor-jasmine2-html-reporter'); var reporter = new HtmlScreenshotReporter(self.options); var name = browser.suite; self.options.reportTitle = name + '-report.html'; jasmine.getEnv().addReporter(reporter);

рд▓рдЧрд╛рддрд╛рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░реЗрдВ
рд▓рд╛рдЧрдд рдХреЛ рдХрдо рдХрд░рдиреЗ рдФрд░ E2E рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдФрд░ рд╕рдорд░реНрдерди рдХреА рдЧрддрд┐ рдХреЛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЯреАрдо рдореЗрдВ рд▓рдЧрд╛рддрд╛рд░ рдХрд╛рдо рдХрд░реЗрдВред
рдЯреНрд░реЗрди рдФрд░ рдкрд░реАрдХреНрд╖рдг рд▓реЗрдЦрди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХрд░реЗрдВред рджреЗрдЦреЗрдВ рдХрд┐ рдХреМрди рд╕реЗ рдирдП рдШрдЯрдХреЛрдВ рдФрд░ рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рдХрдХрдбрд╝реА рдХрдиреЗрдХреНрд╢рди рд╡рд┐рдХрд▓реНрдк рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдХрдХрдбрд╝реА рд╕рд░рд▓ рднрд╛рд╖рд╛ рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдХрд░рдг рд╣реИред
рдирд┐рд╖реНрдХрд░реНрд╖
E2E рдкрд░реАрдХреНрд╖рдг рдЗрддрдиреЗ рд╕рд░рд▓ рдирд╣реАрдВ рд╣реИрдВ рдФрд░ рдкрд╣рд▓реА рдмрд╛рд░ рдореЗрдВ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдорд╣рдВрдЧреЗ рд▓рдЧрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рдмрд╣реБрдд рдореВрд▓реНрдпрд╡рд╛рди рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЗ рд╕реНрд╡рд╛рд╕реНрдереНрдп рдХрд╛ рдПрдХ рд╕рдВрдХреЗрддрдХ рд╣реИрдВред
рдкреБрдгреНрдп рд╡рд╛рдгрд┐рдЬреНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдИ 2 рдИ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдЕрдиреБрднрд╡ рд╕реЗ, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ:
- E2E рд▓рд┐рдЦрдирд╛ рд╡рд┐рдХрд╛рд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред рдФрд░ рдпрд╣ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╡реНрдпрд╛рдкрд╛рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдФрд░ рд╕рдВрдкреВрд░реНрдг рд╕рдорд╛рдзрд╛рди рдХреЗ рдХрд╛рдо рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рддрд╛ рд╣реИред DEV рдФрд░ QA рдХреЗ рдЪрд░рдг рдореЗрдВ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рдкрддрд╛ рдЪрд▓рд╛ рдерд╛, рди рдХрд┐ рдпреБрджреНрдз рдХреЗ рдорд╛рд╣реМрд▓ рдкрд░ред
- рдЯреЗрд╕реНрдЯ рдФрд░ рдХреЛрдб рд╕рдорд╛рди рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП рдФрд░ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред
- E2E рдкрд░реАрдХреНрд╖рдг рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╣рд╛рдиреА рдХреЗ рд╡рд┐рд╡рд░рдг рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИ; рдпрджрд┐ рдЗрд╕реЗ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рд╡рд┐рдХрд╛рд╕ рдЯреАрдо рдХреЗ рд▓рд┐рдП E2E рдкрд░реАрдХреНрд╖рдг рдмрдирд╛рдирд╛ рдЖрд╕рд╛рди рд╣реЛрддрд╛ рд╣реИред
- E2E рдкрд░реАрдХреНрд╖рдг рдкреНрд░рд▓реЗрдЦрди рдФрд░ рд░рд┐рдХреЙрд░реНрдб рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
- E2E рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рд▓рдЧрд╛рддрд╛рд░ рдФрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ DEV рдФрд░ QA рд╡рд╛рддрд╛рд╡рд░рдг рдкрд░ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдЖрдкрдиреЗ рд▓реЙрдиреНрдЪ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдкрд░ рд╕рдордп рдмрд░реНрдмрд╛рдж рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рд╡реЗ рдХреБрдЫ рд╣рдлреНрддреЛрдВ рдореЗрдВ рдмреЗрдХрд╛рд░ рд╣реЛ рдЬрд╛рдПрдВрдЧреЗред
- рдкрд░реАрдХреНрд╖рд╛ рдкрд░рд┐рдгрд╛рдо рд╕рднреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкреНрд░рддрд┐рднрд╛рдЧрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ рдХреА рдПрдХ рддрд╕реНрд╡реАрд░ рджреЗрддрд╛ рд╣реИред
- E2E рд╕рднреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ 100% рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИред 70/20/10 рдирд┐рдпрдо рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ: 70% рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг, 20% рдПрдХреАрдХрд░рдг рдкрд░реАрдХреНрд╖рдг рдФрд░ 10% E2E рдкрд░реАрдХреНрд╖рдг
- рд▓рд╛рдЧрдд рдХреЛ рдХрдо рдХрд░рдиреЗ рдФрд░ E2E рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдФрд░ рд╕рдорд░реНрдерди рдХреА рдЧрддрд┐ рдХреЛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЯреАрдо рдореЗрдВ рд▓рдЧрд╛рддрд╛рд░ рдХрд╛рдо рдХрд░реЗрдВред
рд╕рдВрджрд░реНрдн
www.protractortest.orgрдПрдВрдЧреБрд▓рд░рдЬреЗрдПрд╕ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЯреЗрдХреНрдЯрд░ - рдПрдВрдб-рдЯреВ-рдПрдВрдб рдЯреЗрд╕реНрдЯ рд▓рд┐рдЦрдирд╛ рдХрднреА рдЗрддрдирд╛ рдордЬреЗрджрд╛рд░ рдирд╣реАрдВ рд░рд╣рд╛github.com/angular/protractor/blob/master/docs/page-objects.mdgithub.com/VirtoCommerce/vc-storefront/tree/master/VirtoCommerce.Storefront.Test/e2eрдмрд╕ рдПрдВрдб рдЯреВ рдПрдВрдб рдЯреЗрд╕реНрдЯреНрд╕ рдЯреЗрд╕реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╛ рдХрд╣реЗрдВред
test.googleblog.com/2015/04/just-say-no-to-more-end-to-end-tests.html