Repository navigation
Expand file tree
/
Copy pathvaluesMainTest.js
More file actions
171 lines (161 loc) · 10.2 KB
/
Copy pathvaluesMainTest.js
File metadata and controls
171 lines (161 loc) · 10.2 KB
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
const assert = require('assert');
const { simpleClick, selectClick, simpleTextInput, scrollIntoViewSimple, scrollIntoViewSelect, hiddenClick, clearTextInputValue, selectTextInput, hiddenTextInputNth , hiddenClickNth } = require('../utils');
const ANDROID_CONTEXT = 'WEBVIEW_org.wevote.cordova';
const IOS_CONTEXT = 'WEBVIEW_1';
const PAUSE_DURATION_MICROSECONDS = 250;
const PAUSE_DURATION_BALLOT_LOAD = 6000;
const { device, isAndroid, isCordovaFromAppObservableStore, isMobileScreenSize, isIOS } = driver.config.capabilities;
const xssTest = '<script>alert(1)</script>';
const publicFigureOrOrganizationFollowSelector = '[id^=positionItemFollowToggleFollow-undefined-wv02org]';
const publicFigureOrOrganizationDropDownSelector = '[id^=positionItemFollowToggleDropdown-undefined-wv02org]';
const publicFigureOrOrganizationUnfollowSelector = '[id^=positionItemFollowToggleUnfollow-undefined-wv02org]';
const publicFigureOrOrganizationIgnoreSelector = '[id^=positionItemFollowToggleIgnore-undefined-wv02org]';
const publicFigureOrOrganizationUnignoreSelector = '[id^=positionItemFollowToggleStopIgnoring-undefined-wv02org]';
const organizationSection = '#mainContainer:nth-child(3)';
describe('Basic cross-platform We Vote test', async () => {
it('should load the app so we can run tests', async () => {
if (isCordovaFromAppObservableStore) {
// ///////////////////////////////
// For the apps downloadable from either the Apple App Store or Android Play Store,
// click through the onboarding screens
await browser.pause(PAUSE_DURATION_MICROSECONDS * 2);
const contexts = await driver.getContexts();
const context = contexts.includes(ANDROID_CONTEXT) ? ANDROID_CONTEXT : IOS_CONTEXT;
await driver.switchContext(context);
await browser.pause(PAUSE_DURATION_MICROSECONDS);
const firstNextButton = await $('div[data-index="0"] .intro-story__btn--bottom');
await firstNextButton.click();
await browser.pause(PAUSE_DURATION_MICROSECONDS);
const secondNextButton = await $('div[data-index="1"] .intro-story__btn--bottom');
await secondNextButton.click();
await browser.pause(PAUSE_DURATION_MICROSECONDS);
const thirdNextButton = await $('div[data-index="2"] .intro-story__btn--bottom');
await thirdNextButton.click();
await browser.pause(PAUSE_DURATION_MICROSECONDS);
} else {
// ///////////////////////////////
// For the website version, open our quality testing site
await browser.url('ballot');
}
});
it('should input our address', async () => {
await browser.pause(PAUSE_DURATION_BALLOT_LOAD);
if (!(isCordovaFromAppObservableStore && isIOS)) {
await simpleTextInput('editAddressOneHorizontalRowTextForMapSearch', ''); // Clear Location Input
await simpleTextInput('editAddressOneHorizontalRowTextForMapSearch', 'Oakland, CA 94501'); // Enter address
await simpleClick('editAddressOneHorizontalRowSaveButton'); // Click save
} else {
await simpleClick('ballotIfBallotDoesNotAppear');
await hiddenClick('editAddressInPlaceModalEditButton');
await clearTextInputValue('addressBoxText');
await simpleTextInput('addressBoxText', 'Oakland, CA 94501');
await simpleClick('addressBoxModalSaveButton');
}
await browser.pause(PAUSE_DURATION_BALLOT_LOAD);
});
it('should go to the values tab', async() => {
if (!isMobileScreenSize) {
await simpleClick('valuesTabHeaderBar'); // Desktop screen size - HEADER TABS
} else {
await simpleClick('valuesTabFooterBar'); // Mobile or tablet screen size - FOOTER ICONS
}
});
it('should search for “President” in the “Find Opinions / Endorsements” box', async () => {
await hiddenTextInputNth('#findCandidatesAndOpinionsSearch', 1, 'President');
await hiddenClickNth('[class^="MuiButtonBase-root MuiIconButton-root jss"]', 1);
await selectTextInput('[class^="MuiInputBase-input jss"]', ''); // Clear search box
await simpleClick('backToLinkTabHeader'); // Clicks on "Back"
});
it('should test "Public Figures to Follow" section', async () => {
await simpleClick('publicFiguresToFollowPreviewShowMoreId'); // Click "Find more public figures"
await selectTextInput('[class^="MuiInputBase-input jss"]', 'AOC'); // Enters search query
await browser.back(); // Return to values page
await selectClick(publicFigureOrOrganizationFollowSelector); // Follow public figure
await simpleClick('organizationOrPublicFigureLink'); // Click public figure link
await browser.pause(PAUSE_DURATION_MICROSECONDS);
await simpleClick('filterBaseFilters');
await simpleClick('filterBaseFilters');
await selectTextInput('[class^="MuiInputBase-input jss"]', 'Pence'); // Enters search query
await selectTextInput('[class^="MuiInputBase-input jss"]', ''); // Enters search query
await selectClick('.tab-item:nth-child(3) .tab.tab-default'); // Clicks "X Followers"
await selectClick(publicFigureOrOrganizationFollowSelector); // Follow public figure
await selectClick(publicFigureOrOrganizationDropDownSelector); // Click dropdown button
await selectClick(publicFigureOrOrganizationUnfollowSelector); // Unfollow endorsement
await selectClick(publicFigureOrOrganizationDropDownSelector); // Click dropdown button
await selectClick(publicFigureOrOrganizationIgnoreSelector); // Click ignore button
await simpleClick('readMore'); // Clicks "More"
await simpleClick('showLess'); // Clicks "Show Less"
});
it('should return to the values page', async() => {
await browser.back();
await browser.back(); // Return to values page
});
it('should tests organizations to follow', async () => {
await scrollIntoViewSimple('organizationsSection'); // Scrolls to "Organizations to Follow"
await simpleClick('readMore'); // Clicks "More"
await simpleClick('showLess'); // Clicks "Show Less"
await simpleClick('organizationsToFollowPreviewShowMoreId'); // Clicks on "Find more organizations"
await simpleClick('islandFilterOrganizations'); // Click organizations filter
await simpleClick('islandFilterOrganizations');
await hiddenClickNth('#islandFilterOrganizations', 1); // Click public figures filter
await simpleClick('islandFilterBallotItems'); // Click ballot
await simpleClick('islandFilterBallotItems');
await hiddenClickNth('#islandFilterOrganizations', 1);
await selectTextInput('[class^="MuiInputBase-input jss"]', 'Sierra'); // Enters search query
await browser.back(); // Return to values page
await scrollIntoViewSimple('organizationsSection'); // Scrolls to "Organizations to Follow"
await selectClick(`${organizationSection} ${publicFigureOrOrganizationFollowSelector}`);
await selectClick(`${organizationSection} #organizationOrPublicFigureLink`); // Click organization link
await simpleClick('filterBaseFilters');
await simpleClick('filterBaseFilters');
await selectTextInput('[class^="MuiInputBase-input jss"]', 'Sierra'); // Enters search query
await selectTextInput('[class^="MuiInputBase-input jss"]', ''); // Enters search query
await selectClick('.tab-item:nth-child(3) .tab.tab-default'); // Clicks "X Followers"
await selectClick(`${publicFigureOrOrganizationFollowSelector}`);
await selectClick(`${publicFigureOrOrganizationDropDownSelector}`);
await selectClick(`${publicFigureOrOrganizationUnfollowSelector}`);
await selectClick(`${publicFigureOrOrganizationDropDownSelector}`);
await selectClick(`${publicFigureOrOrganizationIgnoreSelector}`);
await selectClick(`${publicFigureOrOrganizationDropDownSelector}`);
await selectClick(`${publicFigureOrOrganizationUnignoreSelector}`);
await simpleClick('readMore'); // Clicks "More"
await simpleClick('showLess'); // Clicks "Show Less"
});
it('should return to the values page', async() => {
await browser.back();
await browser.back(); // Return to values page
});
it('should test "Values to Follow" section', async () => {
await scrollIntoViewSimple('organizationsToFollowPreviewShowMoreId'); // Scrolls to "Find more organizations"
await hiddenClickNth('[id^=issueFollowButton-]', 1); // Follow value
await hiddenClickNth('#readMore', 1); // Clicks "More"
await simpleClick('showLess'); // Clicks "Show Less"
await simpleClick('toggle-button'); // Click dropdown button
await simpleClick('unfollowValue'); // Unfollow value
await hiddenClickNth('[id^=issueFollowButton-]', 1); // Follow value
await hiddenClickNth('#valueListLink', 1); // Click value link
await selectClick(publicFigureOrOrganizationFollowSelector); // Follow endorsement
await selectClick(publicFigureOrOrganizationDropDownSelector); // Click dropdown button
await selectClick(publicFigureOrOrganizationUnfollowSelector); // Unfollow endorsement
await selectClick(publicFigureOrOrganizationDropDownSelector); // Click dropdown button
await selectClick(publicFigureOrOrganizationFollowSelector); // Follow endorsement
await selectClick(publicFigureOrOrganizationUnfollowSelector); // Unfollow endorsement
await selectClick(publicFigureOrOrganizationDropDownSelector); // Click dropdown button
await selectClick(publicFigureOrOrganizationIgnoreSelector); // Click ignore button
await selectClick(publicFigureOrOrganizationDropDownSelector); // Click dropdown button
await selectClick(publicFigureOrOrganizationUnignoreSelector); // Click unignore button
await scrollIntoViewSimple('valuesListTitle'); // Scrolls to "Explore More Values"
await selectClick('[id^=issueFollowButton-]'); // Follow value
await simpleClick('valueListLink'); // Clicks on value
await simpleClick('backToLinkTabHeader'); // Clicks on "Back"
await simpleClick('backToLinkTabHeader'); // Clicks on "Back"
await scrollIntoViewSimple('valuesToFollowPreviewShowMoreId'); // Scrolls to "Find more organizations"
await hiddenClickNth('#valuesToFollowPreviewShowMoreId', 1); // Clicks "Explore all values"
await selectClick('[id^=issueFollowButton-]'); // Follow value
await simpleClick('toggle-button'); // Click dropdown button
await simpleClick('unfollowValue'); // Unfollow value
await simpleTextInput('search_input', xssTest); // Test for xss
await simpleClick('search-clear'); // Clear search
await simpleClick('backToLinkTabHeader'); // Clicks on "Back"
});
});