@@ -10,6 +10,7 @@ import {
1010} from "../utils" ;
1111
1212const TEST_USER_NAME = "Test User" ;
13+ const TEST_USER_NAME_2 = "Test User 2" ;
1314
1415const createLegacyIdentity = async ( page : Page ) => {
1516 await page . getByRole ( "button" , { name : "Create Internet Identity" } ) . click ( ) ;
@@ -115,4 +116,69 @@ test.describe("Migration", () => {
115116 } ) ,
116117 ) . toBeVisible ( ) ;
117118 } ) ;
119+
120+ test ( "User can go through the upgrade flow again" , async ( { page } ) => {
121+ // Step 1: Create a legacy identity
122+ await page . goto ( LEGACY_II_URL ) ;
123+
124+ await addVirtualAuthenticator ( page ) ;
125+ const identityNumber = await createLegacyIdentity ( page ) ;
126+
127+ // Step 2: Navigate to the new II_URL to start the migration
128+ await page . goto ( II_URL ) ;
129+ await page . getByRole ( "link" , { name : "Manage Identity" } ) . click ( ) ;
130+
131+ // Step 3: Perform the first migration
132+ const auth = dummyAuth ( ) ;
133+ await upgradeLegacyIdentity ( page , identityNumber , auth ) ;
134+
135+ // Step 4: Verify the migration was successful
136+ await page . waitForURL ( II_URL + "/manage" ) ;
137+ await expect (
138+ page . getByRole ( "heading" , {
139+ name : new RegExp ( `Welcome, ${ TEST_USER_NAME } !` ) ,
140+ } ) ,
141+ ) . toBeVisible ( ) ;
142+
143+ // Step 5: Sign out
144+ await signOut ( page ) ;
145+
146+ // Step 6: Navigate back to upgrade flow with the same identity number
147+ await page . goto ( II_URL ) ;
148+ const auth2 = dummyAuth ( ) ;
149+
150+ await page . getByRole ( "link" , { name : "Manage Identity" } ) . click ( ) ;
151+ await page . getByRole ( "button" , { name : "Use another identity" } ) . click ( ) ;
152+ await page . getByRole ( "button" , { name : "Upgrade" } ) . click ( ) ;
153+ await page
154+ . getByPlaceholder ( "Internet Identity number" )
155+ . fill ( identityNumber ) ;
156+ await page . getByRole ( "button" , { name : "Continue" } ) . click ( ) ;
157+
158+ // Step 7: Verify "Identity already upgraded" screen appears
159+ await expect (
160+ page . getByRole ( "heading" , { name : "Identity already upgraded" } ) ,
161+ ) . toBeVisible ( ) ;
162+ await expect (
163+ page . getByText (
164+ "This identity has already been upgraded to the new experience" ,
165+ ) ,
166+ ) . toBeVisible ( ) ;
167+
168+ // Step 8: Click "Upgrade again" button
169+ await page . getByRole ( "button" , { name : "Upgrade again" } ) . click ( ) ;
170+
171+ // Step 9: Complete the upgrade flow again with a different name
172+ await page . getByLabel ( "Identity name" ) . fill ( TEST_USER_NAME_2 ) ;
173+ auth2 ( page ) ;
174+ await page . getByRole ( "button" , { name : "Create Passkey" } ) . click ( ) ;
175+
176+ // Step 10: Verify the second upgrade was successful
177+ await page . waitForURL ( II_URL + "/manage" ) ;
178+ await expect (
179+ page . getByRole ( "heading" , {
180+ name : new RegExp ( `Welcome, ${ TEST_USER_NAME_2 } !` ) ,
181+ } ) ,
182+ ) . toBeVisible ( ) ;
183+ } ) ;
118184} ) ;
0 commit comments