Files
QuantEngineByItz/oms-wms-erp/tests/e2e/order-flow.spec.ts
T
kjh2064 b34b0dd7d6
Validators (Pushes and Pull Requests) / UI & Storage Validation (pull_request) Failing after 12s
Validators (Pushes and Pull Requests) / Database & Schema Validation (pull_request) Successful in 13s
Validators (Pushes and Pull Requests) / Core Validators & Database Setup (pull_request) Failing after 28s
Validators (Pushes and Pull Requests) / WBS & Audit Validations (pull_request) Has been skipped
Validators (Pushes and Pull Requests) / .NET Contracts (pull_request) Has been skipped
Validators (Pushes and Pull Requests) / Calibration & Performance (pull_request) Has been skipped
Validators (Pushes and Pull Requests) / Operational Report & Decision Packet (pull_request) Has been skipped
Validators (Pushes and Pull Requests) / CI Workflow Lint (pull_request) Failing after 10s
Validators (Pushes and Pull Requests) / Security & Secrets (pull_request) Successful in 12s
Validators (Pushes and Pull Requests) / Notify PR Results (pull_request) Successful in 2s
Frontend CI Pipeline / ci-frontend-8-steps (pull_request) Failing after 2m50s
Add OMS WMS ERP platform
2026-07-27 00:45:39 +09:00

123 lines
4.1 KiB
TypeScript

import { test, expect } from '@playwright/test'
test.describe('Order Management E2E Tests', () => {
test.beforeEach(async ({ page }) => {
// Navigate to app
await page.goto('http://localhost:5173')
})
test('should complete full order workflow', async ({ page }) => {
// Navigate to orders
await page.click('a[href="/orders"]')
await expect(page).toHaveURL(/orders/)
// Create new order
await page.click('button:has-text("New Order")')
await expect(page).toHaveTitle(/Create Order/)
// Select customer
await page.selectOption('select[name="customerId"]', 'cust-001')
// Set dates
await page.fill('input[name="orderDate"]', '2026-08-01')
await page.fill('input[name="dueDate"]', '2026-08-15')
// Add items
await page.click('button:has-text("Add Item")')
await page.fill('input[name="productSku"]', 'SKU-12345')
await page.fill('input[name="quantity"]', '100')
await page.fill('input[name="unitPrice"]', '50')
// Verify totals
const subtotal = await page.locator('text=Subtotal: $5000').isVisible()
expect(subtotal).toBeTruthy()
// Save order
await page.click('button:has-text("Create Order")')
// Verify order created
await expect(page).toHaveURL(/orders\//)
const orderNumber = await page.locator('h1').textContent()
expect(orderNumber).toMatch(/ORD-/)
})
test('should filter orders by status', async ({ page }) => {
await page.click('a[href="/orders"]')
// Open filter
await page.click('button:has-text("Filter")')
// Select status
await page.selectOption('select[name="status"]', 'CONFIRMED')
// Apply
await page.click('button:has-text("Apply")')
// Verify filtered results
const rows = await page.locator('table tbody tr')
const count = await rows.count()
expect(count).toBeGreaterThan(0)
})
test('should edit order', async ({ page }) => {
await page.click('a[href="/orders"]')
// Find and click first order
await page.click('table tbody tr:first-child')
await page.click('button:has-text("Edit")')
// Update status
await page.selectOption('select[name="status"]', 'SHIPPED')
// Save
await page.click('button:has-text("Save")')
// Verify update
await expect(page.locator('text=Order updated successfully')).toBeVisible()
})
test('should delete order with confirmation', async ({ page }) => {
await page.click('a[href="/orders"]')
const initialCount = await page.locator('table tbody tr').count()
// Find and click first order
await page.click('table tbody tr:first-child')
await page.click('button:has-text("Delete")')
// Confirm deletion
await page.click('button:has-text("Confirm")')
// Verify deletion
await expect(page.locator('text=Order deleted successfully')).toBeVisible()
const finalCount = await page.locator('table tbody tr').count()
expect(finalCount).toBe(initialCount - 1)
})
test('should calculate order totals correctly', async ({ page }) => {
await page.click('a[href="/orders"]')
await page.click('button:has-text("New Order")')
await page.selectOption('select[name="customerId"]', 'cust-001')
await page.fill('input[name="orderDate"]', '2026-08-01')
await page.fill('input[name="dueDate"]', '2026-08-15')
// Add multiple items
await page.click('button:has-text("Add Item")')
await page.fill('input[name="productSku"]', 'SKU-001')
await page.fill('input[name="quantity"]', '100')
await page.fill('input[name="unitPrice"]', '50') // 5000
await page.click('button:has-text("Add Item")')
const skuInputs = await page.locator('input[name="productSku"]')
await skuInputs.nth(1).fill('SKU-002')
await page.locator('input[name="quantity"]').nth(1).fill('50')
await page.locator('input[name="unitPrice"]').nth(1).fill('30') // 1500
// Verify totals: 6500 subtotal, 650 tax, 7150 total
await expect(page.locator('text=Subtotal: $6500')).toBeVisible()
await expect(page.locator('text=Tax: $650')).toBeVisible()
await expect(page.locator('text=Total: $7150')).toBeVisible()
})
})