22
33namespace Group;
44
5+ use Facebook\WebDriver\Remote\RemoteWebDriver;
56use Magento\FunctionalTestingFramework\DataGenerator\Handlers\PersistedObjectHandler;
67use Magento\FunctionalTestingFramework\DataGenerator\Handlers\CredentialStore;
8+ use Magento\FunctionalTestingFramework\Module\MagentoWebDriver;
79
810/**
911 * Group class is Codeception Extension which is allowed to handle to all internal events.
@@ -55,18 +57,20 @@ class {{suiteName}} extends \Codeception\GroupObject
5557 if ($this -> currentTestRun == 1) {
5658 print sprintf(self::$HOOK_EXECUTION_INIT , " before" );
5759
60+ /** @var MagentoWebDriver $webDriver */
61+ $webDriver = $this -> getModule (' \M agento\F unctionalTestingFramework\M odule\M agentoWebDriver' );
62+
5863 try {
5964 {{> testActions} }
60-
61- // reset configuration and close session
62- $this->getModule('\Magento\FunctionalTestingFramework\Module\MagentoWebDriver')->_resetConfig();
63- $webDriver->webDriver->close();
64- $webDriver->webDriver = null;
65-
6665 } catch (\Exception $exception) {
6766 $this -> preconditionFailure = $exception -> getMessage ();
6867 }
6968
69+ // reset configuration and close session
70+ $webDriver->_resetConfig();
71+ $webDriver->webDriver->close();
72+ $webDriver->webDriver = null;
73+
7074 print sprintf(self::$HOOK_EXECUTION_END, "before");
7175 }
7276 }
@@ -84,6 +88,9 @@ class {{suiteName}} extends \Codeception\GroupObject
8488 if ($this -> currentTestRun == $this -> testCount ) {
8589 print sprintf(self::$HOOK_EXECUTION_INIT , " after" );
8690
91+ /** @var MagentoWebDriver $webDriver */
92+ $webDriver = $this -> getModule (' \M agento\F unctionalTestingFramework\M odule\M agentoWebDriver' );
93+
8794 try {
8895 // Find out if Test in Suite failed, will cause potential failures in suite after
8996 $cest = $e -> getTest ();
@@ -112,8 +119,38 @@ class {{suiteName}} extends \Codeception\GroupObject
112119 }
113120
114121 PersistedObjectHandler::getInstance()->clearSuiteObjects();
122+
123+ $this->closeSession($webDriver);
124+
115125 print sprintf(self::$HOOK_EXECUTION_END, "after");
116126 }
117127 }
118128 { {/after} }
129+
130+ /**
131+ * Close session method closes current session.
132+ * If config 'close_all_sessions' is set to 'true' all sessions will be closed.
133+ *
134+ * @param MagentoWebDriver $webDriver
135+ * return void
136+ */
137+ private function closeSession(MagentoWebDriver $webDriver): void
138+ {
139+ $webDriverConfig = $webDriver -> _getConfig ();
140+ $webDriver -> _closeSession ();
141+ if (isset($webDriverConfig [' close_all_sessions' ]) && $webDriverConfig [' close_all_sessions' ] === " true" ) {
142+ $wdHost = sprintf(
143+ ' %s://%s:%s%s' ,
144+ $webDriverConfig [' protocol' ],
145+ $webDriverConfig [' host' ],
146+ $webDriverConfig [' port' ],
147+ $webDriverConfig [' path' ]
148+ );
149+ $availableSessions = RemoteWebDriver::getAllSessions($wdHost );
150+ foreach ($availableSessions as $session ) {
151+ $remoteWebDriver = RemoteWebDriver::createBySessionID($session [' id' ], $wdHost );
152+ $remoteWebDriver -> quit ();
153+ }
154+ }
155+ }
119156}
0 commit comments