@@ -19,6 +19,14 @@ limitations under the License.
19
19
/// <reference types='cypress' />
20
20
21
21
import { login , logout , register } from "./actions/auth" ;
22
+ import {
23
+ acceptCrossSigningRequest ,
24
+ enableDehydratedDevice ,
25
+ enableKeyBackup ,
26
+ startCrossSigning ,
27
+ verifyCrossSigningEmoji ,
28
+ verifyDeviceIsTrusted ,
29
+ } from "./actions/e2e" ;
22
30
23
31
type JSONValue =
24
32
| string
@@ -72,50 +80,28 @@ function recurse() {
72
80
73
81
function runAction ( action : string , data : JSONValue ) : string | undefined {
74
82
switch ( action ) {
83
+ // Auth
75
84
case 'register' :
76
85
return register ( data ) ;
77
86
case 'login' :
78
87
return login ( data ) ;
79
- case "logout" : {
88
+ case "logout" :
80
89
return logout ( ) ;
81
- }
90
+
91
+ // E2E
82
92
case 'start_crosssign' :
83
- if ( data ?. [ "userId" ] ) {
84
- cy . get ( ".mx_RightPanel_roomSummaryButton" ) . click ( ) ;
85
- cy . get ( ".mx_RoomSummaryCard_icon_people" ) . click ( ) ;
86
- cy . get ( ".mx_MemberList_query" ) . type ( data [ "userId" ] ) ;
87
- cy . get ( ".mx_MemberList_wrapper .mx_EntityTile" ) . click ( ) ;
88
- cy . get ( ".mx_UserInfo_verifyButton" ) . click ( ) ;
89
- cy . get ( ".mx_UserInfo_startVerification" ) . click ( ) ;
90
- } else {
91
- cy . gotoAllSettings ( ) ;
92
- cy . get ( "[data-testid='settings-tab-USER_SECURITY_TAB']" ) . click ( ) ;
93
- cy . contains ( "Verify" ) . first ( ) . click ( ) ;
94
- cy . contains ( "Verify with another device" ) . click ( ) ;
95
- }
96
- return 'started_crosssign' ;
93
+ return startCrossSigning ( data ) ;
97
94
case 'accept_crosssign' :
98
- // Can we please tag some buttons :)
99
- // Click 'Verify' when it comes up
100
- cy . get ( '.mx_Toast_buttons > .mx_AccessibleButton_kind_primary' ) . click ( ) ;
101
- // Click to move to emoji verification
102
- cy . wait ( 1000 ) . then ( ( ) => {
103
- // Choose whichever exists
104
- Cypress . $ ( ".mx_VerificationPanel_verifyByEmojiButton" ) ?. trigger ( "click" ) ;
105
- Cypress . $ ( '.mx_VerificationPanel_QRPhase_startOption > .mx_AccessibleButton' ) ?. trigger ( "click" ) ;
106
- } ) ;
107
- return 'accepted_crosssign' ;
95
+ return acceptCrossSigningRequest ( ) ;
108
96
case 'verify_crosssign_emoji' :
109
- cy . get ( '.mx_VerificationShowSas_buttonRow > .mx_AccessibleButton_kind_primary' ) . click ( ) ;
110
- cy . get ( '.mx_UserInfo_container > .mx_AccessibleButton' ) . click ( ) ;
111
- return 'verified_crosssign' ;
97
+ return verifyCrossSigningEmoji ( ) ;
112
98
case "verify_trusted_device" :
113
- cy . gotoAllSettings ( ) ;
114
- cy . get ( "[data-testid='settings-tab-USER_SECURITY_TAB']" ) . click ( ) ;
115
- // For now, we only care if there are any verified devices
116
- cy . contains ( / ^ V e r i f i e d d e v i c e s $ / ) ;
117
- cy . get ( ".mx_DevicesPanel_device" ) . children ( ) ;
118
- return "verified" ;
99
+ return verifyDeviceIsTrusted ( ) ;
100
+ case "enable_dehydrated_device" :
101
+ return enableDehydratedDevice ( data ) ;
102
+ case "enable_key_backup" :
103
+ return enableKeyBackup ( data ) ;
104
+
119
105
case 'idle' :
120
106
cy . wait ( 5000 ) ;
121
107
break ;
@@ -156,36 +142,6 @@ function runAction(action: string, data: JSONValue): string | undefined {
156
142
cy . get ( ".mx_Dialog_cancelButton" ) . click ( ) ;
157
143
cy . get ( "[data-test-id=base-card-close-button]" ) . click ( ) ;
158
144
return "changed" ;
159
- case "enable_dehydrated_device" : {
160
- cy . gotoAllSettings ( ) ;
161
- cy . get ( "[data-testid='settings-tab-USER_LABS_TAB']" ) . click ( ) ;
162
- cy . get ( "[aria-label='Offline encrypted messaging using dehydrated devices']" ) . click ( ) ;
163
- cy . get ( ".mx_Dialog_cancelButton" ) . click ( ) ;
164
- runAction ( "enable_key_backup" , data ) ;
165
- return "enabled_dehydrated_device" ;
166
- }
167
- case "enable_key_backup" : {
168
- cy . gotoAllSettings ( ) ;
169
- cy . get ( "[data-testid='settings-tab-USER_SECURITY_TAB']" ) . click ( ) ;
170
- cy . get ( ".mx_SecureBackupPanel_buttonRow" ) . contains ( "Set up" ) . click ( ) ;
171
- cy . get ( ".mx_CreateSecretStorageDialog_optionIcon_securePhrase" ) . click ( ) ;
172
- cy . get ( ".mx_CreateSecretStorageDialog [data-testid='dialog-primary-button']" ) . click ( ) ;
173
- const password = data [ "key_backup_passphrase" ] ;
174
- if ( ! password ) {
175
- throw new Error ( "'key_backup_passphrase' not in data for action 'enable_dehydrated_device'" ) ;
176
- }
177
- cy . get ( ".mx_CreateSecretStorageDialog_passPhraseContainer input[type='password']" ) . type ( password ) ;
178
- cy . get ( "[data-testid='dialog-primary-button']" ) . click ( ) ;
179
- // confirm the password again
180
- cy . get ( ".mx_CreateSecretStorageDialog_passPhraseContainer input[type='password']" ) . type ( password ) ;
181
- cy . get ( "[data-testid='dialog-primary-button']" ) . click ( ) ;
182
- // Continue to next screen
183
- cy . get ( "[data-testid='dialog-primary-button']" ) . click ( ) ;
184
- // Classic flakiness fix
185
- cy . wait ( 500 ) ;
186
- cy . get ( ".mx_CreateSecretStorageDialog" ) . contains ( "Continue" ) . click ( ) ;
187
- return "key_backup_enabled" ;
188
- }
189
145
case "invite_user" : {
190
146
cy . get ( ".mx_RightPanel_roomSummaryButton" ) . click ( ) ;
191
147
cy . get ( ".mx_RoomSummaryCard_icon_people" ) . click ( ) ;
0 commit comments