mediawiki_selenium 0.4.3 → 1.0.0.pre.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitreview +1 -1
- data/.rspec +1 -0
- data/.yardopts +1 -0
- data/Gemfile +1 -1
- data/README.md +108 -55
- data/bin/mediawiki-selenium-init +5 -0
- data/lib/mediawiki_selenium.rb +10 -19
- data/lib/mediawiki_selenium/browser_factory.rb +24 -0
- data/lib/mediawiki_selenium/browser_factory/base.rb +212 -0
- data/lib/mediawiki_selenium/browser_factory/chrome.rb +27 -0
- data/lib/mediawiki_selenium/browser_factory/firefox.rb +34 -0
- data/lib/mediawiki_selenium/browser_factory/phantomjs.rb +21 -0
- data/lib/mediawiki_selenium/configuration_error.rb +4 -0
- data/lib/mediawiki_selenium/environment.rb +494 -0
- data/lib/mediawiki_selenium/initializer.rb +19 -0
- data/lib/mediawiki_selenium/page_factory.rb +38 -0
- data/lib/mediawiki_selenium/remote_browser_factory.rb +87 -0
- data/lib/mediawiki_selenium/step_definitions.rb +5 -0
- data/lib/mediawiki_selenium/support.rb +3 -0
- data/lib/mediawiki_selenium/support/env.rb +3 -127
- data/lib/mediawiki_selenium/support/hooks.rb +23 -34
- data/lib/mediawiki_selenium/support/modules/api_helper.rb +44 -5
- data/lib/mediawiki_selenium/support/pages.rb +4 -0
- data/lib/mediawiki_selenium/support/pages/api_page.rb +1 -0
- data/lib/mediawiki_selenium/support/pages/login_page.rb +3 -12
- data/lib/mediawiki_selenium/support/pages/random_page.rb +2 -12
- data/lib/mediawiki_selenium/support/pages/reset_preferences_page.rb +3 -12
- data/lib/mediawiki_selenium/version.rb +1 -1
- data/mediawiki_selenium.gemspec +9 -3
- data/spec/api_helper_spec.rb +84 -0
- data/spec/browser_factory/base_spec.rb +211 -0
- data/spec/browser_factory/chrome_spec.rb +36 -0
- data/spec/browser_factory/firefox_spec.rb +60 -0
- data/spec/browser_factory/phantomjs_spec.rb +38 -0
- data/spec/environment_spec.rb +474 -0
- data/spec/page_factory_spec.rb +61 -0
- data/spec/remote_browser_factory_spec.rb +50 -0
- data/spec/spec_helper.rb +4 -0
- data/templates/tests/browser/environments.yml +35 -0
- data/templates/tests/browser/features/support/env.rb +6 -0
- metadata +122 -20
- data/lib/mediawiki_selenium/support/modules/sauce_helper.rb +0 -13
- data/lib/mediawiki_selenium/support/modules/url_module.rb +0 -21
- data/spec/README +0 -2
@@ -0,0 +1,61 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
module MediawikiSelenium
|
4
|
+
describe PageFactory do
|
5
|
+
let(:env) { Environment.new(config).extend(PageFactory) }
|
6
|
+
let(:config) { {} }
|
7
|
+
|
8
|
+
it "also includes page-object's factory" do
|
9
|
+
expect(env).to be_a(::PageObject::PageFactory)
|
10
|
+
end
|
11
|
+
|
12
|
+
describe "#on_page" do
|
13
|
+
subject { env.on_page(page_class, { using_params: {} }, visit) }
|
14
|
+
|
15
|
+
let(:browser) { double("Watir::Browser") }
|
16
|
+
|
17
|
+
context "when told to visit a page" do
|
18
|
+
let(:visit) { true }
|
19
|
+
let(:config) { { mediawiki_url: "http://an.example/wiki/" } }
|
20
|
+
|
21
|
+
let(:page_object_platform) { double("PageObject::WatirPageObject") }
|
22
|
+
|
23
|
+
before do
|
24
|
+
expect(env).to receive(:browser)
|
25
|
+
allow_any_instance_of(page_class).to receive(:initialize_browser)
|
26
|
+
end
|
27
|
+
|
28
|
+
context "where the page URL is defined" do
|
29
|
+
let(:page_class) do
|
30
|
+
Class.new do
|
31
|
+
include ::PageObject
|
32
|
+
page_url "Special:RandomPage"
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
it "qualifies the path with the configured :mediawiki_url" do
|
37
|
+
expect_any_instance_of(page_class).to receive(:platform).
|
38
|
+
and_return(page_object_platform)
|
39
|
+
|
40
|
+
expect(page_object_platform).to receive(:navigate_to).
|
41
|
+
with("http://an.example/wiki/Special:RandomPage")
|
42
|
+
|
43
|
+
subject
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
context "where the page URL is undefined" do
|
48
|
+
let(:page_class) do
|
49
|
+
Class.new do
|
50
|
+
include ::PageObject
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
it "never attempts to qualify one but still works" do
|
55
|
+
expect { subject }.not_to raise_error
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
require "mediawiki_selenium/browser_factory/base"
|
3
|
+
|
4
|
+
module MediawikiSelenium
|
5
|
+
describe RemoteBrowserFactory do
|
6
|
+
subject { factory }
|
7
|
+
|
8
|
+
let(:factory_class) { Class.new(BrowserFactory::Base) }
|
9
|
+
let(:factory) { factory_class.new(:foo).extend(RemoteBrowserFactory) }
|
10
|
+
|
11
|
+
it { is_expected.to be_a(RemoteBrowserFactory) }
|
12
|
+
|
13
|
+
describe "#browser_options" do
|
14
|
+
subject { factory.browser_options(config) }
|
15
|
+
|
16
|
+
let(:config) { {} }
|
17
|
+
let(:capabilities) { double(Selenium::WebDriver::Remote::Capabilities) }
|
18
|
+
|
19
|
+
before do
|
20
|
+
expect(Selenium::WebDriver::Remote::Capabilities).to receive(:foo).and_return(capabilities)
|
21
|
+
end
|
22
|
+
|
23
|
+
context "given a sauce_ondemand_username and sauce_ondemand_access_key" do
|
24
|
+
let(:config) { { sauce_ondemand_username: "foo", sauce_ondemand_access_key: "bar" } }
|
25
|
+
|
26
|
+
it "configures the remote webdriver url" do
|
27
|
+
expect(subject[:url]).to eq(URI.parse("http://foo:bar@ondemand.saucelabs.com/wd/hub"))
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
context "given a browser platform" do
|
32
|
+
let(:config) { { platform: "foo" } }
|
33
|
+
|
34
|
+
it "configures the browser platform" do
|
35
|
+
expect(capabilities).to receive(:platform=).with("foo")
|
36
|
+
subject
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
context "given a browser version" do
|
41
|
+
let(:config) { { version: "123" } }
|
42
|
+
|
43
|
+
it "configures the browser version" do
|
44
|
+
expect(capabilities).to receive(:version=).with("123")
|
45
|
+
subject
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
# Customize this configuration as necessary to provide defaults for various
|
2
|
+
# test environments.
|
3
|
+
#
|
4
|
+
# The set of defaults to use is determined by the MEDIAWIKI_ENVIRONMENT
|
5
|
+
# environment variable.
|
6
|
+
#
|
7
|
+
# export MEDIAWIKI_ENVIRONMENT=mw-vagrant-host
|
8
|
+
# bundle exec cucumber
|
9
|
+
#
|
10
|
+
# Additional variables set by the environment will override the corresponding
|
11
|
+
# defaults defined here.
|
12
|
+
#
|
13
|
+
# export MEDIAWIKI_ENVIRONMENT=mw-vagrant-host
|
14
|
+
# export MEDIAWIKI_USER=Selenium_user2
|
15
|
+
# bundle exec cucumber
|
16
|
+
#
|
17
|
+
mw-vagrant-host:
|
18
|
+
mediawiki_url: http://127.0.0.1:8080/wiki/
|
19
|
+
mediawiki_user: Selenium_user
|
20
|
+
mediawiki_password: vagrant
|
21
|
+
|
22
|
+
mw-vagrant-guest:
|
23
|
+
mediawiki_url: http://127.0.0.1/wiki/
|
24
|
+
mediawiki_user: Selenium_user
|
25
|
+
mediawiki_password: vagrant
|
26
|
+
|
27
|
+
beta:
|
28
|
+
mediawiki_url: http://en.wikipedia.beta.wmflabs.org/wiki/
|
29
|
+
mediawiki_user: Selenium_user
|
30
|
+
# mediawiki_password: SET THIS IN THE ENVIRONMENT!
|
31
|
+
|
32
|
+
test2:
|
33
|
+
mediawiki_url: http://test2.wikipedia.org/wiki/
|
34
|
+
mediawiki_user: Selenium_user
|
35
|
+
# mediawiki_password: SET THIS IN THE ENVIRONMENT!
|
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.
|
4
|
+
version: 1.0.0.pre.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris McMahon
|
@@ -13,7 +13,7 @@ authors:
|
|
13
13
|
autorequire:
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
|
-
date: 2015-
|
16
|
+
date: 2015-01-17 00:00:00.000000000 Z
|
17
17
|
dependencies:
|
18
18
|
- !ruby/object:Gem::Dependency
|
19
19
|
name: cucumber
|
@@ -170,44 +170,93 @@ dependencies:
|
|
170
170
|
- !ruby/object:Gem::Version
|
171
171
|
version: 1.2.0
|
172
172
|
- !ruby/object:Gem::Dependency
|
173
|
-
name:
|
173
|
+
name: thor
|
174
|
+
requirement: !ruby/object:Gem::Requirement
|
175
|
+
requirements:
|
176
|
+
- - "~>"
|
177
|
+
- !ruby/object:Gem::Version
|
178
|
+
version: '0.19'
|
179
|
+
- - ">="
|
180
|
+
- !ruby/object:Gem::Version
|
181
|
+
version: 0.19.1
|
182
|
+
type: :runtime
|
183
|
+
prerelease: false
|
184
|
+
version_requirements: !ruby/object:Gem::Requirement
|
185
|
+
requirements:
|
186
|
+
- - "~>"
|
187
|
+
- !ruby/object:Gem::Version
|
188
|
+
version: '0.19'
|
189
|
+
- - ">="
|
190
|
+
- !ruby/object:Gem::Version
|
191
|
+
version: 0.19.1
|
192
|
+
- !ruby/object:Gem::Dependency
|
193
|
+
name: bundler
|
174
194
|
requirement: !ruby/object:Gem::Requirement
|
175
195
|
requirements:
|
196
|
+
- - "~>"
|
197
|
+
- !ruby/object:Gem::Version
|
198
|
+
version: '1.6'
|
176
199
|
- - ">="
|
177
200
|
- !ruby/object:Gem::Version
|
178
|
-
version:
|
201
|
+
version: 1.6.3
|
179
202
|
type: :development
|
180
203
|
prerelease: false
|
181
204
|
version_requirements: !ruby/object:Gem::Requirement
|
182
205
|
requirements:
|
206
|
+
- - "~>"
|
207
|
+
- !ruby/object:Gem::Version
|
208
|
+
version: '1.6'
|
183
209
|
- - ">="
|
184
210
|
- !ruby/object:Gem::Version
|
185
|
-
version:
|
211
|
+
version: 1.6.3
|
186
212
|
- !ruby/object:Gem::Dependency
|
187
|
-
name:
|
213
|
+
name: yard
|
188
214
|
requirement: !ruby/object:Gem::Requirement
|
189
215
|
requirements:
|
190
216
|
- - "~>"
|
191
217
|
- !ruby/object:Gem::Version
|
192
|
-
version: '
|
218
|
+
version: '0.8'
|
193
219
|
- - ">="
|
194
220
|
- !ruby/object:Gem::Version
|
195
|
-
version:
|
221
|
+
version: 0.8.7.4
|
196
222
|
type: :development
|
197
223
|
prerelease: false
|
198
224
|
version_requirements: !ruby/object:Gem::Requirement
|
199
225
|
requirements:
|
200
226
|
- - "~>"
|
201
227
|
- !ruby/object:Gem::Version
|
202
|
-
version: '
|
228
|
+
version: '0.8'
|
203
229
|
- - ">="
|
204
230
|
- !ruby/object:Gem::Version
|
205
|
-
version:
|
231
|
+
version: 0.8.7.4
|
232
|
+
- !ruby/object:Gem::Dependency
|
233
|
+
name: redcarpet
|
234
|
+
requirement: !ruby/object:Gem::Requirement
|
235
|
+
requirements:
|
236
|
+
- - "~>"
|
237
|
+
- !ruby/object:Gem::Version
|
238
|
+
version: '3.2'
|
239
|
+
- - ">="
|
240
|
+
- !ruby/object:Gem::Version
|
241
|
+
version: 3.2.0
|
242
|
+
type: :development
|
243
|
+
prerelease: false
|
244
|
+
version_requirements: !ruby/object:Gem::Requirement
|
245
|
+
requirements:
|
246
|
+
- - "~>"
|
247
|
+
- !ruby/object:Gem::Version
|
248
|
+
version: '3.2'
|
249
|
+
- - ">="
|
250
|
+
- !ruby/object:Gem::Version
|
251
|
+
version: 3.2.0
|
206
252
|
- !ruby/object:Gem::Dependency
|
207
253
|
name: rubocop
|
208
254
|
requirement: !ruby/object:Gem::Requirement
|
209
255
|
requirements:
|
210
256
|
- - "~>"
|
257
|
+
- !ruby/object:Gem::Version
|
258
|
+
version: '0.26'
|
259
|
+
- - ">="
|
211
260
|
- !ruby/object:Gem::Version
|
212
261
|
version: 0.26.1
|
213
262
|
type: :development
|
@@ -215,22 +264,51 @@ dependencies:
|
|
215
264
|
version_requirements: !ruby/object:Gem::Requirement
|
216
265
|
requirements:
|
217
266
|
- - "~>"
|
267
|
+
- !ruby/object:Gem::Version
|
268
|
+
version: '0.26'
|
269
|
+
- - ">="
|
218
270
|
- !ruby/object:Gem::Version
|
219
271
|
version: 0.26.1
|
220
272
|
- !ruby/object:Gem::Dependency
|
221
|
-
name:
|
273
|
+
name: rspec-core
|
222
274
|
requirement: !ruby/object:Gem::Requirement
|
223
275
|
requirements:
|
276
|
+
- - "~>"
|
277
|
+
- !ruby/object:Gem::Version
|
278
|
+
version: '2.14'
|
224
279
|
- - ">="
|
225
280
|
- !ruby/object:Gem::Version
|
226
|
-
version:
|
281
|
+
version: 2.14.4
|
227
282
|
type: :development
|
228
283
|
prerelease: false
|
229
284
|
version_requirements: !ruby/object:Gem::Requirement
|
230
285
|
requirements:
|
286
|
+
- - "~>"
|
287
|
+
- !ruby/object:Gem::Version
|
288
|
+
version: '2.14'
|
231
289
|
- - ">="
|
232
290
|
- !ruby/object:Gem::Version
|
233
|
-
version:
|
291
|
+
version: 2.14.4
|
292
|
+
- !ruby/object:Gem::Dependency
|
293
|
+
name: rspec-mocks
|
294
|
+
requirement: !ruby/object:Gem::Requirement
|
295
|
+
requirements:
|
296
|
+
- - "~>"
|
297
|
+
- !ruby/object:Gem::Version
|
298
|
+
version: '2.14'
|
299
|
+
- - ">="
|
300
|
+
- !ruby/object:Gem::Version
|
301
|
+
version: 2.14.4
|
302
|
+
type: :development
|
303
|
+
prerelease: false
|
304
|
+
version_requirements: !ruby/object:Gem::Requirement
|
305
|
+
requirements:
|
306
|
+
- - "~>"
|
307
|
+
- !ruby/object:Gem::Version
|
308
|
+
version: '2.14'
|
309
|
+
- - ">="
|
310
|
+
- !ruby/object:Gem::Version
|
311
|
+
version: 2.14.4
|
234
312
|
description: |-
|
235
313
|
Several MediaWiki extensions share code that makes it easy to run Selenium tests. This gem
|
236
314
|
makes it easy to update the shared code.
|
@@ -241,12 +319,14 @@ email:
|
|
241
319
|
- neverett@wikimedia.org
|
242
320
|
- tobias.gritschacher@wikimedia.de
|
243
321
|
- zeljko.filipin@gmail.com
|
244
|
-
executables:
|
322
|
+
executables:
|
323
|
+
- mediawiki-selenium-init
|
245
324
|
extensions: []
|
246
325
|
extra_rdoc_files: []
|
247
326
|
files:
|
248
327
|
- ".gitignore"
|
249
328
|
- ".gitreview"
|
329
|
+
- ".rspec"
|
250
330
|
- ".rubocop.yml"
|
251
331
|
- ".rubocop_todo.yml"
|
252
332
|
- ".yardopts"
|
@@ -254,18 +334,30 @@ files:
|
|
254
334
|
- Gemfile
|
255
335
|
- LICENSE
|
256
336
|
- README.md
|
337
|
+
- bin/mediawiki-selenium-init
|
257
338
|
- lib/mediawiki_selenium.rb
|
339
|
+
- lib/mediawiki_selenium/browser_factory.rb
|
340
|
+
- lib/mediawiki_selenium/browser_factory/base.rb
|
341
|
+
- lib/mediawiki_selenium/browser_factory/chrome.rb
|
342
|
+
- lib/mediawiki_selenium/browser_factory/firefox.rb
|
343
|
+
- lib/mediawiki_selenium/browser_factory/phantomjs.rb
|
344
|
+
- lib/mediawiki_selenium/configuration_error.rb
|
345
|
+
- lib/mediawiki_selenium/environment.rb
|
346
|
+
- lib/mediawiki_selenium/initializer.rb
|
347
|
+
- lib/mediawiki_selenium/page_factory.rb
|
348
|
+
- lib/mediawiki_selenium/remote_browser_factory.rb
|
349
|
+
- lib/mediawiki_selenium/step_definitions.rb
|
258
350
|
- lib/mediawiki_selenium/step_definitions/login_steps.rb
|
259
351
|
- lib/mediawiki_selenium/step_definitions/navigation_steps.rb
|
260
352
|
- lib/mediawiki_selenium/step_definitions/preferences_steps.rb
|
261
353
|
- lib/mediawiki_selenium/step_definitions/resource_loader_steps.rb
|
262
354
|
- lib/mediawiki_selenium/step_definitions/upload_file_steps.rb
|
355
|
+
- lib/mediawiki_selenium/support.rb
|
263
356
|
- lib/mediawiki_selenium/support/env.rb
|
264
357
|
- lib/mediawiki_selenium/support/hooks.rb
|
265
358
|
- lib/mediawiki_selenium/support/modules/api_helper.rb
|
266
|
-
- lib/mediawiki_selenium/support/modules/sauce_helper.rb
|
267
359
|
- lib/mediawiki_selenium/support/modules/strict_pending.rb
|
268
|
-
- lib/mediawiki_selenium/support/
|
360
|
+
- lib/mediawiki_selenium/support/pages.rb
|
269
361
|
- lib/mediawiki_selenium/support/pages/api_page.rb
|
270
362
|
- lib/mediawiki_selenium/support/pages/login_page.rb
|
271
363
|
- lib/mediawiki_selenium/support/pages/random_page.rb
|
@@ -274,7 +366,17 @@ files:
|
|
274
366
|
- lib/mediawiki_selenium/version.rb
|
275
367
|
- lib/mediawiki_selenium/warnings_formatter.rb
|
276
368
|
- mediawiki_selenium.gemspec
|
277
|
-
- spec/
|
369
|
+
- spec/api_helper_spec.rb
|
370
|
+
- spec/browser_factory/base_spec.rb
|
371
|
+
- spec/browser_factory/chrome_spec.rb
|
372
|
+
- spec/browser_factory/firefox_spec.rb
|
373
|
+
- spec/browser_factory/phantomjs_spec.rb
|
374
|
+
- spec/environment_spec.rb
|
375
|
+
- spec/page_factory_spec.rb
|
376
|
+
- spec/remote_browser_factory_spec.rb
|
377
|
+
- spec/spec_helper.rb
|
378
|
+
- templates/tests/browser/environments.yml
|
379
|
+
- templates/tests/browser/features/support/env.rb
|
278
380
|
homepage: https://gerrit.wikimedia.org/r/#/admin/projects/mediawiki/selenium
|
279
381
|
licenses:
|
280
382
|
- GPL-2
|
@@ -290,12 +392,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
290
392
|
version: '0'
|
291
393
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
292
394
|
requirements:
|
293
|
-
- - "
|
395
|
+
- - ">"
|
294
396
|
- !ruby/object:Gem::Version
|
295
|
-
version:
|
397
|
+
version: 1.3.1
|
296
398
|
requirements: []
|
297
399
|
rubyforge_project:
|
298
|
-
rubygems_version: 2.
|
400
|
+
rubygems_version: 2.2.2
|
299
401
|
signing_key:
|
300
402
|
specification_version: 4
|
301
403
|
summary: An easy way to run MediaWiki Selenium tests.
|
@@ -1,13 +0,0 @@
|
|
1
|
-
module MediawikiSelenium
|
2
|
-
module SauceHelper
|
3
|
-
# The current Sauce session ID.
|
4
|
-
#
|
5
|
-
# @return [String]
|
6
|
-
#
|
7
|
-
def sauce_session_id
|
8
|
-
@session_id ||= @browser.driver.instance_variable_get(:@bridge).session_id if @browser
|
9
|
-
rescue StandardError
|
10
|
-
nil
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
@@ -1,21 +0,0 @@
|
|
1
|
-
=begin
|
2
|
-
This file is subject to the license terms in the LICENSE file found in the
|
3
|
-
mediawiki_selenium top-level directory and at
|
4
|
-
https://git.wikimedia.org/blob/mediawiki%2Fselenium/HEAD/LICENSE. No part of
|
5
|
-
mediawiki_selenium, including this file, may be copied, modified, propagated, or
|
6
|
-
distributed except according to the terms contained in the LICENSE file.
|
7
|
-
Copyright 2013 by the Mediawiki developers. See the CREDITS file in the
|
8
|
-
mediawiki_selenium top-level directory and at
|
9
|
-
https://git.wikimedia.org/blob/mediawiki%2Fselenium/HEAD/CREDITS.
|
10
|
-
=end
|
11
|
-
|
12
|
-
module URL
|
13
|
-
def self.url(name)
|
14
|
-
if ENV["MEDIAWIKI_URL"]
|
15
|
-
mediawiki_url = ENV["MEDIAWIKI_URL"]
|
16
|
-
else
|
17
|
-
mediawiki_url = "http://en.wikipedia.beta.wmflabs.org/wiki/"
|
18
|
-
end
|
19
|
-
"#{mediawiki_url}#{name}"
|
20
|
-
end
|
21
|
-
end
|