Refactor test logging into shared utilities
- Extract common logging code to tests/e2e/utils/ - fixtures.ts: Playwright fixture with automatic log capture - test-utils.ts: Logging utilities and helper functions - Each test now automatically captures: - Console logs with timestamps and log levels - Page errors with full stack traces - Log files written per test to tests/logs/ - <test-name>.log for all console output - <test-name>.errors.log only when errors occur - Update all 13 spec files to use shared fixtures - Update README with test structure and logging docs - Net reduction of ~700 lines by removing duplicated code 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
2264a22685
commit
26181bb929
16 changed files with 431 additions and 1131 deletions
|
|
@ -13,7 +13,7 @@ Playwright tests for verifying the wxWidgets WASM port.
|
|||
../scripts/build-wasm-test.sh
|
||||
```
|
||||
|
||||
This builds `wasm-app/minimal_test.{html,js,wasm}`.
|
||||
This builds `wasm-app/minimal_test.{html,js,wasm}` and standalone test apps.
|
||||
|
||||
## Running Tests
|
||||
|
||||
|
|
@ -22,6 +22,61 @@ npm install
|
|||
npm test
|
||||
```
|
||||
|
||||
To run specific tests:
|
||||
```bash
|
||||
npx playwright test menu.spec.ts # Run menu tests only
|
||||
npx playwright test --grep "wxTimer" # Run tests matching pattern
|
||||
```
|
||||
|
||||
## Test Structure
|
||||
|
||||
```
|
||||
tests/
|
||||
├── e2e/ # Playwright test specs
|
||||
│ ├── utils/ # Shared test utilities
|
||||
│ │ ├── fixtures.ts # Playwright fixtures with auto-logging
|
||||
│ │ └── test-utils.ts # Logging and helper functions
|
||||
│ ├── menu.spec.ts # wxMenuBar tests
|
||||
│ ├── timer.spec.ts # wxTimer tests
|
||||
│ ├── dialog.spec.ts # wxDialog/wxMessageBox tests
|
||||
│ ├── tree.spec.ts # wxTreeCtrl tests
|
||||
│ ├── grid.spec.ts # wxGrid/wxSpinCtrl/wxSearchCtrl tests
|
||||
│ ├── opengl.spec.ts # OpenGL tab tests
|
||||
│ ├── wxwidgets.spec.ts # Comprehensive UI interaction tests
|
||||
│ └── ...
|
||||
├── logs/ # Test logs (auto-generated)
|
||||
├── test-results/ # Screenshots (auto-generated)
|
||||
├── baseline-screenshots/ # Reference screenshots for comparison
|
||||
├── wasm-app/ # Built WASM test applications
|
||||
│ ├── minimal_test.html # Main test app
|
||||
│ └── standalone/ # Individual component test apps
|
||||
└── playwright.config.ts # Playwright configuration
|
||||
```
|
||||
|
||||
## Logging
|
||||
|
||||
Each test automatically captures:
|
||||
- Console logs with timestamps and log levels
|
||||
- Page errors with full stack traces
|
||||
|
||||
Log files are written to `logs/` after each test:
|
||||
- `<test-name>.log` - All console output
|
||||
- `<test-name>.errors.log` - Errors only (created if errors occurred)
|
||||
|
||||
Example log format:
|
||||
```
|
||||
[2025-11-29T19:39:42.165Z] [LOG] [EVENT] Application started
|
||||
[2025-11-29T19:39:42.733Z] [WARNING] GPU stall due to ReadPixels
|
||||
[2025-11-29T19:39:42.801Z] [ERROR] Some error message
|
||||
```
|
||||
|
||||
## Screenshots
|
||||
|
||||
Tests capture screenshots to `test-results/`. Compare against baselines:
|
||||
```bash
|
||||
../scripts/compare-screenshots.sh
|
||||
```
|
||||
|
||||
## Viewing the App Directly
|
||||
|
||||
Start a local server in the wasm-app directory:
|
||||
|
|
@ -41,3 +96,26 @@ python3 -m http.server 8000
|
|||
```
|
||||
|
||||
Then open http://localhost:8000/minimal_test.html
|
||||
|
||||
## Test Categories
|
||||
|
||||
| Spec File | Tests | Description |
|
||||
|-----------|-------|-------------|
|
||||
| `wxwidgets.spec.ts` | Comprehensive | Full UI interaction, stability, OpenGL |
|
||||
| `menu.spec.ts` | wxMenuBar | Menu bar visibility and interactions |
|
||||
| `timer.spec.ts` | wxTimer | Timer start/stop/reset functionality |
|
||||
| `dialog.spec.ts` | wxDialog | Message boxes and custom dialogs |
|
||||
| `tree.spec.ts` | wxTreeCtrl | Tree control with expand/collapse |
|
||||
| `grid.spec.ts` | wxGrid | Grid, SpinCtrl, SearchCtrl |
|
||||
| `opengl.spec.ts` | OpenGL | GL tests (immediate mode, vertex arrays) |
|
||||
| `aui.spec.ts` | wxAuiManager | Dockable panels |
|
||||
| `clipboard.spec.ts` | wxClipboard | Copy/paste operations |
|
||||
| `filedialog.spec.ts` | wxFileDialog | File open/save dialogs |
|
||||
| `layout.spec.ts` | wxSplitter | Splitter and scrolled windows |
|
||||
| `toolbar.spec.ts` | wxToolBar | Toolbar buttons and status bar |
|
||||
|
||||
## Known Issues
|
||||
|
||||
- **Timer tests**: May fail due to timing sensitivity
|
||||
- **Tree tests**: Button click positions may vary
|
||||
- **wxGrid**: Not fully implemented (expected failures marked with `test.fail`)
|
||||
|
|
|
|||
Loading…
Reference in a new issue