From a0cf467f1b7a9ffc277aaf1526b6e66d2a21a765 Mon Sep 17 00:00:00 2001 From: Riley Davis Date: Thu, 2 Feb 2017 14:59:45 -0700 Subject: [PATCH 01/12] remove confirm and replace with verify --- client/coral-embed-stream/src/Embed.js | 2 +- client/coral-framework/actions/auth.js | 20 +- client/coral-framework/constants/auth.js | 7 +- client/coral-framework/reducers/auth.js | 28 +-- client/coral-sign-in/components/SignDialog.js | 7 +- .../coral-sign-in/components/SignInContent.js | 96 +++++----- .../coral-sign-in/components/SignUpContent.js | 172 ++++++++++-------- .../containers/SignInContainer.js | 20 +- client/coral-sign-in/translations.js | 10 +- routes/api/account/index.js | 2 +- routes/api/users/index.js | 2 +- views/admin/confirm-email.ejs | 14 +- 12 files changed, 200 insertions(+), 180 deletions(-) diff --git a/client/coral-embed-stream/src/Embed.js b/client/coral-embed-stream/src/Embed.js index 550fc5fc1..fa0d0f3ab 100644 --- a/client/coral-embed-stream/src/Embed.js +++ b/client/coral-embed-stream/src/Embed.js @@ -130,7 +130,7 @@ class Embed extends Component { :

{asset.settings.closedMessage}

} - {!loggedIn && } + {!loggedIn && } ({type: actions.CLEAN_STATE}); const signInRequest = () => ({type: actions.FETCH_SIGNIN_REQUEST}); const signInSuccess = (user, isAdmin) => ({type: actions.FETCH_SIGNIN_SUCCESS, user, isAdmin}); const signInFailure = error => ({type: actions.FETCH_SIGNIN_FAILURE, error}); -const emailConfirmError = () => ({type: actions.EMAIL_CONFIRM_ERROR}); export const fetchSignIn = (formData) => (dispatch) => { dispatch(signInRequest()); @@ -36,7 +35,6 @@ export const fetchSignIn = (formData) => (dispatch) => { // the user might not have a valid email. prompt the user user re-request the confirmation email dispatch(signInFailure(lang.t('error.emailNotVerified', error.metadata))); - dispatch(emailConfirmError()); } else { // invalid credentials @@ -150,20 +148,20 @@ export const checkLogin = () => dispatch => { }); }; -const confirmEmailRequest = () => ({type: actions.CONFIRM_EMAIL_REQUEST}); -const confirmEmailSuccess = () => ({type: actions.CONFIRM_EMAIL_SUCCESS}); -const confirmEmailFailure = () => ({type: actions.CONFIRM_EMAIL_FAILURE}); +const verifyEmailRequest = () => ({type: actions.VERIFY_EMAIL_REQUEST}); +const verifyEmailSuccess = () => ({type: actions.VERIFY_EMAIL_SUCCESS}); +const verifyEmailFailure = () => ({type: actions.VERIFY_EMAIL_FAILURE}); export const requestConfirmEmail = email => dispatch => { - dispatch(confirmEmailRequest()); - return coralApi('/users/resend-confirm', {method: 'POST', body: {email}}) + dispatch(verifyEmailRequest()); + return coralApi('/users/resend-verify', {method: 'POST', body: {email}}) .then(() => { - dispatch(confirmEmailSuccess()); + dispatch(verifyEmailSuccess()); }) .catch(err => { - console.log('failed to send email confirmation', err); + console.log('failed to send email verification', err); - // email might have already been confirmed - dispatch(confirmEmailFailure()); + // email might have already been verifyed + dispatch(verifyEmailFailure()); }); }; diff --git a/client/coral-framework/constants/auth.js b/client/coral-framework/constants/auth.js index 1dae348df..096fadd66 100644 --- a/client/coral-framework/constants/auth.js +++ b/client/coral-framework/constants/auth.js @@ -33,7 +33,6 @@ export const CHECK_LOGIN_FAILURE = 'CHECK_LOGIN_FAILURE'; export const CHECK_CSRF_TOKEN = 'CHECK_CSRF_TOKEN'; -export const EMAIL_CONFIRM_ERROR = 'EMAIL_CONFIRM_ERROR'; -export const CONFIRM_EMAIL_REQUEST = 'CONFIRM_EMAIL_REQUEST'; -export const CONFIRM_EMAIL_SUCCESS = 'CONFIRM_EMAIL_SUCCESS'; -export const CONFIRM_EMAIL_FAILURE = 'CONFIRM_EMAIL_FAILURE'; +export const VERIFY_EMAIL_REQUEST = 'VERIFY_EMAIL_REQUEST'; +export const VERIFY_EMAIL_SUCCESS = 'VERIFY_EMAIL_SUCCESS'; +export const VERIFY_EMAIL_FAILURE = 'VERIFY_EMAIL_FAILURE'; diff --git a/client/coral-framework/reducers/auth.js b/client/coral-framework/reducers/auth.js index 6cb4e97cd..836549b18 100644 --- a/client/coral-framework/reducers/auth.js +++ b/client/coral-framework/reducers/auth.js @@ -11,9 +11,9 @@ const initialState = Map({ error: '', passwordRequestSuccess: null, passwordRequestFailure: null, - emailConfirmationFailure: false, - emailConfirmationLoading: false, - emailConfirmationSuccess: false, + emailVerificationFailure: false, + emailVerificationLoading: false, + emailVerificationSuccess: false, successSignUp: false }); @@ -36,9 +36,9 @@ export default function auth (state = initialState, action) { error: '', passwordRequestFailure: null, passwordRequestSuccess: null, - emailConfirmationFailure: false, - emailConfirmationSuccess: false, - emailConfirmationLoading: false, + emailVerificationFailure: false, + emailVerificationSuccess: false, + emailVerificationLoading: false, successSignUp: false })); case actions.CHANGE_VIEW : @@ -107,16 +107,16 @@ export default function auth (state = initialState, action) { return state .set('passwordRequestFailure', 'There was an error sending your password reset email. Please try again soon!') .set('passwordRequestSuccess', null); - case actions.EMAIL_CONFIRM_ERROR: + case actions.VERIFY_EMAIL_FAILURE: return state - .set('emailConfirmationFailure', true) - .set('emailConfirmationLoading', false); - case actions.CONFIRM_EMAIL_REQUEST: - return state.set('emailConfirmationLoading', true); - case actions.CONFIRM_EMAIL_SUCCESS: + .set('emailVerificationFailure', true) + .set('emailVerificationLoading', false); + case actions.VERIFY_EMAIL_REQUEST: + return state.set('emailVerificationLoading', true); + case actions.VERIFY_EMAIL_SUCCESS: return state - .set('emailConfirmationSuccess', true) - .set('emailConfirmationLoading', false); + .set('emailVerificationSuccess', true) + .set('emailVerificationLoading', false); default : return state; } diff --git a/client/coral-sign-in/components/SignDialog.js b/client/coral-sign-in/components/SignDialog.js index 0645f110f..6243472b4 100644 --- a/client/coral-sign-in/components/SignDialog.js +++ b/client/coral-sign-in/components/SignDialog.js @@ -17,12 +17,7 @@ const SignDialog = ({open, view, handleClose, offset, ...props}) => ( }}> × {view === 'SIGNIN' && } - { - view === 'SIGNUP' && - } + {view === 'SIGNUP' && } {view === 'FORGOT' && } ); diff --git a/client/coral-sign-in/components/SignInContent.js b/client/coral-sign-in/components/SignInContent.js index e27185b52..8112c345f 100644 --- a/client/coral-sign-in/components/SignInContent.js +++ b/client/coral-sign-in/components/SignInContent.js @@ -10,9 +10,9 @@ const SignInContent = ({ handleChange, handleChangeEmail, emailToBeResent, - handleResendConfirmation, - emailConfirmationLoading, - emailConfirmationSuccess, + handleResendVerification, + emailVerificationLoading, + emailVerificationSuccess, formData, ...props }) => { @@ -21,24 +21,14 @@ const SignInContent = ({

- {props.auth.emailConfirmationFailure ? lang.t('signIn.emailConfirmCTA') : lang.t('signIn.signIn')} -

-
-
- -
-
-

- {lang.t('signIn.or')} + {props.auth.emailVerificationFailure ? lang.t('signIn.emailVerifyCTA') : lang.t('signIn.signIn')}

{ props.auth.error && {props.auth.error} } { - props.auth.emailConfirmationFailure - ?
-

{lang.t('signIn.requestNewConfirmEmail')}

+ props.auth.emailVerificationFailure + ? +

{lang.t('signIn.requestNewVerifyEmail')}

- {emailConfirmationLoading && } - {emailConfirmationSuccess && } + {emailVerificationLoading && } + {emailVerificationSuccess && } - :
- - -
- { - !props.auth.isLoading ? - - : - - } + :
+
+
- +
+

+ {lang.t('signIn.or')} +

+
+
+ + +
+ { + !props.auth.isLoading ? + + : + + } +
+ +
}
props.changeView('FORGOT')}>{lang.t('signIn.forgotYourPass')} @@ -90,9 +92,9 @@ const SignInContent = ({ }; SignInContent.propTypes = { - emailConfirmationLoading: PropTypes.bool.isRequired, - emailConfirmationSuccess: PropTypes.bool.isRequired, - handleResendConfirmation: PropTypes.func.isRequired, + emailVerificationLoading: PropTypes.bool.isRequired, + emailVerificationSuccess: PropTypes.bool.isRequired, + handleResendVerification: PropTypes.func.isRequired, handleChangeEmail: PropTypes.func.isRequired, emailToBeResent: PropTypes.string.isRequired }; diff --git a/client/coral-sign-in/components/SignUpContent.js b/client/coral-sign-in/components/SignUpContent.js index 246d9d884..5efadc8fc 100644 --- a/client/coral-sign-in/components/SignUpContent.js +++ b/client/coral-sign-in/components/SignUpContent.js @@ -1,4 +1,4 @@ -import React from 'react'; +import React, {PropTypes} from 'react'; import Alert from './Alert'; import {Button, FormField, Spinner, Success} from 'coral-ui'; import styles from './styles.css'; @@ -6,83 +6,101 @@ import I18n from 'coral-framework/modules/i18n/i18n'; import translations from '../translations'; const lang = new I18n(translations); -const SignUpContent = ({handleChange, formData, ...props}) => ( -
-
-

- {lang.t('signIn.signUp')} -

-
-
- -
-
-

- {lang.t('signIn.or')} -

-
- { props.auth.error && {props.auth.error} } -
- - - - { props.errors.password && Password must be at least 8 characters. } - -
- { !props.auth.isLoading && !props.auth.successSignUp && ( - - )} - { props.auth.isLoading && } - { !props.auth.isLoading && props.auth.successSignUp && } +const SignUpContent = ({handleChange, formData, emailVerificationEnabled, ...props}) => { + const beforeSignup = !props.auth.isLoading && !props.auth.successSignUp; + const successfulSignup = !props.auth.isLoading && props.auth.successSignUp; + + return ( +
+
+

+ {lang.t('signIn.signUp')} +

+
+
+ +
+
+

+ {lang.t('signIn.or')} +

+
+ { props.auth.error && {props.auth.error} } + { beforeSignup && + + + + + { props.errors.password && Password must be at least 8 characters. } + +
+ + { props.auth.isLoading && } +
+ + } + { + successfulSignup && +
+ + { + emailVerificationEnabled && +

{lang.t('signIn.verifyEmail')}

+ } +
+ } +
+ + {lang.t('signIn.alreadyHaveAnAccount')} + props.changeView('SIGNIN')}> + {lang.t('signIn.signIn')} + +
- -
- - {lang.t('signIn.alreadyHaveAnAccount')} - props.changeView('SIGNIN')}> - {lang.t('signIn.signIn')} - -
-
-); + ); +}; + +SignUpContent.propTypes = { + emailVerificationEnabled: PropTypes.bool.isRequired +}; export default SignUpContent; diff --git a/client/coral-sign-in/containers/SignInContainer.js b/client/coral-sign-in/containers/SignInContainer.js index 2435cdcfd..59e17c397 100644 --- a/client/coral-sign-in/containers/SignInContainer.js +++ b/client/coral-sign-in/containers/SignInContainer.js @@ -1,4 +1,4 @@ -import React, {Component} from 'react'; +import React, {Component, PropTypes} from 'react'; import {connect} from 'react-redux'; import SignDialog from '../components/SignDialog'; import Button from 'coral-ui/components/Button'; @@ -41,12 +41,16 @@ class SignInContainer extends Component { this.state = this.initialState; this.handleChange = this.handleChange.bind(this); this.handleChangeEmail = this.handleChangeEmail.bind(this); - this.handleResendConfirmation = this.handleResendConfirmation.bind(this); + this.handleResendVerification = this.handleResendVerification.bind(this); this.handleSignUp = this.handleSignUp.bind(this); this.handleSignIn = this.handleSignIn.bind(this); this.addError = this.addError.bind(this); } + static propTypes = { + requireEmailConfirmation: PropTypes.bool.isRequired + } + componentWillMount () { this.props.checkLogin(); } @@ -79,7 +83,7 @@ class SignInContainer extends Component { this.setState({emailToBeResent: value}); } - handleResendConfirmation(e) { + handleResendVerification(e) { e.preventDefault(); this.props.requestConfirmEmail(this.state.emailToBeResent) .then(() => { @@ -145,8 +149,9 @@ class SignInContainer extends Component { } render() { - const {auth, showSignInDialog, noButton, offset} = this.props; - const {emailConfirmationLoading, emailConfirmationSuccess} = auth; + const {auth, showSignInDialog, noButton, offset, requireEmailConfirmation} = this.props; + const {emailVerificationLoading, emailVerificationSuccess} = auth; + return (
{!noButton && -
-
-

- {lang.t('signIn.or')} -

-
+ { props.auth.error && {props.auth.error} } { beforeSignup && -
- - - - { props.errors.password && Password must be at least 8 characters. } - -
- - { props.auth.isLoading && }
- +
+

+ {lang.t('signIn.or')} +

+
+
+ + + + { props.errors.password && Password must be at least 8 characters. } + +
+ + { props.auth.isLoading && } +
+ +
} { successfulSignup && From 3441ec36c61ce5ee522fbdfd1df62f37ff8c4569 Mon Sep 17 00:00:00 2001 From: Riley Davis Date: Fri, 3 Feb 2017 12:50:01 -0700 Subject: [PATCH 07/12] re-direct to sign in when email verification is off. add proptypes --- client/coral-framework/actions/auth.js | 4 - .../coral-sign-in/components/SignUpContent.js | 230 +++++++++++------- 2 files changed, 137 insertions(+), 97 deletions(-) diff --git a/client/coral-framework/actions/auth.js b/client/coral-framework/actions/auth.js index d40997720..279fc604f 100644 --- a/client/coral-framework/actions/auth.js +++ b/client/coral-framework/actions/auth.js @@ -85,10 +85,6 @@ export const fetchSignUp = (formData, redirectUri) => (dispatch) => { coralApi('/users', {method: 'POST', body: formData, headers: {'X-Pym-Url': redirectUri}}) .then(({user}) => { dispatch(signUpSuccess(user)); - - // setTimeout(() =>{ - // dispatch(changeView('SIGNIN')); - // }, 3000); }) .catch(error => { dispatch(signUpFailure(lang.t(`error.${error.message}`))); diff --git a/client/coral-sign-in/components/SignUpContent.js b/client/coral-sign-in/components/SignUpContent.js index 04bd2fd3e..3607b246f 100644 --- a/client/coral-sign-in/components/SignUpContent.js +++ b/client/coral-sign-in/components/SignUpContent.js @@ -6,104 +6,148 @@ import I18n from 'coral-framework/modules/i18n/i18n'; import translations from '../translations'; const lang = new I18n(translations); -const SignUpContent = ({handleChange, formData, emailVerificationEnabled, ...props}) => { - const beforeSignup = !props.auth.isLoading && !props.auth.successSignUp; - const successfulSignup = !props.auth.isLoading && props.auth.successSignUp; +class SignUpContent extends React.Component { - return ( -
-
-

- {lang.t('signIn.signUp')} -

-
+ constructor (props) { + super(props); + this.successfulSignup = false; + } - { props.auth.error && {props.auth.error} } - { beforeSignup && -
-
- -
-
-

- {lang.t('signIn.or')} -

-
-
- - - - { props.errors.password && Password must be at least 8 characters. } - -
- - { props.auth.isLoading && }
- +
+

+ {lang.t('signIn.or')} +

+
+
+ + + + { errors.password && Password must be at least 8 characters. } + +
+ + { auth.isLoading && } +
+ +
+ } + { + successfulSignup && +
+ + { + emailVerificationEnabled && +

{lang.t('signIn.verifyEmail')}

{lang.t('signIn.verifyEmail2')}

+ } +
+ } +
+ + {lang.t('signIn.alreadyHaveAnAccount')} + changeView('SIGNIN')}> + {lang.t('signIn.signIn')} + +
- } - { - successfulSignup && -
- - { - emailVerificationEnabled && -

{lang.t('signIn.verifyEmail')}

{lang.t('signIn.verifyEmail2')}

- } -
- } -
- - {lang.t('signIn.alreadyHaveAnAccount')} - props.changeView('SIGNIN')}> - {lang.t('signIn.signIn')} - -
-
- ); -}; - -SignUpContent.propTypes = { - emailVerificationEnabled: PropTypes.bool.isRequired -}; + ); + } +} export default SignUpContent; From e91ff306e9a082e26f3a801449ad274f4234b188 Mon Sep 17 00:00:00 2001 From: Riley Davis Date: Fri, 3 Feb 2017 14:21:22 -0700 Subject: [PATCH 08/12] whoops, missed one --- client/coral-admin/src/translations.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/coral-admin/src/translations.json b/client/coral-admin/src/translations.json index a4256848e..6dffeae42 100644 --- a/client/coral-admin/src/translations.json +++ b/client/coral-admin/src/translations.json @@ -50,7 +50,7 @@ "configure": { "enable-pre-moderation": "Enable pre-moderation", "enable-pre-moderation-text": "Moderators must approve any comment before it is published.", - "require-email-verification": "Require Email Confirmation", + "require-email-verification": "Require Email Verification", "require-email-verification-text": "New Users must verify their email before commenting", "include-comment-stream": "Include Comment Stream Description for Readers.", "include-comment-stream-desc": "Write a message to be added to the top of your comment stream. Pose a topic, include community guidelines, etc.", From 3a145e99272da015216e1bbd503cd5889fbbc8ef Mon Sep 17 00:00:00 2001 From: Riley Davis Date: Mon, 6 Feb 2017 14:22:37 -0700 Subject: [PATCH 09/12] add a pause to see if anything changes --- test/e2e/tests/EmbedStreamTests.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/test/e2e/tests/EmbedStreamTests.js b/test/e2e/tests/EmbedStreamTests.js index 1b1fb40ab..5591d6b8d 100644 --- a/test/e2e/tests/EmbedStreamTests.js +++ b/test/e2e/tests/EmbedStreamTests.js @@ -4,8 +4,10 @@ const mocks = require('../mocks'); const mockComment = 'I read the comments'; const mockReply = 'This is a test reply'; const mockUser = { - email: `${new Date().getTime()}@test.com`, - name: 'testuser', + email: `${Date.now()}@test.com`, + name: `testuser${Math.random() + .toString() + .slice(-5)}`, pw: 'testtest' }; @@ -39,6 +41,7 @@ module.exports = { .setValue('#password', mockUser.pw) .setValue('#confirmPassword', mockUser.pw) .click('#coralSignUpButton') + .pause(5000) .waitForElementVisible('#coralLogInButton', 10000) .click('#coralLogInButton') .waitForElementVisible('.coral-plugin-commentbox-button', 4000) From 93ee5bfc4aeb7f2d37326a66454371cdf779f955 Mon Sep 17 00:00:00 2001 From: Riley Davis Date: Mon, 6 Feb 2017 14:42:40 -0700 Subject: [PATCH 10/12] just throwing stuff at the wall to see what sticks --- test/e2e/pages/embedStreamPage.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/e2e/pages/embedStreamPage.js b/test/e2e/pages/embedStreamPage.js index 372b94b66..22fd2e04f 100644 --- a/test/e2e/pages/embedStreamPage.js +++ b/test/e2e/pages/embedStreamPage.js @@ -35,8 +35,10 @@ const embedStreamCommands = { .waitForElementVisible('@signInDialogPassword') .setValue('@signInDialogEmail', user.email) .setValue('@signInDialogPassword', user.pass) + .pause(2500) .waitForElementVisible('@logInButton') .click('@logInButton') + .pause(2500) .waitForElementVisible('@logoutButton', 5000); }, logout() { From fe6d6f611db972497cd5b94c12e49a91377e6f84 Mon Sep 17 00:00:00 2001 From: Riley Davis Date: Mon, 6 Feb 2017 14:59:23 -0700 Subject: [PATCH 11/12] pause suddenly not a function? --- test/e2e/pages/embedStreamPage.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/test/e2e/pages/embedStreamPage.js b/test/e2e/pages/embedStreamPage.js index 22fd2e04f..372b94b66 100644 --- a/test/e2e/pages/embedStreamPage.js +++ b/test/e2e/pages/embedStreamPage.js @@ -35,10 +35,8 @@ const embedStreamCommands = { .waitForElementVisible('@signInDialogPassword') .setValue('@signInDialogEmail', user.email) .setValue('@signInDialogPassword', user.pass) - .pause(2500) .waitForElementVisible('@logInButton') .click('@logInButton') - .pause(2500) .waitForElementVisible('@logoutButton', 5000); }, logout() { From 8c8a8eb3b8ee953c0635c5d9813e27560205149e Mon Sep 17 00:00:00 2001 From: Riley Davis Date: Mon, 6 Feb 2017 16:23:00 -0700 Subject: [PATCH 12/12] define more propTypes. add a second button so tests work --- .../coral-sign-in/components/SignInContent.js | 29 +++++++++++++------ .../coral-sign-in/components/SignUpContent.js | 2 +- test/e2e/pages/embedStreamPage.js | 5 ++++ 3 files changed, 26 insertions(+), 10 deletions(-) diff --git a/client/coral-sign-in/components/SignInContent.js b/client/coral-sign-in/components/SignInContent.js index 8112c345f..c7a5dc80d 100644 --- a/client/coral-sign-in/components/SignInContent.js +++ b/client/coral-sign-in/components/SignInContent.js @@ -14,19 +14,22 @@ const SignInContent = ({ emailVerificationLoading, emailVerificationSuccess, formData, - ...props + changeView, + handleSignIn, + auth, + fetchSignInFacebook }) => { return (

- {props.auth.emailVerificationFailure ? lang.t('signIn.emailVerifyCTA') : lang.t('signIn.signIn')} + {auth.emailVerificationFailure ? lang.t('signIn.emailVerifyCTA') : lang.t('signIn.signIn')}

- { props.auth.error && {props.auth.error} } + { auth.error && {auth.error} } { - props.auth.emailVerificationFailure + auth.emailVerificationFailure ?

{lang.t('signIn.requestNewVerifyEmail')}

:
-
@@ -50,7 +53,7 @@ const SignInContent = ({ {lang.t('signIn.or')}
- +
{ - !props.auth.isLoading ? + !auth.isLoading ? @@ -79,10 +82,10 @@ const SignInContent = ({
}
- props.changeView('FORGOT')}>{lang.t('signIn.forgotYourPass')} + changeView('FORGOT')}>{lang.t('signIn.forgotYourPass')} {lang.t('signIn.needAnAccount')} - props.changeView('SIGNUP')} id='coralRegister'> + changeView('SIGNUP')} id='coralRegister'> {lang.t('signIn.register')} @@ -92,6 +95,14 @@ const SignInContent = ({ }; SignInContent.propTypes = { + auth: PropTypes.shape({ + isLoading: PropTypes.bool.isRequired, + error: PropTypes.object, + emailVerificationFailure: PropTypes.bool + }).isRequired, + fetchSignInFacebook: PropTypes.func.isRequired, + handleSignIn: PropTypes.func.isRequired, + changeView: PropTypes.func.isRequired, emailVerificationLoading: PropTypes.bool.isRequired, emailVerificationSuccess: PropTypes.bool.isRequired, handleResendVerification: PropTypes.func.isRequired, diff --git a/client/coral-sign-in/components/SignUpContent.js b/client/coral-sign-in/components/SignUpContent.js index 69c0e816a..03c083070 100644 --- a/client/coral-sign-in/components/SignUpContent.js +++ b/client/coral-sign-in/components/SignUpContent.js @@ -140,7 +140,7 @@ class SignUpContent extends React.Component {
{lang.t('signIn.alreadyHaveAnAccount')} - changeView('SIGNIN')}> + changeView('SIGNIN')}> {lang.t('signIn.signIn')} diff --git a/test/e2e/pages/embedStreamPage.js b/test/e2e/pages/embedStreamPage.js index 372b94b66..1dd467b10 100644 --- a/test/e2e/pages/embedStreamPage.js +++ b/test/e2e/pages/embedStreamPage.js @@ -22,6 +22,8 @@ const embedStreamCommands = { .setValue('@signUpDialogDisplayName', user.displayName) .waitForElementVisible('@signUpButton') .click('@signUpButton') + .waitForElementVisible('@signInViewTrigger') + .click('@signInViewTrigger') .waitForElementVisible('@logInButton') .click('@logInButton') .waitForElementVisible('@logoutButton', 5000); @@ -102,6 +104,9 @@ module.exports = { signUpButton: { selector: '#coralSignUpButton' }, + signInViewTrigger: { + selector: '#coralSignInViewTrigger' + }, logoutButton: { selector: '.commentStream #logout' },