Skip to content

Chore: add 'testlens-app/setup-testlens' GH action#15044

Merged
jjohannes merged 1 commit intomainfrom
activate-testlens
Feb 6, 2026
Merged

Chore: add 'testlens-app/setup-testlens' GH action#15044
jjohannes merged 1 commit intomainfrom
activate-testlens

Conversation

@jjohannes
Copy link
Copy Markdown
Collaborator

As discussed with @koppor this onboard the JabRef/jabref project for the TestLens private beta. The action requires the TestLens App to be installed on this repository, which is already done.

The app posts a summary of all test failures as a PR comment and provides means to mute unrelated test failures and faster reruns. For more information, please refer to the announcement on our website.

For questions and feedback, please contact me directly or open an issue.

Mandatory checks

  • I own the copyright of the code submitted and I license it under the MIT license

/

@qodo-free-for-open-source-projects
Copy link
Copy Markdown
Contributor

Review Summary by Qodo

Integrate TestLens GitHub action for test monitoring

✨ Enhancement

Grey Divider

Walkthroughs

Description
• Integrates TestLens GitHub action for test failure analysis
• Enables automated test summary comments on pull requests
• Provides test failure muting and faster rerun capabilities
Diagram
flowchart LR
  A["Gradle Setup Action"] --> B["Setup JDK"]
  B --> C["Setup Gradle"]
  C --> D["Setup TestLens"]
  D --> E["Test Monitoring & Reporting"]
Loading

Grey Divider

File Changes

1. .github/actions/setup-gradle/action.yml ✨ Enhancement +2/-0

Add TestLens action to Gradle setup workflow

• Added TestLens setup step to the Gradle setup action workflow
• Integrated testlens-app/setup-testlens@v1 action after Gradle setup
• Enables automated test failure analysis and PR comments
• Requires TestLens App to be installed on the repository

.github/actions/setup-gradle/action.yml


Grey Divider

Qodo Logo

@qodo-free-for-open-source-projects
Copy link
Copy Markdown
Contributor

Code Review by Qodo

🐞 Bugs (3) 📘 Rule violations (0) 📎 Requirement gaps (0)

Grey Divider


Action required

1. Env bound to TestLens 🐞 Bug ✓ Correctness
Description
GRADLE_BUILD_ACTION_CACHE_DEBUG_ENABLED is now applied to the new “Setup TestLens” step, not to
  the “Setup Gradle” step.
• This silently changes CI behavior: any intended configuration of gradle/actions/setup-gradle via
  that env var will no longer take effect.
• Because this composite action is used across many workflows, the impact applies broadly to CI
  runs.
Code

.github/actions/setup-gradle/action.yml[R23-28]

    - name: Setup Gradle
      uses: gradle/actions/setup-gradle@v5
+    - name: Setup TestLens
+      uses: testlens-app/setup-testlens@v1
      env:
        GRADLE_BUILD_ACTION_CACHE_DEBUG_ENABLED: true
Evidence
The env: block is indented under the new TestLens step (not under the Gradle setup step). The
Gradle step ends at line 24 with no env: attached, so the variable will not be provided to that
action.

.github/actions/setup-gradle/action.yml[23-28]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

### Issue description
`GRADLE_BUILD_ACTION_CACHE_DEBUG_ENABLED` is currently scoped to the new `Setup TestLens` step due to YAML indentation, meaning it will not be applied to the `gradle/actions/setup-gradle` step anymore.

### Issue Context
This composite action is reused across multiple workflows; a small scoping change has repo-wide CI impact.

### Fix Focus Areas
- .github/actions/setup-gradle/action.yml[23-28]

### Implementation notes
- If the env var is intended for `gradle/actions/setup-gradle`, indent/move the `env:` block under the `Setup Gradle` step.
- If it’s intended to be global for subsequent Gradle invocations, consider setting it in the calling workflows’ job/step `env` instead.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools



Remediation recommended

2. Unpinned TestLens action 🐞 Bug ⛨ Security
Description
• The newly introduced testlens-app/setup-testlens@v1 uses a mutable tag, increasing supply-chain
  risk (the referenced code can change without a PR).
• The repo already demonstrates SHA-pinning for at least some third-party actions, so this is
  inconsistent with existing practice.
Code

.github/actions/setup-gradle/action.yml[R25-26]

+    - name: Setup TestLens
+      uses: testlens-app/setup-testlens@v1
Evidence
The composite action references testlens-app/setup-testlens via @v1. Elsewhere in the repo, a
third-party action is pinned to an immutable commit SHA, demonstrating an existing precedent for
stronger pinning.

.github/actions/setup-gradle/action.yml[25-26]
.github/workflows/binaries.yml[450-453]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

### Issue description
The new dependency `testlens-app/setup-testlens@v1` is a mutable reference. Pinning reduces the risk of unexpected upstream changes and supply-chain attacks.

### Issue Context
This action is introduced inside a shared composite action, so it will run in many workflows.

### Fix Focus Areas
- .github/actions/setup-gradle/action.yml[25-26]

### Implementation notes
- Replace `@v1` with `@<full_commit_sha>`.
- Add a short comment mapping the SHA back to the release/tag for maintainability.
- Dependabot is already configured for `github-actions` updates; it can keep the SHA current.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


3. Shared action blast radius 🐞 Bug ⛯ Reliability
Description
• Adding TestLens inside the shared setup-gradle composite action makes many workflows depend on
  the availability/behavior of a new external action.
• This increases CI coupling for unrelated pipelines (e.g., publish and multi-OS binaries) even if
  they don’t need TestLens.
• Consider making TestLens opt-in (input flag) or enabling it only in workflows that actually
  consume its output.
Code

.github/actions/setup-gradle/action.yml[R25-26]

+    - name: Setup TestLens
+      uses: testlens-app/setup-testlens@v1
Evidence
Workflows across the repo call ./.github/actions/setup-gradle. Because the new TestLens step is
unconditional inside that composite action, it will execute in all those workflows, including
sensitive pipelines like publish and cross-platform binaries.

.github/actions/setup-gradle/action.yml[23-29]
.github/workflows/tests-code.yml[49-56]
.github/workflows/publish.yml[93-101]
.github/workflows/binaries.yml[332-375]
.github/workflows/binaries.yml[429-431]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

### Issue description
`Setup TestLens` is now an unconditional step inside a widely used composite action, increasing CI coupling and introducing a new external dependency for many workflows.

### Issue Context
`./.github/actions/setup-gradle` is used in tests, publish, SBOM generation, and cross-platform binaries builds.

### Fix Focus Areas
- .github/actions/setup-gradle/action.yml[4-45]
- .github/workflows/tests-code.yml[49-70]
- .github/workflows/publish.yml[93-102]
- .github/workflows/binaries.yml[332-375]

### Implementation notes
- Add a composite action input (e.g., `enableTestLens`, default `false`).
- Guard the TestLens step with `if: ${{ inputs.enableTestLens == 'true' }}`.
- Turn it on only in the specific workflows/jobs that need TestLens.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Grey Divider

ⓘ The new review experience is currently in Beta. Learn more

Grey Divider

Qodo Logo

Comment thread .github/actions/setup-gradle/action.yml
@koppor koppor enabled auto-merge February 6, 2026 07:31
@koppor koppor added this pull request to the merge queue Feb 6, 2026
@testlens-app
Copy link
Copy Markdown

testlens-app Bot commented Feb 6, 2026

✅ All tests passed ✅

🏷️ Commit: fc63fbf
▶️ Tests: 11185 executed
⚪️ Checks: 52/52 completed


Learn more about TestLens at testlens.app.

@github-actions github-actions Bot added the status: to-be-merged PRs which are accepted and should go into the merge-queue. label Feb 6, 2026
@github-merge-queue github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Feb 6, 2026
@jjohannes jjohannes added this pull request to the merge queue Feb 6, 2026
Merged via the queue into main with commit b0731e4 Feb 6, 2026
53 checks passed
@jjohannes jjohannes deleted the activate-testlens branch February 6, 2026 08:28
Siedlerchr added a commit that referenced this pull request Feb 8, 2026
…es/jablib/src/main/resources/csl-styles-6c79ffe

* upstream/main: (68 commits)
  Chore(deps): Bump org.apache.httpcomponents.client5:httpclient5 (#15060)
  Chore(deps): Bump com.google.errorprone:error_prone_core in /versions (#15059)
  Chore(deps): Bump de.undercouch.download:de.undercouch.download.gradle.plugin (#15057)
  Chore(deps): Bump org.postgresql:postgresql in /versions (#15058)
  Chore(deps): Bump de.undercouch.download:de.undercouch.download.gradle.plugin (#15056)
  Updates on Wednesday, not on Sunday
  Add screenshot requirement (#15050)
  Switch image for javadoc
  Better docker layer caching during build (#15042)
  New Crowdin updates (#15045)
  Chore: reuse shared 'setup-gradle' in all places in test-code.yml (#15043)
  Chore: add 'testlens-app/setup-testlens' GH action (#15044)
  Add: HTTP Server and LSP server toggles to quick settings (#14972)
  Some more recipes from OpenRewrite (#15030)
  feat: Add PDF Upload endpoint to EntryResource (#14963)
  Heuristics also used at batch (#15025)
  Fix cleanup-pr.yml
  New Crowdin updates (#15035)
  Use patched Gradle version (#15034)
  Add OpenAlex-based Citation Fetcher (#15023)
  ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

status: to-be-merged PRs which are accepted and should go into the merge-queue.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants