How to use initAUT method in Appium Android Driver

Best JavaScript code snippet using appium-android-driver

WhatsAppController.js

Source:WhatsAppController.js Github

copy

Full Screen

1import ExtendsHtmlFunctions from './../util/ExtendsHtmlFunctions'2import {Format} from './../util/Format'3import {CameraController} from './../controller/CameraController'4import {DocumentPreviewController} from './../controller/DocumentPreviewController'5import {MicrophoneController} from './../controller/MicrophoneController'6import {Firebase} from './../util/Firebase'7import {User} from './../model/User'8import {Chat} from "../model/Chat";9import {Message} from "../model/Message";10import {Base64} from "../util/Base64";11import {ContactsController} from './../controller/ContactsController'12import {Upload} from "../util/Upload";13export default class WhatsAppController{14    constructor(){15        console.log('class WhatsAppController ok')16        this._firebase = new Firebase()17        this.initAut()18        // elementsPrototype()19        this.loadElements()20        this.initEvents()21    }22    initAut(){23        this._firebase.initAuth().then(response=>{24            console.log('_firebase.initAuth ',response)25            this._user = new User(response.user.email)26            this._user.on('datachange', data=>{27                console.log('user-datachange')28                document.querySelector('title').innerHTML = data.name + ' - WhatsApp Clone'29                this.el.inputNamePanelEditProfile.innerHTML = data.name30                if(data.photo){31                    let photo = this.el.imgPanelEditProfile32                    photo.src =  data.photo33                    photo.show()34                    this.el.imgDefaultPanelEditProfile.hide()35                    let photo2 = this.el.myPhoto.querySelector('img')36                    photo2.src =  data.photo37                    photo2.show()38                }39                this.initContacts()40            })41            this._user.name = response.user.displayName42            this._user.email = response.user.email43            this._user.photo = response.user.photoURL44            this._user.save().then(()=>{45                this.el.appContent.css({46                    display:'flex'47                })48            })49            // let userRef = User.findByEmail(response.user.email)50            //51            // userRef.set({52            //     name: response.user.displayName,53            //     email: response.user.email,54            //     photo: response.user.photoURL55            // }).then(()=>{56            //57            // }).catch(error=>{58            //     console.log(error)59            // })60            //61            // this._token = response.token62        }).catch(error=>{63            console.log(error)64        })65    }66    initContacts(){67        this._user.on('contactschange', docs=>{68            console.log('user-on-contactschange ', docs)69            this.el.contactsMessagesList.innerHTML = ''70            docs.forEach(doc =>{71                let contact = doc.data()72                let div = document.createElement('div')73                div.className = 'contact-item'74                div.innerHTML = `                75                    <div class="dIyEr">76                        <div class="_1WliW" style="height: 49px; width: 49px;">77                            <img src="#" class="Qgzj8 gqwaM photo" style="display:none;">78                            <div class="_3ZW2E">79                                <span data-icon="default-user" class="">80                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 212 212" width="212" height="212">81                                        <path fill="#DFE5E7" d="M106.251.5C164.653.5 212 47.846 212 106.25S164.653 212 106.25 212C47.846 212 .5 164.654.5 106.25S47.846.5 106.251.5z"></path>82                                        <g fill="#FFF">83                                            <path d="M173.561 171.615a62.767 62.767 0 0 0-2.065-2.955 67.7 67.7 0 0 0-2.608-3.299 70.112 70.112 0 0 0-3.184-3.527 71.097 71.097 0 0 0-5.924-5.47 72.458 72.458 0 0 0-10.204-7.026 75.2 75.2 0 0 0-5.98-3.055c-.062-.028-.118-.059-.18-.087-9.792-4.44-22.106-7.529-37.416-7.529s-27.624 3.089-37.416 7.529c-.338.153-.653.318-.985.474a75.37 75.37 0 0 0-6.229 3.298 72.589 72.589 0 0 0-9.15 6.395 71.243 71.243 0 0 0-5.924 5.47 70.064 70.064 0 0 0-3.184 3.527 67.142 67.142 0 0 0-2.609 3.299 63.292 63.292 0 0 0-2.065 2.955 56.33 56.33 0 0 0-1.447 2.324c-.033.056-.073.119-.104.174a47.92 47.92 0 0 0-1.07 1.926c-.559 1.068-.818 1.678-.818 1.678v.398c18.285 17.927 43.322 28.985 70.945 28.985 27.678 0 52.761-11.103 71.055-29.095v-.289s-.619-1.45-1.992-3.778a58.346 58.346 0 0 0-1.446-2.322zM106.002 125.5c2.645 0 5.212-.253 7.68-.737a38.272 38.272 0 0 0 3.624-.896 37.124 37.124 0 0 0 5.12-1.958 36.307 36.307 0 0 0 6.15-3.67 35.923 35.923 0 0 0 9.489-10.48 36.558 36.558 0 0 0 2.422-4.84 37.051 37.051 0 0 0 1.716-5.25c.299-1.208.542-2.443.725-3.701.275-1.887.417-3.827.417-5.811s-.142-3.925-.417-5.811a38.734 38.734 0 0 0-1.215-5.494 36.68 36.68 0 0 0-3.648-8.298 35.923 35.923 0 0 0-9.489-10.48 36.347 36.347 0 0 0-6.15-3.67 37.124 37.124 0 0 0-5.12-1.958 37.67 37.67 0 0 0-3.624-.896 39.875 39.875 0 0 0-7.68-.737c-21.162 0-37.345 16.183-37.345 37.345 0 21.159 16.183 37.342 37.345 37.342z"></path>84                                        </g>85                                    </svg>86                                </span>87                            </div>88                        </div>89                    </div>90                    <div class="_3j7s9">91                        <div class="_2FBdJ">92                            <div class="_25Ooe">93                                <span dir="auto" title="${contact.name}" class="_1wjpf">${contact.name}</span>94                            </div>95                            <div class="_3Bxar">96                                <span class="_3T2VG">${Format.timeStampToTime(contact.lastMessageTime)}</span>97                            </div>98                        </div>99                        <div class="_1AwDx">100                            <div class="_itDl">101                                <span title="digitando…" class="vdXUe _1wjpf typing" style="display:none">digitando…</span>102        103                                <span class="_2_LEW last-message">104                                    <div class="_1VfKB">105                                        <span data-icon="status-dblcheck" class="">106                                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18" width="18" height="18">107                                                <path fill="#263238" fill-opacity=".4" d="M17.394 5.035l-.57-.444a.434.434 0 0 0-.609.076l-6.39 8.198a.38.38 0 0 1-.577.039l-.427-.388a.381.381 0 0 0-.578.038l-.451.576a.497.497 0 0 0 .043.645l1.575 1.51a.38.38 0 0 0 .577-.039l7.483-9.602a.436.436 0 0 0-.076-.609zm-4.892 0l-.57-.444a.434.434 0 0 0-.609.076l-6.39 8.198a.38.38 0 0 1-.577.039l-2.614-2.556a.435.435 0 0 0-.614.007l-.505.516a.435.435 0 0 0 .007.614l3.887 3.8a.38.38 0 0 0 .577-.039l7.483-9.602a.435.435 0 0 0-.075-.609z"></path>108                                            </svg>109                                        </span>110                                    </div>111                                    <span dir="ltr" class="_1wjpf _3NFp9">${contact.lastMessage}</span>112                                    <div class="_3Bxar">113                                        <span>114                                            <div class="_15G96">115                                                <span class="OUeyt messages-count-new" style="display:none;">1</span>116                                            </div>117                                    </span></div>118                                    </span>119                            </div>120                        </div>121                    </div>                122                `123                if(contact.photo){124                    let img = div.querySelector('.photo')125                    img.src = contact.photo126                    img.show()127                }128                div.on('click', e=>{129                    this.setActiveChat(contact)130                })131                this.el.contactsMessagesList.appendChild(div)132            })133        })134        this._user.getContacts()135    }136    setActiveChat(contact){137        console.log('chatid ', contact.chatId)138        if (this._contactAtive){139            Message.getRef(this._contactAtive.chatId).onSnapshot(()=>{})140        }141        this._contactAtive = contact142        this.el.activeName.innerHTML = contact.name143        this.el.activeStatus.innerHTML = contact.status144        if(contact.photo){145            let img = this.el.activePhoto146            img.src = contact.photo147            img.show()148        }149        this.el.home.hide()150        this.el.main.css({151            display: 'flex'152        })153        this.el.panelMessagesContainer.innerHTML = ''154        Message.getRef(this._contactAtive.chatId).orderBy('timeStamp').onSnapshot(docs=>{155            let scrollTop = this.el.panelMessagesContainer.scrollTop156            let scrollTopMax = (this.el.panelMessagesContainer.scrollHeight - this.el.panelMessagesContainer.offsetHeight)157            // let autoScroll = (scrollTop >= scrollTopMax)158            let autoScroll = (scrollTop >= (scrollTopMax - 1))159            docs.forEach(doc =>{160                let data = doc.data()161                data.id = doc.id162                let message = new Message()163                message.fromJSON(data)164                let me = (data.from === this._user.email)165                let view = message.getViewElement(me)166                if(!this.el.panelMessagesContainer.querySelector('#_'+data.id)){167                    console.log(scrollTop, scrollTopMax)168                    if(!me){169                        doc.ref.set({170                            status: 'read'171                        },{172                            merge:true173                        })174                    }175                    this.el.panelMessagesContainer.appendChild(view)176                }else {177                    //178                    let parent = this.el.panelMessagesContainer.querySelector('#_'+data.id).parentNode179                    //troca o conteudo sem apagar eventos pre-programados180                    parent.replaceChild(view, this.el.panelMessagesContainer.querySelector('#_'+data.id) )181                    // this.el.panelMessagesContainer.querySelector('#_'+data.id).innerHTML = view.innerHTML182                }183                if(this.el.panelMessagesContainer.querySelector('#_'+data.id) && me){184                    let msgEl = this.el.panelMessagesContainer.querySelector('#_'+data.id)185                    msgEl.querySelector(".message-status").innerHTML = message.getStatusViewElement().outerHTML186                }187                if(message.type === 'contact'){188                    view.querySelector(".btn-message-send").on('click', e=>{189                        console.log('enviar mensagem')190                        Chat.createIfNotExists(this._user.email, message.content.email).then(chat =>{191                            console.log('createIfNotExists-then ', chat)192                            let contact = new User(message.content.email)193                            contact.on('datachange', e=>{194                                contact.chatId = chat.id195                                this._user.addContact(contact)196                                this._user.chatId =  chat.id197                                contact.addContact(this._user)198                                this.setActiveChat(contact)199                            })200                        })201                    })202                }203            })204            if(autoScroll){205                this.el.panelMessagesContainer.scrollTop = (this.el.panelMessagesContainer.scrollHeight - this.el.panelMessagesContainer.offsetHeight)206            }else{207                this.el.panelMessagesContainer.scrollTop = scrollTop208            }209        })210    }211    loadElements(){212        this.el = {}213        let sizeFields = document.querySelectorAll('[id]').length214        console.log('quantidade de campos na tela: ', sizeFields)215        document.querySelectorAll('[id]').forEach(element=>{216            let name = Format.getCamelCase(element.id)217            console.log('linha-suprema: ', name, element.id)218            this.el[name]= element219        })220    }221    initEvents(){222        this.el.inputSearchContacts.on('keyup',e=>{223            if( this.el.inputSearchContacts.value.length > 0){224                this.el.inputSearchContactsPlaceholder.hide()225            }else{226                this.el.inputSearchContactsPlaceholder.show()227            }228            this._user.getContacts(this.el.inputSearchContacts.value)229        })230        this.el.myPhoto.on('click', e=>{231            this.closeAllLeftPanel()232            this.el.panelEditProfile.show()233            setTimeout(()=>{ this.el.panelEditProfile.addClass('open') }, 300)234        })235        this.el.btnClosePanelEditProfile.on('click', e=>{236            this.el.panelEditProfile.removeClass('open')237        })238        this.el.btnNewContact.on('click', e=>{239            this.closeAllLeftPanel()240            this.el.panelAddContact.show()241            setTimeout(()=>{ this.el.panelAddContact.addClass('open') }, 300)242        })243        this.el.btnClosePanelAddContact.on('click', e=>{244            this.el.panelAddContact.removeClass('open')245        })246        this.el.photoContainerEditProfile.on('click', e=>{247            this.el.inputProfilePhoto.click()248        })249        this.el.inputProfilePhoto.on('change', e=>{250            if(this.el.inputProfilePhoto.files.length > 0){251                let file = this.el.inputProfilePhoto.files[0]252                Upload.send(file, this._user.email ).then((downloadURLPhotoProfile)=>{253                    this._user.photo = downloadURLPhotoProfile254                    this._user.save().then(()=>{255                        this.el.btnClosePanelEditProfile.click()256                    })257                })258            }259        })260        this.el.inputNamePanelEditProfile.on('keypress', e=>{261            if(e.key === 'Enter'){262                e.preventDefault()263                this.el.btnSavePanelEditProfile.click()264            }265        })266        this.el.btnSavePanelEditProfile.on('click', e=>{267            console.log(this.el.inputNamePanelEditProfile.innerHTML)268            this.el.btnSavePanelEditProfile.disabled = true269            this._user.name = this.el.inputNamePanelEditProfile.innerHTML270            this._user.save().then(()=>{271                this.el.btnSavePanelEditProfile.disabled = false272            })273        })274        this.el.formPanelAddContact.on('submit', e=>{275            e.preventDefault()276            let formData = new FormData(this.el.formPanelAddContact)277            let contact = new User(formData.get('email'))278            contact.on('datachange', data =>{279                console.log('formPanelAddContact-datachange ', data)280                if(data.name){281                    Chat.createIfNotExists(this._user.email, contact.email).then(chat =>{282                        console.log('createIfNotExists-then ', chat)283                        contact.chatId = chat.id284                        this._user.chatId =  chat.id285                        contact.addContact(this._user)286                        this._user.addContact(contact).then(()=>{287                            console.log('contato adicionado')288                            this.el.btnClosePanelAddContact.click()289                        })290                    })291                }else{292                    console.log('error usuario nao encontrado')293                }294            })295        })296        this.el.contactsMessagesList.querySelectorAll('.contact-item').forEach(item=>{297            item.on('click', e=>{298                this.el.home.hide()299                this.el.main.css({300                    display: 'flex'301                })302            })303        })304        this.el.btnAttach.on('click',e=>{305            e.stopPropagation()306            this.el.menuAttach.addClass('open')307            document.addEventListener('click',this.closeMenuAttach.bind(this))308        })309        this.el.btnAttachPhoto.on('click',e=>{310            console.log('photo')311            this.el.inputPhoto.click()312        })313        this.el.inputPhoto.on('change', e=>{314            console.log(this.el.inputPhoto.files)315            console.dir(this.el.inputPhoto.files)316            console.log(this.el.inputPhoto.files.toArray())317            this.el.inputPhoto.files.toArray().forEach( file=>{318                console.log('file ', file)319                Message.sendImage(this._contactAtive.chatId, this._user.email, file).then(resp=>{320                    console.log('Message.sendImage-then->> ',resp)321                }).catch(error=>{322                    console.log('Message.sendImage-error->> ',error)323                })324            })325        })326        this.el.btnAttachCamera.on('click',e=>{327            console.log('camera')328            this.closeAllMainPanel()329            this.el.panelCamera.addClass('open')330            this.el.panelCamera.css({331                "height":"calc(100% - 120px)",332            })333            this._camera = new CameraController(this.el.videoCamera)334        })335        this.el.btnClosePanelCamera.on('click', e=>{336            this.closeAllMainPanel()337            this.el.panelMessagesContainer.show()338            this._camera.stop()339        })340        this.el.btnTakePicture.on('click', e=>{341            console.log('btnTakePictore')342            let dataUrl = this._camera.takePicture()343            this.el.pictureCamera.src = dataUrl344            this.el.pictureCamera.show()345            this.el.videoCamera.hide()346            this.el.btnReshootPanelCamera.show()347            this.el.containerTakePicture.hide()348            this.el.containerSendPicture.show()349        })350        this.el.btnReshootPanelCamera.on('click', e=>{351            this.el.pictureCamera.hide()352            this.el.videoCamera.show()353            this.el.btnReshootPanelCamera.hide()354            this.el.containerTakePicture.show()355            this.el.containerSendPicture.hide()356        })357        this.el.btnSendPicture.on('click', e=>{358            console.log('btnSendPicture')359            console.log('this.el.pictureCamera ', this.el.pictureCamera.src)360            this.el.btnSendPicture.disabled = true361            let regex = /^data:(.+);base64,(.*)$/362            let result =  this.el.pictureCamera.src.match(regex)363            console.log('result ',result)364            let mimeType = result[1]365            let ext = mimeType.split('/')[1]366            let filename = `camera${Date.now()}.${ext}`367            let picture = new Image()368            picture.src = this.el.pictureCamera.src369            picture.onload = e =>{370                let canvas = document.createElement('canvas')371                let context = canvas.getContext('2d')372                canvas.width = picture.width373                canvas.height = picture.height374                context.translate(picture.width, 0)375                context.scale(-1,1)376                context.drawImage(picture,0,0, canvas.width, canvas.height)377                // fetch(this.el.pictureCamera.src)378                fetch(canvas.toDataURL(mimeType))379                    .then( res=>{ return res.arrayBuffer() })380                    .then(buffer=>{ return new File([buffer], filename, {type:mimeType})})381                    .then(file=>{382                        Message.sendImage(this._contactAtive.chatId, this._user.email, file)383                        this.el.btnSendPicture.disabled = true384                        this.closeAllMainPanel()385                        this._camera.stop()386                        this.el.btnReshootPanelCamera.hide()387                        this.el.pictureCamera.hide()388                        this.el.videoCamera.show()389                        this.el.containerSendPicture.hide()390                        this.el.containerTakePicture.show()391                        this.el.panelMessagesContainer.show()392                    })393            }394        })395        this.el.btnAttachDocument.on('click',e=>{396            console.log('Document')397            this.closeAllMainPanel()398            this.el.panelDocumentPreview.addClass('open')399            this.el.panelDocumentPreview.css({400                "height":"calc(100% - 120px)",401            })402            this.el.inputDocument.click()403        })404        this.el.inputDocument.on('change',e=>{405            console.log('inputDocument-change->')406            if(this.el.inputDocument.files.length){407                this.el.panelDocumentPreview.css({408                    "height":"1%",409                })410                let file = this.el.inputDocument.files[0]411                console.log(file)412                this._documentPreviewController = new DocumentPreviewController(file)413                this._documentPreviewController.getPreviewData().then(data=>{414                    console.log('ok', data)415                    this.el.imgPanelDocumentPreview.src = data.src416                    this.el.infoPanelDocumentPreview.innerHTML = data.info417                    this.el.imagePanelDocumentPreview.show()418                    this.el.filePanelDocumentPreview.hide()419                    this.el.panelDocumentPreview.css({420                        "height":"calc(100% - 120px)",421                    })422                    this.el.imagePanelDocumentPreview.css({423                        "height":"80%",424                        "width":"75%"425                    })426                }).catch(error=>{427                    this.el.panelDocumentPreview.css({428                        "height":"calc(100% - 120px)",429                    })430                    console.log('nok', error)431                    switch (file.type) {432                        default:433                            console.log('default')434                            this.el.iconPanelDocumentPreview.className = 'jcxhw icon-doc-generic'435                    }436                    this.el.filenamePanelDocumentPreview.innerHTML = file.name437                    this.el.imagePanelDocumentPreview.hide()438                    this.el.filePanelDocumentPreview.show()439                })440            }441        })442        this.el.btnClosePanelDocumentPreview.on('click', e=>{443            this.closeAllMainPanel()444            this.el.panelMessagesContainer.show()445        })446        this.el.btnSendDocument.on('click', e=>{447            console.log('btnSendDocument')448            let file = this.el.inputDocument.files[0]449            let base64 = this.el.imgPanelDocumentPreview.src450            if(file.type === 'application/pdf'){451                Base64.toFile(base64).then(filePreview =>{452                    Message.sendDocument(453                        this._contactAtive.chatId,454                        this._user.email,455                        file,456                        filePreview,457                        this.el.infoPanelDocumentPreview.innerHTML458                    )459                })460            }else{461                Message.sendDocument(462                    this._contactAtive.chatId,463                    this._user.email,464                    file465                )466            }467            this.el.btnClosePanelDocumentPreview.click()468        })469        this.el.btnAttachContact.on('click',e=>{470            console.log('Contact')471            this._contactsController = new ContactsController(this.el.modalContacts , this._user)472            this._contactsController.on('select', (contact) =>{473                Message.sendContact(474                    this._contactAtive.chatId,475                    this._user.email,476                    contact477                )478            })479            this._contactsController.open()480        })481        this.el.btnCloseModalContacts.on('click',e=>{482            console.log('btnCloseModalContacts')483            this._contactsController.close()484        })485        this.el.btnSendMicrophone.on('click', e=>{486            console.log('btnSendMicrophone')487            this.el.recordMicrophone.show()488            this.el.btnSendMicrophone.hide()489            this._microphoneController = new MicrophoneController()490            this._microphoneController.on('ready', (audio)=>{491                console.log('on-ready ', audio)492                this._microphoneController.startRecorder()493            })494            this._microphoneController.on('recordtimer', (duration)=>{495                this.el.recordMicrophoneTimer.innerHTML = Format.toTime(duration)496            })497        })498        this.el.btnCancelMicrophone.on('click', e=>{499            console.log('btnCanceldMicrophone')500            this._microphoneController.stoptRecorder()501            this.closeRecordMicrophone()502        })503        this.el.btnFinishMicrophone.on('click', e=>{504            console.log('btnFinishMicrophone')505            this._microphoneController.on('recorded', (file, metadata)=>{506                Message.sendAudio(507                    this._contactAtive.chatId,508                    this._user.email,509                    file,510                    metadata,511                    this._user.photo512                )513            })514            this._microphoneController.stoptRecorder()515            this.closeRecordMicrophone()516        })517        this.el.inputText.on('keypress', e=>{518            if(e.key === "Enter" && !e.ctrlKey){519                e.preventDefault()520                this.el.btnSend.click()521            }522        })523        this.el.inputText.on('keyup', e=>{524            if( this.el.inputText.innerHTML.length ){525                this.el.inputPlaceholder.hide()526                this.el.btnSendMicrophone.hide()527                this.el.btnSend.show()528            }else{529                this.el.inputPlaceholder.show()530                this.el.btnSendMicrophone.show()531                this.el.btnSend.hide()532            }533        })534        this.el.btnSend.on('click', e=>{535            console.log('btnSend')536            Message.send(537                this._contactAtive.chatId,538                this._user.email,539                'text',540                this.el.inputText.innerHTML541            )542            this.el.inputText.innerHTML=''543            this.el.panelEmojis.removeClass('open')544        })545        this.el.btnEmojis.on('click', e=>{546            console.log('btnEmojis')547            this.el.panelEmojis.toggleClass('open')548        })549        this.el.panelEmojis.querySelectorAll('.emojik').forEach( emoji=>{550            emoji.on('click', e=>{551               console.log('e ', emoji.dataset.unicode)552               let img =  this.el.imgEmojiDefault.cloneNode()553                img.style.cssText = emoji.dataset.cssText554                img.style.unicode = emoji.dataset.unicode555                img.alt = emoji.dataset.unicode556                emoji.classList.forEach( name=>{557                    img.classList.add(name)558                })559                // this.el.inputText.append(img)560                let cursor = window.getSelection()561                if(!cursor.focusNode || !cursor.focusNode.id == 'input-text'){562                    this.el.inputText.focus()563                    cursor = window.getSelection()564                }565                let range = document.createRange()566                range = cursor.getRangeAt(0)567                range.deleteContents()568                let frag = document.createDocumentFragment()569                frag.appendChild(img)570                range.insertNode(frag)571                range.setStartAfter(img)572                // provocar um evento real573                this.el.inputText.dispatchEvent(new Event('keyup'))574            })575        })576    }577    closeRecordMicrophone(){578        this.el.recordMicrophone.hide()579        this.el.btnSendMicrophone.hide()580        this.el.btnSendMicrophone.show()581        console.log('this._recordMicrophoneInterval ', this._recordMicrophoneInterval)582    }583    closeAllMainPanel(){584        this.el.panelMessagesContainer.hide()585        this.el.panelDocumentPreview.removeClass('open')586        this.el.panelCamera.removeClass('open')587    }588    closeMenuAttach(event){589        document.removeEventListener('click',this.closeMenuAttach)590        this.el.menuAttach.removeClass('open')591        console.log('remove')592    }593    closeAllLeftPanel(){594        this.el.panelAddContact.hide()595        this.el.panelEditProfile.hide()596    }...

Full Screen

Full Screen

driver-specs.js

Source:driver-specs.js Github

copy

Full Screen

...265      driver.caps = {};266    });267    it('should throw error if run with full reset', async function () {268      driver.opts = {appPackage: 'app.package', appActivity: 'act', fullReset: true};269      await driver.initAUT().should.be.rejectedWith(/Full reset requires an app capability/);270    });271    it('should reset if run with fast reset', async function () {272      driver.opts = {appPackage: 'app.package', appActivity: 'act', fullReset: false, fastReset: true};273      driver.adb = 'mock_adb';274      mocks.helpers.expects('resetApp').withArgs('mock_adb');275      await driver.initAUT();276      mocks.helpers.verify();277    });278    it('should keep data if run without reset', async function () {279      driver.opts = {appPackage: 'app.package', appActivity: 'act', fullReset: false, fastReset: false};280      mocks.helpers.expects('resetApp').never();281      await driver.initAUT();282      mocks.helpers.verify();283    });284    it('should install "otherApps" if set in capabilities', async function () {285      const otherApps = ['http://URL_FOR/fake/app.apk'];286      const tempApps = ['/path/to/fake/app.apk'];287      driver.opts = {288        appPackage: 'app.package',289        appActivity: 'act',290        fullReset: false,291        fastReset: false,292        otherApps: `["${otherApps[0]}"]`,293      };294      sandbox.stub(driver.helpers, 'configureApp')295        .withArgs(otherApps[0], '.apk')296        .returns(tempApps[0]);297      mocks.helpers.expects('installOtherApks').once().withArgs(tempApps, driver.adb, driver.opts);298      await driver.initAUT();299      mocks.helpers.verify();300    });301    it('should uninstall a package "uninstallOtherPackages" if set in capabilities', async function () {302      const uninstallOtherPackages = 'app.bundle.id1';303      driver.opts = {304        appPackage: 'app.package',305        appActivity: 'act',306        fullReset: false,307        fastReset: false,308        uninstallOtherPackages,309      };310      driver.adb = new ADB();311      sandbox.stub(driver.adb, 'uninstallApk')312        .withArgs('app.bundle.id1')313        .returns(true);314      mocks.helpers.expects('uninstallOtherPackages').once().withArgs(driver.adb, [uninstallOtherPackages], [SETTINGS_HELPER_PKG_ID]);315      await driver.initAUT();316      mocks.helpers.verify();317    });318    it('should uninstall multiple packages "uninstallOtherPackages" if set in capabilities', async function () {319      const uninstallOtherPackages = ['app.bundle.id1', 'app.bundle.id2'];320      driver.opts = {321        appPackage: 'app.package',322        appActivity: 'act',323        fullReset: false,324        fastReset: false,325        uninstallOtherPackages: `["${uninstallOtherPackages[0]}", "${uninstallOtherPackages[1]}"]`,326      };327      driver.adb = new ADB();328      sandbox.stub(driver.adb, 'uninstallApk')329        .returns(true);330      mocks.helpers.expects('uninstallOtherPackages').once().withArgs(driver.adb, uninstallOtherPackages, [SETTINGS_HELPER_PKG_ID]);331      await driver.initAUT();332      mocks.helpers.verify();333    });334    it('get all 3rd party packages', async function () {335      driver.adb = new ADB();336      sandbox.stub(driver.adb, 'shell')337        .returns('package:app.bundle.id1\npackage:io.appium.settings\npackage:io.appium.uiautomator2.server\npackage:io.appium.uiautomator2.server.test\n');338      (await helpers.getThirdPartyPackages(driver.adb, [SETTINGS_HELPER_PKG_ID]))339        .should.eql(['app.bundle.id1', 'io.appium.uiautomator2.server', 'io.appium.uiautomator2.server.test']);340    });341    it('get all 3rd party packages with multiple package filter', async function () {342      driver.adb = new ADB();343      sandbox.stub(driver.adb, 'shell')344        .returns('package:app.bundle.id1\npackage:io.appium.settings\npackage:io.appium.uiautomator2.server\npackage:io.appium.uiautomator2.server.test\n');345      (await helpers.getThirdPartyPackages(driver.adb, [SETTINGS_HELPER_PKG_ID, 'io.appium.uiautomator2.server']))...

Full Screen

Full Screen

driver.js

Source:driver.js Github

copy

Full Screen

...134    await helpers.initDevice(this.adb, this.opts);135    // Further prepare the device by forwarding the Selendroid port136    await this.adb.forwardPort(this.opts.systemPort, DEVICE_PORT);137    // prepare our actual AUT, get it on the device, etc...138    await this.initAUT();139    // unlock the device to prepare it for testing140    await helpers.unlock(this, this.adb, this.caps);141    // launch selendroid and wait till its online and we have a session142    await this.selendroid.startSession(this.caps);143    // rescue selendroid if it fails to start our AUT144    await this.ensureAppStarts();145    // if we want to immediately get into a webview, set our context146    // appropriately147    if (this.opts.autoWebview) {148      await retryInterval(20, this.opts.autoWebviewTimeout || 2000, async () => {149        await this.setContext(this.defaultWebviewName());150      });151    }152    // now that everything has started successfully, turn on proxying so all...

Full Screen

Full Screen

general.js

Source:general.js Github

copy

Full Screen

...153  await this.bootstrap.sendAction('updateStrings');154  return this.apkStrings[language];155};156commands.launchApp = async function () {157  await this.initAUT();158  await this.startAUT();159};160commands.startActivity = async function (appPackage, appActivity,161                                         appWaitPackage, appWaitActivity,162                                         intentAction, intentCategory,163                                         intentFlags, optionalIntentArguments,164                                         dontStopAppOnReset) {165  log.debug(`Starting package '${appPackage}' and activity '${appActivity}'`);166  // dontStopAppOnReset is both an argument here, and a desired capability167  // if the argument is set, use it, otherwise use the cap168  if (!util.hasValue(dontStopAppOnReset)) {169    dontStopAppOnReset = !!this.opts.dontStopAppOnReset;170  }171  let args = {...

Full Screen

Full Screen

general-specs.js

Source:general-specs.js Github

copy

Full Screen

1import chai from 'chai';2import chaiAsPromised from 'chai-as-promised';3import sinon from 'sinon';4import EspressoDriver from '../../../lib/driver';5chai.should();6chai.use(chaiAsPromised);7let sandbox = sinon.createSandbox();8describe('commands', function () {9  describe('general', function () {10    let driver;11    describe('settings', function () {12      beforeEach(function () {13        driver = new EspressoDriver({}, false);14        driver.caps = { appPackage: 'io.appium.package', appActivity: '.MainActivity'};15        driver.opts = { autoLaunch: false, skipUnlock: true };16        sandbox.stub(driver, 'initEspressoServer');17        sandbox.stub(driver, 'initAUT');18        sandbox.stub(driver, 'startEspressoSession');19      });20      it('update settings', async function () {21        await driver.createSession({platformName: 'Android', deviceName: 'device', appPackage: driver.caps.appPackage});22        await driver.updateSettings().should.be.rejectedWith('Method has not yet been implemented');23      });24      it('get settings', async function () {25        await driver.createSession({platformName: 'Android', deviceName: 'device', appPackage: driver.caps.appPackage});26        await driver.getSettings().should.be.rejectedWith('Method has not yet been implemented');27      });28    });29  });...

Full Screen

Full Screen

Using AI Code Generation

copy

Full Screen

1var webdriver = require('selenium-webdriver');2var driver = new webdriver.Builder()3    .withCapabilities(webdriver.Capabilities.android())4    .build();5driver.initAUT("com.example.android.apis", "com.example.android.apis.ApiDemos");6driver.quit();7var webdriver = require('selenium-webdriver');8var driver = new webdriver.Builder()9    .withCapabilities(webdriver.Capabilities.android())10    .build();11driver.initAUT("com.example.android.apis", "com.example.android.apis.ApiDemos");12driver.quit();13var webdriver = require('selenium-webdriver');14var driver = new webdriver.Builder()15    .withCapabilities(webdriver.Capabilities.android())16    .build();17driver.initAUT("com.example.android.apis", "com.example.android.apis.ApiDemos");18driver.quit();19var webdriver = require('selenium-webdriver');20var driver = new webdriver.Builder()21    .withCapabilities(webdriver.Capabilities.android())22    .build();23driver.initAUT("com.example.android.apis", "com.example.android.apis.ApiDemos");24driver.quit();25var webdriver = require('selenium-webdriver');26var driver = new webdriver.Builder()27    .withCapabilities(webdriver.Capabilities.android())28    .build();29driver.initAUT("com.example.android.apis", "com.example.android.apis.ApiDemos");30driver.quit();31var webdriver = require('selenium-webdriver');32var driver = new webdriver.Builder()33    .withCapabilities(webdriver.Capabilities.android())34    .build();35driver.initAUT("com.example

Full Screen

Using AI Code Generation

copy

Full Screen

1var webdriver = require('selenium-webdriver');2var driver = new webdriver.Builder().forBrowser('chrome').build();3driver.findElement(webdriver.By.name('q')).sendKeys('webdriver');4driver.findElement(webdriver.By.name('btnG')).click();5driver.wait(function() {6  return driver.getTitle().then(function(title) {7    return title === 'webdriver - Google Search';8  });9}, 1000);10driver.quit();

Full Screen

Using AI Code Generation

copy

Full Screen

1var wd = require('wd');2var assert = require('assert');3var androidDriver = wd.remote('localhost', 4723);4var desiredCaps = {5};6var desiredCaps2 = {7};8androidDriver.init(desiredCaps, function() {9    androidDriver.initAUT(desiredCaps2, function() {10        androidDriver.quit();11    });12});

Full Screen

Using AI Code Generation

copy

Full Screen

1var driver = new AndroidDriver();2driver.initAUT("com.myapp", "com.myapp.MainActivity");3var driver = new IOSDriver();4driver.initAUT("com.myapp", "com.myapp.MainActivity");5var driver = new WindowsDriver();6driver.initAUT("com.myapp", "com.myapp.MainActivity");7var driver = new MacDriver();8driver.initAUT("com.myapp", "com.myapp.MainActivity");9var driver = new SelendroidDriver();10driver.initAUT("com.myapp", "com.myapp.MainActivity");11var driver = new FirefoxOSDriver();12driver.initAUT("com.myapp", "com.myapp.MainActivity");13var driver = new ChromeDriver();14driver.initAUT("com.myapp", "com.myapp.MainActivity");15var driver = new OperaDriver();16driver.initAUT("com.myapp", "com.myapp.MainActivity");17var driver = new SafariDriver();18driver.initAUT("com.myapp", "com.myapp.MainActivity");19var driver = new InternetExplorerDriver();20driver.initAUT("com.myapp", "com.myapp.MainActivity");21var driver = new PhantomJSDriver();22driver.initAUT("com.myapp", "com.myapp.MainActivity");23var driver = new HTMLUnitDriver();24driver.initAUT("com.myapp", "com.myapp.MainActivity");25var driver = new SelendroidDriver();26driver.initAUT("com.myapp", "com.myapp.MainActivity");27var driver = new UIA2Driver();28driver.initAUT("com.myapp", "com.myapp.MainActivity");

Full Screen

Using AI Code Generation

copy

Full Screen

1var wd = require('wd');2var serverConfig = {3};4var driver = wd.promiseChainRemote(serverConfig);5driver.initAUT({6}).then(function () {7    console.log('AUT launched');8}).fin(function () {9    driver.quit();10});11{12  "scripts": {13  },14  "repository": {

Full Screen

Using AI Code Generation

copy

Full Screen

1driver.initAUT('com.android.contacts', 'com.android.contacts.DialtactsActivity');2driver.quit();3driver.initAUT('com.android.contacts', 'com.android.contacts.DialtactsActivity');4driver.quit();5driver.initAUT('com.android.contacts', 'com.android.contacts.DialtactsActivity');6driver.quit();7driver.initAUT('com.android.contacts', 'com.android.contacts.DialtactsActivity');8driver.quit();9driver.initAUT('com.android.contacts', 'com.android.contacts.DialtactsActivity');10driver.quit();11driver.initAUT('com.android.contacts', 'com.android.contacts.DialtactsActivity');12driver.quit();13driver.initAUT('com.android.contacts', 'com.android.contacts.DialtactsActivity');14driver.quit();15driver.initAUT('com.android.contacts', 'com.android.contacts.DialtactsActivity');16driver.quit();17driver.initAUT('com.android.contacts', 'com.android.contacts.DialtactsActivity');18driver.quit();19driver.initAUT('com.android.contacts', 'com.android.contacts.DialtactsActivity');20driver.quit();21driver.initAUT('com.android.contacts', 'com.android.contacts.DialtactsActivity');22driver.quit();23driver.initAUT('com.android.contacts', 'com.android.contacts.DialtactsActivity');24driver.quit();

Full Screen

Automation Testing Tutorials

Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Run Appium Android Driver automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful