Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
CIRCLE
/
cloud
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
94
Merge Requests
10
Pipelines
Wiki
Snippets
Members
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
2195d4c8
authored
Apr 05, 2015
by
Csók Tamás
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
selenium: screenshots upon test breaking exceptions
parent
2d5d6d20
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
32 additions
and
3 deletions
+32
-3
circle/dashboard/tests/selenium/util.py
+32
-3
No files found.
circle/dashboard/tests/selenium/util.py
View file @
2195d4c8
...
...
@@ -17,6 +17,7 @@
# You should have received a copy of the GNU General Public License along
# with CIRCLE. If not, see <http://www.gnu.org/licenses/>.
from
datetime
import
datetime
import
inspect
import
logging
import
random
import
re
...
...
@@ -37,6 +38,12 @@ logger = logging.getLogger(SeleniumConfig.logger_name)
class
SeleniumMixin
(
object
):
def
create_screenshot
(
self
):
name
=
'ss_from_
%(caller_name)
s.png'
%
{
'caller_name'
:
inspect
.
stack
()[
1
][
3
]}
logger
.
warning
(
'Creating screenshot "
%
s"'
%
name
)
self
.
driver
.
save_screenshot
(
name
)
def
get_url
(
self
,
fragment_needed
=
False
,
fragment
=
None
):
url_base
=
urlparse
.
urlparse
(
self
.
driver
.
current_url
)
url_save
=
(
"
%(host)
s
%(url)
s"
%
{
...
...
@@ -64,6 +71,7 @@ class SeleniumMixin(object):
except
:
logger
.
exception
(
"Selenium cannot list the"
" select possibilities"
)
self
.
create_screenshot
()
raise
Exception
(
'Cannot list the select possibilities'
)
...
...
@@ -96,6 +104,7 @@ class SeleniumMixin(object):
select
.
select_by_value
(
my_choice
)
except
:
logger
.
exception
(
"Selenium cannot select the chosen one"
)
self
.
create_screenshot
()
raise
Exception
(
'Cannot select the chosen one'
)
...
...
@@ -118,6 +127,7 @@ class SeleniumMixin(object):
except
:
logger
.
exception
(
"Selenium cannot find the href=
%
s link"
%
target_href
)
self
.
create_screenshot
()
raise
Exception
(
'Cannot find the requested href'
)
def
click_on_link
(
self
,
link
):
...
...
@@ -145,6 +155,7 @@ class SeleniumMixin(object):
self
.
driver
.
execute_script
(
javascript
,
link
)
except
:
logger
.
exception
(
"Selenium cannot inject javascript to the page"
)
self
.
create_screenshot
()
raise
Exception
(
'Cannot inject javascript to the page'
)
...
...
@@ -214,6 +225,7 @@ class CircleSeleniumMixin(SeleniumMixin):
time
.
sleep
(
0.5
)
except
:
logger
.
exception
(
"Selenium cannot find the form controls"
)
self
.
create_screenshot
()
raise
Exception
(
'Cannot find the form controls'
)
def
fallback
(
self
,
fallback_url
,
fallback_function
):
...
...
@@ -256,6 +268,10 @@ class CircleSeleniumMixin(SeleniumMixin):
self
.
fallback
(
fallback_url
,
lambda
:
self
.
wait_and_accept_operation
(
argument
))
else
:
self
.
create_screenshot
()
raise
Exception
(
'Cannot accept the operation confirmation'
)
except
:
logger
.
exception
(
"Selenium cannot accept the"
" operation confirmation"
)
...
...
@@ -264,7 +280,7 @@ class CircleSeleniumMixin(SeleniumMixin):
fallback_url
,
lambda
:
self
.
wait_and_accept_operation
(
argument
,
try_wait
))
else
:
self
.
driver
.
save_screenshot
(
'error_at_try_wait.png'
)
self
.
create_screenshot
(
)
raise
Exception
(
'Cannot accept the operation confirmation'
)
...
...
@@ -322,6 +338,7 @@ class CircleSeleniumMixin(SeleniumMixin):
return
name
except
:
logger
.
exception
(
"Selenium cannot save a vm as a template"
)
self
.
create_screenshot
()
raise
Exception
(
'Cannot save a vm as a template'
)
...
...
@@ -344,6 +361,7 @@ class CircleSeleniumMixin(SeleniumMixin):
By
.
ID
,
'id_name'
)))
template_name
.
clear
()
template_name
.
send_keys
(
name
)
self
.
select_option
(
self
.
driver
.
find_element_by_id
(
"id_arch"
),
architecture
)
self
.
select_option
(
self
.
driver
.
find_element_by_id
(
...
...
@@ -361,6 +379,7 @@ class CircleSeleniumMixin(SeleniumMixin):
except
:
logger
.
exception
(
"Selenium cannot create a base"
" template virtual machine"
)
self
.
create_screenshot
()
raise
Exception
(
'Cannot create a base template virtual machine'
)
...
...
@@ -427,6 +446,7 @@ class CircleSeleniumMixin(SeleniumMixin):
return
found_template_ids
except
:
logger
.
exception
(
'Selenium cannot find the template
\'
s id'
)
self
.
create_screenshot
()
raise
Exception
(
'Cannot find the template
\'
s id'
)
...
...
@@ -478,6 +498,7 @@ class CircleSeleniumMixin(SeleniumMixin):
except
:
logger
.
exception
(
"Selenium cannot check the"
" result of an operation"
)
self
.
create_screenshot
()
raise
Exception
(
'Cannot check the result of an operation'
)
...
...
@@ -510,6 +531,7 @@ class CircleSeleniumMixin(SeleniumMixin):
except
:
logger
.
exception
(
"Selenium cannot filter timeline "
"activities to find most recent"
)
self
.
create_screenshot
()
raise
Exception
(
'Cannot filter timeline activities to find most recent'
)
...
...
@@ -554,17 +576,20 @@ class CircleSeleniumMixin(SeleniumMixin):
fallback_url
,
lambda
:
self
.
get_timeline_elements
(
code
))
else
:
self
.
driver
.
save_screenshot
(
'lost-timeline.png'
)
self
.
create_screenshot
(
)
raise
Exception
(
'Selenium could not locate the timeline'
)
except
:
logger
.
exception
(
'Selenium cannot get timeline elemets'
)
self
.
create_screenshot
()
raise
Exception
(
'Cannot get timeline elements'
)
if
len
(
activity_dict
)
==
0
:
logger
.
warning
(
'Found activity list is empty'
)
self
.
create_screenshot
()
raise
Exception
(
'Selenium did not found any activity'
)
return
activity_dict
except
:
logger
.
exception
(
'Selenium cannot find the searched activity'
)
self
.
create_screenshot
()
raise
Exception
(
'Cannot find the searched activity'
)
def
create_template_from_base
(
self
,
delete_disk
=
True
,
name
=
None
):
...
...
@@ -608,6 +633,7 @@ class CircleSeleniumMixin(SeleniumMixin):
except
:
logger
.
exception
(
"Selenium cannot start a"
" template from a base one"
)
self
.
create_screenshot
()
raise
Exception
(
'Cannot start a template from a base one'
)
...
...
@@ -634,6 +660,7 @@ class CircleSeleniumMixin(SeleniumMixin):
'pk'
:
template_id
})
except
:
logger
.
exception
(
"Selenium cannot delete the desired template"
)
self
.
create_screenshot
()
raise
Exception
(
'Cannot delete the desired template'
)
def
create_random_vm
(
self
):
...
...
@@ -663,6 +690,7 @@ class CircleSeleniumMixin(SeleniumMixin):
return
pk
except
:
logger
.
exception
(
"Selenium cannot start a VM"
)
self
.
create_screenshot
()
raise
Exception
(
'Cannot start a VM'
)
def
view_change
(
self
,
target_box
):
...
...
@@ -729,4 +757,5 @@ class CircleSeleniumMixin(SeleniumMixin):
return
False
except
:
logger
.
exception
(
"Selenium can not destroy a VM"
)
raise
Exception
(
"Can not destroy a VM"
)
self
.
create_screenshot
()
raise
Exception
(
"Cannot destroy a VM"
)
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment