Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion packages/cli/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
"@argos/shared": "workspace:*",
"@types/node": "^20",
"typescript": "^5",
"vitest": "^2.1.9"
"vitest": "^3.2.6"

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🌐 Web query:

vitest v3 migration guide breaking changes from v2

💡 Result:

Migrating from Vitest v2 to v3 involves several breaking changes and deprecations. Below are the key adjustments required to ensure compatibility. Key Breaking Changes - Test/Describe Arguments: Passing an object as the third argument to test or describe functions is deprecated and will trigger a warning [1][2]. - Mock Reset Behavior: spy.mockReset now restores the original implementation of a function rather than resetting it to a fake noop [1][2]. - Fake Timers: Vitest no longer provides default fakeTimers.toFake options. When vi.useFakeTimers is called, Vitest will automatically mock any available timer-related API (except nextTick), including performance.now [1][2]. - Error Equality: The equality checks for errors in toEqual or toThrowError are more strict. Vitest now compares the name, message, cause, and AggregateError.errors properties [1][2]. - Configuration: Module condition export resolution is not enabled by default on Vite 6 [1][2]. Deprecations and Other Removals - Browser Mode Options: The browser.name and browser.providerOptions options are deprecated and will be removed in Vitest 4. Use the new browser.instances option instead [1][2]. - API Types: The Custom Type and WorkspaceSpec types have been removed or updated [1][2]. - General Cleanup: Various internal types, including those for vitest/reporters, have been cleaned up [1][2]. It is recommended to consult the official Vitest Migration Guide for the most granular details regarding specific API signatures and type changes that may impact your codebase [3][1]. Additionally, note that subsequent releases (e.g., v3.2) have further deprecated features, such as the separate vitest.workspace file in favor of the projects option in the root configuration [4][5].

Citations:


🏁 Script executed:

#!/bin/bash
# vitest 설정 파일과 테스트 파일 확인
echo "=== Vitest config files ==="
fd -e ts -e js 'vitest.config' packages/cli/

echo -e "\n=== Test files using vitest APIs ==="
rg -n --type=ts -C2 'from.*vitest|import.*vitest' packages/cli/src/

Repository: Seongho-Bae/argos

Length of output: 3256


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "=== packages/cli/vitest.config.ts (relevant) ==="
sed -n '1,200p' packages/cli/vitest.config.ts

echo -e "\n=== Search: vi.useFakeTimers(...) ==="
rg -n --type=ts "useFakeTimers\\(" packages/cli/src packages/cli/vitest.config.ts || true

echo -e "\n=== Search: mockReset ==="
rg -n --type=ts "\\.mockReset\\b" packages/cli/src packages/cli/vitest.config.ts || true

echo -e "\n=== Search: test/describe third argument object ==="
# naive heuristics: test( ... , ... , { ... })
rg -n --type=ts "\\b(test|describe)\\s*\\([^\\)]*\\)\\s*,\\s*[^,\\)]*\\s*,\\s*\\{[^}]*\\}" packages/cli/src || true

echo -e "\n=== Search: browser.name / browser.providerOptions ==="
rg -n --type=ts "browser\\.(name|providerOptions)\\b" packages/cli/vitest.config.ts packages/cli/src || true

echo -e "\n=== Search: toEqual/toThrowError error equality patterns ==="
rg -n --type=ts "toThrowError\\(|toEqual\\(new (Error|TypeError|RangeError|ReferenceError|SyntaxError|EvalError|URIError)\\b" packages/cli/src || true

Repository: Seongho-Bae/argos

Length of output: 501


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "=== packages/cli/vitest.config.ts (relevant) ==="
sed -n '1,200p' packages/cli/vitest.config.ts

echo -e "\n=== Search: vi.useFakeTimers(...) ==="
rg -n --type=ts "useFakeTimers\\(" packages/cli/src packages/cli/vitest.config.ts || true

echo -e "\n=== Search: mockReset ==="
rg -n --type=ts "\\.mockReset\\b" packages/cli/src packages/cli/vitest.config.ts || true

echo -e "\n=== Search: test/describe third argument object ==="
rg -n --type=ts "\\b(test|describe)\\s*\\([^\\)]*\\)\\s*,\\s*[^,\\)]*\\s*,\\s*\\{[^}]*\\}" packages/cli/src || true

echo -e "\n=== Search: browser.name / browser.providerOptions ==="
rg -n --type=ts "browser\\.(name|providerOptions)\\b" packages/cli/vitest.config.ts packages/cli/src || true

echo -e "\n=== Search: toEqual/toThrowError error equality patterns ==="
rg -n --type=ts "toThrowError\\(|toEqual\\(new (Error|TypeError|RangeError|ReferenceError|SyntaxError|EvalError|URIError)\\b" packages/cli/src || true

Repository: Seongho-Bae/argos

Length of output: 501


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "=== packages/cli: search for key vitest v2->v3 breaking-change hotspots ==="
# 1) fake timers
rg -n --type=ts "\\buseFakeTimers\\b" packages/cli || true

# 2) mockReset
rg -n --type=ts "\\bmockReset\\b" packages/cli || true

# 3) test/describe with 3rd argument object (broader: allow newlines)
rg -n --type=ts "\\b(test|describe)\\b[\\s\\S]{0,200}?\\,\\s*\\{[^}]*\\}" packages/cli/src || true

# 4) error equality: toThrowError / toThrow + toEqual(new Error...)
rg -n --type=ts "\\btoThrowError\\b" packages/cli/src || true
rg -n --type=ts "\\btoThrow\\b" packages/cli/src || true
rg -n --type=ts "\\btoEqual\\(new\\s+(Error|TypeError|RangeError|ReferenceError|SyntaxError|EvalError|URIError)\\b" packages/cli/src || true

Repository: Seongho-Bae/argos

Length of output: 412


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "=== packages/cli: search for key vitest v2->v3 breaking-change hotspots ==="
# 1) fake timers
rg -n --type=ts "\\buseFakeTimers\\b" packages/cli || true

# 2) mockReset
rg -n --type=ts "\\bmockReset\\b" packages/cli || true

# 3) test/describe with 3rd argument object (broader: allow up to 200 chars between tokens)
rg -n --type=ts "\\b(test|describe)\\b[\\s\\S]{0,200}?\\,\\s*\\{[^}]*\\}" packages/cli/src || true

# 4) error equality: toThrowError / toThrow + toEqual(new Error...)
rg -n --type=ts "\\btoThrowError\\b" packages/cli/src || true
rg -n --type=ts "\\btoThrow\\b" packages/cli/src || true
rg -n --type=ts "\\btoEqual\\(new\\s+(Error|TypeError|RangeError|ReferenceError|SyntaxError|EvalError|URIError)\\b" packages/cli/src || true

Repository: Seongho-Bae/argos

Length of output: 412


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "=== package/cli/src: test/describe 3rd argument object 패턴(, {) 검색 ==="
rg -n --type=ts "\\b(test|describe)\\b\\s*\\([^,]*,\\s*[^,]*,\\s*[{]" packages/cli/src || true

echo -e "\n=== package/cli/src: vi.useFakeTimers / vi.useFakeTimers({ ... }) 검색 ==="
rg -n --type=ts "\\bvi\\.useFakeTimers\\b" packages/cli/src || true

echo -e "\n=== package/cli/src: mockReset / spy.mockReset 검색 ==="
rg -n --type=ts "\\bmockReset\\b" packages/cli/src || true

echo -e "\n=== package/cli/src: toThrowError 사용 검색 ==="
rg -n --type=ts "\\btoThrowError\\b" packages/cli/src || true

echo -e "\n=== package/cli/src: toThrow(new Error/TypeError/... ) 사용 검색 ==="
rg -n --type=ts "\\btoThrow\\s*\\(\\s*new\\s+(Error|TypeError|RangeError|ReferenceError|SyntaxError|EvalError|URIError)" packages/cli/src || true

echo -e "\n=== package/cli/src: toEqual(new Error/...) 사용 검색 ==="
rg -n --type=ts "\\btoEqual\\s*\\(\\s*new\\s+(Error|TypeError|RangeError|ReferenceError|SyntaxError|EvalError|URIError)" packages/cli/src || true

Repository: Seongho-Bae/argos

Length of output: 426


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "=== package/cli/src: test/describe 3rd argument object 패턴(, {) 검색 ==="
rg -n --type=ts "\\b(test|describe)\\b\\s*\\([^,]*,\\s*[^,]*,\\s*[{]" packages/cli/src || true

echo -e "\n=== package/cli/src: vi.useFakeTimers / vi.useFakeTimers({ ... }) 검색 ==="
rg -n --type=ts "\\bvi\\.useFakeTimers\\b" packages/cli/src || true

echo -e "\n=== package/cli/src: mockReset / spy.mockReset 검색 ==="
rg -n --type=ts "\\bmockReset\\b" packages/cli/src || true

echo -e "\n=== package/cli/src: toThrowError 사용 검색 ==="
rg -n --type=ts "\\btoThrowError\\b" packages/cli/src || true

echo -e "\n=== package/cli/src: toThrow(new Error/TypeError/... ) 사용 검색 ==="
rg -n --type=ts "\\btoThrow\\s*\\(\\s*new\\s+(Error|TypeError|RangeError|ReferenceError|SyntaxError|EvalError|URIError)" packages/cli/src || true

echo -e "\n=== package/cli/src: toEqual(new Error/...) 사용 검색 ==="
rg -n --type=ts "\\btoEqual\\s*\\(\\s*new\\s+(Error|TypeError|RangeError|ReferenceError|SyntaxError|EvalError|URIError)" packages/cli/src || true

Repository: Seongho-Bae/argos

Length of output: 426


🏁 Script executed:

#!/bin/bash
set -euo pipefail
cat -n packages/cli/package.json | sed -n '1,120p'

Repository: Seongho-Bae/argos

Length of output: 1069


🏁 Script executed:

#!/bin/bash
set -euo pipefail
cat -n packages/cli/package.json | sed -n '1,120p'

Repository: Seongho-Bae/argos

Length of output: 1069


vitest 2.x→3.x 업그레이드 호환성 위험도는 낮아 보이며, vitest 실행으로 최종 확인 필요

vitest v2→v3 마이그레이션 가이드의 대표 브레이킹 포인트(vi.useFakeTimers, spy.mockReset, browser.name/providerOptions, toThrowError/에러 객체 동등성 비교, test/describe의 3번째 인자 object 형태 등)에 해당하는 사용이 packages/cli에서 검색되지 않고, packages/cli/vitest.config.ts도 Node 환경 + include 설정만 있습니다.
다만 다른 변경 사항까지 포함해 실제로는 vitest run으로 테스트 통과 여부를 한 번 확인하세요.

🤖 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/cli/package.json` at line 32, The repo bumped Vitest to "^3.2.6" in
package.json but we haven't verified compatibility; run "vitest run" from the
packages/cli workspace to confirm tests pass against the updated runner,
checking the config file packages/cli/vitest.config.ts (Node environment +
include) for any failing tests or deprecations, and if tests fail, update usages
of any breaking APIs (e.g., vi.useFakeTimers, spy.mockReset, toThrowError
comparisons, browser.name/providerOptions, or test/describe options) to their
Vitest v3 equivalents or pin Vitest to v2 until fixes are applied.

},
"engines": {
"node": ">=18"
Expand Down
2 changes: 1 addition & 1 deletion packages/web/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,6 @@
"prisma": "^6",
"tailwindcss": "^4",
"typescript": "^5",
"vitest": "^2.1.9"
"vitest": "^3.2.6"
}
}
Loading
Loading