Skip to content

[issues/542] Drop preconditions: and steps: from automated QA YAML entries#589

Merged
couimet merged 9 commits into
mainfrom
issues/542
May 19, 2026
Merged

[issues/542] Drop preconditions: and steps: from automated QA YAML entries#589
couimet merged 9 commits into
mainfrom
issues/542

Conversation

@couimet
Copy link
Copy Markdown
Owner

@couimet couimet commented May 19, 2026

Summary

Removes duplicated preconditions: and steps: blocks from every QA YAML test case marked automated: true or automated: assisted (256 of 269 entries). For those TCs the integration test in src/__integration-tests__/suite/ is the canonical source of setup and actions; keeping a second copy in YAML invited drift. Manual TCs (automated: false) keep both fields intact because the YAML remains their only source of instructions.

Changes

  • qa/qa-test-cases-v1.1.0.yaml: stripped preconditions: and steps: from 143 automated: true and 113 automated: assisted entries; kept all 13 automated: false entries fully detailed. Rewrote the header schema comment to enumerate all three automated values, document labels:, and explain that preconditions/steps live only on manual TCs.
  • scripts/generate-qa-test-plan.sh: updated the inline HEADER= template (lines 64-79) to match the new schema doc so v1.2.0+ YAML files inherit the corrected wording.
  • TESTING.md: added a short subsection after the automated field table explaining that preconditions:/steps: are only present on automated: false entries and must be deleted when a TC flips from false to true/assisted.
  • .claude/skills/qa-suggest/SKILL.md: Step 6 now offers two YAML templates (manual form with preconditions/steps, automated/assisted form without); Step 4 ignores preconditions:/steps: removal as v1.1.0 schema-migration noise so the next /qa-suggest run does not flag all 256 carried-forward TCs as Changed.
  • Documentation: CHANGELOG not needed (internal QA tooling change, not user-visible in the shipped extension); README not needed (no commands, settings, or features affected).

Test Plan

  • pnpm test — 1925/1925 unit tests pass
  • pnpm fix + pnpm lint:fix — clean
  • node scripts/resolve-qa-labels.js --yaml qa/qa-test-cases-v1.1.0.yaml ... — TC counts unchanged (143 / 113 / 13)
  • Cross-tabulated automated × preconditions × steps presence: every automated/assisted entry has neither field; every manual entry has both
  • pnpm test:release:automated — recommend running locally before merge; not run here

Pre-existing Issue (not in scope)

pnpm validate:qa-coverage reports one mismatch on the current origin/main: terminal-picker-006 is automated: false in YAML but has an integration test in the suite. Verified pre-existing (confirmed by git stash + re-running the validator on the unmodified base). PR #586 (issues/574, squash-merged as 02669f39) flipped this TC to false without removing the corresponding integration test. Worth a separate issue to either re-flip the YAML or remove the test.

Related

Closes #542

Summary by CodeRabbit

  • Documentation

    • Enhanced testing documentation to clarify YAML test case structure, including how preconditions and steps apply differently across manual, assisted, and fully automated test designations.
  • Chores

    • Reorganized integration test suite and refined test plan generation infrastructure to improve clarity and reduce documentation drift.

Review Change Stack

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 19, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: ce3afbd0-8d0d-4c8e-b039-722b3e3e3d37

📥 Commits

Reviewing files that changed from the base of the PR and between e25f261 and df2c68e.

📒 Files selected for processing (6)
  • .claude/skills/qa-suggest/SKILL.md
  • packages/rangelink-vscode-extension/TESTING.md
  • packages/rangelink-vscode-extension/qa/qa-test-cases-v1.1.0.yaml
  • packages/rangelink-vscode-extension/scripts/generate-qa-test-plan.sh
  • packages/rangelink-vscode-extension/src/__integration-tests__/suite/terminalPicker.test.ts
  • packages/rangelink-vscode-extension/src/__integration-tests__/suite/textEditorDestination.test.ts
💤 Files with no reviewable changes (1)
  • packages/rangelink-vscode-extension/src/integration-tests/suite/terminalPicker.test.ts

Walkthrough

This PR updates QA test classification logic to treat integration tests as the canonical source for setup and prompts in automated and assisted scenarios, eliminating duplication and drift by omitting preconditions and steps YAML blocks for non-manual cases. The qa-suggest skill now detects assisted tests by scanning for waitForHuman/waitForHumanVerdict calls, ignores YAML schema migrations, and provides clear templates distinguishing manual from automated/assisted test documentation.

Changes

QA Test Classification and Documentation Alignment

Layer / File(s) Summary
Core qa-suggest skill logic for test classification
.claude/skills/qa-suggest/SKILL.md
Scans integration tests for waitForHuman/waitForHumanVerdict calls to classify assisted scenarios. Adds rules to ignore removal of preconditions:/steps: as semantic drift during version migrations. Expands Step 6 with explicit decision rules for selecting automated values, and provides YAML templates for manual cases (with full preconditions/steps) and automated/assisted cases (compact format omitting those blocks). Updates section placement guidance to append new test cases at the end of feature sections.
Documentation and test plan generation updates
packages/rangelink-vscode-extension/TESTING.md, packages/rangelink-vscode-extension/scripts/generate-qa-test-plan.sh
TESTING.md clarifies that preconditions: and steps: exist only for manual (automated: false) test cases, while automated/assisted cases rely on integration tests as the authoritative source. generate-qa-test-plan.sh updates the generated YAML header to document labels, clarify field applicability, expand the meaning of each automated status, and reference the integration test suite as the canonical source for setup and actions in automated cases.
Integration test removal and title alignment
packages/rangelink-vscode-extension/src/__integration-tests__/suite/terminalPicker.test.ts, packages/rangelink-vscode-extension/src/__integration-tests__/suite/textEditorDestination.test.ts
Removes the terminal-picker-006 test case. Updates test titles for "hidden-tab-paste-001" and "hidden-tab-paste-002" by removing the [assisted] prefix from their names, aligning test naming with the new classification scheme.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related issues

  • couimet/rangeLink#542: This PR directly addresses the issue's goals of eliminating duplication between YAML preconditions/steps and integration test instructions, and clarifies that assisted/automated tests should omit those YAML blocks to rely on the integration test as the canonical source.

Possibly related PRs

  • couimet/rangeLink#531: Both PRs modify the hidden-tab-paste integration test titles and update automated: assisted classifications in alignment with the new test documentation scheme.
  • couimet/rangeLink#530: Adds clipboard-preservation integration tests that use waitForHuman/waitForHumanVerdict, which are now recognized by the updated qa-suggest skill for classifying automated: assisted.
  • couimet/rangeLink#532: Converts status bar menu test cases to automated: assisted with corresponding waitForHuman/waitForHumanVerdict helpers in integration tests, directly applying the classification logic updated in this PR.

Poem

🐰 A hop through the QA garden fair,
Where tests now rest without a care—
Preconditions gone, just integration's way,
No drift, no noise, just truth each day!
Assisted flows now plainly marked,
The path forward shines and is stark.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 inconclusive)

Check name Status Explanation Resolution
Out of Scope Changes check ❓ Inconclusive Two test name changes in textEditorDestination.test.ts (removing '[assisted]' prefix) appear tangential to the core objective of removing YAML fields but relate to clarity improvements mentioned in issue #542. Clarify whether the test name removals (in textEditorDestination.test.ts) are necessary for the YAML field cleanup or represent a separate refactoring effort.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and specifically identifies the main objective: removing preconditions and steps YAML fields from automated test entries, directly matching the core changeset focus.
Linked Issues check ✅ Passed The PR fully addresses issue #542's objectives: removes noisy preconditions/steps from automated and assisted tests, establishes integration tests as canonical source, and improves consistency/clarity across test documentation.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

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

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch issues/542

Warning

Review ran into problems

🔥 Problems

Stopped waiting for pipeline failures after 30000ms. One of your pipelines takes longer than our 30000ms fetch window to run, so review may not consider pipeline-failure results for inline comments if any failures occurred after the fetch window. Increase the timeout if you want to wait longer or run a @coderabbit review after the pipeline has finished.


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

QA Coverage OK

No user-visible changes were found in the PR; it primarily consists of documentation updates and clarifications regarding the QA process.


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

@github-actions
Copy link
Copy Markdown

CI / Integration Tests (with extensions) — run summary

Duration 8m 46s
Integration tests passing 146
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 10s
Unit tests passed 1928 / 1928
Integration tests passing 137
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, 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-005, clipboard-preservation-006, clipboard-preservation-007, clipboard-preservation-008, clipboard-preservation-009, 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-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-015, custom-ai-assistant-016, github-copilot-chat-001, release-notifier-001, release-notifier-002
Report View run & artifacts

@couimet
Copy link
Copy Markdown
Owner Author

couimet commented May 19, 2026

@CodeRabbit review - #589 (comment) reported a problem

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 19, 2026

🧩 Analysis chain

Let me fetch the referenced comment to understand the reported problem.


🏁 Script executed:

#!/bin/bash
# Fetch the specific comment mentioned by the user
gh api repos/couimet/rangeLink/issues/comments/4487151671 --jq '{body: .body, user: .user.login, created_at: .created_at}'

Length of output: 23381


@couimet: I found the two issues reported in that comment:

  1. ⏱️ Pipeline timeout warning — The previous review stopped waiting for pipeline results after 30,000 ms (the default fetch window). If your CI pipeline takes longer than that, the review may have missed inline comments tied to any pipeline failures that occurred after the cutoff. You can increase the timeout in your .coderabbit.yaml if needed.

  2. ❓ Out-of-Scope Changes check (inconclusive) — The two test title changes in textEditorDestination.test.ts (removing the [assisted] prefix from hidden-tab-paste-001 and hidden-tab-paste-002) were flagged as potentially tangential to the core YAML field cleanup. Could you confirm whether these renames are intentional and in-scope for this PR (e.g., they align with the updated classification scheme that no longer embeds [assisted] in test names)?

I'll kick off a fresh review now to ensure pipeline results are captured.

✅ 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 couimet merged commit 1a919f8 into main May 19, 2026
5 checks passed
@couimet couimet deleted the issues/542 branch May 19, 2026 12:41
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.

Streamline instructions in assisted tests

1 participant