-import { browserSleep, go } from '../utils'
+import { getCheckbox, go } from '../utils'
export class AdminConfigPage {
return $('#instanceCustomHomepageContent').setValue(newValue)
}
+ async toggleSignup () {
+ const checkbox = await getCheckbox('signupEnabled')
+ await checkbox.click()
+ }
+
async save () {
- await $('input[type=submit]').click()
- await browserSleep(200)
+ const button = $('input[type=submit]')
+ await button.click()
}
}
export class AdminPluginPage {
- async navigateToSearch () {
+ async navigateToPluginSearch () {
await go('/admin/plugins/search')
await $('my-plugin-search').waitForDisplayed()
await $('form input[type=submit]').click()
- await this.getLoggedInInfoElem().waitForExist()
-
- await expect(this.getLoggedInInfoElem()).toHaveText('root')
+ await this.ensureIsLoggedInAs('root')
}
async logout () {
await $('.login-buttons-block').waitForDisplayed()
}
+ async ensureIsLoggedInAs (displayName: string) {
+ await this.getLoggedInInfoElem().waitForExist()
+
+ await expect(this.getLoggedInInfoElem()).toHaveText(displayName)
+ }
+
private getLoggedInInfoElem () {
return $('.logged-in-display-name')
}
--- /dev/null
+import { getCheckbox } from '../utils'
+
+export class SignupPage {
+
+ getRegisterMenuButton () {
+ return $('.create-account-button')
+ }
+
+ async clickOnRegisterInMenu () {
+ const button = this.getRegisterMenuButton()
+
+ await button.waitForDisplayed()
+ await button.click()
+ }
+
+ async validateStep () {
+ const next = $('button[type=submit]')
+
+ await next.waitForClickable()
+ await next.click()
+ }
+
+ async checkTerms () {
+ const terms = await getCheckbox('terms')
+
+ return terms.click()
+ }
+
+ async fillAccountStep (options: {
+ displayName: string
+ username: string
+ email: string
+ password: string
+ }) {
+ if (options.displayName) {
+ await $('#displayName').setValue(options.displayName)
+ }
+
+ if (options.username) {
+ await $('#username').setValue(options.username)
+ }
+
+ if (options.email) {
+ await $('#email').setValue(options.email)
+ }
+
+ if (options.password) {
+ await $('#password').setValue(options.password)
+ }
+ }
+
+ async fillChannelStep (options: {
+ displayName: string
+ name: string
+ }) {
+ if (options.displayName) {
+ await $('#displayName').setValue(options.displayName)
+ }
+
+ if (options.name) {
+ await $('#name').setValue(options.name)
+ }
+ }
+}
it('Should install hello world plugin', async () => {
await loginPage.loginAsRootUser()
- await adminPluginPage.navigateToSearch()
+ await adminPluginPage.navigateToPluginSearch()
await adminPluginPage.search('hello-world')
await adminPluginPage.installHelloWorld()
await browser.refresh()
--- /dev/null
+import { AdminConfigPage } from '../po/admin-config.po'
+import { LoginPage } from '../po/login.po'
+import { SignupPage } from '../po/signup.po'
+import { waitServerUp } from '../utils'
+
+describe('Signup', () => {
+ let loginPage: LoginPage
+ let adminConfigPage: AdminConfigPage
+ let signupPage: SignupPage
+
+ before(async () => {
+ await waitServerUp()
+ })
+
+ beforeEach(async () => {
+ loginPage = new LoginPage()
+ adminConfigPage = new AdminConfigPage()
+ signupPage = new SignupPage()
+
+ await browser.maximizeWindow()
+ })
+
+ it('Should disable signup', async () => {
+ await loginPage.loginAsRootUser()
+
+ await adminConfigPage.navigateTo('basic-configuration')
+ await adminConfigPage.toggleSignup()
+
+ await adminConfigPage.save()
+
+ await loginPage.logout()
+ await browser.refresh()
+
+ expect(signupPage.getRegisterMenuButton()).not.toBeDisplayed()
+ })
+
+ it('Should enable signup', async () => {
+ await loginPage.loginAsRootUser()
+
+ await adminConfigPage.navigateTo('basic-configuration')
+ await adminConfigPage.toggleSignup()
+
+ await adminConfigPage.save()
+
+ await loginPage.logout()
+ await browser.refresh()
+
+ expect(signupPage.getRegisterMenuButton()).toBeDisplayed()
+ })
+
+ it('Should go on signup page', async function () {
+ await signupPage.clickOnRegisterInMenu()
+ })
+
+ it('Should validate the first step (about page)', async function () {
+ await signupPage.validateStep()
+ })
+
+ it('Should validate the second step (terms)', async function () {
+ await signupPage.checkTerms()
+ await signupPage.validateStep()
+ })
+
+ it('Should validate the third step (account)', async function () {
+ await signupPage.fillAccountStep({
+ displayName: 'user 1',
+ username: 'user_1',
+ email: 'user_1@example.com',
+ password: 'my_super_password'
+ })
+
+ await signupPage.validateStep()
+ })
+
+ it('Should validate the third step (channel)', async function () {
+ await signupPage.fillChannelStep({
+ displayName: 'user 1 channel',
+ name: 'user_1_channel'
+ })
+
+ await signupPage.validateStep()
+ })
+
+ it('Should be logged in', async function () {
+ await loginPage.ensureIsLoggedInAs('user 1')
+ })
+})
-function getCheckbox (name: string) {
- return $(`my-peertube-checkbox input[id=${name}]`).parentElement()
+async function getCheckbox (name: string) {
+ const input = $(`my-peertube-checkbox input[id=${name}]`)
+ await input.waitForExist()
+
+ return input.parentElement()
}
async function selectCustomSelect (id: string, valueLabel: string) {
log: {
level: 'warn'
},
- signup: {
- enabled: false
- },
transcoding: {
enabled: false
},