Add authentication
This commit is contained in:
103
apps/builder/cypress/tests/auth.ts
Normal file
103
apps/builder/cypress/tests/auth.ts
Normal file
@ -0,0 +1,103 @@
|
||||
describe('SignIn page', () => {
|
||||
beforeEach(() => {
|
||||
cy.logOutByApi()
|
||||
})
|
||||
it('can continue with Google', () => {
|
||||
cy.visit('/signin')
|
||||
const username = Cypress.env('GOOGLE_USER')
|
||||
const password = Cypress.env('GOOGLE_PW')
|
||||
const loginUrl = Cypress.env('SITE_NAME')
|
||||
const cookieName = Cypress.env('COOKIE_NAME')
|
||||
exectueSocialLogin(
|
||||
'GoogleSocialLogin',
|
||||
username,
|
||||
password,
|
||||
loginUrl,
|
||||
cookieName
|
||||
)
|
||||
})
|
||||
|
||||
it('can continue with GitHub', () => {
|
||||
cy.visit('/signin')
|
||||
const username = Cypress.env('GITHUB_USER')
|
||||
const password = Cypress.env('GITHUB_PW')
|
||||
const loginUrl = Cypress.env('SITE_NAME')
|
||||
const cookieName = Cypress.env('COOKIE_NAME')
|
||||
exectueSocialLogin(
|
||||
'GitHubSocialLogin',
|
||||
username,
|
||||
password,
|
||||
loginUrl,
|
||||
cookieName
|
||||
)
|
||||
})
|
||||
|
||||
it('can continue with Facebook', () => {
|
||||
cy.visit('/signin')
|
||||
const username = Cypress.env('FACEBOOK_USER')
|
||||
const password = Cypress.env('FACEBOOK_PW')
|
||||
const loginUrl = Cypress.env('SITE_NAME')
|
||||
const cookieName = Cypress.env('COOKIE_NAME')
|
||||
exectueSocialLogin(
|
||||
'FacebookSocialLogin',
|
||||
username,
|
||||
password,
|
||||
loginUrl,
|
||||
cookieName,
|
||||
[
|
||||
'button[data-testid="cookie-policy-dialog-manage-button"]',
|
||||
'button[data-testid="cookie-policy-manage-dialog-accept-button"]',
|
||||
]
|
||||
)
|
||||
})
|
||||
|
||||
// We don't test email sign in because disabling email sending is not straightforward
|
||||
})
|
||||
|
||||
const exectueSocialLogin = (
|
||||
task: 'FacebookSocialLogin' | 'GoogleSocialLogin' | 'GitHubSocialLogin',
|
||||
username: string,
|
||||
password: string,
|
||||
loginUrl: string,
|
||||
cookieName: string,
|
||||
trackingConsentSelectors?: string[]
|
||||
) => {
|
||||
const selectorId =
|
||||
task === 'FacebookSocialLogin'
|
||||
? 'facebook'
|
||||
: task === 'GoogleSocialLogin'
|
||||
? 'google'
|
||||
: 'github'
|
||||
const socialLoginOptions = {
|
||||
username,
|
||||
password,
|
||||
loginUrl,
|
||||
headless: true,
|
||||
logs: true,
|
||||
isPopup: false,
|
||||
loginSelector: `[data-testid="${selectorId}"]`,
|
||||
postLoginSelector: `[data-testid="authenticated"]`,
|
||||
trackingConsentSelectors,
|
||||
}
|
||||
|
||||
cy.task(task, socialLoginOptions).then(({ cookies }: any) => {
|
||||
const cookie = cookies
|
||||
.filter((cookie: any) => cookie.name === cookieName)
|
||||
.pop()
|
||||
if (cookie) {
|
||||
cy.setCookie(cookie.name, cookie.value, {
|
||||
domain: cookie.domain,
|
||||
expiry: cookie.expires,
|
||||
httpOnly: cookie.httpOnly,
|
||||
path: cookie.path,
|
||||
secure: cookie.secure,
|
||||
})
|
||||
|
||||
Cypress.Cookies.defaults({
|
||||
preserve: cookieName,
|
||||
})
|
||||
}
|
||||
cy.visit('/typebots')
|
||||
cy.findByText(`Hello ${username}`).should('exist')
|
||||
})
|
||||
}
|
Reference in New Issue
Block a user