ื™ื™ืฉื•ื, ืงื ื” ืžื™ื“ื”: ื ื™ืกื™ื•ืŸ ื‘ืฉื™ืžื•ืฉ ื‘ื‘ื“ื™ืงื•ืช ืื•ื˜ื•ืžื˜ื™ื•ืช ื‘-VTB

ื”ื—ื˜ื™ื‘ื” ืฉืœื ื• ื™ื•ืฆืจืช ืฆื™ื ื•ืจื•ืช ืื•ื˜ื•ืžื˜ื™ื™ื ืœื—ืœื•ื˜ื™ืŸ ืœื”ืฉืงืช ื’ืจืกืื•ืช ื—ื“ืฉื•ืช ืฉืœ ื™ื™ืฉื•ืžื™ื ืœืชื•ืš ืกื‘ื™ื‘ืช ื”ื™ื™ืฆื•ืจ. ื›ืžื•ื‘ืŸ, ื–ื” ื“ื•ืจืฉ ื‘ื“ื™ืงื•ืช ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช ืื•ื˜ื•ืžื˜ื™ื•ืช. ืžืชื—ืช ืœื—ื™ืชื•ืš ื™ืฉ ืกื™ืคื•ืจ ืขืœ ืื™ืš, ื”ื—ืœ ืžื‘ื“ื™ืงืช ื—ื•ื˜ ื‘ื•ื“ื“ ื‘ืžื›ื•ื ื” ืžืงื•ืžื™ืช, ื”ื’ืขื ื• ืœื ืงื•ื“ื” ืฉืœ ื‘ื“ื™ืงื” ืื•ื˜ื•ืžื˜ื™ืช ืžืจื•ื‘ื” ื—ื•ื˜ื™ื ื”ืคื•ืขืœืช ืขืœ Selenoid ื‘ืฆื ืจืช ื”ื‘ื ื™ื™ื” ืขื ื“ื•ื— Allure ื‘ื“ืคื™ GitLab ื•ื‘ืกื•ืคื• ืฉืœ ื“ื‘ืจ ืงื™ื‘ืœื ื• ื›ืœื™ ืื•ื˜ื•ืžืฆื™ื” ืžื’ื ื™ื‘ ืฉืื ืฉื™ื ืขืชื™ื“ื™ื™ื ื™ื•ื›ืœื• ืœื”ืฉืชืžืฉ ื‘ืฆื•ื•ืชื™ื.

ื™ื™ืฉื•ื, ืงื ื” ืžื™ื“ื”: ื ื™ืกื™ื•ืŸ ื‘ืฉื™ืžื•ืฉ ื‘ื‘ื“ื™ืงื•ืช ืื•ื˜ื•ืžื˜ื™ื•ืช ื‘-VTB

ืžืื™ืคื” ื”ืชื—ืœื ื•?

ื›ื“ื™ ืœื™ื™ืฉื ื‘ื“ื™ืงื•ืช ืื•ื˜ื•ืžื˜ื™ื•ืช ื•ืœืฉืœื‘ ืื•ืชืŸ ื‘ืฆื ืจืช, ื”ื™ื™ื ื• ืฆืจื™ื›ื™ื ืžืกื’ืจืช ืื•ื˜ื•ืžืฆื™ื” ืฉื ื™ืชืŸ ืœืฉื ื•ืช ื‘ื’ืžื™ืฉื•ืช ื›ื“ื™ ืœื”ืชืื™ื ืœืฆืจื›ื™ื ืฉืœื ื•. ื‘ืื•ืคืŸ ืื™ื“ื™ืืœื™, ืจืฆื™ืชื™ ืœืงื‘ืœ ืชืงืŸ ื™ื—ื™ื“ ืขื‘ื•ืจ ืžื ื•ืข ื”ื‘ื“ื™ืงื” ื”ืื•ื˜ื•ืžื˜ื™ืช, ื”ืžื•ืชืื ืœื”ื˜ืžืขืช ื‘ื“ื™ืงื•ืช ืื•ื˜ื•ืžื˜ื™ื•ืช ื‘ืฆื™ื ื•ืจ. ืœื™ื™ืฉื•ื ื‘ื—ืจื ื• ื‘ื˜ื›ื ื•ืœื•ื’ื™ื•ืช ื”ื‘ืื•ืช:

  • ื’'ืื•ื•ื”,
  • ืžื™ื™ื‘ืŸ,
  • ืกึตืœึถื ึดื™ื•ึผื,
  • ืžืœืคืคื•ืŸ+ื’'ื•ื ื™ื˜ 4,
  • ืงึถืกึถื,
  • GitLab.

ื™ื™ืฉื•ื, ืงื ื” ืžื™ื“ื”: ื ื™ืกื™ื•ืŸ ื‘ืฉื™ืžื•ืฉ ื‘ื‘ื“ื™ืงื•ืช ืื•ื˜ื•ืžื˜ื™ื•ืช ื‘-VTB

ืœืžื” ื“ื•ื•ืงื ื”ืกื˜ ื”ื–ื”? Java ื”ื™ื ืื—ืช ื”ืฉืคื•ืช ื”ืคื•ืคื•ืœืจื™ื•ืช ื‘ื™ื•ืชืจ ืœื‘ื“ื™ืงื•ืช ืื•ื˜ื•ืžื˜ื™ื•ืช, ื•ื›ืœ ื—ื‘ืจื™ ื”ืฆื•ื•ืช ื“ื•ื‘ืจื™ื ืื•ืชื”. ืกืœื ื™ื•ื ื”ื•ื ื”ืคืชืจื•ืŸ ื”ื‘ืจื•ืจ. ืžืœืคืคื•ืŸ, ื‘ื™ืŸ ื”ื™ืชืจ, ื”ื™ื” ืืžื•ืจ ืœื”ื’ื‘ื™ืจ ืืช ื”ืืžื•ืŸ ื‘ืชื•ืฆืื•ืช ืฉืœ ื‘ื“ื™ืงื•ืช ืื•ื˜ื•ืžื˜ื™ื•ืช ืžืฆื“ ืžื—ืœืงื•ืช ื”ืขื•ืกืงื•ืช ื‘ื‘ื“ื™ืงื•ืช ื™ื“ื ื™ื•ืช.

ื‘ื“ื™ืงื•ืช ืขื ื”ื‘ืจื’ื” ื‘ื•ื“ื“ืช

ื›ื“ื™ ืœื ืœื”ืžืฆื™ื ืืช ื”ื’ืœื’ืœ ืžื—ื“ืฉ ืœืงื—ื ื• ืคื™ืชื•ื—ื™ื ืžืžืื’ืจื™ื ืฉื•ื ื™ื ื‘-GitHub ื›ื‘ืกื™ืก ืœืžืกื’ืจืช ื•ื”ืชืืžื ื• ืื•ืชื ืœืขืฆืžื ื•. ื™ืฆืจื ื• ืžืื’ืจ ืขื‘ื•ืจ ื”ืกืคืจื™ื™ื” ื”ืจืืฉื™ืช ืขื ื”ืœื™ื‘ื” ืฉืœ ืžืกื’ืจืช ื”ื‘ื“ื™ืงื” ื”ืื•ื˜ื•ืžื˜ื™ืช ื•ืžืื’ืจ ืขื ื“ื•ื’ืžื” ืฉืœ ื–ื”ื‘ ืฉืœ ื”ื˜ืžืขืช ื‘ื“ื™ืงื•ืช ืื•ื˜ื•ืžื˜ื™ื•ืช ื‘ืœื™ื‘ื” ืฉืœื ื•. ื›ืœ ืฆื•ื•ืช ื”ื™ื” ืฆืจื™ืš ืœืงื—ืช ืืช ืชืžื•ื ืช ื”ื–ื”ื‘ ื•ืœืคืชื— ื‘ื” ืžื‘ื—ื ื™ื, ืœื”ืชืื™ื ืื•ืชื” ืœืคืจื•ื™ืงื˜ ืฉืœื•. ืคืจืกื ื• ืืช ื–ื” ืœื‘ื ืง GitLab-CI, ืฉื‘ื• ื”ื’ื“ืจื ื•:

  • ืจื™ืฆื•ืช ื™ื•ืžื™ื•ืช ืฉืœ ื›ืœ ื”ื‘ื“ื™ืงื•ืช ื”ืื•ื˜ื•ืžื˜ื™ื•ืช ื”ื›ืชื•ื‘ื•ืช ืขื‘ื•ืจ ื›ืœ ืคืจื•ื™ืงื˜;
  • ื”ืฉืงื•ืช ื‘ืฆื ืจืช ื”ื‘ื ื™ื™ื”.

ื‘ื”ืชื—ืœื” ื”ื™ื• ืžืขื˜ ื‘ื“ื™ืงื•ืช, ื•ื”ื ื‘ื•ืฆืขื• ื‘ื–ืจื ืื—ื“. ืจื™ืฆื” ืขื ืคืชื™ืœ ื‘ื•ื“ื“ ืขืœ ืจืฅ Windows GitLab ื”ืชืื™ืžื” ืœื ื• ืœืžื“ื™: ื”ื‘ื“ื™ืงื•ืช ื”ืขืžื™ืกื• ืืช ืกืคืกืœ ื”ื‘ื“ื™ืงื” ื‘ืงืœื™ืœื•ืช ืจื‘ื” ื•ืœื ื”ืฉืชืžืฉื• ื›ืžืขื˜ ื‘ืžืฉืื‘ื™ื.

ืขื ื”ื–ืžืŸ, ืžืกืคืจ ื”ื‘ื“ื™ืงื•ืช ื”ืื•ื˜ื•ืžื˜ื™ื•ืช ื’ื“ืœ ื™ื•ืชืจ ื•ื™ื•ืชืจ, ื•ื—ืฉื‘ื ื• ืœื”ืคืขื™ืœ ืื•ืชืŸ ื‘ืžืงื‘ื™ืœ, ื›ืืฉืจ ืจื™ืฆื” ืžืœืื” ื”ื—ืœื” ืœืืจื•ืš ื›ืฉืœื•ืฉ ืฉืขื•ืช. ื‘ืขื™ื•ืช ื ื•ืกืคื•ืช ื”ื•ืคื™ืขื• ื’ื:

  • ืœื ื™ื›ื•ืœื ื• ืœื•ื•ื“ื ืฉื”ื‘ื“ื™ืงื•ืช ื”ื™ื• ื™ืฆื™ื‘ื•ืช;
  • ื‘ื“ื™ืงื•ืช ืฉื”ื•ืคืขืœื• ืžืกืคืจ ืคืขืžื™ื ื‘ืจืฆื™ืคื•ืช ื‘ืžื›ื•ื ื” ื”ืžืงื•ืžื™ืช ืงืจืกื• ืœืคืขืžื™ื ื‘-CI.

ื“ื•ื’ืžื” ืœื”ื’ื“ืจืช ื‘ื“ื™ืงื•ืช ืื•ื˜ื•ืžื˜ื™ื•ืช:

<plugins>
	
<plugin>
    	
<groupId>org.apache.maven.plugins</groupId>
    	
<artifactId>maven-surefire-plugin</artifactId>
    	
<version>2.20</version>
    	
<configuration>
        	
<skipTests>${skipTests}</skipTests>
        	
<testFailureIgnore>false</testFailureIgnore>
        	
<argLine>
            	
-javaagent:"${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar"
            	
-Dcucumber.options="--tags ${TAGS} --plugin io.qameta.allure.cucumber2jvm.AllureCucumber2Jvm --plugin pretty"
        	
</argLine>
    	
</configuration>
	
    <dependencies>
        	
<dependency>
            	
<groupId>org.aspectj</groupId>
            	
<artifactId>aspectjweaver</artifactId>
            	
<version>${aspectj.version}</version>
        	
</dependency>
    	
</dependencies>
	
</plugin>
	
<plugin>
    	
<groupId>io.qameta.allure</groupId>
    	
<artifactId>allure-maven</artifactId>
    	
<version>2.9</version>
	
</plugin>
</plugins>

 ื™ื™ืฉื•ื, ืงื ื” ืžื™ื“ื”: ื ื™ืกื™ื•ืŸ ื‘ืฉื™ืžื•ืฉ ื‘ื‘ื“ื™ืงื•ืช ืื•ื˜ื•ืžื˜ื™ื•ืช ื‘-VTB
ื“ื•ื’ืžื” ืœื“ื•ื— ืคื™ืชื•ื™

 ื™ื™ืฉื•ื, ืงื ื” ืžื™ื“ื”: ื ื™ืกื™ื•ืŸ ื‘ืฉื™ืžื•ืฉ ื‘ื‘ื“ื™ืงื•ืช ืื•ื˜ื•ืžื˜ื™ื•ืช ื‘-VTB
ืขื•ืžืก ืจืฅ ื‘ืžื”ืœืš ื‘ื“ื™ืงื•ืช (8 ืœื™ื‘ื•ืช, 8 GB RAM, ื—ื•ื˜ ืื—ื“)
 
ื”ื™ืชืจื•ื ื•ืช ืฉืœ ืžื‘ื—ื ื™ื ืขื ื—ื•ื˜ ื™ื—ื™ื“:

  • ืงืœ ืœื”ื’ื“ื™ืจ ื•ืœื”ืคืขื™ืœ;
  • ื”ื”ืฉืงื•ืช ื‘-CI ื›ืžืขื˜ ื•ืื™ื ืŸ ืฉื•ื ื•ืช ืžื”ืฉืงื•ืช ืžืงื•ืžื™ื•ืช;
  • ื‘ื“ื™ืงื•ืช ืื™ื ืŸ ืžืฉืคื™ืขื•ืช ืื—ืช ืขืœ ื”ืฉื ื™ื™ื”;
  • ื“ืจื™ืฉื•ืช ืžื™ื ื™ืžื•ื ืœืžืฉืื‘ื™ ืจืฆื™ื.

ื—ืกืจื•ื ื•ืช ืฉืœ ื‘ื“ื™ืงื•ืช ื—ื•ื˜ ื™ื—ื™ื“:

  • ืœื•ืงื— ื”ืจื‘ื” ืžืื•ื“ ื–ืžืŸ ืœื”ืฉืœื™ื;
  • ื™ื™ืฆื•ื‘ ืืจื•ืš ืฉืœ ื‘ื“ื™ืงื•ืช;
  • ืฉื™ืžื•ืฉ ืœื ื™ืขื™ืœ ื‘ืžืฉืื‘ื™ ื”ืจืฆื™ื, ื ื™ืฆื•ืœ ื ืžื•ืš ื‘ืžื™ื•ื—ื“.

ื‘ื“ื™ืงื•ืช ืขืœ ืžื–ืœื’ื•ืช JVM

ืžื›ื™ื•ื•ืŸ ืฉืœื ื”ืงืคื“ื ื• ืขืœ ืงื•ื“ ื‘ื˜ื•ื— ื‘ืฉืจืฉื•ืจ ื‘ืขืช ื”ื˜ืžืขืช ืžืกื’ืจืช ื”ื‘ืกื™ืก, ื”ื“ืจืš ื”ื‘ืจื•ืจื” ื‘ื™ื•ืชืจ ืœืจื•ืฅ ื‘ืžืงื‘ื™ืœ ื”ื™ื™ืชื” cucumber-jvm-parallel-plugin ืขื‘ื•ืจ ืžื™ื™ื‘ืŸ. ืงืœ ืœื”ื’ื“ื™ืจ ืืช ื”ืชื•ืกืฃ, ืืš ืœืฆื•ืจืš ืคืขื•ืœื” ืžืงื‘ื™ืœื” ื ื›ื•ื ื”, ื™ืฉ ืœื”ืคืขื™ืœ ื‘ื“ื™ืงื•ืช ืื•ื˜ื•ืžื˜ื™ื•ืช ื‘ื“ืคื“ืคื ื™ื ื ืคืจื“ื™ื. ืื™ืŸ ืžื” ืœืขืฉื•ืช, ื”ื™ื™ืชื™ ืฆืจื™ืš ืœื”ืฉืชืžืฉ ื‘ืกืœื ื•ืื™ื“.

ืฉืจืช ื”ืกืœื ื•ืื™ื“ ื”ื•ืฉืง ื‘ืžื›ื•ื ื” ื‘ืขืœืช 32 ืœื™ื‘ื•ืช ื•-24 ื’'ื™ื’ื”-ื‘ื™ื™ื˜ ืฉืœ ื–ื™ื›ืจื•ืŸ RAM. ื”ืžื’ื‘ืœื” ื ืงื‘ืขื” ืœ-48 ื“ืคื“ืคื ื™ื - 1,5 ืฉืจืฉื•ืจื™ื ืœื›ืœ ืœื™ื‘ื” ื•ื›-400 ืžื’ื”-ื‘ื™ื™ื˜ ืฉืœ ื–ื™ื›ืจื•ืŸ RAM. ื›ืชื•ืฆืื” ืžื›ืš, ื–ืžืŸ ื”ื‘ื“ื™ืงื” ืฆื•ืžืฆื ืžืฉืœื•ืฉ ืฉืขื•ืช ืœ-40 ื“ืงื•ืช. ื”ืืฆืช ื”ืจื™ืฆื•ืช ืขื–ืจื” ืœืคืชื•ืจ ืืช ื‘ืขื™ื™ืช ื”ื™ื™ืฆื•ื‘: ื›ืขืช ื ื•ื›ืœ ืœื”ืจื™ืฅ ื‘ืžื”ื™ืจื•ืช ื‘ื“ื™ืงื•ืช ืื•ื˜ื•ืžื˜ื™ื•ืช ื—ื“ืฉื•ืช 20-30 ืคืขืžื™ื ืขื“ ืฉื”ื™ื™ื ื• ื‘ื˜ื•ื—ื™ื ืฉื”ืŸ ืคื•ืขืœื•ืช ื‘ืฆื•ืจื” ืžื”ื™ืžื ื”.
ื”ื—ื™ืกืจื•ืŸ ื”ืจืืฉื•ืŸ ืฉืœ ื”ืคืชืจื•ืŸ ื”ื™ื” ื ื™ืฆื•ืœ ื’ื‘ื•ื” ืฉืœ ืžืฉืื‘ื™ ืจืื ืจ ืขื ืžืกืคืจ ืงื˜ืŸ ืฉืœ ืคืชื™ืœื™ื ืžืงื‘ื™ืœื™ื: ืขืœ 4 ืœื™ื‘ื•ืช ื•-8 GB ืฉืœ ื–ื™ื›ืจื•ืŸ RAM, ื”ื‘ื“ื™ืงื•ืช ืจืฆื• ื‘ื™ืฆื™ื‘ื•ืช ื‘ืœื ื™ื•ืชืจ ืž-6 ืคืชื™ืœื™ื. ื”ื—ื™ืกืจื•ืŸ ื”ืฉื ื™: ื”ืชื•ืกืฃ ืžื™ื™ืฆืจ ื›ื™ืชื•ืช ืจืฆื™ื ืœื›ืœ ืชืจื—ื™ืฉ, ืœื ืžืฉื ื” ื›ืžื” ืžื”ื ื™ื•ืคืขืœื•.

ื—ืฉื•ื‘! ืืœ ืชืขื‘ื™ืจ ืžืฉืชื ื” ืขื ืชื’ื™ื ืœ argLine, ืœืžืฉืœ, ื›ืš:

<argLine>-Dcucumber.options="--tags ${TAGS} --plugin io.qameta.allure.cucumber2jvm.AllureCucumber2Jvm --plugin pretty"</argLine>
โ€ฆ
Mvn โ€“DTAGS="@smoke"

ืื ืชืขื‘ื™ืจื• ืืช ื”ืชื’ ื‘ืฆื•ืจื” ื–ื•, ื”ืชื•ืกืฃ ื™ืคื™ืง ืจืฆื™ื ืœื›ืœ ื”ื‘ื“ื™ืงื•ืช, ื›ืœื•ืžืจ ื™ื ืกื” ืœื”ืจื™ืฅ ืืช ื›ืœ ื”ื‘ื“ื™ืงื•ืช, ื™ื“ืœื’ ืขืœื™ื”ืŸ ืžื™ื“ ืœืื—ืจ ื”ื”ืฉืงื” ื•ื™ื™ืฆื•ืจ ืžื–ืœื’ื•ืช ืจื‘ื™ื ืฉืœ JVM.

ื ื›ื•ืŸ ืœื–ืจื•ืง ืœืชื•ื›ื• ืžืฉืชื ื” ืขื ืชื’ ืชื™ื•ื’ื™ื ื‘ื”ื’ื“ืจื•ืช ื”ืคืœืื’ื™ืŸ, ืจืื” ื“ื•ื’ืžื” ืœืžื˜ื”. ืœืฉื™ื˜ื•ืช ืื—ืจื•ืช ืฉื‘ื“ืงื ื• ื™ืฉ ื‘ืขื™ื•ืช ื‘ื—ื™ื‘ื•ืจ ื”ืชื•ืกืฃ Allure.

ื“ื•ื’ืžื” ืœื–ืžืŸ ืจื™ืฆื” ืขื‘ื•ืจ 6 ื‘ื“ื™ืงื•ืช ืงืฆืจื•ืช ืขื ื”ื’ื“ืจื•ืช ืฉื’ื•ื™ื•ืช:

[INFO] Total time: 03:17 min

ื“ื•ื’ืžื” ืœื–ืžืŸ ืจื™ืฆืช ื‘ื“ื™ืงื” ืื ืืชื” ืžืขื‘ื™ืจ ื™ืฉื™ืจื•ืช ืืช ื”ืชื’ ืืœ mvn... โ€“Dcucumber.options:

[INFO] Total time: 44.467 s

ื“ื•ื’ืžื” ืœื”ื’ื“ืจืช ื‘ื“ื™ืงื•ืช ืื•ื˜ื•ืžื˜ื™ื•ืช:

<profiles>
	
<profile>
    	
<id>parallel</id>
    	
<build>
        	
<plugins>
            	
<plugin>
                	
<groupId>com.github.temyers</groupId>
                	
<artifactId>cucumber-jvm-parallel-plugin</artifactId>
                	
<version>5.0.0</version>
                	
<executions>
                    	
<execution>
                        	
<id>generateRunners</id>
                        	
<phase>generate-test-sources</phase>
                        	
<goals>
                            	
<goal>generateRunners</goal>
                        	
</goals>
                        	
<configuration>
                	
            <tags>
                            	
<tag>${TAGS}</tag>
                            	
</tags>
                            	
<glue>
                                	
<package>stepdefs</package>
                            	
</glue>
                        	
</configuration>
     	
               </execution>
                	
</executions>
    	
        </plugin>
            	
<plugin>
                	
<groupId>org.apache.maven.plugins</groupId>
                	
<artifactId>maven-surefire-plugin</artifactId>
        	
        <version>2.21.0</version>
                	
<configuration>
                    	
<forkCount>12</forkCount>
                    	
<reuseForks>false</reuseForks>
                    	
<includes>**/*IT.class</includes>
                   	
 <testFailureIgnore>false</testFailureIgnore>
                    	
<!--suppress UnresolvedMavenProperty -->
                    	
<argLine>
  	
 -javaagent:"${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar" -Dcucumber.options="--plugin io.qameta.allure.cucumber2jvm.AllureCucumber2Jvm TagPFAllureReporter --plugin pretty"
                    	
</argLine>
                	
</configuration>
                	
<dependencies>
                    	
<dependency>
                        	
<groupId>org.aspectj</groupId>
                        	
<artifactId>aspectjweaver</artifactId>
                        	
<version>${aspectj.version}</version>
                 	
   </dependency>
                	
</dependencies>
         	
   </plugin>
        	
</plugins>
    	
</build>
	
</profile>

ื™ื™ืฉื•ื, ืงื ื” ืžื™ื“ื”: ื ื™ืกื™ื•ืŸ ื‘ืฉื™ืžื•ืฉ ื‘ื‘ื“ื™ืงื•ืช ืื•ื˜ื•ืžื˜ื™ื•ืช ื‘-VTB
ื“ื•ื’ืžื” ืœื“ื•ื— Allure (ื”ื‘ื“ื™ืงื” ื”ื›ื™ ืœื ื™ืฆื™ื‘ื”, 4 ืฉื™ื“ื•ืจื™ื ื—ื•ื–ืจื™ื)

ื™ื™ืฉื•ื, ืงื ื” ืžื™ื“ื”: ื ื™ืกื™ื•ืŸ ื‘ืฉื™ืžื•ืฉ ื‘ื‘ื“ื™ืงื•ืช ืื•ื˜ื•ืžื˜ื™ื•ืช ื‘-VTBืขื•ืžืก ืจืฅ ื‘ืžื”ืœืš ื‘ื“ื™ืงื•ืช (8 ืœื™ื‘ื•ืช, 8 GB RAM, 12 ืคืชื™ืœื™ื)
 
ื™ืชืจื•ื ื•ืช:

  • ื”ื’ื“ืจื” ืงืœื” - ืืชื” ืจืง ืฆืจื™ืš ืœื”ื•ืกื™ืฃ ืชื•ืกืฃ;
  • ื”ื™ื›ื•ืœืช ืœื‘ืฆืข ื‘ื• ื–ืžื ื™ืช ืžืกืคืจ ืจื‘ ืฉืœ ื‘ื“ื™ืงื•ืช;
  • ื”ืืฆืช ื™ื™ืฆื•ื‘ ื”ื‘ื“ื™ืงื” ื”ื•ื“ื•ืช ืœืฉืœื‘ 1. 

ื—ืกืจื•ื ื•ืช:

  • ื ื“ืจืฉื•ืช ืžืกืคืจ ืžืขืจื›ื•ืช ื”ืคืขืœื”/ืžื›ื•ืœื•ืช;
  • ืฆืจื™ื›ืช ืžืฉืื‘ื™ื ื’ื‘ื•ื”ื” ืขื‘ื•ืจ ื›ืœ ืžื–ืœื’;
  • ื”ืชื•ืกืฃ ืžื™ื•ืฉืŸ ื•ืื™ื ื• ื ืชืžืš ืขื•ื“. 

ืื™ืš ืœื”ืชื’ื‘ืจ ืขืœ ื—ื•ืกืจ ื™ืฆื™ื‘ื•ืช 

ืกืคืกืœื™ ื‘ื“ื™ืงื” ืื™ื ื ืื™ื“ื™ืืœื™ื™ื, ื‘ื“ื™ื•ืง ื›ืžื• ื”ื‘ื“ื™ืงื•ืช ื”ืื•ื˜ื•ืžื˜ื™ื•ืช ืขืฆืžืŸ. ืื™ืŸ ื–ื” ืžืคืชื™ืข ืฉื™ืฉ ืœื ื• ืžืกืคืจ ืžื‘ื—ื ื™ื ืคื’ื•ืžื™ื. ื‘ื ืœื”ืฆื™ืœ ืชื•ืกืฃ maven surefire, ืืฉืจ ืžื—ื•ืฅ ืœืงื•ืคืกื” ืชื•ืžืš ื‘ื”ืคืขืœื” ืžื—ื“ืฉ ืฉืœ ื‘ื“ื™ืงื•ืช ืฉื ื›ืฉืœื•. ืขืœื™ืš ืœืขื“ื›ืŸ ืืช ื’ืจืกืช ื”ืคืœืื’ื™ืŸ ืœ-2.21 ืœืคื—ื•ืช ื•ืœื›ืชื•ื‘ ืฉื•ืจื” ืื—ืช ืขื ืžืกืคืจ ื”ื”ืชื—ืœื•ืช ืžื—ื“ืฉ ื‘ืงื•ื‘ืฅ ื”-pom ืื• ืœื”ืขื‘ื™ืจ ืื•ืชื” ื›ืืจื’ื•ืžื ื˜ ืœ-Maven.

ื“ื•ื’ืžื” ืœื”ื’ื“ืจืช ื‘ื“ื™ืงื•ืช ืื•ื˜ื•ืžื˜ื™ื•ืช:

   	
<plugin>
        	
<groupId>org.apache.maven.plugins</groupId>
  	
      <artifactId>maven-surefire-plugin</artifactId>
        	
<version>2.21.0</version>
        	
<configuration>
           	
โ€ฆ.
            	
<rerunFailingTestsCount>2</rerunFailingTestsCount>
            	
โ€ฆ.
            	
</configuration>
</plugin>

ืื• ื‘ื”ืคืขืœื”: mvn โ€ฆ -Dsurefire.rerunFailingTestsCount=2 โ€ฆ
ื›ืืคืฉืจื•ืช, ื”ื’ื“ืจ ืืคืฉืจื•ื™ื•ืช ืฉืœ Maven ืขื‘ื•ืจ ืกืงืจื™ืคื˜ PowerShell (PS1):

  
Set-Item Env:MAVEN_OPTS "-Dfile.encoding=UTF-8 -Dsurefire.rerunFailingTestsCount=2"

ื™ืชืจื•ื ื•ืช:

  • ืื™ืŸ ืฆื•ืจืš ืœื‘ื–ื‘ื– ื–ืžืŸ ื‘ื ื™ืชื•ื— ืžื‘ื—ืŸ ืœื ื™ืฆื™ื‘ ื›ืืฉืจ ื”ื•ื ืงื•ืจืก;
  • ื ื™ืชืŸ ืœื”ืงืœ ืขืœ ื‘ืขื™ื•ืช ื™ืฆื™ื‘ื•ืช ืกืคืกืœ ื”ื‘ื“ื™ืงื”.

ื—ืกืจื•ื ื•ืช:

  • ื ื™ืชืŸ ืœืคืกืคืก ืคื’ืžื™ื ืฆืคื™ื;
  • ื–ืžืŸ ื”ืจื™ืฆื” ื’ื“ืœ.

ื‘ื“ื™ืงื•ืช ืžืงื‘ื™ืœื•ืช ืขื ืกืคืจื™ื™ืช ื”ืžืœืคืคื•ืŸ 4

ืžืกืคืจ ื”ืžื‘ื—ื ื™ื ื’ื“ืœ ืžื“ื™ ื™ื•ื. ืฉื•ื‘ ื—ืฉื‘ื ื• ืœื”ืื™ืฅ ืืช ื”ืจื™ืฆื•ืช. ื‘ื ื•ืกืฃ, ืจืฆื™ืชื™ ืœืฉืœื‘ ื›ืžื” ืฉื™ื•ืชืจ ื‘ื“ื™ืงื•ืช ื‘ืฆื™ื ื•ืจ ื”ืจื›ื‘ืช ื”ืืคืœื™ืงืฆื™ื”. ื”ื’ื•ืจื ื”ืงืจื™ื˜ื™ ื”ื™ื” ืฉื“ื•ืจ ื”ืจืฆื™ื ืœืงื— ื™ื•ืชืจ ืžื“ื™ ื–ืžืŸ ื›ืืฉืจ ืจื™ืฆื” ื‘ืžืงื‘ื™ืœ ื‘ืืžืฆืขื•ืช ืชื•ืกืฃ Maven.

ื‘ืื•ืชื• ื–ืžืŸ, Cucumber 4 ื›ื‘ืจ ืฉื•ื—ืจืจ, ืื– ื”ื—ืœื˜ื ื• ืœืฉื›ืชื‘ ืืช ื”ืœื™ื‘ื” ืœื’ืจืกื” ื–ื•. ื‘ื”ืขืจื•ืช ื”ืฉื—ืจื•ืจ ื”ื•ื‘ื˜ื— ืœื ื• ื”ืฉืงื” ืžืงื‘ื™ืœื” ื‘ืจืžืช ื”ืฉืจืฉื•ืจ. ืชื™ืื•ืจื˜ื™ืช ื–ื” ืฆืจื™ืš ืœื”ื™ื•ืช:

  • ืœื”ืื™ืฅ ืžืฉืžืขื•ืชื™ืช ืืช ื”ืคืขืœืช ื”ื‘ื“ื™ืงื•ืช ื”ืื•ื˜ื•ืžื˜ื™ื•ืช ืขืœ ื™ื“ื™ ื”ื’ื“ืœืช ืžืกืคืจ ื”ืฉืจืฉื•ืจื™ื;
  • ืœื—ืกืœ ืืช ืื•ื‘ื“ืŸ ื”ื–ืžืŸ ื‘ื™ืฆื™ืจืช ืจืฆื™ื ืขื‘ื•ืจ ื›ืœ ื‘ื“ื™ืงื” ืื•ื˜ื•ืžื˜ื™ืช.

ืื•ืคื˜ื™ืžื™ื–ืฆื™ื” ืฉืœ ื”ืžืกื’ืจืช ืขื‘ื•ืจ ื‘ื“ื™ืงื•ืช ืื•ื˜ื•ืžื˜ื™ื•ืช ืขื ืจื™ื‘ื•ื™ ื”ืœื™ื›ื•ืช ื”ืชื‘ืจืจื” ื›ืœ ื›ืš ืœื ืงืฉื”. Cucumber 4 ืžืจื™ืฅ ื›ืœ ื‘ื“ื™ืงื” ื‘ื ืคืจื“ ืขืœ ืฉืจืฉื•ืจ ื™ื™ืขื•ื“ื™ ืžืชื—ื™ืœืชื• ื•ืขื“ ืกื•ืคื•, ื›ืš ืฉื›ืžื” ื“ื‘ืจื™ื ืกื˜ื˜ื™ื™ื ื ืคื•ืฆื™ื ืคืฉื•ื˜ ื”ื•ืžืจื• ืœืžืฉืชื ื™ ThreadLocal. 
ื”ื“ื‘ืจ ื”ืขื™ืงืจื™ ื‘ืขืช ื”ืžืจื” ื‘ืืžืฆืขื•ืช ื›ืœื™ Refactoring ืฉืœ Idea ื”ื•ื ืœื‘ื“ื•ืง ืืช ื”ืžืงื•ืžื•ืช ืฉื‘ื”ื ื”ืžืฉืชื ื” ื”ื•ืฉื•ื•ื” (ืœื“ื•ื’ืžื”, ื‘ื“ื™ืงืช null). ื‘ื ื•ืกืฃ, ืขืœื™ืš ืœื”ื•ืกื™ืฃ ืืช ื”ืชื•ืกืฃ Allure ืœื”ืขืจืช ื”ื›ื™ืชื” Junit Runner.

ื“ื•ื’ืžื” ืœื”ื’ื“ืจืช ื‘ื“ื™ืงื•ืช ืื•ื˜ื•ืžื˜ื™ื•ืช:

 
<profile>
	
<id>parallel</id>
	
<build>
    	
<plugins>
        	
<plugin>
            	
<groupId>org.apache.maven.plugins</groupId>
 	
           <artifactId>maven-surefire-plugin</artifactId>
            	
<version>3.0.0-M3</version>
   	
         <configuration>
                	
<useFile>false</useFile>
                	
<testFailureIgnore>false</testFailureIgnore>
        	
        <parallel>methods</parallel>
                	
<threadCount>6</threadCount>
                	
<perCoreThreadCount>true</perCoreThreadCount>
                	
<argLine>
                    	
-javaagent:"${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar"
                	
</argLine>
            	
</configuration>
            	
<dependencies>
                	
<dependency>
                    	
<groupId>org.aspectj</groupId>
   	
                 <artifactId>aspectjweaver</artifactId>
                    	
<version>${aspectj.version}</version>
                	
</dependency>
            	
</dependencies>
        	
</plugin>
    	
</plugins>
	
</build>
</profile>

ื™ื™ืฉื•ื, ืงื ื” ืžื™ื“ื”: ื ื™ืกื™ื•ืŸ ื‘ืฉื™ืžื•ืฉ ื‘ื‘ื“ื™ืงื•ืช ืื•ื˜ื•ืžื˜ื™ื•ืช ื‘-VTBื“ื•ื’ืžื” ืœื“ื•ื— Allure (ื”ื‘ื“ื™ืงื” ื”ื›ื™ ืœื ื™ืฆื™ื‘ื”, 5 ืฉื™ื“ื•ืจื™ื ื—ื•ื–ืจื™ื)

ื™ื™ืฉื•ื, ืงื ื” ืžื™ื“ื”: ื ื™ืกื™ื•ืŸ ื‘ืฉื™ืžื•ืฉ ื‘ื‘ื“ื™ืงื•ืช ืื•ื˜ื•ืžื˜ื™ื•ืช ื‘-VTBืขื•ืžืก ืจืฅ ื‘ืžื”ืœืš ื‘ื“ื™ืงื•ืช (8 ืœื™ื‘ื•ืช, 8 GB RAM, 24 ืคืชื™ืœื™ื)

ื™ืชืจื•ื ื•ืช:

  • ืฆืจื™ื›ืช ืžืฉืื‘ื™ื ื ืžื•ื›ื”;
  • ืชืžื™ื›ื” ืžืงื•ืžื™ืช ืžืžืœืคืคื•ืŸ - ืื™ืŸ ืฆื•ืจืš ื‘ื›ืœื™ื ื ื•ืกืคื™ื;
  • ื”ื™ื›ื•ืœืช ืœื”ืจื™ืฅ ื™ื•ืชืจ ืž-6 ืคืชื™ืœื™ื ืœื›ืœ ืœื™ื‘ืช ืžืขื‘ื“.

ื—ืกืจื•ื ื•ืช:

  • ืขืœื™ืš ืœื•ื•ื“ื ืฉื”ืงื•ื“ ืชื•ืžืš ื‘ื‘ื™ืฆื•ืข ืจื™ื‘ื•ื™ ื”ืœื™ื›ื™ื;
  • ืกืฃ ื”ื›ื ื™ืกื” ืขื•ืœื”.

Allure ืžื“ื•ื•ื— ื‘ื“ืคื™ GitLab

ืœืื—ืจ ืฉื”ื›ื ืกื ื• ื‘ื™ืฆื•ืข ืžืจื•ื‘ื”-ืคืชื™ืœ, ื”ืชื—ืœื ื• ืœื”ืฉืงื™ืข ื”ืจื‘ื” ื™ื•ืชืจ ื–ืžืŸ ื‘ื ื™ืชื•ื— ื“ื•ื—ื•ืช. ื‘ืื•ืชื• ื–ืžืŸ, ื”ื™ื™ื ื• ืฆืจื™ื›ื™ื ืœื”ืขืœื•ืช ื›ืœ ื“ื•ื— ื›ื—ืคืฅ ืœ- GitLab, ื•ืื– ืœื”ื•ืจื™ื“ ืื•ืชื• ื•ืœืคืจื•ืง ืื•ืชื•. ื–ื” ืœื ืžืื•ื“ ื ื•ื— ื•ืœื•ืงื— ื”ืจื‘ื” ื–ืžืŸ. ื•ืื ืžื™ืฉื”ื• ืื—ืจ ืจื•ืฆื” ืœืจืื•ืช ืืช ื”ื“ื•ื— ื‘ืขืฆืžื•, ืื– ื”ื•ื ื™ืฆื˜ืจืš ืœื‘ืฆืข ืืช ืื•ืชืŸ ืคืขื•ืœื•ืช. ืจืฆื™ื ื• ืœืงื‘ืœ ืคื™ื“ื‘ืง ืžื”ืจ ื™ื•ืชืจ, ื•ืžืฆืื ื• ืคืชืจื•ืŸ - ื“ืคื™ GitLab. ื–ื•ื”ื™ ืชื›ื•ื ื” ืžื•ื‘ื ื™ืช ื”ื–ืžื™ื ื” ืžื”ืงื•ืคืกื” ื‘ื›ืœ ื”ื’ืจืกืื•ืช ื”ืื—ืจื•ื ื•ืช ืฉืœ GitLab. ืžืืคืฉืจ ืœืš ืœืคืจื•ืก ืืชืจื™ื ืกื˜ื˜ื™ื™ื ื‘ืฉืจืช ืฉืœืš ื•ืœื’ืฉืช ืืœื™ื”ื ื‘ืืžืฆืขื•ืช ืงื™ืฉื•ืจ ื™ืฉื™ืจ.

ื›ืœ ืฆื™ืœื•ืžื™ ื”ืžืกืš ืฉืœ ื“ื•ื—ื•ืช Allure ืฆื•ืœืžื• ื‘ื“ืคื™ GitLab. ืกืงืจื™ืคื˜ ืœืคืจื™ืกืช ื”ื“ื•ื— ืœื“ืคื™ GitLab - ื‘-Windows PowerShell (ืœืคื ื™ ื–ื” ืขืœื™ืš ืœื”ืคืขื™ืœ ื‘ื“ื™ืงื•ืช ืื•ื˜ื•ืžื˜ื™ื•ืช):

New-Item -ItemType directory -Path $testresulthistory | Out-Null

try {Invoke-WebRequest -Uri $hst -OutFile $outputhst}
Catch{echo "fail copy history"}
try {Invoke-WebRequest -Uri $hsttrend -OutFile $outputhsttrnd}
Catch{echo "fail copy history trend"}

mvn allure:report
#mvn assembly:single -PzipAllureReport
xcopy $buildlocationtargetsiteallure-maven-plugin* $buildlocationpublic /s /i /Y

ื•ื”ืชื•ืฆืื” ื”ื•ื ืฉ 

ืื–, ืื ื—ืฉื‘ืชื ืื ืืชื ืฆืจื™ื›ื™ื ืงื•ื“ ื‘ื˜ื•ื— ืฉืœ Thread ื‘ืžืกื’ืจืช ื”ื‘ื“ื™ืงื” ื”ืื•ื˜ื•ืžื˜ื™ืช ืฉืœ Cucumber, ื›ืขืช ื”ืชืฉื•ื‘ื” ื‘ืจื•ืจื” - ืขื Cucumber 4 ืงืœ ืœื™ื™ืฉื ืื•ืชื•, ื•ื‘ื›ืš ืœื”ื’ื“ื™ืœ ืžืฉืžืขื•ืชื™ืช ืืช ืžืกืคืจ ื”ืฉืจืฉื•ืจื™ื ืฉื”ื•ืคืขืœื• ื‘ื• ื–ืžื ื™ืช. ื‘ืฉื™ื˜ื” ื–ื• ืฉืœ ื”ืคืขืœืช ื‘ื“ื™ืงื•ืช, ื”ืฉืืœื” ื”ื•ืคื›ืช ื›ืขืช ืœื’ื‘ื™ ื”ื‘ื™ืฆื•ืขื™ื ืฉืœ ื”ืžื›ื•ื ื” ืขื ืกืœื ื•ืื™ื“ ื•ืกืคืกืœ ื”ื‘ื“ื™ืงื”.

ื”ืชืจื’ื•ืœ ื”ืจืื” ืฉื”ืคืขืœืช ื‘ื“ื™ืงื•ืช ืื•ื˜ื•ืžื˜ื™ื•ืช ืขืœ ืฉืจืฉื•ืจื™ื ืžืืคืฉืจืช ืœืš ืœื”ืคื—ื™ืช ืืช ืฆืจื™ื›ืช ื”ืžืฉืื‘ื™ื ืœืžื™ื ื™ืžื•ื ืขื ื”ื‘ื™ืฆื•ืขื™ื ื”ื˜ื•ื‘ื™ื ื‘ื™ื•ืชืจ. ื›ืคื™ ืฉื ื™ืชืŸ ืœืจืื•ืช ืžื”ื’ืจืคื™ื, ื”ื›ืคืœืช ื—ื•ื˜ื™ื ืื™ื ื” ืžื‘ื™ืื” ืœืชืื•ืฆื” ื“ื•ืžื” ื‘ืžื‘ื—ื ื™ ื‘ื™ืฆื•ืขื™ื. ืขื ื–ืืช, ื”ืฆืœื—ื ื• ืœื”ื•ืกื™ืฃ ื™ื•ืชืจ ืž-2 ื‘ื“ื™ืงื•ืช ืื•ื˜ื•ืžื˜ื™ื•ืช ืœื‘ื ื™ื™ืช ื”ืืคืœื™ืงืฆื™ื”, ืฉืืคื™ืœื• ืขื 200 ืฉื™ื“ื•ืจื™ื ื—ื•ื–ืจื™ื ืคื•ืขืœื™ื ืชื•ืš ื›-5 ื“ืงื•ืช. ื–ื” ืžืืคืฉืจ ืœืงื‘ืœ ืžื”ื ืžืฉื•ื‘ ืžื”ื™ืจ, ื•ื‘ืžื™ื“ืช ื”ืฆื•ืจืš ืœื‘ืฆืข ืฉื™ื ื•ื™ื™ื ื•ืœื—ื–ื•ืจ ืขืœ ื”ื”ืœื™ืš ืฉื•ื‘.

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”