diff --git a/e2e/00-onboarding.spec.js b/e2e/01-onboarding.spec.js
similarity index 98%
rename from e2e/00-onboarding.spec.js
rename to e2e/01-onboarding.spec.js
index a19ae41b2..900947b37 100644
--- a/e2e/00-onboarding.spec.js
+++ b/e2e/01-onboarding.spec.js
@@ -3,7 +3,7 @@ const {
 } = require('detox');
 const data = require('./data');
 
-describe.skip('Onboarding', () => {
+describe('Onboarding', () => {
 	before(async() => {
 		await waitFor(element(by.id('onboarding-view'))).toBeVisible().withTimeout(2000);
 	});
diff --git a/e2e/01-welcome.spec.js_ b/e2e/01-welcome.spec.js_
deleted file mode 100644
index c78cd09bc..000000000
--- a/e2e/01-welcome.spec.js_
+++ /dev/null
@@ -1,50 +0,0 @@
-const {
-	device, expect, element, by, waitFor
-} = require('detox');
-const { tapBack } = require('./helpers/app');
-
-describe('Welcome screen', () => {
-	before(async() => {
-		await device.launchApp({ newInstance: true });
-		await element(by.id('join-community-button')).tap();
-		await waitFor(element(by.id('welcome-view'))).toBeVisible().withTimeout(60000);
-	})
-
-	describe('Render', async() => {
-		it('should have welcome screen', async() => {
-			await expect(element(by.id('welcome-view'))).toBeVisible();
-		});
-
-		it('should have register button', async() => {
-			await expect(element(by.id('welcome-view-register'))).toBeVisible();
-		});
-	
-		it('should have login button', async() => {
-			await expect(element(by.id('welcome-view-login'))).toBeVisible();
-		});
-
-		// TODO: oauth
-	});
-
-	describe('Usage', async() => {
-		it('should navigate to login', async() => {
-			await element(by.id('welcome-view-login')).tap();
-			await waitFor(element(by.id('login-view'))).toBeVisible().withTimeout(2000);
-			await expect(element(by.id('login-view'))).toBeVisible();
-		});
-		
-		it('should navigate to register', async() => {
-			await tapBack();
-			await element(by.id('welcome-view-register')).tap();
-			await waitFor(element(by.id('register-view'))).toBeVisible().withTimeout(2000);
-			await expect(element(by.id('register-view'))).toBeVisible();
-		});
-
-		it('should navigate to legal', async() => {
-			await tapBack();
-			await element(by.id('welcome-view-more')).tap();
-			await waitFor(element(by.id('legal-view'))).toBeVisible().withTimeout(2000);
-			await expect(element(by.id('legal-view'))).toBeVisible();
-		});
-	});
-});
diff --git a/e2e/02-legal.spec.js b/e2e/02-legal.spec.js
new file mode 100644
index 000000000..b61480af7
--- /dev/null
+++ b/e2e/02-legal.spec.js
@@ -0,0 +1,57 @@
+const {
+	device, expect, element, by, waitFor
+} = require('detox');
+const { navigateToRegister, navigateToLogin } = require('./helpers/app');
+
+describe('Legal screen', () => {
+	it('should have legal button on login', async() => {
+		await device.launchApp({ newInstance: true });
+		await navigateToLogin();
+		await waitFor(element(by.id('login-view-more'))).toBeVisible().withTimeout(60000);
+		await expect(element(by.id('login-view-more'))).toBeVisible();
+	});
+
+	it('should navigate to legal from login', async() => {
+		await waitFor(element(by.id('login-view-more'))).toBeVisible().withTimeout(60000);
+		await element(by.id('login-view-more')).tap();
+	});
+
+	it('should have legal button on register', async() => {
+		await device.launchApp({ newInstance: true });
+		await navigateToRegister();
+		await waitFor(element(by.id('register-view-more'))).toBeVisible().withTimeout(60000);
+		await expect(element(by.id('register-view-more'))).toBeVisible();
+	});
+
+	it('should navigate to legal from register', async() => {
+		await waitFor(element(by.id('register-view-more'))).toBeVisible().withTimeout(60000);
+		await element(by.id('register-view-more')).tap();
+	});
+
+	it('should have legal screen', async() => {
+		await expect(element(by.id('legal-view'))).toBeVisible();
+	});
+
+	it('should have terms of service button', async() => {
+		await expect(element(by.id('legal-terms-button'))).toBeVisible();
+	});
+
+	it('should have privacy policy button', async() => {
+		await expect(element(by.id('legal-privacy-button'))).toBeVisible();
+	});
+	
+
+	// We can't simulate how webview behaves, so I had to disable :(
+	// it('should navigate to terms', async() => {
+	// 	await element(by.id('legal-terms-button')).tap();
+	// 	await waitFor(element(by.id('terms-view'))).toBeVisible().withTimeout(2000);
+	// 	await expect(element(by.id('terms-view'))).toBeVisible();
+	// });
+	
+	// it('should navigate to privacy', async() => {
+	// 	await tapBack();
+	// 	await element(by.id('legal-privacy-button')).tap();
+	// 	await waitFor(element(by.id('privacy-view'))).toBeVisible().withTimeout(2000);
+	// 	await expect(element(by.id('privacy-view'))).toBeVisible();
+	// });
+});
diff --git a/e2e/02-legal.spec.js_ b/e2e/02-legal.spec.js_
deleted file mode 100644
index bd5f19183..000000000
--- a/e2e/02-legal.spec.js_
+++ /dev/null
@@ -1,47 +0,0 @@
-const {
-	device, expect, element, by, waitFor
-} = require('detox');
-const { tapBack } = require('./helpers/app');
-
-describe('Legal screen', () => {
-	before(async() => {
-		await waitFor(element(by.id('legal-view'))).toBeVisible().withTimeout(2000);
-		await expect(element(by.id('legal-view'))).toBeVisible();
-	})
-
-	describe('Render', async() => {
-		it('should have legal screen', async() => {
-			await expect(element(by.id('legal-view'))).toBeVisible();
-		});
-
-		it('should have terms of service button', async() => {
-			await expect(element(by.id('legal-terms-button'))).toBeVisible();
-		});
-	
-		it('should have privacy policy button', async() => {
-			await expect(element(by.id('legal-privacy-button'))).toBeVisible();
-		});
-	});
-
-	describe('Usage', async() => {
-		// We can't simulate how webview behaves, so I had to disable :(
-		// it('should navigate to terms', async() => {
-		// 	await element(by.id('legal-terms-button')).tap();
-		// 	await waitFor(element(by.id('terms-view'))).toBeVisible().withTimeout(2000);
-		// 	await expect(element(by.id('terms-view'))).toBeVisible();
-		// });
-		
-		// it('should navigate to privacy', async() => {
-		// 	await tapBack();
-		// 	await element(by.id('legal-privacy-button')).tap();
-		// 	await waitFor(element(by.id('privacy-view'))).toBeVisible().withTimeout(2000);
-		// 	await expect(element(by.id('privacy-view'))).toBeVisible();
-		// });
-
-		it('should navigate to welcome', async() => {
-			await tapBack();
-			await waitFor(element(by.id('welcome-view'))).toBeVisible().withTimeout(60000);
-			await expect(element(by.id('welcome-view'))).toBeVisible();
-		});
-	});
-});
diff --git a/e2e/03-forgotpassword.spec.js b/e2e/03-forgotpassword.spec.js
index c06a86960..83bd53e50 100644
--- a/e2e/03-forgotpassword.spec.js
+++ b/e2e/03-forgotpassword.spec.js
@@ -4,7 +4,7 @@ const {
 const data = require('./data');
 const { navigateToLogin } = require('./helpers/app');
 
-describe.only('Forgot password screen', () => {
+describe('Forgot password screen', () => {
 	before(async() => {
 		await device.launchApp({ newInstance: true });
 		await navigateToLogin();
diff --git a/e2e/04-createuser.spec.js b/e2e/04-createuser.spec.js
index df5d1962f..7f2442bfb 100644
--- a/e2e/04-createuser.spec.js
+++ b/e2e/04-createuser.spec.js
@@ -1,22 +1,10 @@
 const {
 	device, expect, element, by, waitFor
 } = require('detox');
-const { logout, sleep } = require('./helpers/app');
+const { navigateToRegister, sleep } = require('./helpers/app');
 const data = require('./data');
 
-async function navigateToRegister() {
-	await device.launchApp({ newInstance: true });
-	await waitFor(element(by.id('onboarding-view'))).toBeVisible().withTimeout(2000);
-	await element(by.id('join-workspace')).tap();
-	await waitFor(element(by.id('new-server-view'))).toBeVisible().withTimeout(60000);
-	await element(by.id('new-server-view-input')).replaceText(data.server);
-	await element(by.id('new-server-view-button')).tap();
-	await waitFor(element(by.id('workspace-view'))).toBeVisible().withTimeout(60000);
-	await expect(element(by.id('workspace-view'))).toBeVisible();
-	await element(by.id('workspace-view-register')).tap();
-}
-
-describe.skip('Create user screen', () => {
+describe('Create user screen', () => {
 	before(async() => {
 		await device.launchApp({ newInstance: true });
 		await navigateToRegister();
diff --git a/e2e/05-login.spec.js b/e2e/05-login.spec.js
index eb12f0577..3b1f45eec 100644
--- a/e2e/05-login.spec.js
+++ b/e2e/05-login.spec.js
@@ -4,7 +4,7 @@ const {
 const { navigateToLogin, tapBack, sleep } = require('./helpers/app');
 const data = require('./data');
 
-describe.skip('Login screen', () => {
+describe('Login screen', () => {
 	before(async() => {
 		await device.launchApp({ permissions: { notifications: 'YES' }, newInstance: true, delete: true });
 		await navigateToLogin();
diff --git a/e2e/06-roomslist.spec.js b/e2e/06-roomslist.spec.js
index 50d3fc76e..638585b17 100644
--- a/e2e/06-roomslist.spec.js
+++ b/e2e/06-roomslist.spec.js
@@ -4,7 +4,7 @@ const {
 const { login, logout, navigateToLogin, tapBack, sleep } = require('./helpers/app');
 const data = require('./data');
 
-describe.skip('Rooms list screen', () => {
+describe('Rooms list screen', () => {
 	describe('Render', () => {
 		it('should have rooms list screen', async() => {
 			await expect(element(by.id('rooms-list-view'))).toBeVisible();
diff --git a/e2e/07-createroom.spec.js b/e2e/07-createroom.spec.js
index aafad7d70..79ae561fd 100644
--- a/e2e/07-createroom.spec.js
+++ b/e2e/07-createroom.spec.js
@@ -4,7 +4,7 @@ const {
 const data = require('./data');
 const { tapBack, sleep, login, navigateToLogin } = require('./helpers/app');
 
-describe.skip('Create room screen', () => {
+describe('Create room screen', () => {
 	before(async() => {
 		// await sleep(5000);
 		await device.launchApp({ newInstance: true });
diff --git a/e2e/08-room.spec.js b/e2e/08-room.spec.js
index d787df6dc..63e1fc59f 100644
--- a/e2e/08-room.spec.js
+++ b/e2e/08-room.spec.js
@@ -21,7 +21,7 @@ async function navigateToRoom() {
 	await waitFor(element(by.id('room-view'))).toBeVisible().withTimeout(5000);
 }
 
-describe.skip('Room screen', () => {
+describe('Room screen', () => {
 	const mainRoom = `private${ data.random }`;
 
 	before(async() => {
diff --git a/e2e/09-roomactions.spec.js b/e2e/09-roomactions.spec.js
index f75e1a8c7..2f5821ba2 100644
--- a/e2e/09-roomactions.spec.js
+++ b/e2e/09-roomactions.spec.js
@@ -38,7 +38,7 @@ async function backToRoomsList() {
 	await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(2000);
 }
 
-describe.skip('Room actions screen', () => {
+describe('Room actions screen', () => {
 	describe('Render', async() => {
 		describe('Direct', async() => {
 			before(async() => {
diff --git a/e2e/10-roominfo.spec.js b/e2e/10-roominfo.spec.js
index 235c0be4d..92f568d3f 100644
--- a/e2e/10-roominfo.spec.js
+++ b/e2e/10-roominfo.spec.js
@@ -12,7 +12,7 @@ async function navigateToRoomInfo(type) {
 		room = `private${ data.random }`;
 	}
 	await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(10000);
-	await element(by.type('UIScrollView')).atIndex(1).scrollTo('top');
+	await element(by.type('UIScrollView')).atIndex(1).swipe('down');
 	await element(by.id('rooms-list-view-search')).typeText(room);
 	await sleep(2000);
 	await waitFor(element(by.id(`rooms-list-view-item-${ room }`))).toExist().withTimeout(60000);
@@ -34,7 +34,7 @@ async function waitForToast() {
 	await sleep(5000);
 }
 
-describe.skip('Room info screen', () => {
+describe('Room info screen', () => {
 	describe('Direct', async() => {
 		before(async() => {
 			await device.launchApp({ newInstance: true });
@@ -84,7 +84,7 @@ describe.skip('Room info screen', () => {
 				await sleep(1000);
 				await waitFor(element(by.id('room-info-view-edit-button'))).toBeVisible().withTimeout(10000);
 				await element(by.id('room-info-view-edit-button')).tap();
-				await waitFor(element(by.id('room-info-edit-view'))).toBeVisible().withTimeout(2000);
+				await waitFor(element(by.id('room-info-edit-view'))).toExist().withTimeout(2000);
 			});
 	
 			it('should have room info edit view', async() => {
@@ -169,7 +169,8 @@ describe.skip('Room info screen', () => {
 				// change name to original
 				await element(by.id('room-info-view-edit-button')).tap();
 				await sleep(1000);
-				await waitFor(element(by.id('room-info-edit-view'))).toBeVisible().withTimeout(2000);
+				await waitFor(element(by.id('room-info-edit-view'))).toExist().withTimeout(2000);
+				await sleep(1000);
 				await element(by.id('room-info-edit-view-name')).replaceText(`${ room }`);
 				await element(by.type('UIScrollView')).atIndex(1).swipe('up');
 				await sleep(1000);
@@ -186,8 +187,11 @@ describe.skip('Room info screen', () => {
 				await element(by.id('room-info-edit-view-password')).replaceText('abc');
 				await element(by.type('UIScrollView')).atIndex(1).swipe('up');
 				await element(by.id('room-info-edit-view-t')).tap();
+				await sleep(1000);
 				await element(by.id('room-info-edit-view-ro')).tap();
+				await sleep(1000);
 				await element(by.id('room-info-edit-view-react-when-ro')).tap();
+				await sleep(1000);
 				await element(by.id('room-info-edit-view-reset')).tap();
 				// after reset
 				await expect(element(by.id('room-info-edit-view-name'))).toHaveText(room);
@@ -217,7 +221,8 @@ describe.skip('Room info screen', () => {
 				await sleep(1000);
 				await waitFor(element(by.id('room-info-view-edit-button'))).toBeVisible().withTimeout(10000);
 				await element(by.id('room-info-view-edit-button')).tap();
-				await waitFor(element(by.id('room-info-edit-view'))).toBeVisible().withTimeout(2000);
+				await waitFor(element(by.id('room-info-edit-view'))).toExist().withTimeout(2000);
+				await sleep(1000);
 				await element(by.id('room-info-edit-view-topic')).replaceText('new topic');
 				await element(by.type('UIScrollView')).atIndex(1).swipe('up');
 				await element(by.id('room-info-edit-view-submit')).tap();
@@ -232,7 +237,8 @@ describe.skip('Room info screen', () => {
 				await sleep(1000);
 				await waitFor(element(by.id('room-info-view-edit-button'))).toBeVisible().withTimeout(10000);
 				await element(by.id('room-info-view-edit-button')).tap();
-				await waitFor(element(by.id('room-info-edit-view'))).toBeVisible().withTimeout(2000);
+				await waitFor(element(by.id('room-info-edit-view'))).toExist().withTimeout(2000);
+				await sleep(1000);
 				await element(by.id('room-info-edit-view-announcement')).replaceText('new announcement');
 				await element(by.type('UIScrollView')).atIndex(1).swipe('up');
 				await element(by.id('room-info-edit-view-submit')).tap();
@@ -247,7 +253,8 @@ describe.skip('Room info screen', () => {
 				await sleep(1000);
 				await waitFor(element(by.id('room-info-view-edit-button'))).toBeVisible().withTimeout(10000);
 				await element(by.id('room-info-view-edit-button')).tap();
-				await waitFor(element(by.id('room-info-edit-view'))).toBeVisible().withTimeout(2000);
+				await waitFor(element(by.id('room-info-edit-view'))).toExist().withTimeout(2000);
+				await sleep(1000);
 				await element(by.type('UIScrollView')).atIndex(1).swipe('up');
 				await element(by.id('room-info-edit-view-password')).replaceText('password');
 				await element(by.id('room-info-edit-view-submit')).tap();
diff --git a/e2e/11-changeserver.spec.js b/e2e/11-changeserver.spec.js
index e0acdfc93..1f1996032 100644
--- a/e2e/11-changeserver.spec.js
+++ b/e2e/11-changeserver.spec.js
@@ -4,7 +4,7 @@ const {
 const data = require('./data');
 const { sleep, logout } = require('./helpers/app');
 
-describe.skip('Change server', () => {
+describe('Change server', () => {
 	before(async() => {
 		await device.launchApp({ newInstance: true });
 		await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(10000);
diff --git a/e2e/12-broadcast.spec.js b/e2e/12-broadcast.spec.js
index 885091e48..faed73eb0 100644
--- a/e2e/12-broadcast.spec.js
+++ b/e2e/12-broadcast.spec.js
@@ -6,7 +6,7 @@ const GA = OTP.googleAuthenticator;
 const { navigateToLogin, login, tapBack, sleep, logout } = require('./helpers/app');
 const data = require('./data');
 
-describe.skip('Broadcast room', () => {
+describe('Broadcast room', () => {
 	before(async() => {
 		await device.launchApp({ permissions: { notifications: 'YES' }, delete: true });
 	});
diff --git a/e2e/data.js b/e2e/data.js
index f0cacf1b1..1dd7b96e8 100644
--- a/e2e/data.js
+++ b/e2e/data.js
@@ -1,5 +1,5 @@
 const random = require('./helpers/random');
-const value = 'soevdgehintktmoldtby' // random(20);
+const value = random(20);
 const data = {
     server: 'https://ilarion.rocket.chat',
     alternateServer: 'https://stable.rocket.chat',
diff --git a/e2e/helpers/app.js b/e2e/helpers/app.js
index f64e82036..c77c6bf5c 100644
--- a/e2e/helpers/app.js
+++ b/e2e/helpers/app.js
@@ -3,24 +3,7 @@ const {
 } = require('detox');
 const data = require('../data');
 
-// async function addServer() {
-//     // await waitFor(element(by.id('onboarding-view'))).toBeVisible().withTimeout(2000);
-//     // await element(by.id('connect-server-button')).tap();
-//     // await waitFor(element(by.id('new-server-view'))).toBeVisible().withTimeout(60000);
-//     // await expect(element(by.id('new-server-view'))).toBeVisible();
-//     // await element(by.id('new-server-view-input')).replaceText(data.server);
-//     // await element(by.id('new-server-view-button')).tap();
-// 	await waitFor(element(by.id('onboarding-view'))).toBeVisible().withTimeout(2000);
-// 	await element(by.id('join-workspace')).tap();
-// 	await waitFor(element(by.id('new-server-view'))).toBeVisible().withTimeout(60000);
-// 	await element(by.id('new-server-view-input')).replaceText(data.server);
-// 	await element(by.id('new-server-view-button')).tap();
-// 	await waitFor(element(by.id('workspace-view'))).toBeVisible().withTimeout(60000);
-// 	await expect(element(by.id('workspace-view'))).toBeVisible();
-// 	await element(by.id('workspace-view-login')).tap();
-// }
-
-async function navigateToLogin() {
+async function navigateToWorkspace() {
     await waitFor(element(by.id('onboarding-view'))).toBeVisible().withTimeout(2000);
 	await element(by.id('join-workspace')).tap();
 	await waitFor(element(by.id('new-server-view'))).toBeVisible().withTimeout(60000);
@@ -28,11 +11,22 @@ async function navigateToLogin() {
 	await element(by.id('new-server-view-button')).tap();
 	await waitFor(element(by.id('workspace-view'))).toBeVisible().withTimeout(60000);
 	await expect(element(by.id('workspace-view'))).toBeVisible();
+}
+
+async function navigateToLogin() {
+    await navigateToWorkspace();
 	await element(by.id('workspace-view-login')).tap();
     await waitFor(element(by.id('login-view'))).toBeVisible().withTimeout(2000);
     await expect(element(by.id('login-view'))).toBeVisible();
 }
 
+async function navigateToRegister() {
+    await navigateToWorkspace();
+	await element(by.id('workspace-view-register')).tap();
+    await waitFor(element(by.id('register-view'))).toBeVisible().withTimeout(2000);
+    await expect(element(by.id('register-view'))).toBeVisible();
+}
+
 async function login() {
     await waitFor(element(by.id('login-view'))).toBeVisible().withTimeout(2000);
     await element(by.id('login-view-email')).replaceText(data.user);
@@ -67,8 +61,9 @@ async function sleep(ms) {
 }
 
 module.exports = {
-    // addServer,
+    navigateToWorkspace,
     navigateToLogin,
+    navigateToRegister,
     login,
     logout,
     tapBack,