import { AdminPluginPage } from '../po/admin-plugin.po' import { LoginPage } from '../po/login.po' import { VideoUploadPage } from '../po/video-upload.po' import { getCheckbox, isMobileDevice, waitServerUp } from '../utils' describe('Plugins', () => { let videoUploadPage: VideoUploadPage let loginPage: LoginPage let adminPluginPage: AdminPluginPage function getPluginCheckbox () { return getCheckbox('hello-world-field-4') } async function expectSubmitState ({ disabled }: { disabled: boolean }) { const disabledSubmit = await $('my-button .disabled') if (disabled) expect(await disabledSubmit.isDisplayed()).toBeTruthy() else expect(await disabledSubmit.isDisplayed()).toBeFalsy() } before(async () => { await waitServerUp() }) beforeEach(async () => { loginPage = new LoginPage(isMobileDevice()) videoUploadPage = new VideoUploadPage() adminPluginPage = new AdminPluginPage() await browser.maximizeWindow() }) it('Should install hello world plugin', async () => { await loginPage.loginAsRootUser() await adminPluginPage.navigateToPluginSearch() await adminPluginPage.search('hello-world') await adminPluginPage.installHelloWorld() await browser.refresh() }) it('Should have checkbox in video edit page', async () => { await videoUploadPage.navigateTo() await videoUploadPage.uploadVideo('video.mp4') await $('span=Super field 4 in main tab').waitForDisplayed() const checkbox = await getPluginCheckbox() expect(await checkbox.isDisplayed()).toBeTruthy() await expectSubmitState({ disabled: true }) }) it('Should check the checkbox and be able to submit the video', async function () { const checkbox = await getPluginCheckbox() await checkbox.waitForClickable() await checkbox.click() await expectSubmitState({ disabled: false }) }) it('Should uncheck the checkbox and not be able to submit the video', async function () { const checkbox = await getPluginCheckbox() await checkbox.waitForClickable() await checkbox.click() await expectSubmitState({ disabled: true }) const error = await $('.form-error*=Should be enabled') expect(await error.isDisplayed()).toBeTruthy() }) it('Should change the privacy and should hide the checkbox', async function () { await videoUploadPage.setAsPrivate() await expectSubmitState({ disabled: false }) }) })