solidus_dev_support 1.5.0 → 2.2.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 (36) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +10 -17
  3. data/.mergify.yml +2 -0
  4. data/.rubocop.yml +42 -0
  5. data/CHANGELOG.md +72 -0
  6. data/Gemfile +1 -1
  7. data/README.md +13 -4
  8. data/Rakefile +13 -1
  9. data/lib/solidus_dev_support/extension.rb +32 -23
  10. data/lib/solidus_dev_support/rake_tasks.rb +14 -0
  11. data/lib/solidus_dev_support/rspec/capybara.rb +20 -0
  12. data/lib/solidus_dev_support/rspec/feature_helper.rb +17 -18
  13. data/lib/solidus_dev_support/rspec/rails_helper.rb +8 -5
  14. data/lib/solidus_dev_support/rubocop/config.yml +82 -203
  15. data/lib/solidus_dev_support/solidus_command.rb +8 -1
  16. data/lib/solidus_dev_support/templates/extension/.circleci/config.yml +6 -0
  17. data/lib/solidus_dev_support/templates/extension/.github/stale.yml +4 -4
  18. data/lib/solidus_dev_support/templates/extension/CHANGELOG.md +1 -0
  19. data/lib/solidus_dev_support/templates/extension/README.md +18 -10
  20. data/lib/solidus_dev_support/templates/extension/bin/rails-sandbox +1 -1
  21. data/lib/solidus_dev_support/templates/extension/bin/sandbox.tt +2 -0
  22. data/lib/solidus_dev_support/templates/extension/extension.gemspec.tt +4 -4
  23. data/lib/solidus_dev_support/templates/extension/github_changelog_generator +2 -0
  24. data/lib/solidus_dev_support/templates/extension/lib/%file_name%.rb.tt +1 -0
  25. data/lib/solidus_dev_support/templates/extension/lib/%file_name%/configuration.rb.tt +21 -0
  26. data/lib/solidus_dev_support/templates/extension/lib/%file_name%/{factories.rb.tt → testing_support/factories.rb.tt} +0 -0
  27. data/lib/solidus_dev_support/templates/extension/lib/generators/%file_name%/install/install_generator.rb.tt +10 -5
  28. data/lib/solidus_dev_support/templates/extension/lib/generators/%file_name%/install/templates/initializer.rb.tt +6 -0
  29. data/lib/solidus_dev_support/templates/extension/rubocop.yml +3 -0
  30. data/lib/solidus_dev_support/templates/extension/spec/spec_helper.rb.tt +11 -7
  31. data/lib/solidus_dev_support/version.rb +5 -1
  32. data/solidus_dev_support.gemspec +16 -14
  33. data/spec/features/create_extension_spec.rb +187 -0
  34. data/spec/lib/extension_spec.rb +69 -0
  35. data/spec/spec_helper.rb +16 -0
  36. metadata +47 -35
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2320ceaf62d68e7e76f5ebd54a77ed582fddbc0f4933caaba3f823d8f8ebb53f
4
- data.tar.gz: 765116a27d6167455eee850837d71aee6d807a1ff1437efa916c0890db2e638a
3
+ metadata.gz: 0bf90c2bc57b80b7ac05afe68db8c72f7c5156ac479e8fee99d61f38d48ce3b4
4
+ data.tar.gz: '0830edb6f1562d5b58345c9b79702f1d70aab2c5051cc03570772f5dbbef789d'
5
5
  SHA512:
6
- metadata.gz: a263c2ce6e5ce6de123cb52e4e1a9457be7979b2eb811de170efbbfd5c10b774a697efa116899e08a75e5f1062b6f878d8796d543d172d1b369a760089425e70
7
- data.tar.gz: 12a2731dadf62796e4880f7911eb14125691e9fc7886b8bcbde881705a218334e36ac1d5d4602594836fc9de4df0c1eca5b36ecce557522085bae2ce7ccb4970
6
+ metadata.gz: 2afaf6d12de41f7748891da69a9b02a769af1b30bd8124e65378c1633a79a951c608a7d30a5e47267ac3c631029c781a96e6f07e61405e970c7434dd136e27dc
7
+ data.tar.gz: 4db74c432e1bc63e853c195d95d24e3ee7ed97854e0386ebea3ea4533bed82dbe23ee4eff46040d8b7603a126154a9d8fe91c7d899ca81e04a752ff49f40c48b
@@ -7,35 +7,27 @@ orbs:
7
7
  # or goes EOL.
8
8
  solidusio_extensions: solidusio/extensions@volatile
9
9
 
10
- executors:
11
- # We don't rely directly on the DB, but we still want to ensure generated
12
- # extensions are able to connect and spin up Solidus. Using an in-memory
13
- # SQLite makes it blazingly fast.
14
- sqlite-memory:
15
- docker:
16
- - image: circleci/ruby:2.5.6-node-browsers
17
- environment:
18
- RAILS_ENV: test
19
- DB: sqlite
20
- DATABASE_URL: sqlite3::memory:?pool=1
21
- DATABASE_CLEANER_ALLOW_REMOTE_DATABASE_URL: true
22
-
23
10
  commands:
24
11
  setup:
25
12
  steps:
26
13
  - checkout
27
- - run: "gem install bundler -v '>=2' --conservative"
14
+ - run:
15
+ command: "gem install bundler -v '>=2' --conservative"
16
+ no_output_timeout: 20m
28
17
 
29
18
  jobs:
30
19
  solidus-master:
31
- executor: sqlite-memory
20
+ executor: solidusio_extensions/sqlite-memory
32
21
  steps: ['setup', 'solidusio_extensions/run-tests-solidus-master']
33
22
  solidus-current:
34
- executor: sqlite-memory
23
+ executor: solidusio_extensions/sqlite-memory
35
24
  steps: ['setup', 'solidusio_extensions/run-tests-solidus-current']
36
25
  solidus-older:
37
- executor: sqlite-memory
26
+ executor: solidusio_extensions/sqlite-memory
38
27
  steps: ['setup', 'solidusio_extensions/run-tests-solidus-older']
28
+ lint-code:
29
+ executor: solidusio_extensions/sqlite-memory
30
+ steps: ['setup', 'solidusio_extensions/lint-code']
39
31
 
40
32
  workflows:
41
33
  "Run specs on supported Solidus versions":
@@ -43,6 +35,7 @@ workflows:
43
35
  - solidus-master
44
36
  - solidus-current
45
37
  - solidus-older
38
+ - lint-code
46
39
 
47
40
  "Weekly run specs against master":
48
41
  triggers:
@@ -34,6 +34,8 @@ pull_request_rules:
34
34
  - base=master
35
35
  - -label="needs changelog label"
36
36
  - -label=blocked
37
+ - "#approved-reviews-by>=1"
38
+ - -draft
37
39
  actions:
38
40
  merge:
39
41
  method: merge
@@ -1,11 +1,53 @@
1
1
  inherit_from:
2
2
  - https://relaxed.ruby.style/rubocop.yml
3
3
 
4
+ Layout/EmptyLinesAroundAttributeAccessor:
5
+ Enabled: true
6
+ Layout/SpaceAroundMethodCallOperator:
7
+ Enabled: true
8
+ Lint/DeprecatedOpenSSLConstant:
9
+ Enabled: true
10
+ Lint/MixedRegexpCaptureTypes:
11
+ Enabled: true
12
+ Lint/RaiseException:
13
+ Enabled: true
14
+ Lint/StructNewOverride:
15
+ Enabled: true
16
+ Style/AccessorGrouping:
17
+ Enabled: true
18
+ Style/BisectedAttrAccessor:
19
+ Enabled: true
20
+ Style/ExponentialNotation:
21
+ Enabled: true
22
+ Style/HashEachMethods:
23
+ Enabled: true
24
+ Style/HashTransformKeys:
25
+ Enabled: true
26
+ Style/HashTransformValues:
27
+ Enabled: true
28
+ Style/RedundantAssignment:
29
+ Enabled: true
30
+ Style/RedundantFetchBlock:
31
+ Enabled: true
32
+ Style/RedundantRegexpCharacterClass:
33
+ Enabled: true
34
+ Style/RedundantRegexpEscape:
35
+ Enabled: true
36
+ Style/SlicingWithRange:
37
+ Enabled: true
38
+
4
39
  AllCops:
40
+ TargetRubyVersion: 2.5
5
41
  Exclude:
6
42
  - tmp/**/*
43
+ - "vendor/**/*"
44
+ # Generated binstubs
45
+ - bin/rake
46
+ NewCops: enable
7
47
 
8
48
  Style/FrozenStringLiteralComment:
9
49
  Exclude:
10
50
  - "**/bin/*"
11
51
  - "**/exe/*"
52
+ - "spec/**/*"
53
+
@@ -1,5 +1,77 @@
1
1
  # Changelog
2
2
 
3
+ ## [2.2.0](https://github.com/solidusio/solidus_dev_support/tree/2.2.0) (2020-11-27)
4
+
5
+ [Full Changelog](https://github.com/solidusio/solidus_dev_support/compare/v2.1.0...2.2.0)
6
+
7
+ **Implemented enhancements:**
8
+
9
+ - Improve the URL generation for the gemspec and Readme \(defaulting to the solidusio-contrib organization\), consistently use a file-based Changelog [\#159](https://github.com/solidusio/solidus_dev_support/pull/159) ([elia](https://github.com/elia))
10
+ - Configuration Cleanup [\#158](https://github.com/solidusio/solidus_dev_support/pull/158) ([elia](https://github.com/elia))
11
+ - Refer to Solidus wiki page for gem release info [\#157](https://github.com/solidusio/solidus_dev_support/pull/157) ([spaghetticode](https://github.com/spaghetticode))
12
+ - Upgrade to RuboCop 1.0 [\#156](https://github.com/solidusio/solidus_dev_support/pull/156) ([aldesantis](https://github.com/aldesantis))
13
+ - Add a command to display gem's version [\#154](https://github.com/solidusio/solidus_dev_support/pull/154) ([igorbp](https://github.com/igorbp))
14
+
15
+ **Fixed bugs:**
16
+
17
+ - Require "webdrivers" before using it as the default javascript driver [\#152](https://github.com/solidusio/solidus_dev_support/pull/152) ([ccarruitero](https://github.com/ccarruitero))
18
+
19
+ **Merged pull requests:**
20
+
21
+ - Don't let mergify mark a PR as red because it's missing a review [\#153](https://github.com/solidusio/solidus_dev_support/pull/153) ([elia](https://github.com/elia))
22
+
23
+ ## [v2.1.0](https://github.com/solidusio/solidus_dev_support/tree/v2.1.0) (2020-10-02)
24
+
25
+ [Full Changelog](https://github.com/solidusio/solidus_dev_support/compare/v2.0.1...v2.1.0)
26
+
27
+ **Implemented enhancements:**
28
+
29
+ - Add standard github\_changelog\_generator configuration [\#151](https://github.com/solidusio/solidus_dev_support/pull/151) ([aldesantis](https://github.com/aldesantis))
30
+ - Move generated factories to `testing\_support/` [\#150](https://github.com/solidusio/solidus_dev_support/pull/150) ([aldesantis](https://github.com/aldesantis))
31
+ - Add extension configuration boilerplate [\#149](https://github.com/solidusio/solidus_dev_support/pull/149) ([aldesantis](https://github.com/aldesantis))
32
+
33
+ **Fixed bugs:**
34
+
35
+ - Fix `NewCops: Enable` option for RuboCop [\#148](https://github.com/solidusio/solidus_dev_support/pull/148) ([aldesantis](https://github.com/aldesantis))
36
+
37
+ ## [v2.0.1](https://github.com/solidusio/solidus_dev_support/tree/v2.0.1) (2020-09-22)
38
+
39
+ [Full Changelog](https://github.com/solidusio/solidus_dev_support/compare/v2.0.0...v2.0.1)
40
+
41
+ **Fixed bugs:**
42
+
43
+ - Fix gem\_version not being found during extension generation [\#144](https://github.com/solidusio/solidus_dev_support/pull/144) ([aldesantis](https://github.com/aldesantis))
44
+
45
+ ## [v2.0.0](https://github.com/solidusio/solidus_dev_support/tree/v2.0.0) (2020-09-22)
46
+
47
+ [Full Changelog](https://github.com/solidusio/solidus_dev_support/compare/v1.5.0...v2.0.0)
48
+
49
+ **Breaking changes:**
50
+
51
+ - Switch the JS driver to WebDriver/Selenium [\#136](https://github.com/solidusio/solidus_dev_support/pull/136) ([elia](https://github.com/elia))
52
+
53
+ **Implemented enhancements:**
54
+
55
+ - Enable new RuboCop cops automatically [\#143](https://github.com/solidusio/solidus_dev_support/pull/143) ([aldesantis](https://github.com/aldesantis))
56
+ - Don't forcefully close issues via stale-bot [\#139](https://github.com/solidusio/solidus_dev_support/pull/139) ([elia](https://github.com/elia))
57
+ - Add the approximate recommendation for dev-support to the gemspec [\#137](https://github.com/solidusio/solidus_dev_support/pull/137) ([elia](https://github.com/elia))
58
+ - Let the extension name include spaces [\#133](https://github.com/solidusio/solidus_dev_support/pull/133) ([elia](https://github.com/elia))
59
+ - Add precompiled badges fro CI and coverage [\#132](https://github.com/solidusio/solidus_dev_support/pull/132) ([elia](https://github.com/elia))
60
+ - Add Changelog Rake task [\#128](https://github.com/solidusio/solidus_dev_support/pull/128) ([tvdeyen](https://github.com/tvdeyen))
61
+ - Readme fixes [\#122](https://github.com/solidusio/solidus_dev_support/pull/122) ([elia](https://github.com/elia))
62
+
63
+ **Fixed bugs:**
64
+
65
+ - fix capybara driver declaration [\#141](https://github.com/solidusio/solidus_dev_support/pull/141) ([ccarruitero](https://github.com/ccarruitero))
66
+ - Bump RuboCop to latest 0.90.0 version [\#138](https://github.com/solidusio/solidus_dev_support/pull/138) ([peterberkenbosch](https://github.com/peterberkenbosch))
67
+ - Fix missing backslash in solidus install command [\#135](https://github.com/solidusio/solidus_dev_support/pull/135) ([nirebu](https://github.com/nirebu))
68
+ - Don't install a payment-method in the sandbox [\#131](https://github.com/solidusio/solidus_dev_support/pull/131) ([elia](https://github.com/elia))
69
+ - Run extension generator in sandbox [\#127](https://github.com/solidusio/solidus_dev_support/pull/127) ([elia](https://github.com/elia))
70
+
71
+ **Merged pull requests:**
72
+
73
+ - Update readme template [\#109](https://github.com/solidusio/solidus_dev_support/pull/109) ([aldesantis](https://github.com/aldesantis))
74
+
3
75
  ## [v1.5.0](https://github.com/solidusio/solidus_dev_support/tree/v1.5.0) (2020-06-13)
4
76
 
5
77
  [Full Changelog](https://github.com/solidusio/solidus_dev_support/compare/v1.4.0...v1.5.0)
data/Gemfile CHANGED
@@ -15,10 +15,10 @@ gem 'rails', '>0.a'
15
15
 
16
16
  # These gems will be used by the temporary extensions generated by tests
17
17
  group :test do
18
- gem 'solidus_auth_devise'
19
18
  gem 'factory_bot', '> 4.10.0'
20
19
  gem 'mysql2'
21
20
  gem 'pg'
21
+ gem 'solidus_auth_devise'
22
22
  gem 'sqlite3'
23
23
  end
24
24
 
data/README.md CHANGED
@@ -1,6 +1,8 @@
1
1
  # solidus_dev_support
2
2
 
3
- [![CircleCI](https://circleci.com/gh/solidusio/solidus_dev_support.svg?style=svg)](https://circleci.com/gh/solidusio/solidus_dev_support)
3
+
4
+ [![CircleCI](https://circleci.com/gh/solidusio/solidus_dev_support.svg?style=shield)](https://circleci.com/gh/solidusio/solidus_dev_support)
5
+ [![codecov](https://codecov.io/gh/solidusio/solidus_dev_support/branch/master/graph/badge.svg)](https://codecov.io/gh/solidusio/solidus_dev_support)
4
6
 
5
7
  This gem contains common development functionality for Solidus extensions.
6
8
 
@@ -230,9 +232,16 @@ After checking out the repo, run `bin/setup` to install dependencies. Then, run
230
232
  the tests. You can also run `bin/console` for an interactive prompt that will allow you to
231
233
  experiment.
232
234
 
233
- To install this gem onto your local machine, run `bin/rake install`. To release a new
234
- version, update the version number in `version.rb`, and then run `bin/rake release`, which
235
- will create a git tag for the version, push git commits and tags, and push the `.gem` file to
235
+ To install this gem onto your local machine, run `bin/rake install`.
236
+
237
+ To release a new version:
238
+
239
+ 1. update the version number in `version.rb`
240
+ 2. update the changelog with `bin/rake changelog`
241
+ 3. commit the changes using `Bump SolidusDevSupport to 1.2.3` as the message
242
+ 3. run `bin/rake release`
243
+
244
+ The last command will create a git tag for the version, push git commits and tags, and push the `.gem` file to
236
245
  [rubygems.org](https://rubygems.org).
237
246
 
238
247
  ## Contributing
data/Rakefile CHANGED
@@ -1,8 +1,20 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "bundler/gem_tasks"
4
- require "rspec/core/rake_task"
5
4
 
5
+ desc "Update the changelog, specify the version for the unreleased changes appending VERSION=1.2.3 to the command"
6
+ task :changelog do
7
+ require_relative "lib/solidus_dev_support/version"
8
+
9
+ future_release = ENV.fetch("VERSION") {
10
+ warn "Using current version (#{SolidusDevSupport::VERSION}) for unreleased changes, use VERSION=1.2.3 to select a different one."
11
+ SolidusDevSupport::VERSION
12
+ }
13
+
14
+ sh "bundle exec github_changelog_generator --project solidus_dev_support --user solidusio --future-release #{future_release}"
15
+ end
16
+
17
+ require "rspec/core/rake_task"
6
18
  RSpec::Core::RakeTask.new(:spec)
7
19
 
8
20
  task default: :spec
@@ -3,6 +3,8 @@
3
3
  require 'thor'
4
4
  require 'pathname'
5
5
 
6
+ require 'solidus_dev_support/version'
7
+
6
8
  module SolidusDevSupport
7
9
  class Extension < Thor
8
10
  include Thor::Actions
@@ -26,6 +28,7 @@ module SolidusDevSupport
26
28
  make_executable bin
27
29
  end
28
30
 
31
+ template 'CHANGELOG.md', "#{path}/CHANGELOG.md"
29
32
  template 'extension.gemspec', "#{path}/#{file_name}.gemspec"
30
33
  template 'Gemfile', "#{path}/Gemfile"
31
34
  template 'gitignore', "#{path}/.gitignore"
@@ -38,6 +41,7 @@ module SolidusDevSupport
38
41
  template 'rspec', "#{path}/.rspec"
39
42
  template 'spec/spec_helper.rb.tt', "#{path}/spec/spec_helper.rb"
40
43
  template 'rubocop.yml', "#{path}/.rubocop.yml"
44
+ template 'github_changelog_generator', "#{path}/.github_changelog_generator"
41
45
  end
42
46
 
43
47
  no_tasks do
@@ -47,27 +51,36 @@ module SolidusDevSupport
47
51
  @file_name = Thor::Util.snake_case(File.basename(path))
48
52
  @file_name = PREFIX + @file_name unless @file_name.start_with?(PREFIX)
49
53
 
50
- @class_name = Thor::Util.camel_case @file_name
54
+ @class_name = Thor::Util.camel_case file_name
51
55
 
52
56
  @root = File.dirname(path)
53
- @path = File.join(@root, @file_name)
57
+ @path = File.join(root, file_name)
58
+
59
+ @repo = existing_repo || default_repo
54
60
 
55
61
  @gemspec = existing_gemspec || default_gemspec
56
62
  end
57
63
 
64
+ attr_reader :root, :path, :file_name, :class_name, :gemspec, :repo
65
+
66
+ private
67
+
58
68
  def gemspec_path
59
69
  @gemspec_path ||= File.join(path, "#{file_name}.gemspec")
60
70
  end
61
71
 
62
72
  def default_gemspec
63
- @default_gemspec ||= Gem::Specification.new(@file_name, '0.0.1') do |gem|
73
+ @default_gemspec ||= Gem::Specification.new(file_name, '0.0.1') do |gem|
64
74
  gem.author = git('config user.name', 'TODO: Write your name')
65
- gem.description = 'TODO: Write a longer description or delete this line.'
66
75
  gem.email = git('config user.email', 'TODO: Write your email address')
67
- gem.homepage = default_homepage
68
- gem.license = 'BSD-3-Clause'
69
- gem.metadata['changelog_uri'] = default_homepage + '/releases'
76
+
70
77
  gem.summary = 'TODO: Write a short summary, because RubyGems requires one.'
78
+ gem.description = 'TODO: Write a longer description or delete this line.'
79
+ gem.license = 'BSD-3-Clause'
80
+
81
+ gem.metadata['homepage_uri'] = gem.homepage = "https://github.com/#{repo}#readme"
82
+ gem.metadata['changelog_uri'] = "https://github.com/#{repo}/blob/master/CHANGELOG.md"
83
+ gem.metadata['source_code_uri'] = "https://github.com/#{repo}"
71
84
  end
72
85
  end
73
86
 
@@ -77,28 +90,26 @@ module SolidusDevSupport
77
90
  @existing_gemspec ||= Gem::Specification.load(gemspec_path).tap do |spec|
78
91
  spec.author ||= default_gemspec.author
79
92
  spec.email ||= default_gemspec.email
80
- spec.homepage ||= default_gemspec.homepage
81
- spec.license ||= default_gemspec.license
82
- spec.metadata['changelog_uri'] ||= default_gemspec.metadata[:changelog_uri]
93
+
83
94
  spec.summary ||= default_gemspec.summary
95
+ spec.license ||= default_gemspec.license
96
+
97
+ spec.homepage ||= default_gemspec.homepage
98
+ spec.metadata['source_code_uri'] ||= default_gemspec.metadata['source_code_uri']
99
+ spec.metadata['changelog_uri'] ||= default_gemspec.metadata['changelog_uri']
100
+ spec.metadata['source_code_uri'] ||= default_gemspec.metadata['source_code_uri']
84
101
  end
85
102
  end
86
103
 
87
- def default_homepage
88
- @default_homepage ||= git(
89
- 'remote get-url origin',
90
- "git@github.com:#{github_user}/#{file_name}.git"
91
- ).sub(
92
- %r{^.*github\.com.([^/]+)/([^/\.]+).*$},
93
- 'https://github.com/\1/\2'
94
- )
104
+ def default_repo
105
+ "solidusio-contrib/#{file_name}"
95
106
  end
96
107
 
97
- def github_user
98
- @github_user ||= git('config github.user', '[USERNAME]')
108
+ def existing_repo
109
+ git('remote get-url origin')&.sub(%r{^.*github\.com.([^/]+)/([^/.]+).*$}, '\1/\2')
99
110
  end
100
111
 
101
- def git(command, default)
112
+ def git(command, default = nil)
102
113
  result = `git #{command} 2> /dev/null`.strip
103
114
  result.empty? ? default : result
104
115
  end
@@ -108,8 +119,6 @@ module SolidusDevSupport
108
119
  executable = (path.stat.mode | 0o111)
109
120
  path.chmod(executable)
110
121
  end
111
-
112
- attr_reader :root, :path, :file_name, :class_name, :gemspec
113
122
  end
114
123
 
115
124
  def self.source_root
@@ -23,6 +23,7 @@ module SolidusDevSupport
23
23
  install_test_app_task
24
24
  install_dev_app_task
25
25
  install_rspec_task
26
+ install_changelog_task
26
27
  end
27
28
 
28
29
  def install_test_app_task
@@ -71,5 +72,18 @@ module SolidusDevSupport
71
72
  end
72
73
  end
73
74
  end
75
+
76
+ def install_changelog_task
77
+ require 'github_changelog_generator/task'
78
+
79
+ GitHubChangelogGenerator::RakeTask.new(:changelog) do |config|
80
+ require 'octokit'
81
+ repo = Octokit::Repository.from_url(gemspec.metadata['source_code_uri'] || gemspec.homepage)
82
+
83
+ config.user = repo.owner
84
+ config.project = repo.name
85
+ config.future_release = "v#{ENV['UNRELEASED_VERSION'] || gemspec.version}"
86
+ end
87
+ end
74
88
  end
75
89
  end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'webdrivers/chromedriver'
4
+
5
+ # Allow to override the initial windows size
6
+ CAPYBARA_WINDOW_SIZE = (ENV['CAPYBARA_WINDOW_SIZE'] || '1920x1080').split('x', 2).map(&:to_i)
7
+
8
+ Capybara.javascript_driver = (ENV['CAPYBARA_JAVASCRIPT_DRIVER'] || "solidus_chrome_headless").to_sym
9
+ Capybara.default_max_wait_time = 10
10
+ Capybara.server = :puma, { Silent: true } # A fix for rspec/rspec-rails#1897
11
+
12
+ Capybara.drivers[:selenium_chrome_headless].tap do |original_driver|
13
+ Capybara.register_driver :solidus_chrome_headless do |app|
14
+ original_driver.call(app).tap do |driver|
15
+ driver.options[:options].args << "--window-size=#{CAPYBARA_WINDOW_SIZE.join(',')}"
16
+ end
17
+ end
18
+ end
19
+
20
+ require 'spree/testing_support/capybara_ext'
@@ -10,30 +10,29 @@
10
10
  require 'solidus_dev_support/rspec/rails_helper'
11
11
 
12
12
  require 'capybara-screenshot/rspec'
13
- require 'capybara/apparition'
13
+ require 'solidus_dev_support/rspec/capybara'
14
14
 
15
- Capybara.javascript_driver = (ENV['CAPYBARA_DRIVER'] || :apparition).to_sym
16
- Capybara.default_max_wait_time = 10
17
- Capybara.server = :puma, { Silent: true } # A fix for rspec/rspec-rails#1897
18
-
19
- Capybara.register_driver :apparition do |app|
20
- Capybara::Apparition::Driver.new(app, window_size: [1920, 1080])
15
+ def dev_support_assets_preload
16
+ if Rails.application.respond_to?(:precompiled_assets)
17
+ Rails.application.precompiled_assets
18
+ else
19
+ # For older sprockets 2.x
20
+ Rails.application.config.assets.precompile.each do |asset|
21
+ Rails.application.assets.find_asset(asset)
22
+ end
23
+ end
21
24
  end
22
25
 
23
- require 'spree/testing_support/capybara_ext'
24
-
25
26
  RSpec.configure do |config|
26
27
  config.when_first_matching_example_defined(type: :feature) do
27
28
  config.before :suite do
28
- # Preload assets
29
- if Rails.application.respond_to?(:precompiled_assets)
30
- Rails.application.precompiled_assets
31
- else
32
- # For older sprockets 2.x
33
- Rails.application.config.assets.precompile.each do |asset|
34
- Rails.application.assets.find_asset(asset)
35
- end
36
- end
29
+ dev_support_assets_preload
30
+ end
31
+ end
32
+
33
+ config.when_first_matching_example_defined(type: :system) do
34
+ config.before :suite do
35
+ dev_support_assets_preload
37
36
  end
38
37
  end
39
38
  end