kameleon 0.0.8 → 0.0.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (58) hide show
  1. data/lib/kameleon.rb +16 -1
  2. data/lib/kameleon/dsl/act.rb +24 -12
  3. data/lib/kameleon/dsl/see.rb +15 -4
  4. data/lib/kameleon/session/capybara.rb +2 -25
  5. data/lib/kameleon/session/server.rb +21 -0
  6. data/lib/kameleon/session/session_pool.rb +45 -0
  7. data/lib/kameleon/user/abstract.rb +21 -24
  8. data/lib/kameleon/user/guest.rb +1 -3
  9. data/lib/kameleon/utils/configuration.rb +15 -0
  10. data/lib/kameleon/utils/helpers.rb +11 -0
  11. data/lib/patch/capybara_selenium_driver.rb +7 -0
  12. data/spec/sample_rack_app/hey.rb +13 -6
  13. data/spec/spec_helper.rb +26 -1
  14. data/spec/unit/act/click_spec.rb +1 -1
  15. data/spec/unit/act/fill_in/attach_file_spec.rb +14 -5
  16. data/spec/unit/act/fill_in/checkbox_spec.rb +1 -1
  17. data/spec/unit/act/fill_in/date_ranges_spec.rb +1 -1
  18. data/spec/unit/act/fill_in/multiple_select_spec.rb +1 -1
  19. data/spec/unit/act/fill_in/radio_button_spec.rb +1 -1
  20. data/spec/unit/act/fill_in/select_spec.rb +1 -1
  21. data/spec/unit/act/fill_in/text_area_spec.rb +1 -1
  22. data/spec/unit/act/fill_in/text_input_spec.rb +1 -1
  23. data/spec/unit/act/on_hover_spec.rb +1 -1
  24. data/spec/unit/dsl/not_see/form_elements/fields/empty_spec.rb +1 -1
  25. data/spec/unit/dsl/not_see/form_elements/fields/readonly_spec.rb +1 -1
  26. data/spec/unit/dsl/not_see/form_elements/fields_spec.rb +1 -1
  27. data/spec/unit/dsl/not_see/form_elements/textareas_spec.rb +1 -1
  28. data/spec/unit/dsl/not_see/form_elements/texts_spec.rb +1 -1
  29. data/spec/unit/dsl/not_see/in_scopes_spec.rb +3 -1
  30. data/spec/unit/dsl/not_see/special_elements/buttons_spec.rb +1 -1
  31. data/spec/unit/dsl/not_see/special_elements/error_message_for_spec.rb +1 -1
  32. data/spec/unit/dsl/not_see/special_elements/images_spec.rb +1 -1
  33. data/spec/unit/dsl/not_see/special_elements/links_spec.rb +1 -1
  34. data/spec/unit/dsl/not_see/special_elements/ordered_texts_spec.rb +3 -3
  35. data/spec/unit/dsl/not_see/special_selectors_spec.rb +9 -5
  36. data/spec/unit/dsl/not_see/texts_spec.rb +1 -1
  37. data/spec/unit/dsl/see/counted_elements_spec.rb +1 -1
  38. data/spec/unit/dsl/see/form_elements/checkboxes_spec.rb +1 -1
  39. data/spec/unit/dsl/see/form_elements/fields/disabled_spec.rb +1 -1
  40. data/spec/unit/dsl/see/form_elements/fields/empty_spec.rb +1 -1
  41. data/spec/unit/dsl/see/form_elements/fields/readonly_spec.rb +1 -1
  42. data/spec/unit/dsl/see/form_elements/fields_spec.rb +1 -1
  43. data/spec/unit/dsl/see/form_elements/multiple_selects_spec.rb +1 -1
  44. data/spec/unit/dsl/see/form_elements/radio_buttons_spec.rb +1 -1
  45. data/spec/unit/dsl/see/form_elements/selects_spec.rb +1 -1
  46. data/spec/unit/dsl/see/form_elements/textareas_spec.rb +1 -1
  47. data/spec/unit/dsl/see/form_elements/texts_spec.rb +1 -1
  48. data/spec/unit/dsl/see/in_scopes_spec.rb +4 -2
  49. data/spec/unit/dsl/see/special_elements/buttons_spec.rb +1 -1
  50. data/spec/unit/dsl/see/special_elements/error_message_for_spec.rb +1 -1
  51. data/spec/unit/dsl/see/special_elements/images_spec.rb +1 -1
  52. data/spec/unit/dsl/see/special_elements/links_spec.rb +1 -1
  53. data/spec/unit/dsl/see/special_elements/ordered_texts_spec.rb +3 -3
  54. data/spec/unit/dsl/see/special_selectors_spec.rb +10 -6
  55. data/spec/unit/dsl/see/texts_spec.rb +1 -1
  56. data/spec/unit/guest_spec.rb +8 -4
  57. data/spec/unit/user_base_spec.rb +6 -8
  58. metadata +29 -23
@@ -2,8 +2,8 @@ require 'spec_helper'
2
2
 
3
3
  describe '#click' do
4
4
  before do
5
- Capybara.app = Hey.new('click.html')
6
5
  @user = Kameleon::User::Guest.new(self)
6
+ @user.debug.visit('/click.html')
7
7
  end
8
8
 
9
9
  it 'should clicks on links and buttons at once' do
@@ -2,16 +2,15 @@ require 'spec_helper'
2
2
 
3
3
  describe 'fill in attach file' do
4
4
  before do
5
- Capybara.app = Hey.new('form_elements.html')
6
5
  @user = Kameleon::User::Guest.new(self)
6
+ @user.debug.visit('/form_elements.html')
7
7
  end
8
8
 
9
9
  it 'should attach file' do
10
10
  @user.will do
11
11
  see :empty => 'File input'
12
- full_path = "#{File.expand_path __FILE__ + '/../../../../dummy'}/click.html"
13
- fill_in :attach => { full_path => 'Active File input' }
14
- see full_path => 'Active File input'
12
+ fill_in :attach => { 'click.html' => 'Active File input' }
13
+ see Kameleon::Utils::Helpers.default_path_for_file('click.html') => 'File input'
15
14
  end
16
15
  end
17
16
 
@@ -19,9 +18,19 @@ describe 'fill in attach file' do
19
18
  it 'should not attach file' do
20
19
  @user.will do
21
20
  see :empty => 'Disable File input'
22
- fill_in :attach => { 'path' => 'Disable File input' }
21
+ fill_in :attach => { 'click.html' => 'Disable File input' }
23
22
  see :empty => 'Disable File input'
24
23
  end
25
24
  end
26
25
  end
26
+
27
+ context 'when file does not exist' do
28
+ it 'should raise error' do
29
+ expect do
30
+ @user.will do
31
+ fill_in :attach => { 'path' => 'Active File input' }
32
+ end
33
+ end.to_not raise_error(RuntimeError, %w{Sorry but we didn't found that file in: path'})
34
+ end
35
+ end
27
36
  end
@@ -3,8 +3,8 @@ require 'spec_helper'
3
3
 
4
4
  describe 'fill in checkbox' do
5
5
  before do
6
- Capybara.app = Hey.new('form_elements.html')
7
6
  @user = Kameleon::User::Guest.new(self)
7
+ @user.debug.visit('/form_elements.html')
8
8
  end
9
9
 
10
10
  it 'should check by id' do
@@ -2,8 +2,8 @@ require 'spec_helper'
2
2
 
3
3
  describe 'fill in date ranges' do
4
4
  before do
5
- Capybara.app = Hey.new('form_elements.html')
6
5
  @user = Kameleon::User::Guest.new(self)
6
+ @user.debug.visit('/form_elements.html')
7
7
  end
8
8
 
9
9
  it 'should fill by label' do
@@ -2,8 +2,8 @@ require 'spec_helper'
2
2
 
3
3
  describe 'fill in multiple select' do
4
4
  before do
5
- Capybara.app = Hey.new('form_elements.html')
6
5
  @user = Kameleon::User::Guest.new(self)
6
+ @user.debug.visit('/form_elements.html')
7
7
  end
8
8
 
9
9
  it 'should select by id' do
@@ -3,8 +3,8 @@ require 'spec_helper'
3
3
 
4
4
  describe 'fill in radio button' do
5
5
  before do
6
- Capybara.app = Hey.new('form_elements.html')
7
6
  @user = Kameleon::User::Guest.new(self)
7
+ @user.debug.visit('/form_elements.html')
8
8
  end
9
9
 
10
10
  it 'should select by label' do
@@ -2,8 +2,8 @@ require 'spec_helper'
2
2
 
3
3
  describe 'fill in select' do
4
4
  before do
5
- Capybara.app = Hey.new('form_elements.html')
6
5
  @user = Kameleon::User::Guest.new(self)
6
+ @user.debug.visit('/form_elements.html')
7
7
  end
8
8
 
9
9
  it 'should select by id' do
@@ -2,8 +2,8 @@ require 'spec_helper'
2
2
 
3
3
  describe 'fill textarea' do
4
4
  before do
5
- Capybara.app = Hey.new('form_elements.html')
6
5
  @user = Kameleon::User::Guest.new(self)
6
+ @user.debug.visit('/form_elements.html')
7
7
  end
8
8
 
9
9
  it 'should fill by id' do
@@ -2,8 +2,8 @@ require 'spec_helper'
2
2
 
3
3
  describe 'fill text input' do
4
4
  before do
5
- Capybara.app = Hey.new('form_elements.html')
6
5
  @user = Kameleon::User::Guest.new(self)
6
+ @user.debug.visit('/form_elements.html')
7
7
  end
8
8
 
9
9
  it 'should fill by id' do
@@ -2,8 +2,8 @@ require 'spec_helper'
2
2
 
3
3
  describe '#on_hover' do
4
4
  before do
5
- Capybara.app = Hey.new('on_hover.html')
6
5
  @user = Kameleon::User::Guest.new(self)
6
+ @user.debug.visit('/on_hover.html')
7
7
  end
8
8
 
9
9
  pending do
@@ -2,8 +2,8 @@ require 'spec_helper'
2
2
 
3
3
  describe '#not_see empty fields' do
4
4
  before do
5
- Capybara.app = Hey.new('form_elements.html')
6
5
  @user = Kameleon::User::Guest.new(self)
6
+ @user.debug.visit('/form_elements.html')
7
7
  end
8
8
 
9
9
  it 'should verify status for id' do
@@ -2,8 +2,8 @@ require 'spec_helper'
2
2
 
3
3
  describe '#not_see readonly fields' do
4
4
  before do
5
- Capybara.app = Hey.new('form_elements.html')
6
5
  @user = Kameleon::User::Guest.new(self)
6
+ @user.debug.visit('/form_elements.html')
7
7
  end
8
8
 
9
9
  context 'when text inside fields is not provied' do
@@ -2,8 +2,8 @@ require 'spec_helper'
2
2
 
3
3
  describe '#not_see form elements - fields' do
4
4
  before do
5
- Capybara.app = Hey.new('form_elements.html')
6
5
  @user = Kameleon::User::Guest.new(self)
6
+ @user.debug.visit('/form_elements.html')
7
7
  end
8
8
 
9
9
  it 'should not see by label' do
@@ -2,8 +2,8 @@ require 'spec_helper'
2
2
 
3
3
  describe '#not_see form elements - textareas' do
4
4
  before do
5
- Capybara.app = Hey.new('form_elements.html')
6
5
  @user = Kameleon::User::Guest.new(self)
6
+ @user.debug.visit('/form_elements.html')
7
7
  end
8
8
 
9
9
  it 'should not see one' do
@@ -2,8 +2,8 @@ require 'spec_helper'
2
2
 
3
3
  describe '#not_see form elements - text inputs' do
4
4
  before do
5
- Capybara.app = Hey.new('form_elements.html')
6
5
  @user = Kameleon::User::Guest.new(self)
6
+ @user.debug.visit('/form_elements.html')
7
7
  end
8
8
 
9
9
  it 'should not see one' do
@@ -2,8 +2,8 @@ require 'spec_helper'
2
2
 
3
3
  describe '#not_see in scopes' do
4
4
  before do
5
- Capybara.app = Hey.new('scopes.html')
6
5
  @user = Kameleon::User::Guest.new(self)
6
+ @user.debug.visit('/scopes.html')
7
7
  end
8
8
 
9
9
  context '#will' do
@@ -33,6 +33,8 @@ describe '#not_see in scopes' do
33
33
  end
34
34
 
35
35
  it 'should not see in many selctors scope' do
36
+ @user = Kameleon::User::Guest.new(self, :driver => :rack_test)
37
+ @user.debug.visit('/scopes.html')
36
38
  @user.within(:xpath, '//div[@id="footer"]/span | //div[@id="main"]/div[@id="left"]', :select_multiple) do
37
39
  not_see 'Right side', 'Sample text in top of page', 'Sample text in footer'
38
40
  end
@@ -2,8 +2,8 @@ require 'spec_helper'
2
2
 
3
3
  describe '#not_see special elements - buttons' do
4
4
  before do
5
- Capybara.app = Hey.new('special_elements.html')
6
5
  @user = Kameleon::User::Guest.new(self)
6
+ @user.debug.visit('/special_elements.html')
7
7
  end
8
8
 
9
9
  it 'should not see one button' do
@@ -2,8 +2,8 @@ require 'spec_helper'
2
2
 
3
3
  describe '#not_see special elements - error message for' do
4
4
  before do
5
- Capybara.app = Hey.new('error_message_for.html')
6
5
  @user = Kameleon::User::Guest.new(self)
6
+ @user.debug.visit('/error_message_for.html')
7
7
  end
8
8
 
9
9
  it 'should not see one messages' do
@@ -2,8 +2,8 @@ require 'spec_helper'
2
2
 
3
3
  describe '#not_see special elements - images' do
4
4
  before do
5
- Capybara.app = Hey.new('special_elements.html')
6
5
  @user = Kameleon::User::Guest.new(self)
6
+ @user.debug.visit('/special_elements.html')
7
7
  end
8
8
 
9
9
  it 'should not see one image' do
@@ -2,8 +2,8 @@ require 'spec_helper'
2
2
 
3
3
  describe '#not_see special elements - links' do
4
4
  before do
5
- Capybara.app = Hey.new('special_elements.html')
6
5
  @user = Kameleon::User::Guest.new(self)
6
+ @user.debug.visit('/special_elements.html')
7
7
  end
8
8
 
9
9
  context 'when src is provided' do
@@ -3,18 +3,18 @@ require 'spec_helper'
3
3
 
4
4
  describe '#not_see special elements - ordered texts' do
5
5
  before do
6
- Capybara.app = Hey.new('special_elements.html')
7
6
  @user = Kameleon::User::Guest.new(self)
7
+ @user.debug.visit('/special_elements.html')
8
8
  end
9
9
 
10
10
  it 'should not see text in proper order' do
11
- @user.not_see :ordered => ['Tomasz Bąk', 'Michał Czyż', 'Rafał Bromirski']
11
+ @user.not_see :ordered => ['Tomasz Bak', 'Michal Czyz', 'Rafal Bromirski']
12
12
  end
13
13
 
14
14
  context 'when texts is in proper order' do
15
15
  it 'should raise error' do
16
16
  expect do
17
- @user.not_see :ordered => ['Michał Czyż', 'Tomasz Bąk', 'Rafał Bromirski']
17
+ @user.not_see :ordered => ['Michal Czyz', 'Tomasz Bak', 'Rafal Bromirski']
18
18
  end.to raise_error(RSpec::Expectations::ExpectationNotMetError)
19
19
  end
20
20
  end
@@ -2,20 +2,24 @@
2
2
  require 'spec_helper'
3
3
 
4
4
  describe '#not_see special selectors in tables' do
5
- before do
6
- Capybara.app = Hey.new('special_elements.html')
7
- @user = Kameleon::User::Guest.new(self)
8
- end
9
5
 
10
6
  context 'when in row' do
7
+ before do
8
+ @user = Kameleon::User::Guest.new(self)
9
+ @user.debug.visit('/special_elements.html')
10
+ end
11
11
  it 'should not see text' do
12
- @user.within(:row => 'Michał Czyż') do
12
+ @user.within(:row => 'Michal Czyz') do
13
13
  not_see "17"
14
14
  end
15
15
  end
16
16
  end
17
17
 
18
18
  context 'when in column' do
19
+ before do
20
+ @user = Kameleon::User::Guest.new(self, {:driver => :rack_test})
21
+ @user.debug.visit('/special_elements.html')
22
+ end
19
23
  context 'when scoped by full text' do
20
24
  it 'should not see text' do
21
25
  @user.within(:column => 'Selleo') do
@@ -2,8 +2,8 @@ require 'spec_helper'
2
2
 
3
3
  describe '#not_see texts' do
4
4
  before do
5
- Capybara.app = Hey.new('texts.html')
6
5
  @user = Kameleon::User::Guest.new(self)
6
+ @user.debug.visit('/texts.html')
7
7
  end
8
8
 
9
9
  it 'should not see single text' do
@@ -2,8 +2,8 @@ require 'spec_helper'
2
2
 
3
3
  describe '#see counted elements' do
4
4
  before do
5
- Capybara.app = Hey.new('elements_counter.html')
6
5
  @user = Kameleon::User::Guest.new(self)
6
+ @user.debug.visit('/elements_counter.html')
7
7
  end
8
8
 
9
9
  context 'when page areas has attribute' do
@@ -3,8 +3,8 @@ require 'spec_helper'
3
3
 
4
4
  describe '#see form elements - checkboxes' do
5
5
  before do
6
- Capybara.app = Hey.new('form_elements.html')
7
6
  @user = Kameleon::User::Guest.new(self)
7
+ @user.debug.visit('/form_elements.html')
8
8
  end
9
9
 
10
10
  context 'when status checked' do
@@ -2,8 +2,8 @@ require 'spec_helper'
2
2
 
3
3
  describe '#see disabled fields' do
4
4
  before do
5
- Capybara.app = Hey.new('form_elements.html')
6
5
  @user = Kameleon::User::Guest.new(self)
6
+ @user.debug.visit('/form_elements.html')
7
7
  end
8
8
 
9
9
  it 'should verify status for id' do
@@ -2,8 +2,8 @@ require 'spec_helper'
2
2
 
3
3
  describe '#see empty fields' do
4
4
  before do
5
- Capybara.app = Hey.new('form_elements.html')
6
5
  @user = Kameleon::User::Guest.new(self)
6
+ @user.debug.visit('/form_elements.html')
7
7
  end
8
8
 
9
9
  it 'should verify status for id' do
@@ -2,8 +2,8 @@ require 'spec_helper'
2
2
 
3
3
  describe '#see readonly fields' do
4
4
  before do
5
- Capybara.app = Hey.new('form_elements.html')
6
5
  @user = Kameleon::User::Guest.new(self)
6
+ @user.debug.visit('/form_elements.html')
7
7
  end
8
8
 
9
9
  context 'when text inside fields is not provied' do
@@ -2,8 +2,8 @@ require 'spec_helper'
2
2
 
3
3
  describe '#see form elements - fields' do
4
4
  before do
5
- Capybara.app = Hey.new('form_elements.html')
6
5
  @user = Kameleon::User::Guest.new(self)
6
+ @user.debug.visit('/form_elements.html')
7
7
  end
8
8
 
9
9
  it 'should see by label' do
@@ -2,8 +2,8 @@ require 'spec_helper'
2
2
 
3
3
  describe '#see form elements - multiple selects' do
4
4
  before do
5
- Capybara.app = Hey.new('form_elements.html')
6
5
  @user = Kameleon::User::Guest.new(self)
6
+ @user.debug.visit('/form_elements.html')
7
7
  end
8
8
 
9
9
  context 'when status "selected"' do
@@ -3,8 +3,8 @@ require 'spec_helper'
3
3
 
4
4
  describe '#see form elements - radio buttons' do
5
5
  before do
6
- Capybara.app = Hey.new('form_elements.html')
7
6
  @user = Kameleon::User::Guest.new(self)
7
+ @user.debug.visit('/form_elements.html')
8
8
  end
9
9
 
10
10
  context 'status "checked"' do
@@ -2,8 +2,8 @@ require 'spec_helper'
2
2
 
3
3
  describe '#see form elements - selects' do
4
4
  before do
5
- Capybara.app = Hey.new('form_elements.html')
6
5
  @user = Kameleon::User::Guest.new(self)
6
+ @user.debug.visit('/form_elements.html')
7
7
  end
8
8
 
9
9
  context 'status "selected"' do
@@ -2,8 +2,8 @@ require 'spec_helper'
2
2
 
3
3
  describe '#see form elements - textareas' do
4
4
  before do
5
- Capybara.app = Hey.new('form_elements.html')
6
5
  @user = Kameleon::User::Guest.new(self)
6
+ @user.debug.visit('/form_elements.html')
7
7
  end
8
8
 
9
9
  it 'should see by id' do
@@ -2,8 +2,8 @@ require 'spec_helper'
2
2
 
3
3
  describe '#see form elements - text inputs' do
4
4
  before do
5
- Capybara.app = Hey.new('form_elements.html')
6
5
  @user = Kameleon::User::Guest.new(self)
6
+ @user.debug.visit('/form_elements.html')
7
7
  end
8
8
 
9
9
  it 'should see by id' do