forked from StateVoicesNational/Spoke
/
basic_text_manager.test.js
143 lines (111 loc) · 4.08 KB
/
basic_text_manager.test.js
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
import { selenium } from './util/helpers'
import STRINGS from './data/strings'
import { campaigns, login, main, people, texter } from './page-functions/index'
jasmine.getEnv().addReporter(selenium.reporter)
describe('Basic Text Manager Workflow', () => {
// Instantiate browser(s)
const driverAdmin = selenium.buildDriver({ name: 'Spoke E2E Tests - Chrome - Basic Text Manager Workflow - Admin' })
const driverTexter = selenium.buildDriver({ name: 'Spoke E2E Tests - Chrome - Basic Text Manager Workflow - Texter' })
beforeAll(() => {
global.e2e = {}
})
/**
* Test Suite Sequence:
* Setup Admin and Texter Users
* Create Campaign (No Existing Texter)
* Create Campaign (Existing Texter)
* Create Campaign (No Existing Texter with Opt-Out)
* Create Campaign (Existing Texter with Opt-Out)
*/
afterAll(async () => {
await selenium.quitDriver(driverAdmin)
await selenium.quitDriver(driverTexter)
})
describe('Setup Admin User', () => {
describe('(As Admin) Open Landing Page', () => {
login.landing(driverAdmin)
})
describe('(As Admin) Log In an admin to Spoke', () => {
login.tryLoginThenSignUp(driverAdmin, STRINGS.users.admin0)
})
describe('(As Admin) Create a New Organization / Team', () => {
main.createOrg(driverAdmin, STRINGS.org)
})
})
describe('Create Campaign (No Existing Texter)', () => {
const CAMPAIGN = STRINGS.campaigns.noExistingTexter
describe('(As Admin) Create a New Campaign', () => {
campaigns.startCampaign(driverAdmin, CAMPAIGN)
})
describe('(As Texter) Follow the Invite URL', () => {
texter.viewInvite(driverTexter)
login.tryLoginThenSignUp(driverTexter, CAMPAIGN.texter)
})
describe('(As Texter) Verify Todos', () => {
texter.viewSendFirstTexts(driverTexter)
})
describe('(As Texter) Log Out', () => {
main.logOutUser(driverTexter)
})
})
describe('Create Campaign (Existing Texter)', () => {
const CAMPAIGN = STRINGS.campaigns.existingTexter
describe('(As Admin) Invite a new Texter', () => {
people.invite(driverAdmin)
})
describe('(As Texter) Follow the Invite URL', () => {
texter.viewInvite(driverTexter)
login.tryLoginThenSignUp(driverTexter, CAMPAIGN.texter)
})
describe('(As Admin) Create a New Campaign', () => {
campaigns.startCampaign(driverAdmin, CAMPAIGN)
})
describe('(As Texter) Send Texts', () => {
texter.sendTexts(driverTexter, CAMPAIGN)
})
describe('(As Admin) Send Replies', () => {
campaigns.sendReplies(driverAdmin, CAMPAIGN)
})
describe('(As Texter) View Replies', () => {
texter.viewReplies(driverTexter, CAMPAIGN)
})
describe('(As Texter) Opt Out Contact', () => {
texter.optOutContact(driverTexter)
})
describe('(As Texter) Log Out', () => {
main.logOutUser(driverTexter)
})
})
describe('Create Campaign (No Existing Texter with Opt-Out)', () => {
const CAMPAIGN = STRINGS.campaigns.noExistingTexterOptOut
describe('(As Admin) Create a New Campaign', () => {
campaigns.startCampaign(driverAdmin, CAMPAIGN)
})
describe('(As Texter) Follow the Invite URL', () => {
texter.viewInvite(driverTexter)
login.tryLoginThenSignUp(driverTexter, CAMPAIGN.texter)
})
describe('(As Texter) Verify Todos', () => {
texter.viewSendFirstTexts(driverTexter)
})
describe('(As Texter) Log Out', () => {
main.logOutUser(driverTexter)
})
})
describe('Create Campaign (Existing Texters with Opt-Out)', () => {
const CAMPAIGN = STRINGS.campaigns.existingTexterOptOut
describe('(As Admin) Invite a new Texter', () => {
people.invite(driverAdmin)
})
describe('(As Texter) Follow the Invite URL', () => {
texter.viewInvite(driverTexter)
login.tryLoginThenSignUp(driverTexter, CAMPAIGN.texter)
})
describe('(As Admin) Create a New Campaign', () => {
campaigns.startCampaign(driverAdmin, CAMPAIGN)
})
describe('(As Texter) Verify Todos', () => {
texter.viewSendFirstTexts(driverTexter)
})
})
})