1116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch# -*- coding: utf-8 -*- 2cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)# Copyright 2014 The Chromium Authors. All rights reserved. 3cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)# Use of this source code is governed by a BSD-style license that can be 4cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)# found in the LICENSE file. 5cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 6cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)"""Automated tests for many websites""" 7cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 8cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)import argparse 9cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)import logging 10cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 11cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)from environment import Environment 12cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)from websitetest import WebsiteTest 13cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 14cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 15116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass TypeOfTestedWebsites: 16116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch """An enum to specify which groups of tests to run.""" 17116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch # Runs only the disabled tests. 18116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DISABLED_TESTS = 0 19116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch # Runs only the enabled tests. 20116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ENABLED_TESTS = 1 21116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch # Runs all the tests. 22116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ALL_TESTS = 2 23116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch # Runs a specified list of tests. 24116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch LIST_OF_TESTS = 3 25116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 26116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch def __init__(self): 27116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pass 28116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 29116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 30cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class Facebook(WebsiteTest): 31cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 32cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) def Login(self): 33cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.GoTo("https://www.facebook.com") 34cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.FillUsernameInto("[name='email']") 35cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.FillPasswordInto("[name='pass']") 36cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.Submit("[name='pass']") 37cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 38cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 39cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class Google(WebsiteTest): 40cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 41cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) def Login(self): 42cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.GoTo("https://accounts.google.com/ServiceLogin?sacu=1&continue=") 43cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.FillUsernameInto("#Email") 44cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.FillPasswordInto("#Passwd") 45cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.Submit("#Passwd") 46cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 47cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 48cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class Linkedin(WebsiteTest): 49cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 50cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) def Login(self): 51cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.GoTo("https://www.linkedin.com") 52cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.FillUsernameInto("#session_key-login") 53cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.FillPasswordInto("#session_password-login") 54cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.Submit("#session_password-login") 55cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 56cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 57cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class Mailru(WebsiteTest): 58cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 59cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) def Login(self): 60cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.GoTo("https://mail.ru") 61cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.FillUsernameInto("#mailbox__login") 62cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.FillPasswordInto("#mailbox__password") 63cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.Submit("#mailbox__password") 64cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 65cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 66cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class Nytimes(WebsiteTest): 67cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 68cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) def Login(self): 69cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.GoTo("https://myaccount.nytimes.com/auth/login") 70cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.FillUsernameInto("#userid") 71cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.FillPasswordInto("#password") 72cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.Submit("#password") 73cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 74cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 75cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class Pinterest(WebsiteTest): 76cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 77cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) def Login(self): 78cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.GoTo("https://www.pinterest.com/login/") 79cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.FillUsernameInto("[name='username_or_email']") 80cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.FillPasswordInto("[name='password']") 81cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.Submit("[name='password']") 82cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 83cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 84cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class Reddit(WebsiteTest): 85cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 86cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) def Login(self): 87cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.GoTo("http://www.reddit.com") 88cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.Click(".user .login-required") 89cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.FillUsernameInto("#user_login") 90cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.FillPasswordInto("#passwd_login") 91cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.Wait(2) 92cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.Submit("#passwd_login") 93cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 94cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 95cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class Tumblr(WebsiteTest): 96cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 97cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) def Login(self): 98cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.GoTo("https://www.tumblr.com/login") 99cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.FillUsernameInto("#signup_email") 100cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.FillPasswordInto("#signup_password") 101cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.Submit("#signup_password") 102cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 103cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 10403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)class Twitter(WebsiteTest): 10503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 10603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) def Login(self): 10703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) self.GoTo("https:///twitter.com") 10803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) self.FillUsernameInto("#signin-email") 10903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) self.FillPasswordInto("#signin-password") 11003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) self.Submit("#signin-password") 11103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 11203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 113cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class Wikipedia(WebsiteTest): 114cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 115cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) def Login(self): 116cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.GoTo("https://en.wikipedia.org/w/index.php?title=Special:UserLogin") 117cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.FillUsernameInto("#wpName1") 118cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.FillPasswordInto("#wpPassword1") 119cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.Submit("#wpPassword1") 120cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 121cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 12203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)class Yahoo(WebsiteTest): 12303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 12403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) def Login(self): 12503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) self.GoTo("https://login.yahoo.com") 12603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) self.FillUsernameInto("#username") 12703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) self.FillPasswordInto("#passwd") 12803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) self.Submit("#passwd") 12903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 13003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 131cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class Yandex(WebsiteTest): 132cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 133cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) def Login(self): 134cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.GoTo("https://mail.yandex.com") 135cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.FillUsernameInto("#b-mail-domik-username11") 136cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.FillPasswordInto("#b-mail-domik-password11") 137cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.Click(".b-mail-button__button") 138cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 139cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 140cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)# Disabled tests. 141cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 142cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 143cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)# Bug not reproducible without test. 144cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class Amazon(WebsiteTest): 145cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 146cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) def Login(self): 147cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.GoTo( 148cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) "https://www.amazon.com/ap/signin?openid.assoc_handle=usflex" 149cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) "&openid.mode=checkid_setup&openid.ns=http%3A%2F%2Fspecs.openid.net" 150cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) "%2Fauth%2F2.0") 151cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.FillUsernameInto("[name='email']") 152cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.FillPasswordInto("[name='password']") 15303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) self.Click("#signInSubmit-input") 154cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 155cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 156cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)# Password not saved. 157cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class Ask(WebsiteTest): 158cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 159cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) def Login(self): 160cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.GoTo("http://www.ask.com/answers/browse?qsrc=321&q=&o=0&l=dir#") 161cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) while not self.IsDisplayed("[name='username']"): 162cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.Click("#a16CnbSignInText") 163cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.Wait(1) 164cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.FillUsernameInto("[name='username']") 165cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.FillPasswordInto("[name='password']") 166cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.Click(".signin_show.signin_submit") 167cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 168cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 169cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)# Password not saved. 170cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class Baidu(WebsiteTest): 171cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 172cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) def Login(self): 17303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) self.GoTo("https://passport.baidu.com") 174cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.FillUsernameInto("[name='userName']") 175cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.FillPasswordInto("[name='password']") 176cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.Submit("[name='password']") 177cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 178cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 179cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)# http://crbug.com/368690 180cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class Cnn(WebsiteTest): 181cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 182cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) def Login(self): 183cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.GoTo("http://www.cnn.com") 184cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.Wait(5) 185cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) while not self.IsDisplayed(".cnnOvrlyBtn.cnnBtnLogIn"): 186cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.ClickIfClickable("#hdr-auth .no-border.no-pad-right a") 187cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.Wait(1) 188cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 189cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.Click(".cnnOvrlyBtn.cnnBtnLogIn") 190cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.FillUsernameInto("#cnnOverlayEmail1l") 191cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.FillPasswordInto("#cnnOverlayPwd") 192cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.Click(".cnnOvrlyBtn.cnnBtnLogIn") 193cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.Click(".cnnOvrlyBtn.cnnBtnLogIn") 194cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.Wait(5) 195cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 196cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 197cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)# http://crbug.com/368690 198cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class Ebay(WebsiteTest): 199cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 200cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) def Login(self): 201cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.GoTo("https://signin.ebay.com/") 202cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.FillUsernameInto("[name='userid']") 203cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.FillPasswordInto("[name='pass']") 204cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.Submit("[name='pass']") 205cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 206cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 207cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)# Iframe, password saved but not autofileld. 208cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class Espn(WebsiteTest): 209cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 210cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) def Login(self): 211cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.GoTo("http://espn.go.com/") 212cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) while not self.IsDisplayed("#cboxLoadedContent iframe"): 213cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.Click("#signin .cbOverlay") 214cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.Wait(1) 215cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) frame = self.driver.find_element_by_css_selector("#cboxLoadedContent " 216cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) "iframe") 217cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.driver.switch_to_frame(frame) 218cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.FillUsernameInto("#username") 219cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.FillPasswordInto("#password") 220cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) while self.IsDisplayed("#password"): 221cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.ClickIfClickable("#submitBtn") 222cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.Wait(1) 223cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 224cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 225cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)# http://crbug.com/367768 226cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class Live(WebsiteTest): 227cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 228cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) def Login(self): 22903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) self.GoTo("https://login.live.com") 230cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.FillUsernameInto("[name='login']") 231cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.FillPasswordInto("[name='passwd']") 232cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.Submit("[name='passwd']") 233cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 234cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 235cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)# http://crbug.com/368690 236cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class One63(WebsiteTest): 237cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 238cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) def Login(self): 239cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.GoTo("http://www.163.com") 240cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.HoverOver("#js_N_navHighlight") 241cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.FillUsernameInto("#js_loginframe_username") 242cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.FillPasswordInto(".ntes-loginframe-label-ipt[type='password']") 243cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.Click(".ntes-loginframe-btn") 244cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 245cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 246cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)# http://crbug.com/368690 247cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class Vube(WebsiteTest): 248cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 249cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) def Login(self): 250cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.GoTo("https://vube.com") 251cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.Click("[vube-login='']") 252cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.FillUsernameInto("[ng-model='login.user']") 253cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.FillPasswordInto("[ng-model='login.pass']") 254cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) while (self.IsDisplayed("[ng-model='login.pass']") 255cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) and not self.IsDisplayed(".prompt.alert")): 256cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.ClickIfClickable("[ng-click='login()']") 257cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) self.Wait(1) 258cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 259cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 260cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)def Tests(environment): 261cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 262cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 263cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) # Working tests. 264cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 265cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 266cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) environment.AddWebsiteTest(Facebook("facebook")) 267cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 268cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) environment.AddWebsiteTest(Google("google")) 269cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 270cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) environment.AddWebsiteTest(Linkedin("linkedin")) 271cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 272cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) environment.AddWebsiteTest(Mailru("mailru")) 273cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 274cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) environment.AddWebsiteTest(Nytimes("nytimes")) 275cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 276cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) environment.AddWebsiteTest(Pinterest("pinterest")) 277cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 278cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) environment.AddWebsiteTest(Reddit("reddit", username_not_auto=True)) 279cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 280cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) environment.AddWebsiteTest(Tumblr("tumblr", username_not_auto=True)) 281cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 28203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) environment.AddWebsiteTest(Twitter("twitter")) 28303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 284cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) environment.AddWebsiteTest(Wikipedia("wikipedia", username_not_auto=True)) 285cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 28603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) environment.AddWebsiteTest(Yahoo("yahoo", username_not_auto=True)) 287cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 28803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) environment.AddWebsiteTest(Yandex("yandex")) 289cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 290cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) # Disabled tests. 291cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 292cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 293cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) # Bug not reproducible without test. 294cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) environment.AddWebsiteTest(Amazon("amazon"), disabled=True) 295cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 296cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) # Password not saved. 297cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) environment.AddWebsiteTest(Ask("ask"), disabled=True) 298cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 299cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) # Password not saved. 300cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) environment.AddWebsiteTest(Baidu("baidu"), disabled=True) 301cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 302cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) # http://crbug.com/368690 303cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) environment.AddWebsiteTest(Cnn("cnn"), disabled=True) 304cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 305cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) # http://crbug.com/368690 306cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) environment.AddWebsiteTest(Ebay("ebay"), disabled=True) 307cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 308cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) # Iframe, password saved but not autofileld. 309cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) environment.AddWebsiteTest(Espn("espn"), disabled=True) 310cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 311cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) # http://crbug.com/367768 312cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) environment.AddWebsiteTest(Live("live", username_not_auto=True), 313cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) disabled=True) 314cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 315cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) # http://crbug.com/368690 316cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) environment.AddWebsiteTest(One63("163"), disabled=True) 317cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 318cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) # http://crbug.com/368690 319cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) environment.AddWebsiteTest(Vube("vube"), disabled=True) 320cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 321116680a4aac90f2aa7413d9095a592090648e557Ben Murdochdef saveResults(environment_tests_results, environment_save_path): 322116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch """Save the test results in an xml file. 323116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 324116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch Args: 325116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch environment_tests_results: A list of the TestResults that are going to be 326116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch saved. 327116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch environment_save_path: The file where the results are going to be saved. 328116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch If it's None, the results are not going to be stored. 329116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch Raises: 330116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch Exception: An exception is raised if the file is not found. 331116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch """ 332116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch if environment_save_path: 333116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch xml = "<result>" 334116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch for test_result in environment_tests_results: 335116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch xml += ("<test name='%s' successful='%s' type='%s'>%s</test>" 336116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch % (test_result.name, str(test_result.successful), 337116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch test_result.test_type, test_result.message)) 338116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch xml += "</result>" 339116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch with open(environment_save_path, "w") as save_file: 340116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch save_file.write(xml) 341cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 342cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)def RunTests(chrome_path, chromedriver_path, profile_path, 343cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) environment_passwords_path, enable_automatic_password_saving, 344cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) environment_numeric_level, log_to_console, environment_log_file, 345116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch environment_tested_websites, tests=None): 346cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 347cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) """Runs the the tests 348cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 349cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) Args: 350cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) chrome_path: The chrome binary file. 351cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) chromedriver_path: The chromedriver binary file. 352cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) profile_path: The chrome testing profile folder. 353cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) environment_passwords_path: The usernames and passwords file. 354cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) enable_automatic_password_saving: If True, the passwords are going to be 355cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) saved without showing the prompt. 356cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) environment_numeric_level: The log verbosity. 357cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) log_to_console: If True, the debug logs will be shown on the console. 358cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) environment_log_file: The file where to store the log. If it's empty, the 359cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) log is not stored. 360116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch environment_tested_websites: One of the TypeOfTestedWebsites values, 361116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch indicating which group of tests to run. 362116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch tests: Specifies which tests to run. Ignored unless 363116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch |environment_tested_websites| is equal to LIST_OF_TESTS. 364cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 365116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch Returns: 366116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch The results of tests as list of TestResults. 367cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) Raises: 368116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch Exception: An exception is raised if one of the tests fails. 369cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) """ 370cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 371cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) environment = Environment(chrome_path, chromedriver_path, profile_path, 372cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) environment_passwords_path, 373cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) enable_automatic_password_saving, 374cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) environment_numeric_level, 375cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) log_to_console, 376cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) environment_log_file) 377cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 378cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) # Test which care about the save-password prompt need the prompt 379cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) # to be shown. Automatic password saving results in no prompt. 380cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) run_prompt_tests = not enable_automatic_password_saving 381cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 382cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) Tests(environment) 383cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 384116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch if environment_tested_websites == TypeOfTestedWebsites.ALL_TESTS: 385cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) environment.AllTests(run_prompt_tests) 386116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch elif environment_tested_websites == TypeOfTestedWebsites.DISABLED_TESTS: 387116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch environment.DisabledTests(run_prompt_tests) 388116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch elif environment_tested_websites == TypeOfTestedWebsites.LIST_OF_TESTS: 389cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) environment.Test(tests, run_prompt_tests) 390116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch elif environment_tested_websites == TypeOfTestedWebsites.ENABLED_TESTS: 391cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) environment.WorkingTests(run_prompt_tests) 392116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch else: 393116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch raise Exception("Error: |environment_tested_websites| has to be one of the" 394116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "TypeOfTestedWebsites values") 395cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 396cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 397116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch environment.Quit() 398116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch return environment.tests_results 399cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 400cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)# Tests setup. 401cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)if __name__ == "__main__": 402cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) parser = argparse.ArgumentParser( 403cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) description="Password Manager automated tests help.") 404cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 405cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) parser.add_argument( 406cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) "--chrome-path", action="store", dest="chrome_path", 407cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) help="Set the chrome path (required).", nargs=1, required=True) 408cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) parser.add_argument( 409cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) "--chromedriver-path", action="store", dest="chromedriver_path", 410cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) help="Set the chromedriver path (required).", nargs=1, required=True) 411cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) parser.add_argument( 412cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) "--profile-path", action="store", dest="profile_path", 413cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) help="Set the profile path (required). You just need to choose a " 414cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) "temporary empty folder. If the folder is not empty all its content " 415cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) "is going to be removed.", 416cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) nargs=1, required=True) 417cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 418cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) parser.add_argument( 419cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) "--passwords-path", action="store", dest="passwords_path", 420cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) help="Set the usernames/passwords path (required).", nargs=1, 421cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) required=True) 422cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) parser.add_argument("--all", action="store_true", dest="all", 423cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) help="Run all tests.") 424116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch parser.add_argument("--disabled", action="store_true", dest="disabled", 425116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch help="Run only disabled tests.") 426cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) parser.add_argument("--log", action="store", nargs=1, dest="log_level", 427cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) help="Set log level.") 428cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) parser.add_argument("--log-screen", action="store_true", dest="log_screen", 429cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) help="Show log on the screen.") 430cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) parser.add_argument("--log-file", action="store", dest="log_file", 431cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) help="Write the log in a file.", nargs=1) 432116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch parser.add_argument("--save-path", action="store", nargs=1, dest="save_path", 433116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch help="Write the results in a file.") 434cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) parser.add_argument("tests", help="Tests to be run.", nargs="*") 435cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 436cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) args = parser.parse_args() 437cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 438cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) passwords_path = args.passwords_path[0] 439cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 440116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch if args.all: 441116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch tested_websites = TypeOfTestedWebsites.ALL_TESTS 442116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch elif args.disabled: 443116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch tested_websites = TypeOfTestedWebsites.DISABLED_TESTS 444116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch elif args.tests: 445116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch tested_websites = TypeOfTestedWebsites.LIST_OF_TESTS 446116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch else: 447116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch tested_websites = TypeOfTestedWebsites.ENABLED_TESTS 448116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 449cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) numeric_level = None 450cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) if args.log_level: 451cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) numeric_level = getattr(logging, args.log_level[0].upper(), None) 452cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) if not isinstance(numeric_level, int): 453cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) raise ValueError("Invalid log level: %s" % args.log_level[0]) 454cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 455cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) log_file = None 456cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) if args.log_file: 457cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) log_file = args.log_file[0] 458cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 459116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch save_path = None 460116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch if args.save_path: 461116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch save_path = args.save_path[0] 462116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 463cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) # Run the test without enable-automatic-password-saving to check whether or 464cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) # not the prompt is shown in the way we expected. 465116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch tests_results = RunTests(args.chrome_path[0], 466116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch args.chromedriver_path[0], 467116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch args.profile_path[0], 468116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch passwords_path, 469116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch False, 470116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch numeric_level, 471116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch args.log_screen, 472116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch log_file, 473116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch tested_websites, 474116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch args.tests) 475cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 476cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) # Run the test with enable-automatic-password-saving to check whether or not 477cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) # the passwords is stored in the the way we expected. 478116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch tests_results += RunTests(args.chrome_path[0], 479116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch args.chromedriver_path[0], 480116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch args.profile_path[0], 481116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch passwords_path, 482116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch True, 483116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch numeric_level, 484116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch args.log_screen, 485116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch log_file, 486116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch tested_websites, 487116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch args.tests) 488116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 489116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch saveResults(tests_results, save_path) 490