-
Notifications
You must be signed in to change notification settings - Fork 31
Support using an Older Chrome Release #25
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
base: main
Are you sure you want to change the base?
Conversation
@unRARed "…with the deprecated buildpack" If you're using the old deprecated buildpack, I really don't know what's going wrong. Maybe it's the same issue, but the error reported was |
@unRARed now I hear of another problem happening with that newest Chrome v128 & Selenium, hung network connections in Ruby |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm curious to know more about the choice to use an offset approach rather than supporting the ability to request a specific Chrome version? I know in general we want people to stay up to date with Chrome releases, but I think being permanently on an offset may not be what people should be doing longer term anyway (and pinning more of a temporary workaround)?
…ed Heroku stacks.
Co-authored-by: Ed Morley <501702+edmorley@users.noreply.github.com>
Co-authored-by: Ed Morley <501702+edmorley@users.noreply.github.com>
@edmorley Chrome is evergreen. The constant automatic updates to individuals' web browsers across the internet means that unless this buildpack continues updating the Chrome installation, that its testing context falls behind. Therefore, the premise of Chrome for Testing buildpack is to provide apps with the current stable, beta, or dev version of the browser. This pull request directly addresses a new, stable Chrome release breaking tests due to other dependencies (Selenium in this case) not keeping ahead of Chrome releases to maintain compatibility. This "milestone offset" provides a graceful escape hatch, to install an older stable major version Chrome. It's an equivalent functionality to Chrome's release channels, but supports following an older release, instead of the leading edge. With this milestone offset strategy, the buildpack supports picking up minor releases & security patches on the older version, and will also automatically upgrade to the next version when Chrome Developers promote a milestone to stable, creating a new dev milestone. A developer could forget about Support to set (pin or lock) a specific Chrome+Chromedriver version is at odds with this design, and the very premise of Chrome's evergreen auto-updates. A locked version setting would fall further behind over time, increasing potential for test false positives, and mask that the app's own dependencies (like Selenium) are falling behind too. |
I find the
|
Yeah an offset approach makes sense given that. Though I like David found the current numbering of the offset counter-intuitive (ie: I thought zero might be stable). Perhaps an alternative to numbering might be named offsets, so |
I see that it's been 3 weeks and no progress since these comments. They are suggestions on the implementation and interface though acting as blockers. I would like to move this forward. @mars do you have strong feelings on either of the suggestions? If there was a PR to your branch with something either David or Ed would accept would you be able to review and merge it? FWIW internal support ticket number 1424804 is using this branch. |
Also, hopefully the lag in the Selenium release that was causing this issue has passed. Two release have been made since this issue popped-up. (Not that it won't come up again.) |
A workaround for recent Chrome 128 release incompatibility with Selenium,
This changeset provides a new build-time config var setting to install an older release.
See the branch's new README section, Using an Older Chrome Release.
Try this branch version on your app
To get the previous stable version of Chrome (currently v127), configure the app & then rebuild: