@@ -8,7 +8,7 @@ Please see LICENSE files in the repository root for full details.
8
8
9
9
import { test , expect } from "../../element-web-test" ;
10
10
import { isDendrite } from "../../plugins/homeserver/dendrite" ;
11
- import { completeCreateSecretStorageDialog , createBot , logIntoElement } from "./utils.ts" ;
11
+ import { createBot , logIntoElement } from "./utils.ts" ;
12
12
import { type Client } from "../../pages/client.ts" ;
13
13
import { type ElementAppPage } from "../../pages/ElementAppPage.ts" ;
14
14
@@ -28,21 +28,27 @@ test.describe("Dehydration", () => {
28
28
test . skip ( isDendrite , "does not yet support dehydration v2" ) ;
29
29
30
30
test ( "Verify device and reset creates dehydrated device" , async ( { page, user, credentials, app } , workerInfo ) => {
31
- // Verify the device by resetting the key (which will create SSSS, and dehydrated device)
31
+ // Verify the device by resetting the identity key, and then set up recovery (which will create SSSS, and dehydrated device)
32
32
33
33
const securityTab = await app . settings . openUserSettings ( "Security & Privacy" ) ;
34
34
await expect ( securityTab . getByText ( "Offline device enabled" ) ) . not . toBeVisible ( ) ;
35
35
36
36
await app . closeDialog ( ) ;
37
37
38
- // Verify the device by resetting the key
38
+ // Reset the identity key
39
39
const settings = await app . settings . openUserSettings ( "Encryption" ) ;
40
40
await settings . getByRole ( "button" , { name : "Verify this device" } ) . click ( ) ;
41
41
await page . getByRole ( "button" , { name : "Proceed with reset" } ) . click ( ) ;
42
42
await page . getByRole ( "button" , { name : "Continue" } ) . click ( ) ;
43
- await page . getByRole ( "button" , { name : "Copy" } ) . click ( ) ;
43
+
44
+ // Set up recovery
45
+ await page . getByRole ( "button" , { name : "Set up recovery" } ) . click ( ) ;
46
+ await page . getByRole ( "button" , { name : "Continue" } ) . click ( ) ;
47
+ const recoveryKey = await page . getByTestId ( "recoveryKey" ) . innerText ( ) ;
44
48
await page . getByRole ( "button" , { name : "Continue" } ) . click ( ) ;
45
- await page . getByRole ( "button" , { name : "Done" } ) . click ( ) ;
49
+ await page . getByRole ( "textbox" ) . fill ( recoveryKey ) ;
50
+ await page . getByRole ( "button" , { name : "Finish set up" } ) . click ( ) ;
51
+ await page . getByRole ( "button" , { name : "Close" } ) . click ( ) ;
46
52
47
53
await expectDehydratedDeviceEnabled ( app ) ;
48
54
@@ -80,7 +86,7 @@ test.describe("Dehydration", () => {
80
86
await expectDehydratedDeviceEnabled ( app ) ;
81
87
} ) ;
82
88
83
- test ( "Reset recovery key during login re-creates dehydrated device" , async ( {
89
+ test ( "Reset identity during login and set up recovery re-creates dehydrated device" , async ( {
84
90
page,
85
91
homeserver,
86
92
app,
@@ -99,16 +105,26 @@ test.describe("Dehydration", () => {
99
105
// Log in our client
100
106
await logIntoElement ( page , credentials ) ;
101
107
102
- // Oh no, we forgot our recovery key
108
+ // Oh no, we forgot our recovery key - reset our identity
103
109
await page . locator ( ".mx_AuthPage" ) . getByRole ( "button" , { name : "Reset all" } ) . click ( ) ;
104
- await page . locator ( ".mx_AuthPage" ) . getByRole ( "button" , { name : "Proceed with reset" } ) . click ( ) ;
110
+ await expect (
111
+ page . getByRole ( "heading" , { name : "Are you sure you want to reset your identity?" } ) ,
112
+ ) . toBeVisible ( ) ;
113
+ await page . getByRole ( "button" , { name : "Continue" , exact : true } ) . click ( ) ;
114
+ await page . getByPlaceholder ( "Password" ) . fill ( credentials . password ) ;
115
+ await page . getByRole ( "button" , { name : "Continue" } ) . click ( ) ;
105
116
106
- await completeCreateSecretStorageDialog ( page , { accountPassword : credentials . password } ) ;
117
+ // And set up recovery
118
+ const settings = await app . settings . openUserSettings ( "Encryption" ) ;
119
+ await settings . getByRole ( "button" , { name : "Set up recovery" } ) . click ( ) ;
120
+ await settings . getByRole ( "button" , { name : "Continue" } ) . click ( ) ;
121
+ const recoveryKey = await settings . getByTestId ( "recoveryKey" ) . innerText ( ) ;
122
+ await settings . getByRole ( "button" , { name : "Continue" } ) . click ( ) ;
123
+ await settings . getByRole ( "textbox" ) . fill ( recoveryKey ) ;
124
+ await settings . getByRole ( "button" , { name : "Finish set up" } ) . click ( ) ;
107
125
108
126
// There should be a brand new dehydrated device
109
- const dehydratedDeviceIds = await getDehydratedDeviceIds ( app . client ) ;
110
- expect ( dehydratedDeviceIds . length ) . toBe ( 1 ) ;
111
- expect ( dehydratedDeviceIds [ 0 ] ) . not . toEqual ( initialDehydratedDeviceIds [ 0 ] ) ;
127
+ await expectDehydratedDeviceEnabled ( app ) ;
112
128
} ) ;
113
129
114
130
test ( "'Reset cryptographic identity' removes dehydrated device" , async ( { page, homeserver, app, credentials } ) => {
0 commit comments