Files
brachnha-insight/_bmad-output/implementation-artifacts/atdd-checklist-story-3-3.md
Max e9e6fadb1d fix: ChatBubble crash and DeepSeek API compatibility
- Fix ChatBubble to handle non-string content with String() wrapper
- Fix API route to use generateText for non-streaming requests
- Add @ai-sdk/openai-compatible for non-OpenAI providers (DeepSeek, etc.)
- Use Chat Completions API instead of Responses API for compatible providers
- Update ChatBubble tests and fix component exports to kebab-case
- Remove stale PascalCase ChatBubble.tsx file
2026-01-26 16:55:05 +07:00

3.7 KiB

ATDD Checklist - Epic 3, Story 3.3: Offline Action Queueing

Date: 2026-01-26 Author: BMad TEA Agent Primary Test Level: Integration (Sync Logic)


Story Summary

As a user with intermittent connectivity I want my actions (save, delete) to be queued when offline So that I don't lose data and my intent is preserved until I reconnect.


Acceptance Criteria

  1. Queue Actions Offline: When offline, user actions (SAVE_DRAFT, DELETE_ENTRY) must be added to a persistent syncQueue in Dexie.
  2. Replay Actions Online: When network restores, pending actions in syncQueue must be processed in order (FIFO).
  3. Retry Logic: Failed actions should be retried with exponential backoff before being marked as failed.

Failing Tests Created (RED Phase)

Integration Tests (2 files)

File: tests/integration/offline-action-queueing.test.ts

  • Test: should enqueue SAVE_DRAFT action when offline
    • Status: RED - SyncManager logic not connected to UI/Service
    • Verifies: saveDraft action is added to DB with correct payload.
  • Test: should enqueue DELETE_ENTRY action when offline
    • Status: RED - Failing placeholder
    • Verifies: deleteDraft action is added to DB.

File: tests/integration/sync-action-replay.test.ts

  • Test: should process pending actions when network restores
    • Status: RED - processQueue not triggered or implemented
    • Verifies: Queue drains and actions execute.

Unit Tests (1 file)

File: tests/unit/services/sync-manager.test.ts

  • Test: queueAction adds to DB
    • Status: RED - Implementation missing
    • Verifies: Service method calls DB correctly.
  • Test: processQueue processes items
    • Status: RED - Implementation missing
    • Verifies: FIFO processing and status updates.

Data Factories Created

Uses existing faker patterns (mocking data payload directly in tests for this infrastructure story).


Mock Requirements

SyncManager Service:

  • Mocks Dexie db.syncQueue for unit tests.
  • Simulates server latency (500ms) for MVP executeAction.

Implementation Checklist

Test: Unit Tests (SyncManager)

File: tests/unit/services/sync-manager.test.ts

  • Implement SyncManager class structure
  • Implement queueAction method
  • Implement processQueue method
  • Implement executeAction (Simulated Sync)
  • Run test: npx vitest run sync-manager.test.ts
  • Test passes (green phase)

Test: Integration Tests (Offline Queueing)

File: tests/integration/offline-action-queueing.test.ts

  • Connect UI/Service 'Save' action to SyncManager.queueAction when offline
  • Verify navigator.onLine check logic
  • Run test: npx playwright test offline-action-queueing.test.ts
  • Test passes (green phase)

Test: Integration Tests (Replay)

File: tests/integration/sync-action-replay.test.ts

  • Add online event listener initialization
  • Trigger processQueue on network restore
  • Run test: npx playwright test sync-action-replay.test.ts
  • Test passes (green phase)

Estimated Effort: 4 hours


Red-Green-Refactor Workflow

RED Phase (Complete)

  • All tests written and failing
  • Implementation checklist created

GREEN Phase (DEV Team - Next Steps)

  1. Pick one failing test (start with Unit Tests)
  2. Implement minimal code in sync-manager.ts
  3. Run the test (npx vitest ...)
  4. Move to Integration tests once unit logic is solid

Running Tests

# Run Unit Tests
npx vitest run sync-manager.test.ts

# Run Integration Tests
npx playwright test offline-action-queueing.test.ts
npx playwright test sync-action-replay.test.ts