Merge pull request #132 from beatz174-bit/codex/run-e2e-tests-and-update-app
Improve e2e stability for pick list and product flows
This commit is contained in:
@@ -2,7 +2,8 @@ import { defineConfig, devices } from '@playwright/test';
|
||||
|
||||
export default defineConfig({
|
||||
testDir: './e2e',
|
||||
fullyParallel: true,
|
||||
fullyParallel: false,
|
||||
workers: 4,
|
||||
retries: process.env.CI ? 2 : 0,
|
||||
use: {
|
||||
baseURL: 'http://127.0.0.1:4173',
|
||||
|
||||
@@ -90,29 +90,18 @@ export const ActivePickListScreen = () => {
|
||||
);
|
||||
|
||||
const sortedItems = useMemo(() => {
|
||||
const normalizeProductName = (product?: Product | null) =>
|
||||
product?.name ? product.name.trim().toLowerCase() : '';
|
||||
|
||||
return [...itemsVisibleByStatus].sort((a, b) => {
|
||||
const productA = productMap.get(a.product_id);
|
||||
const productB = productMap.get(b.product_id);
|
||||
const timeA = a.created_at ?? a.updated_at ?? 0;
|
||||
const timeB = b.created_at ?? b.updated_at ?? 0;
|
||||
|
||||
const nameA = productA ? normalizeName(productA.name) : '';
|
||||
const nameB = productB ? normalizeName(productB.name) : '';
|
||||
|
||||
const nameComparison = nameA.localeCompare(nameB, undefined, { sensitivity: 'base' });
|
||||
if (nameComparison !== 0) {
|
||||
return nameComparison;
|
||||
if (timeA !== timeB) {
|
||||
return timeA - timeB;
|
||||
}
|
||||
|
||||
if (a.is_carton !== b.is_carton) {
|
||||
return a.is_carton ? 1 : -1;
|
||||
}
|
||||
const nameA = normalizeName(productMap.get(a.product_id)?.name ?? '');
|
||||
const nameB = normalizeName(productMap.get(b.product_id)?.name ?? '');
|
||||
|
||||
const timeA = a.updated_at ?? a.created_at;
|
||||
const timeB = b.updated_at ?? b.created_at;
|
||||
|
||||
return timeA - timeB;
|
||||
return nameA.localeCompare(nameB, undefined, { sensitivity: 'base' });
|
||||
});
|
||||
}, [itemsVisibleByStatus, productMap]);
|
||||
|
||||
|
||||
@@ -8,6 +8,7 @@ import {
|
||||
DialogTitle,
|
||||
InputAdornment,
|
||||
MenuItem,
|
||||
Snackbar,
|
||||
Stack,
|
||||
TextField,
|
||||
Typography,
|
||||
@@ -301,7 +302,14 @@ export const ManageProductsScreen = () => {
|
||||
Manage Products
|
||||
</Typography>
|
||||
<Stack spacing={2}>
|
||||
{feedback ? <Alert severity={feedback.severity}>{feedback.text}</Alert> : null}
|
||||
<Snackbar
|
||||
open={Boolean(feedback)}
|
||||
autoHideDuration={4000}
|
||||
onClose={() => setFeedback(null)}
|
||||
anchorOrigin={{ vertical: 'top', horizontal: 'center' }}
|
||||
>
|
||||
{feedback ? <Alert severity={feedback.severity}>{feedback.text}</Alert> : null}
|
||||
</Snackbar>
|
||||
<Button component={RouterLink} to="/categories" variant="outlined" sx={{ alignSelf: 'flex-start' }}>
|
||||
Edit Categories
|
||||
</Button>
|
||||
|
||||
Reference in New Issue
Block a user