Upgrade stack to Ruby 4.0.5 and Node 26.4.0.#457
Merged
Conversation
Align CI, deploy docs, and version pins with org standards; add cgi gem required after Ruby 4 removed CGI from the default stdlib. Co-authored-by: Cursor <cursoragent@cursor.com>
Skip global corepack enable on cimg's /usr/local Node; prepare and invoke yarn via corepack from the active nvm installation instead. Co-authored-by: Cursor <cursoragent@cursor.com>
Remove obsolete and duplicate File Access ignores after safe_path refactor; update line numbers and notes for Brakeman 8. Co-authored-by: Cursor <cursoragent@cursor.com>
Activate Corepack from the nvm Node bin so jsbundling-rails can shell out to bare yarn in CI and during assets:precompile specs. Co-authored-by: Cursor <cursoragent@cursor.com>
CircleCI nvm Node installs omit the corepack shim; invoke corepack.js with --install-directory ~/bin so yarn is on PATH for Rake and CI. Co-authored-by: Cursor <cursoragent@cursor.com>
Run parallel lint/security jobs and a tests job on ubuntu-24.04, enforce SimpleCov coverage via a committed baseline on pull requests, and consolidate Corepack/Yarn setup into shared CI scripts. Co-authored-by: Cursor <cursoragent@cursor.com>
setup-node's cache: yarn invokes global Yarn 1.x before Corepack; restore and save node_modules via actions/cache instead while keeping bundler-cache. Co-authored-by: Cursor <cursoragent@cursor.com>
Feature-branch pushes with an open PR were firing both push and pull_request events, causing every job to run twice. Co-authored-by: Cursor <cursoragent@cursor.com>
JavascriptBuildEnv now resolves Node from setup-node when nvm is absent so assets:precompile can run yarn during RSpec. Capybara uses the pinned CHROME_BIN from setup-chrome and skips a mismatched bundled chromedriver. Co-authored-by: Cursor <cursoragent@cursor.com>
Pass the Rack app as the first positional argument to Capybara::Selenium::Driver.new; the CI-only driver is skipped locally when CI is unset. Co-authored-by: Cursor <cursoragent@cursor.com>
Avoids "Unable to reserve cache" races from saving an existing key; continue-on-error covers overlapping runs. Save runs after tests. Co-authored-by: Cursor <cursoragent@cursor.com>
Install matching chromedriver from setup-chrome and export both paths so feature specs do not use the runner's stale system driver. Add a git-push rule requiring an explicit push request. Co-authored-by: Cursor <cursoragent@cursor.com>
Route bin/yarn through JavascriptBuildEnv only, surface Corepack failures, and fold Ruby version checks into print_runner_env. Drop unused setup_dependencies scripts and harden the CI Capybara driver. Co-authored-by: Cursor <cursoragent@cursor.com>
Walk PATH with File.executable? instead; File.which is not available on Ruby 4.0.5 and broke assets:precompile in CI. Co-authored-by: Cursor <cursoragent@cursor.com>
Only warn when Corepack setup fails and yarn is not on PATH; fix specs that stubbed activate_yarn! without a return value. Co-authored-by: Cursor <cursoragent@cursor.com>
Add specs for sorting, encryption, pie charts, toggles, and upgrade history. Fix true_false_toggle to read the record attribute and test helper module methods directly where controller helpers shadow them. Co-authored-by: Cursor <cursoragent@cursor.com>
The old helper always returned Yes; yes_no_label formats the boolean value the view already passes. Clarify yes_no_toggle as form-only. Co-authored-by: Cursor <cursoragent@cursor.com>
Exercise PATH lookup, yarn detection, default_root branches, and apply! warning paths. Split apply! examples into a dedicated spec file. Co-authored-by: Cursor <cursoragent@cursor.com>
Add new-code-coverage.mdc and reference it from code-quality and definition-of-done so touched application code must be fully covered. Co-authored-by: Cursor <cursoragent@cursor.com>
[skip ci] on baseline commits avoids re-running the full workflow on pull_request synchronize. Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Contributor
Author
|
Deploys to libappstest and runs normally |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Major platform and CI refresh for the 3.1.0 release: upgrade Ruby and Node to current org standards, migrate from CircleCI to GitHub Actions, and replace Coveralls with a SimpleCov coverage baseline gate on pull requests.
Runtime upgrades
cgigem (removed from Ruby 4 stdlib); updates.ruby-versionandGemfile.nvmrc,package.jsonengines, and docs to match org standardJavascriptBuildEnvresolves Node/Yarn withoutFile.which(not available on Ruby 4.0.5)scripts/corepack_yarn.shand slimmerbin/yarnfor Corepack activationjavascript:installduringassets:precompileCI: CircleCI → GitHub Actions
Removes
.circleci/config.yml,.coveralls.yml, and the old.github/workflows/main.yml. Adds.github/workflows/ci_checks.ymlwith three job groups:setup-chrome), Node 26, yarn install, asset build, migrations, full RSpec suitecoverage/coverage_baseline.txt; commits a higher baseline when coverage improvesSupporting scripts live under
scripts/ci/(extracted from the old monolithic workflow for clarity and local parity).CI behavior changes vs CircleCI:
simplecov-lcovdropped; SimpleCov HTML report + committed baseline replaces external coverage serviceqaandmainso feature-branch pushes with an open PR do not double-run CInode_modulescached explicitly for Yarn 4 (setup-node's built-in Yarn 1.x cache is not used)[skip ci]so bumpingcoverage_baseline.txtdoes not re-trigger the full workflowApplication fixes
true_false_toggle→yes_no_label— helper always returned "Yes"; views now use a correct yes/no labelCHROME_BIN/CHROMEDRIVER_PATHfrom setup-chrome; fixes driver version mismatch andDriver.newkeyword-arg error on current CapybaraTest coverage & project standards
SoftwareRecordsHelperandJavascriptBuildEnv.cursor/rules/new-code-coverage.mdc) documents the 100% new-code requirement; updates tocode-quality.mdcanddefinition-of-done.mdcspec/ci/ci_checks_spec.rbguards CI workflow shape (no Coveralls, baseline file present, skip-ci on bot commits)Docs
README.mdandCHANGELOG.mdupdated for Ruby 4, Node 26, GHA CI, and SimpleCov baseline gateTest plan
[skip ci])nvm use,corepack enable,bin/setup,bundle exec rspecbundle exec rubocop