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,