cyclecad 3.2.1 → 3.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/DOCKER-SETUP-VERIFICATION.md +399 -0
- package/DOCKER-TESTING.md +463 -0
- package/FUSION360_MODULES.md +478 -0
- package/FUSION_MODULES_README.md +352 -0
- package/INTEGRATION_SNIPPETS.md +608 -0
- package/KILLER-FEATURES-DELIVERY.md +469 -0
- package/MODULES_SUMMARY.txt +337 -0
- package/QUICK_REFERENCE.txt +298 -0
- package/README-DOCKER-TESTING.txt +438 -0
- package/app/index.html +23 -10
- package/app/js/fusion-help.json +1808 -0
- package/app/js/help-module-v3.js +1096 -0
- package/app/js/killer-features-help.json +395 -0
- package/app/js/killer-features.js +1508 -0
- package/app/js/modules/fusion-assembly.js +842 -0
- package/app/js/modules/fusion-cam.js +785 -0
- package/app/js/modules/fusion-data.js +814 -0
- package/app/js/modules/fusion-drawing.js +844 -0
- package/app/js/modules/fusion-inspection.js +756 -0
- package/app/js/modules/fusion-render.js +774 -0
- package/app/js/modules/fusion-simulation.js +986 -0
- package/app/js/modules/fusion-sketch.js +1044 -0
- package/app/js/modules/fusion-solid.js +1095 -0
- package/app/js/modules/fusion-surface.js +949 -0
- package/app/tests/FUSION_TEST_SUITE.md +266 -0
- package/app/tests/README.md +77 -0
- package/app/tests/TESTING-CHECKLIST.md +177 -0
- package/app/tests/TEST_SUITE_SUMMARY.txt +236 -0
- package/app/tests/brep-live-test.html +848 -0
- package/app/tests/docker-integration-test.html +811 -0
- package/app/tests/fusion-all-tests.html +670 -0
- package/app/tests/fusion-assembly-tests.html +461 -0
- package/app/tests/fusion-cam-tests.html +421 -0
- package/app/tests/fusion-simulation-tests.html +421 -0
- package/app/tests/fusion-sketch-tests.html +613 -0
- package/app/tests/fusion-solid-tests.html +529 -0
- package/app/tests/index.html +453 -0
- package/app/tests/killer-features-test.html +509 -0
- package/app/tests/run-tests.html +874 -0
- package/app/tests/step-import-live-test.html +1115 -0
- package/app/tests/test-agent-v3.html +93 -696
- package/architecture-dashboard.html +1970 -0
- package/docs/API-REFERENCE.md +1423 -0
- package/docs/BREP-LIVE-TEST-GUIDE.md +453 -0
- package/docs/DEVELOPER-GUIDE-v3.md +795 -0
- package/docs/DOCKER-QUICK-TEST.md +376 -0
- package/docs/FUSION-FEATURES-GUIDE.md +2513 -0
- package/docs/FUSION-TUTORIAL.md +1203 -0
- package/docs/INFRASTRUCTURE-GUIDE-INDEX.md +327 -0
- package/docs/KEYBOARD-SHORTCUTS.md +402 -0
- package/docs/KILLER-FEATURES-INTEGRATION.md +412 -0
- package/docs/KILLER-FEATURES-SUMMARY.md +424 -0
- package/docs/KILLER-FEATURES-TUTORIAL.md +784 -0
- package/docs/KILLER-FEATURES.md +562 -0
- package/docs/QUICK-REFERENCE.md +282 -0
- package/docs/README-v3-DOCS.md +274 -0
- package/docs/TUTORIAL-v3.md +1190 -0
- package/docs/architecture-dashboard.html +1970 -0
- package/docs/architecture-v3.html +1038 -0
- package/linkedin-post-v3.md +58 -0
- package/package.json +1 -1
- package/scripts/dev-setup.sh +338 -0
- package/scripts/docker-health-check.sh +159 -0
- package/scripts/integration-test.sh +311 -0
- package/scripts/test-docker.sh +515 -0
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
# cycleCAD Fusion Test Suite
|
|
2
|
+
|
|
3
|
+
Comprehensive visual test pages for all cycleCAD features. Each test page loads the app in an iframe and runs automated tests against it, with live visualization and detailed logging.
|
|
4
|
+
|
|
5
|
+
## Test Files
|
|
6
|
+
|
|
7
|
+
### 1. **fusion-sketch-tests.html** (15 KB)
|
|
8
|
+
Tests for all 2D sketch features:
|
|
9
|
+
- **Basic Shapes**: Line, Rectangle, Circle, Ellipse, Arc, Spline, Slot, Polygon
|
|
10
|
+
- **Advanced Tools**: Mirror, Pattern, Offset, Trim, Extend, Fillet 2D, Chamfer 2D
|
|
11
|
+
- **Constraints**: All 12 constraint types (Coincident, Horizontal, Vertical, Parallel, Perpendicular, Tangent, Equal, Fixed, Concentric, Symmetric, Distance, Angle)
|
|
12
|
+
|
|
13
|
+
**Test Categories**:
|
|
14
|
+
- Basic Shapes (8 tests)
|
|
15
|
+
- Advanced Operations (8 tests)
|
|
16
|
+
- Constraint System (12 tests)
|
|
17
|
+
- Export Formats (2 tests)
|
|
18
|
+
|
|
19
|
+
### 2. **fusion-solid-tests.html** (13 KB)
|
|
20
|
+
Tests for all 3D solid modeling operations:
|
|
21
|
+
- **Basic Operations**: Extrude, Revolve, Hole, Pocket, Pad
|
|
22
|
+
- **Advanced Operations**: Sweep, Loft, Boolean Union/Cut/Intersect, Shell, Draft
|
|
23
|
+
- **Features**: Fillet, Chamfer, Thread, Rib, Web, Scale
|
|
24
|
+
- **Patterns**: Rectangular Pattern, Circular Pattern, Mirror Body, Copy Body
|
|
25
|
+
|
|
26
|
+
**Test Categories**:
|
|
27
|
+
- Basic Operations (5 tests)
|
|
28
|
+
- Advanced Operations (7 tests)
|
|
29
|
+
- Feature Tools (6 tests)
|
|
30
|
+
- Pattern Operations (4 tests)
|
|
31
|
+
|
|
32
|
+
### 3. **fusion-assembly-tests.html** (12 KB)
|
|
33
|
+
Tests for assembly and multi-body workflows:
|
|
34
|
+
- **Joint Types**: Fixed, Revolute, Slider, Ball, Screw, Cylindrical, Planar
|
|
35
|
+
- **Component Management**: Insert, Ground, Suppress, Hide, Show
|
|
36
|
+
- **Analysis**: Interference Detection, Assembly Explode/Collapse, Motion Study, Drive Joint
|
|
37
|
+
|
|
38
|
+
**Test Categories**:
|
|
39
|
+
- Joint Creation (7 tests)
|
|
40
|
+
- Component Workflows (5 tests)
|
|
41
|
+
- Assembly Analysis (5 tests)
|
|
42
|
+
|
|
43
|
+
### 4. **fusion-cam-tests.html** (10 KB)
|
|
44
|
+
Tests for CAM and toolpath generation:
|
|
45
|
+
- **Setup**: Create Setup, Stock Setup, Coordinate System, Post Configuration
|
|
46
|
+
- **Operations**: Facing, Pocket, Contour, Drilling, 2D Adaptive, 3D Adaptive, Turning
|
|
47
|
+
- **Toolpath**: Tool Library, Tool Selection, Feed & Speed Calculator, Toolpath Simulation, G-code Generation, Setup Sheets
|
|
48
|
+
|
|
49
|
+
**Test Categories**:
|
|
50
|
+
- Setup Operations (4 tests)
|
|
51
|
+
- Machining Operations (7 tests)
|
|
52
|
+
- Toolpath & G-code (6 tests)
|
|
53
|
+
|
|
54
|
+
### 5. **fusion-simulation-tests.html** (10 KB)
|
|
55
|
+
Tests for structural and thermal analysis:
|
|
56
|
+
- **Stress Analysis**: Create Study, Apply Load, Apply Constraint, Mesh, Solve, Stress Results, Strain Results
|
|
57
|
+
- **Thermal Analysis**: Thermal Study, Initial Temperature, Thermal Load, Thermal Constraint, Thermal Mesh, Thermal Results
|
|
58
|
+
- **Other**: Modal Frequency, Buckling Analysis, Shape Optimization, Fatigue Analysis
|
|
59
|
+
|
|
60
|
+
**Test Categories**:
|
|
61
|
+
- Static Stress Analysis (7 tests)
|
|
62
|
+
- Thermal Analysis (6 tests)
|
|
63
|
+
- Advanced Analysis (4 tests)
|
|
64
|
+
|
|
65
|
+
### 6. **fusion-all-tests.html** (18 KB) — Master Test Runner
|
|
66
|
+
Master test orchestration page that:
|
|
67
|
+
- Loads all 5 test suites in sequence
|
|
68
|
+
- Aggregates results across all suites
|
|
69
|
+
- Displays overall progress and statistics
|
|
70
|
+
- Exports combined results as JSON or HTML report
|
|
71
|
+
- Tracks elapsed time
|
|
72
|
+
- Shows pass/fail/skip counts per suite
|
|
73
|
+
|
|
74
|
+
**Features**:
|
|
75
|
+
- Run All Tests button
|
|
76
|
+
- Individual suite result cards
|
|
77
|
+
- Overall progress bar (linear gradient)
|
|
78
|
+
- Stat cards showing total Pass/Fail/Skip
|
|
79
|
+
- Export to JSON or HTML
|
|
80
|
+
- Real-time progress updates
|
|
81
|
+
- Category breakdown per suite
|
|
82
|
+
|
|
83
|
+
## Usage
|
|
84
|
+
|
|
85
|
+
### Running Individual Test Suites
|
|
86
|
+
|
|
87
|
+
Open any individual test HTML file in a browser:
|
|
88
|
+
```
|
|
89
|
+
cyclecad.com/app/tests/fusion-sketch-tests.html
|
|
90
|
+
cyclecad.com/app/tests/fusion-solid-tests.html
|
|
91
|
+
cyclecad.com/app/tests/fusion-assembly-tests.html
|
|
92
|
+
cyclecad.com/app/tests/fusion-cam-tests.html
|
|
93
|
+
cyclecad.com/app/tests/fusion-simulation-tests.html
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
Each test page:
|
|
97
|
+
1. Loads the cycleCAD app in an iframe (left side, 70%)
|
|
98
|
+
2. Shows test log and controls on the right (30%)
|
|
99
|
+
3. Displays Pass/Fail/Skip counters
|
|
100
|
+
4. Shows progress bar
|
|
101
|
+
5. Allows running all tests or individual categories
|
|
102
|
+
|
|
103
|
+
### Running Master Test Suite
|
|
104
|
+
|
|
105
|
+
Open the master runner:
|
|
106
|
+
```
|
|
107
|
+
cyclecad.com/app/tests/fusion-all-tests.html
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
This will:
|
|
111
|
+
1. Load all 5 test suites sequentially
|
|
112
|
+
2. Capture results from each suite
|
|
113
|
+
3. Display overall statistics
|
|
114
|
+
4. Allow exporting combined report as JSON or HTML
|
|
115
|
+
|
|
116
|
+
## Test Architecture
|
|
117
|
+
|
|
118
|
+
### Split-Screen Layout
|
|
119
|
+
```
|
|
120
|
+
┌─────────────────────────────────────────────────┐
|
|
121
|
+
│ cycleCAD App (70%) │ Test Log (30%) │
|
|
122
|
+
│ (loads in iframe) │ - Pass/Fail counts │
|
|
123
|
+
│ │ - Category buttons │
|
|
124
|
+
│ │ - Test entries │
|
|
125
|
+
│ │ - Progress bar │
|
|
126
|
+
└─────────────────────────────────────────────────┘
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### Test Execution Flow
|
|
130
|
+
1. Iframe loads the app at `../index.html`
|
|
131
|
+
2. Wait for onload event
|
|
132
|
+
3. Access app via `iframe.contentWindow`
|
|
133
|
+
4. Call test functions sequentially
|
|
134
|
+
5. Each test returns `{ pass: boolean, error?: string, skip?: boolean }`
|
|
135
|
+
6. Results logged in real-time with color coding
|
|
136
|
+
7. Stats updated after each test
|
|
137
|
+
|
|
138
|
+
### Color Coding
|
|
139
|
+
- **Green**: Pass (✓)
|
|
140
|
+
- **Red**: Fail (✗)
|
|
141
|
+
- **Yellow**: Skip (○)
|
|
142
|
+
- **Blue**: Info
|
|
143
|
+
|
|
144
|
+
## Test Categories (All Suites)
|
|
145
|
+
|
|
146
|
+
### Sketch Tests
|
|
147
|
+
- **Basic Shapes** (8 tests): Line, Rect, Circle, Ellipse, Arc, Spline, Slot, Polygon
|
|
148
|
+
- **Advanced** (8 tests): Mirror, Pattern, Offset, Trim, Extend, Fillet 2D, Chamfer 2D, Project
|
|
149
|
+
- **Constraints** (12 tests): All 12 constraint types
|
|
150
|
+
- **Export** (2 tests): DXF, SVG
|
|
151
|
+
|
|
152
|
+
### Solid Tests
|
|
153
|
+
- **Basic Ops** (5 tests): Extrude, Revolve, Hole, Pocket, Pad
|
|
154
|
+
- **Advanced** (7 tests): Sweep, Loft, Boolean Union/Cut/Intersect, Shell, Draft
|
|
155
|
+
- **Features** (6 tests): Fillet, Chamfer, Thread, Rib, Web, Scale
|
|
156
|
+
- **Patterns** (4 tests): Rectangular, Circular, Mirror, Copy
|
|
157
|
+
|
|
158
|
+
### Assembly Tests
|
|
159
|
+
- **Joints** (7 tests): Fixed, Revolute, Slider, Ball, Screw, Cylindrical, Planar
|
|
160
|
+
- **Components** (5 tests): Insert, Ground, Suppress, Hide, Show
|
|
161
|
+
- **Analysis** (5 tests): Interference, Explode, Collapse, Motion, Drive
|
|
162
|
+
|
|
163
|
+
### CAM Tests
|
|
164
|
+
- **Setup** (4 tests): Create, Stock, Coordinate, Post
|
|
165
|
+
- **Operations** (7 tests): Facing, Pocket, Contour, Drilling, 2D Adaptive, 3D Adaptive, Turning
|
|
166
|
+
- **Toolpath** (6 tests): Tool Library, Tool Selection, Feed/Speed, Simulation, G-code, Setup Sheet
|
|
167
|
+
|
|
168
|
+
### Simulation Tests
|
|
169
|
+
- **Stress** (7 tests): Study, Load, Constraint, Mesh, Solve, Stress/Strain Results
|
|
170
|
+
- **Thermal** (6 tests): Study, Temperature, Load, Constraint, Mesh, Results
|
|
171
|
+
- **Other** (4 tests): Modal, Buckling, Shape Optimization, Fatigue
|
|
172
|
+
|
|
173
|
+
## Statistics
|
|
174
|
+
|
|
175
|
+
| Suite | Total Tests | Categories | Status |
|
|
176
|
+
|-------|------------|-----------|--------|
|
|
177
|
+
| Sketch | 30 | 4 | Ready |
|
|
178
|
+
| Solid | 22 | 4 | Ready |
|
|
179
|
+
| Assembly | 17 | 3 | Ready |
|
|
180
|
+
| CAM | 17 | 3 | Ready |
|
|
181
|
+
| Simulation | 17 | 3 | Ready |
|
|
182
|
+
| **Total** | **103** | **17** | **Ready** |
|
|
183
|
+
|
|
184
|
+
## Features
|
|
185
|
+
|
|
186
|
+
### Per-Suite Test Page
|
|
187
|
+
- ✓ Split-screen layout (app + log)
|
|
188
|
+
- ✓ Pass/Fail/Skip counters
|
|
189
|
+
- ✓ Progress bar with color gradient
|
|
190
|
+
- ✓ Run All Tests button
|
|
191
|
+
- ✓ Run Category buttons
|
|
192
|
+
- ✓ Real-time test logging
|
|
193
|
+
- ✓ Color-coded results
|
|
194
|
+
- ✓ Elapsed time tracking
|
|
195
|
+
|
|
196
|
+
### Master Test Runner
|
|
197
|
+
- ✓ Load all 5 suites sequentially
|
|
198
|
+
- ✓ Aggregate results across all suites
|
|
199
|
+
- ✓ Overall progress bar
|
|
200
|
+
- ✓ Per-suite stat cards
|
|
201
|
+
- ✓ Export to JSON format
|
|
202
|
+
- ✓ Export to HTML report
|
|
203
|
+
- ✓ Elapsed time tracking
|
|
204
|
+
- ✓ Visual status badges (running/completed/failed)
|
|
205
|
+
|
|
206
|
+
## Development Patterns
|
|
207
|
+
|
|
208
|
+
### Test Function Signature
|
|
209
|
+
```javascript
|
|
210
|
+
async function testFeatureName() {
|
|
211
|
+
try {
|
|
212
|
+
const module = appWindow.cycleCAD?.moduleNamespace;
|
|
213
|
+
if (!module) return { skip: true };
|
|
214
|
+
|
|
215
|
+
const result = await module.featureCall();
|
|
216
|
+
return { pass: result !== null };
|
|
217
|
+
} catch (e) {
|
|
218
|
+
return { pass: false, error: e.message };
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
### Adding New Tests
|
|
224
|
+
1. Create test function with same signature
|
|
225
|
+
2. Add to appropriate `tests` object category
|
|
226
|
+
3. Return `{ pass, error?, skip? }`
|
|
227
|
+
4. Tests run sequentially with 300ms delay between each
|
|
228
|
+
|
|
229
|
+
### Dark Theme
|
|
230
|
+
All test pages use consistent dark theme:
|
|
231
|
+
- Background: `#0f172a`
|
|
232
|
+
- Cards: `#1a202c`
|
|
233
|
+
- Text: `#e2e8f0`
|
|
234
|
+
- Accent (blue): `#38bdf8`
|
|
235
|
+
- Success (green): `#10b981`
|
|
236
|
+
- Error (red): `#ef4444`
|
|
237
|
+
- Warning (amber): `#f59e0b`
|
|
238
|
+
|
|
239
|
+
## File Sizes
|
|
240
|
+
|
|
241
|
+
```
|
|
242
|
+
fusion-sketch-tests.html 15 KB
|
|
243
|
+
fusion-solid-tests.html 13 KB
|
|
244
|
+
fusion-assembly-tests.html 12 KB
|
|
245
|
+
fusion-cam-tests.html 10 KB
|
|
246
|
+
fusion-simulation-tests.html 10 KB
|
|
247
|
+
fusion-all-tests.html 18 KB
|
|
248
|
+
────────────────────────────────
|
|
249
|
+
Total 78 KB
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
## Browser Compatibility
|
|
253
|
+
|
|
254
|
+
- Chrome/Edge 90+
|
|
255
|
+
- Firefox 88+
|
|
256
|
+
- Safari 14+
|
|
257
|
+
- All modern browsers with ES6+ support
|
|
258
|
+
|
|
259
|
+
## Notes
|
|
260
|
+
|
|
261
|
+
- Tests access app via `iframe.contentWindow`
|
|
262
|
+
- Each test isolated in try-catch for reliability
|
|
263
|
+
- Skip tests that require external dependencies
|
|
264
|
+
- Detailed error messages logged for failed tests
|
|
265
|
+
- Results export available in JSON and HTML formats
|
|
266
|
+
- Master runner sequences suites to avoid parallel load issues
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# B-Rep Live Test Suite
|
|
2
|
+
|
|
3
|
+
**Quick start:** Open `brep-live-test.html` in a web browser.
|
|
4
|
+
|
|
5
|
+
## What is This?
|
|
6
|
+
|
|
7
|
+
A standalone interactive test page that downloads OpenCascade.js WASM (a full 3D CAD geometry kernel compiled to WebAssembly) and demonstrates real B-Rep (Boundary Representation) geometry operations with live 3D visualization in Three.js.
|
|
8
|
+
|
|
9
|
+
## Files
|
|
10
|
+
|
|
11
|
+
| File | Purpose |
|
|
12
|
+
|------|---------|
|
|
13
|
+
| `brep-live-test.html` | Main test page (all-in-one, no build needed) |
|
|
14
|
+
| `BREP-LIVE-TEST-GUIDE.md` | Complete documentation + API reference |
|
|
15
|
+
| `TESTING-CHECKLIST.md` | Pre-deployment validation steps |
|
|
16
|
+
| `README.md` | This file |
|
|
17
|
+
|
|
18
|
+
## Run Locally
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
cd ~/cyclecad
|
|
22
|
+
python -m http.server 8000
|
|
23
|
+
# Then open: http://localhost:8000/app/tests/brep-live-test.html
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## What It Tests
|
|
27
|
+
|
|
28
|
+
**14 tests across 3 categories:**
|
|
29
|
+
|
|
30
|
+
- **Primitives (5):** Box, Cylinder, Sphere, Cone, Torus
|
|
31
|
+
- **Operations (6):** Fillet, Chamfer, Boolean Union/Cut/Intersect, Extrude
|
|
32
|
+
- **Analysis (3):** Mass Properties, Edge Count, Face Count
|
|
33
|
+
|
|
34
|
+
## How It Works
|
|
35
|
+
|
|
36
|
+
1. **Downloads OpenCascade.js WASM** — ~50MB binary (1-3 min on first load)
|
|
37
|
+
2. **Initializes Three.js scene** — Camera, lights, grid, OrbitControls
|
|
38
|
+
3. **Creates B-Rep geometry** — Using real OCP APIs (`BRepPrimAPI_MakeBox`, `BRepAlgoAPI_Fuse`, etc.)
|
|
39
|
+
4. **Tessellates to triangles** — `BRepMesh_IncrementalMesh` → extract faces → build THREE.BufferGeometry
|
|
40
|
+
5. **Renders in real-time** — 3D viewport with shadows, lighting, interaction
|
|
41
|
+
|
|
42
|
+
## Key Features
|
|
43
|
+
|
|
44
|
+
- Real B-Rep geometry (not mesh approximations)
|
|
45
|
+
- Interactive 3D camera (rotate, pan, zoom)
|
|
46
|
+
- Live FPS, triangle count, vertex count display
|
|
47
|
+
- Timestamped logging of all operations
|
|
48
|
+
- Dark VS Code-style UI
|
|
49
|
+
- Click individual tests or "Run All Tests"
|
|
50
|
+
- Status indicators (pending/running/passed/failed)
|
|
51
|
+
- Error handling with helpful messages
|
|
52
|
+
|
|
53
|
+
## Why This Matters
|
|
54
|
+
|
|
55
|
+
Validates that:
|
|
56
|
+
- OpenCascade.js WASM works in modern browsers
|
|
57
|
+
- Complex geometry operations execute in-browser
|
|
58
|
+
- Tessellation pipeline produces valid meshes
|
|
59
|
+
- Three.js can render large triangle counts (5k-10k per shape)
|
|
60
|
+
- B-Rep APIs are accessible and reliable
|
|
61
|
+
|
|
62
|
+
## Next Steps
|
|
63
|
+
|
|
64
|
+
1. Test locally and verify all 14 tests pass
|
|
65
|
+
2. Review `BREP-LIVE-TEST-GUIDE.md` for detailed API reference
|
|
66
|
+
3. Add new tests by following the pattern in `brep-live-test.html`
|
|
67
|
+
4. Deploy to GitHub Pages (automatic once pushed to main)
|
|
68
|
+
5. Integrate real B-Rep operations into cycleCAD `operations.js`
|
|
69
|
+
|
|
70
|
+
## Troubleshooting
|
|
71
|
+
|
|
72
|
+
See `BREP-LIVE-TEST-GUIDE.md` for common issues and solutions.
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
**Status:** Ready for testing
|
|
77
|
+
**Created:** 2026-03-31
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
# B-Rep Live Test — Pre-Deployment Checklist
|
|
2
|
+
|
|
3
|
+
## Files Created
|
|
4
|
+
- [x] `/app/tests/brep-live-test.html` — Main test page (848 lines, 31KB)
|
|
5
|
+
- [x] `/docs/BREP-LIVE-TEST-GUIDE.md` — Complete guide (453 lines, 16KB)
|
|
6
|
+
- [x] `/app/tests/TESTING-CHECKLIST.md` — This file
|
|
7
|
+
|
|
8
|
+
## Test Page Validation Checklist
|
|
9
|
+
|
|
10
|
+
### WASM Loading
|
|
11
|
+
- [ ] CDN URL resolves: `https://cdn.jsdelivr.net/npm/opencascade.js@2.0.0-beta.b5ff984/dist/`
|
|
12
|
+
- [ ] Progress bar shows 0-100% during download
|
|
13
|
+
- [ ] "Ready" message appears when complete
|
|
14
|
+
- [ ] "Run All Tests" button enables
|
|
15
|
+
|
|
16
|
+
### Three.js Setup
|
|
17
|
+
- [ ] Canvas renders in viewport
|
|
18
|
+
- [ ] Grid floor visible
|
|
19
|
+
- [ ] Lights casting shadows
|
|
20
|
+
- [ ] OrbitControls respond to mouse (rotate, pan, zoom)
|
|
21
|
+
|
|
22
|
+
### Test Execution
|
|
23
|
+
|
|
24
|
+
#### Primitives (5 tests)
|
|
25
|
+
- [ ] Box: Renders cube, 12 edges shown in log
|
|
26
|
+
- [ ] Cylinder: Renders cylinder, circular face visible
|
|
27
|
+
- [ ] Sphere: Renders sphere, smooth surface
|
|
28
|
+
- [ ] Cone: Renders cone, tapered shape visible
|
|
29
|
+
- [ ] Torus: Renders doughnut shape
|
|
30
|
+
|
|
31
|
+
#### Operations (6 tests)
|
|
32
|
+
- [ ] Fillet: Box edges are rounded/smooth
|
|
33
|
+
- [ ] Chamfer: Box edges are beveled
|
|
34
|
+
- [ ] Union: Box and cylinder merged together
|
|
35
|
+
- [ ] Cut: Cylindrical hole visible in box
|
|
36
|
+
- [ ] Intersect: Overlapping region only visible
|
|
37
|
+
- [ ] Extrude: 2D face becomes 3D solid
|
|
38
|
+
|
|
39
|
+
#### Analysis (3 tests)
|
|
40
|
+
- [ ] Mass: Displays volume and area in log
|
|
41
|
+
- [ ] Edges: Displays edge count (box = 12)
|
|
42
|
+
- [ ] Faces: Displays face count (box = 6)
|
|
43
|
+
|
|
44
|
+
### UI Behavior
|
|
45
|
+
- [ ] Individual test click runs that test
|
|
46
|
+
- [ ] "Run All Tests" runs 14 tests in sequence
|
|
47
|
+
- [ ] Status indicators update: pending → running → passed/failed
|
|
48
|
+
- [ ] Timing displays in milliseconds
|
|
49
|
+
- [ ] Log panel auto-scrolls to latest message
|
|
50
|
+
- [ ] Stats overlay updates (FPS, triangles, vertices)
|
|
51
|
+
- [ ] Test list groups by category (Primitives/Operations/Analysis)
|
|
52
|
+
|
|
53
|
+
### Error Handling
|
|
54
|
+
- [ ] Network error shows clear message
|
|
55
|
+
- [ ] WASM init failure displays suggestion
|
|
56
|
+
- [ ] Tessellation failure logged without crashing app
|
|
57
|
+
- [ ] Missing OCP API falls back gracefully
|
|
58
|
+
|
|
59
|
+
### Performance
|
|
60
|
+
- [ ] FPS ≥ 30 during rotation
|
|
61
|
+
- [ ] Primitives render in <100ms each
|
|
62
|
+
- [ ] Boolean ops render in <200ms each
|
|
63
|
+
- [ ] No memory leaks over multiple test runs
|
|
64
|
+
|
|
65
|
+
## Deployment Steps
|
|
66
|
+
|
|
67
|
+
### Local Testing
|
|
68
|
+
```bash
|
|
69
|
+
# Ensure directory exists
|
|
70
|
+
mkdir -p ~/cyclecad/app/tests
|
|
71
|
+
|
|
72
|
+
# Files should already exist:
|
|
73
|
+
ls -l ~/cyclecad/app/tests/brep-live-test.html
|
|
74
|
+
ls -l ~/cyclecad/docs/BREP-LIVE-TEST-GUIDE.md
|
|
75
|
+
|
|
76
|
+
# Start local server
|
|
77
|
+
cd ~/cyclecad
|
|
78
|
+
python -m http.server 8000
|
|
79
|
+
|
|
80
|
+
# Open in browser (may need HTTPS for some features):
|
|
81
|
+
http://localhost:8000/app/tests/brep-live-test.html
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### Git Commit
|
|
85
|
+
```bash
|
|
86
|
+
cd ~/cyclecad
|
|
87
|
+
rm -f .git/HEAD.lock .git/index.lock
|
|
88
|
+
|
|
89
|
+
git add app/tests/brep-live-test.html
|
|
90
|
+
git add docs/BREP-LIVE-TEST-GUIDE.md
|
|
91
|
+
git add app/tests/TESTING-CHECKLIST.md
|
|
92
|
+
|
|
93
|
+
git commit -m "Add B-Rep live test page with OpenCascade.js WASM + Three.js visualization
|
|
94
|
+
|
|
95
|
+
- brep-live-test.html: Interactive test harness for 14 B-Rep operations
|
|
96
|
+
- BREP-LIVE-TEST-GUIDE.md: Complete documentation with API reference
|
|
97
|
+
- WASM download progress tracking (50MB OpenCascade.js binary)
|
|
98
|
+
- Real tessellation pipeline: BRepMesh -> TopExp_Explorer -> THREE.BufferGeometry
|
|
99
|
+
- 5 primitives + 6 operations + 3 analysis tests
|
|
100
|
+
- Dark VS Code-style UI with sidebar, viewport, stats, logging
|
|
101
|
+
"
|
|
102
|
+
|
|
103
|
+
git push origin main
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### GitHub Pages Deployment
|
|
107
|
+
Once pushed to main, test page is automatically available at:
|
|
108
|
+
```
|
|
109
|
+
https://vvlars-cmd.github.io/cyclecad/app/tests/brep-live-test.html
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
## Known Issues & Workarounds
|
|
113
|
+
|
|
114
|
+
### Issue: WASM Download Hangs
|
|
115
|
+
**Symptom:** Progress bar stuck at 0% or freezes browser
|
|
116
|
+
**Workaround:**
|
|
117
|
+
1. Wait 2-3 minutes (first load takes time)
|
|
118
|
+
2. Check DevTools Network tab (F12)
|
|
119
|
+
3. Refresh page and try again
|
|
120
|
+
|
|
121
|
+
### Issue: "BRepFilletAPI_MakeFillet is not a function"
|
|
122
|
+
**Symptom:** Test fails with API not found error
|
|
123
|
+
**Workaround:**
|
|
124
|
+
1. Check OpenCascade.js version in CDN_BASE
|
|
125
|
+
2. Try alternative API or simpler operation
|
|
126
|
+
3. Verify WASM loaded successfully
|
|
127
|
+
|
|
128
|
+
### Issue: Black Screen (No Geometry Visible)
|
|
129
|
+
**Symptom:** Canvas renders but no shape appears
|
|
130
|
+
**Workaround:**
|
|
131
|
+
1. Check console (F12 → Console) for tessellation errors
|
|
132
|
+
2. Try smaller deflection value (0.05 instead of 0.1)
|
|
133
|
+
3. Verify shape was created before tessellation
|
|
134
|
+
|
|
135
|
+
### Issue: Tests Run Very Slowly
|
|
136
|
+
**Symptom:** Each test takes >1 second
|
|
137
|
+
**Workaround:**
|
|
138
|
+
1. Close other browser tabs
|
|
139
|
+
2. Restart browser
|
|
140
|
+
3. Check if WASM is still downloading (Network tab)
|
|
141
|
+
|
|
142
|
+
## Extending the Test Suite
|
|
143
|
+
|
|
144
|
+
### Add New Test
|
|
145
|
+
1. Add entry to `tests` array (line ~270)
|
|
146
|
+
2. Add implementation in `runTest()` function (line ~550)
|
|
147
|
+
3. Follow pattern: create shape → tessellate → render
|
|
148
|
+
|
|
149
|
+
### Example: Add a Wedge Test
|
|
150
|
+
```javascript
|
|
151
|
+
// In tests array:
|
|
152
|
+
{ id: 'wedge', name: 'Wedge (inclined plane)', category: 'Primitives' },
|
|
153
|
+
|
|
154
|
+
// In runTest():
|
|
155
|
+
else if (testId === 'wedge') {
|
|
156
|
+
const shape = new oc.BRepPrimAPI_MakeWedge_3(100, 50, 30, 20).Shape();
|
|
157
|
+
const tessData = tessellateShape(shape);
|
|
158
|
+
if (!tessData) throw new Error('Tessellation failed');
|
|
159
|
+
const { triangleCount } = renderGeometry(tessData.vertices, tessData.indices);
|
|
160
|
+
log(`Wedge: ${elapsed.toFixed(1)}ms, ${triangleCount} triangles`, 'success');
|
|
161
|
+
updateTestStatus(testId, 'passed', elapsed);
|
|
162
|
+
}
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
## Success Criteria
|
|
166
|
+
|
|
167
|
+
✅ All 14 tests pass without errors
|
|
168
|
+
✅ WASM loads in <3 minutes
|
|
169
|
+
✅ Geometry renders correctly in 3D viewport
|
|
170
|
+
✅ Stats overlay shows FPS ≥30
|
|
171
|
+
✅ Log panel shows all operations with timing
|
|
172
|
+
✅ UI is responsive and visually correct
|
|
173
|
+
|
|
174
|
+
---
|
|
175
|
+
|
|
176
|
+
**Status:** Ready for testing
|
|
177
|
+
**Last checked:** 2026-03-31
|