SurfSense/surfsense_web/tests/connectors/composio/drive
Anish Sarkar a8c1fb660d feat(rename): complete searchSpace to workspace transition across frontend and backend
- Introduced a comprehensive specification for renaming `searchSpace` to `workspace` in `surfsense_web` and `surfsense_desktop`, ensuring all TypeScript identifiers, React props, and local data structures are updated.
- Implemented migration shims for persisted local state to prevent data loss during the transition.
- Updated observability metrics and IPC channels to reflect the new naming convention.
- Removed legacy `active-search-space` module and replaced it with `active-workspace` to maintain consistency.
- Ensured no behavioral changes or data loss for users during the renaming process.
2026-07-06 15:12:40 +05:30
..
journey.spec.ts feat(rename): complete searchSpace to workspace transition across frontend and backend 2026-07-06 15:12:40 +05:30
README.md test(web): add Composio Drive E2E user journey 2026-05-06 17:22:37 +05:30

Composio Google Drive — E2E

Phase 1 Playwright coverage for the Composio Drive connector.

Journey in this folder

File User expectation
journey.spec.ts "I connect Google Drive, choose a file, wait for indexing, and SurfSense contains that file's content."

What "passes" actually proves

  • The dashboard and connector dialog render for the authenticated user.
  • The Composio Drive connector fixture can complete the happy OAuth setup.
  • The selected Drive file config can be persisted.
  • Pipeline service summarizes/embeds/chunks an indexed file end-to-end.
  • Celery worker is reachable from the FastAPI process (queue + broker).
  • Document.content contains the Drive canary token after indexing.

Edge cases tested elsewhere

Playwright does not own backend edge cases. They are cheaper and easier to localize in pytest:

  • OAuth state freshness/tamper/malformed validation: surfsense_backend/tests/unit/utils/test_oauth_security.py
  • OAuth denied callback and duplicate/reconnection branch: surfsense_backend/tests/integration/composio/test_oauth_callback.py
  • Folder listing, selected file config persistence, and auth-expired classification: surfsense_backend/tests/integration/composio/test_drive_folders_route.py

What "passes" does NOT prove

  • Real Composio.dev integration (mocked).
  • Real LLM summarization quality (FakeListChatModel).
  • Real embedding semantics (constant 0.1 vectors).

These are intentional. Phase 1's deal is "the user-visible Drive journey crosses the connector/indexing seams". Phase 2 can add opt-in "live LLM" smoke tests under a separate workflow and a separate budget.

Adding a fourth Composio toolkit (e.g. Slack)

  1. Add fixture data to surfsense_backend/tests/e2e/fakes/fixtures/<toolkit>_*.json.
  2. Extend _Tools.execute() in surfsense_backend/tests/e2e/fakes/composio_module.py to handle the new toolkit's tool slugs (SLACK_FETCH_CONVERSATIONS, etc.).
  3. Add the toolkit to _AuthConfigs.list().
  4. Drop a sibling folder tests/connectors/composio/<toolkit>/ with one journey.spec.ts that matches the user's expectation for that toolkit.

The fixtures in tests/fixtures/connectors/composio-drive.fixture.ts are the template — copy + change toolkit_id.