selenium-webdriver-rails-support-via-monkeypatch 0.1.0

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.
@@ -0,0 +1,39 @@
1
+ module SeleniumWebDriverRemoteRailsSupportMonkeyPathOfDoom
2
+ def self.included base
3
+ base.class_eval do
4
+ if respond_to? :alias_method_chain
5
+ alias_method_chain :request, :rails_support_that_fixes_crappy_json
6
+ else
7
+ raise "alias_method_chain isn't defined ... are you in a Rails app? If now, why are you using this evil monkeypatch?"
8
+ end
9
+ end
10
+ end
11
+
12
+ # This is what we *SHOULD* get
13
+ #
14
+ # "{\"desiredCapabilities\":{\"javascriptEnabled\":false,\"version\":\"\",\"browserName\":\"htmlunit\",\"platform\":\"ANY\"}}"
15
+ #
16
+ # But this is what we get instead
17
+ #
18
+ # "{\"desiredCapabilities\":{\"browser_name\":\"htmlunit\",\"javascript_enabled\":false,\"version\":\"\",\"platform\":\"any\"}}"
19
+ #
20
+ # To get this fixed *immediately*, we simply rewrite the payload to camelcase key names and upcase the platform.
21
+ #
22
+ # We'll find a better way to do this later and submit a patch to selenium. It's ActiveSupport's #to_json that is killing us!
23
+ #
24
+ def request_with_rails_support_that_fixes_crappy_json(verb, url, headers, payload, redirects = 0)
25
+ if payload
26
+ payload.sub!('browser_name', 'browserName')
27
+ payload.sub!('javascript_enabled', 'javascriptEnabled')
28
+ payload.sub!(/"platform":"(\w+)"/){|x| %{"platform":"#{$1.upcase}"} }
29
+ end
30
+ request_without_rails_support_that_fixes_crappy_json(verb, url, headers, payload, redirects)
31
+ end
32
+ end
33
+
34
+ unless defined? SeleniumWebDriverRemoteRailsSupportMonkeyPathOfDoom
35
+ require 'selenium-webdriver'
36
+ end
37
+
38
+ # MONKEYPATCH
39
+ Selenium::WebDriver::Remote::Http::Default.send :include, SeleniumWebDriverRemoteRailsSupportMonkeyPathOfDoom
metadata ADDED
@@ -0,0 +1,62 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: selenium-webdriver-rails-support-via-monkeypatch
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 1
8
+ - 0
9
+ version: 0.1.0
10
+ platform: ruby
11
+ authors:
12
+ - remi
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2010-09-25 00:00:00 -07:00
18
+ default_executable:
19
+ dependencies: []
20
+
21
+ description: Quick monkeypatch to add support for Rails to selenium-webdriver (0.0.28) ... should be fixed soon!
22
+ email: remi@remitaylor.com
23
+ executables: []
24
+
25
+ extensions: []
26
+
27
+ extra_rdoc_files: []
28
+
29
+ files:
30
+ - lib/selenium-webdriver-rails-support-via-monkeypatch.rb
31
+ has_rdoc: true
32
+ homepage: http://github.com/remi/project-name
33
+ licenses: []
34
+
35
+ post_install_message:
36
+ rdoc_options: []
37
+
38
+ require_paths:
39
+ - lib
40
+ required_ruby_version: !ruby/object:Gem::Requirement
41
+ requirements:
42
+ - - ">="
43
+ - !ruby/object:Gem::Version
44
+ segments:
45
+ - 0
46
+ version: "0"
47
+ required_rubygems_version: !ruby/object:Gem::Requirement
48
+ requirements:
49
+ - - ">="
50
+ - !ruby/object:Gem::Version
51
+ segments:
52
+ - 0
53
+ version: "0"
54
+ requirements: []
55
+
56
+ rubyforge_project:
57
+ rubygems_version: 1.3.6
58
+ signing_key:
59
+ specification_version: 3
60
+ summary: Quick monkeypatch to add support for Rails to selenium-webdriver (0.0.28) ... should be fixed soon!
61
+ test_files: []
62
+