Migrate Playwright suite to .NET UI tests and deprecate TS project
This commit is contained in:
@@ -0,0 +1,120 @@
|
||||
# JDE Scoping Tool - Playwright E2E Tests
|
||||
|
||||
End-to-end tests for the JDE Scoping Tool using Playwright.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Node.js 18+
|
||||
- The JDE Scoping Tool server running at `http://localhost:5294`
|
||||
|
||||
## Setup
|
||||
|
||||
```bash
|
||||
# Install dependencies
|
||||
npm install
|
||||
|
||||
# Install Playwright browsers
|
||||
npx playwright install chromium
|
||||
|
||||
# Create test data files
|
||||
npm run create-test-data
|
||||
```
|
||||
|
||||
## Running Tests
|
||||
|
||||
```bash
|
||||
# Start the server first (in another terminal)
|
||||
cd ../../NEW
|
||||
dotnet run --project src/JdeScoping.Host/JdeScoping.Host.csproj
|
||||
|
||||
# Run all tests
|
||||
npm test
|
||||
|
||||
# Run tests with browser visible
|
||||
npm run test:headed
|
||||
|
||||
# Run tests in debug mode
|
||||
npm run test:debug
|
||||
|
||||
# Run tests with Playwright UI
|
||||
npm run test:ui
|
||||
```
|
||||
|
||||
## Test Structure
|
||||
|
||||
```
|
||||
playwright/
|
||||
├── package.json # Dependencies
|
||||
├── playwright.config.ts # Playwright configuration
|
||||
├── scripts/
|
||||
│ └── create-test-excel.js # Script to generate test Excel files
|
||||
├── test-data/ # Generated test Excel files
|
||||
│ ├── single_workorder.xlsx
|
||||
│ ├── multiple_workorders.xlsx
|
||||
│ ├── single_lot.xlsx
|
||||
│ └── ...
|
||||
└── tests/
|
||||
└── search-page.spec.ts # Search page tests
|
||||
```
|
||||
|
||||
## Test Cases
|
||||
|
||||
### Work Order Search (TC-010)
|
||||
- **TC-010-P01**: Upload single work order ✓
|
||||
- **TC-010-P02**: Upload multiple work orders ✓
|
||||
- **TC-010-P03**: Download template ✓
|
||||
- **TC-010-P04**: Clear data ✓
|
||||
|
||||
### Component Lot Search (TC-020)
|
||||
- **TC-020-P01**: Upload component lot file ✓
|
||||
|
||||
### Time Span + Profit Center + Item Number (TC-060)
|
||||
- **TC-060-P01**: Upload item numbers file ✓
|
||||
|
||||
### Time Span + Profit Center + Item/Operation/MIS (TC-070)
|
||||
- **TC-070-P01**: Upload part operations file ✓
|
||||
|
||||
## Environment Variables
|
||||
|
||||
- `BASE_URL`: Override the default URL (default: `http://localhost:5294`)
|
||||
|
||||
```bash
|
||||
BASE_URL=http://localhost:5000 npm test
|
||||
```
|
||||
|
||||
## Authentication
|
||||
|
||||
The tests automatically handle login using the FakeAuthService in development mode:
|
||||
- Username: `testuser`
|
||||
- Password: `testpass` (any password works with FakeAuthService)
|
||||
|
||||
## File Upload Mechanism
|
||||
|
||||
These tests use Playwright's native `setInputFiles()` method which:
|
||||
1. Finds the hidden file input created by RadzenUpload
|
||||
2. Sets the file directly on the input element
|
||||
3. Triggers the component's change event properly
|
||||
|
||||
This bypasses the binary encoding issues that occur with JavaScript FormData uploads.
|
||||
|
||||
## Blazor WASM Considerations
|
||||
|
||||
Blazor WebAssembly applications require additional time to initialize. The tests include:
|
||||
- Extended timeouts (up to 2 minutes for page load)
|
||||
- Network idle waits for WASM file downloads
|
||||
- Post-login navigation refresh to ensure proper state
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Tests timeout waiting for page load
|
||||
- Ensure the server is running and accessible
|
||||
- Check that Blazor WASM files are being served (verify `/_framework/dotnet.*.js` returns 200)
|
||||
- Try running in headed mode to see what's happening: `npm run test:headed`
|
||||
|
||||
### Authentication issues
|
||||
- The app uses FakeAuthService in development mode which accepts any credentials
|
||||
- If authentication fails, check the server logs for errors
|
||||
|
||||
### File upload fails
|
||||
- Ensure test data files exist: `npm run create-test-data`
|
||||
- Verify the file input is accessible (RadzenUpload creates a hidden input)
|
||||
Reference in New Issue
Block a user