From ba08d4e44c49c944eacec2d012a05c423bd45ecb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Mar 2026 13:43:31 +0000 Subject: [PATCH 1/7] Build(deps): bump sqlite3 from 2.9.0 to 2.9.1 Bumps [sqlite3](https://github.com/sparklemotion/sqlite3-ruby) from 2.9.0 to 2.9.1. - [Release notes](https://github.com/sparklemotion/sqlite3-ruby/releases) - [Changelog](https://github.com/sparklemotion/sqlite3-ruby/blob/main/CHANGELOG.md) - [Commits](https://github.com/sparklemotion/sqlite3-ruby/compare/v2.9.0...v2.9.1) --- updated-dependencies: - dependency-name: sqlite3 dependency-version: 2.9.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index a2ddae7b8..39f65efe0 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -246,14 +246,14 @@ GEM rack-session (>= 2.0.0, < 3) tilt (~> 2.0) slack-notifier (2.4.0) - sqlite3 (2.9.0-aarch64-linux-gnu) - sqlite3 (2.9.0-aarch64-linux-musl) - sqlite3 (2.9.0-arm-linux-gnu) - sqlite3 (2.9.0-arm-linux-musl) - sqlite3 (2.9.0-arm64-darwin) - sqlite3 (2.9.0-x86_64-darwin) - sqlite3 (2.9.0-x86_64-linux-gnu) - sqlite3 (2.9.0-x86_64-linux-musl) + sqlite3 (2.9.1-aarch64-linux-gnu) + sqlite3 (2.9.1-aarch64-linux-musl) + sqlite3 (2.9.1-arm-linux-gnu) + sqlite3 (2.9.1-arm-linux-musl) + sqlite3 (2.9.1-arm64-darwin) + sqlite3 (2.9.1-x86_64-darwin) + sqlite3 (2.9.1-x86_64-linux-gnu) + sqlite3 (2.9.1-x86_64-linux-musl) stringio (3.2.0) sync (0.5.0) term-ansicolor (1.11.3) From 57692ea9300064f240b1cf4c7e849c645ba9ed64 Mon Sep 17 00:00:00 2001 From: zinduolis Date: Fri, 6 Mar 2026 10:27:36 +1000 Subject: [PATCH 2/7] allow for tests to run for dependabot without need for label --- .github/workflows/github_actions.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/github_actions.yml b/.github/workflows/github_actions.yml index f5a79d9d0..5684170c0 100644 --- a/.github/workflows/github_actions.yml +++ b/.github/workflows/github_actions.yml @@ -3,18 +3,21 @@ name: 'BrowserStack Test' on: pull_request_target: branches: [ master ] - types: [ labeled ] + types: [ labeled, opened, synchronize ] jobs: ubuntu-job: name: 'BrowserStack Test on Ubuntu' runs-on: ubuntu-latest - if: github.event.label.name == 'safe_to_test' + if: | + github.event.label.name == 'safe_to_test' || + github.event.pull_request.user.login == 'dependabot[bot]' env: GITACTIONS: true steps: - name: 'Remove safe_to_test label' + if: github.event.label.name == 'safe_to_test' uses: actions/github-script@v8 with: script: | From b8f96bfae5f143c098af52303cfe6c12d6d32c82 Mon Sep 17 00:00:00 2001 From: zinduolis Date: Fri, 6 Mar 2026 10:27:36 +1000 Subject: [PATCH 3/7] allow for tests to run for dependabot without need for label --- .github/workflows/github_actions.yml | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/.github/workflows/github_actions.yml b/.github/workflows/github_actions.yml index f5a79d9d0..ccb2dbb74 100644 --- a/.github/workflows/github_actions.yml +++ b/.github/workflows/github_actions.yml @@ -3,27 +3,38 @@ name: 'BrowserStack Test' on: pull_request_target: branches: [ master ] - types: [ labeled ] + types: [ labeled, opened, synchronize ] jobs: ubuntu-job: name: 'BrowserStack Test on Ubuntu' runs-on: ubuntu-latest - if: github.event.label.name == 'safe_to_test' + if: | + github.event.label.name == 'safe_to_test' || + github.event.pull_request.user.login == 'dependabot[bot]' env: GITACTIONS: true steps: - name: 'Remove safe_to_test label' + if: github.event.label.name == 'safe_to_test' uses: actions/github-script@v8 with: script: | - await github.rest.issues.removeLabel({ - owner: context.repo.owner, - repo: context.repo.repo, - issue_number: context.payload.pull_request.number, - name: 'safe_to_test' - }); + try { + await github.rest.issues.removeLabel({ + owner: context.repo.owner, + repo: context.repo.repo, + issue_number: context.payload.pull_request.number, + name: 'safe_to_test' + }); + } catch (e) { + if (e.status === 404) { + console.log('Label already removed, skipping'); + } else { + throw e; + } + } - name: 'BrowserStack Env Setup' # Invokes the setup-env action uses: browserstack/github-actions/setup-env@master From e752574172fc433bd1b6e96fd3952a7b5fac0f75 Mon Sep 17 00:00:00 2001 From: zinduolis Date: Wed, 11 Mar 2026 19:12:18 +1000 Subject: [PATCH 4/7] Add concurrency group at the job level to ensure only one BrowserStack test runs per PR at a time, eliminating the double-run scenario --- .github/workflows/github_actions.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/github_actions.yml b/.github/workflows/github_actions.yml index ccb2dbb74..d917e8ee1 100644 --- a/.github/workflows/github_actions.yml +++ b/.github/workflows/github_actions.yml @@ -9,6 +9,9 @@ jobs: ubuntu-job: name: 'BrowserStack Test on Ubuntu' runs-on: ubuntu-latest + concurrency: + group: browserstack-${{ github.event.pull_request.number }} + cancel-in-progress: true if: | github.event.label.name == 'safe_to_test' || github.event.pull_request.user.login == 'dependabot[bot]' From e73596cf6ed8d46fbff7f734c508912861c2acc1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 11 Mar 2026 09:20:27 +0000 Subject: [PATCH 5/7] Build(deps): bump rubocop from 1.85.0 to 1.85.1 Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.85.0 to 1.85.1. - [Release notes](https://github.com/rubocop/rubocop/releases) - [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md) - [Commits](https://github.com/rubocop/rubocop/compare/v1.85.0...v1.85.1) --- updated-dependencies: - dependency-name: rubocop dependency-version: 1.85.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Gemfile | 2 +- Gemfile.lock | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/Gemfile b/Gemfile index 08fa8d132..1a7ca7b47 100644 --- a/Gemfile +++ b/Gemfile @@ -24,7 +24,7 @@ gem 'rake', '~> 13.3' gem 'activerecord', '~> 8.1' gem 'otr-activerecord', '~> 2.6.0' gem 'sqlite3', '~> 2.9' -gem 'rubocop', '~> 1.85.0', require: false +gem 'rubocop', '~> 1.85.1', require: false # Geolocation support group :geoip do diff --git a/Gemfile.lock b/Gemfile.lock index 39f65efe0..df7215677 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -20,8 +20,8 @@ GEM securerandom (>= 0.3) tzinfo (~> 2.0, >= 2.0.5) uri (>= 0.13.1) - addressable (2.8.7) - public_suffix (>= 2.0.2, < 7.0) + addressable (2.8.9) + public_suffix (>= 2.0.2, < 8.0) ansi (1.5.0) archive-zip (0.13.1) io-like (~> 0.4.0) @@ -91,7 +91,7 @@ GEM rdoc (>= 4.0.0) reline (>= 0.4.2) json (2.18.1) - json-schema (6.1.0) + json-schema (6.2.0) addressable (~> 2.8) bigdecimal (>= 3.1, < 5) language_server-protocol (3.17.0.5) @@ -99,7 +99,7 @@ GEM logger (1.7.0) matrix (0.4.3) maxmind-db (1.4.0) - mcp (0.7.1) + mcp (0.8.0) json-schema (>= 4.1) method_source (1.1.0) mime-types (3.7.0) @@ -159,7 +159,7 @@ GEM psych (5.3.1) date stringio - public_suffix (6.0.2) + public_suffix (7.0.5) qr4r (0.6.2) mojo_magick (~> 0.6.5) rqrcode_core (~> 1.0) @@ -204,7 +204,7 @@ GEM diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.13.0) rspec-support (3.13.6) - rubocop (1.85.0) + rubocop (1.85.1) json (~> 2.3) language_server-protocol (~> 3.17.0.2) lint_roller (~> 1.1.0) @@ -216,7 +216,7 @@ GEM rubocop-ast (>= 1.49.0, < 2.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 2.4.0, < 4.0) - rubocop-ast (1.49.0) + rubocop-ast (1.49.1) parser (>= 3.3.7.2) prism (~> 1.7) ruby-progressbar (1.13.0) @@ -345,7 +345,7 @@ DEPENDENCIES rdoc (~> 7.2) rest-client (~> 2.1.0) rspec (~> 3.13) - rubocop (~> 1.85.0) + rubocop (~> 1.85.1) rubyzip (~> 3.2) rushover (~> 0.3.0) selenium-webdriver (~> 4.41) From 5b741fa4d48136c7fb89dff45f5c1ea83a6598ee Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 11 Mar 2026 09:24:02 +0000 Subject: [PATCH 6/7] Build(deps): bump json from 2.18.1 to 2.19.1 Bumps [json](https://github.com/ruby/json) from 2.18.1 to 2.19.1. - [Release notes](https://github.com/ruby/json/releases) - [Changelog](https://github.com/ruby/json/blob/master/CHANGES.md) - [Commits](https://github.com/ruby/json/compare/v2.18.1...v2.19.1) --- updated-dependencies: - dependency-name: json dependency-version: 2.19.1 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index df7215677..e597b87a2 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -90,7 +90,7 @@ GEM prism (>= 1.3.0) rdoc (>= 4.0.0) reline (>= 0.4.2) - json (2.18.1) + json (2.19.1) json-schema (6.2.0) addressable (~> 2.8) bigdecimal (>= 3.1, < 5) From 656b4e29e50ba8cfd71975a4eeb7c5f635bc0144 Mon Sep 17 00:00:00 2001 From: zinduolis Date: Wed, 11 Mar 2026 19:41:40 +1000 Subject: [PATCH 7/7] Separate the concerns: keep the BrowserStack workflow triggered only on labeled, and create a lightweight auto-labeling workflow that applies safe_to_test to dependabot PRs --- .github/workflows/dependabot_auto_label.yml | 35 +++++++++++++++++++++ .github/workflows/github_actions.yml | 9 ++---- 2 files changed, 38 insertions(+), 6 deletions(-) create mode 100644 .github/workflows/dependabot_auto_label.yml diff --git a/.github/workflows/dependabot_auto_label.yml b/.github/workflows/dependabot_auto_label.yml new file mode 100644 index 000000000..9ad939e39 --- /dev/null +++ b/.github/workflows/dependabot_auto_label.yml @@ -0,0 +1,35 @@ +name: 'Auto-label Dependabot PRs' + +on: + pull_request_target: + branches: [ master ] + types: [ opened, synchronize ] + +jobs: + auto-label: + name: 'Apply safe_to_test for Dependabot' + if: github.event.pull_request.user.login == 'dependabot[bot]' + runs-on: ubuntu-latest + steps: + - name: 'Add safe_to_test label' + uses: actions/github-script@v8 + with: + script: | + const { owner, repo } = context.repo; + const issue_number = context.payload.pull_request.number; + + // Remove first so re-adding always fires a labeled event, + // which triggers the BrowserStack workflow. + try { + await github.rest.issues.removeLabel({ + owner, repo, issue_number, + name: 'safe_to_test' + }); + } catch (e) { + if (e.status !== 404) throw e; + } + + await github.rest.issues.addLabels({ + owner, repo, issue_number, + labels: ['safe_to_test'] + }); diff --git a/.github/workflows/github_actions.yml b/.github/workflows/github_actions.yml index d917e8ee1..85600e868 100644 --- a/.github/workflows/github_actions.yml +++ b/.github/workflows/github_actions.yml @@ -3,7 +3,7 @@ name: 'BrowserStack Test' on: pull_request_target: branches: [ master ] - types: [ labeled, opened, synchronize ] + types: [ labeled ] jobs: ubuntu-job: @@ -12,15 +12,12 @@ jobs: concurrency: group: browserstack-${{ github.event.pull_request.number }} cancel-in-progress: true - if: | - github.event.label.name == 'safe_to_test' || - github.event.pull_request.user.login == 'dependabot[bot]' + if: github.event.label.name == 'safe_to_test' env: GITACTIONS: true steps: - name: 'Remove safe_to_test label' - if: github.event.label.name == 'safe_to_test' uses: actions/github-script@v8 with: script: | @@ -79,4 +76,4 @@ jobs: - name: 'BrowserStackLocal Stop' # Terminating the BrowserStackLocal tunnel connection uses: browserstack/github-actions/setup-local@master with: - local-testing: stop \ No newline at end of file + local-testing: stop