Skip to content

Commit 7e084a2

Browse files
committed
Parse json in swtich case
1 parent 1ade086 commit 7e084a2

File tree

5 files changed

+117
-58
lines changed

5 files changed

+117
-58
lines changed

cypress/e2e/trafficlight/actions/browser.ts

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,18 @@ export function idle(): void {
2020
cy.wait(5000);
2121
}
2222

23-
export function wait(data: any): string {
24-
const time = data["time"]? parseInt(data["time"], 10): 5000;
25-
cy.wait(time);
23+
export function wait(time: string): string {
24+
const _time = time ? parseInt(time, 10): 5000;
25+
cy.wait(_time);
2626
return "wait_over";
2727
}
2828

29-
export function advanceClock(data: any): string {
30-
cy.clock().tick(data["milliseconds"]);
29+
export function advanceClock(milliseconds: string): string {
30+
const millisecondsAsNumber = parseInt(milliseconds, 10);
31+
if (isNaN(millisecondsAsNumber)) {
32+
throw new Error(`Cannot convert ${milliseconds} to integer!`);
33+
}
34+
cy.clock().tick(millisecondsAsNumber);
3135
return "advanced_clock";
3236
}
3337

cypress/e2e/trafficlight/actions/e2ee.ts

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,11 @@ limitations under the License.
1616

1717
/// <reference types='cypress' />
1818

19-
export function startCrossSigning(data: any): string {
20-
if (data?.["userId"]) {
19+
export function startCrossSigning(userId: string): string {
20+
if (userId) {
2121
cy.get(".mx_RightPanel_roomSummaryButton").click();
2222
cy.get(".mx_RoomSummaryCard_icon_people").click();
23-
cy.get(".mx_MemberList_query").type(data["userId"]);
23+
cy.get(".mx_MemberList_query").type(userId);
2424
cy.get(".mx_MemberList_wrapper .mx_EntityTile").click();
2525
cy.get(".mx_UserInfo_verifyButton").click();
2626
cy.get(".mx_UserInfo_startVerification").click();
@@ -62,20 +62,16 @@ export function verifyDeviceIsTrusted(): string {
6262
return "verified";
6363
}
6464

65-
export function enableKeyBackup(data: any): string {
65+
export function enableKeyBackup(passphrase: string): string {
6666
cy.gotoAllSettings();
6767
cy.get("[data-testid='settings-tab-USER_SECURITY_TAB']").click();
6868
cy.get(".mx_SecureBackupPanel_buttonRow").contains("Set up").click();
6969
cy.get(".mx_CreateSecretStorageDialog_optionIcon_securePhrase").click();
7070
cy.get(".mx_CreateSecretStorageDialog [data-testid='dialog-primary-button']").click();
71-
const password = data["key_backup_passphrase"];
72-
if (!password) {
73-
throw new Error("'key_backup_passphrase' not in data for action 'enable_dehydrated_device'");
74-
}
75-
cy.get(".mx_CreateSecretStorageDialog_passPhraseContainer input[type='password']").type(password);
71+
cy.get(".mx_CreateSecretStorageDialog_passPhraseContainer input[type='password']").type(passphrase);
7672
cy.get("[data-testid='dialog-primary-button']").click();
7773
// confirm the password again
78-
cy.get(".mx_CreateSecretStorageDialog_passPhraseContainer input[type='password']").type(password);
74+
cy.get(".mx_CreateSecretStorageDialog_passPhraseContainer input[type='password']").type(passphrase);
7975
cy.get("[data-testid='dialog-primary-button']").click();
8076
// Continue to next screen
8177
cy.get("[data-testid='dialog-primary-button']").click();
@@ -85,11 +81,11 @@ export function enableKeyBackup(data: any): string {
8581
return "key_backup_enabled";
8682
}
8783

88-
export function enableDehydratedDevice(data: any): string {
84+
export function enableDehydratedDevice(passphrase: string): string {
8985
cy.gotoAllSettings();
9086
cy.get("[data-testid='settings-tab-USER_LABS_TAB']").click();
9187
cy.get("[aria-label='Offline encrypted messaging using dehydrated devices']").click();
9288
cy.get(".mx_Dialog_cancelButton").click();
93-
enableKeyBackup(data);
89+
enableKeyBackup(passphrase);
9490
return "enabled_dehydrated_device";
9591
}

cypress/e2e/trafficlight/actions/room.ts

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,12 @@ limitations under the License.
1616

1717
/// <reference types='cypress' />
1818

19-
export function createRoom(data: any): string {
19+
export function createRoom(name: string, topic: string): string {
2020
cy.get('.mx_RoomListHeader_plusButton').click();
2121
cy.get('.mx_ContextualMenu').contains('New room').click();
22-
cy.get('.mx_CreateRoomDialog_name input').type(data['name']);
23-
if (data['topic']) {
24-
cy.get('.mx_CreateRoomDialog_topic input').type(data['topic']);
22+
cy.get('.mx_CreateRoomDialog_name input').type(name);
23+
if (topic) {
24+
cy.get('.mx_CreateRoomDialog_topic input').type(topic);
2525
}
2626
// do this to prevent https://github.com/vector-im/element-web/issues/22590, weirdly
2727
// cy.get('.mx_CreateRoomDialog_name input').click();
@@ -32,28 +32,27 @@ export function createRoom(data: any): string {
3232
return "room_created";
3333
}
3434

35-
export function createDm(data: any): string {
35+
export function createDm(userId: string): string {
3636
cy.get('.mx_RoomListHeader_plusButton').click();
3737
cy.get('.mx_ContextualMenu').contains('Start new chat').click();
38-
cy.get('[data-testid="invite-dialog-input"]').type(`@${data["userId"]}`);
38+
cy.get('[data-testid="invite-dialog-input"]').type(`@${userId}`);
3939
cy.get('.mx_InviteDialog_goButton').click();
4040
return "dm_created";
4141
}
4242

43-
export function changeRoomHistoryVisibility(data: any): string {
43+
export function changeRoomHistoryVisibility(historyVisibility: string): string {
4444
cy.get(".mx_RightPanel_roomSummaryButton").click();
4545
cy.get(".mx_RoomSummaryCard_icon_settings").click();
4646
cy.get(`[data-testid='settings-tab-ROOM_SECURITY_TAB']`).click();
4747
// should be either "shared", "invited" or "joined"
48-
// TODO: has doesn't seem to work
49-
cy.get(`#historyVis-${data['historyVisibility']}`).parents("label").click();
48+
cy.get(`#historyVis-${historyVisibility}`).parents("label").click();
5049
cy.get(".mx_Dialog_cancelButton").click();
5150
cy.get("[data-test-id=base-card-close-button]").click();
5251
return "changed";
5352
}
5453

55-
export function openRoom(data: any): string {
56-
cy.get(".mx_RoomSublist_tiles").contains(data["name"]).click();
54+
export function openRoom(name: string): string {
55+
cy.get(".mx_RoomSublist_tiles").contains(name).click();
5756
return "room_opened";
5857
}
5958

@@ -63,12 +62,12 @@ export function acceptInvite(): string {
6362
return "accepted";
6463
}
6564

66-
export function inviteUser(data: any): string {
65+
export function inviteUser(userId: string): string {
6766
cy.get(".mx_RightPanel_roomSummaryButton").click();
6867
cy.get(".mx_RoomSummaryCard_icon_people").click();
6968
cy.get(".mx_MemberList_invite").click();
7069
cy.get(".mx_InviteDialog_addressBar input")
71-
.type(`@${data["userId"]}`)
70+
.type(`@${userId}`)
7271
.type("{enter}");
7372
cy.get(".mx_InviteDialog_goButton").click();
7473
cy.get(".mx_AccessibleButton.mx_BaseCard_back").click();

cypress/e2e/trafficlight/actions/timeline.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,17 +16,17 @@ limitations under the License.
1616

1717
/// <reference types='cypress' />
1818

19-
export function sendMessage(data: any): string {
19+
export function sendMessage(message: string): string {
2020
cy.get(".mx_SendMessageComposer div[contenteditable=true]")
2121
.click()
22-
.type(data["message"])
22+
.type(message)
2323
.type("{enter}");
2424
//cy.contains(data['message']).closest('mx_EventTile').should('have.class', 'mx_EventTile_receiptSent');
2525
return "message_sent";
2626
}
2727

28-
export function verifyMessageInTimeline(data: any): string {
29-
cy.contains(data["message"]);
28+
export function verifyMessageInTimeline(message: string): string {
29+
cy.contains(message);
3030
return "verified";
3131
}
3232

cypress/e2e/trafficlight/trafficlight.spec.ts

Lines changed: 84 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -141,38 +141,91 @@ function runAction(action: string, data: JSONValue): string | undefined {
141141
return logout();
142142

143143
// E2EE
144-
case 'start_crosssign':
145-
return startCrossSigning(data);
144+
case 'start_crosssign': {
145+
const userId = data?.["userId"];
146+
return startCrossSigning(userId);
147+
}
146148
case 'accept_crosssign':
147149
return acceptCrossSigningRequest();
148150
case 'verify_crosssign_emoji':
149151
return verifyCrossSigningEmoji();
150152
case "verify_trusted_device":
151153
return verifyDeviceIsTrusted();
152-
case "enable_dehydrated_device":
153-
return enableDehydratedDevice(data);
154-
case "enable_key_backup":
155-
return enableKeyBackup(data);
154+
case "enable_dehydrated_device": {
155+
const passphrase = data?.["key_backup_passphrase"];
156+
if (!passphrase) {
157+
throw new Error("'key_backup_passphrase' not in data for action 'enable_dehydrated_device'");
158+
}
159+
return enableDehydratedDevice(passphrase);
160+
}
161+
case "enable_key_backup": {
162+
const passphrase = data?.["key_backup_passphrase"];
163+
if (!passphrase) {
164+
throw new Error("'key_backup_passphrase' not in data for action 'enable_key_backup'");
165+
}
166+
return enableKeyBackup(passphrase);
167+
}
156168

157169
// Room
158-
case 'create_room':
159-
return createRoom(data);
160-
case 'create_dm':
161-
return createDm(data);
162-
case "change_room_history_visibility":
163-
return changeRoomHistoryVisibility(data);
164-
case "open_room":
165-
return openRoom(data);
170+
case 'create_room': {
171+
const name = data?.["name"];
172+
if (!name) {
173+
throw new Error("'name' not in data for action 'create_room'");
174+
}
175+
const topic = data?.["topic"];
176+
return createRoom(name, topic);
177+
}
178+
case 'create_dm': {
179+
const userId = data?.["userId"];
180+
if (!userId) {
181+
throw new Error("'id' not in data for action 'create_dm'");
182+
}
183+
return createDm(userId);
184+
}
185+
case "change_room_history_visibility": {
186+
const historyVisiblity = data["historyVisibility"];
187+
if (!historyVisiblity) {
188+
throw new Error("'historyVisibility' not in data for action 'change_room_history_visibility'");
189+
}
190+
const acceptedValues = ["shared", "invited", "joined"];
191+
if (!acceptedValues.includes(historyVisiblity)) {
192+
throw new Error(
193+
`historyVisibility should be one of ${acceptedValues.join(", ")}, but found ${historyVisiblity}!`);
194+
}
195+
return changeRoomHistoryVisibility(historyVisiblity);
196+
}
197+
case "open_room": {
198+
const name = data["name"];
199+
if (!name) {
200+
throw new Error("'name' not in data for action 'open_room'");
201+
}
202+
return openRoom(name);
203+
}
166204
case "accept_invite":
167205
return acceptInvite();
168-
case "invite_user":
169-
return inviteUser(data);
206+
case "invite_user": {
207+
const userId = data["userId"];
208+
if (!userId) {
209+
throw new Error("'userId' not in data for action 'invite_user'");
210+
}
211+
return inviteUser(userId);
212+
}
170213

171214
// Timeline
172-
case 'send_message':
173-
return sendMessage(data);
174-
case "verify_message_in_timeline":
175-
return verifyMessageInTimeline(data);
215+
case 'send_message': {
216+
const message = data["message"];
217+
if (!message) {
218+
throw new Error("'message' not in data for action 'send_message'");
219+
}
220+
return sendMessage(message);
221+
}
222+
case "verify_message_in_timeline": {
223+
const message = data["message"];
224+
if (!message) {
225+
throw new Error("'message' not in data for action 'verify_message_in_timeline'");
226+
}
227+
return verifyMessageInTimeline(message);
228+
}
176229
case "verify_last_message_is_utd":
177230
return verifyLastMessageIsUTD();
178231
case "verify_last_message_is_trusted":
@@ -182,10 +235,17 @@ function runAction(action: string, data: JSONValue): string | undefined {
182235
case 'idle':
183236
idle();
184237
break;
185-
case 'wait':
186-
return wait(data);
187-
case "advance_clock":
188-
return advanceClock(data);
238+
case 'wait': {
239+
const time = data?.["time"];
240+
return wait(time);
241+
}
242+
case "advance_clock": {
243+
const milliseconds = data["milliseconds"];
244+
if (!milliseconds) {
245+
throw new Error("'milliseconds' not in data for action 'advance_clock'");
246+
}
247+
return advanceClock(milliseconds);
248+
}
189249
case "clear_idb_storage":
190250
return clearIDBStorage();
191251
case "reload":

0 commit comments

Comments
 (0)