1
1
import { test , expect , Page } from '@playwright/test' ;
2
- import { login , testDomain , testPassword , testUser1Email , testUserName , testWallboxDomain , testWallboxUID } from './common' ;
2
+ import { login , mailiskClient , mailiskNameSpace , testDomain , testPassword1 , testPassword2 , testUser1Email , testUser2 , testUser2Email , testUserName1 , testUserName2 , testWallboxDomain , testWallboxUID } from './common' ;
3
3
4
4
test ( 'has title' , async ( { page } ) => {
5
5
await page . goto ( testDomain ) ;
@@ -9,14 +9,14 @@ test('has title', async ({ page }) => {
9
9
} ) ;
10
10
11
11
test ( 'login' , async ( { page } ) => {
12
- await login ( page , testUser1Email , testPassword ) ;
12
+ await login ( page , testUser1Email , testPassword1 ) ;
13
13
} ) ;
14
14
15
15
16
16
test ( 'show user page' , async ( { page } ) => {
17
- await login ( page , testUser1Email , testPassword ) ;
17
+ await login ( page , testUser1Email , testPassword1 ) ;
18
18
await page . getByRole ( 'link' , { name : 'User' } ) . click ( ) ;
19
- await expect ( page . getByLabel ( 'Name' ) ) . toHaveValue ( testUserName ) ;
19
+ await expect ( page . getByLabel ( 'Name' ) ) . toHaveValue ( testUserName1 ) ;
20
20
} ) ;
21
21
22
22
test ( 'invalid register form' , async ( { page } ) => {
@@ -39,12 +39,12 @@ test('charger lifecycle', async ({ page }) => {
39
39
await page . getByLabel ( 'Email address' ) . click ( ) ;
40
40
await page . getByLabel ( 'Email address' ) . fill ( testUser1Email ) ;
41
41
await page . getByLabel ( 'Email address' ) . press ( 'Tab' ) ;
42
- await page . getByLabel ( 'Passwordonly used for the reg' ) . fill ( testPassword ) ;
42
+ await page . getByLabel ( 'Passwordonly used for the reg' ) . fill ( testPassword1 ) ;
43
43
await page . getByLabel ( 'Passwordonly used for the reg' ) . press ( 'Enter' ) ;
44
44
await page . getByRole ( 'button' , { name : 'Reboot' } ) . click ( ) ;
45
45
46
46
// Connect to charger
47
- await login ( page , testUser1Email , testPassword ) ;
47
+ await login ( page , testUser1Email , testPassword1 ) ;
48
48
await expect ( page . locator ( 'tbody' ) ) . toContainText ( testWallboxUID ) ;
49
49
await expect ( page . locator ( '.bg-success' ) . first ( ) ) . toBeVisible ( { timeout : 100_000 } ) ;
50
50
await page . getByRole ( 'button' , { name : 'Connect' } ) . click ( ) ;
@@ -62,11 +62,11 @@ test('charger lifecycle', async ({ page }) => {
62
62
await expect ( page . getByText ( 'NameDevice-IDNoteSortAscending' ) ) . toBeVisible ( ) ;
63
63
} ) ;
64
64
65
- test ( 'charger lifecycle with auth token' , async ( { page} ) => {
65
+ test ( 'add charger with auth token' , async ( { page} ) => {
66
66
test . slow ( ) ;
67
67
await page . waitForTimeout ( 10_000 ) ;
68
68
69
- await login ( page , testUser1Email , testPassword ) ;
69
+ await login ( page , testUser1Email , testPassword1 ) ;
70
70
71
71
// Create token
72
72
await page . getByRole ( 'link' , { name : 'Token' } ) . click ( ) ;
@@ -81,7 +81,6 @@ test('charger lifecycle with auth token', async ({page}) => {
81
81
await page . getByRole ( 'button' , { name : 'Remote Access' } ) . click ( ) ;
82
82
await page . getByRole ( 'row' , { name : 'of 5 users configured.' } ) . getByRole ( 'button' ) . click ( ) ;
83
83
await page . getByLabel ( 'Authorization method' ) . selectOption ( 'token' ) ;
84
- await page . getByLabel ( 'Authorization token' ) . click ( ) ;
85
84
await page . getByLabel ( 'Authorization token' ) . fill ( token ) ;
86
85
await page . getByRole ( 'button' , { name : 'Add' } ) . click ( ) ;
87
86
await page . getByRole ( 'button' , { name : 'Reboot' } ) . click ( ) ;
@@ -93,18 +92,67 @@ test('charger lifecycle with auth token', async ({page}) => {
93
92
await page . getByRole ( 'button' , { name : 'Connect' } ) . click ( ) ;
94
93
await expect ( page . locator ( '#interface' ) . contentFrame ( ) . getByRole ( 'heading' , { name : 'Status' } ) ) . toBeVisible ( ) ;
95
94
await page . locator ( '#interface' ) . contentFrame ( ) . getByRole ( 'button' , { name : 'Close remote access' } ) . click ( ) ;
95
+ } ) ;
96
96
97
- // Remove charger
97
+ test ( 'change username' , async ( { page} ) => {
98
+ test . slow ( ) ;
99
+
100
+ await login ( page , testUser1Email , testPassword1 ) ;
101
+
102
+ await page . getByRole ( 'link' , { name : 'User' } ) . click ( ) ;
103
+ await page . getByLabel ( 'Email-address' ) . fill ( testUser2Email ) ;
104
+ await page . getByLabel ( 'Name' ) . fill ( testUserName2 ) ;
105
+ await page . getByRole ( 'button' , { name : 'Save changes' } ) . click ( ) ;
106
+ await expect ( page . getByLabel ( 'Email-address' ) ) . toBeVisible ( ) ;
107
+ await page . getByLabel ( 'Name' ) . click ( ) ;
108
+ await page . getByRole ( 'button' , { name : 'Logout' , exact : true } ) . click ( ) ;
109
+
110
+ const inbox = await mailiskClient . searchInbox ( mailiskNameSpace , { to_addr_prefix : testUser2 } ) ;
111
+ const idx = inbox . data [ 0 ] . text . indexOf ( "[https://tf-freddy/api/auth/verify?" ) + 1 ;
112
+ if ( idx === - 1 ) {
113
+ throw new Error ( "Failed to verify email" ) ;
114
+ }
115
+ const url = inbox . data [ 0 ] . text . substring ( idx , inbox . data [ 0 ] . text . indexOf ( "]" , idx ) ) ;
116
+ const response = await fetch ( url ) ;
117
+ if ( response . status !== 200 ) {
118
+ throw new Error ( "Failed to verify email" ) ;
119
+ }
120
+
121
+ await login ( page , testUser2Email , testPassword1 ) ;
122
+
123
+ await page . getByRole ( 'link' , { name : 'User' } ) . click ( ) ;
124
+ await expect ( page . getByRole ( 'heading' , { name : 'User information' } ) ) . toBeVisible ( ) ;
125
+ } ) ;
126
+
127
+ test ( 'change password' , async ( { page} ) => {
128
+ await login ( page , testUser2Email , testPassword1 ) ;
129
+
130
+ await page . getByRole ( 'link' , { name : 'User' } ) . click ( ) ;
131
+ await page . getByRole ( 'button' , { name : 'Change password' } ) . click ( ) ;
132
+ await page . getByLabel ( 'Current password' ) . click ( ) ;
133
+ await page . getByLabel ( 'Current password' ) . fill ( testPassword1 ) ;
134
+ await page . getByLabel ( 'New password' ) . fill ( testPassword2 ) ;
135
+ await page . getByRole ( 'dialog' ) . getByRole ( 'button' , { name : 'Change password' } ) . click ( ) ;
136
+ await expect ( page . getByText ( 'LoginRegisterEmail-' ) ) . toBeVisible ( ) ;
137
+
138
+ await login ( page , testUser2Email , testPassword2 ) ;
139
+ } ) ;
140
+
141
+ test ( 'connect to charger with new password' , async ( { page} ) => {
142
+ await login ( page , testUser2Email , testPassword2 ) ;
143
+
144
+ await expect ( page . locator ( 'tbody' ) ) . toContainText ( testWallboxUID ) ;
145
+ await expect ( page . locator ( '.bg-success' ) . first ( ) ) . toBeVisible ( { timeout : 100_000 } ) ;
146
+ await page . getByRole ( 'button' , { name : 'Connect' } ) . click ( ) ;
147
+ await expect ( page . locator ( '#interface' ) . contentFrame ( ) . getByRole ( 'heading' , { name : 'Status' } ) ) . toBeVisible ( ) ;
148
+ await page . locator ( '#interface' ) . contentFrame ( ) . getByRole ( 'button' , { name : 'Close remote access' } ) . click ( ) ;
149
+ } ) ;
150
+
151
+ test ( 'remove charger' , async ( { page} ) => {
98
152
await page . goto ( testWallboxDomain + '/#status' ) ;
99
153
await page . getByRole ( 'button' , { name : 'System' } ) . click ( ) ;
100
154
await page . getByRole ( 'button' , { name : 'Remote Access' } ) . click ( ) ;
101
155
await page . getByRole ( 'row' , { name : testUser1Email } ) . getByRole ( 'button' ) . click ( ) ;
102
156
await page . getByRole ( 'button' , { name : 'Save' } ) . click ( ) ;
103
157
await page . getByRole ( 'button' , { name : 'Reboot' } ) . click ( ) ;
104
- await page . goto ( testDomain ) ;
105
- await expect ( page . getByText ( 'NameDevice-IDNoteSortAscending' ) ) . toBeVisible ( ) ;
106
- } ) ;
107
-
108
- test ( 'change username' , async ( { page} ) => {
109
-
110
158
} ) ;
0 commit comments