-
Notifications
You must be signed in to change notification settings - Fork 21.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[UPDATED] Implement a way to add browser capabilities #35081
[UPDATED] Implement a way to add browser capabilities #35081
Conversation
* There is currently no way to define specific browser capabilities since our SystemTest driver override the `option` key [Ref](https://github.com/rails/rails/blob/a07d0680787ced3c04b362fa7a238c918211ac70/actionpack/lib/action_dispatch/system_testing/driver.rb#L35) This option key is used internally by selenium to add custom capabilities on the browser. Depending on the Browser, some option are allowed to be passed inside a hash, the driver takes care of setting whatever you passed on the driver option. An example [here](https://github.com/rails/rails/blob/a07d0680787ced3c04b362fa7a238c918211ac70/actionpack/lib/action_dispatch/system_testing/driver.rb#L35) where you are allowed to pass args such as `--no-sandbox` etc However this behavior was only meant for backward compatibility and as you can see it's deprecated. The non-deprecated behavior is to create a `<Driver>::Option` object containing all the capabilities we want. This is what we [currently do](https://github.com/rails/rails/blob/a07d0680787ced3c04b362fa7a238c918211ac70/actionpack/lib/action_dispatch/system_testing/browser.rb#L34-L36) when chrome or firefox are in headless mode. This PR allows to pass a block when calling `driven_by`, the block will be pased a `<Driver>::Option` instance. You can modify this object the way you want by adding any capabilities. The option object will be then passed to selenium. ```ruby driven_by :selenium, using: :chrome do |driver_option| driver_option.add_argument('--no-sandbox') driver_option.add_emulation(device: 'iphone 4') end ```
af264dc
to
3fb4543
Compare
This is a minor update to the named methods for the following: - s/desired_capabilities/capabilities - s/driver_options/capabilities Since they are all the same thing we should keep the name the same throughout the feature. Updated docs to match / be a little bit clearer Also updated the Gemfile for selenium-webdriver.
3fb4543
to
1a4f613
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks a lot Eileen for taking over and sorry for abandoning this patch 😞
No worries @Edouard-chin we've all been there! |
@@ -432,9 +433,9 @@ GEM | |||
tilt (>= 1.1, < 3) | |||
sdoc (1.0.0) | |||
rdoc (>= 5.0) | |||
selenium-webdriver (3.141.0) | |||
selenium-webdriver (3.5.2) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why version locked "~> 3.5.1"
(version down 3.141.0
to 3.5.2
)?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That was by accident. Next time you fix it in master can you leave a note here so I don't spend time starting to fix it? 😄 Thanks!
Fixed in 1cfa913
[UPDATED] Implement a way to add browser capabilities rails/rails#35081
[UPDATED] Implement a way to add browser capabilities rails/rails#35081
[UPDATED] Implement a way to add browser capabilities rails/rails#35081
@Edouard-chin I wanted to get this in for Rails 6 (sorry for the delay before that) but there were some changes I would like to see and you seemed to be less around lately.
Hope you don't mind I took your PR and made a couple of changes:
Thank you for all your work on this! I super appreciate you taking the time to improve system tests.
Update of #32442