Skip to content

[issues/558] Automate 3 assisted tests with CMD_BIND_TO_CUSTOM_AI_BY_ID + dummyAi.getText()#601

Merged
couimet merged 2 commits into
mainfrom
issues/558
May 25, 2026
Merged

[issues/558] Automate 3 assisted tests with CMD_BIND_TO_CUSTOM_AI_BY_ID + dummyAi.getText()#601
couimet merged 2 commits into
mainfrom
issues/558

Conversation

@couimet
Copy link
Copy Markdown
Owner

@couimet couimet commented May 25, 2026

Summary

Three [assisted] integration tests that required human setup (picker bind, keybinding press, PASS/FAIL verdict) are now fully automated using CMD_BIND_TO_CUSTOM_AI_BY_ID for programmatic binding, CMD_COPY_LINK_RELATIVE for programmatic send, and dummyAi.getText() for outcome verification. clipboardPreservation.test.ts now has zero [assisted] tests.

Changes

  • core-send-commands-r-l-003: replaced human-in-the-loop with programmatic bind → send → dummyAi.getText() assertion. Removed waitForHumanVerdict import.
  • clipboard-preservation-004: same pattern. Programmatic bind to rangelink.dummy-ai-extension, programmatic send, dummyAi.getText() outcome check.
  • clipboard-preservation-010: same pattern. Bind to rangelink.dummy-ai-extension-focus-fail, programmatic send, log-based assertions for focus-failure path.
  • All three tests now assert exact padded values (${link}) via strict equality — no .trim() in any assertion.
  • Removed waitForHuman and CLIPBOARD_SENTINEL from clipboardPreservation imports. CLIPBOARD_SENTINEL was only referenced in waitForHuman console steps (shown to the human driver); the sentinel mechanics still work through writeClipboardSentinel, assertClipboardRestored, and assertClipboardChanged which use the constant internally.
  • assistedTestHelper.ts: fixed waitForHumanVerdict overlap bug. When Mocha times out a verdict-blocked test and starts the next one, the new invocation now disposes the previous test's stale status bar items AND dismisses its withProgress notification toast before creating its own. Root cause: Mocha timeout fires on a waitForHumanVerdict-blocked test, Mocha fails it and starts the next test, but settleWith never ran so the first test's PASS/FAIL buttons and progress toast persisted. Fix: module-level activeVerdictDisposables + activeVerdictReject track the current invocation's state; a new call disposes stale items and rejects the prior promise to dismiss the toast.
  • .vscode-test.mjs: added RANGELINK_MOCHA_TIMEOUT env var override for debugging timeout behavior without code changes (defaults to ASSISTED_TIMEOUT_MS when unset).
  • QA YAML: all three TCs moved from automated: assisted to automated: true. Automated count: 156 → 159, assisted count: 112 → 108 (one other TC changed independently).

Test Plan

  • All 1979 unit tests pass
  • core-send-commands-r-l-003 passes fully automated (1.7s)
  • clipboard-preservation-004 passes fully automated (1.6s)
  • clipboard-preservation-010 passes fully automated (1.5s)
  • QA coverage validator passes (159 automated, 108 assisted)
  • Zero .trim() calls remain in integration test assertions

Related

Summary by CodeRabbit

  • Tests

    • Converted three previously assisted/manual QA test cases to fully automated flows.
    • Updated integration tests to validate exact padded link outputs and handle focus-failure scenarios.
    • Improved test helper to dispose stale prompts and reject superseded verifications.
  • Chores

    • Test runner timeout now honors a configurable environment variable with a safe fallback.
    • QA metadata updated to reflect automated status changes.

Review Change Stack

…_ID` + `dummyAi.getText()`

## Summary

Three [assisted] integration tests that required human setup (picker bind, keybinding press, PASS/FAIL verdict) are now fully automated using `CMD_BIND_TO_CUSTOM_AI_BY_ID` for programmatic binding, `CMD_COPY_LINK_RELATIVE` for programmatic send, and `dummyAi.getText()` for outcome verification. `clipboardPreservation.test.ts` now has zero `[assisted]` tests.

## Changes

- `core-send-commands-r-l-003`: replaced human-in-the-loop with programmatic bind → send → `dummyAi.getText()` assertion. Removed `waitForHumanVerdict` import.
- `clipboard-preservation-004`: same pattern. Programmatic bind to `rangelink.dummy-ai-extension`, programmatic send, `dummyAi.getText()` outcome check.
- `clipboard-preservation-010`: same pattern. Bind to `rangelink.dummy-ai-extension-focus-fail`, programmatic send, log-based assertions for focus-failure path.
- All three tests now assert exact padded values (` ${link} `) via strict equality — no `.trim()` in any assertion.
- Removed `waitForHuman` and `CLIPBOARD_SENTINEL` from clipboardPreservation imports. `CLIPBOARD_SENTINEL` was only referenced in `waitForHuman` console steps (shown to the human driver); the sentinel mechanics still work through `writeClipboardSentinel`, `assertClipboardRestored`, and `assertClipboardChanged` which use the constant internally.
- `assistedTestHelper.ts`: fixed `waitForHumanVerdict` overlap bug. When Mocha times out a verdict-blocked test and starts the next one, the new invocation now disposes the previous test's stale status bar items AND dismisses its `withProgress` notification toast before creating its own. Root cause: Mocha timeout fires on a `waitForHumanVerdict`-blocked test, Mocha fails it and starts the next test, but `settleWith` never ran so the first test's PASS/FAIL buttons and progress toast persisted. Fix: module-level `activeVerdictDisposables` + `activeVerdictReject` track the current invocation's state; a new call disposes stale items and rejects the prior promise to dismiss the toast.
- `.vscode-test.mjs`: added `RANGELINK_MOCHA_TIMEOUT` env var override for debugging timeout behavior without code changes (defaults to `ASSISTED_TIMEOUT_MS` when unset).
- QA YAML: all three TCs moved from `automated: assisted` to `automated: true`. Automated count: 156 → 159, assisted count: 112 → 108 (one other TC changed independently).

## Test Plan

- [x] All 1979 unit tests pass
- [x] `core-send-commands-r-l-003` passes fully automated (1.7s)
- [x] `clipboard-preservation-004` passes fully automated (1.6s)
- [x] `clipboard-preservation-010` passes fully automated (1.5s)
- [x] QA coverage validator passes (159 automated, 108 assisted)
- [x] Zero `.trim()` calls remain in integration test assertions

## Related

- Closes #558
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 25, 2026

Warning

Review limit reached

@couimet, we couldn't start this review because you've used your available PR reviews for now.

Your plan includes 1 review of capacity. Refill in 52 minutes and 57 seconds.

Your organization has run out of usage credits. Purchase more in the billing tab.

⌛ How to resolve this issue?

After more review capacity refills, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than trial, open-source, and free plans. In all cases, review capacity refills continuously over time.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 09bc1bff-df87-4936-bbb1-9a76f50cb070

📥 Commits

Reviewing files that changed from the base of the PR and between 800f7ed and 15a4ed3.

📒 Files selected for processing (5)
  • packages/rangelink-vscode-extension/.vscode-test.mjs
  • packages/rangelink-vscode-extension/qa/qa-test-cases-v1.1.0.yaml
  • packages/rangelink-vscode-extension/src/__integration-tests__/helpers/assistedTestHelper.ts
  • packages/rangelink-vscode-extension/src/__integration-tests__/suite/clipboardPreservation.test.ts
  • packages/rangelink-vscode-extension/src/__integration-tests__/suite/coreSendCommands.test.ts

Walkthrough

Automates three previously human-guided integration tests, hardens the waitForHumanVerdict helper to dispose/reject superseded prompts, adds MOCHA_TIMEOUT parsed from RANGELINK_MOCHA_TIMEOUT with fallback, and updates QA YAML entries to mark the converted tests as automated.

Changes

Test Suite Automation and Infrastructure

Layer / File(s) Summary
Mocha timeout environment configuration
packages/rangelink-vscode-extension/.vscode-test.mjs
Adds MOCHA_TIMEOUT parsed from process.env.RANGELINK_MOCHA_TIMEOUT, falling back to ASSISTED_TIMEOUT_MS, and uses it for the exported mocha.timeout.
Human verdict helper lifecycle and disposal
packages/rangelink-vscode-extension/src/__integration-tests__/helpers/assistedTestHelper.ts
Tracks active invocation disposables and reject callback; disposes previous status-bar UI and rejects prior promise when a new waitForHumanVerdict starts; clears active-state on settle.
Clipboard preservation test automation
packages/rangelink-vscode-extension/src/__integration-tests__/suite/clipboardPreservation.test.ts, packages/rangelink-vscode-extension/qa/qa-test-cases-v1.1.0.yaml
Converts clipboard-preservation-004 and clipboard-preservation-010 from assisted to automated: import CMD_BIND_TO_CUSTOM_AI_BY_ID, remove waitForHuman/sentinel usage, programmatically bind dummy AI, run copy commands, and assert padded link outputs (" ${link} "). Updates QA YAML automated flags and expected_result.
Core send commands test automation
packages/rangelink-vscode-extension/src/__integration-tests__/suite/coreSendCommands.test.ts, packages/rangelink-vscode-extension/qa/qa-test-cases-v1.1.0.yaml
Converts core-send-commands-r-l-003 from assisted to automated: add CMD_BIND_TO_CUSTOM_AI_BY_ID, remove assisted flow, programmatically open file/set selection, bind dummy AI, run copy, and assert dummy AI tier1 includes surrounding spaces. Updates QA YAML automated flag.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~22 minutes

Possibly related issues

Possibly related PRs

  • couimet/rangeLink#597: Introduces CMD_BIND_TO_CUSTOM_AI_BY_ID used here to bind dummy AI extensions programmatically.
  • couimet/rangeLink#580: Also converts assisted clipboard/core-send integration flows to automated programmatic execution.
  • couimet/rangeLink#537: Updates tests that rely on waitForHumanVerdict; related due to the helper lifecycle hardening.

Poem

🐰
I tidy prompts with gentle paws,
Supersede the stale applause,
Three tests now hop without delay,
Env timeouts guide the play,
A padded link—a joyous day!

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the main change: automating three previously assisted tests using CMD_BIND_TO_CUSTOM_AI_BY_ID and dummyAi.getText(), which aligns with the core modifications across test files and helper utilities.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch issues/558

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 25, 2026

⚠️ QA Coverage Gap Detected

The PR updates existing test cases in the QA YAML, changing expected results and marking them as automated. However, it does not introduce new user-visible features or commands, indicating a gap in coverage for potential new scenarios.

Suggested test cases:

  • Clipboard Preservation: Verify clipboard content is restored correctly after AI assistant paste with smart-padding (automatable)
  • Clipboard Preservation: Ensure clipboard remains unchanged when AI assistant auto-paste fails (automatable)
  • Core Send Commands: Check that RangeLink is sent to the AI assistant and success toast appears (automatable)

Generated by QA Gap Check (GPT-4o-mini via GitHub Models)

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
packages/rangelink-vscode-extension/src/__integration-tests__/helpers/assistedTestHelper.ts (1)

109-189: 🛠️ Refactor suggestion | 🟠 Major | 🏗️ Heavy lift

Extract waitForHumanVerdict into smaller helpers to reduce mixed concerns.

Line 109+ now combines UI wiring, command registration, global supersede-state management, and promise settlement in one block. Please split into focused helpers (e.g., cleanup/supersede, status-bar setup, settlement), then keep waitForHumanVerdict as orchestration.

As per coding guidelines: "**/*.{ts,tsx}: Extract functions exceeding 50 lines, having 3+ dependencies, or mixing concerns into separate modules..."

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@packages/rangelink-vscode-extension/src/__integration-tests__/helpers/assistedTestHelper.ts`
around lines 109 - 189, The waitForHumanVerdict function mixes global-supersede
logic, command registration, status-bar item setup, and promise settlement;
split it into focused helpers: implement a supersedePreviousVerdict() that
disposes activeVerdictDisposables and rejects activeVerdictReject (referencing
activeVerdictDisposables and activeVerdictReject), a
makeVerdictCommands(invocationId) that returns passCommand/failCommand strings
and registers the commands (used where passCommand/failCommand are currently
created), a createStatusBarItems(tcId, passCommand, failCommand) that returns
the disposables for passItem and failItem (used where passItem/failItem are
built), and a createVerdictPromise(disposables, resolve/reject) that contains
settleWith and resolves the HumanVerdict; then refactor waitForHumanVerdict to
orchestrate by calling these helpers and only perform high-level flow (increment
verdictInvocationCounter, call supersedePreviousVerdict, create commands/status
items, set activeVerdictDisposables, and return the promise).
🧹 Nitpick comments (1)
packages/rangelink-vscode-extension/src/__integration-tests__/suite/coreSendCommands.test.ts (1)

100-103: ⚡ Quick win

Remove redundant editor open in core-send-commands-r-l-003.

Line 100 opens the file, then Lines 101-103 open/show the same file again. Keep one path to reduce noise and potential focus jitter.

Suggested simplification
-    await ss.openEditor(fileUri);
     const doc = await vscode.workspace.openTextDocument(fileUri);
     const editor = await vscode.window.showTextDocument(doc);
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@packages/rangelink-vscode-extension/src/__integration-tests__/suite/coreSendCommands.test.ts`
around lines 100 - 103, The test is opening the same file twice causing
redundant work and potential focus jitter; remove the extra open by keeping only
one opening approach (either the helper ss.openEditor(fileUri) or the explicit
vscode.workspace.openTextDocument + vscode.window.showTextDocument sequence).
Locate the test in coreSendCommands.test.ts and remove the duplicate calls
referencing ss.openEditor, vscode.workspace.openTextDocument, and
vscode.window.showTextDocument so the editor is opened exactly once and the
subsequent editor selection (new vscode.Selection(0, 0, 3, 0)) still operates on
that single opened editor.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@packages/rangelink-vscode-extension/.vscode-test.mjs`:
- Around line 5-7: MOCHA_TIMEOUT is derived directly via
Number(process.env.RANGELINK_MOCHA_TIMEOUT) which can produce NaN or negative
values; update the logic that computes MOCHA_TIMEOUT so it parses the env var,
checks Number.isFinite(value) and value >= 0 (allow 0), and only then uses it;
otherwise fall back to ASSISTED_TIMEOUT_MS; ensure the validated MOCHA_TIMEOUT
is what gets passed into mocha.timeout so negatives/NaN never reach Mocha.

In `@packages/rangelink-vscode-extension/qa/qa-test-cases-v1.1.0.yaml`:
- Around line 390-392: The expected_result for scenario 'always mode: clipboard
content before AI assistant paste is restored after'
(clipboard-preservation-004) is inaccurate: replace the current "relPath#L1-L3"
description with the exact padded, character-precision payload the automated
assertion expects (the char-precise clipboard content used by
assertClipboardRestored). Edit the expected_result string so it documents the
padded, char-precision payload and mentions that the sentinel clipboard value is
restored, matching the automated contract used by the test harness.

---

Outside diff comments:
In
`@packages/rangelink-vscode-extension/src/__integration-tests__/helpers/assistedTestHelper.ts`:
- Around line 109-189: The waitForHumanVerdict function mixes global-supersede
logic, command registration, status-bar item setup, and promise settlement;
split it into focused helpers: implement a supersedePreviousVerdict() that
disposes activeVerdictDisposables and rejects activeVerdictReject (referencing
activeVerdictDisposables and activeVerdictReject), a
makeVerdictCommands(invocationId) that returns passCommand/failCommand strings
and registers the commands (used where passCommand/failCommand are currently
created), a createStatusBarItems(tcId, passCommand, failCommand) that returns
the disposables for passItem and failItem (used where passItem/failItem are
built), and a createVerdictPromise(disposables, resolve/reject) that contains
settleWith and resolves the HumanVerdict; then refactor waitForHumanVerdict to
orchestrate by calling these helpers and only perform high-level flow (increment
verdictInvocationCounter, call supersedePreviousVerdict, create commands/status
items, set activeVerdictDisposables, and return the promise).

---

Nitpick comments:
In
`@packages/rangelink-vscode-extension/src/__integration-tests__/suite/coreSendCommands.test.ts`:
- Around line 100-103: The test is opening the same file twice causing redundant
work and potential focus jitter; remove the extra open by keeping only one
opening approach (either the helper ss.openEditor(fileUri) or the explicit
vscode.workspace.openTextDocument + vscode.window.showTextDocument sequence).
Locate the test in coreSendCommands.test.ts and remove the duplicate calls
referencing ss.openEditor, vscode.workspace.openTextDocument, and
vscode.window.showTextDocument so the editor is opened exactly once and the
subsequent editor selection (new vscode.Selection(0, 0, 3, 0)) still operates on
that single opened editor.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: e863ae06-cc46-4b5f-b8b5-bfd35e00f8d9

📥 Commits

Reviewing files that changed from the base of the PR and between 800f7ed and 1455168.

📒 Files selected for processing (5)
  • packages/rangelink-vscode-extension/.vscode-test.mjs
  • packages/rangelink-vscode-extension/qa/qa-test-cases-v1.1.0.yaml
  • packages/rangelink-vscode-extension/src/__integration-tests__/helpers/assistedTestHelper.ts
  • packages/rangelink-vscode-extension/src/__integration-tests__/suite/clipboardPreservation.test.ts
  • packages/rangelink-vscode-extension/src/__integration-tests__/suite/coreSendCommands.test.ts

Comment thread packages/rangelink-vscode-extension/.vscode-test.mjs Outdated
Comment thread packages/rangelink-vscode-extension/qa/qa-test-cases-v1.1.0.yaml
@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

Validate RANGELINK_MOCHA_TIMEOUT env var to prevent NaN/negative values reaching Mocha. Fix clipboard-preservation-004 expected_result to document the padded link contract. Remove redundant ss.openEditor call in core-send-commands-r-l-003.

Ignored Feedback:
- Extract waitForHumanVerdict into smaller helpers: Splitting tight UI-wiring code into single-caller helpers adds indirection without improving testability or readability. The function is self-contained and its concerns are inherently coupled.

Ref: #601 (review)
@github-actions
Copy link
Copy Markdown

✅ CI / Integration Tests (with extensions) — run summary

Duration 9m 40s
Unit tests Ran in Test & Validate job
Integration tests passing 160
QA TC IDs exercised clipboard-preservation-011, clipboard-preservation-012, custom-ai-assistant-003, claude-code-001, claude-code-006, claude-code-007, gemini-code-assist-001, gemini-code-assist-005, gemini-code-assist-006
Report View run & artifacts

@github-actions
Copy link
Copy Markdown

✅ CI / Test & Validate — run summary

Duration 9m 59s
Unit tests passed 1979 / 1979
Integration tests passing 151
QA TC IDs exercised status-bar-menu-002, status-bar-menu-003, status-bar-menu-005, status-bar-menu-006, bind-to-destination-010, bind-to-destination-013, terminal-picker-001, terminal-picker-002, terminal-picker-003, terminal-picker-004, terminal-picker-005, terminal-picker-007, terminal-picker-008, terminal-picker-011, terminal-picker-012, terminal-picker-013, terminal-picker-014, terminal-picker-015, terminal-picker-016, file-picker-001, file-picker-002, file-picker-003, file-picker-004, file-picker-005, file-picker-009, file-picker-011, file-picker-012, clipboard-preservation-001, clipboard-preservation-002, clipboard-preservation-003, clipboard-preservation-004, clipboard-preservation-005, clipboard-preservation-006, clipboard-preservation-007, clipboard-preservation-008, clipboard-preservation-009, clipboard-preservation-010, clipboard-preservation-013, clipboard-preservation-014, clipboard-preservation-015, clipboard-preservation-016, send-file-path-001, send-file-path-002, send-file-path-004, send-file-path-005, send-file-path-006, send-file-path-007, send-file-path-008, send-file-path-010, send-file-path-011, send-file-path-012, dirty-buffer-warning-004, dirty-buffer-warning-006, dirty-buffer-warning-007, dirty-buffer-warning-019, send-terminal-selection-003, send-terminal-selection-006, send-terminal-selection-007, go-to-link-001, unbind-001, unbind-003, unbind-004, editor-binding-validation-004, full-line-navigation-001, full-line-navigation-002, char-navigation-001, char-navigation-002, full-line-link-generation-001, wrapped-link-navigation-001, wrapped-link-navigation-002, wrapped-link-navigation-003, wrapped-link-navigation-004, markdown-link-navigation-001, url-exclusion-001, stale-viewcolumn-001, hidden-tab-paste-001, hidden-tab-paste-002, full-line-selection-validation-001, core-send-commands-r-l-001, core-send-commands-r-l-002, core-send-commands-r-l-003, core-send-commands-r-c-001, core-send-commands-r-l-004, core-send-commands-r-c-002, core-send-commands-r-l-005, core-send-commands-r-p-001, core-send-commands-r-v-001, clickable-file-paths-001, clickable-file-paths-002, clickable-file-paths-003, clickable-file-paths-004, clickable-file-paths-005, clickable-file-paths-006, clickable-file-paths-007, clickable-file-paths-008, clickable-file-paths-009, clickable-file-paths-010, clickable-file-paths-011, clickable-file-paths-012, smart-padding-001, smart-padding-003, smart-padding-005, smart-padding-006, smart-padding-007, smart-padding-008, smart-padding-011, duplicate-tab-group-001, duplicate-tab-group-002, duplicate-tab-group-003, duplicate-tab-group-004, langswitch-binding-001, langswitch-binding-002, navigation-clamping-001, navigation-clamping-002, navigation-clamping-003, navigation-clamping-004, untitled-navigation-001, untitled-navigation-002, untitled-navigation-003, untitled-navigation-004, untitled-navigation-005, untitled-navigation-006, navigation-toast-settings-001, navigation-toast-settings-002, navigation-toast-settings-003, filename-fallback-navigation-001, filename-fallback-navigation-002, filename-fallback-navigation-003, filename-fallback-navigation-004, custom-ai-assistant-001, custom-ai-assistant-002, custom-ai-assistant-004, custom-ai-assistant-005, custom-ai-assistant-006, custom-ai-assistant-007, custom-ai-assistant-008, custom-ai-assistant-009, custom-ai-assistant-010, custom-ai-assistant-011, custom-ai-assistant-012, custom-ai-assistant-013, custom-ai-assistant-014, custom-ai-assistant-015, custom-ai-assistant-016, custom-ai-assistant-017, github-copilot-chat-001, release-notifier-001, release-notifier-002, status-bar-appearance-001, status-bar-appearance-002
Report View run & artifacts

@couimet
Copy link
Copy Markdown
Owner Author

couimet commented May 25, 2026

@coderabbitai review - I was rate-limited in #601 (comment)

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 25, 2026

@couimet Sure! Kicking off a fresh review of PR #601 now.

✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@couimet
Copy link
Copy Markdown
Owner Author

couimet commented May 25, 2026

@coderabbitai I see the PR status saying Review skipped even though you just told me in #601 (comment) would kick a new review.

Feels like #555 created more problems than it solved, right ? Should I have bumped the auto_pause_after_reviewed_commits value to 20 instead of going to zero ?

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 25, 2026

@couimet — Happy to clarify! The issue is actually not caused by setting auto_pause_after_reviewed_commits to 0. Here's what's happening:

Why "Review skipped" appeared

Your config has:

auto_incremental_review: true
auto_pause_after_reviewed_commits: 0
  • auto_pause_after_reviewed_commits: 0 = reviews are never auto-paused. This is correct behavior.
  • auto_incremental_review: true = CodeRabbit only reviews new, unreviewed commits.

The @coderabbitai review command's own note says: "This command is applicable only when automatic reviews are paused." Since reviews are never paused (value = 0), and all commits on this PR were already marked as reviewed (even though the previous attempt was rate-limited), the incremental system found nothing new to process → "Review skipped".

What you actually needed: @coderabbitai full review

@coderabbitai full review forces a complete re-review of all commits, bypassing the incremental cache. That's the right command when you know a prior review was incomplete (e.g., due to rate limiting).

Should you have used 20 instead of 0?

No0 is the better choice for your workflow. Setting it to 20 would mean: "after 20 commits have been reviewed, stop reviewing automatically", which would require you to manually trigger reviews more often. Setting it to 0 keeps reviews flowing for every new commit indefinitely, which is what you want.


Triggering a full review of PR #601 now:

🐇 (´・ω・)`

✅ Actions performed

Full review triggered.

@couimet couimet merged commit b565d54 into main May 25, 2026
5 checks passed
@couimet couimet deleted the issues/558 branch May 25, 2026 19:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Boring-setup-steps refactor — 7 assisted tests force the human through automatable setup

1 participant