Closed Bug 1417672 Opened 7 years ago Closed 7 years ago

Keyboard DOM events (onchange et al.) not fired when sending keys

Categories

(Remote Protocol :: Marionette, defect)

Version 3
defect
Not set
normal

Tracking

(Not tracked)

RESOLVED WORKSFORME

People

(Reporter: ato, Unassigned)

References

(Blocks 1 open bug)

Details

It was reported in https://github.com/mozilla/geckodriver/issues/348
that Marionette does not fire all the correct DOM events when
sending keys to elements.

It’s not entirely clear to me exactly what events are missing, but
this requires further investigation.
Blocks: webdriver
So I created a jsbin for the given testcase. One with onchange and another for onblur:

onblur:   https://output.jsbin.com/qapodejipe
onchange: https://output.jsbin.com/qapodejipe/2

The test I run is:

    def test_onchange(self):
        self.marionette.navigate("https://output.jsbin.com/qapodejipe")
        name = self.marionette.find_element(By.ID, "Fname")
        name.send_keys("Joe Bloggs")
        submit = self.marionette.find_element(By.ID, "btnSubmit")
        submit.click()
        output = self.marionette.find_element(By.ID, "nameDisplay")
        self.assertIn("Joe Bloggs", output.text)

And the test passes for both events. So I think that this issue is not present anytime longer. I will make sure to add tests as part of bug 1414322.

I will still have to check what Andreas mentioned here: https://github.com/mozilla/geckodriver/issues/348#issuecomment-261299401

> Just to be clear, the events we are expecting to see here are:
> 
>     Before sending keys:
>         focus
>     Sending keys:
>         keydown
>         keypress
>         textInput
>         input
>         keyup
>     Upon interaction with another element:
>         change
>         blur
(In reply to Henrik Skupin (:whimboo) from comment #1)
> >     Before sending keys:
> >         focus
> >     Upon interaction with another element:
> >         change
> >         blur

All of those work fine.

> >     Sending keys:
> >         keydown
> >         keypress
> >         textInput
> >         input
> >         keyup

I'm not sure what `textInput` should be but everything else is fine too. I will add a certain amount of new tests for each of those.
Status: NEW → RESOLVED
Closed: 7 years ago
Resolution: --- → WORKSFORME
Product: Testing → Remote Protocol
You need to log in before you can comment on or make changes to this bug.