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

Support for Native Browser Events #311

Open
brian-mann opened this Issue Nov 24, 2016 · 16 comments

Comments

@brian-mann
Member

brian-mann commented Nov 24, 2016

TBD - write the reasoning and process behind achieving this.

@brian-mann

This comment has been minimized.

Show comment
Hide comment
@brian-mann

brian-mann Oct 26, 2017

Member

With the release of Chrome 63 we can now finally do this.

We'll begin by adding { native: true } to existing commands for users to opt into using the native variants of them.

From there we'll add new commands for file uploads, etc.

We can also expose a low level command for talking directly to the debugger protocol to expose all of the other power and goodness that extends well beyond WebDriver.

Member

brian-mann commented Oct 26, 2017

With the release of Chrome 63 we can now finally do this.

We'll begin by adding { native: true } to existing commands for users to opt into using the native variants of them.

From there we'll add new commands for file uploads, etc.

We can also expose a low level command for talking directly to the debugger protocol to expose all of the other power and goodness that extends well beyond WebDriver.

@bahmutov

This comment has been minimized.

Show comment
Hide comment
@bahmutov

bahmutov Oct 26, 2017

Collaborator
Collaborator

bahmutov commented Oct 26, 2017

@mateatslc

This comment has been minimized.

Show comment
Hide comment
@mateatslc

mateatslc Oct 27, 2017

good news, sounds exciting! 👏

mateatslc commented Oct 27, 2017

good news, sounds exciting! 👏

@dziamid

This comment has been minimized.

Show comment
Hide comment
@dziamid

dziamid Nov 2, 2017

Awesome! Is it devtools compatible? Do you plan to eventually deprecate the not-native commands?

dziamid commented Nov 2, 2017

Awesome! Is it devtools compatible? Do you plan to eventually deprecate the not-native commands?

@brian-mann

This comment has been minimized.

Show comment
Hide comment
@brian-mann

brian-mann Nov 2, 2017

Member

It is dev tools compatible.

We will definitely not ever deprecate the non-native commands because they are actually more precise (as long as they work correctly). Non native can be issued synchronously and it's impossible to miss coordinates.

Native events will always be async, so if we ask for them to fire at a specific coordinate, it will take take before it's actually issued. If there are state changes by then - you have a failure.

We'll likely have a few native commands only like .attach() or something. But then enable you to opt into the native commands for commands we already have.

Member

brian-mann commented Nov 2, 2017

It is dev tools compatible.

We will definitely not ever deprecate the non-native commands because they are actually more precise (as long as they work correctly). Non native can be issued synchronously and it's impossible to miss coordinates.

Native events will always be async, so if we ask for them to fire at a specific coordinate, it will take take before it's actually issued. If there are state changes by then - you have a failure.

We'll likely have a few native commands only like .attach() or something. But then enable you to opt into the native commands for commands we already have.

@dwelle

This comment has been minimized.

Show comment
Hide comment
@dwelle

dwelle Nov 4, 2017

Does this mean we'll able to invoke and test :hover/:active pseudo classes?

dwelle commented Nov 4, 2017

Does this mean we'll able to invoke and test :hover/:active pseudo classes?

@brian-mann

This comment has been minimized.

Show comment
Hide comment
@brian-mann

brian-mann Nov 4, 2017

Member

Yes

Member

brian-mann commented Nov 4, 2017

Yes

@zth

This comment has been minimized.

Show comment
Hide comment
@zth

zth Jan 17, 2018

Is there a plan to integrate file uploading better with native events landing? There's a comment about it here cut I cannot seem to find any more information about it.

zth commented Jan 17, 2018

Is there a plan to integrate file uploading better with native events landing? There's a comment about it here cut I cannot seem to find any more information about it.

@atomboulian

This comment has been minimized.

Show comment
Hide comment
@atomboulian

atomboulian Apr 27, 2018

My question is the same as @zth. Seems like this would be true, but I just want to confirm. There are medium articles talking about file uploads not being supported, even in February of this year.

atomboulian commented Apr 27, 2018

My question is the same as @zth. Seems like this would be true, but I just want to confirm. There are medium articles talking about file uploads not being supported, even in February of this year.

@jpike88

This comment has been minimized.

Show comment
Hide comment
@jpike88

jpike88 Jun 2, 2018

Contributor

Just curious where things are at? I can't get a good reading on how close this functionality is to being ready or if it is already available

Contributor

jpike88 commented Jun 2, 2018

Just curious where things are at? I can't get a good reading on how close this functionality is to being ready or if it is already available

@brian-mann

This comment has been minimized.

Show comment
Hide comment
@brian-mann

brian-mann Jun 12, 2018

Member

@Bkucera is starting on this work this week. We've gone through the game plan and will begin implementing this and all of the other work orthogonal to native events.

Member

brian-mann commented Jun 12, 2018

@Bkucera is starting on this work this week. We've gone through the game plan and will begin implementing this and all of the other work orthogonal to native events.

@egucciar

This comment has been minimized.

Show comment
Hide comment
@egucciar

egucciar Jul 24, 2018

@brian-mann will this change some of the known "permanent limitations" of Cypress? One example being something like performance testing, which with integration with Dev Tools could totally be within reach

egucciar commented Jul 24, 2018

@brian-mann will this change some of the known "permanent limitations" of Cypress? One example being something like performance testing, which with integration with Dev Tools could totally be within reach

@brian-mann

This comment has been minimized.

Show comment
Hide comment
@brian-mann

brian-mann Jul 24, 2018

Member

@egucciar yes, that page is a bit outdated now. I wouldn't say it's really native events per-se, we've known about them and tapped into the early parts of them for awhile, it has to do with the underlying architectural model and the proxy layer that cypress sits in.

There are a handful of things that all together will improve that and mean that Cypress will be a bit more transparent so your application behaves more closely to how it operates outside of Cypress. It's a bit like the uncertainty principle that by inspecting and viewing "the truth" of what happens in the browser in order to model and predict it, we thereby end up changing its behavior. Performance testing bit further outside-in than how Cypress operates, and because of that, our presence changes the behavior.

It is certainly possible for us to change even that - because the tools already exist, but it's more of a documentation / process problem for us. We're really good at one thing, and attempting to do too many things (even those closely related) is difficult while also maintaining a clear and specific objective.

Member

brian-mann commented Jul 24, 2018

@egucciar yes, that page is a bit outdated now. I wouldn't say it's really native events per-se, we've known about them and tapped into the early parts of them for awhile, it has to do with the underlying architectural model and the proxy layer that cypress sits in.

There are a handful of things that all together will improve that and mean that Cypress will be a bit more transparent so your application behaves more closely to how it operates outside of Cypress. It's a bit like the uncertainty principle that by inspecting and viewing "the truth" of what happens in the browser in order to model and predict it, we thereby end up changing its behavior. Performance testing bit further outside-in than how Cypress operates, and because of that, our presence changes the behavior.

It is certainly possible for us to change even that - because the tools already exist, but it's more of a documentation / process problem for us. We're really good at one thing, and attempting to do too many things (even those closely related) is difficult while also maintaining a clear and specific objective.

@egucciar

This comment has been minimized.

Show comment
Hide comment
@egucciar

egucciar Jul 24, 2018

@brian-mann appreciate the detailed explanation! So in short though this may open up the possibility of further integrations, some use cases still may not be applicable due to the overall architecture, performance testing being one of those things. Makes perfect sense.

egucciar commented Jul 24, 2018

@brian-mann appreciate the detailed explanation! So in short though this may open up the possibility of further integrations, some use cases still may not be applicable due to the overall architecture, performance testing being one of those things. Makes perfect sense.

@Bkucera Bkucera referenced a pull request that will close this issue Sep 5, 2018

Open

WIP Native Events #2436

5 of 19 tasks complete
@brian-mann

This comment has been minimized.

Show comment
Hide comment
@brian-mann

brian-mann Sep 8, 2018

Member

Updates: along with native events, this goes hand in hand with cross browser support, which I added an update for here: #310 (comment)

TLDR; we are adding cross browser support as a major priority here. Work has been going on for months and we're ready to begin implementation.

Member

brian-mann commented Sep 8, 2018

Updates: along with native events, this goes hand in hand with cross browser support, which I added an update for here: #310 (comment)

TLDR; we are adding cross browser support as a major priority here. Work has been going on for months and we're ready to begin implementation.

@Bkucera Bkucera added this to the Sprint 2 milestone Sep 14, 2018

@jennifer-shehane jennifer-shehane modified the milestones: Sprint 2, Sprint 3 Sep 17, 2018

@jennifer-shehane jennifer-shehane modified the milestones: Sprint 3, Sprint 5 Oct 1, 2018

@pvdyck

This comment has been minimized.

Show comment
Hide comment
@pvdyck

pvdyck Oct 9, 2018

@bahmutov ready for Sprint 5 or postpone ?

pvdyck commented Oct 9, 2018

@bahmutov ready for Sprint 5 or postpone ?

@lilaconlee lilaconlee modified the milestones: Sprint 5, Sprint 6 Oct 9, 2018

@jennifer-shehane jennifer-shehane modified the milestones: Sprint 6, Sprint 7 Oct 15, 2018

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment