Skip to content

Commit a7b4f4a

Browse files
committed
Merge branch 'browse-tools'
2 parents c90a7dd + a1404d4 commit a7b4f4a

22 files changed

+1584
-295
lines changed

BROWSER_AUTOMATION.md

Lines changed: 173 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,173 @@
1+
# Browser Automation
2+
3+
## Overview
4+
5+
This document describes the browser automation capabilities implemented in the project, combining both the original planning and the current implementation status.
6+
7+
## Key Features
8+
9+
- Browser session management
10+
- Page control and interaction
11+
- Resource cleanup and management
12+
- Error handling
13+
- Type-safe API
14+
15+
## Architecture
16+
17+
The browser automation system is implemented as a modular system with the following core components:
18+
19+
### BrowserManager
20+
Handles browser session lifecycle, including:
21+
- Session creation and cleanup
22+
- Context management
23+
- Resource optimization
24+
25+
### PageController
26+
Manages page interactions:
27+
- Navigation
28+
- Element selection and interaction
29+
- State management
30+
- Event handling
31+
32+
## Installation & Setup
33+
34+
```bash
35+
npm install @mycoder/browser-automation
36+
```
37+
38+
### Configuration
39+
40+
Basic configuration example:
41+
```typescript
42+
import { BrowserAutomation } from '@mycoder/browser-automation';
43+
44+
const browser = new BrowserAutomation({
45+
headless: true,
46+
defaultViewport: { width: 1920, height: 1080 }
47+
});
48+
```
49+
50+
## Usage Examples
51+
52+
### Basic Navigation
53+
```typescript
54+
const page = await browser.newPage();
55+
await page.navigate('https://example.com');
56+
await page.waitForSelector('.main-content');
57+
```
58+
59+
### Interacting with Elements
60+
```typescript
61+
await page.click('#submit-button');
62+
await page.type('#search-input', 'search term');
63+
```
64+
65+
## Error Handling
66+
67+
The system implements comprehensive error handling:
68+
69+
- Browser-specific errors are wrapped in custom error types
70+
- Automatic retry mechanisms for flaky operations
71+
- Resource cleanup on failure
72+
- Detailed error messages and stack traces
73+
74+
## Resource Management
75+
76+
Resources are managed automatically:
77+
78+
- Browser sessions are cleaned up when no longer needed
79+
- Memory usage is optimized
80+
- Concurrent sessions are managed efficiently
81+
- Automatic page context cleanup
82+
83+
## Testing & Debugging
84+
85+
### Running Tests
86+
```bash
87+
npm test
88+
```
89+
90+
### Debugging
91+
92+
Debug logs can be enabled via environment variables:
93+
```bash
94+
DEBUG=browser-automation:* npm test
95+
```
96+
97+
## API Reference
98+
99+
### BrowserAutomation
100+
Main class providing browser automation capabilities.
101+
102+
#### Methods
103+
- `newPage()`: Creates a new page session
104+
- `close()`: Closes all browser sessions
105+
- `evaluate()`: Evaluates JavaScript in the page context
106+
107+
### PageController
108+
Handles page-specific operations.
109+
110+
#### Methods
111+
- `navigate(url: string)`: Navigates to URL
112+
- `click(selector: string)`: Clicks element
113+
- `type(selector: string, text: string)`: Types text
114+
- `waitForSelector(selector: string)`: Waits for element
115+
116+
## Future Enhancements
117+
118+
The following features are planned for future releases:
119+
120+
- Network monitoring capabilities
121+
- Video recording support
122+
- Trace viewer integration
123+
- Extended cross-browser support
124+
- Enhanced selector handling module
125+
126+
## Migration Guide
127+
128+
When upgrading from previous versions:
129+
130+
1. Update import paths to use new structure
131+
2. Replace deprecated methods with new alternatives
132+
3. Update configuration objects to match new schema
133+
4. Test thoroughly after migration
134+
135+
## Best Practices
136+
137+
1. Always clean up resources:
138+
```typescript
139+
try {
140+
const browser = new BrowserAutomation();
141+
// ... operations
142+
} finally {
143+
await browser.close();
144+
}
145+
```
146+
147+
2. Use typed selectors:
148+
```typescript
149+
const selector: SelectorOptions = {
150+
type: 'css',
151+
value: '.main-content'
152+
};
153+
```
154+
155+
3. Implement proper error handling:
156+
```typescript
157+
try {
158+
await page.click('#button');
159+
} catch (error) {
160+
if (error instanceof ElementNotFoundError) {
161+
// Handle missing element
162+
}
163+
throw error;
164+
}
165+
```
166+
167+
## Contributing
168+
169+
Please see CONTRIBUTING.md for guidelines on contributing to this project.
170+
171+
## License
172+
173+
This project is licensed under the MIT License - see the LICENSE file for details

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,10 +50,12 @@
5050
"license": "MIT",
5151
"dependencies": {
5252
"@anthropic-ai/sdk": "^0.36",
53+
"@playwright/test": "^1.50.1",
5354
"chalk": "^5",
5455
"dotenv": "^16",
5556
"eslint-plugin-promise": "^7.2.1",
5657
"semver": "^7.7.1",
58+
"playwright": "^1.50.1",
5759
"source-map-support": "^0.5",
5860
"uuid": "^11",
5961
"yargs": "^17",

0 commit comments

Comments
 (0)