Project Number Date
ApolloFullRunnerReport develop.344 19 maj 2021, 19:36

Feature Report

Steps Scenarios Features
Feature Passed Failed Skipped Pending Undefined Total Passed Failed Total Duration Status
Set transport order on auction 141 1 2 0 0 144 20 1 21 9m 44s 182ms Failed
Feature Set transport order on auction
Given Login as "adama-admin" and set token of apiUsername "super-admin-adama" 961ms
And Create transport "CREATE_TRANSPORT" by JSON file as "super-admin-adama" 1s 249ms
When Fill auction form 15s 475ms
Then Verify that the auction has been added to transport 041ms
After Hooks.deleteTransportAfterTest() 072ms
Given Login as "swisskrono-admin" and set token of apiUsername "super-admin-skz" 1s 191ms
And Create transport "CREATE_SMALLS_IMPORT" by JSON file as "super-admin-skz" 1s 235ms
When Fill auction form 15s 387ms
Then Verify that the auction has been added to transport 058ms
After Hooks.deleteTransportAfterTest() 091ms
Given Login as "adama-admin" and set token of apiUsername "super-admin-adama" 1s 145ms
And Create transport "CREATE_TRANSPORT" by JSON file as "super-admin-adama" 1s 231ms
And Set transport on auction with "500" and "20000" by JSON file as "super-admin-adama" 2s 097ms
When If user is login then logout 279ms
And Login as "paa1-carrier@qa.qa-test" 2s 660ms
And Go to auction offer 1s 224ms
And Accept transport with minimum rate 15s 614ms
Then Check if carrier is assigned to transport 017ms
After Hooks.deleteTransportAfterTest() 087ms
Given Login as "adama-admin" and set token of apiUsername "super-admin-adama" 1s 003ms
And Create transport "CREATE_TRANSPORT" by JSON file as "super-admin-adama" 1s 192ms
And Set transport on auction with "500" and "20000" by JSON file as "super-admin-adama" 2s 104ms
When If user is login then logout 115ms
And Login as "paa1-carrier@qa.qa-test" 1s 531ms
And Go to auction offer 1s 235ms
And Reject auction offer 15s 597ms
Then Verify that offer has been removed from transport 15s 034ms
After Hooks.deleteTransportAfterTest() 113ms
Given Login as "swisskrono-admin" and set token of apiUsername "super-admin-skz" 1s 274ms
And Create transport "CREATE_SMALLS_IMPORT" by JSON file as "super-admin-skz" 1s 252ms
And Set transport on auction with "500" and "20000" by JSON file as "super-admin-skz" 2s 097ms
When If user is login then logout 266ms
And Login as "pskza1-carrier@qa.qa-test" 1s 161ms
And Go to auction offer 1s 217ms
And Reject auction offer 15s 610ms
Then Verify that offer has been removed from transport 15s 047ms
After Hooks.deleteTransportAfterTest() 083ms
Given Login as "adama-admin" and set token of apiUsername "super-admin-adama" 1s 384ms
And Create transport "CREATE_TRANSPORT" by JSON file as "super-admin-adama" 1s 206ms
And Set transport on auction with "500" and "20000" by JSON file as "super-admin-adama" 2s 084ms
When If user is login then logout 251ms
And Login as "paa1-carrier@qa.qa-test" 1s 328ms
And Go to auction offer 1s 297ms
And Offer prize above maximum - "20000" 120ms
Then Verify that is not possible to add offer 084ms
After Hooks.deleteTransportAfterTest() 072ms
Given Login as "swisskrono-admin" and set token of apiUsername "super-admin-skz" 1s 132ms
And Create transport "CREATE_SMALLS_IMPORT" by JSON file as "super-admin-skz" 1s 204ms
And Set transport on auction with "500" and "20000" by JSON file as "super-admin-skz" 2s 111ms
When If user is login then logout 091ms
And Login as "pskza1-carrier@qa.qa-test" 1s 184ms
And Go to auction offer 1s 200ms
And Offer prize above maximum - "20000" 123ms
Then Verify that is not possible to add offer 147ms
After Hooks.deleteTransportAfterTest() 101ms
Given Login as "adama-admin" and set token of apiUsername "super-admin-adama" 1s 031ms
And Create transport "CREATE_TRANSPORT" by JSON file as "super-admin-adama" 1s 203ms
And Set transport on auction with "500" and "20000" by JSON file as "super-admin-adama" 2s 077ms
And Wait till auction end 1m 58s 017ms
Then Verify that is possible to add auction 033ms
After Hooks.deleteTransportAfterTest() 071ms
Given Login as "swisskrono-admin" and set token of apiUsername "super-admin-skz" 1s 265ms
And Create transport "CREATE_SMALLS_IMPORT" by JSON file as "super-admin-skz" 1s 216ms
And Set transport on auction with "500" and "20000" by JSON file as "super-admin-skz" 2s 105ms
And Wait till auction end 1m 58s 017ms
Then Verify that is possible to add auction 054ms
After Hooks.deleteTransportAfterTest() 095ms
Given Login as "paa1-carrier@qa.qa-test" and set token of apiUsername "super-admin-adama" 1s 418ms
And Create transport "CREATE_TRANSPORT" by JSON file as "super-admin-adama" 1s 201ms
And Set transport on auction with "500" and "20000" by JSON file as "super-admin-adama" 2s 108ms
And Go to auction offer 1s 211ms
When Offer "1000" 135ms
Then Verify that offer with "1000" has been added to auction 3s 038ms
After Hooks.deleteTransportAfterTest() 088ms
Given Login as "pskza1-carrier@qa.qa-test" and set token of apiUsername "super-admin-skz" 1s 094ms
And Create transport "CREATE_SMALLS_IMPORT" by JSON file as "super-admin-skz" 1s 247ms
And Set transport on auction with "500" and "20000" by JSON file as "super-admin-skz" 2s 130ms
And Go to auction offer 1s 182ms
When Offer "1000" 129ms
Then Verify that offer with "1000" has been added to auction 3s 035ms
After Hooks.deleteTransportAfterTest() 086ms
Given Login as "pskza1-carrier@qa.qa-test" and set token of apiUsername "super-admin-skz" 1s 081ms
And Create transport "CREATE_SMALLS_IMPORT" by JSON file as "super-admin-skz" 1s 227ms
And Set transport on auction with "500" and "20000" by JSON file as "super-admin-skz" 2s 104ms
And Go to auction offer 1s 187ms
When Offer "1000" 104ms
And Verify that offer with "1000" has been added to auction 3s 036ms
Then Go to auction offer 1s 171ms
And Revoke current offer 579ms
And Verify that offer has been revoked 30s 595ms
After Hooks.deleteTransportAfterTest() 080ms
Given Login as "pskza1-carrier@qa.qa-test" and set token of apiUsername "super-admin-skz" 1s 227ms
And Create transport "CREATE_SMALLS_IMPORT" by JSON file as "super-admin-skz" 1s 237ms
And Set transport on auction with "500" and "20000" by JSON file as "super-admin-skz" 2s 100ms
And Go to auction offer 1s 215ms
When Offer "1000" 141ms
And Verify that offer with "1000" has been added to auction 3s 038ms
Then Go to auction offer 1s 174ms
And Offer "1500" 126ms
And Verify that offer with "1500" has been added to auction 3s 028ms
After Hooks.deleteTransportAfterTest() 089ms
Given Login as "pskza1-carrier@qa.qa-test" and set token of apiUsername "super-admin-skz" 1s 063ms
And Create transport "CREATE_SMALLS_IMPORT" by JSON file as "super-admin-skz" 1s 290ms
And Set transport on auction with "500" and "20000" by JSON file as "super-admin-skz" 2s 124ms
And Go to auction offer 1s 211ms
When Offer "1000" 134ms
And Verify that offer with "1000" has been added to auction 3s 034ms
Then Login as "swisskrono-admin" 1s 065ms
And Go to auction details 1s 169ms
And Finish active auction 055ms
And Verify that the transport has no active auction 142ms
After Hooks.deleteTransportAfterTest() 060ms
Given Login as "paa1-carrier@qa.qa-test" and set token of apiUsername "super-admin-adama" 1s 266ms
And Create transport "CREATE_TRANSPORT" by JSON file as "super-admin-adama" 1s 206ms
And Set transport on auction with "500" and "20000" by JSON file as "super-admin-adama" 2s 113ms
And Go to auction offer 1s 212ms
When Offer "1000" 137ms
Then Verify that carrier can see current place in auction depending on the "true" role 145ms
After Hooks.deleteTransportAfterTest() 084ms
Given Login as "pskza1-carrier@qa.qa-test" and set token of apiUsername "super-admin-skz" 1s 094ms
And Create transport "CREATE_SMALLS_IMPORT" by JSON file as "super-admin-skz" 1s 224ms
And Set transport on auction with "500" and "20000" by JSON file as "super-admin-skz" 2s 113ms
And Go to auction offer 1s 210ms
When Offer "1000" 121ms
Then Verify that carrier can see current place in auction depending on the "false" role 15s 053ms
After Hooks.deleteTransportAfterTest() 098ms
Given Login as "pskza1-carrier@qa.qa-test" and set token of apiUsername "super-admin-skz" 1s 270ms
And Create transport "CREATE_SMALLS_IMPORT" by JSON file as "super-admin-skz" 1s 259ms
And Set transport on auction with "500" and "20000" by JSON file as "super-admin-skz" 2s 097ms
And Go to auction offer 1s 229ms
When Offer "300" 120ms
And Verify that carrier can't add offer to auction 023ms
After Hooks.deleteTransportAfterTest() 074ms
Scenario Outline Check carrier selection in create auction form
Steps
Given Login as "adama-admin" and set token of apiUsername "super-admin-adama" 1s 090ms
And Create transport "CREATE_TRANSPORT" by JSON file as "super-admin-adama" 1s 209ms
And Show all transport "false" 004ms
javax.persistence.PersistenceException: org.hibernate.exception.JDBCConnectionException: Unable to release JDBC Connection
	at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:149)
	at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:157)
	at org.hibernate.query.internal.AbstractProducedQuery.list(AbstractProducedQuery.java:1515)
	at org.hibernate.query.internal.AbstractProducedQuery.getSingleResult(AbstractProducedQuery.java:1554)
	at Utils.JpaUtils.Repository.FormRepository.findBy(FormRepository.java:42)
	at Workbooks.ImperialApiWorkbook.setDefaultValueMapping(ImperialApiWorkbook.java:78)
	at Workbooks.ImperialApiWorkbook.(ImperialApiWorkbook.java:37)
	at CucumberTests.ImperialApi.CreateTransport.(CreateTransport.java:39)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
	at org.picocontainer.injectors.AbstractInjector.newInstance(AbstractInjector.java:145)
	at org.picocontainer.injectors.ConstructorInjector$1.run(ConstructorInjector.java:342)
	at org.picocontainer.injectors.AbstractInjector$ThreadLocalCyclicDependencyGuard.observe(AbstractInjector.java:270)
	at org.picocontainer.injectors.ConstructorInjector.getComponentInstance(ConstructorInjector.java:364)
	at org.picocontainer.injectors.AbstractInjectionFactory$LifecycleAdapter.getComponentInstance(AbstractInjectionFactory.java:56)
	at org.picocontainer.behaviors.AbstractBehavior.getComponentInstance(AbstractBehavior.java:64)
	at org.picocontainer.behaviors.Stored.getComponentInstance(Stored.java:91)
	at org.picocontainer.DefaultPicoContainer.getInstance(DefaultPicoContainer.java:699)
	at org.picocontainer.DefaultPicoContainer.getComponent(DefaultPicoContainer.java:647)
	at org.picocontainer.DefaultPicoContainer.getComponent(DefaultPicoContainer.java:678)
	at cucumber.runtime.java.picocontainer.PicoFactory.getInstance(PicoFactory.java:40)
	at cucumber.runtime.java.JavaStepDefinition.execute(JavaStepDefinition.java:57)
	at cucumber.runner.PickleStepDefinitionMatch.runStep(PickleStepDefinitionMatch.java:50)
	at cucumber.runner.TestStep.executeStep(TestStep.java:63)
	at cucumber.runner.TestStep.run(TestStep.java:49)
	at cucumber.runner.PickleStepTestStep.run(PickleStepTestStep.java:43)
	at cucumber.runner.TestCase.run(TestCase.java:45)
	at cucumber.runner.Runner.runPickle(Runner.java:40)
	at cucumber.runtime.junit.PickleRunners$WithStepDescriptions.run(PickleRunners.java:97)
	at cucumber.runtime.junit.FeatureRunner.runChild(FeatureRunner.java:68)
	at cucumber.runtime.junit.FeatureRunner.runChild(FeatureRunner.java:23)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at cucumber.runtime.junit.FeatureRunner.run(FeatureRunner.java:73)
	at cucumber.api.junit.Cucumber.runChild(Cucumber.java:122)
	at cucumber.api.junit.Cucumber.runChild(Cucumber.java:64)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at cucumber.api.junit.Cucumber$1.evaluate(Cucumber.java:131)
	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
	at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:367)
	at org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:274)
	at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:238)
	at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:161)
	at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:290)
	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:242)
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:121)
	at ✽.Show all transport "false"(file:Features/Atom/Transport/Auction.feature:158)
Caused by: org.hibernate.exception.JDBCConnectionException: Unable to release JDBC Connection
	at org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:115)
	at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:42)
	at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:111)
	at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:97)
	at org.hibernate.resource.jdbc.internal.LogicalConnectionManagedImpl.releaseConnection(LogicalConnectionManagedImpl.java:199)
	at org.hibernate.resource.jdbc.internal.LogicalConnectionManagedImpl.afterTransaction(LogicalConnectionManagedImpl.java:162)
	at org.hibernate.engine.jdbc.internal.JdbcCoordinatorImpl.afterTransaction(JdbcCoordinatorImpl.java:288)
	at org.hibernate.internal.SessionImpl.afterOperation(SessionImpl.java:573)
	at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1511)
	at org.hibernate.query.internal.AbstractProducedQuery.doList(AbstractProducedQuery.java:1538)
	at org.hibernate.query.internal.AbstractProducedQuery.list(AbstractProducedQuery.java:1506)
	at org.hibernate.query.internal.AbstractProducedQuery.getSingleResult(AbstractProducedQuery.java:1554)
	at Utils.JpaUtils.Repository.FormRepository.findBy(FormRepository.java:42)
	at Workbooks.ImperialApiWorkbook.setDefaultValueMapping(ImperialApiWorkbook.java:78)
	at Workbooks.ImperialApiWorkbook.(ImperialApiWorkbook.java:37)
	at CucumberTests.ImperialApi.CreateTransport.(CreateTransport.java:39)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
	at org.picocontainer.injectors.AbstractInjector.newInstance(AbstractInjector.java:145)
	at org.picocontainer.injectors.ConstructorInjector$1.run(ConstructorInjector.java:342)
	at org.picocontainer.injectors.AbstractInjector$ThreadLocalCyclicDependencyGuard.observe(AbstractInjector.java:270)
	at org.picocontainer.injectors.ConstructorInjector.getComponentInstance(ConstructorInjector.java:364)
	at org.picocontainer.injectors.AbstractInjectionFactory$LifecycleAdapter.getComponentInstance(AbstractInjectionFactory.java:56)
	at org.picocontainer.behaviors.AbstractBehavior.getComponentInstance(AbstractBehavior.java:64)
	at org.picocontainer.behaviors.Stored.getComponentInstance(Stored.java:91)
	at org.picocontainer.DefaultPicoContainer.getInstance(DefaultPicoContainer.java:699)
	at org.picocontainer.DefaultPicoContainer.getComponent(DefaultPicoContainer.java:647)
	at org.picocontainer.DefaultPicoContainer.getComponent(DefaultPicoContainer.java:678)
	at cucumber.runtime.java.picocontainer.PicoFactory.getInstance(PicoFactory.java:40)
	at cucumber.runtime.java.JavaStepDefinition.execute(JavaStepDefinition.java:57)
	at cucumber.runner.PickleStepDefinitionMatch.runStep(PickleStepDefinitionMatch.java:50)
	at cucumber.runner.TestStep.executeStep(TestStep.java:63)
	at cucumber.runner.TestStep.run(TestStep.java:49)
	at cucumber.runner.PickleStepTestStep.run(PickleStepTestStep.java:43)
	at cucumber.runner.TestCase.run(TestCase.java:45)
	at cucumber.runner.Runner.runPickle(Runner.java:40)
	at cucumber.runtime.junit.PickleRunners$WithStepDescriptions.run(PickleRunners.java:97)
	at cucumber.runtime.junit.FeatureRunner.runChild(FeatureRunner.java:68)
	at cucumber.runtime.junit.FeatureRunner.runChild(FeatureRunner.java:23)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at cucumber.runtime.junit.FeatureRunner.run(FeatureRunner.java:73)
	at cucumber.api.junit.Cucumber.runChild(Cucumber.java:122)
	at cucumber.api.junit.Cucumber.runChild(Cucumber.java:64)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at cucumber.api.junit.Cucumber$1.evaluate(Cucumber.java:131)
	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
	at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:367)
	at org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:274)
	at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:238)
	at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:161)
	at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:290)
	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:242)
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:121)
Caused by: org.postgresql.util.PSQLException: This connection has been closed.
	at org.postgresql.jdbc2.AbstractJdbc2Connection.checkClosed(AbstractJdbc2Connection.java:714)
	at org.postgresql.jdbc2.AbstractJdbc2Connection.setAutoCommit(AbstractJdbc2Connection.java:661)
	at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl$PooledConnections.add(DriverManagerConnectionProviderImpl.java:308)
	at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.closeConnection(DriverManagerConnectionProviderImpl.java:198)
	at org.hibernate.internal.NonContextualJdbcConnectionAccess.releaseConnection(NonContextualJdbcConnectionAccess.java:46)
	at org.hibernate.resource.jdbc.internal.LogicalConnectionManagedImpl.releaseConnection(LogicalConnectionManagedImpl.java:196)
	... 61 more
When Go to auction form 000ms
Then Verify carrier selection value "false" 000ms
After Hooks.deleteTransportAfterTest() 078ms
Given Login as "alrec-admin" and set token of apiUsername "super-admin-alrec" 1s 064ms
And Create transport "CREATE_TRANSPORT" by JSON file as "super-admin-alrec" 1s 225ms
And Show all transport "true" 081ms
When Go to auction form 1s 216ms
Then Verify carrier selection value "true" 041ms
After Hooks.deleteTransportAfterTest() 108ms
Given Login as "adama-admin" and set token of apiUsername "super-admin-adama" 1s 060ms
And Create transport "CREATE_TRANSPORT" by JSON file as "super-admin-adama" 1s 220ms
When Open transport auction form 176ms
And Select all companies checkbox in transport auction form 056ms
And Unselect company "PAA2" in transport auction form 064ms
And Put transport on auction 15s 188ms
And Open transport auction history 096ms
And Open participants section in transport auction history 057ms
Then Check if unselected "PAA2" is in transport auction history as participant 15s 049ms
After Hooks.deleteTransportAfterTest() 088ms
Given Login as "swisskrono-admin" and set token of apiUsername "super-admin-skz" 1s 247ms
And Create transport "CREATE_SMALLS_IMPORT" by JSON file as "super-admin-skz" 1s 260ms
When Open transport auction form 196ms
And Select all companies checkbox in transport auction form 072ms
And Unselect company "PSKZA2" in transport auction form 064ms
And Put transport on auction 15s 150ms
And Open transport auction history 093ms
And Open participants section in transport auction history 056ms
Then Check if unselected "PSKZA2" is in transport auction history as participant 15s 041ms
After Hooks.deleteTransportAfterTest() 107ms