From 390fec3ab1e649b32cccbb5551f2c90af8ac2730 Mon Sep 17 00:00:00 2001 From: Oliver Date: Sat, 28 Sep 2024 13:33:31 +1000 Subject: [PATCH] [PUI] Form error fix (#8204) * Handle simple string error message * Add playwright test for form validation * Render stock unit price / total value * Fix for TextField: - Prevent unnecessary value change - This was removing the field error * Add playwright test for supplier form validation --- src/frontend/src/components/forms/ApiForm.tsx | 3 + .../src/components/forms/fields/TextField.tsx | 4 +- src/frontend/src/forms/StockForms.tsx | 3 + src/frontend/src/pages/stock/StockDetail.tsx | 31 ++++- src/frontend/tests/modals.spec.ts | 2 +- src/frontend/tests/pages/pui_build.spec.ts | 4 +- src/frontend/tests/pages/pui_index.spec.ts | 4 +- src/frontend/tests/pages/pui_orders.spec.ts | 6 +- src/frontend/tests/pages/pui_part.spec.ts | 22 +-- src/frontend/tests/pages/pui_scan.spec.ts | 16 +-- src/frontend/tests/pui_basic.spec.ts | 4 +- src/frontend/tests/pui_command.spec.ts | 4 +- src/frontend/tests/pui_forms.spec.ts | 127 ++++++++++++++++++ src/frontend/tests/pui_general.spec.ts | 14 +- src/frontend/tests/pui_printing.spec.ts | 6 +- src/frontend/tests/pui_settings.spec.ts | 6 +- src/frontend/tests/pui_stock.spec.ts | 6 +- src/frontend/tests/pui_tables.spec.ts | 4 +- 18 files changed, 214 insertions(+), 52 deletions(-) create mode 100644 src/frontend/tests/pui_forms.spec.ts diff --git a/src/frontend/src/components/forms/ApiForm.tsx b/src/frontend/src/components/forms/ApiForm.tsx index bf600a5fae..6f733ba89b 100644 --- a/src/frontend/src/components/forms/ApiForm.tsx +++ b/src/frontend/src/components/forms/ApiForm.tsx @@ -521,6 +521,8 @@ export function ApiForm({ // Standard error handling for other fields form.setError(path, { message: v.join(', ') }); } + } else if (typeof v === 'string') { + form.setError(path, { message: v }); } else { processErrors(v, path); } @@ -529,6 +531,7 @@ export function ApiForm({ processErrors(error.response.data); setNonFieldErrors(_nonFieldErrors); + break; default: // Unexpected state on form error diff --git a/src/frontend/src/components/forms/fields/TextField.tsx b/src/frontend/src/components/forms/fields/TextField.tsx index 5e22e2290e..a3fe160c09 100644 --- a/src/frontend/src/components/forms/fields/TextField.tsx +++ b/src/frontend/src/components/forms/fields/TextField.tsx @@ -60,7 +60,9 @@ export default function TextField({ radius="sm" onChange={(event) => onTextChange(event.currentTarget.value)} onBlur={(event) => { - onChange(event.currentTarget.value); + if (event.currentTarget.value != value) { + onChange(event.currentTarget.value); + } }} onKeyDown={(event) => onKeyDown(event.code)} rightSection={ diff --git a/src/frontend/src/forms/StockForms.tsx b/src/frontend/src/forms/StockForms.tsx index 899e598b51..12b023ecaf 100644 --- a/src/frontend/src/forms/StockForms.tsx +++ b/src/frontend/src/forms/StockForms.tsx @@ -83,6 +83,9 @@ export function useStockFields({ part: { value: part, disabled: !create, + filters: { + active: create ? true : undefined + }, onValueChange: (value, record) => { setPart(value); // TODO: implement remaining functionality from old stock.py diff --git a/src/frontend/src/pages/stock/StockDetail.tsx b/src/frontend/src/pages/stock/StockDetail.tsx index 5f506a579b..cdcc3671e5 100644 --- a/src/frontend/src/pages/stock/StockDetail.tsx +++ b/src/frontend/src/pages/stock/StockDetail.tsx @@ -38,6 +38,7 @@ import { PageDetail } from '../../components/nav/PageDetail'; import { PanelType } from '../../components/nav/Panel'; import { PanelGroup } from '../../components/nav/PanelGroup'; import { StatusRenderer } from '../../components/render/StatusRenderer'; +import { formatCurrency } from '../../defaults/formatters'; import { ApiEndpoints } from '../../enums/ApiEndpoints'; import { ModelType } from '../../enums/ModelType'; import { UserRoles } from '../../enums/Roles'; @@ -179,8 +180,6 @@ export default function StockDetail() { label: t`Batch Code`, hidden: !stockitem.batch } - // TODO: allocated_to_sales_orders - // TODO: allocated_to_build_orders ]; // Bottom left: location information @@ -264,6 +263,34 @@ export default function StockDetail() { let br: DetailsField[] = [ // TODO: Expiry date // TODO: Ownership + { + type: 'text', + name: 'purchase_price', + label: t`Unit Price`, + icon: 'currency', + hidden: !stockitem.purchase_price, + value_formatter: () => { + return formatCurrency(stockitem.purchase_price, { + currency: stockitem.purchase_price_currency + }); + } + }, + { + type: 'text', + name: 'stock_value', + label: t`Stock Value`, + icon: 'currency', + hidden: + !stockitem.purchase_price || + stockitem.quantity == 1 || + stockitem.quantity == 0, + value_formatter: () => { + return formatCurrency(stockitem.purchase_price, { + currency: stockitem.purchase_price_currency, + multiplier: stockitem.quantity + }); + } + }, { type: 'text', name: 'packaging', diff --git a/src/frontend/tests/modals.spec.ts b/src/frontend/tests/modals.spec.ts index ff091ab9bf..406accc94d 100644 --- a/src/frontend/tests/modals.spec.ts +++ b/src/frontend/tests/modals.spec.ts @@ -1,7 +1,7 @@ import { test } from './baseFixtures.js'; import { doQuickLogin } from './login.js'; -test('PUI - Modals as admin', async ({ page }) => { +test('Modals as admin', async ({ page }) => { await doQuickLogin(page, 'admin', 'inventree'); // use server info diff --git a/src/frontend/tests/pages/pui_build.spec.ts b/src/frontend/tests/pages/pui_build.spec.ts index 59a6397d5b..0239e50a70 100644 --- a/src/frontend/tests/pages/pui_build.spec.ts +++ b/src/frontend/tests/pages/pui_build.spec.ts @@ -2,7 +2,7 @@ import { test } from '../baseFixtures.ts'; import { baseUrl } from '../defaults.ts'; import { doQuickLogin } from '../login.ts'; -test('PUI - Pages - Build Order', async ({ page }) => { +test('Pages - Build Order', async ({ page }) => { await doQuickLogin(page); await page.goto(`${baseUrl}/part/`); @@ -82,7 +82,7 @@ test('PUI - Pages - Build Order', async ({ page }) => { .waitFor(); }); -test('PUI - Pages - Build Order - Build Outputs', async ({ page }) => { +test('Pages - Build Order - Build Outputs', async ({ page }) => { await doQuickLogin(page); await page.goto(`${baseUrl}/part/`); diff --git a/src/frontend/tests/pages/pui_index.spec.ts b/src/frontend/tests/pages/pui_index.spec.ts index 9767e98991..03cda47b6b 100644 --- a/src/frontend/tests/pages/pui_index.spec.ts +++ b/src/frontend/tests/pages/pui_index.spec.ts @@ -3,7 +3,7 @@ import { doQuickLogin } from '../login.js'; const newPartName = 'UITESTIN123'; -test('PUI - Pages - Index - Playground', async ({ page }) => { +test('Pages - Index - Playground', async ({ page }) => { await doQuickLogin(page); await page.goto('./'); @@ -72,7 +72,7 @@ test('PUI - Pages - Index - Playground', async ({ page }) => { await page.getByText('Attention needed').waitFor(); }); -test('PUI - Pages - Index - Dashboard', async ({ page }) => { +test('Pages - Index - Dashboard', async ({ page }) => { await doQuickLogin(page); // Dashboard auto update diff --git a/src/frontend/tests/pages/pui_orders.spec.ts b/src/frontend/tests/pages/pui_orders.spec.ts index f23a2f6b0f..e5780163e8 100644 --- a/src/frontend/tests/pages/pui_orders.spec.ts +++ b/src/frontend/tests/pages/pui_orders.spec.ts @@ -2,7 +2,7 @@ import { test } from '../baseFixtures.ts'; import { baseUrl } from '../defaults.ts'; import { doQuickLogin } from '../login.ts'; -test('PUI - Sales Orders', async ({ page }) => { +test('Sales Orders', async ({ page }) => { await doQuickLogin(page); await page.goto(`${baseUrl}/home`); @@ -41,7 +41,7 @@ test('PUI - Sales Orders', async ({ page }) => { await page.getByRole('button', { name: 'Issue Order' }).waitFor(); }); -test('PUI - Purchase Orders', async ({ page }) => { +test('Purchase Orders', async ({ page }) => { await doQuickLogin(page); await page.goto(`${baseUrl}/home`); @@ -61,7 +61,7 @@ test('PUI - Purchase Orders', async ({ page }) => { await page.getByRole('button', { name: 'Issue Order' }).waitFor(); }); -test('PUI - Purchase Orders - Barcodes', async ({ page }) => { +test('Purchase Orders - Barcodes', async ({ page }) => { await doQuickLogin(page); await page.goto(`${baseUrl}/purchasing/purchase-order/13/detail`); diff --git a/src/frontend/tests/pages/pui_part.spec.ts b/src/frontend/tests/pages/pui_part.spec.ts index 9bc68816fc..1ebe8ad64c 100644 --- a/src/frontend/tests/pages/pui_part.spec.ts +++ b/src/frontend/tests/pages/pui_part.spec.ts @@ -2,7 +2,7 @@ import { test } from '../baseFixtures'; import { baseUrl } from '../defaults'; import { doQuickLogin } from '../login'; -test('PUI - Pages - Part - Locking', async ({ page }) => { +test('Pages - Part - Locking', async ({ page }) => { await doQuickLogin(page); // Navigate to a known assembly which is *not* locked @@ -23,7 +23,7 @@ test('PUI - Pages - Part - Locking', async ({ page }) => { await page.getByText('Part parameters cannot be').waitFor(); }); -test('PUI - Pages - Part - Pricing (Nothing, BOM)', async ({ page }) => { +test('Pages - Part - Pricing (Nothing, BOM)', async ({ page }) => { await doQuickLogin(page); // Part with no history @@ -72,7 +72,7 @@ test('PUI - Pages - Part - Pricing (Nothing, BOM)', async ({ page }) => { await page.waitForURL('**/part/98/**'); }); -test('PUI - Pages - Part - Pricing (Supplier)', async ({ page }) => { +test('Pages - Part - Pricing (Supplier)', async ({ page }) => { await doQuickLogin(page); // Part @@ -98,7 +98,7 @@ test('PUI - Pages - Part - Pricing (Supplier)', async ({ page }) => { // await page.waitForURL('**/purchasing/supplier-part/697/'); }); -test('PUI - Pages - Part - Pricing (Variant)', async ({ page }) => { +test('Pages - Part - Pricing (Variant)', async ({ page }) => { await doQuickLogin(page); // Part @@ -124,7 +124,7 @@ test('PUI - Pages - Part - Pricing (Variant)', async ({ page }) => { await page.waitForURL('**/part/109/**'); }); -test('PUI - Pages - Part - Pricing (Internal)', async ({ page }) => { +test('Pages - Part - Pricing (Internal)', async ({ page }) => { await doQuickLogin(page); // Part @@ -149,7 +149,7 @@ test('PUI - Pages - Part - Pricing (Internal)', async ({ page }) => { await page.getByText('Part *M2x4 SHCSSocket head').click(); }); -test('PUI - Pages - Part - Pricing (Purchase)', async ({ page }) => { +test('Pages - Part - Pricing (Purchase)', async ({ page }) => { await doQuickLogin(page); // Part @@ -171,7 +171,7 @@ test('PUI - Pages - Part - Pricing (Purchase)', async ({ page }) => { await page.getByText('2022-04-29').waitFor(); }); -test('PUI - Pages - Part - Attachments', async ({ page }) => { +test('Pages - Part - Attachments', async ({ page }) => { await doQuickLogin(page); await page.goto(`${baseUrl}/part/69/attachments`); @@ -193,7 +193,7 @@ test('PUI - Pages - Part - Attachments', async ({ page }) => { await page.getByRole('button', { name: 'Cancel' }).click(); }); -test('PUI - Pages - Part - Parameters', async ({ page }) => { +test('Pages - Part - Parameters', async ({ page }) => { await doQuickLogin(page); await page.goto(`${baseUrl}/part/69/parameters`); @@ -220,7 +220,7 @@ test('PUI - Pages - Part - Parameters', async ({ page }) => { await page.getByRole('button', { name: 'Cancel' }).click(); }); -test('PUI - Pages - Part - Notes', async ({ page }) => { +test('Pages - Part - Notes', async ({ page }) => { await doQuickLogin(page); await page.goto(`${baseUrl}/part/69/notes`); @@ -241,7 +241,7 @@ test('PUI - Pages - Part - Notes', async ({ page }) => { await page.getByLabel('Save Notes').waitFor(); }); -test('PUI - Pages - Part - 404', async ({ page }) => { +test('Pages - Part - 404', async ({ page }) => { await doQuickLogin(page); await page.goto(`${baseUrl}/part/99999/`); @@ -251,7 +251,7 @@ test('PUI - Pages - Part - 404', async ({ page }) => { await page.evaluate(() => console.clear()); }); -test('PUI - Pages - Part - Revision', async ({ page }) => { +test('Pages - Part - Revision', async ({ page }) => { await doQuickLogin(page); await page.goto(`${baseUrl}/part/906/details`); diff --git a/src/frontend/tests/pages/pui_scan.spec.ts b/src/frontend/tests/pages/pui_scan.spec.ts index 78bfdfb419..85d2a6c4a5 100644 --- a/src/frontend/tests/pages/pui_scan.spec.ts +++ b/src/frontend/tests/pages/pui_scan.spec.ts @@ -24,7 +24,7 @@ async function defaultScanTest(page, search_text) { await page.getByRole('button', { name: 'Lookup part' }).click(); } -test('PUI - Pages - Index - Scan (Part)', async ({ page }) => { +test('Pages - Index - Scan (Part)', async ({ page }) => { await defaultScanTest(page, '{"part": 1}'); // part: 1 @@ -33,7 +33,7 @@ test('PUI - Pages - Index - Scan (Part)', async ({ page }) => { await page.getByRole('cell', { name: 'part' }).waitFor(); }); -test('PUI - Pages - Index - Scan (Stockitem)', async ({ page }) => { +test('Pages - Index - Scan (Stockitem)', async ({ page }) => { await defaultScanTest(page, '{"stockitem": 408}'); // stockitem: 408 @@ -42,7 +42,7 @@ test('PUI - Pages - Index - Scan (Stockitem)', async ({ page }) => { await page.getByRole('cell', { name: 'Quantity: 100' }).waitFor(); }); -test('PUI - Pages - Index - Scan (StockLocation)', async ({ page }) => { +test('Pages - Index - Scan (StockLocation)', async ({ page }) => { await defaultScanTest(page, '{"stocklocation": 3}'); // stocklocation: 3 @@ -51,7 +51,7 @@ test('PUI - Pages - Index - Scan (StockLocation)', async ({ page }) => { await page.getByRole('cell', { name: 'stocklocation' }).waitFor(); }); -test('PUI - Pages - Index - Scan (SupplierPart)', async ({ page }) => { +test('Pages - Index - Scan (SupplierPart)', async ({ page }) => { await defaultScanTest(page, '{"supplierpart": 204}'); // supplierpart: 204 @@ -60,7 +60,7 @@ test('PUI - Pages - Index - Scan (SupplierPart)', async ({ page }) => { await page.getByRole('cell', { name: 'supplierpart' }).waitFor(); }); -test('PUI - Pages - Index - Scan (PurchaseOrder)', async ({ page }) => { +test('Pages - Index - Scan (PurchaseOrder)', async ({ page }) => { await defaultScanTest(page, '{"purchaseorder": 12}'); // purchaseorder: 12 @@ -69,7 +69,7 @@ test('PUI - Pages - Index - Scan (PurchaseOrder)', async ({ page }) => { await page.getByRole('cell', { name: 'purchaseorder' }).waitFor(); }); -test('PUI - Pages - Index - Scan (SalesOrder)', async ({ page }) => { +test('Pages - Index - Scan (SalesOrder)', async ({ page }) => { await defaultScanTest(page, '{"salesorder": 6}'); // salesorder: 6 @@ -78,7 +78,7 @@ test('PUI - Pages - Index - Scan (SalesOrder)', async ({ page }) => { await page.getByRole('cell', { name: 'salesorder' }).waitFor(); }); -test('PUI - Pages - Index - Scan (Build)', async ({ page }) => { +test('Pages - Index - Scan (Build)', async ({ page }) => { await defaultScanTest(page, '{"build": 8}'); // build: 8 @@ -87,7 +87,7 @@ test('PUI - Pages - Index - Scan (Build)', async ({ page }) => { await page.getByRole('cell', { name: 'build', exact: true }).waitFor(); }); -test('PUI - Pages - Index - Scan (General)', async ({ page }) => { +test('Pages - Index - Scan (General)', async ({ page }) => { await defaultScanTest(page, '{"unknown": 312}'); await page.getByText('"unknown": 312').waitFor(); diff --git a/src/frontend/tests/pui_basic.spec.ts b/src/frontend/tests/pui_basic.spec.ts index 38534fbb92..c5d0d7c7d7 100644 --- a/src/frontend/tests/pui_basic.spec.ts +++ b/src/frontend/tests/pui_basic.spec.ts @@ -2,7 +2,7 @@ import { expect, test } from './baseFixtures.js'; import { baseUrl, user } from './defaults.js'; import { doLogin, doQuickLogin } from './login.js'; -test('PUI - Basic Login Test', async ({ page }) => { +test('Basic Login Test', async ({ page }) => { await doLogin(page); // Check that the username is provided @@ -35,7 +35,7 @@ test('PUI - Basic Login Test', async ({ page }) => { await page.getByLabel('username'); }); -test('PUI - Quick Login Test', async ({ page }) => { +test('Quick Login Test', async ({ page }) => { await doQuickLogin(page); // Check that the username is provided diff --git a/src/frontend/tests/pui_command.spec.ts b/src/frontend/tests/pui_command.spec.ts index 31773163a2..91ba60e795 100644 --- a/src/frontend/tests/pui_command.spec.ts +++ b/src/frontend/tests/pui_command.spec.ts @@ -2,7 +2,7 @@ import { systemKey, test } from './baseFixtures.js'; import { baseUrl } from './defaults.js'; import { doQuickLogin } from './login.js'; -test('PUI - Quick Command', async ({ page }) => { +test('Quick Command', async ({ page }) => { await doQuickLogin(page); // Open Spotlight with Keyboard Shortcut @@ -31,7 +31,7 @@ test('PUI - Quick Command', async ({ page }) => { await page.waitForURL('**/platform/dashboard'); }); -test('PUI - Quick Command - No Keys', async ({ page }) => { +test('Quick Command - No Keys', async ({ page }) => { await doQuickLogin(page); // Open Spotlight with Button diff --git a/src/frontend/tests/pui_forms.spec.ts b/src/frontend/tests/pui_forms.spec.ts new file mode 100644 index 0000000000..9512f4d0b0 --- /dev/null +++ b/src/frontend/tests/pui_forms.spec.ts @@ -0,0 +1,127 @@ +/** Unit tests for form validation, rendering, etc */ +import test from 'playwright/test'; + +import { baseUrl } from './defaults'; +import { doQuickLogin } from './login'; + +test('Forms - Stock Item Validation', async ({ page }) => { + await doQuickLogin(page, 'steven', 'wizardstaff'); + await page.goto(`${baseUrl}/stock/location/index/stock-items`); + await page.waitForURL('**/platform/stock/location/**'); + + // Create new stock item form + await page.getByLabel('action-button-add-stock-item').click(); + await page.getByRole('button', { name: 'Submit' }).click(); + + // Check for validation errors + await page.getByText('Form Error').waitFor(); + await page.getByText('Errors exist for one or more form fields').waitFor(); + await page.getByText('Valid part must be supplied').waitFor(); + + // Adjust other field - the errors should persist + await page.getByLabel('text-field-batch').fill('BATCH-123'); + await page.waitForTimeout(250); + + await page.getByText('Valid part must be supplied').waitFor(); + + // Fill out fields + await page.getByLabel('number-field-quantity').fill('-1'); + await page.getByLabel('related-field-part').click(); + await page.getByRole('option', { name: /1551AGY/ }).click(); + await page.getByRole('button', { name: 'Submit' }).click(); + + // Check for validation errors + await page.getByText('Errors exist for one or more form fields').waitFor(); + await page + .getByText(/Ensure this value is greater than or equal to 0/) + .first() + .waitFor(); + + // Set location + await page.getByLabel('related-field-location').click(); + await page.getByRole('option', { name: /Electronics Lab/ }).click(); + + // Create the stock item + await page.getByLabel('number-field-quantity').fill('123'); + await page.getByRole('button', { name: 'Submit' }).click(); + + // Edit the resulting stock item + await page.getByLabel('action-menu-stock-item-actions').click(); + await page.getByLabel('action-menu-stock-item-actions-edit').click(); + + await page.getByLabel('number-field-purchase_price').fill('-1'); + await page.getByRole('button', { name: 'Submit' }).click(); + await page.getByText('Errors exist for one or more form fields').waitFor(); + await page + .getByText('Ensure this value is greater than or equal to 0') + .waitFor(); + + // Check the error message still persists after editing a different field + await page.getByLabel('text-field-packaging').fill('a box'); + await page.waitForTimeout(250); + await page + .getByText('Ensure this value is greater than or equal to 0') + .waitFor(); + + // Correct the price + await page.getByLabel('number-field-purchase_price').fill('1.2345'); + await page.getByRole('button', { name: 'Submit' }).click(); + await page.getByText('Item Updated').waitFor(); + + // Ensure the stock item has been updated correctly + await page.getByText('$151.8435').waitFor(); + await page.getByText('$151.8435').waitFor(); + await page.getByText('a box').waitFor(); + await page.getByRole('cell', { name: 'Electronics Lab' }).waitFor(); +}); + +test('Forms - Supplier Validation', async ({ page, request }) => { + await doQuickLogin(page, 'steven', 'wizardstaff'); + await page.goto(`${baseUrl}/purchasing/index/suppliers`); + await page.waitForURL('**/purchasing/index/**'); + + await page.getByLabel('action-button-add-company').click(); + await page.getByLabel('text-field-website').fill('not-a-website'); + + await page.getByRole('button', { name: 'Submit' }).click(); + + // Check for validation errors + await page.getByText('Form Error').waitFor(); + await page.getByText('Errors exist for one or more').waitFor(); + await page.getByText('This field may not be blank.').waitFor(); + await page.getByText('Enter a valid URL.').waitFor(); + + // Fill out another field, expect that the errors persist + await page.getByLabel('text-field-description').fill('A description'); + await page.waitForTimeout(250); + await page.getByText('This field may not be blank.').waitFor(); + await page.getByText('Enter a valid URL.').waitFor(); + + // Generate a unique supplier name + const supplierName = `Supplier ${new Date().getTime()}`; + + // Fill with good data + await page + .getByLabel('text-field-website') + .fill('https://www.test-website.co.uk'); + await page.getByLabel('text-field-name').fill(supplierName); + await page.getByRole('button', { name: 'Submit' }).click(); + + await page.getByText(supplierName).waitFor(); + await page + .getByRole('link', { name: 'https://www.test-website.co.uk' }) + .waitFor(); + + // Now, try to create another new supplier with the same name + await page.goto(`${baseUrl}/purchasing/index/suppliers`); + await page.waitForURL('**/purchasing/index/**'); + await page.getByLabel('action-button-add-company').click(); + await page.getByLabel('text-field-name').fill(supplierName); + await page.getByRole('button', { name: 'Submit' }).click(); + + // Is prevented, due to uniqueness requirements + await page + .getByText('Company with this Company name and Email already exists') + .waitFor(); + await page.getByRole('button', { name: 'Cancel' }).click(); +}); diff --git a/src/frontend/tests/pui_general.spec.ts b/src/frontend/tests/pui_general.spec.ts index 5ab8a6b05a..2c3243f300 100644 --- a/src/frontend/tests/pui_general.spec.ts +++ b/src/frontend/tests/pui_general.spec.ts @@ -2,7 +2,7 @@ import { test } from './baseFixtures.js'; import { baseUrl } from './defaults.js'; import { doQuickLogin } from './login.js'; -test('PUI - Parts', async ({ page }) => { +test('Parts', async ({ page }) => { await doQuickLogin(page); await page.goto(`${baseUrl}/home`); @@ -42,7 +42,7 @@ test('PUI - Parts', async ({ page }) => { await page.getByRole('tab', { name: 'Build Orders' }).click(); }); -test('PUI - Parts - Manufacturer Parts', async ({ page }) => { +test('Parts - Manufacturer Parts', async ({ page }) => { await doQuickLogin(page); await page.goto(`${baseUrl}/part/84/manufacturers`); @@ -55,7 +55,7 @@ test('PUI - Parts - Manufacturer Parts', async ({ page }) => { await page.getByText('1551ACLR - 1551ACLR').waitFor(); }); -test('PUI - Parts - Supplier Parts', async ({ page }) => { +test('Parts - Supplier Parts', async ({ page }) => { await doQuickLogin(page); await page.goto(`${baseUrl}/part/15/suppliers`); @@ -68,7 +68,7 @@ test('PUI - Parts - Supplier Parts', async ({ page }) => { await page.getByText('DIG-84670-SJI - R_550R_0805_1%').waitFor(); }); -test('PUI - Sales', async ({ page }) => { +test('Sales', async ({ page }) => { await doQuickLogin(page); await page.goto(`${baseUrl}/sales/index/`); @@ -119,7 +119,7 @@ test('PUI - Sales', async ({ page }) => { await page.getByRole('tab', { name: 'Notes' }).click(); }); -test('PUI - Scanning', async ({ page }) => { +test('Scanning', async ({ page }) => { await doQuickLogin(page); await page.getByLabel('Homenav').click(); @@ -140,7 +140,7 @@ test('PUI - Scanning', async ({ page }) => { await page.getByRole('option', { name: 'Manual input' }).click(); }); -test('PUI - Language / Color', async ({ page }) => { +test('Language / Color', async ({ page }) => { await doQuickLogin(page); await page.getByRole('button', { name: 'Ally Access' }).click(); @@ -174,7 +174,7 @@ test('PUI - Language / Color', async ({ page }) => { await page.waitForURL('**/platform/dashboard'); }); -test('PUI - Company', async ({ page }) => { +test('Company', async ({ page }) => { await doQuickLogin(page); await page.goto(`${baseUrl}/company/1/details`); diff --git a/src/frontend/tests/pui_printing.spec.ts b/src/frontend/tests/pui_printing.spec.ts index dedd547baf..68645442d5 100644 --- a/src/frontend/tests/pui_printing.spec.ts +++ b/src/frontend/tests/pui_printing.spec.ts @@ -8,7 +8,7 @@ import { setPluginState } from './settings.js'; * Select a number of stock items from the table, * and print labels against them */ -test('PUI - Label Printing', async ({ page }) => { +test('Label Printing', async ({ page }) => { await doQuickLogin(page); await page.goto(`${baseUrl}/stock/location/index/`); @@ -52,7 +52,7 @@ test('PUI - Label Printing', async ({ page }) => { * Navigate to a PurchaseOrder detail page, * and print a report against it. */ -test('PUI - Report Printing', async ({ page }) => { +test('Report Printing', async ({ page }) => { await doQuickLogin(page); await page.goto(`${baseUrl}/stock/location/index/`); @@ -82,7 +82,7 @@ test('PUI - Report Printing', async ({ page }) => { await page.context().close(); }); -test('PUI - Report Editing', async ({ page, request }) => { +test('Report Editing', async ({ page, request }) => { const [username, password] = ['admin', 'inventree']; await doQuickLogin(page, username, password); diff --git a/src/frontend/tests/pui_settings.spec.ts b/src/frontend/tests/pui_settings.spec.ts index 92c02b049d..7e216f478d 100644 --- a/src/frontend/tests/pui_settings.spec.ts +++ b/src/frontend/tests/pui_settings.spec.ts @@ -3,7 +3,7 @@ import { apiUrl, baseUrl } from './defaults.js'; import { doQuickLogin } from './login.js'; import { setSettingState } from './settings.js'; -test('PUI - Admin', async ({ page }) => { +test('Admin', async ({ page }) => { // Note here we login with admin access await doQuickLogin(page, 'admin', 'inventree'); @@ -86,7 +86,7 @@ test('PUI - Admin', async ({ page }) => { await page.getByRole('button', { name: 'Submit' }).click(); }); -test('PUI - Admin - Barcode History', async ({ page, request }) => { +test('Admin - Barcode History', async ({ page, request }) => { // Login with admin credentials await doQuickLogin(page, 'admin', 'inventree'); @@ -123,7 +123,7 @@ test('PUI - Admin - Barcode History', async ({ page, request }) => { }); }); -test('PUI - Admin - Unauthorized', async ({ page }) => { +test('Admin - Unauthorized', async ({ page }) => { // Try to access "admin" page with a non-staff user await doQuickLogin(page, 'allaccess', 'nolimits'); diff --git a/src/frontend/tests/pui_stock.spec.ts b/src/frontend/tests/pui_stock.spec.ts index 847050aed9..d20b12cfa0 100644 --- a/src/frontend/tests/pui_stock.spec.ts +++ b/src/frontend/tests/pui_stock.spec.ts @@ -2,7 +2,7 @@ import { test } from './baseFixtures.js'; import { baseUrl } from './defaults.js'; import { doQuickLogin } from './login.js'; -test('PUI - Stock', async ({ page }) => { +test('Stock', async ({ page }) => { await doQuickLogin(page); await page.goto(`${baseUrl}/stock/location/index/`); @@ -32,7 +32,7 @@ test('PUI - Stock', async ({ page }) => { await page.getByRole('tab', { name: 'Installed Items' }).click(); }); -test('PUI - Purchasing', async ({ page }) => { +test('Purchasing', async ({ page }) => { await doQuickLogin(page); await page.getByRole('tab', { name: 'Purchasing' }).click(); @@ -82,7 +82,7 @@ test('PUI - Purchasing', async ({ page }) => { await page.getByRole('tab', { name: 'Details' }).waitFor(); }); -test('PUI - Stock Location Tree', async ({ page }) => { +test('Stock Location Tree', async ({ page }) => { await doQuickLogin(page); await page.goto(`${baseUrl}/stock/location/index/`); diff --git a/src/frontend/tests/pui_tables.spec.ts b/src/frontend/tests/pui_tables.spec.ts index de16429912..3d62974e5d 100644 --- a/src/frontend/tests/pui_tables.spec.ts +++ b/src/frontend/tests/pui_tables.spec.ts @@ -20,7 +20,7 @@ const clearFilters = async (page) => { await page.getByLabel('filter-drawer-close').click(); }; -test('PUI - Tables - Filters', async ({ page }) => { +test('Tables - Filters', async ({ page }) => { await doQuickLogin(page); // Head to the "build order list" page @@ -50,7 +50,7 @@ test('PUI - Tables - Filters', async ({ page }) => { await clearFilters(page); }); -test('PUI - Tables - Columns', async ({ page }) => { +test('Tables - Columns', async ({ page }) => { await doQuickLogin(page); // Go to the "stock list" page