360 lines
9.8 KiB
TypeScript
360 lines
9.8 KiB
TypeScript
interface TestUser {
|
|
username: string
|
|
password: string
|
|
org: string
|
|
bucket: string
|
|
}
|
|
|
|
describe('Onboarding', () => {
|
|
let user: TestUser
|
|
|
|
beforeEach(() => {
|
|
cy.flush()
|
|
|
|
cy.fixture('user').then(u => {
|
|
user = u
|
|
})
|
|
|
|
cy.visit('/')
|
|
})
|
|
|
|
it('Can Onboard to Quick Start', () => {
|
|
cy.server()
|
|
|
|
//Will want to capture response from this
|
|
cy.route('POST', 'api/v2/setup').as('orgSetup')
|
|
|
|
//Check splash page
|
|
cy.location('pathname').should('include', 'onboarding/0')
|
|
cy.getByTestID('init-step--head-main').contains('Welcome to InfluxDB 2.0')
|
|
cy.getByTestID('credits').contains('Powered by')
|
|
cy.getByTestID('credits').contains('InfluxData')
|
|
|
|
//Continue
|
|
cy.getByTestID('onboarding-get-started').click()
|
|
|
|
cy.location('pathname').should('include', 'onboarding/1')
|
|
|
|
//Check navigation bar
|
|
cy.getByTestID('nav-step--welcome').click()
|
|
|
|
//Check splash page
|
|
cy.getByTestID('init-step--head-main').contains('Welcome to InfluxDB 2.0')
|
|
cy.getByTestID('credits').contains('Powered by')
|
|
cy.getByTestID('credits').contains('InfluxData')
|
|
|
|
//Continue
|
|
cy.getByTestID('onboarding-get-started').click()
|
|
|
|
//Check onboarding page - nav bar
|
|
cy.getByTestID('nav-step--welcome').contains('Welcome')
|
|
cy.getByTestID('nav-step--welcome')
|
|
.parent()
|
|
.children('span')
|
|
.should($span => {
|
|
expect($span).to.have.class('checkmark')
|
|
})
|
|
|
|
cy.getByTestID('nav-step--setup')
|
|
.contains('Initial User Setup')
|
|
.should('be.visible')
|
|
cy.getByTestID('nav-step--setup').should('have.class', 'current')
|
|
|
|
cy.getByTestID('nav-step--complete')
|
|
.parent()
|
|
.should($el => {
|
|
expect($el).to.have.class('unclickable')
|
|
})
|
|
|
|
//Check onboarding page headers and controls
|
|
cy.getByTestID('admin-step--head-main').contains('Setup Initial User')
|
|
|
|
cy.getByTestID('next').should('be.disabled')
|
|
|
|
cy.getByTestID('next')
|
|
.children('.cf-button--label')
|
|
.contains('Continue')
|
|
|
|
//Check tooltips
|
|
cy.getByTestID('form-elem--orgname')
|
|
.children('[data-testid=form--label]')
|
|
.children('div.question-mark-tooltip')
|
|
.trigger('mouseenter')
|
|
.children('div[data-id=tooltip]')
|
|
.contains('An organization is')
|
|
.should($tt => {
|
|
expect($tt).to.have.class('show')
|
|
})
|
|
|
|
cy.getByTestID('form-elem--bucketname')
|
|
.children('[data-testid=form--label]')
|
|
.children('div.question-mark-tooltip')
|
|
.trigger('mouseenter')
|
|
.children('div[data-id=tooltip]')
|
|
.contains('A bucket is')
|
|
.should($tt => {
|
|
expect($tt).to.have.class('show')
|
|
})
|
|
|
|
//Input fields
|
|
cy.getByTestID('input-field--username').type(user.username)
|
|
cy.getByTestID('input-field--password').type(user.password)
|
|
cy.getByTestID('input-field--password-chk').type(user.password)
|
|
cy.getByTestID('input-field--orgname').type(user.org)
|
|
cy.getByTestID('input-field--bucketname').type(user.bucket)
|
|
|
|
cy.getByTestID('next')
|
|
.children('.cf-button--label')
|
|
.contains('Continue')
|
|
|
|
cy.getByTestID('next')
|
|
.should('be.enabled')
|
|
.click()
|
|
|
|
cy.wait('@orgSetup')
|
|
|
|
cy.get('@orgSetup').then(xhr => {
|
|
let orgId: string = xhr.responseBody.org.id
|
|
|
|
//wait for new page to load
|
|
cy.location('pathname').should('include', 'onboarding/2')
|
|
|
|
cy.getByTestID('notification-success').should($msg => {
|
|
expect($msg).to.contain(
|
|
'Initial user details have been successfully set'
|
|
)
|
|
})
|
|
|
|
cy.getByTestID('notification-success')
|
|
.should('be.visible')
|
|
.children('button.notification-close')
|
|
.should('be.visible')
|
|
|
|
//check navbar
|
|
cy.getByTestID('nav-step--complete').should('have.class', 'current')
|
|
|
|
cy.getByTestID('nav-step--welcome').should('have.class', 'checkmark')
|
|
cy.getByTestID('nav-step--setup').should('have.class', 'checkmark')
|
|
|
|
cy.getByTestID('button--advanced').should('be.visible')
|
|
|
|
cy.getByTestID('button--conf-later').should('be.visible')
|
|
|
|
//advance to Quick Start
|
|
cy.getByTestID('button--quick-start').click()
|
|
|
|
cy.location('pathname').should('equal', '/orgs/' + orgId)
|
|
|
|
cy.getByTestID('notification-success').should($msg => {
|
|
expect($msg).to.contain(
|
|
'The InfluxDB Scraper has been configured for http://localhost:9999/metrics'
|
|
)
|
|
})
|
|
|
|
cy.getByTestID('notification-success')
|
|
.eq(0)
|
|
.should('be.visible')
|
|
.children('button.notification-close')
|
|
.click()
|
|
|
|
cy.getByTestID('notification-success')
|
|
.eq(1)
|
|
.should('be.visible')
|
|
.children('button.notification-close')
|
|
.click()
|
|
|
|
cy.getByTestID('notification-success')
|
|
.eq(0)
|
|
.should('not.exist')
|
|
})
|
|
})
|
|
|
|
it('Can onboard to advanced', () => {
|
|
cy.server()
|
|
|
|
cy.route('POST', 'api/v2/setup').as('orgSetup')
|
|
|
|
//Check splash page
|
|
cy.location('pathname').should('include', 'onboarding/0')
|
|
|
|
//Continue
|
|
cy.getByTestID('onboarding-get-started').click()
|
|
cy.location('pathname').should('include', 'onboarding/1')
|
|
|
|
//Input fields
|
|
cy.getByTestID('input-field--username').type(user.username)
|
|
cy.getByTestID('input-field--password').type(user.password)
|
|
cy.getByTestID('input-field--password-chk').type(user.password)
|
|
cy.getByTestID('input-field--orgname').type(user.org)
|
|
cy.getByTestID('input-field--bucketname').type(user.bucket)
|
|
|
|
cy.getByTestID('next').click()
|
|
|
|
cy.wait('@orgSetup')
|
|
|
|
cy.get('@orgSetup').then(xhr => {
|
|
let orgId: string = xhr.responseBody.org.id
|
|
|
|
//wait for new page to load
|
|
cy.location('pathname').should('include', 'onboarding/2')
|
|
|
|
//advance to Advanced
|
|
cy.getByTestID('button--advanced').click()
|
|
|
|
//wait for new page to load
|
|
cy.location('pathname').should('match', /orgs\/.*\/buckets/)
|
|
|
|
cy.location('pathname').should('include', orgId)
|
|
})
|
|
})
|
|
|
|
it('Can onboard to configure later', () => {
|
|
cy.server()
|
|
|
|
cy.route('POST', 'api/v2/setup').as('orgSetup')
|
|
|
|
//Check splash page
|
|
cy.location('pathname').should('include', 'onboarding/0')
|
|
|
|
//Continue
|
|
cy.getByTestID('onboarding-get-started').click()
|
|
cy.location('pathname').should('include', 'onboarding/1')
|
|
|
|
//Input fields
|
|
cy.getByTestID('input-field--username').type(user.username)
|
|
cy.getByTestID('input-field--password').type(user.password)
|
|
cy.getByTestID('input-field--password-chk').type(user.password)
|
|
cy.getByTestID('input-field--orgname').type(user.org)
|
|
cy.getByTestID('input-field--bucketname').type(user.bucket)
|
|
|
|
cy.getByTestID('next').click()
|
|
|
|
cy.wait('@orgSetup')
|
|
|
|
cy.get('@orgSetup').then(xhr => {
|
|
let orgId: string = xhr.responseBody.org.id
|
|
//wait for new page to load
|
|
|
|
cy.location('pathname').should('include', 'onboarding/2')
|
|
|
|
//advance to Advanced
|
|
cy.getByTestID('button--conf-later').click()
|
|
|
|
cy.location('pathname').should('include', orgId)
|
|
})
|
|
})
|
|
|
|
it('respects field requirements', () => {
|
|
//Continue
|
|
cy.getByTestID('onboarding-get-started').click()
|
|
|
|
cy.getByTestID('input-field--username').type(user.username)
|
|
|
|
cy.getByTestID('next')
|
|
.should('be.disabled')
|
|
.children('.cf-button--label')
|
|
.contains('Continue')
|
|
|
|
cy.getByTestID('input-field--password').type(user.password)
|
|
|
|
cy.getByTestID('next')
|
|
.should('be.disabled')
|
|
.children('.cf-button--label')
|
|
.contains('Continue')
|
|
|
|
cy.getByTestID('input-field--password-chk').type('drowssap')
|
|
|
|
//check password mismatch
|
|
cy.getByTestID('form--element-error').should(
|
|
'have.text',
|
|
'Passwords do not match'
|
|
)
|
|
|
|
cy.getByTestID('input-error').should('have.class', 'alert-triangle')
|
|
|
|
cy.getByTestID('input-field--orgname').type(user.org)
|
|
cy.getByTestID('input-field--bucketname').type(user.bucket)
|
|
|
|
cy.getByTestID('next')
|
|
.should('be.disabled')
|
|
.children('.cf-button--label')
|
|
.contains('Continue')
|
|
|
|
cy.getByTestID('input-field--password-chk')
|
|
.clear()
|
|
.type(user.password)
|
|
|
|
cy.getByTestID('input-error').should('not.exist')
|
|
|
|
cy.getByTestID('next')
|
|
.should('be.enabled')
|
|
.children('.cf-button--label')
|
|
.contains('Continue')
|
|
|
|
//check cleared username
|
|
cy.getByTestID('input-field--username').clear()
|
|
|
|
cy.getByTestID('next')
|
|
.should('be.disabled')
|
|
.children('.cf-button--label')
|
|
.contains('Continue')
|
|
|
|
cy.getByTestID('input-field--username').type(user.username)
|
|
|
|
cy.getByTestID('next')
|
|
.should('be.enabled')
|
|
.children('.cf-button--label')
|
|
.contains('Continue')
|
|
|
|
//check cleared password
|
|
cy.getByTestID('input-field--password').clear()
|
|
|
|
cy.getByTestID('form--element-error').should(
|
|
'have.text',
|
|
'Passwords do not match'
|
|
)
|
|
|
|
cy.getByTestID('next')
|
|
.should('be.disabled')
|
|
.children('.cf-button--label')
|
|
.contains('Continue')
|
|
|
|
cy.getByTestID('input-field--password').type(user.password)
|
|
|
|
cy.getByTestID('next')
|
|
.should('be.enabled')
|
|
.children('.cf-button--label')
|
|
.contains('Continue')
|
|
|
|
//check cleared org name
|
|
cy.getByTestID('input-field--orgname').clear()
|
|
|
|
cy.getByTestID('next')
|
|
.should('be.disabled')
|
|
.children('.cf-button--label')
|
|
.contains('Continue')
|
|
|
|
cy.getByTestID('input-field--orgname').type(user.org)
|
|
|
|
cy.getByTestID('next')
|
|
.should('be.enabled')
|
|
.children('.cf-button--label')
|
|
.contains('Continue')
|
|
|
|
//check cleared bucket name
|
|
cy.getByTestID('input-field--bucketname').clear()
|
|
|
|
cy.getByTestID('next')
|
|
.should('be.disabled')
|
|
.children('.cf-button--label')
|
|
.contains('Continue')
|
|
|
|
cy.getByTestID('input-field--bucketname').type(user.bucket)
|
|
|
|
cy.getByTestID('next')
|
|
.should('be.enabled')
|
|
.children('.cf-button--label')
|
|
.contains('Continue')
|
|
})
|
|
})
|