@@ -28,6 +28,98 @@ test('invalid register form', async ({ page }) => {
28
28
await expect ( page . getByText ( 'Must contain at least one' ) ) . toBeVisible ( ) ;
29
29
} ) ;
30
30
31
+ test ( 'invalid login attempts' , async ( { page } ) => {
32
+ await page . goto ( testDomain ) ;
33
+
34
+ // Test with wrong password
35
+ await page . getByRole ( 'textbox' , { name : 'Email' } ) . fill ( testUser1Email ) ;
36
+ await page . getByRole ( 'textbox' , { name : 'Password' } ) . fill ( 'wrong_password' ) ;
37
+ await page . getByRole ( 'button' , { name : 'Login' } ) . click ( ) ;
38
+ await expect ( page . getByText ( 'Email-address or password wrong.' ) ) . toBeVisible ( ) ;
39
+
40
+ // Test with non-existent email
41
+ await page . getByRole ( 'textbox' , { name :
'Email' } ) . fill ( '[email protected] ' ) ;
42
+ await page . getByRole ( 'textbox' , { name : 'Password' } ) . fill ( testPassword1 ) ;
43
+ await page . getByRole ( 'button' , { name : 'Login' } ) . click ( ) ;
44
+ await expect ( page . getByText ( 'Email-address or password wrong.' ) ) . toBeVisible ( ) ;
45
+ } ) ;
46
+
47
+ test ( 'navigation and logout' , async ( { page } ) => {
48
+ await login ( page , testUser1Email , testPassword1 ) ;
49
+
50
+ // Test navigation to different pages
51
+ await page . getByRole ( 'link' , { name : 'Token' } ) . click ( ) ;
52
+ await expect ( page . getByRole ( 'heading' , { name : 'Create authorization token' } ) ) . toBeVisible ( ) ;
53
+
54
+ await page . getByRole ( 'link' , { name : 'Account' } ) . click ( ) ;
55
+ await expect ( page . getByRole ( 'heading' , { name : 'Account information' } ) ) . toBeVisible ( ) ;
56
+
57
+ // Test logout
58
+ await page . getByRole ( 'button' , { name : 'Logout' , exact : true } ) . click ( ) ;
59
+ await expect ( page . getByRole ( 'button' , { name : 'Login' } ) ) . toBeVisible ( ) ;
60
+ } ) ;
61
+
62
+ test ( 'token management' , async ( { page } ) => {
63
+ await login ( page , testUser1Email , testPassword1 ) ;
64
+
65
+ await page . getByRole ( 'link' , { name : 'Token' } ) . click ( ) ;
66
+
67
+ // Create a token
68
+ await page . getByRole ( 'textbox' , { name : 'Name' } ) . fill ( 'Test Token 1' ) ;
69
+ await page . getByRole ( 'button' , { name : 'Create token' } ) . click ( ) ;
70
+
71
+ // Verify token appears in list
72
+ await expect ( page . getByText ( 'Test Token 1' ) ) . toBeVisible ( ) ;
73
+
74
+ // Create another token
75
+ await page . getByRole ( 'textbox' , { name : 'Name' } ) . clear ( ) ;
76
+ await page . getByRole ( 'textbox' , { name : 'Name' } ) . fill ( 'Test Token 2' ) ;
77
+ await page . getByRole ( 'button' , { name : 'Create token' } ) . click ( ) ;
78
+
79
+ // Verify both tokens exist
80
+ await expect ( page . getByText ( 'Test Token 1' ) ) . toBeVisible ( ) ;
81
+ await expect ( page . getByText ( 'Test Token 2' ) ) . toBeVisible ( ) ;
82
+
83
+ // Delete a token
84
+ await page . getByRole ( 'button' , { name : 'Delete' } ) . nth ( 0 ) . click ( ) ;
85
+ await expect ( page . getByText ( 'Test Token 1' ) ) . not . toBeVisible ( ) ;
86
+ await expect ( page . getByText ( 'Test Token 2' ) ) . toBeVisible ( ) ;
87
+ } ) ;
88
+
89
+ test ( 'account information validation' , async ( { page } ) => {
90
+ await login ( page , testUser1Email , testPassword1 ) ;
91
+
92
+ await page . getByRole ( 'link' , { name : 'Account' } ) . click ( ) ;
93
+
94
+ // Test invalid name (empty)
95
+ await page . getByLabel ( 'Name' ) . clear ( ) ;
96
+ await page . getByRole ( 'button' , { name : 'Save changes' } ) . click ( ) ;
97
+ await expect ( page . getByText ( 'The name must not be empty' ) ) . toBeVisible ( ) ;
98
+
99
+ await page . getByLabel ( 'Email-address' ) . clear ( ) ;
100
+ await page . getByLabel ( 'Email-address' ) . fill ( testUser1Email ) ;
101
+ await page . getByRole ( 'button' , { name : 'Save changes' } ) . click ( ) ;
102
+ } ) ;
103
+
104
+ test ( 'password change dialog validation' , async ( { page } ) => {
105
+ await login ( page , testUser1Email , testPassword1 ) ;
106
+
107
+ await page . getByRole ( 'link' , { name : 'Account' } ) . click ( ) ;
108
+ await page . getByRole ( 'button' , { name : 'Change password' } ) . click ( ) ;
109
+
110
+ await page . getByLabel ( 'Current password' ) . fill ( testPassword1 ) ;
111
+ await page . getByLabel ( 'New password' ) . fill ( 'weak' ) ;
112
+ await page . getByRole ( 'dialog' ) . getByRole ( 'button' , { name : 'Change password' } ) . click ( ) ;
113
+ await expect ( page . getByText ( 'Must contain at least one' ) ) . toBeVisible ( ) ;
114
+
115
+ await page . getByLabel ( 'Current password' ) . clear ( ) ;
116
+ await page . getByLabel ( 'Current password' ) . fill ( 'wrong_password' ) ;
117
+ await page . getByLabel ( 'New password' ) . clear ( ) ;
118
+ await page . getByLabel ( 'New password' ) . fill ( 'ValidPassword123!' ) ;
119
+ await page . getByRole ( 'dialog' ) . getByRole ( 'button' , { name : 'Change password' } ) . click ( ) ;
120
+ await page . getByRole ( 'button' , { name : 'Close' } ) . click ( ) ;
121
+ } ) ;
122
+
31
123
test ( 'charger lifecycle' , async ( { page } ) => {
32
124
test . slow ( ) ;
33
125
@@ -142,6 +234,8 @@ test('change accountname', async ({page}) => {
142
234
await expect ( page . getByRole ( 'heading' , { name : 'Account information' } ) ) . toBeVisible ( ) ;
143
235
} ) ;
144
236
237
+ // ===== TESTS AFTER THIS POINT CREATE NEW USERS OR USE DIFFERENT CREDENTIALS =====
238
+
145
239
test ( 'change password' , async ( { page} ) => {
146
240
await login ( page , testUser2Email , testPassword1 ) ;
147
241
0 commit comments