Skip to content

test: validate auto-pr-review skill#10

Closed
liuyixin-louis wants to merge 4 commits intomainfrom
test/auto-pr-review-validation
Closed

test: validate auto-pr-review skill#10
liuyixin-louis wants to merge 4 commits intomainfrom
test/auto-pr-review-validation

Conversation

@liuyixin-louis
Copy link
Copy Markdown
Collaborator

Summary

  • Test PR for validating the auto-pr-review skill
  • Contains the full skill: scripts, templates, resources
  • Will be closed after validation

Test plan

  • Run review-pr.sh against this PR
  • Verify pre-check, classify, run-checks, parse, comment flow

liuyixin-louis and others added 3 commits February 28, 2026 22:08
Hybrid script + agent skill that runs build/typecheck/Playwright E2E tests
on PRs and posts structured review comments via gh CLI.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- gh pr diff --stat doesn't exist; use gh pr view --json additions,deletions
- Fix unicode double-escaping in format-fallback.js (\\u → \u)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Use git status -uno to avoid false positives from untracked skill dirs.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@liuyixin-louis
Copy link
Copy Markdown
Collaborator Author

Automated PR Review

Commit: 8c5e6a34d25fb4638499f6ed7fe1627230862695 | Type: backend | Run at: 2026-03-01T03:13:33.905Z

Check Summary

Check Status Details
Dependencies Exit code: 0
TypeScript Exit code: 0
Build Exit code: 0
E2E Tests 0/1 passed, 1 failed

Failed Tests

❌ Playwright Configuration Error (playwright.config.ts)
Error: Process from config.webServer was not able to start. Exit code: 1

Verdict

⚠️ Issues Found — review failures below


Generated by auto-pr-review skill (static fallback) | VibeLab

Detects if localhost:5173 is up. If not, starts npm run dev in
background, waits up to 60s, then runs tests. Cleans up after.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@liuyixin-louis
Copy link
Copy Markdown
Collaborator Author

Automated PR Review

Commit: bcd14282d0c68c52a184a4f400a9e6deec0edc99 | Type: backend | Run at: 2026-03-01T03:22:34.972Z

Check Summary

Check Status Details
Dependencies Exit code: 0
TypeScript Exit code: 0
Build Exit code: 0
E2E Tests 0/17 passed, 7 failed

Failed Tests

❌ should auto-generate workspace name when opening folder browser (auto-workspace-name.spec.ts)
Error: apiRequestContext.get: connect ECONNREFUSED ::1:5173
Call log:
�[2m  - → GET http://localhost:5173/api/auth/status�[22m
�[2m    - user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.7632.6 Safari/537.36�[22m
�[2m    - accept: */*�[22m
�[2m    - accept-encoding: gzip,deflate,br�[22m

    at apiRequestContext.get: connect ECONNREFUSED ::1:5173
    at getAuthToken (/Users/yixinliu/vibelab-public/test/auto-workspace-name.spec.ts:53:44)
    at ensureAuthenticated (/Users/yixinliu/vibelab-public/test/auto-workspace-name.spec.ts:93:23)
    at /Users/yixinliu/vibelab-public/test/auto-workspace-name.spec.ts:124:11

Screenshot: /tmp/auto-pr-review/10/test-results/auto-workspace-name-Auto-g-0466e-when-opening-folder-browser-chromium/test-failed-1.png

❌ API accepts workspace creation under ~/Documents (outside ~/vibelab) (custom-workspace-path.spec.ts)
Error: apiRequestContext.get: connect ECONNREFUSED ::1:5173
Call log:
�[2m  - → GET http://localhost:5173/api/auth/status�[22m
�[2m    - user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.7632.6 Safari/537.36�[22m
�[2m    - accept: */*�[22m
�[2m    - accept-encoding: gzip,deflate,br�[22m

    at apiRequestContext.get: connect ECONNREFUSED ::1:5173
    at getAuthToken (/Users/yixinliu/vibelab-public/test/custom-workspace-path.spec.ts:38:44)
    at /Users/yixinliu/vibelab-public/test/custom-workspace-path.spec.ts:73:25
❌ file path regex correctly identifies file paths (markdown-file-links.spec.ts)
Error: page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:5173/
Call log:
�[2m  - navigating to "http://localhost:5173/", waiting until "load"�[22m


  13 |   test('file path regex correctly identifies file paths', async ({ page }) => {
  14 |     // Test the regex logic directly in the browser
> 15 |     await page.goto('/');
     |                ^
  16 |     await page.waitForLoadState('domcontentloaded');
  17 |
  18 |     const results = await page.evaluate(() => {
    at /Users/yixinliu/vibelab-public/test/markdown-file-links.spec.ts:15:16

Screenshot: /tmp/auto-pr-review/10/test-results/markdown-file-links-Markdo-4df73-ectly-identifies-file-paths-chromium/test-failed-1.png

❌ Markdown component renders file paths as clickable buttons (markdown-file-links.spec.ts)
Error: page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:5173/
Call log:
�[2m  - navigating to "http://localhost:5173/", waiting until "load"�[22m


  59 |
  60 |   test('Markdown component renders file paths as clickable buttons', async ({ page }) => {
> 61 |     await page.goto('/');
     |                ^
  62 |     await page.waitForLoadState('domcontentloaded');
  63 |
  64 |     // Inject a test container and render Markdown with file paths using the app's bundled React
    at /Users/yixinliu/vibelab-public/test/markdown-file-links.spec.ts:61:16

Screenshot: /tmp/auto-pr-review/10/test-results/markdown-file-links-Markdo-2fa8a--paths-as-clickable-buttons-chromium/test-failed-1.png

❌ file path parsing extracts path and line number correctly (markdown-file-links.spec.ts)
Error: page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:5173/
Call log:
�[2m  - navigating to "http://localhost:5173/", waiting until "load"�[22m


  87 |
  88 |   test('file path parsing extracts path and line number correctly', async ({ page }) => {
> 89 |     await page.goto('/');
     |                ^
  90 |     await page.waitForLoadState('domcontentloaded');
  91 |
  92 |     const results = await page.evaluate(() => {
    at /Users/yixinliu/vibelab-public/test/markdown-file-links.spec.ts:89:16

Screenshot: /tmp/auto-pr-review/10/test-results/markdown-file-links-Markdo-e0e13-h-and-line-number-correctly-chromium/test-failed-1.png

❌ verify Markdown module includes onFileOpen handling via Vite (markdown-file-links.spec.ts)
Error: page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:5173/src/components/chat/view/subcomponents/Markdown.tsx
Call log:
�[2m  - navigating to "http://localhost:5173/src/components/chat/view/subcomponents/Markdown.tsx", waiting until "load"�[22m


  130 |   test('verify Markdown module includes onFileOpen handling via Vite', async ({ page }) => {
  131 |     // In Vite dev mode, fetch the Markdown module source directly
> 132 |     const response = await page.goto('http://localhost:5173/src/components/chat/view/subcomponents/Markdown.tsx');
      |                                 ^
  133 |     const moduleSource = await response?.text() || '';
  134 |
  135 |     const hasOnFileOpen = moduleSource.includes('onFileOpen');
    at /Users/yixinliu/vibelab-public/test/markdown-file-links.spec.ts:132:33

Screenshot: /tmp/auto-pr-review/10/test-results/markdown-file-links-Markdo-1ade5-nFileOpen-handling-via-Vite-chromium/test-failed-1.png

❌ 1. "Import Your Local Skills" button is removed (skills-refactor.spec.ts)
Error: apiRequestContext.get: connect ECONNREFUSED ::1:5173
Call log:
�[2m  - → GET http://localhost:5173/api/auth/status�[22m
�[2m    - user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.7632.6 Safari/537.36�[22m
�[2m    - accept: */*�[22m
�[2m    - accept-encoding: gzip,deflate,br�[22m

    at apiRequestContext.get: connect ECONNREFUSED ::1:5173
    at getAuthToken (/Users/yixinliu/vibelab-public/test/skills-refactor.spec.ts:32:44)
    at ensureAuthenticated (/Users/yixinliu/vibelab-public/test/skills-refactor.spec.ts:70:23)
    at /Users/yixinliu/vibelab-public/test/skills-refactor.spec.ts:121:11

Screenshot: /tmp/auto-pr-review/10/test-results/skills-refactor-Skills-Ref-21352-al-Skills-button-is-removed-chromium/test-failed-1.png

Verdict

⚠️ Issues Found — review failures below


Generated by auto-pr-review skill (static fallback) | VibeLab

@liuyixin-louis liuyixin-louis deleted the test/auto-pr-review-validation branch March 1, 2026 03:24
Zhang-Henry added a commit that referenced this pull request Apr 8, 2026
Critical:
- #1 Shell escape API key values in community-tools.env export
- #2 Replace ComputeNode.exec() with ComputeNode.run() (correct method)

High:
- #3 Add path traversal validation in status endpoint
- #4 Sanitize SSH user/host to prevent shell injection
- #5 Use i18n key for "Auto Research" sidebar button
- #6 Add Auto Research button to mobile sidebar
- #10 Stop leaking error.message to clients in 500 responses
bbsngg pushed a commit that referenced this pull request Apr 8, 2026
Critical:
- #1 Shell escape API key values in community-tools.env export
- #2 Replace ComputeNode.exec() with ComputeNode.run() (correct method)

High:
- #3 Add path traversal validation in status endpoint
- #4 Sanitize SSH user/host to prevent shell injection
- #5 Use i18n key for "Auto Research" sidebar button
- #6 Add Auto Research button to mobile sidebar
- #10 Stop leaking error.message to clients in 500 responses
HenryPengZou added a commit to HenryPengZou/dr-claw that referenced this pull request Apr 8, 2026
…r fixes

Fixes for PR OpenLAIR#146 review by @Zhang-Henry:

Critical:
- OpenLAIR#1: memory_enabled is now per-user (column on users table) instead of
  global app_settings. Each user controls their own memory toggle.
- OpenLAIR#2: ~/.claude/MEMORY.md namespaced as MEMORY-{userId}.md to prevent
  multi-user overwrites on shared servers.

High:
- OpenLAIR#3: req.params.id validated as positive integer with parseInt + isNaN guard
- OpenLAIR#4: Memory content sanitized (strip markdown headings) before prompt injection;
  content length capped at 500 chars; max 50 memories per user
- OpenLAIR#5: Content length validation (400 error) on create and update routes
- OpenLAIR#6: Delete now requires window.confirm() before executing

Medium:
- OpenLAIR#8: Removed no-op try/catch wrappers from all memoryDb methods
- OpenLAIR#9: Added comment explaining why Gemini injects memory into user prompt
  (CLI has no system instruction API)
- OpenLAIR#10: Changed index from (is_enabled) to composite (user_id, is_enabled)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
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.

1 participant