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

Separate Electron, Cypress app code, and ffmpeg into individual downloads #3899

Open
flotwig opened this issue Apr 5, 2019 · 27 comments
Open
Labels
browser: electron cli prevent-stale mark an issue so it is ignored by stale[bot] process: build Related to our internal build process

Comments

@flotwig
Copy link
Contributor

flotwig commented Apr 5, 2019

Current Behavior

Cypress is downloaded as one large .zip (140MB zipped, 387MB unzipped on Linux) file that contains Electron, Cypress's app code, and ffmpeg.

Updates are sent out as new versions of the .zip, containing all three of those elements.

Desired Behavior

Cypress would split up the installation process into three parts:

  1. Downloading Electron launcher
  2. Downloading ffmpeg
  3. Downloading Cypress code

Electron and ffmpeg are less-frequently-updated than Cypress itself, so we could probably help users cut down on their install sizes quite a bit after a few upgrades. Some users have noted that the installs tend to stack up after a while: #912

This would require separating Cypress from the Electron binary so that we could release them independently. Also, users would still need to be able to download an all-in-one .zip from the website for "global" mode.

@flotwig flotwig added cli process: build Related to our internal build process labels Apr 5, 2019
@cypress-bot cypress-bot bot added the stage: ready for work The issue is reproducible and in scope label Apr 5, 2019
@eugene-matvejev
Copy link

eugene-matvejev commented May 3, 2019

I do agree, we need somehow separate these things, so people might not install unneeded stuff, if they got lets say chrome installed I discussed it here: #4043

@jennifer-shehane
Copy link
Member

I want to ask if the intent of this PR would allow each individual installation support different versions of the other installation? Or would they all have some 'min version' requirements for the other installation? Also this would not satisfy this request basically: #3228

@MeStrak
Copy link

MeStrak commented May 10, 2020

I think the main point is separate the binaries so that they can be installed and run independently. Publishing a range of versions supported by the package would be good.

Unfortunately #6012 was closed but this would be ths solution. If the binaries were separated, Chrome and Cypress could be installed withought the need for Electron, therefore no need for Xvfb.

@jennifer-shehane I see that this has been in Stage: Ready for work since April 2019. Is work likely to start soon on this?

@MeStrak
Copy link

MeStrak commented May 15, 2020

@flotwig do you know if dev is in progress for this?

@flotwig
Copy link
Contributor Author

flotwig commented May 18, 2020

@MeStrak no, not currently. fyi, you can check the "stage" labels in issues to get an idea of what the current status of an issue is.

@jennifer-shehane
Copy link
Member

Bringing this up from an issue with running in Heroku CI. cypress-io/cypress-example-kitchensink#324

This feature would be nice when users want to run Chrome headless only to not require some of the deps that Electron itself requires (like xvfb)

@ext
Copy link

ext commented May 19, 2020

This feature would be nice when users want to run Chrome headless only to not require some of the deps that Electron itself requires (like xvfb)

That is our use-case as well and this is currently a blocking issue preventing us from using Cypress in our CI environment. It's a shame since we use other tools which runs fine with Chrome headless but we are unable to install xvfb for security reasons.

@erwanriou
Copy link

Bringing this up from an issue with running in Heroku CI. cypress-io/cypress-example-kitchensink#324

This feature would be nice when users want to run Chrome headless only to not require some of the deps that Electron itself requires (like xvfb)

+1 here we are also block because of this issue

@shanebo
Copy link

shanebo commented May 19, 2020

+1 we're also blocked and unable to use cypress for this reason.

@benhutton
Copy link

Is there any sense of when this could happen? We have put considerable work into getting Cypress going, and are now jammed up because Cypress won't run on modern heroku. We need to know if we should sit tight and wait or if we need to change tooling somewhere, somehow.

@MeStrak
Copy link

MeStrak commented May 22, 2020

Thanks @flotwig I didn't know where I could find the different possible stages. I guess the next one is investigating, before backlog?

@jennifer-shehane as @benhutton asked, is there any way for us to know the internal priority of this for Cypress?

@Dangeranger
Copy link

As some food for thought, we moved away from Heroku-CI and onto using Github actions for End-to-End testing because of this issue.

@pkiv
Copy link

pkiv commented Jun 17, 2020

+1 on this issue. We love Cypress so far but this makes using it in the Heroku ecosystem much less pleasant.

@lnm8910
Copy link

lnm8910 commented Jul 2, 2020

Hey guys, any update on when are we going to be able to run cypress on Linux without installing xvfb? Sometimes we don't have control over the environment.

@slavoroi
Copy link

Any update? 🔢

@AncientSwordRage
Copy link

Still looking for an update, any progress?

@jennifer-shehane
Copy link
Member

What are the primary situations on where this is required?

I see Heroku mentioned specifically, are there other environments/setups where this is a blocker to running Cypress?

@ext
Copy link

ext commented Feb 5, 2021

@jennifer-shehane My biggest issue is the fact that headless still requires Xvfb to run and this issue seems to be a blocker (see the many referenced bugs). Additionally, enterprise firewalls might block downloads such as these (my employer does) which really complicates npm install cypress.

@s5no5t
Copy link

s5no5t commented Feb 5, 2021

@jennifer-shehane my use case would be switching to Chrome in CI, and not having Cypress download Electron as well in order to reduce CI runtime.

@Michenux
Copy link

Michenux commented Feb 5, 2021

Without xvfb requirement, we could run cypress in lambda functions to scale test workload.

@sovanyio
Copy link

sovanyio commented Feb 5, 2021

This is a blocker to running cypress on my enterprises' version of jenkins (and web operations is not interested in upgrading or maintaining more packages).

@MeStrak
Copy link

MeStrak commented Jul 3, 2021

@jennifer-shehane for me it's the same as @Michenux - running in AWS Lambda.

@smccarthy-godaddy
Copy link

@jennifer-shehane Same as for me.

@mvanini
Copy link

mvanini commented Mar 18, 2022

any chance to close this?

@loveforty
Copy link

Can we get our own devs working on this? I think it would be faster :dead:

@mfittko
Copy link

mfittko commented Apr 20, 2022

we would really appreciate this, it takes up like more than 10 seconds for every cypress runner on our CI just to restore the huge cypress binary from cache (due to it having electron and ffmpeg included, which we don't really need). That makes adding more parallel nodes (or the setup part that is needed in a docker container before running the first cypress test) unnecessarily expensive. Come on, let's get this done please!

@cypress-bot cypress-bot bot added stage: icebox and removed stage: ready for work The issue is reproducible and in scope labels Apr 28, 2022
@evanjmg
Copy link

evanjmg commented May 19, 2022

Why is this in the icebox? This stops all enterprise adoption altogether - thus you will have less contributors to your project.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
browser: electron cli prevent-stale mark an issue so it is ignored by stale[bot] process: build Related to our internal build process
Projects
None yet
Development

No branches or pull requests