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
# Install dependencies
npm install
# Install Playwright browsers
npx playwright install chromium
# Create test data files
npm run create-test-data
Running Tests
# 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)
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:
- Finds the hidden file input created by RadzenUpload
- Sets the file directly on the input element
- 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.*.jsreturns 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)