mediawiki-selenium 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/mediawiki/selenium.rb +1 -6
- data/lib/mediawiki/selenium/env.rb +118 -0
- data/lib/mediawiki/selenium/version.rb +1 -1
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a8633080c719e8dc425fb90926d0019396ab9b57
|
4
|
+
data.tar.gz: d72ee97d4b6ae0c0e1b348ce0565ea43d2962fd6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c7d7162a255a83c3735a1214c82283aa7b270053bc40ab2bcf7eb0757f6c31ce68649bd92e39707938d83c552e8940f8d891dee1071e24e8712b2dc579411060
|
7
|
+
data.tar.gz: f0c4fffa439ddd5a4e6c629123c96059420af19456780394f70300858b0566b43246cce4d0f9c9c0aafc145dbdd62edc84d6bd9073d791dc3f61e16a81c5a3e1
|
data/lib/mediawiki/selenium.rb
CHANGED
@@ -0,0 +1,118 @@
|
|
1
|
+
# before all
|
2
|
+
require 'bundler/setup'
|
3
|
+
require 'page-object'
|
4
|
+
require 'page-object/page_factory'
|
5
|
+
require 'watir-webdriver'
|
6
|
+
require 'yaml'
|
7
|
+
|
8
|
+
World(PageObject::PageFactory)
|
9
|
+
|
10
|
+
def browser(environment, test_name, language)
|
11
|
+
if environment == :saucelabs
|
12
|
+
sauce_browser(test_name, language)
|
13
|
+
else
|
14
|
+
local_browser(language)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
def environment
|
18
|
+
if ENV['BROWSER_LABEL'] and ENV['SAUCE_ONDEMAND_USERNAME'] and ENV['SAUCE_ONDEMAND_ACCESS_KEY']
|
19
|
+
:saucelabs
|
20
|
+
else
|
21
|
+
:local
|
22
|
+
end
|
23
|
+
end
|
24
|
+
def local_browser(language)
|
25
|
+
if ENV['BROWSER_LABEL']
|
26
|
+
browser_label = ENV['BROWSER_LABEL'].to_sym
|
27
|
+
else
|
28
|
+
browser_label = :firefox
|
29
|
+
end
|
30
|
+
|
31
|
+
if language == 'default'
|
32
|
+
Watir::Browser.new browser_label
|
33
|
+
else
|
34
|
+
if browser_label == :firefox
|
35
|
+
profile = Selenium::WebDriver::Firefox::Profile.new
|
36
|
+
elsif browser_label == :chrome
|
37
|
+
profile = Selenium::WebDriver::Chrome::Profile.new
|
38
|
+
else
|
39
|
+
raise "Changing default language is currently supported only for Firefox and Chrome!"
|
40
|
+
end
|
41
|
+
profile['intl.accept_languages'] = language
|
42
|
+
Watir::Browser.new browser_label, :profile => profile
|
43
|
+
end
|
44
|
+
end
|
45
|
+
def sauce_api(json)
|
46
|
+
%x{curl -H 'Content-Type:text/json' -s -X PUT -d '#{json}' http://#{ENV['SAUCE_ONDEMAND_USERNAME']}:#{ENV['SAUCE_ONDEMAND_ACCESS_KEY']}@saucelabs.com/rest/v1/#{ENV['SAUCE_ONDEMAND_USERNAME']}/jobs/#{$session_id}}
|
47
|
+
end
|
48
|
+
def sauce_browser(test_name, language)
|
49
|
+
config = YAML.load_file('config/config.yml')
|
50
|
+
browser_label = config[ENV['BROWSER_LABEL']]
|
51
|
+
|
52
|
+
if language == 'default'
|
53
|
+
caps = Selenium::WebDriver::Remote::Capabilities.send(browser_label['name'])
|
54
|
+
elsif browser_label['name'] == 'firefox'
|
55
|
+
profile = Selenium::WebDriver::Firefox::Profile.new
|
56
|
+
profile['intl.accept_languages'] = language
|
57
|
+
caps = Selenium::WebDriver::Remote::Capabilities.firefox(:firefox_profile => profile)
|
58
|
+
elsif browser_label['name'] == 'chrome'
|
59
|
+
profile = Selenium::WebDriver::Chrome::Profile.new
|
60
|
+
profile['intl.accept_languages'] = language
|
61
|
+
caps = Selenium::WebDriver::Remote::Capabilities.chrome('chrome.profile' => profile.as_json['zip'])
|
62
|
+
end
|
63
|
+
|
64
|
+
caps.platform = browser_label['platform']
|
65
|
+
caps.version = browser_label['version']
|
66
|
+
caps[:name] = "#{test_name} #{ENV['JOB_NAME']}##{ENV['BUILD_NUMBER']}"
|
67
|
+
|
68
|
+
require 'selenium/webdriver/remote/http/persistent' # http_client
|
69
|
+
browser = Watir::Browser.new(
|
70
|
+
:remote,
|
71
|
+
http_client: Selenium::WebDriver::Remote::Http::Persistent.new,
|
72
|
+
url: "http://#{ENV['SAUCE_ONDEMAND_USERNAME']}:#{ENV['SAUCE_ONDEMAND_ACCESS_KEY']}@ondemand.saucelabs.com:80/wd/hub",
|
73
|
+
desired_capabilities: caps)
|
74
|
+
|
75
|
+
browser.wd.file_detector = lambda do |args|
|
76
|
+
# args => ['/path/to/file']
|
77
|
+
str = args.first.to_s
|
78
|
+
str if File.exist?(str)
|
79
|
+
end
|
80
|
+
|
81
|
+
browser
|
82
|
+
end
|
83
|
+
|
84
|
+
def test_name(scenario)
|
85
|
+
if scenario.respond_to? :feature
|
86
|
+
"#{scenario.feature.name}: #{scenario.name}"
|
87
|
+
elsif scenario.respond_to? :scenario_outline
|
88
|
+
"#{scenario.scenario_outline.feature.name}: #{scenario.scenario_outline.name}: #{scenario.name}"
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
config = YAML.load_file('config/config.yml')
|
93
|
+
mediawiki_username = config['mediawiki_username']
|
94
|
+
|
95
|
+
Before('@login') do
|
96
|
+
puts "MEDIAWIKI_PASSWORD environment variable is not defined! Please export a value for that variable before proceeding." unless ENV['MEDIAWIKI_PASSWORD']
|
97
|
+
end
|
98
|
+
|
99
|
+
Before('@language') do |scenario|
|
100
|
+
@language = true
|
101
|
+
@scenario = scenario
|
102
|
+
end
|
103
|
+
|
104
|
+
Before do |scenario|
|
105
|
+
@config = config
|
106
|
+
@random_string = Random.new.rand.to_s
|
107
|
+
@mediawiki_username = mediawiki_username
|
108
|
+
@browser = browser(environment, test_name(scenario), 'default') unless @language
|
109
|
+
$session_id = @browser.driver.instance_variable_get(:@bridge).session_id
|
110
|
+
end
|
111
|
+
|
112
|
+
After do |scenario|
|
113
|
+
if environment == :saucelabs
|
114
|
+
sauce_api(%Q{{"passed": #{scenario.passed?}}})
|
115
|
+
sauce_api(%Q{{"public": true}})
|
116
|
+
end
|
117
|
+
@browser.close unless ENV['KEEP_BROWSER_OPEN'] == 'true'
|
118
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mediawiki-selenium
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Zeljko Filipin
|
@@ -54,6 +54,7 @@ files:
|
|
54
54
|
- README.md
|
55
55
|
- Rakefile
|
56
56
|
- lib/mediawiki/selenium.rb
|
57
|
+
- lib/mediawiki/selenium/env.rb
|
57
58
|
- lib/mediawiki/selenium/version.rb
|
58
59
|
- mediawiki-selenium.gemspec
|
59
60
|
homepage: https://github.com/zeljkofilipin/mediawiki-selenium
|