page_magic 2.0.4 → 2.0.10

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 (53) hide show
  1. checksums.yaml +4 -4
  2. data/VERSION +1 -1
  3. data/lib/page_magic/session.rb +12 -3
  4. metadata +55 -90
  5. data/.codeclimate.yml +0 -4
  6. data/.pullreview.yml +0 -14
  7. data/.rspec +0 -1
  8. data/.rubocop.yml +0 -39
  9. data/.simplecov +0 -10
  10. data/.zsh_config +0 -6
  11. data/Dockerfile +0 -11
  12. data/Gemfile +0 -24
  13. data/Gemfile.lock +0 -175
  14. data/Makefile +0 -17
  15. data/Rakefile +0 -32
  16. data/circle.yml +0 -8
  17. data/page_magic.gemspec +0 -128
  18. data/spec/lib/active_support/core_ext/object/to_query_test.rb +0 -78
  19. data/spec/page_magic/class_methods_spec.rb +0 -92
  20. data/spec/page_magic/comparator/fuzzy_spec.rb +0 -44
  21. data/spec/page_magic/comparator/literal_spec.rb +0 -41
  22. data/spec/page_magic/comparator/null_spec.rb +0 -35
  23. data/spec/page_magic/comparator/parameter_map_spec.rb +0 -75
  24. data/spec/page_magic/driver_spec.rb +0 -40
  25. data/spec/page_magic/drivers/poltergeist_spec.rb +0 -8
  26. data/spec/page_magic/drivers/rack_test_spec.rb +0 -8
  27. data/spec/page_magic/drivers/selenium_spec.rb +0 -15
  28. data/spec/page_magic/drivers_spec.rb +0 -48
  29. data/spec/page_magic/element/locators_spec.rb +0 -36
  30. data/spec/page_magic/element/not_found_spec.rb +0 -24
  31. data/spec/page_magic/element/query/multiple_results_spec.rb +0 -14
  32. data/spec/page_magic/element/query/single_result_spec.rb +0 -21
  33. data/spec/page_magic/element/query_spec.rb +0 -38
  34. data/spec/page_magic/element/selector_spec.rb +0 -166
  35. data/spec/page_magic/element_context_spec.rb +0 -72
  36. data/spec/page_magic/element_definition_builder_spec.rb +0 -19
  37. data/spec/page_magic/element_spec.rb +0 -256
  38. data/spec/page_magic/elements/config_spec.rb +0 -203
  39. data/spec/page_magic/elements_spec.rb +0 -125
  40. data/spec/page_magic/instance_methods_spec.rb +0 -90
  41. data/spec/page_magic/mapping_spec.rb +0 -181
  42. data/spec/page_magic/session_methods_spec.rb +0 -40
  43. data/spec/page_magic/session_spec.rb +0 -149
  44. data/spec/page_magic/transitions_spec.rb +0 -43
  45. data/spec/page_magic/utils/string_spec.rb +0 -29
  46. data/spec/page_magic/utils/url_spec.rb +0 -9
  47. data/spec/page_magic/wait_methods_spec.rb +0 -35
  48. data/spec/page_magic/watcher_spec.rb +0 -22
  49. data/spec/page_magic/watchers_spec.rb +0 -80
  50. data/spec/page_magic_spec.rb +0 -115
  51. data/spec/spec_helper.rb +0 -15
  52. data/spec/support/shared_contexts.rb +0 -5
  53. data/spec/support/shared_examples.rb +0 -25
@@ -1,44 +0,0 @@
1
- RSpec.describe PageMagic::Comparator::Fuzzy do
2
- describe '#fuzzy?' do
3
- context 'when one value is fuzzy' do
4
- it 'returns true' do
5
- map = described_class.new(//)
6
- expect(map).to be_fuzzy
7
- end
8
- end
9
- end
10
-
11
- describe 'match?' do
12
- context 'when comparator contains the parameter' do
13
- it 'returns true' do
14
- expect(described_class.new(/f*o/)).to be_match('foo')
15
- end
16
- end
17
-
18
- context 'when comparator does not contains the parameter' do
19
- it 'returns false' do
20
- expect(described_class.new(/f*o/)).not_to be_match('bar')
21
- end
22
- end
23
- end
24
-
25
- describe '#<=>' do
26
- context 'when other is `Null`' do
27
- it 'is lesser' do
28
- expect(described_class.new(//) <=> PageMagic::Comparator::Null.new).to be(-1)
29
- end
30
- end
31
-
32
- context 'when other is `Fuzzy`' do
33
- it 'is equal' do
34
- expect(described_class.new(//) <=> described_class.new(//)).to be 0
35
- end
36
- end
37
-
38
- context 'when other is `Literal`' do
39
- it 'is greater' do
40
- expect(described_class.new(//) <=> PageMagic::Comparator::Literal.new('/')).to be 1
41
- end
42
- end
43
- end
44
- end
@@ -1,41 +0,0 @@
1
- RSpec.describe PageMagic::Comparator::Literal do
2
- describe 'match?' do
3
- context 'when parameter is the same' do
4
- it 'returns true' do
5
- expect(described_class.new('/')).to be_match('/')
6
- end
7
- end
8
-
9
- context 'when it parameter is not the same' do
10
- it 'returns false' do
11
- expect(described_class.new('/')).not_to be_match('foo')
12
- end
13
- end
14
- end
15
-
16
- describe '#fuzzy?' do
17
- it 'returns false' do
18
- expect(described_class.new('value')).not_to be_fuzzy
19
- end
20
- end
21
-
22
- describe '#<=>' do
23
- context 'when other is `Null`' do
24
- it 'is greater' do
25
- expect(described_class.new('/') <=> PageMagic::Comparator::Null.new).to be 1
26
- end
27
- end
28
-
29
- context 'when other is `Fuzzy`' do
30
- it 'is greater' do
31
- expect(described_class.new('/') <=> PageMagic::Comparator::Fuzzy.new(//)).to be 1
32
- end
33
- end
34
-
35
- context 'when other is `Literal`' do
36
- it 'is equal' do
37
- expect(described_class.new('/') <=> described_class.new('/')).to be 0
38
- end
39
- end
40
- end
41
- end
@@ -1,35 +0,0 @@
1
- RSpec.describe PageMagic::Comparator::Null do
2
- describe '#fuzzy?' do
3
- context 'when one value is fuzzy' do
4
- it 'returns true' do
5
- expect(described_class.new).not_to be_fuzzy
6
- end
7
- end
8
- end
9
-
10
- describe 'match?' do
11
- it 'returns false' do
12
- expect(described_class.new).to be_match(true)
13
- end
14
- end
15
-
16
- describe '#<=>' do
17
- context 'when other is `Null`' do
18
- it 'is equal' do
19
- expect(described_class.new <=> described_class.new).to be 0
20
- end
21
- end
22
-
23
- context 'when other is `Fuzzy`' do
24
- it 'is greater' do
25
- expect(described_class.new <=> PageMagic::Comparator::Fuzzy.new(//)).to be 1
26
- end
27
- end
28
-
29
- context 'when other is `Literal`' do
30
- it 'is greater' do
31
- expect(described_class.new <=> PageMagic::Comparator::Literal.new('/')).to be 1
32
- end
33
- end
34
- end
35
- end
@@ -1,75 +0,0 @@
1
- RSpec.describe PageMagic::Comparator::ParameterMap do
2
- describe '#fuzzy?' do
3
- context 'when one value is fuzzy' do
4
- it 'returns true' do
5
- map = described_class.new({ param1: //, param2: '' })
6
- expect(map).to be_fuzzy
7
- end
8
- end
9
-
10
- context 'when all values are literal' do
11
- it 'returns true' do
12
- map = described_class.new({ param1: '', param2: '' })
13
- expect(map).not_to be_fuzzy
14
- end
15
- end
16
- end
17
-
18
- describe '#match?' do
19
- context 'when param has compatible params' do
20
- it 'returns true' do
21
- expect(described_class.new({ param: '1' })).to be_match(param: '1')
22
- end
23
- end
24
-
25
- context 'when it does not have compatible params' do
26
- it 'returns false' do
27
- expect(described_class.new({ param: '1' })).not_to be_match(param: '2')
28
- end
29
- end
30
-
31
- context 'when it does not meet all of the requirements' do
32
- it 'returns false' do
33
- expect(described_class.new({ param: '1', another_param: '2' })).not_to be_match(param: '1')
34
- end
35
- end
36
- end
37
-
38
- describe '#<=>' do
39
- context 'when other is empty' do
40
- context 'and self is empty' do
41
- it 'is equal' do
42
- expect(described_class.new({}) <=> described_class.new({})).to be 0
43
- end
44
- end
45
-
46
- context 'self is not empty' do
47
- it 'is greater' do
48
- expect(described_class.new({ param: 1 }) <=> described_class.new({})).to be 1
49
- end
50
- end
51
- end
52
-
53
- context 'when other contains matchers' do
54
- context 'when other has the same number' do
55
- context 'and matchers are of the same type' do
56
- it 'is equal' do
57
- expect(described_class.new({ param: // }) <=> described_class.new({ param: // })).to be 0
58
- end
59
- end
60
-
61
- context 'and has less literal matchers' do
62
- it 'is lesser' do
63
- expect(described_class.new({ param: '' }) <=> described_class.new({ param: // })).to be 1
64
- end
65
- end
66
- end
67
-
68
- context 'when other has the less' do
69
- it 'is lesser' do
70
- expect(described_class.new({ param: // }) <=> described_class.new({})).to be 1
71
- end
72
- end
73
- end
74
- end
75
- end
@@ -1,40 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe PageMagic::Driver do
4
- describe '#build' do
5
- it 'returns the result of the block passed to the driver class constructor' do
6
- subject = described_class.new(:custom_browser) do
7
- :driver
8
- end
9
- expect(subject.build(:rack_app, browser: :custom_browser, options: {})).to eq(:driver)
10
- end
11
-
12
- it 'passes rack app to the handler' do
13
- subject = described_class.new(:custom_browser) do |app, options, browser|
14
- expect(app).to eq(:rack_app)
15
- expect(options).to eq(:options)
16
- expect(browser).to eq(:browser)
17
- end
18
-
19
- subject.build(:rack_app, options: :options, browser: :browser)
20
- end
21
- end
22
-
23
- describe '#supports?' do
24
- subject do
25
- described_class.new :custom_browser
26
- end
27
-
28
- context 'browser is in supported browsers' do
29
- it 'returns true' do
30
- expect(subject.support?(:custom_browser)).to eq(true)
31
- end
32
- end
33
-
34
- context 'browser is not in supported browsers' do
35
- it 'returns false' do
36
- expect(subject.support?(:unsupported_browser)).to eq(false)
37
- end
38
- end
39
- end
40
- end
@@ -1,8 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe PageMagic::Drivers::Poltergeist do
4
- it "is capybara's poltergeist driver" do
5
- driver = described_class.build(:app, browser: :poltergeist, options: {})
6
- expect(driver).to be_a(Capybara::Poltergeist::Driver)
7
- end
8
- end
@@ -1,8 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe PageMagic::Drivers::RackTest do
4
- it "is capybara's rack test driver" do
5
- driver = described_class.build(:app, browser: :rack_test, options: {})
6
- expect(driver).to be_a(Capybara::RackTest::Driver)
7
- end
8
- end
@@ -1,15 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe PageMagic::Drivers::Selenium do
4
- subject do
5
- described_class.build(:app, browser: :selenium, options: {})
6
- end
7
-
8
- it 'is selenium' do
9
- expect(subject).to be_a(Capybara::Selenium::Driver)
10
- end
11
-
12
- it 'sets the browser option' do
13
- expect(subject.options[:browser]).to be(:selenium)
14
- end
15
- end
@@ -1,48 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe PageMagic::Drivers do
4
- describe '#find' do
5
- it 'returns the registered driver' do
6
- drivers = described_class.new
7
- expected_driver = PageMagic::Driver.new(:browser_driver)
8
-
9
- drivers.register expected_driver
10
- expect(drivers.find(:browser_driver)).to eq(expected_driver)
11
- end
12
- end
13
-
14
- describe '#load' do
15
- require 'tmpdir'
16
-
17
- def scratch_dir
18
- @scratch_dir ||= Dir.mktmpdir
19
- end
20
-
21
- let(:class_definition) do
22
- <<-RUBY
23
- class CustomDriver;
24
- def self.support?(_browser)
25
- true
26
- end
27
- end
28
- RUBY
29
- end
30
-
31
- it 'loads the drivers in the specified path' do
32
- File.write("#{scratch_dir}/custom_driver.rb", class_definition)
33
-
34
- drivers = described_class.new
35
- drivers.load(scratch_dir)
36
- expect(drivers.find(:custom_browser)).to be(::CustomDriver)
37
- end
38
- end
39
-
40
- describe '#register' do
41
- it 'stores the driver' do
42
- drivers = described_class.new
43
- expected_driver = PageMagic::Driver.new(:browser_driver)
44
- drivers.register expected_driver
45
- expect(drivers.all).to eq([expected_driver])
46
- end
47
- end
48
- end
@@ -1,36 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe PageMagic::Element::Locators do
4
- subject { element_clazz.new }
5
-
6
- let(:element_clazz) do
7
- Class.new do
8
- extend(PageMagic::Elements)
9
- include(PageMagic::Element::Locators)
10
- end
11
- end
12
-
13
- describe '#element_by_name' do
14
- it 'returns the required element' do
15
- selector = { id: 'child' }
16
- element_clazz.element :child1, selector
17
- element_clazz.element :child2, id: 'child 2'
18
-
19
- child_1_builder = PageMagic::ElementDefinitionBuilder.new(
20
- definition_class: PageMagic::Element,
21
- selector: PageMagic::Element::Selector.find(:id).build(:element, 'child')
22
- )
23
-
24
- expect(subject.element_by_name(:child1)).to eq(child_1_builder)
25
- end
26
-
27
- context 'element not found' do
28
- it 'raises an error' do
29
- expected_message = (described_class::ELEMENT_NOT_DEFINED_MSG % :child)
30
- expect do
31
- subject.element_by_name(:child)
32
- end.to raise_exception PageMagic::ElementMissingException, expected_message
33
- end
34
- end
35
- end
36
- end
@@ -1,24 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- describe PageMagic::Element::NotFound do
4
- describe '#method_missing' do
5
- it 'raises an error' do
6
- subject = described_class.new(Exception.new('message'))
7
- expect { subject.any_missing_method }.to raise_exception(PageMagic::ElementMissingException, 'message')
8
- end
9
- end
10
-
11
- describe '#visible?' do
12
- it 'returns false' do
13
- subject = described_class.new(Exception.new('message'))
14
- expect(subject.visible?).to eq(false)
15
- end
16
- end
17
-
18
- describe '#present?' do
19
- it 'returns false' do
20
- subject = described_class.new(Exception.new('message'))
21
- expect(subject.present?).to eq(false)
22
- end
23
- end
24
- end
@@ -1,14 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe PageMagic::Element::Query::MultipleResults do
4
- describe '#find' do
5
- context 'when multiple results found' do
6
- it 'returns an array' do
7
- element = PageMagic::Element.load('<a></a><a></a>')
8
- subject = described_class.new('a')
9
- result = subject.execute(element)
10
- expect(result.size).to eq(2)
11
- end
12
- end
13
- end
14
- end
@@ -1,21 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe PageMagic::Element::Query::SingleResult do
4
- describe '#find' do
5
- context 'when more than one result is returned' do
6
- it 'raises an error' do
7
- element = PageMagic::Element.load('<a></a><a></a>')
8
- query = described_class.new('a')
9
- expected_message = 'Ambiguous match, found 2 elements matching visible css "a"'
10
- expect { query.execute(element) }.to raise_error PageMagic::AmbiguousQueryException, expected_message
11
- end
12
- end
13
-
14
- it 'returns the result of the capybara query' do
15
- element = PageMagic::Element.load('<a>link</a>')
16
- query = described_class.new('a')
17
- result = query.execute(element)
18
- expect(result.text).to eq('link')
19
- end
20
- end
21
- end
@@ -1,38 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe PageMagic::Element::Query do
4
- describe '#execute' do
5
- it 'calls find' do
6
- subject = described_class.new
7
- allow(subject).to receive(:find)
8
-
9
- subject.execute(:capybara_element)
10
- expect(subject).to have_received(:find).with(:capybara_element)
11
- end
12
-
13
- context 'when a formatter supplied' do
14
- it 'uses it' do
15
- subject = described_class.new
16
- allow(subject).to receive(:find) { |_r, &formatter| formatter.call(:result) }
17
-
18
- result = subject.execute(:capybara_element) { |capybara_result| "formatter_called_on_#{capybara_result}" }
19
- expect(result).to eq('formatter_called_on_result')
20
- end
21
- end
22
-
23
- context 'when no results are found' do
24
- subject(:query_class) do
25
- Class.new(described_class) do
26
- def find(element)
27
- element.find('missing')
28
- end
29
- end
30
- end
31
-
32
- it 'Returns `NotFound`' do
33
- element = PageMagic::Element.load('<html></html>')
34
- expect(query_class.new.execute(element)).to be_a(PageMagic::Element::NotFound)
35
- end
36
- end
37
- end
38
- end