@@ -201,6 +201,30 @@ test.describe("Device verification", { tag: "@no-webkit" }, () => {
201201 await enterRecoveryKeyAndCheckVerified ( page , app , recoveryKey ) ;
202202 } ) ;
203203
204+ test ( "After cancelling verify with another device, I can try again #29882" , async ( { page, app, credentials } ) => {
205+ // Regression test for https://github.com/element-hq/element-web/issues/29882
206+
207+ // Log in without verifying
208+ await logIntoElement ( page , credentials ) ;
209+ const authPage = page . locator ( ".mx_AuthPage" ) ;
210+ await authPage . getByRole ( "button" , { name : "Skip verification for now" } ) . click ( ) ;
211+ await authPage . getByRole ( "button" , { name : "I'll verify later" } ) . click ( ) ;
212+ await page . waitForSelector ( ".mx_MatrixChat" ) ;
213+
214+ // Start to verify with "Use another device" but cancel
215+ const settings = await app . settings . openUserSettings ( "Encryption" ) ;
216+ await settings . getByRole ( "button" , { name : "Verify this device" } ) . click ( ) ;
217+ await page . getByRole ( "button" , { name : "Use another device" } ) . click ( ) ;
218+ await page . locator ( "#mx_Dialog_Container" ) . getByRole ( "button" , { name : "Close dialog" } ) . click ( ) ;
219+
220+ // Start again
221+ await settings . getByRole ( "button" , { name : "Verify this device" } ) . click ( ) ;
222+
223+ // We should be offered to use another device again.
224+ // (In the bug, we were immediately told that verification has been cancelled.)
225+ await expect ( page . getByRole ( "button" , { name : "Use another device" } ) ) . toBeVisible ( ) ;
226+ } ) ;
227+
204228 /** Helper for the three tests above which verify by recovery key */
205229 async function enterRecoveryKeyAndCheckVerified ( page : Page , app : ElementAppPage , recoveryKey : string ) {
206230 await page . getByRole ( "button" , { name : "Use recovery key" } ) . click ( ) ;
0 commit comments