kameleon 0.0.8 → 0.0.9

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.
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