|  |  |  | import { _electron, Page, test } from '@playwright/test'; | 
					
						
							|  |  |  | import { beforeAllClean, forceCloseAllWindows } from './setup/beforeEach'; | 
					
						
							|  |  |  | import { openAppsAndNewUsers, openAppsNoNewUsers } from './setup/new_user'; | 
					
						
							|  |  |  | import { sendNewMessage } from './send_message'; | 
					
						
							|  |  |  | import { clickOnMatchingText, clickOnTestIdWithText, typeIntoInput } from './utils'; | 
					
						
							|  |  |  | import { sleepFor } from '../../session/utils/Promise'; | 
					
						
							|  |  |  | // tslint:disable: no-console
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | let windows: Array<Page> = []; | 
					
						
							|  |  |  | test.beforeEach(beforeAllClean); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | test.afterEach(() => forceCloseAllWindows(windows)); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | test('Delete account from swarm', async () => { | 
					
						
							|  |  |  |   const testMessage = `A -> B: ${Date.now()}`; | 
					
						
							|  |  |  |   const testReply = `B -> A: ${Date.now()}`; | 
					
						
							|  |  |  |   const windowLoggedIn = await openAppsAndNewUsers(2); | 
					
						
							|  |  |  |   windows = windowLoggedIn.windows; | 
					
						
							|  |  |  |   const [windowA, windowB] = windows; | 
					
						
							|  |  |  |   const [userA, userB] = windowLoggedIn.users; | 
					
						
							|  |  |  |   // Create contact and send new message
 | 
					
						
							|  |  |  |   await Promise.all([ | 
					
						
							|  |  |  |     sendNewMessage(windowA, userB.sessionid, testMessage), | 
					
						
							|  |  |  |     sendNewMessage(windowB, userA.sessionid, testReply), | 
					
						
							|  |  |  |   ]); | 
					
						
							|  |  |  |   // Delete all data from device
 | 
					
						
							|  |  |  |   // Click on settings tab
 | 
					
						
							|  |  |  |   await clickOnTestIdWithText(windowA, 'settings-section'); | 
					
						
							|  |  |  |   // Click on clear all data
 | 
					
						
							|  |  |  |   await clickOnTestIdWithText(windowA, 'clear-data-settings-menu-item', 'Clear Data'); | 
					
						
							|  |  |  |   // Select entire account
 | 
					
						
							|  |  |  |   await clickOnTestIdWithText(windowA, 'label-device_and_network', 'Clear Device and Network'); | 
					
						
							|  |  |  |   // Confirm deletion by clicking Clear, twice
 | 
					
						
							|  |  |  |   await clickOnMatchingText(windowA, 'Clear'); | 
					
						
							|  |  |  |   await clickOnMatchingText(windowA, 'Clear'); | 
					
						
							|  |  |  |   await windowA.waitForTimeout(7500); | 
					
						
							|  |  |  |   // Wait for window to close and reopen
 | 
					
						
							|  |  |  |   await sleepFor(10000, true); | 
					
						
							|  |  |  |   // await windowA.close();
 | 
					
						
							|  |  |  |   const restoringWindows = await openAppsNoNewUsers(1); | 
					
						
							|  |  |  |   const [restoringWindow] = restoringWindows; | 
					
						
							|  |  |  |   // Sign in with deleted account and check that nothing restores
 | 
					
						
							|  |  |  |   await clickOnTestIdWithText(restoringWindow, 'restore-using-recovery', 'Restore your account'); | 
					
						
							|  |  |  |   // Fill in recovery phrase
 | 
					
						
							|  |  |  |   await typeIntoInput(restoringWindow, 'recovery-phrase-input', userA.recoveryPhrase); | 
					
						
							|  |  |  |   // Enter display name
 | 
					
						
							|  |  |  |   await typeIntoInput(restoringWindow, 'display-name-input', userA.userName); | 
					
						
							|  |  |  |   // Click continue
 | 
					
						
							|  |  |  |   await clickOnTestIdWithText(restoringWindow, 'continue-session-button'); | 
					
						
							|  |  |  |   console.log('sleeping for 20000ms'); | 
					
						
							|  |  |  |   await sleepFor(20000); // just to allow any messages from our swarm to show up
 | 
					
						
							|  |  |  |   // Check if message from user B is restored (we don't want it to be)
 | 
					
						
							|  |  |  |   const errorDesc = 'Test Message should not be found'; | 
					
						
							|  |  |  |   try { | 
					
						
							|  |  |  |     const elemShouldNotBeFound = restoringWindow.locator(testMessage); | 
					
						
							|  |  |  |     if (elemShouldNotBeFound) { | 
					
						
							|  |  |  |       console.error('Test message was not found'); | 
					
						
							|  |  |  |       throw new Error(errorDesc); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |   } catch (e) { | 
					
						
							|  |  |  |     if (e.message !== errorDesc) { | 
					
						
							|  |  |  |       throw e; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   await clickOnTestIdWithText(restoringWindow, 'new-conversation-button'); // Expect contacts list to be empty
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   const errorDesc2 = 'Should not be found'; | 
					
						
							|  |  |  |   try { | 
					
						
							|  |  |  |     const elemShouldNotBeFound = restoringWindow.locator(userB.userName); | 
					
						
							|  |  |  |     if (elemShouldNotBeFound) { | 
					
						
							|  |  |  |       console.error('Contact not found'); | 
					
						
							|  |  |  |       throw new Error(errorDesc2); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |   } catch (e) { | 
					
						
							|  |  |  |     if (e.message !== errorDesc2) { | 
					
						
							|  |  |  |       throw e; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   await forceCloseAllWindows(restoringWindows); | 
					
						
							|  |  |  | }); |