2
2
3
3
namespace Group;
4
4
5
+ use Facebook\WebDriver\Remote\RemoteWebDriver;
5
6
use Magento\FunctionalTestingFramework\DataGenerator\Handlers\PersistedObjectHandler;
6
7
use Magento\FunctionalTestingFramework\DataGenerator\Handlers\CredentialStore;
8
+ use Magento\FunctionalTestingFramework\Module\MagentoWebDriver;
7
9
8
10
/**
9
11
* Group class is Codeception Extension which is allowed to handle to all internal events.
@@ -55,18 +57,20 @@ class {{suiteName}} extends \Codeception\GroupObject
55
57
if ($this -> currentTestRun == 1) {
56
58
print sprintf(self::$HOOK_EXECUTION_INIT , " before" );
57
59
60
+ /** @var MagentoWebDriver $webDriver */
61
+ $webDriver = $this -> getModule (' \M agento\F unctionalTestingFramework\M odule\M agentoWebDriver' );
62
+
58
63
try {
59
64
{{> 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
-
66
65
} catch (\Exception $exception) {
67
66
$this -> preconditionFailure = $exception -> getMessage ();
68
67
}
69
68
69
+ // reset configuration and close session
70
+ $webDriver->_resetConfig();
71
+ $webDriver->webDriver->close();
72
+ $webDriver->webDriver = null;
73
+
70
74
print sprintf(self::$HOOK_EXECUTION_END, "before");
71
75
}
72
76
}
@@ -84,6 +88,9 @@ class {{suiteName}} extends \Codeception\GroupObject
84
88
if ($this -> currentTestRun == $this -> testCount ) {
85
89
print sprintf(self::$HOOK_EXECUTION_INIT , " after" );
86
90
91
+ /** @var MagentoWebDriver $webDriver */
92
+ $webDriver = $this -> getModule (' \M agento\F unctionalTestingFramework\M odule\M agentoWebDriver' );
93
+
87
94
try {
88
95
// Find out if Test in Suite failed, will cause potential failures in suite after
89
96
$cest = $e -> getTest ();
@@ -112,8 +119,38 @@ class {{suiteName}} extends \Codeception\GroupObject
112
119
}
113
120
114
121
PersistedObjectHandler::getInstance()->clearSuiteObjects();
122
+
123
+ $this->closeSession($webDriver);
124
+
115
125
print sprintf(self::$HOOK_EXECUTION_END, "after");
116
126
}
117
127
}
118
128
{ {/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
+ }
119
156
}
0 commit comments