Skip to content

Commit

Permalink
Create executable bug report Rails application
Browse files Browse the repository at this point in the history
This template draws inspiration from Rails' [bug report templates][].

[bug report templates]: https://edgeguides.rubyonrails.org/contributing_to_ruby_on_rails.html#create-an-executable-test-case
  • Loading branch information
seanpdoyle committed Feb 23, 2024
1 parent e8dd34a commit ca80b83
Show file tree
Hide file tree
Showing 2 changed files with 108 additions and 0 deletions.
8 changes: 8 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,14 @@ The [`Turbo::Broadcastable::TestHelper`](./lib/turbo/broadcastable/test_helper.r

Run the tests with `./bin/test`.

## Contributing

Having a way to reproduce your issue will help people confirm, investigate, and ultimately fix your issue. You can do this by providing an executable test case. To make this process easier, we have prepared an [executable bug report Rails application](./bug_report_template.rb) for you to use as a starting point.

This template includes the boilerplate code to set up a System Test case. Copy the content of the template into a `.rb` file and make the necessary changes to demonstrate the issue. You can execute it by running `ruby the_file.rb` in your terminal. If all goes well, you should see your test case failing.

You can then share your executable test case as a gist or paste the content into the issue description.

## License

Turbo is released under the [MIT License](https://opensource.org/licenses/MIT).
100 changes: 100 additions & 0 deletions bug_report_template.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
require "bundler/inline"

gemfile(true) do
source "https://rubygems.org"

git_source(:github) { |repo| "https://github.com/#{repo}.git" }

gem "rails"
gem "propshaft"
gem "sqlite3"
gem "turbo-rails"

gem "capybara"
gem "selenium-webdriver"
end

require "active_record/railtie"
# require "active_storage/engine"
require "action_controller/railtie"
require "action_view/railtie"
# require "action_mailer/railtie"
# require "active_job/railtie"
# require "action_cable/engine"
# require "action_mailbox/engine"
# require "action_text/engine"
require "rails/test_unit/railtie"

class App < Rails::Application
config.load_defaults Rails::VERSION::STRING.to_f

config.root = __dir__
config.hosts << "example.org"
config.eager_load = false
config.session_store :cookie_store, key: "cookie_store_key"
config.secret_key_base = "secret_key_base"

Rails.logger = config.logger = Logger.new($stdout)

routes.append do
root to: "application#index"
end
end

class ApplicationController < ActionController::Base
def index
render inline: DATA.read
end
end

class ApplicationSystemTestCase < ActionDispatch::SystemTestCase
driven_by :selenium, using: :headless_chrome, screen_size: [1400, 1400]

Capybara.server = :webrick
end

ENV["DATABASE_URL"] = "sqlite3::memory:"
ENV["RAILS_ENV"] ||= "test"

Rails.application.initialize!

require "rails/test_help"

class TurboSystemTest < ApplicationSystemTestCase
test "reproduces bug" do
visit root_path

assert_css "h1", text: "Loaded with Turbo"
end
end

__END__

<!DOCTYPE html>
<html>
<head>
<%= csrf_meta_tags %>
<%= csp_meta_tag %>

<script type="importmap">
{
"imports": {
"@hotwired/turbo-rails": "<%= asset_path("turbo.js") %>"
}
}
</script>

<script type="module">
import "@hotwired/turbo-rails"

addEventListener("turbo:load", () => {
const element = document.querySelector("h1")
element.innerHTML = "Loaded with Turbo"
})
</script>
</head>

<body>
<h1>Loaded without Turbo</h1>
</body>
</html>

0 comments on commit ca80b83

Please sign in to comment.