From 13612474fe29226b3ab786ba53dbb652796b532a Mon Sep 17 00:00:00 2001
From: Diego Mello <diegolmello@gmail.com>
Date: Fri, 15 May 2020 14:06:14 -0300
Subject: [PATCH] room and onboarding

---
 e2e/helpers/app.js                             | 13 +++++++++++++
 e2e/{ => onboarding}/01-onboarding.spec.js     |  2 +-
 e2e/{ => onboarding}/02-legal.spec.js          |  2 +-
 e2e/{ => onboarding}/03-forgotpassword.spec.js |  4 ++--
 e2e/{ => onboarding}/04-createuser.spec.js     |  8 ++------
 e2e/{ => onboarding}/05-login.spec.js          |  4 ++--
 e2e/{ => onboarding}/06-roomslist.spec.js      | 13 +------------
 e2e/onboarding/init.js                         | 11 +++++++++++
 e2e/{ => room}/07-createroom.spec.js           | 11 ++++-------
 e2e/{ => room}/08-room.spec.js                 |  4 ++--
 e2e/{ => room}/09-roomactions.spec.js          |  4 ++--
 e2e/{ => room}/10-roominfo.spec.js             |  4 ++--
 e2e/room/init.js                               | 11 +++++++++++
 13 files changed, 54 insertions(+), 37 deletions(-)
 rename e2e/{ => onboarding}/01-onboarding.spec.js (98%)
 rename e2e/{ => onboarding}/02-legal.spec.js (96%)
 rename e2e/{ => onboarding}/03-forgotpassword.spec.js (93%)
 rename e2e/{ => onboarding}/04-createuser.spec.js (95%)
 rename e2e/{ => onboarding}/05-login.spec.js (96%)
 rename e2e/{ => onboarding}/06-roomslist.spec.js (86%)
 create mode 100644 e2e/onboarding/init.js
 rename e2e/{ => room}/07-createroom.spec.js (96%)
 rename e2e/{ => room}/08-room.spec.js (99%)
 rename e2e/{ => room}/09-roomactions.spec.js (99%)
 rename e2e/{ => room}/10-roominfo.spec.js (99%)
 create mode 100644 e2e/room/init.js

diff --git a/e2e/helpers/app.js b/e2e/helpers/app.js
index c77c6bf5c..5c5f646aa 100644
--- a/e2e/helpers/app.js
+++ b/e2e/helpers/app.js
@@ -52,6 +52,18 @@ async function logout() {
     await expect(element(by.id('onboarding-view'))).toBeVisible();
 }
 
+async function createUser() {
+    await navigateToRegister();
+    await element(by.id('register-view-name')).replaceText(data.user);
+    await element(by.id('register-view-username')).replaceText(data.user);
+    await element(by.id('register-view-email')).replaceText(data.email);
+    await element(by.id('register-view-password')).replaceText(data.password);
+    await sleep(300);
+    await element(by.id('register-view-submit')).tap();
+    await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(60000);
+    await expect(element(by.id('rooms-list-view'))).toBeVisible();
+}
+
 async function tapBack() {
     await element(by.id('header-back')).atIndex(0).tap();
 }
@@ -66,6 +78,7 @@ module.exports = {
     navigateToRegister,
     login,
     logout,
+    createUser,
     tapBack,
     sleep
 };
\ No newline at end of file
diff --git a/e2e/01-onboarding.spec.js b/e2e/onboarding/01-onboarding.spec.js
similarity index 98%
rename from e2e/01-onboarding.spec.js
rename to e2e/onboarding/01-onboarding.spec.js
index 900947b37..9f717dfe9 100644
--- a/e2e/01-onboarding.spec.js
+++ b/e2e/onboarding/01-onboarding.spec.js
@@ -1,7 +1,7 @@
 const {
 	device, expect, element, by, waitFor
 } = require('detox');
-const data = require('./data');
+const data = require('../data');
 
 describe('Onboarding', () => {
 	before(async() => {
diff --git a/e2e/02-legal.spec.js b/e2e/onboarding/02-legal.spec.js
similarity index 96%
rename from e2e/02-legal.spec.js
rename to e2e/onboarding/02-legal.spec.js
index b61480af7..576ff895d 100644
--- a/e2e/02-legal.spec.js
+++ b/e2e/onboarding/02-legal.spec.js
@@ -1,7 +1,7 @@
 const {
 	device, expect, element, by, waitFor
 } = require('detox');
-const { navigateToRegister, navigateToLogin } = require('./helpers/app');
+const { navigateToRegister, navigateToLogin } = require('../helpers/app');
 
 describe('Legal screen', () => {
 	it('should have legal button on login', async() => {
diff --git a/e2e/03-forgotpassword.spec.js b/e2e/onboarding/03-forgotpassword.spec.js
similarity index 93%
rename from e2e/03-forgotpassword.spec.js
rename to e2e/onboarding/03-forgotpassword.spec.js
index 83bd53e50..a287136d5 100644
--- a/e2e/03-forgotpassword.spec.js
+++ b/e2e/onboarding/03-forgotpassword.spec.js
@@ -1,8 +1,8 @@
 const {
 	device, expect, element, by, waitFor
 } = require('detox');
-const data = require('./data');
-const { navigateToLogin } = require('./helpers/app');
+const data = require('../data');
+const { navigateToLogin } = require('../helpers/app');
 
 describe('Forgot password screen', () => {
 	before(async() => {
diff --git a/e2e/04-createuser.spec.js b/e2e/onboarding/04-createuser.spec.js
similarity index 95%
rename from e2e/04-createuser.spec.js
rename to e2e/onboarding/04-createuser.spec.js
index 7f2442bfb..8fc5d6cc4 100644
--- a/e2e/04-createuser.spec.js
+++ b/e2e/onboarding/04-createuser.spec.js
@@ -1,8 +1,8 @@
 const {
 	device, expect, element, by, waitFor
 } = require('detox');
-const { navigateToRegister, sleep } = require('./helpers/app');
-const data = require('./data');
+const { navigateToRegister, sleep } = require('../helpers/app');
+const data = require('../data');
 
 describe('Create user screen', () => {
 	before(async() => {
@@ -83,9 +83,5 @@ describe('Create user screen', () => {
 			await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(60000);
 			await expect(element(by.id('rooms-list-view'))).toBeVisible();
 		});
-
-		// afterAll(async() => {
-		// 	await logout();
-		// });
 	});
 });
diff --git a/e2e/05-login.spec.js b/e2e/onboarding/05-login.spec.js
similarity index 96%
rename from e2e/05-login.spec.js
rename to e2e/onboarding/05-login.spec.js
index 3b1f45eec..fcc47c545 100644
--- a/e2e/05-login.spec.js
+++ b/e2e/onboarding/05-login.spec.js
@@ -1,8 +1,8 @@
 const {
 	expect, element, by, waitFor
 } = require('detox');
-const { navigateToLogin, tapBack, sleep } = require('./helpers/app');
-const data = require('./data');
+const { navigateToLogin, tapBack, sleep } = require('../helpers/app');
+const data = require('../data');
 
 describe('Login screen', () => {
 	before(async() => {
diff --git a/e2e/06-roomslist.spec.js b/e2e/onboarding/06-roomslist.spec.js
similarity index 86%
rename from e2e/06-roomslist.spec.js
rename to e2e/onboarding/06-roomslist.spec.js
index 638585b17..43845bc02 100644
--- a/e2e/06-roomslist.spec.js
+++ b/e2e/onboarding/06-roomslist.spec.js
@@ -1,18 +1,13 @@
 const {
 	device, expect, element, by, waitFor
 } = require('detox');
-const { login, logout, navigateToLogin, tapBack, sleep } = require('./helpers/app');
-const data = require('./data');
+const { logout, tapBack, sleep } = require('../helpers/app');
 
 describe('Rooms list screen', () => {
 	describe('Render', () => {
 		it('should have rooms list screen', async() => {
 			await expect(element(by.id('rooms-list-view'))).toBeVisible();
 		});
-        
-		// it('should have rooms list', async() => {
-		// 	await expect(element(by.id('rooms-list-view-list'))).toBeVisible();
-		// });
 
 		it('should have room item', async() => {
 			await expect(element(by.id('rooms-list-view-item-general')).atIndex(0)).toExist();
@@ -26,7 +21,6 @@ describe('Rooms list screen', () => {
 	
 			it('should have sidebar button', async() => {
 				await expect(element(by.id('rooms-list-view-sidebar'))).toBeVisible();
-				// await expect(element(by.id('rooms-list-view-sidebar'))).toHaveLabel(`Connected to ${ data.server }. Tap to view servers list.`);
 			});
 		});
 	});
@@ -72,10 +66,5 @@ describe('Rooms list screen', () => {
 				await logout();
 			});
 		});
-
-		// afterAll(async() => {
-		// 	await navigateToLogin();
-		// 	await login();
-		// });
 	});
 });
diff --git a/e2e/onboarding/init.js b/e2e/onboarding/init.js
new file mode 100644
index 000000000..391336b4a
--- /dev/null
+++ b/e2e/onboarding/init.js
@@ -0,0 +1,11 @@
+const detox = require('detox');
+const config = require('../../package.json').detox;
+
+before(async() => {
+	await detox.init(config, { launchApp: false });
+	await device.launchApp({ permissions: { notifications: 'YES' } });
+});
+
+after(async() => {
+	await detox.cleanup();
+});
\ No newline at end of file
diff --git a/e2e/07-createroom.spec.js b/e2e/room/07-createroom.spec.js
similarity index 96%
rename from e2e/07-createroom.spec.js
rename to e2e/room/07-createroom.spec.js
index 79ae561fd..182e5a486 100644
--- a/e2e/07-createroom.spec.js
+++ b/e2e/room/07-createroom.spec.js
@@ -1,16 +1,13 @@
 const {
 	device, expect, element, by, waitFor
 } = require('detox');
-const data = require('./data');
-const { tapBack, sleep, login, navigateToLogin } = require('./helpers/app');
+const data = require('../data');
+const { tapBack, sleep, createUser } = require('../helpers/app');
 
 describe('Create room screen', () => {
 	before(async() => {
-		// await sleep(5000);
-		await device.launchApp({ newInstance: true });
-		await navigateToLogin();
-		await login();
-		await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(2000);
+		// await device.launchApp({ newInstance: true });
+		await createUser();
 		await element(by.id('rooms-list-view-create-channel')).tap();
 		await waitFor(element(by.id('new-message-view'))).toBeVisible().withTimeout(2000);
 	});
diff --git a/e2e/08-room.spec.js b/e2e/room/08-room.spec.js
similarity index 99%
rename from e2e/08-room.spec.js
rename to e2e/room/08-room.spec.js
index 63e1fc59f..5b861c4f2 100644
--- a/e2e/08-room.spec.js
+++ b/e2e/room/08-room.spec.js
@@ -1,8 +1,8 @@
 const {
 	device, expect, element, by, waitFor
 } = require('detox');
-const data = require('./data');
-const { tapBack, sleep } = require('./helpers/app');
+const data = require('../data');
+const { tapBack, sleep } = require('../helpers/app');
 
 async function mockMessage(message) {
 	await element(by.id('messagebox-input')).tap();
diff --git a/e2e/09-roomactions.spec.js b/e2e/room/09-roomactions.spec.js
similarity index 99%
rename from e2e/09-roomactions.spec.js
rename to e2e/room/09-roomactions.spec.js
index 2f5821ba2..483bac008 100644
--- a/e2e/09-roomactions.spec.js
+++ b/e2e/room/09-roomactions.spec.js
@@ -1,8 +1,8 @@
 const {
 	device, expect, element, by, waitFor
 } = require('detox');
-const data = require('./data');
-const { tapBack, sleep } = require('./helpers/app');
+const data = require('../data');
+const { tapBack, sleep } = require('../helpers/app');
 
 const scrollDown = 200;
 
diff --git a/e2e/10-roominfo.spec.js b/e2e/room/10-roominfo.spec.js
similarity index 99%
rename from e2e/10-roominfo.spec.js
rename to e2e/room/10-roominfo.spec.js
index 92f568d3f..692f9f54b 100644
--- a/e2e/10-roominfo.spec.js
+++ b/e2e/room/10-roominfo.spec.js
@@ -1,8 +1,8 @@
 const {
 	device, expect, element, by, waitFor
 } = require('detox');
-const data = require('./data');
-const { tapBack, sleep } = require('./helpers/app');
+const data = require('../data');
+const { tapBack, sleep } = require('../helpers/app');
 
 async function navigateToRoomInfo(type) {
 	let room;
diff --git a/e2e/room/init.js b/e2e/room/init.js
new file mode 100644
index 000000000..391336b4a
--- /dev/null
+++ b/e2e/room/init.js
@@ -0,0 +1,11 @@
+const detox = require('detox');
+const config = require('../../package.json').detox;
+
+before(async() => {
+	await detox.init(config, { launchApp: false });
+	await device.launchApp({ permissions: { notifications: 'YES' } });
+});
+
+after(async() => {
+	await detox.cleanup();
+});
\ No newline at end of file