mirror of
https://github.com/wassname/talk.git
synced 2026-07-13 14:47:33 +08:00
Merge branch 'next' into user-status-refactor
This commit is contained in:
+1
-2
@@ -1,11 +1,10 @@
|
||||
const serve = require('../../serve');
|
||||
const mongoose = require('../../services/mongoose');
|
||||
const {shutdown} = require('../../bin/util');
|
||||
|
||||
module.exports = {
|
||||
before: async (done) => {
|
||||
console.log('Dropping test database');
|
||||
await mongoose.connection.dropDatabase();
|
||||
await serve();
|
||||
done();
|
||||
},
|
||||
after: (done) => {
|
||||
|
||||
+159
-17
@@ -7,23 +7,165 @@ module.exports = {
|
||||
return this
|
||||
.waitForElementVisible('body');
|
||||
},
|
||||
openDrawer() {
|
||||
this
|
||||
.waitForElementVisible('@drawerButton')
|
||||
.click('@drawerButton');
|
||||
this.expect.section('@drawer').to.be.visible;
|
||||
return this.section.drawer;
|
||||
},
|
||||
goToModerate() {
|
||||
this
|
||||
.click('@moderateNav')
|
||||
.expect.section('@moderate').to.be.visible;
|
||||
return this.section.moderate;
|
||||
},
|
||||
goToStories() {
|
||||
this
|
||||
.click('@storiesNav')
|
||||
.expect.section('@stories').to.be.visible;
|
||||
return this.section.stories;
|
||||
},
|
||||
goToCommunity() {
|
||||
this
|
||||
.click('@communityNav')
|
||||
.expect.section('@community').to.be.visible;
|
||||
return this.section.community;
|
||||
},
|
||||
logout() {
|
||||
this
|
||||
.waitForElementVisible('@settingsButton')
|
||||
.click('@settingsButton')
|
||||
.waitForElementVisible('@signOutButton')
|
||||
.click('@signOutButton');
|
||||
},
|
||||
navigateAndLogin(user) {
|
||||
this
|
||||
.navigate()
|
||||
.expect.section('@login').to.be.visible;
|
||||
return this.section.login.login(user);
|
||||
},
|
||||
}],
|
||||
elements: {
|
||||
'loginLayout': '.talk-admin-login',
|
||||
'signInForm': '.talk-admin-login-sign-in',
|
||||
'emailInput': '.talk-admin-login-sign-in #email',
|
||||
'passwordInput': '.talk-admin-login-sign-in #password',
|
||||
'signInButton': '.talk-admin-login-sign-in-button',
|
||||
'storiesNav': '.talk-admin-nav-stories',
|
||||
'storiesDrawerNav': '.talk-admin-drawer-nav .talk-admin-nav-stories',
|
||||
'storiesSection': '.talk-admin-stories',
|
||||
'communityNav': '.talk-admin-nav-community',
|
||||
'communityDrawerNav': '.talk-admin-drawer-nav .talk-admin-nav-community',
|
||||
'communitySection': '.talk-admin-community',
|
||||
'moderationContainer': '.talk-admin-moderation-container',
|
||||
'drawerButton': '.mdl-layout__drawer-button',
|
||||
'drawerOverlay': 'div.mdl-layout__obfuscator.is-visible',
|
||||
'settingsButton': '.talk-admin-header-settings-button',
|
||||
'signOutButton': '.talk-admin-header-sign-out',
|
||||
}
|
||||
drawerButton: '.mdl-layout__drawer-button',
|
||||
drawerOverlay: 'div.mdl-layout__obfuscator.is-visible',
|
||||
storiesNav: '.talk-admin-nav-stories',
|
||||
communityNav: '.talk-admin-nav-community',
|
||||
moderateNav: '.talk-admin-nav-moderate',
|
||||
settingsButton: '.talk-admin-header-settings-button',
|
||||
signOutButton: '.talk-admin-header-sign-out',
|
||||
suspendUserDialog: '.talk-admin-suspend-user-dialog',
|
||||
suspendUserConfirmButton: '.talk-admin-suspend-user-dialog-confirm',
|
||||
supendUserSendButton: '.talk-admin-suspend-user-dialog-send',
|
||||
toast: '.toastify',
|
||||
toastClose: '.toastify__close',
|
||||
},
|
||||
sections: {
|
||||
moderate: {
|
||||
selector: '.talk-admin-moderation-container',
|
||||
elements: {
|
||||
comment: '.talk-admin-moderate-comment',
|
||||
commentActionMenu: '.talk-admin-moderate-comment-actions-menu',
|
||||
actionItemSuspendUser: '.action-menu-item#suspendUser',
|
||||
actionMenuButton: '.talk-admin-moderate-comment-actions-menu #actions-dropdown-0'
|
||||
}
|
||||
},
|
||||
stories: {
|
||||
selector: '.talk-admin-stories',
|
||||
},
|
||||
community: {
|
||||
selector: '.talk-admin-community',
|
||||
commands: [{
|
||||
url: function() {
|
||||
return `${this.api.launchUrl}/admin/community`;
|
||||
},
|
||||
ready() {
|
||||
return this
|
||||
.waitForElementVisible('body');
|
||||
},
|
||||
goToPeople() {
|
||||
this
|
||||
.click('@peopleNav')
|
||||
.expect.section('@people').to.be.visible;
|
||||
return this.section.people;
|
||||
},
|
||||
}],
|
||||
elements: {
|
||||
peopleNav: '.talk-admin-nav-people',
|
||||
flaggedAccountsNav: '.talk-admin-nav-flagged-accounts',
|
||||
flaggedAccountsContainer: '.talk-adnin-community-flagged-accounts',
|
||||
flaggedUser:'.talk-admin-community-flagged-user',
|
||||
flaggedUserApproveButton: '.talk-admin-flagged-user-approve-button',
|
||||
flaggedUserRejectButton: '.talk-admin-flagged-user-reject-button',
|
||||
usernameDialog: '.talk-reject-username-dialog',
|
||||
usernameDialogButtons: '.talk-reject-username-dialog-buttons',
|
||||
usernameDialogSuspend: '.talk-reject-username-dialog-button-k',
|
||||
usernameDialogSuspensionMessage: '.talk-reject-username-dialog-suspension-message'
|
||||
},
|
||||
sections: {
|
||||
people: {
|
||||
selector: '.talk-admin-community-people-container',
|
||||
elements: {
|
||||
firstRow: '.talk-admin-community-people-row:first-child',
|
||||
dropdownStatus: '.talk-admin-community-people-dd-status',
|
||||
dropdownRole: '.talk-admin-community-people-dd-role',
|
||||
dropdownStatusActive: '.talk-admin-community-people-dd-status .dd-list-active',
|
||||
optionActive: '.dd-option#ACTIVE',
|
||||
optionBanned: '.dd-option#BANNED',
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
drawer: {
|
||||
selector: '.talk-admin-drawer-nav',
|
||||
commands: [{
|
||||
goToStories() {
|
||||
this
|
||||
.click('@storiesButton');
|
||||
this.parent.expect.section('@stories').to.be.visible;
|
||||
this.close();
|
||||
return this.parent.section.stories;
|
||||
},
|
||||
goToCommunity() {
|
||||
this
|
||||
.click('@communityButton');
|
||||
this.parent.expect.section('@community').to.be.visible;
|
||||
this.close();
|
||||
return this.parent.section.stories;
|
||||
},
|
||||
close() {
|
||||
this.parent
|
||||
.click('@drawerOverlay')
|
||||
.waitForElementNotPresent('@drawerOverlay');
|
||||
return this.parent;
|
||||
},
|
||||
}],
|
||||
elements: {
|
||||
'storiesButton': '.talk-admin-drawer-nav .talk-admin-nav-stories',
|
||||
'communityButton': '.talk-admin-drawer-nav .talk-admin-nav-community',
|
||||
},
|
||||
},
|
||||
login: {
|
||||
commands: [{
|
||||
login(user) {
|
||||
this
|
||||
.waitForElementVisible('@signInForm')
|
||||
.setValue('@emailInput', user.email)
|
||||
.setValue('@passwordInput', user.password)
|
||||
.waitForElementVisible('@signInButton')
|
||||
.click('@signInButton');
|
||||
const adminPage = this.api.page.admin();
|
||||
adminPage.expect.section('@moderate').to.be.visible;
|
||||
return adminPage.section.moderate;
|
||||
},
|
||||
}],
|
||||
selector: '.talk-admin-login',
|
||||
elements: {
|
||||
'signInForm': '.talk-admin-login-sign-in',
|
||||
'emailInput': '.talk-admin-login-sign-in #email',
|
||||
'passwordInput': '.talk-admin-login-sign-in #password',
|
||||
'signInButton': '.talk-admin-login-sign-in-button',
|
||||
}
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,22 +0,0 @@
|
||||
module.exports = {
|
||||
commands: [{
|
||||
url: function() {
|
||||
return `${this.api.launchUrl}/admin/community`;
|
||||
},
|
||||
ready() {
|
||||
return this
|
||||
.waitForElementVisible('body');
|
||||
},
|
||||
}],
|
||||
elements: {
|
||||
container: '.talk-admin-community',
|
||||
flaggedAccountsContainer: '.talk-adnin-community-flagged-accounts',
|
||||
flaggedUser:'.talk-admin-community-flagged-user',
|
||||
flaggedUserApproveButton: '.talk-admin-flagged-user-approve-button',
|
||||
flaggedUserRejectButton: '.talk-admin-flagged-user-reject-button',
|
||||
usernameDialog: '.talk-reject-username-dialog',
|
||||
usernameDialogButtons: '.talk-reject-username-dialog-buttons',
|
||||
usernameDialogSuspend: '.talk-reject-username-dialog-button-k',
|
||||
usernameDialogSuspensionMessage: '.talk-reject-username-dialog-suspension-message'
|
||||
}
|
||||
};
|
||||
@@ -1,21 +1,38 @@
|
||||
const iframeId = 'coralStreamEmbed_iframe';
|
||||
const SortedWindowHandler = require('../utils/SortedWindowHandler');
|
||||
|
||||
module.exports = {
|
||||
commands: [{
|
||||
ready: function() {
|
||||
this.switchToIframe();
|
||||
this.expect.section('@comments').to.be.visible;
|
||||
return this.section.comments;
|
||||
},
|
||||
goToProfileSection: function() {
|
||||
this.waitForElementVisible('@profileTabButton');
|
||||
this.click('@profileTabButton');
|
||||
this.expect.section('@profile').to.be.visible;
|
||||
return this.section.profile;
|
||||
},
|
||||
goToCommentsSection: function() {
|
||||
this.waitForElementVisible('@commentsTabButton');
|
||||
this.click('@commentsTabButton');
|
||||
this.expect.section('@comments').to.be.visible;
|
||||
return this.section.comments;
|
||||
},
|
||||
navigateToAsset: function(asset) {
|
||||
this.api.url(`${this.api.launchUrl}/assets/title/${asset}`);
|
||||
return this;
|
||||
},
|
||||
getEmbedSection: function() {
|
||||
switchToIframe: function() {
|
||||
this.waitForElementVisible('@iframe');
|
||||
|
||||
// Pause a bit to let iframe initialize in the hope that it'll
|
||||
// fix https://www.browserstack.com/automate/builds/96419cf46e3d6376a36ae6d3f90934112df1ed91/sessions/224f1a1566c1c8c7859e2e76ece51862200f0173#automate_button
|
||||
this.api.pause(200);
|
||||
this.api.pause(1000);
|
||||
|
||||
this.api.frame(iframeId);
|
||||
this.expect.section('@embed').to.be.present;
|
||||
return this.section.embed;
|
||||
return this;
|
||||
},
|
||||
}],
|
||||
url: function() {
|
||||
@@ -23,28 +40,66 @@ module.exports = {
|
||||
},
|
||||
elements: {
|
||||
iframe: `#${iframeId}`,
|
||||
commentsTabButton: '.talk-embed-stream-comments-tab > button',
|
||||
profileTabButton: '.talk-embed-stream-profile-tab > button',
|
||||
banDialog: '.talk-ban-user-dialog',
|
||||
banDialogConfirmButton: '.talk-ban-user-dialog-button-confirm',
|
||||
},
|
||||
sections: {
|
||||
embed: {
|
||||
comments: {
|
||||
commands: [{
|
||||
getProfileSection: function() {
|
||||
this.waitForElementVisible('@profileTabButton');
|
||||
this.click('@profileTabButton');
|
||||
this.expect.section('@profile').to.be.present;
|
||||
return this.section.profile;
|
||||
openLoginPopup(callback) {
|
||||
const windowHandler = new SortedWindowHandler(this.api);
|
||||
|
||||
this
|
||||
.waitForElementVisible('@signInButton')
|
||||
.click('@signInButton');
|
||||
|
||||
// Wait for window to be created
|
||||
// https://www.browserstack.com/automate/builds/1ceccf4efb4683b7feb890f45a32b5922b40ed3f/sessions/17b1a79682bef2498cb0be86eac317a08c976b0a#automate_button
|
||||
this.api.pause(200);
|
||||
|
||||
// Focusing on the Login PopUp
|
||||
windowHandler.windowHandles((handles) => {
|
||||
this.api.switchWindow(handles[1]);
|
||||
});
|
||||
|
||||
const popup = this.api.page.popup().ready();
|
||||
callback(popup);
|
||||
|
||||
// Give a tiny bit of time to let popup close.
|
||||
this.api.pause(50);
|
||||
|
||||
if (this.api.capabilities.browserName === 'MicrosoftEdge') {
|
||||
|
||||
// More time for edge.
|
||||
// https://www.browserstack.com/automate/builds/1ceccf4efb4683b7feb890f45a32b5922b40ed3f/sessions/7393dbfda8387e43b6d5851f359b0c07db414973
|
||||
this.api.pause(1000);
|
||||
}
|
||||
|
||||
// Focusing on the Embed Window
|
||||
windowHandler.windowHandles((handles) => {
|
||||
this.api.switchWindow(handles[0]);
|
||||
|
||||
// For some reasons firefox does not automatically load auth after login.
|
||||
// https://www.browserstack.com/automate/builds/37650cb4e66c6edce0ba0800a1c1b7e7f74bf991/sessions/7a4e9da69b0f9ecdf8b7fa9150639e47b1532cb0#automate_button
|
||||
if (this.api.capabilities.browserName === 'firefox') {
|
||||
this.parent.navigate().ready();
|
||||
} else {
|
||||
this.parent.switchToIframe();
|
||||
}
|
||||
});
|
||||
return this;
|
||||
},
|
||||
getCommentsSection: function() {
|
||||
this.waitForElementVisible('@commentsTabButton');
|
||||
this.click('@commentsTabButton');
|
||||
this.expect.section('@comments').to.be.present;
|
||||
return this.section.comments;
|
||||
logout() {
|
||||
this
|
||||
.waitForElementVisible('@logoutButton')
|
||||
.click('@logoutButton');
|
||||
},
|
||||
}],
|
||||
selector: '#talk-embed-stream-container',
|
||||
selector: '.talk-embed-stream-comments-tab-pane',
|
||||
elements: {
|
||||
logoutButton: '.talk-stream-userbox-logout',
|
||||
commentsTabButton: '.talk-embed-stream-comments-tab > button',
|
||||
profileTabButton: '.talk-embed-stream-profile-tab > button',
|
||||
signInButton: '#coralSignInButton',
|
||||
commentBoxTextarea: '#commentText',
|
||||
commentBoxPostButton: '.talk-plugin-commentbox-button',
|
||||
@@ -62,24 +117,30 @@ module.exports = {
|
||||
elements: {
|
||||
offensiveUsernameRadio: '.talk-plugin-flags-popup-radio#USERNAME_OFFENSIVE',
|
||||
flagUsernameRadio: '.talk-plugin-flags-popup-radio#USERS',
|
||||
flagCommentRadio: '.talk-plugin-flags-popup-radio#COMMENTS',
|
||||
continueButton: '.talk-plugin-flags-popup-button',
|
||||
popUpText: '.talk-plugin-flags-popup-text',
|
||||
spamCommentRadio: '.talk-plugin-flags-popup-radio#COMMENT_SPAM',
|
||||
}
|
||||
},
|
||||
profile: {
|
||||
selector: '.talk-embed-stream-profile-tab-pane',
|
||||
mod: {
|
||||
selector: '.talk-plugin-moderation-actions',
|
||||
elements: {
|
||||
notLoggedIn: '.talk-embed-stream-not-logged-in',
|
||||
myCommentHistory: '.talk-my-profile-comment-history',
|
||||
myCommentHistoryReactions: '.talk-my-profile-comment-history .comment-summary .comment-summary-reactions',
|
||||
myCommentHistoryReactionCount: '.talk-my-profile-comment-history .comment-summary .comment-summary-reactions .comment-summary-reaction-count',
|
||||
myCommentHistoryComment: '.talk-my-profile-comment-history .my-comment-body',
|
||||
arrow: '.talk-plugin-moderation-actions-arrow',
|
||||
menu: '.talk-plugin-modetarion-actions-menu',
|
||||
banButton: '.talk-plugin-moderation-actions-ban',
|
||||
},
|
||||
},
|
||||
comments: {
|
||||
selector: '.talk-embed-stream-comments-tab-pane',
|
||||
elements: {},
|
||||
},
|
||||
},
|
||||
},
|
||||
profile: {
|
||||
selector: '.talk-embed-stream-profile-tab-pane',
|
||||
elements: {
|
||||
notLoggedIn: '.talk-embed-stream-not-logged-in',
|
||||
myCommentHistory: '.talk-my-profile-comment-history',
|
||||
myCommentHistoryReactions: '.talk-my-profile-comment-history .comment-summary .comment-summary-reactions',
|
||||
myCommentHistoryReactionCount: '.talk-my-profile-comment-history .comment-summary .comment-summary-reactions .comment-summary-reaction-count',
|
||||
myCommentHistoryComment: '.talk-my-profile-comment-history .my-comment-body',
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
module.exports = {
|
||||
elements: {
|
||||
registerButton: '#coralRegister',
|
||||
signInButton: '#coralSignInButton',
|
||||
emailInput: '#email',
|
||||
usernameInput: '#username',
|
||||
passwordInput: '#password',
|
||||
confirmPasswordInput: '#confirmPassword',
|
||||
signUpButton: '#coralSignUpButton',
|
||||
signIn: '.coral-sign-in',
|
||||
loginButton: '#coralLogInButton'
|
||||
},
|
||||
};
|
||||
@@ -0,0 +1,41 @@
|
||||
module.exports = {
|
||||
commands: [{
|
||||
ready() {
|
||||
return this
|
||||
.waitForElementVisible('body');
|
||||
},
|
||||
login(user) {
|
||||
return this
|
||||
.setValue('@emailInput', user.email)
|
||||
.setValue('@passwordInput', user.password)
|
||||
.waitForElementVisible('@signIn')
|
||||
.waitForElementVisible('@loginButton')
|
||||
.click('@loginButton');
|
||||
},
|
||||
register(user) {
|
||||
return this
|
||||
.waitForElementVisible('@registerButton')
|
||||
.click('@registerButton')
|
||||
.setValue('@emailInput', user.email)
|
||||
.setValue('@usernameInput', user.username)
|
||||
.setValue('@passwordInput', user.password)
|
||||
.setValue('@confirmPasswordInput', user.password)
|
||||
.waitForElementVisible('@signUpButton')
|
||||
.click('@signUpButton')
|
||||
.waitForElementVisible('@signIn')
|
||||
.waitForElementVisible('@loginButton')
|
||||
.click('@loginButton');
|
||||
},
|
||||
}],
|
||||
elements: {
|
||||
registerButton: '#coralRegister',
|
||||
signInButton: '#coralSignInButton',
|
||||
emailInput: '#email',
|
||||
usernameInput: '#username',
|
||||
passwordInput: '#password',
|
||||
confirmPasswordInput: '#confirmPassword',
|
||||
signUpButton: '#coralSignUpButton',
|
||||
signIn: '.coral-sign-in',
|
||||
loginButton: '#coralLogInButton'
|
||||
},
|
||||
};
|
||||
@@ -1,12 +1,27 @@
|
||||
module.exports = {
|
||||
'@tags': ['install'],
|
||||
|
||||
before: (client) => {
|
||||
client.resizeWindow(1600, 1200);
|
||||
},
|
||||
|
||||
afterEach: (client, done) => {
|
||||
if (client.currentTest.results.failed) {
|
||||
throw new Error('Test Case failed, skipping all the rest');
|
||||
}
|
||||
done();
|
||||
},
|
||||
|
||||
after: (client) => {
|
||||
client.end();
|
||||
},
|
||||
|
||||
'User goes to install': (client) => {
|
||||
const install = client.page.install();
|
||||
|
||||
install
|
||||
.navigate()
|
||||
.expect.section('@step1').to.be.present;
|
||||
.expect.section('@step1').to.be.visible;
|
||||
|
||||
},
|
||||
'User clicks get started button': (client) => {
|
||||
@@ -20,7 +35,7 @@ module.exports = {
|
||||
const install = client.page.install();
|
||||
|
||||
install
|
||||
.expect.section('@step2').to.be.present;
|
||||
.expect.section('@step2').to.be.visible;
|
||||
},
|
||||
'User fills step 2': (client) => {
|
||||
const step2 = client.page.install().section.step2;
|
||||
@@ -36,7 +51,7 @@ module.exports = {
|
||||
const install = client.page.install();
|
||||
|
||||
install
|
||||
.expect.section('@step3').to.be.present;
|
||||
.expect.section('@step3').to.be.visible;
|
||||
},
|
||||
'User fills step 3': (client) => {
|
||||
const step3 = client.page.install().section.step3;
|
||||
@@ -54,7 +69,7 @@ module.exports = {
|
||||
const install = client.page.install();
|
||||
|
||||
install
|
||||
.expect.section('@step4').to.be.present;
|
||||
.expect.section('@step4').to.be.visible;
|
||||
},
|
||||
'User fills step 4': (client) => {
|
||||
const step4 = client.page.install().section.step4;
|
||||
@@ -73,9 +88,6 @@ module.exports = {
|
||||
const install = client.page.install();
|
||||
|
||||
install
|
||||
.expect.section('@step5').to.be.present;
|
||||
.expect.section('@step5').to.be.visible;
|
||||
},
|
||||
after: (client) => {
|
||||
client.end();
|
||||
}
|
||||
};
|
||||
|
||||
+18
-33
@@ -1,56 +1,41 @@
|
||||
module.exports = {
|
||||
'@tags': ['admin', 'login'],
|
||||
beforeEach: (client) => {
|
||||
|
||||
before: (client) => {
|
||||
client.resizeWindow(1024, 800);
|
||||
},
|
||||
|
||||
afterEach: (client, done) => {
|
||||
if (client.currentTest.results.failed) {
|
||||
throw new Error('Test Case failed, skipping all the rest');
|
||||
}
|
||||
done();
|
||||
},
|
||||
|
||||
after: (client) => {
|
||||
client.end();
|
||||
},
|
||||
|
||||
'Admin logs in': (client) => {
|
||||
const adminPage = client.page.admin();
|
||||
const {testData: {admin}} = client.globals;
|
||||
|
||||
adminPage
|
||||
.navigate()
|
||||
.waitForElementVisible('@loginLayout')
|
||||
.waitForElementVisible('@signInForm')
|
||||
.setValue('@emailInput', admin.email)
|
||||
.setValue('@passwordInput', admin.password)
|
||||
.waitForElementVisible('@signInButton')
|
||||
.click('@signInButton');
|
||||
|
||||
adminPage
|
||||
.waitForElementVisible('@moderationContainer');
|
||||
adminPage.navigateAndLogin(admin);
|
||||
},
|
||||
|
||||
'Admin goes to Stories': (client) => {
|
||||
const adminPage = client.page.admin();
|
||||
|
||||
adminPage
|
||||
.navigate()
|
||||
.waitForElementVisible('@drawerButton')
|
||||
.click('@drawerButton')
|
||||
.waitForElementVisible('@storiesDrawerNav')
|
||||
.click('@storiesDrawerNav')
|
||||
.waitForElementVisible('@drawerOverlay')
|
||||
.click('@drawerOverlay')
|
||||
.waitForElementVisible('@storiesSection');
|
||||
|
||||
.openDrawer()
|
||||
.goToStories();
|
||||
},
|
||||
|
||||
'Admin goes to Community': (client) => {
|
||||
const adminPage = client.page.admin();
|
||||
|
||||
adminPage
|
||||
.navigate()
|
||||
.waitForElementVisible('@drawerButton')
|
||||
.click('@drawerButton')
|
||||
.waitForElementVisible('@communityDrawerNav')
|
||||
.click('@communityDrawerNav')
|
||||
.waitForElementVisible('@drawerOverlay')
|
||||
.click('@drawerOverlay')
|
||||
.waitForElementVisible('@communitySection');
|
||||
.openDrawer()
|
||||
.goToCommunity();
|
||||
},
|
||||
|
||||
after: (client) => {
|
||||
client.end();
|
||||
}
|
||||
};
|
||||
|
||||
@@ -1,7 +1,21 @@
|
||||
const SortedWindowHandler = require('../utils/SortedWindowHandler');
|
||||
|
||||
module.exports = {
|
||||
'@tags': ['embedStream', 'login'],
|
||||
|
||||
before: (client) => {
|
||||
client.resizeWindow(1600, 1200);
|
||||
},
|
||||
|
||||
afterEach: (client, done) => {
|
||||
if (client.currentTest.results.failed) {
|
||||
throw new Error('Test Case failed, skipping all the rest');
|
||||
}
|
||||
done();
|
||||
},
|
||||
|
||||
after: (client) => {
|
||||
client.end();
|
||||
},
|
||||
|
||||
'creates a new asset': (client) => {
|
||||
const asset = 'newAssetTest';
|
||||
const embedStream = client.page.embedStream();
|
||||
@@ -9,92 +23,43 @@ module.exports = {
|
||||
embedStream
|
||||
.navigateToAsset(asset)
|
||||
.assert.title(asset)
|
||||
.getEmbedSection();
|
||||
.ready();
|
||||
},
|
||||
|
||||
'creates an user and user logs in': (client) => {
|
||||
const {testData: {user}} = client.globals;
|
||||
const embedStream = client.page.embedStream();
|
||||
|
||||
const embed = embedStream
|
||||
// Go back to default asset.
|
||||
const comments =
|
||||
embedStream
|
||||
.navigate()
|
||||
.getEmbedSection();
|
||||
.ready();
|
||||
|
||||
const windowHandler = new SortedWindowHandler(client);
|
||||
|
||||
embed
|
||||
.waitForElementVisible('@signInButton')
|
||||
.click('@signInButton');
|
||||
|
||||
// Wait for window to be created
|
||||
// https://www.browserstack.com/automate/builds/1ceccf4efb4683b7feb890f45a32b5922b40ed3f/sessions/17b1a79682bef2498cb0be86eac317a08c976b0a#automate_button
|
||||
client.pause(200);
|
||||
|
||||
// Focusing on the Login PopUp
|
||||
windowHandler.windowHandles((handles) => {
|
||||
client.switchWindow(handles[1]);
|
||||
});
|
||||
|
||||
const login = client.page.login();
|
||||
|
||||
login
|
||||
.waitForElementVisible('@registerButton')
|
||||
.click('@registerButton')
|
||||
.setValue('@emailInput', user.email)
|
||||
.setValue('@usernameInput', user.username)
|
||||
.setValue('@passwordInput', user.password)
|
||||
.setValue('@confirmPasswordInput', user.password)
|
||||
.waitForElementVisible('@signUpButton')
|
||||
.click('@signUpButton')
|
||||
.waitForElementVisible('@signIn')
|
||||
.waitForElementVisible('@loginButton')
|
||||
.click('@loginButton');
|
||||
|
||||
// Give a tiny bit of time to let popup close.
|
||||
client.pause(50);
|
||||
|
||||
if (client.capabilities.browserName === 'MicrosoftEdge') {
|
||||
|
||||
// More time for edge.
|
||||
// https://www.browserstack.com/automate/builds/1ceccf4efb4683b7feb890f45a32b5922b40ed3f/sessions/7393dbfda8387e43b6d5851f359b0c07db414973
|
||||
client.pause(1000);
|
||||
}
|
||||
|
||||
// Focusing on the Embed Window
|
||||
windowHandler.windowHandles((handles) => {
|
||||
client.switchWindow(handles[0]);
|
||||
});
|
||||
comments
|
||||
.openLoginPopup((popup) => {
|
||||
popup.register(user);
|
||||
});
|
||||
},
|
||||
'user posts a comment': (client) => {
|
||||
const embedStream = client.page.embedStream();
|
||||
const comments = client.page.embedStream().section.comments;
|
||||
const {testData: {comment}} = client.globals;
|
||||
|
||||
const embed = embedStream
|
||||
.navigate()
|
||||
.getEmbedSection();
|
||||
|
||||
embed
|
||||
comments
|
||||
.waitForElementVisible('@commentBoxTextarea')
|
||||
.setValue('@commentBoxTextarea', comment.body)
|
||||
.waitForElementVisible('@commentBoxPostButton')
|
||||
.click('@commentBoxPostButton')
|
||||
.waitForElementVisible('@firstCommentContent')
|
||||
.getText('@firstCommentContent', (result) => {
|
||||
embed.assert.equal(result.value, comment.body);
|
||||
comments.assert.equal(result.value, comment.body);
|
||||
});
|
||||
},
|
||||
|
||||
'signed in user sees comment history': (client) => {
|
||||
const embedStream = client.page.embedStream();
|
||||
const profile = client.page.embedStream().goToProfileSection();
|
||||
const {testData: {comment}} = client.globals;
|
||||
|
||||
const embed = embedStream
|
||||
.navigate()
|
||||
.getEmbedSection();
|
||||
|
||||
const profile = embed
|
||||
.getProfileSection();
|
||||
|
||||
profile
|
||||
.waitForElementVisible('@myCommentHistory')
|
||||
.waitForElementVisible('@myCommentHistoryComment')
|
||||
@@ -103,14 +68,7 @@ module.exports = {
|
||||
});
|
||||
},
|
||||
'user sees replies and reactions to comments': (client) => {
|
||||
const embedStream = client.page.embedStream();
|
||||
|
||||
const embed = embedStream
|
||||
.navigate()
|
||||
.getEmbedSection();
|
||||
|
||||
const profile = embed
|
||||
.getProfileSection();
|
||||
const profile = client.page.embedStream().section.profile;
|
||||
|
||||
profile
|
||||
.waitForElementVisible('@myCommentHistory')
|
||||
@@ -122,17 +80,12 @@ module.exports = {
|
||||
},
|
||||
'user goes to the stream and replies and reacts to comment': (client) => {
|
||||
const embedStream = client.page.embedStream();
|
||||
|
||||
const embed = embedStream
|
||||
.navigate()
|
||||
.getEmbedSection();
|
||||
|
||||
embed
|
||||
const comments = embedStream.goToCommentsSection();
|
||||
comments
|
||||
.waitForElementVisible('@respectButton')
|
||||
.click('@respectButton');
|
||||
|
||||
const profile = embed
|
||||
.getProfileSection();
|
||||
const profile = embedStream.goToProfileSection();
|
||||
|
||||
profile
|
||||
.waitForElementVisible('@myCommentHistory')
|
||||
@@ -144,31 +97,16 @@ module.exports = {
|
||||
},
|
||||
'user logs out': (client) => {
|
||||
const embedStream = client.page.embedStream();
|
||||
const comments = embedStream.goToCommentsSection();
|
||||
|
||||
const embed = embedStream
|
||||
.navigate()
|
||||
.getEmbedSection();
|
||||
|
||||
embed
|
||||
.waitForElementVisible('@commentsTabButton')
|
||||
.click('@commentsTabButton')
|
||||
.waitForElementVisible('@logoutButton')
|
||||
.click('@logoutButton');
|
||||
comments
|
||||
.logout();
|
||||
},
|
||||
'not logged in user clicks my profile tab': (client) => {
|
||||
const embedStream = client.page.embedStream();
|
||||
|
||||
const embed = embedStream
|
||||
.navigate()
|
||||
.getEmbedSection();
|
||||
|
||||
const profile = embed
|
||||
.getProfileSection();
|
||||
const profile = embedStream.goToProfileSection();
|
||||
|
||||
profile
|
||||
.assert.visible('@notLoggedIn');
|
||||
},
|
||||
after: (client) => {
|
||||
client.end();
|
||||
}
|
||||
};
|
||||
|
||||
@@ -1,36 +1,39 @@
|
||||
module.exports = {
|
||||
|
||||
before: (client) => {
|
||||
client.resizeWindow(1600, 1200);
|
||||
},
|
||||
|
||||
afterEach: (client, done) => {
|
||||
if (client.currentTest.results.failed) {
|
||||
throw new Error('Test Case failed, skipping all the rest');
|
||||
}
|
||||
done();
|
||||
},
|
||||
|
||||
after: (client) => {
|
||||
client.end();
|
||||
},
|
||||
|
||||
'admin logs in': (client) => {
|
||||
const adminPage = client.page.admin();
|
||||
const {testData: {admin}} = client.globals;
|
||||
|
||||
adminPage
|
||||
.navigate()
|
||||
.waitForElementVisible('@loginLayout')
|
||||
.waitForElementVisible('@signInForm')
|
||||
.setValue('@emailInput', admin.email)
|
||||
.setValue('@passwordInput', admin.password)
|
||||
.waitForElementVisible('@signInButton')
|
||||
.click('@signInButton');
|
||||
|
||||
client.pause(3000);
|
||||
|
||||
adminPage
|
||||
.waitForElementVisible('@moderationContainer');
|
||||
adminPage.navigateAndLogin(admin);
|
||||
},
|
||||
'admin flags user\'s username as offensive': (client) => {
|
||||
const embedStream = client.page.embedStream();
|
||||
const flagSection = client.page.embedStream().section.embed.section.flag;
|
||||
|
||||
const embed = embedStream
|
||||
const comments = embedStream
|
||||
.navigate()
|
||||
.getEmbedSection();
|
||||
.ready();
|
||||
|
||||
embed
|
||||
comments
|
||||
.waitForElementVisible('@firstComment')
|
||||
.waitForElementVisible('@flagButton')
|
||||
.click('@flagButton');
|
||||
|
||||
flagSection
|
||||
comments.section.flag
|
||||
.waitForElementVisible('@flagUsernameRadio')
|
||||
.click('@flagUsernameRadio')
|
||||
.waitForElementVisible('@continueButton')
|
||||
@@ -42,26 +45,27 @@ module.exports = {
|
||||
.click('@continueButton');
|
||||
},
|
||||
'admin goes to Reported Usernames': (client) => {
|
||||
const community = client.page.adminCommunity();
|
||||
const adminPage = client.page.admin();
|
||||
|
||||
const community = adminPage
|
||||
.navigate()
|
||||
.ready()
|
||||
.goToCommunity();
|
||||
|
||||
community
|
||||
.navigate();
|
||||
|
||||
community
|
||||
.waitForElementVisible('@container')
|
||||
.waitForElementVisible('@flaggedAccountsContainer')
|
||||
.waitForElementVisible('@flaggedUser');
|
||||
},
|
||||
'admin rejects the user flag': (client) => {
|
||||
const community = client.page.adminCommunity();
|
||||
|
||||
const community = client.page.admin().section.community;
|
||||
|
||||
community
|
||||
.waitForElementVisible('@flaggedUserRejectButton')
|
||||
.click('@flaggedUserRejectButton');
|
||||
},
|
||||
'admin suspends the user': (client) => {
|
||||
const community = client.page.adminCommunity();
|
||||
|
||||
const community = client.page.admin().section.community;
|
||||
|
||||
community
|
||||
.waitForElementVisible('@usernameDialog')
|
||||
.waitForElementVisible('@usernameDialogButtons')
|
||||
@@ -72,86 +76,42 @@ module.exports = {
|
||||
.waitForElementNotPresent('@flaggedUser');
|
||||
},
|
||||
'admin logs out': (client) => {
|
||||
const admin = client.page.admin();
|
||||
|
||||
admin
|
||||
.waitForElementVisible('@settingsButton')
|
||||
.click('@settingsButton')
|
||||
.waitForElementVisible('@signOutButton')
|
||||
.click('@signOutButton');
|
||||
client.page.admin().logout();
|
||||
},
|
||||
'user logs in': (client) => {
|
||||
const {testData: {user}} = client.globals;
|
||||
const embedStream = client.page.embedStream();
|
||||
|
||||
const embed = embedStream
|
||||
embedStream
|
||||
.navigate()
|
||||
.getEmbedSection();
|
||||
|
||||
embed
|
||||
.waitForElementVisible('@signInButton')
|
||||
.click('@signInButton');
|
||||
|
||||
client.pause(3000);
|
||||
|
||||
// Focusing on the Login PopUp
|
||||
client.windowHandles((result) => {
|
||||
const handle = result.value[1];
|
||||
client.switchWindow(handle);
|
||||
});
|
||||
|
||||
const login = client.page.login();
|
||||
|
||||
login
|
||||
.setValue('@emailInput', user.email)
|
||||
.setValue('@passwordInput', user.password)
|
||||
.waitForElementVisible('@signIn')
|
||||
.waitForElementVisible('@loginButton')
|
||||
.click('@loginButton');
|
||||
|
||||
// Focusing on the Embed Window
|
||||
client.windowHandles((result) => {
|
||||
const handle = result.value[0];
|
||||
client.switchWindow(handle);
|
||||
});
|
||||
.ready()
|
||||
.openLoginPopup((popup) => popup.login(user));
|
||||
},
|
||||
'user account is suspended, should see restricted message box': (client) => {
|
||||
const embedStream = client.page.embedStream();
|
||||
const comments = embedStream.section.comments;
|
||||
|
||||
const embed = embedStream
|
||||
.navigate()
|
||||
.getEmbedSection();
|
||||
|
||||
embed
|
||||
comments
|
||||
.waitForElementVisible('@restrictedMessageBox');
|
||||
},
|
||||
|
||||
'user picks another username': (client) => {
|
||||
const {testData: {user}} = client.globals;
|
||||
const embedStream = client.page.embedStream();
|
||||
|
||||
const embed = embedStream
|
||||
.navigate()
|
||||
.getEmbedSection();
|
||||
const comments = embedStream.section.comments;
|
||||
const {testData: {user}} = client.globals;
|
||||
|
||||
embed
|
||||
comments
|
||||
.waitForElementVisible('@suspendedAccountInput')
|
||||
.setValue('@suspendedAccountInput', `${user.username}-alternative`)
|
||||
.setValue('@suspendedAccountInput', `${user.username}_alternative`)
|
||||
.waitForElementVisible('@suspendedAccountSubmitButton')
|
||||
.click('@suspendedAccountSubmitButton');
|
||||
.click('@suspendedAccountSubmitButton')
|
||||
.waitForElementNotPresent('@suspendedAccountInput');
|
||||
},
|
||||
'user should not be able to comment': (client) => {
|
||||
const embedStream = client.page.embedStream();
|
||||
|
||||
const embed = embedStream
|
||||
.navigate()
|
||||
.getEmbedSection();
|
||||
const comments = embedStream.section.comments;
|
||||
|
||||
embed
|
||||
comments
|
||||
.waitForElementNotPresent('@commentBoxTextarea')
|
||||
.waitForElementNotPresent('@commentBoxPostButton');
|
||||
},
|
||||
after: (client) => {
|
||||
client.end();
|
||||
}
|
||||
};
|
||||
|
||||
@@ -0,0 +1,125 @@
|
||||
module.exports = {
|
||||
|
||||
before: (client) => {
|
||||
client.resizeWindow(1600, 1200);
|
||||
},
|
||||
|
||||
afterEach: (client, done) => {
|
||||
if (client.currentTest.results.failed) {
|
||||
throw new Error('Test Case failed, skipping all the rest');
|
||||
}
|
||||
done();
|
||||
},
|
||||
|
||||
after: (client) => {
|
||||
client.end();
|
||||
},
|
||||
|
||||
'admin logs in': (client) => {
|
||||
const adminPage = client.page.admin();
|
||||
const {testData: {admin}} = client.globals;
|
||||
|
||||
adminPage.navigateAndLogin(admin);
|
||||
},
|
||||
'navigate to the embed stream': (client) => {
|
||||
const embedStream = client.page.embedStream();
|
||||
|
||||
embedStream
|
||||
.navigate()
|
||||
.ready();
|
||||
},
|
||||
'admin bans user': (client) => {
|
||||
const embedStream = client.page.embedStream();
|
||||
const comments = embedStream.section.comments;
|
||||
|
||||
comments.section.mod
|
||||
.waitForElementVisible('@arrow')
|
||||
.click('@arrow')
|
||||
.waitForElementVisible('@menu')
|
||||
.waitForElementVisible('@banButton')
|
||||
.click('@banButton');
|
||||
|
||||
embedStream
|
||||
.waitForElementVisible('@banDialog')
|
||||
.waitForElementVisible('@banDialogConfirmButton')
|
||||
.click('@banDialogConfirmButton')
|
||||
.waitForElementNotVisible('@banDialog');
|
||||
},
|
||||
'admin logs out': (client) => {
|
||||
const comments = client.page.embedStream().section.comments;
|
||||
|
||||
comments
|
||||
.logout();
|
||||
},
|
||||
'user logs in': (client) => {
|
||||
const {testData: {user}} = client.globals;
|
||||
const comments = client.page.embedStream().section.comments;
|
||||
|
||||
comments
|
||||
.openLoginPopup((popup) => popup.login(user));
|
||||
},
|
||||
'user account is banned, should see restricted message box': (client) => {
|
||||
const embedStream = client.page.embedStream();
|
||||
const comments = embedStream.section.comments;
|
||||
|
||||
comments
|
||||
.waitForElementVisible('@restrictedMessageBox');
|
||||
},
|
||||
'user logs out': (client) => {
|
||||
const embedStream = client.page.embedStream();
|
||||
const comments = embedStream.section.comments;
|
||||
|
||||
comments
|
||||
.logout();
|
||||
},
|
||||
'admin logs in (2)': (client) => {
|
||||
const adminPage = client.page.admin();
|
||||
const {testData: {admin}} = client.globals;
|
||||
|
||||
adminPage.navigateAndLogin(admin);
|
||||
},
|
||||
'admin goes to community': (client) => {
|
||||
const adminPage = client.page.admin();
|
||||
|
||||
adminPage
|
||||
.goToCommunity()
|
||||
.goToPeople();
|
||||
},
|
||||
'admin removes ban from user': (client) => {
|
||||
const people = client.page.admin()
|
||||
.section.community
|
||||
.section.people;
|
||||
|
||||
people
|
||||
.waitForElementVisible('@firstRow')
|
||||
.waitForElementVisible('@dropdownStatus')
|
||||
.click('@dropdownStatus')
|
||||
.waitForElementVisible('@dropdownStatusActive')
|
||||
.click('@optionActive');
|
||||
},
|
||||
'admin logs out 2': (client) => {
|
||||
client.page.admin().logout();
|
||||
},
|
||||
'navigate to the embed stream 2': (client) => {
|
||||
const embedStream = client.page.embedStream();
|
||||
|
||||
embedStream
|
||||
.navigate()
|
||||
.ready();
|
||||
},
|
||||
'user logs in 2': (client) => {
|
||||
const {testData: {user}} = client.globals;
|
||||
const comments = client.page.embedStream().section.comments;
|
||||
|
||||
comments
|
||||
.openLoginPopup((popup) => popup.login(user));
|
||||
},
|
||||
'user should be able to comment': (client) => {
|
||||
const embedStream = client.page.embedStream();
|
||||
const comments = embedStream.section.comments;
|
||||
|
||||
comments
|
||||
.waitForElementVisible('@commentBoxTextarea')
|
||||
.waitForElementVisible('@commentBoxPostButton');
|
||||
},
|
||||
};
|
||||
@@ -0,0 +1,138 @@
|
||||
module.exports = {
|
||||
|
||||
before: (client) => {
|
||||
client.resizeWindow(1600, 1200);
|
||||
},
|
||||
|
||||
afterEach: (client, done) => {
|
||||
if (client.currentTest.results.failed) {
|
||||
throw new Error('Test Case failed, skipping all the rest');
|
||||
}
|
||||
done();
|
||||
},
|
||||
|
||||
after: (client) => {
|
||||
client.end();
|
||||
},
|
||||
'user logs in': (client) => {
|
||||
const {testData: {user}} = client.globals;
|
||||
const embedStream = client.page.embedStream();
|
||||
const comments = client.page.embedStream().section.comments;
|
||||
|
||||
embedStream
|
||||
.navigate()
|
||||
.ready();
|
||||
|
||||
comments
|
||||
.openLoginPopup((popup) => popup.login(user));
|
||||
},
|
||||
'user posts comment': (client) => {
|
||||
const comments = client.page.embedStream().section.comments;
|
||||
const {testData: {comment}} = client.globals;
|
||||
|
||||
comments
|
||||
.waitForElementVisible('@commentBoxTextarea')
|
||||
.setValue('@commentBoxTextarea', comment.body)
|
||||
.waitForElementVisible('@commentBoxPostButton')
|
||||
.click('@commentBoxPostButton')
|
||||
.waitForElementVisible('@firstCommentContent')
|
||||
.getText('@firstCommentContent', (result) => {
|
||||
comments.assert.equal(result.value, comment.body);
|
||||
});
|
||||
},
|
||||
'user logs out': (client) => {
|
||||
const embedStream = client.page.embedStream();
|
||||
const comments = embedStream.section.comments;
|
||||
|
||||
comments
|
||||
.logout();
|
||||
},
|
||||
'admin logs in': (client) => {
|
||||
const adminPage = client.page.admin();
|
||||
const {testData: {admin}} = client.globals;
|
||||
|
||||
adminPage.navigateAndLogin(admin);
|
||||
},
|
||||
'navigate to the embed stream': (client) => {
|
||||
const embedStream = client.page.embedStream();
|
||||
|
||||
embedStream
|
||||
.navigate()
|
||||
.ready();
|
||||
},
|
||||
'admin reports comment': (client) => {
|
||||
const embedStream = client.page.embedStream();
|
||||
const comments = embedStream.section.comments;
|
||||
|
||||
comments
|
||||
.waitForElementVisible('@firstComment')
|
||||
.waitForElementVisible('@flagButton')
|
||||
.click('@flagButton');
|
||||
|
||||
comments.section.flag
|
||||
.waitForElementVisible('@flagCommentRadio')
|
||||
.click('@flagCommentRadio')
|
||||
.waitForElementVisible('@continueButton')
|
||||
.click('@continueButton')
|
||||
.waitForElementVisible('@spamCommentRadio')
|
||||
.click('@spamCommentRadio')
|
||||
.click('@continueButton')
|
||||
.waitForElementVisible('@popUpText')
|
||||
.click('@continueButton');
|
||||
},
|
||||
'admin suspends user': (client) => {
|
||||
const adminPage = client.page.admin();
|
||||
const moderate = adminPage.section.moderate;
|
||||
|
||||
adminPage
|
||||
.navigate()
|
||||
.ready()
|
||||
.goToModerate();
|
||||
|
||||
moderate
|
||||
.waitForElementVisible('@comment')
|
||||
.waitForElementVisible('@commentActionMenu')
|
||||
.waitForElementVisible('@actionMenuButton')
|
||||
.click('@actionMenuButton')
|
||||
.waitForElementVisible('@actionItemSuspendUser')
|
||||
.click('@actionItemSuspendUser');
|
||||
|
||||
adminPage
|
||||
.waitForElementVisible('@suspendUserDialog')
|
||||
.waitForElementVisible('@suspendUserConfirmButton')
|
||||
.click('@suspendUserConfirmButton')
|
||||
.waitForElementVisible('@supendUserSendButton')
|
||||
.click('@supendUserSendButton');
|
||||
|
||||
adminPage
|
||||
.waitForElementVisible('@toast')
|
||||
.waitForElementVisible('@toastClose')
|
||||
.click('@toastClose');
|
||||
|
||||
},
|
||||
'admin logs out': (client) => {
|
||||
const adminPage = client.page.admin();
|
||||
|
||||
adminPage
|
||||
.logout();
|
||||
},
|
||||
'user logs in (2)': (client) => {
|
||||
const {testData: {user}} = client.globals;
|
||||
const embedStream = client.page.embedStream();
|
||||
const comments = client.page.embedStream().section.comments;
|
||||
|
||||
embedStream
|
||||
.navigate()
|
||||
.ready();
|
||||
|
||||
comments
|
||||
.openLoginPopup((popup) => popup.login(user));
|
||||
},
|
||||
'user account is suspended, should see restricted message box': (client) => {
|
||||
const embedStream = client.page.embedStream();
|
||||
const comments = embedStream.section.comments;
|
||||
|
||||
comments
|
||||
.waitForElementVisible('@restrictedMessageBox');
|
||||
},
|
||||
};
|
||||
Reference in New Issue
Block a user