Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
gitlab-ce
Commits
67c572ba
Commit
67c572ba
authored
Nov 17, 2017
by
Grzegorz Bizon
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
WIP Handle domain sessions better in QA test scenario
Conflicts: qa/qa/page/base.rb qa/qa/page/main/entry.rb
parent
bbcaf4ae
Changes
8
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
61 additions
and
49 deletions
+61
-49
qa/qa.rb
qa/qa.rb
+1
-0
qa/qa/page/base.rb
qa/qa/page/base.rb
+14
-0
qa/qa/page/main/entry.rb
qa/qa/page/main/entry.rb
+2
-15
qa/qa/runtime/browser.rb
qa/qa/runtime/browser.rb
+33
-26
qa/qa/scenario/entrypoint.rb
qa/qa/scenario/entrypoint.rb
+0
-1
qa/qa/specs/features/login/standard_spec.rb
qa/qa/specs/features/login/standard_spec.rb
+1
-1
qa/qa/specs/features/mattermost/login_spec.rb
qa/qa/specs/features/mattermost/login_spec.rb
+9
-5
qa/qa/specs/runner.rb
qa/qa/specs/runner.rb
+1
-1
No files found.
qa/qa.rb
View file @
67c572ba
...
...
@@ -9,6 +9,7 @@ module QA
autoload
:User
,
'qa/runtime/user'
autoload
:Namespace
,
'qa/runtime/namespace'
autoload
:Scenario
,
'qa/runtime/scenario'
autoload
:Browser
,
'qa/runtime/browser'
end
##
...
...
qa/qa/page/base.rb
View file @
67c572ba
...
...
@@ -24,6 +24,20 @@ module QA
page
.
within
(
selector
)
{
yield
}
if
block_given?
end
def
wait
(
css
=
'.application'
,
time:
60
)
# This resolves cold boot / background tasks problems
#
Time
.
now
.
tap
do
|
start
|
while
Time
.
now
-
start
<
time
break
if
page
.
has_css?
(
css
,
wait:
5
)
puts
"Waiting for `
#{
css
}
on `
#{
current_url
}
`"
refresh
end
end
yield
if
block_given?
end
end
end
end
qa/qa/page/main/entry.rb
View file @
67c572ba
...
...
@@ -3,21 +3,8 @@ module QA
module
Main
class
Entry
<
Page
::
Base
def
visit_login_page
wait
(
time:
500
)
do
visit
(
"
#{
Runtime
::
Scenario
.
gitlab_address
}
/users/sign_in"
)
wait_for_instance_to_be_ready
end
private
def
wait_for_instance_to_be_ready
# This resolves cold boot / background tasks problems
#
start
=
Time
.
now
while
Time
.
now
-
start
<
1000
break
if
page
.
has_css?
(
'.application'
,
wait:
10
)
refresh
end
end
end
...
...
qa/qa/
specs/config
.rb
→
qa/qa/
runtime/browser
.rb
View file @
67c572ba
...
...
@@ -3,37 +3,45 @@ require 'capybara/rspec'
require
'capybara-screenshot/rspec'
require
'selenium-webdriver'
# rubocop:disable Metrics/MethodLength
# rubocop:disable Metrics/LineLength
module
QA
module
Specs
class
Config
<
Scenario
::
Template
include
Scenario
::
Actable
module
Runtime
module
Browser
extend
self
def
perform
configure_rspec!
configure_capybara!
end
def
session
(
address
,
&
block
)
configure!
page
.
visit
(
address
)
block
.
call
(
page
)
def
configure_rspec!
RSpec
.
configure
do
|
config
|
config
.
expect_with
:rspec
do
|
expectations
|
expectations
.
include_chain_clauses_in_custom_matcher_descriptions
=
true
page
.
visit
(
address
)
reset_domain_session!
rescue
# RSpec examples will take care of screenshots on their own
#
unless
block
.
binding
.
receiver
.
class
<
RSpec
::
Core
::
ExampleGroup
Capybara
::
Screenshot
.
screenshot_and_save_page
end
config
.
mock_with
:rspec
do
|
mocks
|
mocks
.
verify_partial_doubles
=
true
raise
end
config
.
order
=
:random
Kernel
.
srand
config
.
seed
config
.
formatter
=
:documentation
config
.
color
=
true
def
page
Capybara
.
current_session
end
def
reset_domain_session
(
address
)
##
# Selenium allows to reset session cookies for current domain only.
#
# See gitlab-org/gitlab-qa#102
#
Capybar
.
reset_session!
end
def
configure_capybara!
def
configure!
return
if
Capybara
.
drivers
.
include?
(
:chrome
)
Capybara
.
register_driver
:chrome
do
|
app
|
capabilities
=
Selenium
::
WebDriver
::
Remote
::
Capabilities
.
chrome
(
'chromeOptions'
=>
{
...
...
@@ -52,8 +60,7 @@ module QA
Capybara
.
configure
do
|
config
|
config
.
default_driver
=
:chrome
config
.
javascript_driver
=
:chrome
config
.
default_max_wait_time
=
10
config
.
default_max_wait_time
=
4
# https://github.com/mattheworiordan/capybara-screenshot/issues/164
config
.
save_path
=
'tmp'
end
...
...
qa/qa/scenario/entrypoint.rb
View file @
67c572ba
...
...
@@ -8,7 +8,6 @@ module QA
include
Bootable
def
perform
(
address
,
*
files
)
Specs
::
Config
.
act
{
configure_capybara!
}
Runtime
::
Scenario
.
define
(
:gitlab_address
,
address
)
##
...
...
qa/qa/specs/features/login/standard_spec.rb
View file @
67c572ba
module
QA
feature
'standard
root
login'
,
:core
do
feature
'standard
user
login'
,
:core
do
scenario
'user logs in using credentials'
do
Page
::
Main
::
Entry
.
act
{
visit_login_page
}
Page
::
Main
::
Login
.
act
{
sign_in_using_credentials
}
...
...
qa/qa/specs/features/mattermost/login_spec.rb
View file @
67c572ba
module
QA
feature
'logging in to Mattermost'
,
:mattermost
do
scenario
'can use gitlab oauth'
do
Page
::
Main
::
Entry
.
act
{
visit_login_page
}
Runtime
::
Browser
.
session
(
Page
::
Gitlab
::
Login
)
do
Page
::
Main
::
Login
.
act
{
sign_in_using_credentials
}
Runtime
::
Browser
.
session
(
Page
::
Mattermost
::
Login
)
do
Page
::
Mattermost
::
Login
.
act
{
sign_in_using_oauth
}
Page
::
Mattermost
::
Main
.
perform
do
|
page
|
expect
(
page
).
to
have_content
(
/(Welcome to: Mattermost|Logout GitLab Mattermost)/
)
end
end
end
end
##
# TODO, temporary workaround for gitlab-org/gitlab-qa#102.
...
...
qa/qa/specs/runner.rb
View file @
67c572ba
...
...
@@ -17,7 +17,7 @@ module QA
tags
.
to_a
.
each
{
|
tag
|
args
.
push
([
'-t'
,
tag
.
to_s
])
}
args
.
push
(
files
)
Specs
::
Config
.
perform
Runtime
::
Browser
.
configure!
RSpec
::
Core
::
Runner
.
run
(
args
.
flatten
,
$stderr
,
$stdout
).
tap
do
|
status
|
abort
if
status
.
nonzero?
...
...
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