mirror of
https://github.com/inventree/InvenTree.git
synced 2025-04-28 03:26:45 +00:00
[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
This commit is contained in:
parent
e6470ffdea
commit
390fec3ab1
@ -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
|
||||
|
@ -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={
|
||||
|
@ -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
|
||||
|
@ -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',
|
||||
|
@ -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
|
||||
|
@ -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/`);
|
||||
|
@ -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
|
||||
|
@ -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`);
|
||||
|
@ -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`);
|
||||
|
@ -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();
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
127
src/frontend/tests/pui_forms.spec.ts
Normal file
127
src/frontend/tests/pui_forms.spec.ts
Normal file
@ -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();
|
||||
});
|
@ -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`);
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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');
|
||||
|
||||
|
@ -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/`);
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user