Cucumber-js: рдореИрдВ рдкреНрд░рддреНрдпреЗрдХ рдлреАрдЪрд░ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдЪрд░рдг рдкрд░рд┐рднрд╛рд╖рд╛ рдлрд╝рд╛рдЗрд▓ рдХреИрд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?

рдХреЛ рдирд┐рд░реНрдорд┐рдд 2 рдлрд╝рд░ре░ 2017  ┬╖  18рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: cucumber/cucumber-js

рдореЗрд░рд╛ рд▓рдХреНрд╖реНрдп

рдореИрдВ рдПрдХ рдмрдбрд╝реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдФрд░ рдЪрд░рдг рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреА рдПрдХ рд╕реНрдХреЗрд▓реЗрдмрд▓ рд╕рдВрд░рдЪрдирд╛ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдореЗрд░рд╛ рдкрд╣рд▓рд╛ рд╢реЙрдЯ step_definition рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рдерд╛ рддрд╛рдХрд┐ рдореИрдВ рд╡рд┐рднрд┐рдиреНрди рдЪрд░рдг рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рдЪрд░рдг рдкреИрдЯрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХреВрдВред

рдореЗрд░рд╛ рдХреЛрдб

рдореИрдВ рдЕрдкрдирд╛ рд╡рд░реНрддрдорд╛рди рдЙрджрд╛рд╣рд░рдг рджрд┐рдЦрд╛рддрд╛ рд╣реВрдВ:

рдореЗрд░реА рдлрд╝реЛрд▓реНрдбрд░ рд╕рдВрд░рдЪрдирд╛:

/features/sample.feature
/features/example.feature
/features/step_definitions/sample_steps.js
/features/step_definitions/example_steps.js
/features/step_definitions/common/common_steps.js

рдореЗрд░реЗ sample.feature рдореЗрдВ рдореЗрд░реЗ рдкрд╛рд╕ рд╣реИ:

  Scenario: Launching Cucumber
  Given I have some step definitions
   When I check some step definition with parameter "any"
   Then I should see all green "sample"

рдореЗрд░реЗ example.feature рдореЗрдВ рдореЗрд░реЗ рдкрд╛рд╕ рд╣реИ:

  Scenario: Launching Cucumber
  Given I have some step definitions
   When I check some step definition with parameter "any"
   Then I should see all green "example"

Given рдФрд░ When рдЪрд░рдгреЛрдВ рдХреЛ /common/common_steps.js рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

Then рдЪрд░рдг рдХреЛ sample_steps.js рдФрд░ example_steps.js рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЕрд▓рдЧ-рдЕрд▓рдЧред

рдореЗрд░реЗ sample_steps.js рдореЗрдВ рдореЗрд░реЗ рдкрд╛рд╕ рд╣реИ:

Then('I should see all green {stringInDoubleQuotes}', (arg) => {
   if (arg !== 'sample') {
     throw 'I should see all green when the argument is "sample"';
   }
   return;
 });

рдФрд░, рдЕрдВрдд рдореЗрдВ, рдореЗрд░реЗ example_steps.js рдореЗрдВ рдореЗрд░реЗ рдкрд╛рд╕ рд╣реИ:

Then('I should see all green {stringInDoubleQuotes}', (arg) => {
   if (arg !== 'example') {
     throw 'I should see all green when the argument is "example"';
   }
   return;
 });

рддреНрд░реБрдЯрд┐

рдореЗрд░рд╛ рдореБрдЦреНрдп рд▓рдХреНрд╖реНрдп рдпрд╣рд╛рдВ рд╕рднреА рд╣рд░реЗ рд░рдВрдЧ рдХрд╛ рд╣реЛрдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдореБрдЭреЗ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ:

Multiple step definitions match:
   I should see all green {stringInDoubleQuotes} - features\step_definitions\example_steps.js:6
   I should see all green {stringInDoubleQuotes} - features\step_definitions\sample_steps.js:6

рдХрдХрдбрд╝реА-рдЬреЗрд╡реАрдПрдо

рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдХрдХрдбрд╝реА-рдЬреЗрд╡реАрдПрдо рдореЗрдВ рд╣рдо рдПрдХ glue рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдФрд░ step_definitions рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рдореИрдВ рдвреВрдВрдв рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдХрдХрдбрд╝реА-рдЬреЗрдПрд╕ рдореЗрдВред рдЬрд╛рд╡рд╛ рдореЗрдВ рдЙрджрд╛рд╣рд░рдг:

@RunWith(Cucumber.class)
@Cucumber.Options( glue = { "com.app.stepdefinitions.common", "com.app.stepdefinitions.sample" } )
public class SampleFeature{
}

@RunWith(Cucumber.class)
@Cucumber.Options( glue = { "com.app.stepdefinitions.common", "com.app.stepdefinitions.example" } )
public class ExampleFeature{
}

рдЖрдЦрд┐рд░рдХрд╛рд░

рдореИрдВ рдХрдХрдбрд╝реА-рдЬреЗрд╡реАрдПрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрдХрдбрд╝реА-рдЬреЗрд╡реАрдПрдо рдХреЗ рд╕рдорд╛рди рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдЖрдИрдПрдордУ рд╕реНрдХреЛрдкрд┐рдВрдЧ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЬрд░реВрд░реА рд╣реИред рдЬреИрд╕реЗ-рдЬреИрд╕реЗ рдЖрдкрдХрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдврд╝рддрд╛ рд╣реИ, рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЖрдк рд╡рд┐рднрд┐рдиреНрди рд╕рдВрджрд░реНрднреЛрдВ рдореЗрдВ рдкрд░рд╕реНрдкрд░ рд╡рд┐рд░реЛрдзреА рд╡рд┐рд╡рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрдВрдЧреЗред

рдореЗрд░реА рдХрдВрдкрдиреА рдореЗрдВ, рд╣рдорд╛рд░реЗ рдЙрддреНрдкрд╛рдж рдореЗрдВ рд╕реИрдХрдбрд╝реЛрдВ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВ рдФрд░ рдХреНрдпреВрдП рдореЗрдВ 100k рд░реЗрдВрдЬ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдорд╛рдорд▓реЗ рд╣реИрдВред
рдпрджрд┐ рд╣рдо cucumber рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рд╣рдо рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рднрд╛рдЧ рд▓реЗрдВрдЧреЗред

рд╣рд╛рдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рджрд╛рдпрд░реЗ рдХреЗ рдмрдЬрд╛рдп рд╕рдВрджрд░реНрдн рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕рдВрджрд░реНрдн (рдпрд╛ рдиреЛ-рд╕рдВрджрд░реНрдн) рдореЗрдВ рдЖрдкрдХреА рдЪрд░рдг рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢, рдпрджрд┐ рд╕рднреА рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрд╕реНрдЯрдо рдбреАрдПрд╕рдПрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛ рд╕рдВрджрд░реНрдн рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдпрд╣ рдмреАрдП рдФрд░ рдХреНрдпреВрдП рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЗрди рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдХреЛрдИ рднреА рдХрд╕реНрдЯрдо рдбреАрдПрд╕рдПрд▓ рднреНрд░рдо рдФрд░ рдкреНрд░рддрд┐рд░реЛрдз рдкреИрджрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рд╣реИред

рдлрд╝реАрдЪрд░/рдкрд░рд┐рджреГрд╢реНрдп рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕рдВрджрд░реНрдн рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЧреЗрд░рдХрд┐рди рд╕рд┐рдВрдЯреИрдХреНрд╕ рдореЗрдВ рдЗрдВрдбреЗрдВрдЯреЗрд╢рди рд╣реИред

рдЯреИрдЧ рдФрд░ рдХрд╕реНрдЯрдо рдбреАрдПрд╕рдПрд▓ рдЬреЛрдбрд╝рдирд╛ рд╕рдорд╛рдзрд╛рди рдХреЗ рдмрдЬрд╛рдп рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реАрдорд╛ (рдпрд╛рдиреА рдПрдХ рд╣реИрдХ, рдЖрдИрдПрдордУ) рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╣реИред

рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдк https://github.com/cucumber/cucumber-js/issues/745 рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реБрдП рдЗрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

Scenario рдХреЛ defineStep $ рд╕реЗ рдмрдврд╝рд╛рдиреЗ рдФрд░ рдХреЙрд▓рдмреИрдХ рдореЗрдВ {Given, When, Then} рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреИрд╕реЗ?

рдЕрд░реНрдерд╛рдд:

import {defineSupportCode} from 'cucumber'

defineSupportCode(({ Scenario, Given, When, Then }) => {
  Given(...)
  When(...)
  Then(...)
  Scenario('<match scenario description>', ({ Given, When, Then}) => {
    Given('<take precedent of non-contexted>', ...)
    ...
  })
})

рд╕рднреА 18 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдореИрдВ рдПрдХ рдмрдбрд╝реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдФрд░ рдЪрд░рдг рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреА рдПрдХ рд╕реНрдХреЗрд▓реЗрдмрд▓ рд╕рдВрд░рдЪрдирд╛ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдореЗрд░рд╛ рдкрд╣рд▓рд╛ рд╢реЙрдЯ step_definition рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рдерд╛ рддрд╛рдХрд┐ рдореИрдВ рд╡рд┐рднрд┐рдиреНрди рдЪрд░рдг рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рдЪрд░рдг рдкреИрдЯрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХреВрдВред

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

рд╣рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рдо рд╕реЗрд▓реЗрдирд┐рдпрдо рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╛рдЗрдЯрд╡реЙрдЪ-рдХрдХрдбрд╝реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдЕрднреА рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░рд╛ рдПрдХрдорд╛рддреНрд░ рд╕рдорд╛рдзрд╛рди рдкреНрд░рддреНрдпреЗрдХ рдЪрд░рдг рдореЗрдВ рдПрдХ рдЙрдкрд╕рд░реНрдЧ рдЬреЛрдбрд╝рдирд╛ рд╣реИ:

Given [comp1] I click on "Open dialog"

рдмрдирд╛рдо

Given [comp2] I click on "Open dialog"

рдпрд╣ рд╣рдореЗрдВ рдЕрд╕реНрдкрд╖реНрдЯ рдЪрд░рдг рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рд╕реЗ рдмрдЪрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдкрдардиреАрдп рдлреАрдЪрд░ рдлрд╛рдЗрд▓реЛрдВ рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИред
рдореИрдВрдиреЗ рдХрдХрдбрд╝реА.рдЬреЗрдПрд╕ рд╕реНрд░реЛрдд рдХреЗ рд╕рд╛рде рдЫреЗрдбрд╝рдЫрд╛рдбрд╝ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЕрдЪреНрдЫрд╛ рд╕рдВрдХреЗрдд рдирд╣реАрдВ рдорд┐рд▓рд╛ред

рдХреНрдпрд╛ рдЗрд╕реЗ рдХреБрдЫ рд╣реБрдХ рдпрд╛ рд╡реИрдХрд▓реНрдкрд┐рдХ рджреБрдирд┐рдпрд╛ рдХреЗ рд╕рд╛рде рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?

@leipert рдЖрдк рдХрд┐рд╕ рдпреВрдЬрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдЗрд╕ рддрд░реНрдХ рдХреЛ рджреБрдирд┐рдпрд╛ рдореЗрдВ рд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ рдХрдИ рд╡рд┐рд╢реНрд╡ рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдлрд┐рд░ рдЪрд░рдг рдкрд░рд┐рднрд╛рд╖рд╛рдПрдВ рдХреЗрд╡рд▓ рдЧреЗрд░рдХрд┐рди рдореИрдЪреЛрдВ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЙрдЪрд┐рдд рд╡рд┐рд╢реНрд╡ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдкрд╛рд╕ рдХрд░рдиреЗ рд╕реЗ рдирд┐рдкрдЯрддреА рд╣реИрдВред рд╣рдо рдХрд┐рд╕ рд╡рд┐рд╢реНрд╡ рд╡рд╕реНрддреБ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реАрдПрд▓рдЖрдИ рд╡рд┐рдХрд▓реНрдк рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред

рдлрд┐рд▓рд╣рд╛рд▓ рдпрджрд┐ рдЖрдк рдХрдИ рджреБрдирд┐рдпрд╛/рдЪрд░рдг рдкрд░рд┐рднрд╛рд╖рд╛рдПрдВ рд░рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдЖрдк рдЗрд╕реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рдореЗрдВ рдЕрдкрдирд╛ рдХреЛрдб рдбрд╛рд▓рдХрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХреЗрд╡рд▓ рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдкреНрд░рддрд┐ рд░рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ ( --require CLI рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ)ред

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

cucuber.js рдореЗрдВ рдЕрднреА рддрдХ рдХреЗрд╡рд▓ рдЯреИрдЧ рд╣реА рдЖрдкрдХреЗ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рдХрд░реАрдм рд╣реИрдВред рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рд╣реБрдХ рд╣реА рдШреЛрд╖рдгрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗ рдЯреИрдЧ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реИрдВред рдпрджрд┐ рдЖрдк рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реИрдВ рдХрд┐ рдпрд╣ рдЖрдкрдХреЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рддрд░реАрдХрд╛ рд╣реИ, рддреЛ рдЖрдк рдПрдХ рдбреАрдПрд╕рдПрд▓ рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╢рд╛рдпрдж рдЪрд░рдг рдкреИрдЯрд░реНрди рдореЗрдВ [рдлреАрдЪрд░ рдирд╛рдо] рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд░рд▓ред

рдзрдиреНрдпрд╡рд╛рдж, @pinxue ред рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореИрдВ рдЗрд╕реЗ рдирд╣реАрдВ рд╕рдордЭ рд╕рдХрддрд╛:

рдЦреИрд░, "рдХрдХрдбрд╝реА рдкреБрд╕реНрддрдХ" рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЪрд░рдгреЛрдВ рдХреЛ рдбрд┐рдЬрд╛рдЗрди рдХрд░рдиреЗ рдХреЗ рдЗрд╕ рддрд░реАрдХреЗ рдХреЛ рд╣рддреЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рддреА рд╣реИред

рдПрдХ рд╣реА рдХреНрд░рд┐рдпрд╛ рд╡рд╛рдХреНрдпрд╛рдВрд╢ рдХреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдВрджрд░реНрднреЛрдВ рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЕрд░реНрде рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдпрд╣ рдареАрдХ рд╣реИред рдореЗрд░реЗ рдкрд╛рд╕ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдЬрд╛рдирдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реИ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╣рдо рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдЖрдВрддрд░рд┐рдХ рдбреАрдПрд╕рдПрд▓ рдкрд░ рдЪрд▓ рд░рд╣реЗ рд╣реИрдВ,

рдмрд╣реБрдд - рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред

рдЖрдкрдХреЗ рдЙрддреНрддрд░ @pinxue рдФрд░ @robsonrosa рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред
рд╕реНрдХреЛрдкреНрдб рдЪрд░рдг рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдореЗрд░рд╛ рддрд░реНрдХ рдпрд╣рд╛рдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

  1. _рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдЦрд░рд╛рдм рд╣реИрдВ рдФрд░ рдкреИрдорд╛рдиреЗ рдкрд░ рдирд╣реАрдВ рд╣реИрдВ_:
    рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд▓рдЧрднрдЧ 15 рдлреАрдЪрд░ рдлрд╛рдЗрд▓ рдлрд╛рдЗрд▓реЗрдВ рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ 10 рдкрд░рд┐рджреГрд╢реНрдп рд╣реИрдВ, рдФрд░ рд╕рднреА рдЪрд░рдг рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдФрд░ рдлреАрдЪрд░ рдлрд╛рдЗрд▓реЛрдВ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХрд░рдирд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрдард┐рди рд╣реИред рдмрдбрд╝реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 5 рдЪрд░рдгреЛрдВ рдХреЗ рдФрд╕рдд рдХреЗ рд╕рд╛рде 10 рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЗ рд╕рд╛рде 100 рдлреАрдЪрд░ рдлрд╛рдЗрд▓реЗрдВ) рд╡рд┐рд╢реНрд╡ рд╕реНрддрд░ рдкрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╕рднреА рдЪрд░рдгреЛрдВ рдХреЛ рдкрд╛рдЧрд▓ рд▓рдЧрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЯреНрд░реИрдХ рдХрд░рдирд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрдард┐рди рд╣реИ рдХрд┐ рдХреМрди рд╕реА рдлреАрдЪрд░ рдлрд╛рдЗрд▓ рдХрд┐рди рдЪрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИред
  2. _рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХрд╛ рдлреАрдЪрд░ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╢рдмреНрджреЛрдВ рдкрд░ рдХреЛрдИ рдирд┐рдпрдВрддреНрд░рдг рдирд╣реАрдВ рд╣реИ_:
    рд╣рдорд╛рд░реЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣рдорд╛рд░рд╛ "рдкреНрд░рдмрдВрдзрди" рдлреАрдЪрд░ рдлрд╛рдЗрд▓реЗрдВ рд▓рд┐рдЦрддрд╛ рд╣реИ, рдЙрдиреНрд╣реЗрдВ рдмреЗрдЪрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ: рд╣рдо рд╢рд╛рдирджрд╛рд░ рдмреАрдбреАрдбреА рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдЦреБрдж рдХреЛ рдПрдХ рдЕрдЬреАрдм рдХрд╕реНрдЯрдо рдбреАрдПрд╕рдПрд▓ рддрдХ рд╕реАрдорд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
  3. _рдЕрдЧрд░ рдХрдХрдбрд╝реА-рдЬреЗрд╡реАрдПрдо рдХреЗ рдкрд╛рд╕ рд╡рд┐рдХрд▓реНрдк рд╣реИ, рддреЛ рдХрдХрдбрд╝реА-рдЬреЗрд╡реАрдПрдо рдХреЗ рдкрд╛рд╕ рдХреНрдпреЛрдВ рдирд╣реАрдВ?_
    рдпрд╣ рдПрдХ рдмреБрд░рд╛ рддрд░реНрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ

рдореИрдВ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рджреЗрдЦрддрд╛ рд╣реВрдВ:

  1. рдЪрд░рдг рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдЙрдкрд╕рд░реНрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдХрд╕реНрдЯрдо рдбреАрдПрд╕рдПрд▓ рдмрдирд╛рдПрдВ
    рд╡рд┐рдкрдХреНрд╖: рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИред
    рдкреЗрд╢реЗрд╡рд░реЛрдВ: рдХрдХрдбрд╝реА рдореЗрдВ рдХреЛрдИ рдмрджрд▓рд╛рд╡ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИред рдЬреЗрдПрд╕
  2. рдХрдХрдбрд╝реА рдХреЗ рд▓рд┐рдП glue рдмрдирд╛рдПрдВредjs
    рд╡рд┐рдкрдХреНрд╖: "рдж рдХрдХрдбрд╝реА рдмреБрдХ" рдХреЗ рд╡рд┐рдЪрд╛рд░ рдХреЗ рдЦрд┐рд▓рд╛рдл рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред
    рдкреЗрд╢реЗрд╡рд░реЛрдВ: cucumber.js рдХреЗ рд╕рд╛рде рдлрд╝реАрдЪрд░ рд╕рдорд╛рдирддрд╛
  3. рдмрджрд▓реЗрдВ рдХрд┐ рд╣рдо рдкрд░реАрдХреНрд╖рдг рдХреИрд╕реЗ рдЪрд▓рд╛рддреЗ рд╣реИрдВ
    рд╡рд┐рдкрдХреНрд╖: рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдХрдо рд▓реЛрдЧреЛрдВ рдХреЛ рдорд┐рд▓реЗрдЧреАред
    рдкреЗрд╢реЗрд╡рд░реЛрдВ: рдХрдХрдбрд╝реА рдореЗрдВ рдХреЛрдИ рдмрджрд▓рд╛рд╡ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИред рдЬреЗрдПрд╕

рдХрд╣рд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рд╣рдо рд╢рд╛рдпрдж 3 рдХреЗ рд╕рд╛рде рдЬрд╛рдПрдВрдЧреЗ, рдЕрдЧрд░ рдХрдХрдбрд╝реА рдХреЗ рдЕрдиреБрд░рдХреНрд╖рдХреЛрдВ рдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рд╕реНрдХреЛрдкреНрдб рдЪрд░рдг рдкрд░рд┐рднрд╛рд╖рд╛рдПрдВ рджрд╛рдпрд░реЗ рд╕реЗ рдмрд╛рд╣рд░ рд╣реИрдВ (рд╕рдЬрд╛ рдХрд╛ рдЗрд░рд╛рджрд╛)ред

рдПрдХ рдмрд╛рд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, @robsonrosa рдореБрдЭреЗ рдЖрдкрдХреЗ рд╕рдорд╛рдзрд╛рди рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реЛрдЧреАред

рдЖрдИрдПрдордУ рд╕реНрдХреЛрдкрд┐рдВрдЧ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЬрд░реВрд░реА рд╣реИред рдЬреИрд╕реЗ-рдЬреИрд╕реЗ рдЖрдкрдХрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдврд╝рддрд╛ рд╣реИ, рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЖрдк рд╡рд┐рднрд┐рдиреНрди рд╕рдВрджрд░реНрднреЛрдВ рдореЗрдВ рдкрд░рд╕реНрдкрд░ рд╡рд┐рд░реЛрдзреА рд╡рд┐рд╡рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрдВрдЧреЗред

рдореЗрд░реА рдХрдВрдкрдиреА рдореЗрдВ, рд╣рдорд╛рд░реЗ рдЙрддреНрдкрд╛рдж рдореЗрдВ рд╕реИрдХрдбрд╝реЛрдВ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВ рдФрд░ рдХреНрдпреВрдП рдореЗрдВ 100k рд░реЗрдВрдЬ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдорд╛рдорд▓реЗ рд╣реИрдВред
рдпрджрд┐ рд╣рдо cucumber рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рд╣рдо рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рднрд╛рдЧ рд▓реЗрдВрдЧреЗред

рд╣рд╛рдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рджрд╛рдпрд░реЗ рдХреЗ рдмрдЬрд╛рдп рд╕рдВрджрд░реНрдн рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕рдВрджрд░реНрдн (рдпрд╛ рдиреЛ-рд╕рдВрджрд░реНрдн) рдореЗрдВ рдЖрдкрдХреА рдЪрд░рдг рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢, рдпрджрд┐ рд╕рднреА рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрд╕реНрдЯрдо рдбреАрдПрд╕рдПрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛ рд╕рдВрджрд░реНрдн рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдпрд╣ рдмреАрдП рдФрд░ рдХреНрдпреВрдП рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЗрди рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдХреЛрдИ рднреА рдХрд╕реНрдЯрдо рдбреАрдПрд╕рдПрд▓ рднреНрд░рдо рдФрд░ рдкреНрд░рддрд┐рд░реЛрдз рдкреИрджрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рд╣реИред

рдлрд╝реАрдЪрд░/рдкрд░рд┐рджреГрд╢реНрдп рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕рдВрджрд░реНрдн рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЧреЗрд░рдХрд┐рди рд╕рд┐рдВрдЯреИрдХреНрд╕ рдореЗрдВ рдЗрдВрдбреЗрдВрдЯреЗрд╢рди рд╣реИред

рдЯреИрдЧ рдФрд░ рдХрд╕реНрдЯрдо рдбреАрдПрд╕рдПрд▓ рдЬреЛрдбрд╝рдирд╛ рд╕рдорд╛рдзрд╛рди рдХреЗ рдмрдЬрд╛рдп рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реАрдорд╛ (рдпрд╛рдиреА рдПрдХ рд╣реИрдХ, рдЖрдИрдПрдордУ) рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╣реИред

рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдк https://github.com/cucumber/cucumber-js/issues/745 рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реБрдП рдЗрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

Scenario рдХреЛ defineStep $ рд╕реЗ рдмрдврд╝рд╛рдиреЗ рдФрд░ рдХреЙрд▓рдмреИрдХ рдореЗрдВ {Given, When, Then} рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреИрд╕реЗ?

рдЕрд░реНрдерд╛рдд:

import {defineSupportCode} from 'cucumber'

defineSupportCode(({ Scenario, Given, When, Then }) => {
  Given(...)
  When(...)
  Then(...)
  Scenario('<match scenario description>', ({ Given, When, Then}) => {
    Given('<take precedent of non-contexted>', ...)
    ...
  })
})

рдореИрдВ http://fitnesse.org/ рд╕реЗ рдмреАрдбреАрдбреА рд╕реАрдЦрддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдмреАрдбреАрдбреА рдХреЛ рдХрдХрдбрд╝реА рд╕рдореБрджрд╛рдп рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВред

рдкреЗрдЬрд┐рдВрдЧ @richardlawrence

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

рджреБрд░реНрд▓рдн рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЬрд╣рд╛рдВ рдХрд┐рд╕реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдмрд╛рдзреНрдп рд╕рдВрджрд░реНрдн рд╣реЛрддреЗ рд╣реИрдВ (рдбреАрдбреАрдбреА рд╢рд░реНрддреЛрдВ рдореЗрдВ), рдЖрдк рдмрд╕ рдЕрдкрдиреЗ рдХрдХрдбрд╝реА рд╕реВрдЯ рдХреЛ рдЙрд╕реА рд░реЗрдЦрд╛ рдХреЗ рд╕рд╛рде рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░реЗрдВрдЧреЗ, рдЬрд┐рд╕ рдкрд░ рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рдХреЛ рдЙрд╕ рд╕реАрдорд╛ рдХреЛ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдмрд╛рдзреНрдп рд╕рдВрджрд░реНрдн рдореЗрдВ рдЪрд░рдг def рд╡реИрд╢реНрд╡рд┐рдХ рд╣реЛрдЧрд╛ред

рдХрдХрдбрд╝реА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдФрд░ рд╕реАрдорд╛рдПрдБ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд▓реЗрдЦред рдпрд╣ рдЗрд╕ рдкреГрд╖реНрда рдкрд░ рдХреБрдЫ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдХреЛрдИ рдорд╣рд╛рди рд╕рдорд╛рдзрд╛рди рдкреНрд░рд╕реНрддреБрдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ @richardlawrence рдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЪрд░рдг рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╡рд░реНрдЧ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдХрдбрд╝реА рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред http://confessionsofanagilecoach.blogspot.com/2017/05/teaching-cucumbers-about-boundaries.html

рдЬреИрд╕рд╛ рдХрд┐ @leipert рдиреЗ рдХрд╣рд╛, рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдЦрд░рд╛рдм рд╣реИрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ CucumberJVM рджреБрдирд┐рдпрд╛ рдореЗрдВ рд╣рдо рдореЗрдВ рд╕реЗ рдХреЗрд╡рд▓ рдЖрдзреА рдХрд╣рд╛рдиреА рд╣реА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдХрдХрдбрд╝реА (рдЧреИрд░ рдЬреЗрд╡реАрдПрдо) рдПрдХ рд╕реБрд╡реНрдпрд╡рд╕реНрдерд┐рдд рд╡рд┐рд╢реНрд╡ рдЕрд╡рдзрд╛рд░рдгрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдкрд░рд┐рджреГрд╢реНрдп рдХреА рдЕрд╡рдзрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рд╕реНрдореГрддрд┐ рд╕реНрдерд╛рди рд╣реИред рдкрд░рд┐рджреГрд╢реНрдп рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдЗрд╕реЗ рдирд╖реНрдЯ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рд▓рдЧрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди... рдореБрдЭреЗ CucumberJVM рдореЗрдВ рдЗрд╕ рдкреИрдЯрд░реНрди рдХрд╛ рдЕрдЪреНрдЫрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИред рддреЛ рдЕрдЧрд░ рдХрдХрдбрд╝реА рд╣рдореЗрдВ рдХрджрдо рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдлреНрд▓реИрдЯ/рд╡реИрд╢реНрд╡рд┐рдХ рдирд╛рдорд╕реНрдерд╛рди рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рддреА рд╣реИ, рдФрд░ рд╡рд┐рд╢реНрд╡ рдкреИрдЯрд░реНрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдХрдбрд╝реАрдЬреЗрд╡реАрдПрдо рдХреЗ рдкрд╛рд╕ рдПрдХ рд╕реНрдкрд╖реНрдЯ рдбрд┐рдЬрд╛рдЗрди рдкреИрдЯрд░реНрди рдерд╛, рддреЛ рдореИрдВ рдереЛрдбрд╝рд╛ рдЦреБрд╢ рд╣реВрдВред рдЗрд╕ рдмрд┐рдВрджреБ рддрдХ, CucumberJVM + World pattern == рдЕрддреНрдпрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╕рдорд╛рдзрд╛рдиред рдЕрдм рддрдХ, рдореИрдВрдиреЗ рдЬреЛ рдХреБрдЫ рднреА рджреЗрдЦрд╛ рд╣реИ, рд╡рд╣ рдореБрдЭреЗ рдпрд╣ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИ рдХрд┐ рдХреМрди рд╕реЗ рдЪрд░рдг рдлрд╝рдВрдХреНрд╢рди рдХрд┐рд╕ рдлреАрдЪрд░ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдЪрд▓рддреЗ рд╣реИрдВред рдЕрдм рддрдХ рдореИрдВрдиреЗ рдЬреЛ рд╡рд┐рдХрд▓реНрдк рджреЗрдЦреЗ рд╣реИрдВ, рд╡реЗ рдореБрдЭреЗ рд╕рднреА рдкреНрд░рдпрд╛рд╕реЛрдВ/рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ рд▓рд┐рдП рдФрд░ рдЕрдзрд┐рдХ рдореВрд▓реНрдпрд╡рд╛рди рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВред рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреЗ рдХрдХрдбрд╝реА рдореЗрдВ рдмреЗрд╣рддрд░ рд╡рд┐рд╢реНрд╡ рд╕рдорд╛рдзрд╛рди рд╣реЛрддреЗ рд╣реИрдВред

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

рдореИрдВ рдХреЗрд╡рд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рддреНрдпрд╛рдкрди рд╕реЗ рд╕рдВрдмрдВрдз рдХреЛ рджреВрд░ рд░рдЦрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдкрде рдкрд░ рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдб рдЬреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реВрдВ, рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рднрд▓реЗ рд╣реА рдпрд╣ рдХреБрдЫ рдУрдкрди рд╕реЛрд░реНрд╕ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддрд╛ рд╣реЛред рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдмрдврд╝рдиреЗ рдкрд░ рдЗрд╕реЗ рдПрдХ рд╢реЙрдЯ рджреЗ рд╕рдХрддреЗ рд╣реИрдВред

рдореИрдВ рдЖрдкрдХрд╛ рд▓рдХреНрд╖реНрдп рд╕рдордЭрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕рдХреА рдЕрдиреБрд╢рдВрд╕рд╛ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ред
рдореИрдВ рд╕реНрдкрд╖реНрдЯ .feature рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд░рдЦрдиреЗ рдХреА рднреА рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддрд╛ рд╣реВрдВ, рдпрд╛ рддреЛ рдкреГрд╖реНрдарднреВрдорд┐ рд╡рд┐рд╡рд░рдг рдпрд╛ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рджрд┐рдП рдЧрдП рдЪрд░рдг рдХреЗ рд╕рд╛рде рдЬреЛ рдЗрд╕реЗ рд╕реНрдкрд╖реНрдЯ рдХрд░рддрд╛ рд╣реИред

рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ рдЖрдк рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓реЗрдВ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдПрдХ рдирдореВрдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рджреВрд╕рд░рд╛ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдПред
рдлрд┐рд░ рдЖрдк рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕реНрдЯреЗрдк рдлреЛрд▓реНрдбрд░ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

@robsonrosa @leipert рдореИрдВ рдЖрдкрдХреА рд░рд╛рдп рд╕рд╛рдЭрд╛ рдХрд░рддрд╛ рд╣реВрдВ
рдореВрд▓ рдкреЛрд╕реНрдЯ рдХреЗ рд▓рдЧрднрдЧ рджреЛ рд╕рд╛рд▓ рдмрд╛рдж ...
рдХреНрдпрд╛ рдЖрдкрдХреЛ рдЗрд╕рд╕реЗ рдХреЛрдИ рдкреНрд░рдЧрддрд┐ рдорд┐рд▓реА? рдХреЛрдИ рдЙрдкрд╛рдп?

@ cristianmercado19 рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдирд╣реАрдВред рдореИрдВ рдЕрдм рдХрдХрдбрд╝реА рдЬреЗрдПрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

Ups... рдореБрдЭреЗ рдлреАрдЪрд░ рдлрд╝рд╛рдЗрд▓ рд▓рд┐рдЦрдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдкрд╕рдВрдж рд╣реИ рдЬреЛ рд╕реНрдЯреЗрдк рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рд╣реИред
рдореИрдВрдиреЗ рдЙрд╕реА рд▓рдХреНрд╖реНрдп рдХреЛ _рдореЛрдЪрд╛_ рдХреЗ рд╕рд╛рде рд╣рд╛рд╕рд┐рд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕рд╕реЗ рдЦреБрд╢ рдирд╣реАрдВ рд╣реВрдВред
рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЛрдИ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк рд╣реИ рдЬреЛ рдореЗрд░реЗ рд▓рдХреНрд╖реНрдп рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рд╕реЗ рдЬреНрдпрд╛рджрд╛ рдЦреБрд╢реА рд╣реЛрдЧреАред
рдЖрдкрдХреА рдорджрдж @leipert рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░реЗрдВред

рдЗрд╕ рдереНрд░реЗрдб рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд▓реЙрдХ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдХреЛрдИ рдЧрддрд┐рд╡рд┐рдзрд┐ рдирд╣реАрдВ рд╣реБрдИ рд╣реИред рдХреГрдкрдпрд╛ рд╕рдВрдмрдВрдзрд┐рдд рдмрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рдЦреЛрд▓реЗрдВред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

dblooman picture dblooman  ┬╖  7рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

edgarechm picture edgarechm  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jechazelle picture jechazelle  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

hdorgeval picture hdorgeval  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

bmsoko picture bmsoko  ┬╖  7рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ