diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f8352059..0a52b7f1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -29,6 +29,9 @@ jobs: rubygems: latest bundler-cache: true + - name: Run Bug Template Tests + run: ruby bug_report_template.rb || ruby bug_report_template.rb + - name: Run tests id: test run: bundle exec rake TESTOPT=-vdc diff --git a/README.md b/README.md index ed4cb366..4877b87c 100644 --- a/README.md +++ b/README.md @@ -194,6 +194,14 @@ yarn build Now you can reference your version of turbo-rails in your Rails projects packaged with your local version of Turbo. +## 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). diff --git a/bug_report_template.rb b/bug_report_template.rb new file mode 100644 index 00000000..768941a8 --- /dev/null +++ b/bug_report_template.rb @@ -0,0 +1,111 @@ +require "bundler/inline" + +gemfile(true) do + source "https://rubygems.org" + + gem "rails" + gem "propshaft" + gem "puma" + gem "sqlite3", "~> 1.4" + gem "turbo-rails" + + gem "capybara" + gem "cuprite", require: "capybara/cuprite" +end + +ENV["DATABASE_URL"] = "sqlite3::memory:" +ENV["RAILS_ENV"] = "test" + +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" + config.consider_all_requests_local = true + config.action_cable.cable = {"adapter" => "async"} + config.turbo.draw_routes = false + + Rails.logger = config.logger = Logger.new($stdout) + + routes.append do + root to: "application#index" + end +end + +Rails.application.initialize! + +ActiveRecord::Schema.define do + create_table :messages, force: true do |t| + t.text :body, null: false + end +end + +class Message < ActiveRecord::Base +end + +class ApplicationController < ActionController::Base + include Rails.application.routes.url_helpers + + class_attribute :template, default: DATA.read + + def index + render inline: template, formats: :html + end +end + +class ApplicationSystemTestCase < ActionDispatch::SystemTestCase + driven_by :cuprite, using: :chrome, screen_size: [1400, 1400], options: {js_errors: true} +end + +Capybara.configure do |config| + config.server = :puma, {Silent: true} + config.default_normalize_ws = true +end + +require "rails/test_help" + +class TurboSystemTest < ApplicationSystemTestCase + test "reproduces bug" do + visit root_path + + assert_text "Loaded with Turbo" + end +end + +__END__ + + + + <%= csrf_meta_tags %> + + + + + + + Loaded without Turbo +