-
Notifications
You must be signed in to change notification settings - Fork 3.3k
Provide alternative to --load-extension
flag in Chrome
#31690
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
Comments
Hi @oliverdunk. I just want to clarify that Chrome 137 is expected to be released in 2 weeks and our team has those two weeks to navigate this large change, it's implications, test at scale, and make sure there are no regressions for our users? |
Hi @AtofStryker - I appreciate that it's a quick rollout, which is in part is because we were seeing the flag actively being abused. We did announce this as early as possible (coming up to six weeks ago) to try and give as much notice as possible. When we did an RFC, we also heard from most developers that they would be comfortable using Chrome for Testing, which hopefully means the impact of this isn't too broad. That said, I'm very open to helping in any way I can. If you have any questions, feel free to ask here or reach out to me privately. I'd also be happy to see if I could open a PR if you don't have the bandwidth to work on this, I would just need to gain some familiarity with the codebase to figure out what would be needed. Hopefully it's clear that we want to make this as little work for you as possible, and to keep supporting the genuine use cases while preventing this from being used maliciously. |
@oliverdunk I understand the urgency as there are security implications to allowing loaded extensions. That being said, weeks and not months for a large scale change is quite urgent for us 😅 so we are going to have to work together to come up with something quickly.
I think the easiest path of resistance is to use the CDP Extensions.loadUnpacked method to load the extension and theme, but it looks to require the Hoping to get something up and running by EOD if we can 🤞🏻
We appreciate that. I am hoping we can come to a resolution ASAP. |
So doing this requires both the Connecting over a pipe is definitely not quite as simple as with a port, but Mozilla recently added support to the |
@oliverdunk Is this documented some place where I can see how these options work together and which other options may or may not work with these flags? I don't think setting Our use case is a bit different, because we handle automation traffic through CDP in our server and also allow users to load extensions. I am going to explore the BiDi route tomorrow morning. Are there any other possibilities here besides this? |
@oliverdunk I had some time to explore BiDi and it looks like the Bidi -> CDP tab mapper is coming up? Is there a way to disable this? I found https://issues.chromium.org/issues/42323801 but it doesn't look like the issue has been addressed. ![]() It also looks like the API client we use, |
This comment has been minimized.
This comment has been minimized.
Using Windows, as of Cypress 13.16.0 (where %AppData% and %LocalAppData% are filled with the actual directories) using
using
Cypress, by default, uses |
I don't believe we have any documentation which goes into more detail unfortunately. In general, I think any flags other than those used for pipe debugging should work.
Yeah, that makes sense. I don't think there's an easy answer unfortunately but I completely understand the difficulty there.
I think BiDi would be the best approach. As I'm sure you know, that's quite a major change but perhaps it is something you could make opt-in for extension developers and that would be a good compromise.
I thought this was resolved, but I'm not sure. Let me ask a team member to follow up on this issue.
Oh, thanks for flagging this. I'll add that to the various libraries we are tracking that might be impacted and see if there is anything I can do to help. |
I just confirmed and it should be hidden starting in Chrome 137: https://chromiumdash.appspot.com/commit/753acf9df872f629667c329dcfaf73677e8d9f93. You can test that in beta, but of course it hasn't quite reached stable yet. Hopefully that's helpful though. |
@oliverdunk I believe what we are trying to communicate is that Cypress has it's own unpacked unsigned web extension that we use to help our users test in what we call Luckily for us Cypress is mostly automated with CDP in chromium based browsers, but we use the extension for theming as well as our puppeteer plugin, which is going to break.
Cypress supports the last 3 versions of any major browser. Firstly, all older versions of our binary likely will not work with Chrome 137+, which is disruptive. Secondly, Cypress is likely going to need to flex on version to use either Either way, we are looking at work that is going to take longer than 2-6 weeks to complete. Respectfully, I don't understand how this tight of a deadline can be expected given the state of the surrounding ecosystem, lack of documentation and migration paths, and fulling understanding the implications of current migration paths that we need to discover on our own. To comply, we are likely looking at a loss of functionality until we are able to support quality work arounds for our users. Personally, I don't see how this is acceptable, especially from a major browser such as Google. The team will be discussing options today and tomorrow and are going to try to forge a plan around this. For reference, Cypress recently migrated Firefox to Webdriver BiDi with the help of @whimboo from the Mozilla team. The effort took months to guarantee a seamless transition for our users with a lot of back and forth collaboration. |
@oliverdunk we are planning to do #31702 and #31703 to address the removal of Currently, it looks like the Also, just to confirm, |
Thanks @AtofStryker for the continued updates. I've just sent an email to @jennifer-shehane (I didn't have your email address) to see if there is any more help we can provide. Feel free to reply there if it would be useful.
Yes, it will be a noop that will also log the following as a warning to stdout:
Yes, only "branded" builds of Chrome are impacted which does not include Chromium or Chrome for Testing. |
Just to confirm our actions at the moment, in order to address this quickly enough for the Chrome 137 release: We will throw an error if someone is using the The theming of our extension will no longer work, but this will not impact functionality of the Cypress App. #31704 We will continue to gather feedback from users on how disruptive this change is. If it becomes a priority to add back this functionality, we'll consider our options at that time. At the moment, the available options are not viable for what Cypress requires. |
Just as a cross-check, in addition to any tests that the Cypress.io team are doing, I successfully ran https://github.com/cypress-io/cypress-example-kitchensink against Chrome Beta using Cypress
|
Updated search to include @cypress/puppeteer. This can only search public GitHub repos, not private ones. It does not account for Cypress repos held elsewhere, like on GitLab.
Assuming this is representative of unsearched repos, Chrome 137 change would then impact 0.2% of repos. |
@MikeMcC399 Yah, we are expecting these uses to be a smaller percentage |
What would you like?
In Chrome 137, we are removing the
--load-extension
flag from branded builds of Chrome. I believe there are likely Cypress users using this for extension testing.In impacted channels, there are two alternatives available:
It would be great to see official support for invoking one of these within a Cypress test.
A Cypress team member had previously expressed interest in this here: https://groups.google.com/a/chromium.org/g/chromium-extensions/c/aEHdhDZ-V0E/m/hgJBUMlRCAAJ
Why is this needed?
Chrome is making a security focused change that impacts existing testing workflows.
Other
I'm happy to help as needed to support this given our team is making the change.
The text was updated successfully, but these errors were encountered: