diff --git a/e2e/helpers/app.js b/e2e/helpers/app.js index c094e1b3f..20c39e0b0 100644 --- a/e2e/helpers/app.js +++ b/e2e/helpers/app.js @@ -76,6 +76,27 @@ async function sleep(ms) { return new Promise(res => setTimeout(res, ms)); } +async function searchRoom(room) { + if (device.getPlatform() === 'ios') { + await element(by.type('UIScrollView')).atIndex(1).scrollTo('top'); + } else { + await waitFor(element(by.id('rooms-list-view-search-button'))).toExist().withTimeout(2000); + await element(by.id('rooms-list-view-search-button')).tap(); + } + await waitFor(element(by.id('rooms-list-view-search-input'))).toExist().withTimeout(2000); + await element(by.id('rooms-list-view-search-input')).typeText(room); + await sleep(2000); + await waitFor(element(by.id(`rooms-list-view-item-${ room }`))).toBeVisible().withTimeout(60000); + await expect(element(by.id(`rooms-list-view-item-${ room }`))).toBeVisible(); +} + +async function navigateToRoom(room) { + await searchRoom(room); + await element(by.id(`rooms-list-view-item-${ room }`)).tap(); + await waitFor(element(by.id(`room-view-title-${ room }`))).toBeVisible().withTimeout(5000); + await expect(element(by.id(`room-view-title-${ room }`))).toBeVisible(); +} + module.exports = { navigateToWorkspace, navigateToLogin, @@ -84,5 +105,7 @@ module.exports = { logout, createUser, tapBack, - sleep + sleep, + searchRoom, + navigateToRoom }; \ No newline at end of file diff --git a/e2e/tests/assorted/02-broadcast.spec.js b/e2e/tests/assorted/02-broadcast.spec.js index 93409e6a5..443ce8722 100644 --- a/e2e/tests/assorted/02-broadcast.spec.js +++ b/e2e/tests/assorted/02-broadcast.spec.js @@ -3,7 +3,7 @@ const { } = require('detox'); const OTP = require('otp.js'); const GA = OTP.googleAuthenticator; -const { navigateToLogin, login, tapBack, sleep, createUser } = require('../../helpers/app'); +const { navigateToLogin, login, tapBack, sleep, navigateToRoom } = require('../../helpers/app'); const data = require('../../data'); describe('Broadcast room', () => { @@ -71,15 +71,7 @@ describe('Broadcast room', () => { await sleep(1000); await element(by.id('two-factor-send')).tap(); await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(10000); - await element(by.type('UIScrollView')).atIndex(1).scrollTo('top'); - await element(by.id('rooms-list-view-search-input')).typeText(`broadcast${ data.random }`); - await sleep(2000); - await waitFor(element(by.id(`rooms-list-view-item-broadcast${ data.random }`))).toExist().withTimeout(60000); - await expect(element(by.id(`rooms-list-view-item-broadcast${ data.random }`))).toExist(); - await element(by.id(`rooms-list-view-item-broadcast${ data.random }`)).tap(); - await waitFor(element(by.id('room-view'))).toBeVisible().withTimeout(5000); - await waitFor(element(by.id(`room-view-title-broadcast${ data.random }`))).toBeVisible().withTimeout(60000); - await expect(element(by.id(`room-view-title-broadcast${ data.random }`))).toBeVisible(); + await navigateToRoom(`broadcast${ data.random }`); await sleep(1000); }); diff --git a/e2e/tests/assorted/05-joinpublicroom.spec.js b/e2e/tests/assorted/05-joinpublicroom.spec.js index 0ccd234fc..f20727a24 100644 --- a/e2e/tests/assorted/05-joinpublicroom.spec.js +++ b/e2e/tests/assorted/05-joinpublicroom.spec.js @@ -2,7 +2,7 @@ const { device, expect, element, by, waitFor } = require('detox'); const data = require('../../data'); -const { tapBack, sleep } = require('../../helpers/app'); +const { tapBack, sleep, navigateToRoom } = require('../../helpers/app'); const room = 'detox-public'; @@ -14,16 +14,6 @@ async function mockMessage(message) { await sleep(1000); }; -async function navigateToRoom() { - await sleep(2000); - await element(by.type('UIScrollView')).atIndex(1).scrollTo('top'); - await element(by.id('rooms-list-view-search-input')).typeText(room); - await sleep(2000); - await waitFor(element(by.id(`rooms-list-view-item-${ room }`)).atIndex(0)).toBeVisible().withTimeout(60000); - await element(by.id(`rooms-list-view-item-${ room }`)).atIndex(0).tap(); - await waitFor(element(by.id('room-view'))).toBeVisible().withTimeout(5000); -} - async function navigateToRoomActions() { await sleep(2000); await element(by.id('room-view-header-actions')).tap(); @@ -34,7 +24,7 @@ async function navigateToRoomActions() { describe('Join public room', () => { before(async() => { await device.launchApp({ newInstance: true }); - await navigateToRoom(); + await navigateToRoom(room); }); describe('Render', async() => { diff --git a/e2e/tests/onboarding/06-roomslist.spec.js b/e2e/tests/onboarding/06-roomslist.spec.js index dc1d76d36..45d2eda6a 100644 --- a/e2e/tests/onboarding/06-roomslist.spec.js +++ b/e2e/tests/onboarding/06-roomslist.spec.js @@ -1,7 +1,7 @@ const { device, expect, element, by, waitFor } = require('detox'); -const { logout, tapBack, sleep } = require('../../helpers/app'); +const { logout, tapBack, sleep, navigateToRoom } = require('../../helpers/app'); describe('Rooms list screen', () => { describe('Render', () => { @@ -27,22 +27,7 @@ describe('Rooms list screen', () => { describe('Usage', () => { it('should search room and navigate', async() => { - if (device.getPlatform() === 'ios') { - await element(by.type('UIScrollView')).atIndex(1).scrollTo('top'); - } else { - await waitFor(element(by.id('rooms-list-view-search-button'))).toExist().withTimeout(2000); - await element(by.id('rooms-list-view-search-button')).tap(); - } - await waitFor(element(by.id('rooms-list-view-search-input'))).toExist().withTimeout(2000); - await element(by.id('rooms-list-view-search-input')).typeText('rocket.cat'); - await sleep(2000); - await waitFor(element(by.id('rooms-list-view-item-rocket.cat'))).toBeVisible().withTimeout(60000); - await expect(element(by.id('rooms-list-view-item-rocket.cat'))).toBeVisible(); - await element(by.id('rooms-list-view-item-rocket.cat')).tap(); - await waitFor(element(by.id('room-view'))).toBeVisible().withTimeout(10000); - await expect(element(by.id('room-view'))).toBeVisible(); - await waitFor(element(by.id('room-view-title-rocket.cat'))).toBeVisible().withTimeout(60000); - await expect(element(by.id('room-view-title-rocket.cat'))).toBeVisible(); + await navigateToRoom('rocket.cat'); await tapBack(); await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(2000); await expect(element(by.id('rooms-list-view'))).toBeVisible(); diff --git a/e2e/tests/room/02-room.spec.js b/e2e/tests/room/02-room.spec.js index c39c62d14..efaf26e26 100644 --- a/e2e/tests/room/02-room.spec.js +++ b/e2e/tests/room/02-room.spec.js @@ -2,7 +2,7 @@ const { device, expect, element, by, waitFor } = require('detox'); const data = require('../../data'); -const { tapBack, sleep } = require('../../helpers/app'); +const { tapBack, sleep, navigateToRoom } = require('../../helpers/app'); async function mockMessage(message) { await element(by.id('messagebox-input')).tap(); @@ -12,20 +12,11 @@ async function mockMessage(message) { await expect(element(by.label(`${ data.random }${ message }`)).atIndex(0)).toBeVisible(); }; -async function navigateToRoom() { - await element(by.type('UIScrollView')).atIndex(1).scrollTo('top'); - await element(by.id('rooms-list-view-search-input')).typeText(`private${ data.random }`); - await sleep(2000); - await waitFor(element(by.id(`rooms-list-view-item-private${ data.random }`))).toBeVisible().withTimeout(60000); - await element(by.id(`rooms-list-view-item-private${ data.random }`)).tap(); - await waitFor(element(by.id('room-view'))).toBeVisible().withTimeout(5000); -} - -describe('Room screen', () => { +describe.only('Room screen', () => { const mainRoom = `private${ data.random }`; before(async() => { - await navigateToRoom(); + await navigateToRoom(mainRoom); }); describe('Render', async() => { diff --git a/e2e/tests/room/03-roomactions.spec.js b/e2e/tests/room/03-roomactions.spec.js index bcd2463e2..577c906bf 100644 --- a/e2e/tests/room/03-roomactions.spec.js +++ b/e2e/tests/room/03-roomactions.spec.js @@ -2,7 +2,7 @@ const { device, expect, element, by, waitFor } = require('detox'); const data = require('../../data'); -const { tapBack, sleep } = require('../../helpers/app'); +const { tapBack, sleep, navigateToRoom } = require('../../helpers/app'); const scrollDown = 200; @@ -13,13 +13,7 @@ async function navigateToRoomActions(type) { } else { 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.id('rooms-list-view-search-input')).typeText(room); - await sleep(2000); - await waitFor(element(by.id(`rooms-list-view-item-${ room }`))).toExist().withTimeout(60000); - await element(by.id(`rooms-list-view-item-${ room }`)).tap(); - await waitFor(element(by.id('room-view'))).toBeVisible().withTimeout(2000); + await navigateToRoom(room); await sleep(1000); await element(by.id('room-view-header-actions')).tap(); await waitFor(element(by.id('room-actions-view'))).toBeVisible().withTimeout(5000); diff --git a/e2e/tests/room/04-roominfo.spec.js b/e2e/tests/room/04-roominfo.spec.js index 9cdf2d3ca..c96970bcb 100644 --- a/e2e/tests/room/04-roominfo.spec.js +++ b/e2e/tests/room/04-roominfo.spec.js @@ -2,7 +2,7 @@ const { device, expect, element, by, waitFor } = require('detox'); const data = require('../../data'); -const { tapBack, sleep } = require('../../helpers/app'); +const { tapBack, sleep, navigateToRoom } = require('../../helpers/app'); async function navigateToRoomInfo(type) { let room; @@ -11,13 +11,7 @@ async function navigateToRoomInfo(type) { } else { room = `private${ data.random }`; } - await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(10000); - await element(by.type('UIScrollView')).atIndex(1).swipe('down'); - await element(by.id('rooms-list-view-search-input')).typeText(room); - await sleep(2000); - await waitFor(element(by.id(`rooms-list-view-item-${ room }`))).toExist().withTimeout(60000); - await element(by.id(`rooms-list-view-item-${ room }`)).tap(); - await waitFor(element(by.id('room-view'))).toBeVisible().withTimeout(2000); + await navigateToRoom(room); await sleep(1000); await element(by.id('room-view-header-actions')).tap(); await waitFor(element(by.id('room-actions-view'))).toBeVisible().withTimeout(5000);