Skip to content

feat: browser session persistence and tool improvements#187

Merged
nwang783 merged 3 commits into
mainfrom
182-feat-improve-authenticated-testing
Jan 28, 2026
Merged

feat: browser session persistence and tool improvements#187
nwang783 merged 3 commits into
mainfrom
182-feat-improve-authenticated-testing

Conversation

@nwang783
Copy link
Copy Markdown
Owner

Summary

This PR implements browser session persistence across multiple dispatch_browser calls, enabling authenticated testing workflows where auth state persists between browser agent dispatches.

Key Changes

New Features

  • BrowserSessionManager singleton (tempo/infra/browser_session.py) - Manages shared browser lifecycle with auto-recovery from crashes
  • Session context propagation - Previous agent summaries are passed to subsequent browser agents
  • Persistent user_data_dir - Cookies, localStorage, sessionStorage persist across dispatches
  • Browser state capture - New get_browser_state tool shows actual cookie/storage values

Improvements

  • Simplified check_inbox API - Returns latest N emails without requiring filters
  • Updated prompt templates with clearer guidance on dispatch_browser vs visual_browser_task
  • Added email verification flow documentation for browser subagent

Cleanup

  • Removed deprecated HeadlessBrowserTool (replaced by dispatch_browser)
  • Removed unused keep_alive parameter (session manager handles persistence)
  • Removed unused purpose parameter from GetEmailContentTool

Testing

  • All 27 related tests pass
  • New tests for email integration, session state formatting, and dispatch propagation

Files Changed

  • 17 files modified
  • +979/-181 lines (before code review fixes)
  • Code review fixes applied in final commit

nwang added 3 commits January 27, 2026 17:42
- Add BrowserSessionManager singleton for shared browser sessions across dispatches
- Add session context (previous agent summaries) to subsequent browser agents
- Update PlaywrightMCPClient to support persistent user_data_dir
- Add _extract_json_from_output helper for browser_evaluate parsing
- Simplify check_inbox to return latest N emails without requiring filters
- Update get_browser_state to show actual cookie/storage values
- Add browser_click to summarization exempt tools
- Fix tests for updated email tools API
- Remove unused keep_alive parameter (session manager handles persistence)
- Add datetime/timezone imports and use in get_full_state()
- Add detailed user_data_dir documentation in PlaywrightMCPClient
- Remove unused purpose parameter from GetEmailContentTool.execute()
- Update test to reflect keep_alive removal
@nwang783 nwang783 linked an issue Jan 28, 2026 that may be closed by this pull request
@nwang783 nwang783 merged commit 8e0f822 into main Jan 28, 2026
3 checks passed
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.

feat: Improve Authenticated Testing

1 participant