Skip to content

Commit a8f9268

Browse files
committed
test(journeys): add sdk instance testing
1 parent 30200d6 commit a8f9268

File tree

3 files changed

+150
-70
lines changed

3 files changed

+150
-70
lines changed

test/journeys/lib/test-helpers/demo.js

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@ export const elements = {
99
accessTokenInput: 'input[aria-label="Access Token"]',
1010
saveTokenButton: 'button[aria-label="Save Token"]',
1111
clearTokenButton: 'button[aria-label="Clear Token"]',
12+
accessTokenTypeTokenButton: 'label[for="tokenTypeAccessToken"]',
13+
generateSDKTrueButton: 'label[for="generateSDKTrue"]',
14+
generateSDKFalseButton: 'label[for="generateSDKTrue"]',
1215
toSpaceRadioButton: 'label[for="toTypeSpace"]',
1316
toPersonRadioButton: 'label[for="toTypeEmail"]',
1417
openSpaceWidgetButton: 'button[aria-label="Open Space Widget"]',
@@ -27,13 +30,20 @@ export const elements = {
2730
* @export
2831
* @param {object} aBrowser
2932
* @param {string} accessToken
33+
* @param {boolean} [useSdk=false] set use sdk instance
3034
*/
31-
export function saveToken(aBrowser, accessToken) {
35+
export function saveToken(aBrowser, accessToken, useSdk = false) {
3236
if (aBrowser.element(elements.clearTokenButton).isVisible()) {
3337
aBrowser.element(elements.clearTokenButton).click();
3438
}
39+
aBrowser.element(elements.accessTokenTypeTokenButton).click();
3540
aBrowser.waitUntil(() => aBrowser.element(elements.accessTokenInput).isVisible(), 3500, 'access token input field not found');
3641
aBrowser.setValue(elements.accessTokenInput, accessToken);
3742
assert.equal(aBrowser.element(elements.accessTokenInput).getValue(), accessToken, 'access token entry failed');
43+
44+
if (useSdk) {
45+
aBrowser.element(elements.generateSDKTrueButton).click();
46+
}
47+
3848
aBrowser.element(elements.saveTokenButton).click();
3949
}

test/journeys/specs/smoke/demo.js

Lines changed: 120 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@ describe('demo widget', () => {
1717
browser.reload();
1818
browser.call(() => renameJob(jobName, browser));
1919

20-
browserLocal.url('/dist-demo/index.html');
21-
browserRemote.url('/dist-demo/index.html');
20+
browserLocal.url('/dist-demo/index.html?local');
21+
browserRemote.url('/dist-demo/index.html?remote');
2222
});
2323

2424
it('create test users', () => {
@@ -29,86 +29,149 @@ describe('demo widget', () => {
2929
browser.refresh();
3030
});
3131

32-
it('saves token for local user', () => {
33-
saveToken(browserLocal, mccoy.token.access_token);
34-
});
32+
describe('access token authentication', () => {
33+
it('saves token for local user', () => {
34+
saveToken(browserLocal, mccoy.token.access_token);
35+
});
3536

36-
it('saves token for remote user', () => {
37-
saveToken(browserRemote, spock.token.access_token);
38-
});
37+
it('saves token for remote user', () => {
38+
saveToken(browserRemote, spock.token.access_token);
39+
});
3940

40-
describe('space widget', () => {
41-
it('opens space widget for mccoy in local', () => {
42-
browserLocal.click(elements.toPersonRadioButton);
43-
browserLocal.element(elements.toPersonInput).setValue(spock.email);
44-
browserLocal.click(elements.openSpaceWidgetButton);
45-
// Wait for conversation to be ready
46-
const textInputField = `[placeholder="Send a message to ${spock.displayName}"]`;
41+
describe('space widget', () => {
42+
it('opens space widget for mccoy in local', () => {
43+
browserLocal.click(elements.toPersonRadioButton);
44+
browserLocal.element(elements.toPersonInput).setValue(spock.email);
45+
browserLocal.click(elements.openSpaceWidgetButton);
46+
// Wait for conversation to be ready
47+
const textInputField = `[placeholder="Send a message to ${spock.displayName}"]`;
4748

48-
browserLocal.waitForVisible(textInputField);
49-
browserLocal.scroll(textInputField);
50-
});
49+
browserLocal.waitForVisible(textInputField);
50+
browserLocal.scroll(textInputField);
51+
});
5152

52-
it('opens space widget for spock in remote', () => {
53-
browserRemote.click(elements.toPersonRadioButton);
54-
browserRemote.element(elements.toPersonInput).setValue(mccoy.email);
55-
browserRemote.click(elements.openSpaceWidgetButton);
56-
// Wait for conversation to be ready
57-
const textInputFieldRemote = `[placeholder="Send a message to ${mccoy.displayName}"]`;
53+
it('opens space widget for spock in remote', () => {
54+
browserRemote.click(elements.toPersonRadioButton);
55+
browserRemote.element(elements.toPersonInput).setValue(mccoy.email);
56+
browserRemote.click(elements.openSpaceWidgetButton);
57+
// Wait for conversation to be ready
58+
const textInputFieldRemote = `[placeholder="Send a message to ${mccoy.displayName}"]`;
5859

59-
browserRemote.waitForVisible(textInputFieldRemote);
60-
browserRemote.scroll(textInputFieldRemote);
61-
});
60+
browserRemote.waitForVisible(textInputFieldRemote);
61+
browserRemote.scroll(textInputFieldRemote);
62+
});
6263

63-
describe('space widget functionality', () => {
64-
describe('Activity Menu', () => {
65-
it('has a menu button', () => {
66-
assert.isTrue(browserLocal.isVisible(spaceElements.menuButton));
64+
describe('space widget functionality', () => {
65+
describe('Activity Menu', () => {
66+
it('has a menu button', () => {
67+
assert.isTrue(browserLocal.isVisible(spaceElements.menuButton));
68+
});
69+
70+
it('displays the menu when clicking the menu button', () => {
71+
browserLocal.click(spaceElements.menuButton);
72+
browserLocal.waitForVisible(spaceElements.activityMenu);
73+
});
74+
75+
it('has an exit menu button', () => {
76+
assert.isTrue(browserLocal.isVisible(spaceElements.activityMenu));
77+
browserLocal.waitForVisible(spaceElements.exitButton);
78+
});
79+
80+
it('closes the menu with the exit button', () => {
81+
browserLocal.click(spaceElements.exitButton);
82+
browserLocal.waitForVisible(spaceElements.activityMenu, 60000, true);
83+
});
6784
});
6885

69-
it('displays the menu when clicking the menu button', () => {
70-
browserLocal.click(spaceElements.menuButton);
71-
browserLocal.waitForVisible(spaceElements.activityMenu);
72-
});
86+
describe('messaging', () => {
87+
it('sends and receives messages', () => {
88+
const martyText = 'Wait a minute. Wait a minute, Doc. Ah... Are you telling me that you built a time machine... out of a DeLorean?';
89+
const docText = 'The way I see it, if you\'re gonna build a time machine into a car, why not do it with some style?';
7390

74-
it('has an exit menu button', () => {
75-
assert.isTrue(browserLocal.isVisible(spaceElements.activityMenu));
76-
browserLocal.waitForVisible(spaceElements.exitButton);
91+
sendMessage(remote, local, martyText);
92+
verifyMessageReceipt(local, remote, martyText, false);
93+
sendMessage(local, remote, docText);
94+
verifyMessageReceipt(remote, local, docText, false);
95+
});
7796
});
7897

79-
it('closes the menu with the exit button', () => {
80-
browserLocal.click(spaceElements.exitButton);
81-
browserLocal.waitForVisible(spaceElements.activityMenu, 60000, true);
98+
describe('external control', () => {
99+
it('can change current activity', () => {
100+
assert.isTrue(browserLocal.isVisible(spaceElements.messageWidget));
101+
browserLocal.click(elements.changeActivityMeetButton);
102+
browserLocal.click(elements.updateSpaceWidgetButton);
103+
browserLocal.waitForVisible(spaceElements.meetWidget, 6000);
104+
});
82105
});
83106
});
107+
});
108+
109+
describe('recents widget', () => {
110+
it('opens recents widget for mccoy in local', () => {
111+
browserLocal.click(elements.openRecentsWidgetButton);
112+
browserLocal.waitForVisible(elements.recentsWidgetContainer);
113+
});
114+
});
115+
});
116+
117+
describe('sdk instance authentication', () => {
118+
it('reloads demo page and stores access token with sdk for local', () => {
119+
// Widget demo uses cookies to save info
120+
browserLocal.deleteCookie();
121+
browserLocal.refresh();
122+
123+
saveToken(browserLocal, mccoy.token.access_token, true);
124+
});
125+
126+
it('reloads demo page and stores access token with sdk for browser', () => {
127+
// Widget demo uses cookies to save info
128+
browserRemote.deleteCookie();
129+
browserRemote.refresh();
130+
131+
saveToken(browserRemote, spock.token.access_token, true);
132+
});
133+
134+
describe('space widget', () => {
135+
it('opens space widget for mccoy in local', () => {
136+
browserLocal.click(elements.toPersonRadioButton);
137+
browserLocal.element(elements.toPersonInput).setValue(spock.email);
138+
browserLocal.click(elements.openSpaceWidgetButton);
139+
// Wait for conversation to be ready
140+
const textInputField = `[placeholder="Send a message to ${spock.displayName}"]`;
141+
142+
browserLocal.waitForVisible(textInputField);
143+
browserLocal.scroll(textInputField);
144+
});
145+
146+
it('opens space widget for spock in remote', () => {
147+
browserRemote.click(elements.toPersonRadioButton);
148+
browserRemote.element(elements.toPersonInput).setValue(mccoy.email);
149+
browserRemote.click(elements.openSpaceWidgetButton);
150+
// Wait for conversation to be ready
151+
const textInputFieldRemote = `[placeholder="Send a message to ${mccoy.displayName}"]`;
152+
153+
browserRemote.waitForVisible(textInputFieldRemote);
154+
browserRemote.scroll(textInputFieldRemote);
155+
});
84156

85157
describe('messaging', () => {
86158
it('sends and receives messages', () => {
87-
const martyText = 'Wait a minute. Wait a minute, Doc. Ah... Are you telling me that you built a time machine... out of a DeLorean?';
88-
const docText = 'The way I see it, if you\'re gonna build a time machine into a car, why not do it with some style?';
159+
const martyText = 'Doc... what if we don\'t succeed?';
160+
const docText = 'We must succeed.';
89161

90162
sendMessage(remote, local, martyText);
91163
verifyMessageReceipt(local, remote, martyText, false);
92164
sendMessage(local, remote, docText);
93165
verifyMessageReceipt(remote, local, docText, false);
94166
});
95167
});
96-
97-
describe('external control', () => {
98-
it('can change current activity', () => {
99-
assert.isTrue(browserLocal.isVisible(spaceElements.messageWidget));
100-
browserLocal.click(elements.changeActivityMeetButton);
101-
browserLocal.click(elements.updateSpaceWidgetButton);
102-
browserLocal.waitForVisible(spaceElements.meetWidget, 6000);
103-
});
104-
});
105168
});
106-
});
107169

108-
describe('recents widget', () => {
109-
it('opens recents widget for mccoy in local', () => {
110-
browserLocal.click(elements.openRecentsWidgetButton);
111-
browserLocal.waitForVisible(elements.recentsWidgetContainer);
170+
describe('recents widget', () => {
171+
it('opens recents widget for mccoy in local', () => {
172+
browserLocal.click(elements.openRecentsWidgetButton);
173+
browserLocal.waitForVisible(elements.recentsWidgetContainer);
174+
});
112175
});
113176
});
114177

test/journeys/testplan.md

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -80,18 +80,25 @@ The smoke test suite verifies basic functionality of all widgets. This suite is
8080

8181
#### Demo Page Smoke Tests (Built from widget-demo)
8282

83-
- space widget functionality
84-
- Activity Menu
85-
- has a menu button
86-
- displays the menu when clicking the menu button
87-
- has an exit menu button
88-
- closes the menu with the exit button
89-
- messaging
90-
- sends and receives messages
91-
- External Control
92-
- can change current activity
93-
- recents widget
94-
- opens and loads recents widget
83+
- access token authentication
84+
- space widget functionality
85+
- Activity Menu
86+
- has a menu button
87+
- displays the menu when clicking the menu button
88+
- has an exit menu button
89+
- closes the menu with the exit button
90+
- messaging
91+
- sends and receives messages
92+
- External Control
93+
- can change current activity
94+
- recents widget
95+
- opens and loads recents widget
96+
- sdk instance authentication
97+
- space widget functionality
98+
- messaging
99+
- sends and receives messages
100+
- recents widget
101+
- opens and loads recents widget
95102

96103
### Space Widget Suite
97104

0 commit comments

Comments
 (0)