about summary refs log tree commit diff
path: root/__e2e__/tests/home-screen.test.ts
diff options
context:
space:
mode:
Diffstat (limited to '__e2e__/tests/home-screen.test.ts')
-rw-r--r--__e2e__/tests/home-screen.test.ts92
1 files changed, 92 insertions, 0 deletions
diff --git a/__e2e__/tests/home-screen.test.ts b/__e2e__/tests/home-screen.test.ts
new file mode 100644
index 000000000..1ec1774f3
--- /dev/null
+++ b/__e2e__/tests/home-screen.test.ts
@@ -0,0 +1,92 @@
+/* eslint-env detox/detox */
+
+import {openApp, login, createServer} from '../util'
+
+describe('Home screen', () => {
+  let service: string
+  beforeAll(async () => {
+    service = await createServer('?users&follows&posts')
+    await openApp({permissions: {notifications: 'YES'}})
+  })
+
+  it('Login', async () => {
+    await login(service, 'alice', 'hunter2')
+    await element(by.id('homeScreenFeedTabs-Following')).tap()
+  })
+
+  it('Can like posts', async () => {
+    const carlaPosts = by.id('feedItem-by-carla.test')
+    await expect(
+      element(by.id('likeCount').withAncestor(carlaPosts)).atIndex(0),
+    ).toHaveText('0')
+    await element(by.id('likeBtn').withAncestor(carlaPosts)).atIndex(0).tap()
+    await expect(
+      element(by.id('likeCount').withAncestor(carlaPosts)).atIndex(0),
+    ).toHaveText('1')
+    await element(by.id('likeBtn').withAncestor(carlaPosts)).atIndex(0).tap()
+    await expect(
+      element(by.id('likeCount').withAncestor(carlaPosts)).atIndex(0),
+    ).toHaveText('0')
+  })
+
+  it('Can repost posts', async () => {
+    const carlaPosts = by.id('feedItem-by-carla.test')
+    await expect(
+      element(by.id('repostCount').withAncestor(carlaPosts)).atIndex(0),
+    ).toHaveText('0')
+    await element(by.id('repostBtn').withAncestor(carlaPosts)).atIndex(0).tap()
+    await expect(element(by.id('repostModal'))).toBeVisible()
+    await element(by.id('repostBtn').withAncestor(by.id('repostModal'))).tap()
+    await expect(element(by.id('repostModal'))).not.toBeVisible()
+    await expect(
+      element(by.id('repostCount').withAncestor(carlaPosts)).atIndex(0),
+    ).toHaveText('1')
+    await element(by.id('repostBtn').withAncestor(carlaPosts)).atIndex(0).tap()
+    await expect(element(by.id('repostModal'))).toBeVisible()
+    await element(by.id('repostBtn').withAncestor(by.id('repostModal'))).tap()
+    await expect(element(by.id('repostModal'))).not.toBeVisible()
+    await expect(
+      element(by.id('repostCount').withAncestor(carlaPosts)).atIndex(0),
+    ).toHaveText('0')
+  })
+
+  it('Can report posts', async () => {
+    const carlaPosts = by.id('feedItem-by-carla.test')
+    await element(by.id('postDropdownBtn').withAncestor(carlaPosts))
+      .atIndex(0)
+      .tap()
+    await element(by.id('postDropdownReportBtn')).tap()
+    await expect(element(by.id('reportPostModal'))).toBeVisible()
+    await element(by.id('reportPostRadios-spam')).tap()
+    await element(by.id('sendReportBtn')).tap()
+    await expect(element(by.id('reportPostModal'))).not.toBeVisible()
+  })
+
+  it('Can swipe between feeds', async () => {
+    await element(by.id('homeScreen')).swipe('left', 'fast', 0.75)
+    await expect(element(by.id('whatshotFeedPage'))).toBeVisible()
+    await element(by.id('homeScreen')).swipe('right', 'fast', 0.75)
+    await expect(element(by.id('followingFeedPage'))).toBeVisible()
+  })
+
+  it('Can tap between feeds', async () => {
+    await element(by.id("homeScreenFeedTabs-What's hot")).tap()
+    await expect(element(by.id('whatshotFeedPage'))).toBeVisible()
+    await element(by.id('homeScreenFeedTabs-Following')).tap()
+    await expect(element(by.id('followingFeedPage'))).toBeVisible()
+  })
+
+  it('Can delete posts', async () => {
+    const alicePosts = by.id('feedItem-by-alice.test')
+    await expect(element(alicePosts.withDescendant(by.text('Post')))).toExist()
+    await element(by.id('postDropdownBtn').withAncestor(alicePosts))
+      .atIndex(0)
+      .tap()
+    await element(by.id('postDropdownDeleteBtn')).tap()
+    await expect(element(by.id('confirmModal'))).toBeVisible()
+    await element(by.id('confirmBtn')).tap()
+    await expect(
+      element(alicePosts.withDescendant(by.text('Post'))),
+    ).not.toExist()
+  })
+})