mirror of
https://github.com/inventree/InvenTree
synced 2024-08-30 18:33:04 +00:00
* Add "ON_HOLD" status code for orders * Add placeholder buttons for purchase order status change * Adds hooks for introspecting status code enumerations * Refactor status codes for import session - Remove hard-coded values * Refactor into <PrimaryActionButton /> * Cleanup * more permission checks * Add placeholder actions for SalesOrder * Placeholder actions for ReturnOrder * Placeholder actions for build order * Actions for "return order" * Update actions for return order - Add "on hold" transition * Implement transitions for SalesOrder * Allow control over SalesOrderLineItemTable * Implement PurchaseOrder actions * Improve API query lookup efficiency * UI cleanup * CUI cleanup * Build Order Updates - Implement StateTransitionMixin for BuildOrder model - Add BuildIssue API endpoint - Add BuildHold API endpoint - API query improvements - PUI actions * Increase timeout * Bump API version * Fix API version * Fix sales order actions * Update src/backend/InvenTree/order/serializers.py Co-authored-by: Matthias Mair <code@mjmair.com> * Adjust build filters * PUI updates * CUI refactoring for purchase orders * Refactor CUI sales order page * Refactor for return order * Refactor CUI build page * Playwright tests for build order * Add playwright test for sales orders * Add playwright test for purchase orders * js linting * Refactor return order page * Add missing functions from previous commit * Fix for "on order" badge on PartDetail page * UI tweaks * Fix unit tests * Update version check script * Fix typo * Enforce integer conversion for BaseEnum class * Unit test updates - Includes improvement for equality comparison for enums * Update documentation --------- Co-authored-by: Matthias Mair <code@mjmair.com>
77 lines
3.0 KiB
TypeScript
77 lines
3.0 KiB
TypeScript
import { test } from '../baseFixtures.ts';
|
|
import { baseUrl } from '../defaults.ts';
|
|
import { doQuickLogin } from '../login.ts';
|
|
|
|
test('PUI - Pages - Build Order', async ({ page }) => {
|
|
await doQuickLogin(page);
|
|
|
|
await page.goto(`${baseUrl}/part/`);
|
|
|
|
// Navigate to the correct build order
|
|
await page.getByRole('tab', { name: 'Build', exact: true }).click();
|
|
|
|
// We have now loaded the "Build Order" table. Check for some expected texts
|
|
await page.getByText('On Hold').waitFor();
|
|
await page.getByText('Pending').first().waitFor();
|
|
|
|
// Load a particular build order
|
|
await page.getByRole('cell', { name: 'BO0017' }).click();
|
|
|
|
// This build order should be "on hold"
|
|
await page.getByText('On Hold').first().waitFor();
|
|
await page.getByRole('button', { name: 'Issue Order' }).click();
|
|
await page.getByRole('button', { name: 'Cancel' }).click();
|
|
|
|
// Back to the build list
|
|
await page.getByLabel('breadcrumb-0-build-orders').click();
|
|
|
|
// Load a different build order
|
|
await page.getByRole('cell', { name: 'BO0011' }).click();
|
|
|
|
// This build order should be "in production"
|
|
await page.getByText('Production').first().waitFor();
|
|
await page.getByRole('button', { name: 'Complete Order' }).click();
|
|
await page.getByText('Accept Unallocated').waitFor();
|
|
await page.getByRole('button', { name: 'Cancel' }).click();
|
|
|
|
// Check for other expected actions
|
|
await page.getByLabel('action-menu-build-order-').click();
|
|
await page.getByLabel('action-menu-build-order-actions-edit').waitFor();
|
|
await page.getByLabel('action-menu-build-order-actions-duplicate').waitFor();
|
|
await page.getByLabel('action-menu-build-order-actions-hold').waitFor();
|
|
await page.getByLabel('action-menu-build-order-actions-cancel').click();
|
|
await page.getByText('Remove Incomplete Outputs').waitFor();
|
|
await page.getByRole('button', { name: 'Cancel' }).click();
|
|
|
|
// Click on some tabs
|
|
await page.getByRole('tab', { name: 'Attachments' }).click();
|
|
await page.getByRole('tab', { name: 'Notes' }).click();
|
|
await page.getByRole('tab', { name: 'Incomplete Outputs' }).click();
|
|
await page.getByRole('tab', { name: 'Line Items' }).click();
|
|
await page.getByRole('tab', { name: 'Allocated Stock' }).click();
|
|
|
|
// Check for expected text in the table
|
|
await page.getByText('R_10R_0402_1%').waitFor();
|
|
await page
|
|
.getByRole('cell', { name: 'R38, R39, R40, R41, R42, R43' })
|
|
.waitFor();
|
|
|
|
// Check "test results"
|
|
await page.getByRole('tab', { name: 'Test Results' }).click();
|
|
await page.getByText('Quantity: 25').waitFor();
|
|
await page.getByText('Continuity Checks').waitFor();
|
|
await page
|
|
.getByRole('row', { name: 'Quantity: 16 No location set' })
|
|
.getByRole('button')
|
|
.hover();
|
|
await page.getByText('Add Test Result').waitFor();
|
|
|
|
// Click through to the "parent" build
|
|
await page.getByRole('tab', { name: 'Build Details' }).click();
|
|
await page.getByRole('link', { name: 'BO0010' }).click();
|
|
await page
|
|
.getByLabel('Build Details')
|
|
.getByText('Making a high level assembly')
|
|
.waitFor();
|
|
});
|