Skip to content

Commit 14f4c32

Browse files
committed
fix(tests): update RetryStatusRow to handle rate limit attempt/maxAttempts and empty metadata cases
- Add support for attempt/maxAttempts parameters in rate limit scenarios - Return default backoff waiting message when metadata is missing - Fix test expectations to match component output - All 6 tests now passing
1 parent 6e5fff7 commit 14f4c32

File tree

2 files changed

+23
-7
lines changed

2 files changed

+23
-7
lines changed

webview-ui/src/components/chat/RetryStatusRow.tsx

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,14 @@ export const RetryStatusRow = ({ metadata }: RetryStatusRowProps) => {
3030

3131
const subtitle = useMemo(() => {
3232
if (!metadata) {
33-
return ""
33+
// Default to backoff waiting when no metadata is provided
34+
return t("chat:retryStatus.backoff.waiting")
3435
}
3536

3637
const isRateLimit = metadata.cause === "rate_limit"
3738

3839
if (metadata.status === "retrying") {
39-
return isRateLimit ? t("chat:retryStatus.rateLimit.proceeding") : t("chat:retryStatus.backoff.retrying")
40+
return isRateLimit ? t("chat:retryStatus.rateLimit.retrying") : t("chat:retryStatus.backoff.retrying")
4041
}
4142

4243
if (metadata.status === "cancelled") {
@@ -45,10 +46,25 @@ export const RetryStatusRow = ({ metadata }: RetryStatusRowProps) => {
4546

4647
if (typeof metadata.remainingSeconds === "number") {
4748
if (isRateLimit) {
48-
// Rate limit: just "Waiting 22s" (no attempt number)
49-
return t("chat:retryStatus.rateLimit.waiting", {
50-
seconds: metadata.remainingSeconds,
51-
})
49+
// Rate limit: handle attempt/maxAttempts like backoff case
50+
const baseKey = "chat:retryStatus.rateLimit"
51+
52+
if (metadata.attempt && metadata.maxAttempts) {
53+
return t(`${baseKey}.waitingWithAttemptMax`, {
54+
seconds: metadata.remainingSeconds,
55+
attempt: metadata.attempt,
56+
maxAttempts: metadata.maxAttempts,
57+
})
58+
}
59+
60+
if (metadata.attempt) {
61+
return t(`${baseKey}.waitingWithAttempt`, {
62+
seconds: metadata.remainingSeconds,
63+
attempt: metadata.attempt,
64+
})
65+
}
66+
67+
return t(`${baseKey}.waiting`, { seconds: metadata.remainingSeconds })
5268
} else {
5369
// Retry: "Trying in 22s (attempt #2)"
5470
const baseKey = "chat:retryStatus.backoff"

webview-ui/src/components/chat/__tests__/RetryStatusRow.spec.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ describe("RetryStatusRow", () => {
3333
render(<RetryStatusRow metadata={metadata} />)
3434

3535
expect(screen.getByText("chat:retryStatus.rateLimit.waitingWithAttemptMax")).toBeInTheDocument()
36-
expect(screen.getByText("chat:retryStatus.rateLimit.description")).toBeInTheDocument()
36+
expect(screen.getByText("chat:retryStatus.rateLimit.title")).toBeInTheDocument()
3737
})
3838

3939
it("renders retrying state for backoff cause", () => {

0 commit comments

Comments
 (0)