cuke-island 0.0.6 → 0.0.7

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.
data/README.rdoc CHANGED
@@ -2,9 +2,11 @@
2
2
 
3
3
  == Introduction
4
4
 
5
- We here at Carney+Co have not discovered how to limit ourselves to Rails only projects yet so we have come up with a simple generator gem that will create a standalone cucumber test inviroment in a folder of our choice. This is a kind of one stop method with the exception of some depdendencies to have the best and easiest to maniupulate test evnironment possible.
5
+ We here at {Carney+Co}[http://carney.co/] have not discovered how to limit ourselves to Rails only projects yet so we have come up with a simple generator gem that will create a standalone cucumber test inviroment in a folder of our choice. This is a kind of one stop method with the exception of some depdendencies to have the best and easiest to maniupulate test evnironment possible.
6
6
 
7
- I have expanded this work from the original Author Todd Huss from which this project is forked. I basically added in some extra smarts from the internets to integrate webkit and chromedriver to the installation
7
+ I have expanded this work from the original Author Todd Huss from which this project is forked. I basically added in some extra smarts from the internets to integrate webkit and chromedriver to the installation.
8
+
9
+ Some enhancements over the parent are a nice growing list of generic web_steps and file handling capabilities for downloading and uploading files to your sites.
8
10
 
9
11
  http://blogs.kent.ac.uk/webdev/2012/08/02/using-capybara-webkit-with-cucumber-without-rails-or-rack/
10
12
 
@@ -15,6 +17,16 @@ http://collectiveidea.com/blog/archives/2011/09/27/use-chrome-with-cucumber-capy
15
17
  I have also upgraded all the associated gems from the parent project so this install is far easier to get running out of the box
16
18
 
17
19
 
20
+ == Changelog
21
+
22
+ 0.0.4 First Version
23
+
24
+ 0.0.5 Added more web_steps
25
+
26
+ 0.0.6 Configuration of Capybara.app_host from command line and existing deployed test instance upgrade strategy
27
+
28
+ 0.0.7 File download handling through file_steps - This provides a waiting mechanism inspired by http://collectiveidea.com/blog/archives/2012/01/27/testing-file-downloads-with-capybara-and-chromedriver/
29
+
18
30
  == From the original author
19
31
  I've included a simple search.feature examples that uses Google. To switch to use your own development or staging server adjust the URL in features/support/env.rb. I have this example project setup to use Capybara with Webdriver (Selenium) but you can easily switch this to use Culerity or Webrat by editing features/support/env.rb.
20
32
 
@@ -43,7 +55,8 @@ Pull requests with updates/enhancements/bug fixes are always welcome!
43
55
  == Setting up a test enviornmnet
44
56
 
45
57
  * gem install cuke-island
46
- * cuke-island <Directory to house testing files>
58
+ * cuke-island <Directory to house testing files> [<Domain Name (http://google.com)>]
59
+ * * This second option will replace the Capybara.app_host = 'http://www.google.com' with your value.
47
60
 
48
61
  == Running Features
49
62
 
@@ -0,0 +1,12 @@
1
+ Then /^I should get a download with the filename "([^\"]*)"$/ do |filename|
2
+ download_name.should include filename
3
+ end
4
+
5
+ When /^I upload a downloaded file to "([^\"]*)"$/ do |field|
6
+ #downloads.include? filename
7
+ attach_file(field, downloads.first)
8
+ end
9
+
10
+ Then /^I should clear downloads$/ do
11
+ clear_downloads
12
+ end
@@ -48,7 +48,6 @@ end
48
48
  When /^I sign in as "(.*?)"$/ do |arg1|
49
49
  fill_in("username", :with => arg1.split("/")[0])
50
50
  fill_in("password", :with => arg1.split("/")[1])
51
- click_button('Login')
52
51
  end
53
52
 
54
53
  When /^I sign into facebook as "(.*?)"$/ do |arg1|
@@ -61,6 +60,12 @@ When /^I click the "([^"]*)" link$/ do |link_text|
61
60
  click_link link_text
62
61
  end
63
62
 
63
+ When /^I click the first "([^"]*)" link$/ do |link_text|
64
+ first(:link, link_text).click
65
+ end
66
+
67
+
68
+ #clicks a button with the id specified by button_text. You must have javascript enabled (@javascript at top of feature) to use this webstep
64
69
  When /^I click the "([^"]*)" button$/ do |button_text|
65
70
  click_button button_text
66
71
  end
@@ -2,7 +2,52 @@ begin require 'rspec/expectations'; rescue LoadError; require 'spec/expectations
2
2
  require 'capybara'
3
3
  require 'capybara/dsl'
4
4
  require 'capybara/cucumber'
5
+ require "selenium/webdriver"
5
6
 
7
+ module DownloadHelpers
8
+ TIMEOUT = 120
9
+ #Put downloads at the same
10
+ PATH = File.expand_path (File.dirname(__FILE__)) + "/../../downloads"
11
+
12
+ extend self
13
+
14
+ def downloads
15
+ Dir[PATH + "/**"]
16
+ end
17
+
18
+ def download
19
+ downloads.first
20
+ end
21
+
22
+ def download_name
23
+ wait_for_download
24
+ File.basename(download)
25
+ end
26
+
27
+ def download_content
28
+ wait_for_download
29
+ File.read(download)
30
+ end
31
+
32
+ def wait_for_download
33
+ Timeout.timeout(TIMEOUT) do
34
+ sleep 0.1 until downloaded?
35
+ end
36
+ puts downloads
37
+ end
38
+
39
+ def downloaded?
40
+ !downloading? && downloads.any?
41
+ end
42
+
43
+ def downloading?
44
+ downloads.grep(/\.crdownload$/).any?
45
+ end
46
+
47
+ def clear_downloads
48
+ FileUtils.rm_f(downloads)
49
+ end
50
+ end
6
51
 
7
52
  Capybara.app_host = 'http://www.google.com'
8
53
 
@@ -17,10 +62,20 @@ Capybara.default_driver = :webkit
17
62
 
18
63
  #Use ChromeDriver
19
64
  Capybara.register_driver :chrome do |app|
20
- Capybara::Selenium::Driver.new(app, :browser => :chrome)
65
+ profile = Selenium::WebDriver::Chrome::Profile.new
66
+ profile["download.default_directory"] = DownloadHelpers::PATH.to_s
67
+ Capybara::Selenium::Driver.new(app, :browser => :chrome, :profile => profile)
21
68
  end
22
69
  Capybara.javascript_driver = :chrome
23
70
 
71
+ World(Capybara)
72
+ World(DownloadHelpers)
24
73
 
74
+ at_exit do
75
+ DownloadHelpers.clear_downloads
76
+ end
25
77
 
26
- World(Capybara)
78
+ AfterStep('@pause') do
79
+ print "Press Return to continue"
80
+ STDIN.getc
81
+ end
data/lib/cuke_island.rb CHANGED
@@ -6,7 +6,7 @@ require 'fileutils'
6
6
  class CukeIsland < Thor::Group
7
7
  include Thor::Actions
8
8
 
9
- VERSION = "0.0.6"
9
+ VERSION = "0.0.7"
10
10
 
11
11
  argument :dir_name
12
12
  argument :hostdomain, :optional => true
@@ -34,6 +34,7 @@ class CukeIsland < Thor::Group
34
34
 
35
35
  def features_directory_and_files
36
36
  empty_directory 'features'
37
+ empty_directory 'downloads'
37
38
 
38
39
  inside 'features' do
39
40
  template '../search.feature.off', 'search.feature.sample'
@@ -44,6 +45,7 @@ class CukeIsland < Thor::Group
44
45
  end
45
46
  empty_directory 'step_definitions'
46
47
  template '../step_definitions/web_steps.rb', 'step_definitions/web_steps.rb'
48
+ template '../step_definitions/file_steps.rb', 'step_definitions/file_steps.rb'
47
49
  end
48
50
  end
49
51
 
metadata CHANGED
@@ -1,16 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cuke-island
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
8
8
  - Paul Scarrone
9
9
  - Todd Huss
10
+ - Julian Toker
10
11
  autorequire:
11
12
  bindir: bin
12
13
  cert_chain: []
13
- date: 2013-02-28 00:00:00.000000000 Z
14
+ date: 2013-03-22 00:00:00.000000000 Z
14
15
  dependencies:
15
16
  - !ruby/object:Gem::Dependency
16
17
  name: thor
@@ -124,6 +125,22 @@ dependencies:
124
125
  - - '='
125
126
  - !ruby/object:Gem::Version
126
127
  version: 1.1.0
128
+ - !ruby/object:Gem::Dependency
129
+ name: selenium-webdriver
130
+ requirement: !ruby/object:Gem::Requirement
131
+ none: false
132
+ requirements:
133
+ - - '='
134
+ - !ruby/object:Gem::Version
135
+ version: 2.30.0
136
+ type: :runtime
137
+ prerelease: false
138
+ version_requirements: !ruby/object:Gem::Requirement
139
+ none: false
140
+ requirements:
141
+ - - '='
142
+ - !ruby/object:Gem::Version
143
+ version: 2.30.0
127
144
  description: ! 'Standalone generator for a lightly configured cucumber capybara chromedriver
128
145
  test enviroment: cuke-island <test folder>'
129
146
  email: paul.scarrone@gmail.com
@@ -138,6 +155,7 @@ files:
138
155
  - Gemfile
139
156
  - Rakefile
140
157
  - features/search.feature.off
158
+ - features/step_definitions/file_steps.rb
141
159
  - features/step_definitions/web_steps.rb
142
160
  - features/support/env.rb
143
161
  - README.rdoc