howitzer 2.1.1 → 2.4.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.
Files changed (129) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +44 -1
  3. data/LICENSE +1 -1
  4. data/README.md +19 -17
  5. data/generators/base_generator.rb +5 -7
  6. data/generators/config/config_generator.rb +3 -4
  7. data/generators/config/templates/boot.rb +2 -2
  8. data/generators/config/templates/capybara.rb +4 -5
  9. data/generators/config/templates/default.yml +21 -11
  10. data/generators/config/templates/drivers/browserstack.rb +31 -4
  11. data/generators/config/templates/drivers/crossbrowsertesting.rb +9 -11
  12. data/generators/config/templates/drivers/headless_chrome.rb +1 -1
  13. data/generators/config/templates/drivers/headless_firefox.rb +23 -0
  14. data/generators/config/templates/drivers/lambdatest.rb +30 -0
  15. data/generators/config/templates/drivers/sauce.rb +30 -2
  16. data/generators/config/templates/drivers/selenium.rb +1 -1
  17. data/generators/config/templates/drivers/selenium_grid.rb +3 -3
  18. data/generators/config/templates/drivers/testingbot.rb +29 -2
  19. data/generators/cucumber/templates/cuke_sniffer.rake +2 -2
  20. data/generators/cucumber/templates/env.rb +8 -0
  21. data/generators/cucumber/templates/hooks.rb +9 -3
  22. data/generators/cucumber/templates/transformers.rb +1 -1
  23. data/generators/prerequisites/templates/factory_bot.rb +2 -1
  24. data/generators/root/root_generator.rb +1 -1
  25. data/generators/root/templates/Gemfile.erb +4 -10
  26. data/generators/rspec/templates/spec_helper.rb +6 -5
  27. data/generators/turnip/templates/spec_helper.rb +6 -5
  28. data/generators/web/templates/example_page.rb +1 -1
  29. data/lib/howitzer/cache.rb +20 -19
  30. data/lib/howitzer/capybara_helpers.rb +59 -14
  31. data/lib/howitzer/email.rb +3 -2
  32. data/lib/howitzer/exceptions.rb +21 -21
  33. data/lib/howitzer/gmail_api/client.rb +13 -4
  34. data/lib/howitzer/log.rb +6 -6
  35. data/lib/howitzer/mail_adapters/gmail.rb +3 -0
  36. data/lib/howitzer/mail_adapters/mailgun.rb +3 -1
  37. data/lib/howitzer/mail_adapters/mailtrap.rb +3 -0
  38. data/lib/howitzer/mailgun_api/client.rb +3 -2
  39. data/lib/howitzer/mailgun_api/connector.rb +1 -0
  40. data/lib/howitzer/mailgun_api/response.rb +1 -2
  41. data/lib/howitzer/mailtrap_api/client.rb +1 -1
  42. data/lib/howitzer/meta/actions.rb +35 -0
  43. data/lib/howitzer/meta/element.rb +40 -0
  44. data/lib/howitzer/meta/entry.rb +62 -0
  45. data/lib/howitzer/meta/iframe.rb +41 -0
  46. data/lib/howitzer/meta/section.rb +30 -0
  47. data/lib/howitzer/meta.rb +11 -0
  48. data/lib/howitzer/utils/string_extensions.rb +6 -2
  49. data/lib/howitzer/version.rb +1 -1
  50. data/lib/howitzer/web/base_section.rb +1 -1
  51. data/lib/howitzer/web/capybara_context_holder.rb +1 -0
  52. data/lib/howitzer/web/capybara_methods_proxy.rb +15 -6
  53. data/lib/howitzer/web/element_dsl.rb +104 -44
  54. data/lib/howitzer/web/iframe_dsl.rb +4 -2
  55. data/lib/howitzer/web/page.rb +14 -14
  56. data/lib/howitzer/web/page_dsl.rb +18 -6
  57. data/lib/howitzer/web/page_validator.rb +27 -26
  58. data/lib/howitzer/web/section.rb +13 -2
  59. data/lib/howitzer/web/section_dsl.rb +65 -30
  60. data/lib/howitzer.rb +40 -0
  61. metadata +31 -157
  62. data/.coveralls.yml +0 -1
  63. data/.gitignore +0 -14
  64. data/.rspec +0 -3
  65. data/.rubocop.yml +0 -51
  66. data/.ruby-gemset +0 -1
  67. data/.travis.yml +0 -7
  68. data/Gemfile +0 -14
  69. data/ISSUE_TEMPLATE.md +0 -16
  70. data/MAINTENANCE.md +0 -32
  71. data/Rakefile +0 -38
  72. data/features/cli_help.feature +0 -31
  73. data/features/cli_new.feature +0 -389
  74. data/features/cli_unknown.feature +0 -17
  75. data/features/cli_update.feature +0 -218
  76. data/features/cli_version.feature +0 -14
  77. data/features/step_definitions/common_steps.rb +0 -34
  78. data/features/support/env.rb +0 -1
  79. data/generators/config/templates/drivers/phantomjs.rb +0 -19
  80. data/generators/config/templates/drivers/poltergeist.rb +0 -11
  81. data/generators/config/templates/drivers/webkit.rb +0 -6
  82. data/generators/root/templates/.gitignore +0 -21
  83. data/generators/root/templates/.rubocop.yml +0 -35
  84. data/generators/turnip/templates/.rspec +0 -1
  85. data/howitzer.gemspec +0 -39
  86. data/lib/howitzer/mail_adapters/debugmail.rb +0 -0
  87. data/spec/config/custom.yml +0 -9
  88. data/spec/spec_helper.rb +0 -73
  89. data/spec/support/generator_helper.rb +0 -21
  90. data/spec/support/logger_helper.rb +0 -13
  91. data/spec/support/shared_examples/capybara_context_holder.rb +0 -33
  92. data/spec/support/shared_examples/capybara_methods_proxy.rb +0 -94
  93. data/spec/support/shared_examples/dynamic_section_methods.rb +0 -35
  94. data/spec/support/shared_examples/element_dsl.rb +0 -242
  95. data/spec/unit/generators/base_generator_spec.rb +0 -283
  96. data/spec/unit/generators/config_generator_spec.rb +0 -59
  97. data/spec/unit/generators/cucumber_generator_spec.rb +0 -62
  98. data/spec/unit/generators/emails_generator_spec.rb +0 -35
  99. data/spec/unit/generators/prerequisites_generator_spec.rb +0 -53
  100. data/spec/unit/generators/root_generator_spec.rb +0 -75
  101. data/spec/unit/generators/rspec_generator_spec.rb +0 -36
  102. data/spec/unit/generators/tasks_generator_spec.rb +0 -31
  103. data/spec/unit/generators/turnip_generator_spec.rb +0 -52
  104. data/spec/unit/generators/web_generator_spec.rb +0 -52
  105. data/spec/unit/lib/cache_spec.rb +0 -85
  106. data/spec/unit/lib/capybara_helpers_spec.rb +0 -697
  107. data/spec/unit/lib/email_spec.rb +0 -186
  108. data/spec/unit/lib/gmail_api/client_spec.rb +0 -26
  109. data/spec/unit/lib/howitzer_spec.rb +0 -69
  110. data/spec/unit/lib/init_spec.rb +0 -2
  111. data/spec/unit/lib/log_spec.rb +0 -122
  112. data/spec/unit/lib/mail_adapters/abstract_spec.rb +0 -62
  113. data/spec/unit/lib/mail_adapters/gmail_spec.rb +0 -128
  114. data/spec/unit/lib/mail_adapters/mailgun_spec.rb +0 -158
  115. data/spec/unit/lib/mail_adapters/mailtrap_spec.rb +0 -130
  116. data/spec/unit/lib/mailgun_api/client_spec.rb +0 -80
  117. data/spec/unit/lib/mailgun_api/connector_spec.rb +0 -54
  118. data/spec/unit/lib/mailgun_api/response_spec.rb +0 -28
  119. data/spec/unit/lib/mailtrap_api/client_spec.rb +0 -67
  120. data/spec/unit/lib/utils/string_extensions_spec.rb +0 -77
  121. data/spec/unit/lib/web/base_section_spec.rb +0 -43
  122. data/spec/unit/lib/web/element_dsl_spec.rb +0 -22
  123. data/spec/unit/lib/web/iframe_dsl_spec.rb +0 -203
  124. data/spec/unit/lib/web/page_dsl_spec.rb +0 -74
  125. data/spec/unit/lib/web/page_spec.rb +0 -378
  126. data/spec/unit/lib/web/page_validator_spec.rb +0 -276
  127. data/spec/unit/lib/web/section_dsl_spec.rb +0 -165
  128. data/spec/unit/lib/web/section_spec.rb +0 -63
  129. data/spec/unit/version_spec.rb +0 -8
@@ -1,52 +0,0 @@
1
- require 'spec_helper'
2
-
3
- RSpec.describe 'Generators' do
4
- let(:destination) { Howitzer::BaseGenerator.destination }
5
- let(:output) { StringIO.new }
6
- subject { file_tree_info(destination) }
7
- before do
8
- Howitzer::BaseGenerator.logger = output
9
- generator_name.new(turnip: true)
10
- end
11
- after { FileUtils.rm_r(destination) }
12
-
13
- describe Howitzer::TurnipGenerator do
14
- let(:generator_name) { described_class }
15
- let(:expected_result) do
16
- [
17
- { name: '/.rspec', is_directory: false, size: 15 },
18
- { name: '/spec', is_directory: true },
19
- { name: '/spec/acceptance', is_directory: true },
20
- {
21
- name: '/spec/acceptance/example.feature',
22
- is_directory: false,
23
- size: template_file_size('turnip', 'example.feature')
24
- },
25
- { name: '/spec/spec_helper.rb', is_directory: false, size: template_file_size('turnip', 'spec_helper.rb') },
26
- { name: '/spec/steps', is_directory: true },
27
- {
28
- name: '/spec/steps/common_steps.rb',
29
- is_directory: false,
30
- size: template_file_size('turnip', 'common_steps.rb')
31
- },
32
- { name: '/spec/turnip_helper.rb', is_directory: false, size: template_file_size('turnip', 'turnip_helper.rb') },
33
- { name: '/tasks', is_directory: true },
34
- { name: '/tasks/turnip.rake', is_directory: false, size: template_file_size('turnip', 'turnip.rake') }
35
- ]
36
- end
37
- it { is_expected.to eql(expected_result) }
38
- describe 'output' do
39
- let(:expected_output) do
40
- "#{ColorizedString.new(' * Turnip integration to the framework ...').light_cyan}
41
- #{ColorizedString.new('Added').light_green} '.rspec' file
42
- #{ColorizedString.new('Added').light_green} 'spec/spec_helper.rb' file
43
- #{ColorizedString.new('Added').light_green} 'spec/turnip_helper.rb' file
44
- #{ColorizedString.new('Added').light_green} 'spec/acceptance/example.feature' file
45
- #{ColorizedString.new('Added').light_green} 'spec/steps/common_steps.rb' file
46
- #{ColorizedString.new('Added').light_green} 'tasks/turnip.rake' file\n"
47
- end
48
- subject { output.string }
49
- it { is_expected.to eql(expected_output) }
50
- end
51
- end
52
- end
@@ -1,52 +0,0 @@
1
- require 'spec_helper'
2
-
3
- RSpec.describe 'Generators' do
4
- let(:destination) { Howitzer::BaseGenerator.destination }
5
- let(:output) { StringIO.new }
6
- subject { file_tree_info(destination) }
7
- before do
8
- Howitzer::BaseGenerator.logger = output
9
- generator_name.new({})
10
- end
11
- after { FileUtils.rm_r(destination) }
12
-
13
- describe Howitzer::WebGenerator do
14
- let(:generator_name) { described_class }
15
- let(:expected_result) do
16
- [
17
- {
18
- name: '/web',
19
- is_directory: true
20
- },
21
- {
22
- name: '/web/pages',
23
- is_directory: true
24
- },
25
- {
26
- name: '/web/pages/example_page.rb',
27
- is_directory: false,
28
- size: template_file_size('web', 'example_page.rb')
29
- },
30
- {
31
- name: '/web/sections',
32
- is_directory: true
33
- },
34
- {
35
- name: '/web/sections/menu_section.rb',
36
- is_directory: false,
37
- size: template_file_size('web', 'menu_section.rb')
38
- }
39
- ]
40
- end
41
- it { is_expected.to eql(expected_result) }
42
- describe 'output' do
43
- let(:expected_output) do
44
- "#{ColorizedString.new(' * PageOriented pattern structure generation ...').light_cyan}
45
- #{ColorizedString.new('Added').light_green} 'web/pages/example_page.rb' file
46
- #{ColorizedString.new('Added').light_green} 'web/sections/menu_section.rb' file\n"
47
- end
48
- subject { output.string }
49
- it { is_expected.to eql(expected_output) }
50
- end
51
- end
52
- end
@@ -1,85 +0,0 @@
1
- require 'spec_helper'
2
- require 'howitzer/cache'
3
-
4
- RSpec.describe Howitzer::Cache do
5
- before { described_class.data.clear }
6
- describe '.store' do
7
- subject { described_class.store(ns, 7, :halt) }
8
- context 'when namespace specified' do
9
- let(:ns) { :user }
10
- it 'should return value' do
11
- is_expected.to eql(:halt)
12
- end
13
- it 'should store namespace value' do
14
- subject
15
- expect(described_class.data[:user]).to eql(7 => :halt)
16
- end
17
- end
18
- context 'when namespace empty' do
19
- let(:ns) { nil }
20
- it { expect { subject }.to raise_error(Howitzer::NoDataError, 'Data storage namespace can not be empty') }
21
- end
22
- end
23
- describe '.extract' do
24
- subject { described_class.extract(ns, key) }
25
- before { described_class.data[:user] = { 7 => :exit } }
26
- describe 'when namespace specified' do
27
- let(:ns) { :user }
28
- context 'and namespace key found' do
29
- let(:key) { 7 }
30
- it { is_expected.to eql(:exit) }
31
- end
32
- context 'and namespace key not found' do
33
- let(:key) { 5 }
34
- it { is_expected.to be_nil }
35
- end
36
- context 'but namespace key not specified' do
37
- let(:key) { nil }
38
- it { is_expected.to eql(7 => :exit) }
39
- end
40
- end
41
- context 'when namespace not found' do
42
- let(:ns) { :guest }
43
- let(:key) { 11 }
44
- it { is_expected.to be_nil }
45
- end
46
- context 'when namespace not specified' do
47
- let(:ns) { nil }
48
- let(:key) { nil }
49
- it { expect { subject }.to raise_error(Howitzer::NoDataError, 'Data storage namespace can not be empty') }
50
- end
51
- end
52
- describe '.clear_ns' do
53
- subject { described_class.clear_ns(:user) }
54
- before { described_class.data[:user] = { 7 => :exit } }
55
- it 'should return empty hash' do
56
- subject
57
- data = described_class.instance_variable_get(:@data)
58
- expect(data[:user]).to eql({})
59
- end
60
- end
61
- describe '.clear_all_ns' do
62
- before do
63
- described_class.store(:cloud, :status, false)
64
- described_class.store(:foo, 'foo', 'some value1')
65
- described_class.store(:bar, 'bar', 'some value2')
66
- described_class.store(:baz, 'baz', 'some value3')
67
- end
68
- context 'when default argument' do
69
- before { described_class.clear_all_ns }
70
- it { expect(described_class.data).to eq(cloud: { status: false }, foo: {}, bar: {}, baz: {}) }
71
- end
72
- context 'when custom argument' do
73
- let(:exception_list) { %i[foo bar] }
74
- before { described_class.clear_all_ns(exception_list) }
75
- it do
76
- expect(described_class.data).to eq(
77
- cloud: {},
78
- foo: { 'foo' => 'some value1' },
79
- bar: { 'bar' => 'some value2' },
80
- baz: {}
81
- )
82
- end
83
- end
84
- end
85
- end