about summary refs log tree commit diff
path: root/__e2e__/tests/mute-lists.test.ts
blob: 1fd3dc328c13875f874eb8270765b59468f15da2 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
/* eslint-env detox/detox */

import {openApp, login, createServer, sleep} from '../util'

describe('Mute lists', () => {
  let service: string
  beforeAll(async () => {
    service = await createServer('?users&follows&labels')
    await openApp({
      permissions: {notifications: 'YES', medialibrary: 'YES', photos: 'YES'},
    })
  })

  it('Login and view my mutelists', async () => {
    await expect(element(by.id('signInButton'))).toBeVisible()
    await login(service, 'alice', 'hunter2')
    await element(by.id('viewHeaderDrawerBtn')).tap()
    await expect(element(by.id('drawer'))).toBeVisible()
    await element(by.id('menuItemButton-Moderation')).tap()
    await element(by.id('mutelistsBtn')).tap()
    await expect(element(by.id('list-Muted Users'))).toBeVisible()
    await element(by.id('list-Muted Users')).tap()
    await expect(
      element(by.id('user-muted-by-list-account.test')),
    ).toBeVisible()
  })

  it('Toggle subscription', async () => {
    await element(by.id('unsubscribeListBtn')).tap()
    await element(by.id('subscribeListBtn')).tap()
  })

  it('Edit display name and description via the edit mutelist modal', async () => {
    await element(by.id('editListBtn')).tap()
    await expect(element(by.id('createOrEditMuteListModal'))).toBeVisible()
    await element(by.id('editNameInput')).clearText()
    await element(by.id('editNameInput')).typeText('Bad Ppl')
    await element(by.id('editDescriptionInput')).clearText()
    await element(by.id('editDescriptionInput')).typeText('They bad')
    await element(by.id('saveBtn')).tap()
    await expect(element(by.id('createOrEditMuteListModal'))).not.toBeVisible()
    await expect(element(by.id('listName'))).toHaveText('Bad Ppl')
    await expect(element(by.id('listDescription'))).toHaveText('They bad')
    // have to wait for the toast to clear
    await waitFor(element(by.id('editListBtn')))
      .toBeVisible()
      .withTimeout(5000)
  })

  it('Remove description via the edit mutelist modal', async () => {
    await element(by.id('editListBtn')).tap()
    await expect(element(by.id('createOrEditMuteListModal'))).toBeVisible()
    await element(by.id('editDescriptionInput')).clearText()
    await element(by.id('saveBtn')).tap()
    await expect(element(by.id('createOrEditMuteListModal'))).not.toBeVisible()
    await expect(element(by.id('listDescription'))).not.toBeVisible()
    // have to wait for the toast to clear
    await waitFor(element(by.id('editListBtn')))
      .toBeVisible()
      .withTimeout(5000)
  })

  it('Set avi via the edit mutelist modal', async () => {
    await expect(element(by.id('userAvatarFallback'))).toExist()
    await element(by.id('editListBtn')).tap()
    await expect(element(by.id('createOrEditMuteListModal'))).toBeVisible()
    await element(by.id('changeAvatarBtn')).tap()
    await element(by.text('Library')).tap()
    await sleep(3e3)
    await element(by.id('saveBtn')).tap()
    await expect(element(by.id('createOrEditMuteListModal'))).not.toBeVisible()
    await expect(element(by.id('userAvatarImage'))).toExist()
    // have to wait for the toast to clear
    await waitFor(element(by.id('editListBtn')))
      .toBeVisible()
      .withTimeout(5000)
  })

  it('Remove avi via the edit mutelist modal', async () => {
    await expect(element(by.id('userAvatarImage'))).toExist()
    await element(by.id('editListBtn')).tap()
    await expect(element(by.id('createOrEditMuteListModal'))).toBeVisible()
    await element(by.id('changeAvatarBtn')).tap()
    await element(by.text('Remove')).tap()
    await element(by.id('saveBtn')).tap()
    await expect(element(by.id('createOrEditMuteListModal'))).not.toBeVisible()
    await expect(element(by.id('userAvatarFallback'))).toExist()
    // have to wait for the toast to clear
    await waitFor(element(by.id('editListBtn')))
      .toBeVisible()
      .withTimeout(5000)
  })

  it('Delete the mutelist', async () => {
    await element(by.id('deleteListBtn')).tap()
    await element(by.id('confirmBtn')).tap()
    await expect(element(by.id('emptyMuteLists'))).toBeVisible()
  })

  it('Create a new mutelist', async () => {
    await element(by.id('emptyMuteLists-button')).tap()
    await expect(element(by.id('createOrEditMuteListModal'))).toBeVisible()
    await element(by.id('editNameInput')).typeText('Bad Ppl')
    await element(by.id('editDescriptionInput')).typeText('They bad')
    await element(by.id('saveBtn')).tap()
    await expect(element(by.id('createOrEditMuteListModal'))).not.toBeVisible()
    await expect(element(by.id('listName'))).toHaveText('Bad Ppl')
    await expect(element(by.id('listDescription'))).toHaveText('They bad')
    // have to wait for the toast to clear
    await waitFor(element(by.id('editListBtn')))
      .toBeVisible()
      .withTimeout(5000)
  })

  it('Shows the mutelist on my profile', async () => {
    await element(by.id('bottomBarProfileBtn')).tap()
    await element(by.id('selector')).swipe('left')
    await element(by.id('selector-4')).tap()
    await element(by.id('list-Bad Ppl')).tap()
  })

  it('Adds and removes users on mutelists', async () => {
    await element(by.id('bottomBarSearchBtn')).tap()
    await element(by.id('searchTextInput')).typeText('bob')
    await element(by.id('searchAutoCompleteResult-bob.test')).tap()
    await expect(element(by.id('profileView'))).toBeVisible()

    await element(by.id('profileHeaderDropdownBtn')).tap()
    await element(by.text('Add to Lists')).tap()
    await expect(element(by.id('listAddRemoveUserModal'))).toBeVisible()
    await element(by.id('toggleBtn-Bad Ppl')).tap()
    await element(by.id('saveBtn')).tap()
    await expect(element(by.id('listAddRemoveUserModal'))).not.toBeVisible()

    await element(by.id('profileHeaderDropdownBtn')).tap()
    await element(by.text('Add to Lists')).tap()
    await expect(element(by.id('listAddRemoveUserModal'))).toBeVisible()
    await element(by.id('toggleBtn-Bad Ppl')).tap()
    await element(by.id('saveBtn')).tap()
    await expect(element(by.id('listAddRemoveUserModal'))).not.toBeVisible()
  })

  it('Can report a mute list', async () => {
    await element(by.id('bottomBarHomeBtn')).tap()
    // Last test leaves us in the list view so we are going back 1 screen to the lists list screen
    await element(by.id('viewHeaderDrawerBtn')).tap()
    // then to the moderation screen
    await element(by.id('viewHeaderDrawerBtn')).tap()
    // then to the home screen
    await element(by.id('viewHeaderDrawerBtn')).tap()
    // then open the drawer to go to settings
    await element(by.id('viewHeaderDrawerBtn')).tap()
    await element(by.id('menuItemButton-Settings')).tap()
    await element(by.id('signOutBtn')).tap()
    await expect(element(by.id('signInButton'))).toBeVisible()
    await login(service, 'bob.test', 'hunter2')
    await element(by.id('bottomBarSearchBtn')).tap()
    await element(by.id('searchTextInput')).typeText('alice')
    await element(by.id('searchAutoCompleteResult-alice.test')).tap()
    await element(by.id('selector')).swipe('left')
    await element(by.id('selector-3')).tap()
    await element(by.id('list-Bad Ppl')).tap()
    await element(by.id('reportListBtn')).tap()
    await expect(element(by.id('reportModal'))).toBeVisible()
    await expect(element(by.text('Report List'))).toBeVisible()
    await element(
      by.id('reportReasonRadios-com.atproto.moderation.defs#reasonRude'),
    ).tap()
    await element(by.id('sendReportBtn')).tap()
    await expect(element(by.id('reportModal'))).not.toBeVisible()
  })
})