Open KimPlaybit opened 2 months ago
@KimPlaybit
Are you using Windows 11 24H2?
@KimPlaybit
Are you using Windows 11 24H2?
Yes, i am.
but i dont know if this matters? since the problem is that "validateOS" does not support "win32-arm64" and there is no download link for windows with an ARM CPU. I am using a windows Laptop with a Qualcomm Snapdragon(R) X Elite CPU.
@KimPlaybit
Thanks for providing the details of your environment!
Cypress is built for win32-x64
only.
According to https://learn.microsoft.com/en-us/windows/arm/overview the emulation changed in Windows 11 24H2, so that is relevant.
@KimPlaybit
Thanks for providing the details of your environment!
Cypress is built for
win32-x64
only.According to https://learn.microsoft.com/en-us/windows/arm/overview the emulation changed in Windows 11 24H2, so that is relevant.
Alright, but this also states that with Windows 11 24H2 supports emulation of x64 apps. wouldnt that put cypress in that category?
Thus, when i enforced that https://download.cypress.io/desktop/13.13.3?platform=win32&arch=x64 would be downloaded is not wrong. other than that side-effects might happen.
-- Tho, Prism is specificly optimized and tuned for snapdragon.
@KimPlaybit
I can't be of much help here as I don't have access to the hardware you're using.
Have you installed Node.js Windows arm64 or Node.js Windows x64? Reading the Node.js docs it seems like the x64 version of Node.js might give you a better experience, however I can't really say as I can't test this.
@KimPlaybit
I can't be of much help here as I don't have access to the hardware you're using.
Have you installed Node.js Windows arm64 or Node.js Windows x64? Reading the Node.js docs it seems like the x64 version of Node.js might give you a better experience, however I can't really say as I can't test this.
At the current moment i havnt found any issues yet. I am running Node.js Windows ARM64. If you like, i can report any issues i find.
i found this, https://learn.microsoft.com/en-us/windows/arm/arm64ec. Which suggests that Windows 11 ARM has been supporting x64 emulation for a while and that Windows 11 24h2 added "Prism", which is an optimization for Snapdragon.
windows 10 ARM however, do not support x64 emulation, might cause problems.
__
i believe i added this as a feature request. but maybe i should point that out.
@KimPlaybit
i believe i added this as a feature request. but maybe i should point that out.
I understood it that way. The Cypress.io team may add a label accordingly.
In terms of using the emulation, it may simply be a question of testing and documentation.
Building Cypress for Windows arm64 would however be a major enhancement to the process and the documentation. https://www.arm.com/developer-hub/laptops-and-desktops
@KimPlaybit
i believe i added this as a feature request. but maybe i should point that out.
I understood it that way. The Cypress.io team may add a label accordingly.
In terms of using the emulation, it may simply be a question of testing and documentation.
Building Cypress for Windows arm64 would however be a major enhancement to the process and the documentation. https://www.arm.com/developer-hub/laptops-and-desktops
Building it for Windows arm64 would be great. But to add the label to run cypress with the emulator might be a good start tho.
For the time being, I wonder if the Cypress team can redirect https://download.cypress.io/desktop/13.13.3?platform=win32&arch=arm64 to the win32-x64 version
With the disclaimer that running Cypress on Windows arm64 is unsupported, undocumented and untested:
Returns the operating system CPU architecture for which the Node.js binary was compiled. Possible values are 'arm', 'arm64', 'ia32', 'loong64', 'mips', 'mipsel', 'ppc', 'ppc64', 'riscv64', 's390', 's390x', and 'x64'.
x64
when arm64
has been requested is a good thing to start doing. Use Advanced Installation, for instance in a Windows PowerShell terminal, and try the following to provide a workaround on the client-side:$env:CYPRESS_DOWNLOAD_PATH_TEMPLATE='${endpoint}/win32-x64/cypress.zip'
$env:DEBUG='cypress:cli*'
npm install cypress --save-dev --ignore-scripts
npx cypress install --force
followed by
npx cypress verify
npx cypress open
to confirm.
Instead of install cypress
, install cypress@latest
or install cypress@<version>
like install cypress@13.14.2
will also be accepted.
Not sure that's feasible if cypress is installed through dev-dependencies. Some overriding method like an env variable Okay, actually the core problem is, as briefly mentioned by OP, install.js outright bans win32-arm64 via CYPRESS_ARCH=x64
would be nice.validateOS()
. Once there's a way to skip that, the download path template should work.
A possible way forward would be to patch Cypress locally to allow downloading and installing a Cypress win32-x64
binary on win32-arm64
so that it could run in emulation mode. The Cypress documentation instructions on References > Troubleshooting > Patch Cypress describe how to add a patch to the installation process.
It would be good to have win32-arm64
runners available to test in CI, for instance to be able to test the https://github.com/cypress-io/cypress-example-kitchensink repo on Windows on Arm (WoA).
There is some work going on to provide such runners, however it seems that win32-arm64
runners are not yet generally available as free runners hosted on GitHub or on CircleCI.
You could use patch-package to update your Cypress for now to bypass the OS validation for now. That's our recommendation.
What would you like?
Run a web application with Cypress on a computer with Win32-Arm64 OS.
Why is this needed?
With Asus recently releasing laptops with Qualcomm CPUs, this will be more and more requested. See The Asus Vivobook S 15.
Other
I managed to start my Web app with cypress regardless.
By adding in win32-arm64 as a valid OS in install.js and then hardcode so that "getUrl" in download.js returns "https://download.cypress.io/desktop/13.13.3?platform=win32&arch=x64". What side-effects this has is unknow.