Skip to content

Commit 729d318

Browse files
committed
compiles
1 parent 01af89e commit 729d318

15 files changed

+1840
-264
lines changed

BROWSER_AUTOMATION.md

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

package.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,11 @@
4949
"license": "MIT",
5050
"dependencies": {
5151
"@anthropic-ai/sdk": "^0.36",
52+
"@playwright/test": "^1.50.1",
5253
"chalk": "^5",
5354
"dotenv": "^16",
55+
"playwright": "^1.50.1",
56+
5457
"source-map-support": "^0.5",
5558
"uuid": "^11",
5659
"yargs": "^17",

0 commit comments

Comments
 (0)