Skip to content
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

Generate a FocusEvent (not Event) for focus-related events #272

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

davidrunger
Copy link

@davidrunger davidrunger commented Aug 25, 2024

Currently on main, focus-related events (blur, focus, focusin, and focusout) create a JavaScript Event object.

However, as can be seen by clicking into and out of the input in this JSFiddle (tested in Firefox 130 and Chrome 128), those events should actually be JavaScript FocusEvent objects (not Event objects).

This change makes it so that Cuprite will generate FocusEvent objects (not Event objects) for focus-related events.

@davidrunger
Copy link
Author

davidrunger commented Aug 25, 2024

Context

The reason that this initially came to my attention (and my motivation for this change) is that a JavaScript library that I use (element-plus) actually validates that focus and blur events are indeed instances of FocusEvent.

Because currently on main Cuprite generates Event objects (not FocusEvent objects), warnings are printed when I execute in my application's test suite a feature spec that uses the Capybara fill_in method (which triggers focus and blur events) to fill in one of the inputs managed by that element-plus library:

image

This change makes it so that those warnings are no longer printed when I use the Capybara fill_in method to fill in an input for which the focus and blur event types are validated by element-plus.

@davidrunger
Copy link
Author

davidrunger commented Aug 25, 2024

Looking at the Ruby 3.3 test run, there are five failing specs (link).

I believe that none of those failures are related to my change, and that those failures are already present on main. All five of those tests also fail when I run the test suite locally on main.

Edit: I submitted a separate PR to fix these spec failures.

@@ -28,10 +28,10 @@ $(function() {
$("#changes_on_keypress").text(increment)
})
.focus(function(event) {
$("#changes_on_focus").text("Focus")
$("#changes_on_focus").text(`Focus (${event.originalEvent.constructor.name})`)
Copy link
Author

@davidrunger davidrunger Aug 26, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would like tests to cover the change in this PR, so I added the event constructor name in parentheses here. On main, this text would be Focus (Event). On this branch, it's Focus (FocusEvent).

@davidrunger
Copy link
Author

Looking at the Ruby 3.3 test run, there are five failing specs (link).

I believe that none of those failures are related to my change, and that those failures are already present on main. All five of those tests also fail when I run the test suite locally on main.

I have submitted a separate PR to fix these spec failures that currently exist on the main branch: #273.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant