Skip to content
  • eileencodes's avatar
    7c9af60e
    Call system test driver per-instance rather than globally · 7c9af60e
    eileencodes authored
    Previously the system test subclasses would call `driven_by` when the
    app booted and not again when the test was initialized which resulted in
    the driver from whichever class was called last to be used in tests.
    
    In rails/rails#28144 the `driven_by` method was changed to run `use` on
    setup and `reset` on teardown. While this was a viable fix this really
    pointed to the problem that system test `driven_by` was a global
    setting, rather than a per-class setting.
    
    To alieviate this problem calling the driver should be done on an
    instance level, rather than on the global level. I added an `initialize`
    method to `SystemTestCase` which will call `use` on the superclass
    driver. Running the server has been moved to `start_application` so that
    it only needs to be called once on boot and no options from `driven_by`
    were being passed to it.
    
    This required a largish rewrite of the tests. Each test needs to utilize
    the subclass so that it can properly test the drivers.
    `ActionDispatch::SystemTestCase` shouldn't be called directly anymore.
    7c9af60e
    Call system test driver per-instance rather than globally
    eileencodes authored
    Previously the system test subclasses would call `driven_by` when the
    app booted and not again when the test was initialized which resulted in
    the driver from whichever class was called last to be used in tests.
    
    In rails/rails#28144 the `driven_by` method was changed to run `use` on
    setup and `reset` on teardown. While this was a viable fix this really
    pointed to the problem that system test `driven_by` was a global
    setting, rather than a per-class setting.
    
    To alieviate this problem calling the driver should be done on an
    instance level, rather than on the global level. I added an `initialize`
    method to `SystemTestCase` which will call `use` on the superclass
    driver. Running the server has been moved to `start_application` so that
    it only needs to be called once on boot and no options from `driven_by`
    were being passed to it.
    
    This required a largish rewrite of the tests. Each test needs to utilize
    the subclass so that it can properly test the drivers.
    `ActionDispatch::SystemTestCase` shouldn't be called directly anymore.
Loading