From 3e98299c6976b1856d4fdc7ff8563df588eca3c0 Mon Sep 17 00:00:00 2001 From: Stan Hu Date: Thu, 21 Aug 2025 22:54:14 -0700 Subject: [PATCH 01/14] Bump Chrome in CI to v138 Chrome v123 is over a year old, and some of the new frontend work requires an updated Chrome. --- .gitlab/ci/version.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab/ci/version.yml b/.gitlab/ci/version.yml index ed25fef390f935..4469abb9a7245b 100644 --- a/.gitlab/ci/version.yml +++ b/.gitlab/ci/version.yml @@ -1,6 +1,6 @@ variables: BUILD_OS: "debian" - CHROME_VERSION: "123" + CHROME_VERSION: "138" DOCKER_VERSION: "27.4.1" EXIFTOOL_VERSION: "12.60" GCLOUD_VERSION: "413" -- GitLab From e34792ef9b58d462ee5eb9f183ea2e7c7de6f9ad Mon Sep 17 00:00:00 2001 From: Kushal Pandya Date: Mon, 25 Aug 2025 16:26:28 -0400 Subject: [PATCH 02/14] Bump Chrome for QA specs to 138 --- qa/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qa/Dockerfile b/qa/Dockerfile index 63d08e6468175e..91efe55a9bd3c5 100644 --- a/qa/Dockerfile +++ b/qa/Dockerfile @@ -1,5 +1,5 @@ ARG BUILD_OS=debian -ARG CHROME_VERSION=123 +ARG CHROME_VERSION=138 ARG DOCKER_VERSION=24.0.5 ARG GCLOUD_VERSION=413 ARG GIT_VERSION=2.45 -- GitLab From 603598a6c6c7d96d0f700a3288e11e413efaf3b6 Mon Sep 17 00:00:00 2001 From: Kushal Pandya Date: Mon, 25 Aug 2025 16:28:30 -0400 Subject: [PATCH 03/14] Isolate Chrome data directory per process --- spec/support/capybara.rb | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/spec/support/capybara.rb b/spec/support/capybara.rb index 2449ec2807535b..15703edc0d4450 100644 --- a/spec/support/capybara.rb +++ b/spec/support/capybara.rb @@ -64,7 +64,10 @@ options.add_argument("disable-dev-shm-usage") if ENV['CI'] || ENV['CI_SERVER'] # Explicitly set user-data-dir to prevent crashes. See https://gitlab.com/gitlab-org/gitlab-foss/issues/58882#note_179811508 - options.add_argument("user-data-dir=/tmp/chrome") if ENV['CI'] || ENV['CI_SERVER'] + if ENV['CI'] || ENV['CI_SERVER'] + unique_dir = "/tmp/chrome_#{Process.pid}" + options.add_argument("user-data-dir=#{unique_dir}") + end # Set chrome default download path if ENV['DEFAULT_CHROME_DOWNLOAD_PATH'] -- GitLab From 9e00bec8ab89c5c8bccaa08a3aa9bfd1e837439d Mon Sep 17 00:00:00 2001 From: Mark Florian Date: Tue, 26 Aug 2025 11:48:25 +0100 Subject: [PATCH 04/14] Try an earlier version of Chome See https://github.com/teamcapybara/capybara/issues/2800 --- .gitlab/ci/version.yml | 2 +- qa/Dockerfile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab/ci/version.yml b/.gitlab/ci/version.yml index 4469abb9a7245b..649c7fe9f86de0 100644 --- a/.gitlab/ci/version.yml +++ b/.gitlab/ci/version.yml @@ -1,6 +1,6 @@ variables: BUILD_OS: "debian" - CHROME_VERSION: "138" + CHROME_VERSION: "133" DOCKER_VERSION: "27.4.1" EXIFTOOL_VERSION: "12.60" GCLOUD_VERSION: "413" diff --git a/qa/Dockerfile b/qa/Dockerfile index 91efe55a9bd3c5..e0f3f5047dd0d7 100644 --- a/qa/Dockerfile +++ b/qa/Dockerfile @@ -1,5 +1,5 @@ ARG BUILD_OS=debian -ARG CHROME_VERSION=138 +ARG CHROME_VERSION=133 ARG DOCKER_VERSION=24.0.5 ARG GCLOUD_VERSION=413 ARG GIT_VERSION=2.45 -- GitLab From d0fe238fbab543a70cf3c83144e581060082b753 Mon Sep 17 00:00:00 2001 From: Stan Hu Date: Sun, 31 Aug 2025 18:44:40 -0700 Subject: [PATCH 05/14] Bump Git version to 2.51 --- .gitlab/ci/version.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab/ci/version.yml b/.gitlab/ci/version.yml index 649c7fe9f86de0..5a90a3448fa06b 100644 --- a/.gitlab/ci/version.yml +++ b/.gitlab/ci/version.yml @@ -4,7 +4,7 @@ variables: DOCKER_VERSION: "27.4.1" EXIFTOOL_VERSION: "12.60" GCLOUD_VERSION: "413" - GIT_VERSION: "2.49" + GIT_VERSION: "2.51" GO_VERSION: "1.23" GRAPHICSMAGICK_VERSION: "1.3.36" HELM_VERSION: "3.16" -- GitLab From a90cb3e0e6d3f519f8d8e3d90c5744edaee827b3 Mon Sep 17 00:00:00 2001 From: Mark Florian Date: Mon, 1 Sep 2025 09:21:34 +0100 Subject: [PATCH 06/14] Try removing user-data-dir option See https://gitlab.com/gitlab-org/gitlab/-/jobs/11199303978 for example failures: ``` Selenium::WebDriver::Error::SessionNotCreatedError: session not created: probably user data directory is already in use, please specify a unique value for --user-data-dir argument, or don't use --user-data-dir ``` --- spec/support/capybara.rb | 6 ------ 1 file changed, 6 deletions(-) diff --git a/spec/support/capybara.rb b/spec/support/capybara.rb index 15703edc0d4450..1fbb3ebe4a63c0 100644 --- a/spec/support/capybara.rb +++ b/spec/support/capybara.rb @@ -63,12 +63,6 @@ # Disable /dev/shm use in CI. See https://gitlab.com/gitlab-org/gitlab/issues/4252 options.add_argument("disable-dev-shm-usage") if ENV['CI'] || ENV['CI_SERVER'] - # Explicitly set user-data-dir to prevent crashes. See https://gitlab.com/gitlab-org/gitlab-foss/issues/58882#note_179811508 - if ENV['CI'] || ENV['CI_SERVER'] - unique_dir = "/tmp/chrome_#{Process.pid}" - options.add_argument("user-data-dir=#{unique_dir}") - end - # Set chrome default download path if ENV['DEFAULT_CHROME_DOWNLOAD_PATH'] options.add_preference("download.default_directory", ENV['DEFAULT_CHROME_DOWNLOAD_PATH']) -- GitLab From a28c10b08bf416eb351024e46e1cbf865921493c Mon Sep 17 00:00:00 2001 From: Stan Hu Date: Mon, 1 Sep 2025 14:37:29 -0700 Subject: [PATCH 07/14] Drop Go 1.22 support and add Go 1.25 for Workhorse images --- .gitlab/ci/workhorse.gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab/ci/workhorse.gitlab-ci.yml b/.gitlab/ci/workhorse.gitlab-ci.yml index 9c5f5ddf039fc6..39df686a0975a0 100644 --- a/.gitlab/ci/workhorse.gitlab-ci.yml +++ b/.gitlab/ci/workhorse.gitlab-ci.yml @@ -42,7 +42,7 @@ workhorse:test go: extends: .workhorse:test parallel: matrix: - - GO_VERSION: ["1.22", "1.23", "1.24"] + - GO_VERSION: ["1.23", "1.24", "1.25"] REDIS_VERSION: ["7.0", "6.2"] script: - make -C workhorse test-coverage @@ -66,7 +66,7 @@ workhorse:test fips: - setup-test-env-fips parallel: matrix: - - GO_VERSION: ["1.22", "1.23", "1.24"] + - GO_VERSION: ["1.23", "1.24", "1.25"] REDIS_VERSION: ["7.0", "6.2"] image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images/${BUILD_OS}-${OS_VERSION}-ruby-${RUBY_VERSION}-golang-${GO_VERSION}-rust-${RUST_VERSION}:rubygems-${RUBYGEMS_VERSION}-git-${GIT_VERSION}-exiftool-${EXIFTOOL_VERSION} variables: -- GitLab From e18ba3f036db9bb9c59f2606176cb3ef239474da Mon Sep 17 00:00:00 2001 From: Stan Hu Date: Mon, 1 Sep 2025 22:10:13 -0700 Subject: [PATCH 08/14] Remove .gitkeep from gitlab-git-test directory `git fsck` now flags these empty .gitkeep files as bad references. --- spec/support/gitlab-git-test.git/refs/heads/.gitkeep | 0 spec/support/gitlab-git-test.git/refs/tags/.gitkeep | 0 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 spec/support/gitlab-git-test.git/refs/heads/.gitkeep delete mode 100644 spec/support/gitlab-git-test.git/refs/tags/.gitkeep diff --git a/spec/support/gitlab-git-test.git/refs/heads/.gitkeep b/spec/support/gitlab-git-test.git/refs/heads/.gitkeep deleted file mode 100644 index e69de29bb2d1d6..00000000000000 diff --git a/spec/support/gitlab-git-test.git/refs/tags/.gitkeep b/spec/support/gitlab-git-test.git/refs/tags/.gitkeep deleted file mode 100644 index e69de29bb2d1d6..00000000000000 -- GitLab From be7382f42ce7a50b335eb1a8a3490fdd2b4bbb72 Mon Sep 17 00:00:00 2001 From: Stan Hu Date: Mon, 1 Sep 2025 22:30:26 -0700 Subject: [PATCH 09/14] Update spec/support/generate-seed-repo-rb to reflect Rubocop changes --- spec/support/generate-seed-repo-rb | 64 +++++++++++++++--------------- 1 file changed, 33 insertions(+), 31 deletions(-) diff --git a/spec/support/generate-seed-repo-rb b/spec/support/generate-seed-repo-rb index 59931e900a97f1..22ff8b94255049 100755 --- a/spec/support/generate-seed-repo-rb +++ b/spec/support/generate-seed-repo-rb @@ -43,6 +43,8 @@ end main __END__ +# frozen_string_literal: true + # This file is generated by <%= SCRIPT_NAME %>. Do not edit this file manually. # # Seed repo: @@ -50,58 +52,58 @@ __END__ module SeedRepo module BigCommit - ID = "913c66a37b4a45b9769037c55c2d238bd0942d2e".freeze - PARENT_ID = "cfe32cf61b73a0d5e9f13e774abde7ff789b1660".freeze - MESSAGE = "Files, encoding and much more".freeze - AUTHOR_FULL_NAME = "Dmitriy Zaporozhets".freeze + ID = "913c66a37b4a45b9769037c55c2d238bd0942d2e" + PARENT_ID = "cfe32cf61b73a0d5e9f13e774abde7ff789b1660" + MESSAGE = "Files, encoding and much more" + AUTHOR_FULL_NAME = "Dmitriy Zaporozhets" FILES_COUNT = 2 end module Commit - ID = "570e7b2abdd848b95f2f578043fc23bd6f6fd24d".freeze - PARENT_ID = "6f6d7e7ed97bb5f0054f2b1df789b39ca89b6ff9".freeze - MESSAGE = "Change some files\n\nSigned-off-by: Dmitriy Zaporozhets \n".freeze - AUTHOR_FULL_NAME = "Dmitriy Zaporozhets".freeze + ID = "570e7b2abdd848b95f2f578043fc23bd6f6fd24d" + PARENT_ID = "6f6d7e7ed97bb5f0054f2b1df789b39ca89b6ff9" + MESSAGE = "Change some files\n\nSigned-off-by: Dmitriy Zaporozhets \n" + AUTHOR_FULL_NAME = "Dmitriy Zaporozhets" FILES = ["files/ruby/popen.rb", "files/ruby/regex.rb"].freeze FILES_COUNT = 2 - C_FILE_PATH = "files/ruby".freeze + C_FILE_PATH = "files/ruby" C_FILES = ["popen.rb", "regex.rb", "version_info.rb"].freeze - BLOB_FILE = %{%h3= @key.title\n%hr\n%pre= @key.key\n.actions\n = link_to 'Remove', @key, :confirm => 'Are you sure?', :method => :delete, :class => \"btn danger delete-key\"\n\n\n}.freeze - BLOB_FILE_PATH = "app/views/keys/show.html.haml".freeze + BLOB_FILE = %(%h3= @key.title\n%hr\n%pre= @key.key\n.actions\n = link_to 'Remove', @key, :confirm => 'Are you sure?', :method => :delete, :class => \"btn danger delete-key\"\n\n\n) + BLOB_FILE_PATH = "app/views/keys/show.html.haml" end module EmptyCommit - ID = "b0e52af38d7ea43cf41d8a6f2471351ac036d6c9".freeze - PARENT_ID = "40f4a7a617393735a95a0bb67b08385bc1e7c66d".freeze - MESSAGE = "Empty commit".freeze - AUTHOR_FULL_NAME = "Rémy Coutable".freeze + ID = "b0e52af38d7ea43cf41d8a6f2471351ac036d6c9" + PARENT_ID = "40f4a7a617393735a95a0bb67b08385bc1e7c66d" + MESSAGE = "Empty commit" + AUTHOR_FULL_NAME = "Rémy Coutable" FILES = [].freeze FILES_COUNT = FILES.count end module EncodingCommit - ID = "40f4a7a617393735a95a0bb67b08385bc1e7c66d".freeze - PARENT_ID = "66028349a123e695b589e09a36634d976edcc5e8".freeze - MESSAGE = "Add ISO-8859-encoded file".freeze - AUTHOR_FULL_NAME = "Stan Hu".freeze + ID = "40f4a7a617393735a95a0bb67b08385bc1e7c66d" + PARENT_ID = "66028349a123e695b589e09a36634d976edcc5e8" + MESSAGE = "Add ISO-8859-encoded file" + AUTHOR_FULL_NAME = "Stan Hu" FILES = ["encoding/iso8859.txt"].freeze FILES_COUNT = FILES.count end module FirstCommit - ID = "1a0b36b3cdad1d2ee32457c102a8c0b7056fa863".freeze + ID = "1a0b36b3cdad1d2ee32457c102a8c0b7056fa863" PARENT_ID = nil - MESSAGE = "Initial commit".freeze - AUTHOR_FULL_NAME = "Dmitriy Zaporozhets".freeze + MESSAGE = "Initial commit" + AUTHOR_FULL_NAME = "Dmitriy Zaporozhets" FILES = ["LICENSE", ".gitignore", "README.md"].freeze FILES_COUNT = 3 end module LastCommit - ID = <%= capture!(%w[git show -s --format=%H HEAD], repo).inspect %>.freeze - PARENT_ID = <%= capture!(%w[git show -s --format=%P HEAD], repo).split.last.inspect %>.freeze - MESSAGE = <%= capture!(%w[git show -s --format=%s HEAD], repo).inspect %>.freeze - AUTHOR_FULL_NAME = <%= capture!(%w[git show -s --format=%an HEAD], repo).inspect %>.freeze + ID = <%= capture!(%w[git show -s --format=%H HEAD], repo).inspect %> + PARENT_ID = <%= capture!(%w[git show -s --format=%P HEAD], repo).split.last.inspect %> + MESSAGE = <%= capture!(%w[git show -s --format=%s HEAD], repo).inspect %> + AUTHOR_FULL_NAME = <%= capture!(%w[git show -s --format=%an HEAD], repo).inspect %> FILES = <%= parents = capture!(%w[git show -s --format=%P HEAD], repo).split merge_base = parents.size > 1 ? capture!(%w[git merge-base] + parents, repo) : parents.first @@ -111,7 +113,7 @@ module SeedRepo end module Repo - HEAD = "master".freeze + HEAD = "master" BRANCHES = %w[ <%= capture!(%W[git for-each-ref --format=#{' ' * 3}%(refname:strip=2) refs/heads/], repo) %> ].freeze @@ -121,9 +123,9 @@ module SeedRepo end module RubyBlob - ID = "7e3e39ebb9b2bf433b4ad17313770fbe4051649c".freeze - NAME = "popen.rb".freeze - CONTENT = <<-eos.freeze + ID = "7e3e39ebb9b2bf433b4ad17313770fbe4051649c" + NAME = "popen.rb" + CONTENT = <<-EOS require 'fileutils' require 'open3' @@ -161,6 +163,6 @@ module Popen return @cmd_output, @cmd_status end end - eos + EOS end end -- GitLab From ff149d1108f05de8ea7f109779ed461b69ed00f4 Mon Sep 17 00:00:00 2001 From: Stan Hu Date: Mon, 1 Sep 2025 22:41:31 -0700 Subject: [PATCH 10/14] Revert "Remove .gitkeep from gitlab-git-test directory" This reverts commit e18ba3f036db9bb9c59f2606176cb3ef239474da. --- spec/support/gitlab-git-test.git/refs/heads/.gitkeep | 0 spec/support/gitlab-git-test.git/refs/tags/.gitkeep | 0 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 spec/support/gitlab-git-test.git/refs/heads/.gitkeep create mode 100644 spec/support/gitlab-git-test.git/refs/tags/.gitkeep diff --git a/spec/support/gitlab-git-test.git/refs/heads/.gitkeep b/spec/support/gitlab-git-test.git/refs/heads/.gitkeep new file mode 100644 index 00000000000000..e69de29bb2d1d6 diff --git a/spec/support/gitlab-git-test.git/refs/tags/.gitkeep b/spec/support/gitlab-git-test.git/refs/tags/.gitkeep new file mode 100644 index 00000000000000..e69de29bb2d1d6 -- GitLab From b83508673ea076699cdd57c40572e9f199e5d3ad Mon Sep 17 00:00:00 2001 From: Stan Hu Date: Mon, 1 Sep 2025 22:42:07 -0700 Subject: [PATCH 11/14] Work around gitlab_git_test failures by disabling git fsck `git fsck` now fails if `refs/heads/.gitkeep` or `ref/tags/.gitkeep` is present. Disable the `git fsck` check for now. --- spec/support/unpack-gitlab-git-test | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/spec/support/unpack-gitlab-git-test b/spec/support/unpack-gitlab-git-test index 5d5f1b7d082953..43457e1024b7a5 100755 --- a/spec/support/unpack-gitlab-git-test +++ b/spec/support/unpack-gitlab-git-test @@ -13,7 +13,9 @@ def main # We want to store the refs in a packed-refs file because if we don't # they can get mangled by filesystems. abort unless system(*GIT, *%w[pack-refs --all]) - abort unless system(*GIT, 'fsck') + # Disable the fsck for now because this fails due to the presence + # of refs/{heads,tags}/.gitkeep + # abort unless system(*GIT, 'fsck') end # We don't want contributors to commit new pack files because those -- GitLab From 7dc79ce7c4990ebdb5946205541f68efbc2cb3da Mon Sep 17 00:00:00 2001 From: Miguel Rincon Date: Fri, 29 Aug 2025 16:17:50 +0200 Subject: [PATCH 12/14] Use simpler sign_in method in test --- spec/features/group_variables_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/features/group_variables_spec.rb b/spec/features/group_variables_spec.rb index 134694ddaf629c..04a8699b38fc5c 100644 --- a/spec/features/group_variables_spec.rb +++ b/spec/features/group_variables_spec.rb @@ -10,7 +10,7 @@ before do group.add_owner(user) - gitlab_sign_in(user) + sign_in(user) visit page_path wait_for_requests -- GitLab From 90c6b37d05a35ce467e64c20b246a19fa2300196 Mon Sep 17 00:00:00 2001 From: Stan Hu Date: Tue, 2 Sep 2025 11:12:43 -0700 Subject: [PATCH 13/14] Simplify spec/features/snippets/user_creates_snippet_spec.rb test Drop `switch_to.alert` because this doesn't work with Chrome v133. --- spec/features/snippets/user_creates_snippet_spec.rb | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/spec/features/snippets/user_creates_snippet_spec.rb b/spec/features/snippets/user_creates_snippet_spec.rb index e49b4707e2ed86..4245839cfd93b4 100644 --- a/spec/features/snippets/user_creates_snippet_spec.rb +++ b/spec/features/snippets/user_creates_snippet_spec.rb @@ -146,9 +146,7 @@ def fill_form # not anymore as requests when they come straight from memory cache. # accept_confirm is needed because of https://gitlab.com/gitlab-org/gitlab/-/issues/262102 reqs = inspect_requests do - visit("#{link}?ran=#{SecureRandom.base64(20)}") do - page.driver.browser.switch_to.alert.accept - end + visit("#{link}?ran=#{SecureRandom.base64(20)}") end expect(reqs.first.status_code).to eq(200) end -- GitLab From 48bcd3aa119889d938512a133b2a0cac74f88031 Mon Sep 17 00:00:00 2001 From: Jay McCure Date: Thu, 4 Sep 2025 11:31:48 +1000 Subject: [PATCH 14/14] test: refind user in work item specs --- ee/spec/features/work_items/detail/work_item_detail_spec.rb | 2 +- .../features/work_items/epics/epic_work_item_detail_spec.rb | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ee/spec/features/work_items/detail/work_item_detail_spec.rb b/ee/spec/features/work_items/detail/work_item_detail_spec.rb index a4f1d432dd0cce..76b4ed9728f34e 100644 --- a/ee/spec/features/work_items/detail/work_item_detail_spec.rb +++ b/ee/spec/features/work_items/detail/work_item_detail_spec.rb @@ -5,7 +5,7 @@ RSpec.describe 'Work item detail', :js, feature_category: :team_planning do include ListboxHelpers - let_it_be_with_reload(:user) { create(:user) } + let_it_be_with_refind(:user) { create(:user) } let_it_be(:group) { create(:group, :nested) } let_it_be(:root_group) { group.root_ancestor } diff --git a/ee/spec/features/work_items/epics/epic_work_item_detail_spec.rb b/ee/spec/features/work_items/epics/epic_work_item_detail_spec.rb index 4d96aaec99219c..4f930c7cf8cb21 100644 --- a/ee/spec/features/work_items/epics/epic_work_item_detail_spec.rb +++ b/ee/spec/features/work_items/epics/epic_work_item_detail_spec.rb @@ -6,8 +6,8 @@ include DragTo include ListboxHelpers - let_it_be_with_reload(:user) { create(:user) } - let_it_be_with_reload(:user2) { create(:user, name: 'John') } + let_it_be_with_refind(:user) { create(:user) } + let_it_be_with_refind(:user2) { create(:user, name: 'John') } let_it_be(:group) { create(:group, :nested, developers: user) } let_it_be(:label) { create(:group_label, group: group) } -- GitLab