mediawiki_selenium 0.4.3 → 1.0.0.pre.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|