mirror of
				https://github.com/inventree/InvenTree.git
				synced 2025-10-31 13:15:43 +00:00 
			
		
		
		
	[PUI] Fix Build Output Forms (#8184)
* Enhancements for stock item form * Edit stock item from "build output" table * Rearrange menu items * Fix build order line complete action * Fix for other modals * Cleanup dead code * Reload build details after output state change * Logic fix for plugin table * Bump API version * Adds hook for generating placeholder serial numbers * Add playwright tests * Remove unused imports * Cleanup playwright tests
This commit is contained in:
		| @@ -81,3 +81,79 @@ test('PUI - Pages - Build Order', async ({ page }) => { | ||||
|     .getByText('Making a high level assembly') | ||||
|     .waitFor(); | ||||
| }); | ||||
|  | ||||
| test('PUI - Pages - Build Order - Build Outputs', 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').first().waitFor(); | ||||
|   await page.getByText('Pending').first().waitFor(); | ||||
|  | ||||
|   await page.getByRole('cell', { name: 'BO0011' }).click(); | ||||
|   await page.getByRole('tab', { name: 'Incomplete Outputs' }).click(); | ||||
|  | ||||
|   // Create a new build output | ||||
|   await page.getByLabel('action-button-add-build-output').click(); | ||||
|   await page.getByLabel('number-field-quantity').fill('5'); | ||||
|  | ||||
|   const placeholder = await page | ||||
|     .getByLabel('text-field-serial_numbers') | ||||
|     .getAttribute('placeholder'); | ||||
|  | ||||
|   let sn = 1; | ||||
|  | ||||
|   if (!!placeholder && placeholder.includes('Next serial number')) { | ||||
|     sn = parseInt(placeholder.split(':')[1].trim()); | ||||
|   } | ||||
|  | ||||
|   // Generate some new serial numbers | ||||
|   await page.getByLabel('text-field-serial_numbers').fill(`${sn}, ${sn + 1}`); | ||||
|  | ||||
|   await page.getByLabel('text-field-batch_code').fill('BATCH12345'); | ||||
|   await page.getByLabel('related-field-location').click(); | ||||
|   await page.getByText('Reel Storage').click(); | ||||
|   await page.getByRole('button', { name: 'Submit' }).click(); | ||||
|  | ||||
|   // Should be an error as the number of serial numbers doesn't match the quantity | ||||
|   await page.getByText('Errors exist for one or more').waitFor(); | ||||
|   await page.getByText('Number of unique serial').waitFor(); | ||||
|  | ||||
|   // Fix the quantity | ||||
|   await page.getByLabel('number-field-quantity').fill('2'); | ||||
|   await page.waitForTimeout(250); | ||||
|   await page.getByRole('button', { name: 'Submit' }).click(); | ||||
|  | ||||
|   // Check that new serial numbers have been created | ||||
|   await page | ||||
|     .getByRole('cell', { name: `# ${sn}` }) | ||||
|     .first() | ||||
|     .waitFor(); | ||||
|   await page | ||||
|     .getByRole('cell', { name: `# ${sn + 1}` }) | ||||
|     .first() | ||||
|     .waitFor(); | ||||
|  | ||||
|   // Cancel one of the newly created outputs | ||||
|   const cell = await page.getByRole('cell', { name: `# ${sn}` }); | ||||
|   const row = await cell.locator('xpath=ancestor::tr').first(); | ||||
|   await row.getByLabel(/row-action-menu-/i).click(); | ||||
|   await page.getByRole('menuitem', { name: 'Cancel' }).click(); | ||||
|   await page.getByRole('button', { name: 'Submit' }).click(); | ||||
|   await page.getByText('Build outputs have been cancelled').waitFor(); | ||||
|  | ||||
|   // Complete the other output | ||||
|   const cell2 = await page.getByRole('cell', { name: `# ${sn + 1}` }); | ||||
|   const row2 = await cell2.locator('xpath=ancestor::tr').first(); | ||||
|   await row2.getByLabel(/row-action-menu-/i).click(); | ||||
|   await page.getByRole('menuitem', { name: 'Complete' }).click(); | ||||
|   await page.getByLabel('related-field-location').click(); | ||||
|   await page.getByText('Mechanical Lab').click(); | ||||
|   await page.waitForTimeout(250); | ||||
|   await page.getByRole('button', { name: 'Submit' }).click(); | ||||
|   await page.getByText('Build outputs have been completed').waitFor(); | ||||
| }); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user