import { join } from 'path' ; import { getCheckbox , selectCustomSelect } from '../utils' ; export class VideoUploadPage { async navigateTo ( ) { const publishButton = await $ ( '.header .publish-button' ) ; await publishButton . waitForClickable ( ) ; await publishButton . click ( ) ; await $ ( '.upload-video-container' ) . waitForDisplayed ( ) ; } async uploadVideo ( ) { const fileToUpload = join ( __dirname , '../../fixtures/video.mp4' ) ; const fileInputSelector = '.upload-video-container input[type=file]' ; const parentFileInput = '.upload-video-container .button-file' ; await browser . execute ( `document.querySelector('${ fileInputSelector }').style.opacity = 1` ) ; await browser . execute ( `document.querySelector('${ parentFileInput }').style.overflow = 'initial'` ) ; await browser . pause ( 1000 ) ; const elem = await $ ( fileInputSelector ) ; await elem . chooseFile ( fileToUpload ) ; await browser . waitUntil ( async ( ) => { const warning = await $ ( '=Publish will be available when upload is finished' ) . isDisplayed ( ) ; const progress = await $ ( '.progress-bar=100%' ) . isDisplayed ( ) ; return ! warning && progress ; } ) ; } async setAsNSFW ( ) { const checkbox = await getCheckbox ( 'nsfw' ) ; return checkbox . click ( ) ; } async validSecondUploadStep ( videoName ) { const nameInput = $ ( 'input#name' ) ; await nameInput . clearValue ( ) ; await nameInput . setValue ( videoName ) ; await this . getSecondStepSubmitButton ( ) . click ( ) ; return browser . waitUntil ( async ( ) => { return ( await browser . getUrl ( ) ) . includes ( '/w/' ) ; } ) ; } setAsPublic ( ) { return selectCustomSelect ( 'privacy' , 'Public' ) ; } setAsPrivate ( ) { return selectCustomSelect ( 'privacy' , 'Private' ) ; } private getSecondStepSubmitButton ( ) { return $ ( '.submit-container my-button' ) ; } }