7
7
namespace Magento \User \Test \TestStep ;
8
8
9
9
use Magento \Backend \Test \Page \AdminAuthLogin ;
10
+ use Magento \Mtf \Client \BrowserInterface ;
10
11
use Magento \Mtf \TestStep \TestStepInterface ;
11
12
use Magento \User \Test \Fixture \User ;
12
13
use Magento \Backend \Test \Page \Adminhtml \Dashboard ;
@@ -44,23 +45,43 @@ class LoginUserOnBackendStep implements TestStepInterface
44
45
*/
45
46
protected $ dashboard ;
46
47
48
+ /**
49
+ * Browser.
50
+ *
51
+ * @var BrowserInterface
52
+ */
53
+ private $ browser ;
54
+
55
+ /**
56
+ * Array of error messages on admin login form.
57
+ *
58
+ * @var array
59
+ */
60
+ private $ errorMessages = [
61
+ 'Invalid Form Key. Please refresh the page. ' ,
62
+ 'Your current session has been expired. ' ,
63
+ ];
64
+
47
65
/**
48
66
* @constructor
49
67
* @param LogoutUserOnBackendStep $logoutUserOnBackendStep
50
68
* @param AdminAuthLogin $adminAuth
51
69
* @param User $user
52
70
* @param Dashboard $dashboard
71
+ * @param BrowserInterface $browser
53
72
*/
54
73
public function __construct (
55
74
LogoutUserOnBackendStep $ logoutUserOnBackendStep ,
56
75
AdminAuthLogin $ adminAuth ,
57
76
User $ user ,
58
- Dashboard $ dashboard
77
+ Dashboard $ dashboard ,
78
+ BrowserInterface $ browser
59
79
) {
60
80
$ this ->logoutUserOnBackendStep = $ logoutUserOnBackendStep ;
61
81
$ this ->adminAuth = $ adminAuth ;
62
82
$ this ->user = $ user ;
63
83
$ this ->dashboard = $ dashboard ;
84
+ $ this ->browser = $ browser ;
64
85
}
65
86
66
87
/**
@@ -76,10 +97,25 @@ public function run()
76
97
$ this ->logoutUserOnBackendStep ->run ();
77
98
}
78
99
100
+ try {
101
+ $ this ->login ();
102
+ } catch (\PHPUnit_Extensions_Selenium2TestCase_WebDriverException $ e ) {
103
+ if (strpos ($ e ->getMessage (), 'Timed out after ' ) !== false ) {
104
+ $ messages = $ this ->adminAuth ->getMessagesBlock ();
105
+ if (in_array ($ messages ->getErrorMessage (), $ this ->errorMessages , true )) {
106
+ $ this ->browser ->refresh ();
107
+ $ this ->login ();
108
+ }
109
+ }
110
+ }
111
+
112
+ $ this ->dashboard ->getSystemMessageDialog ()->closePopup ();
113
+ }
114
+
115
+ private function login ()
116
+ {
79
117
$ this ->adminAuth ->getLoginBlock ()->fill ($ this ->user );
80
118
$ this ->adminAuth ->getLoginBlock ()->submit ();
81
119
$ this ->adminAuth ->getLoginBlock ()->waitFormNotVisible ();
82
-
83
- $ this ->dashboard ->getSystemMessageDialog ()->closePopup ();
84
120
}
85
121
}
0 commit comments