mirror of
https://github.com/inventree/InvenTree.git
synced 2025-11-14 03:46:44 +00:00
* Enhance playwright test * Update zustand * Fix machine settings * Fix for PluginSettingList * Fix user plugin settings * Fix issue in RelatedModelField * Enforce values when rebuilding a form * Update react-hook-form * Enhanced playwright testing
133 lines
4.4 KiB
TypeScript
133 lines
4.4 KiB
TypeScript
import test from 'playwright/test';
|
|
import { clickOnRowMenu, navigate } from './helpers';
|
|
import { doCachedLogin } from './login';
|
|
import { setPluginState } from './settings';
|
|
|
|
test('Machines - Admin Panel', async ({ browser }) => {
|
|
const page = await doCachedLogin(browser, {
|
|
username: 'admin',
|
|
password: 'inventree',
|
|
url: 'settings/admin/machine'
|
|
});
|
|
|
|
await page.getByRole('button', { name: 'Machines' }).click();
|
|
await page.getByRole('button', { name: 'Machine Drivers' }).click();
|
|
await page.getByRole('button', { name: 'Machine Types' }).click();
|
|
await page.getByRole('button', { name: 'Machine Errors' }).click();
|
|
|
|
await page.getByText('There are no machine registry errors').waitFor();
|
|
});
|
|
|
|
test('Machines - Activation', async ({ browser, request }) => {
|
|
const page = await doCachedLogin(browser, {
|
|
username: 'admin',
|
|
password: 'inventree',
|
|
url: 'settings/admin/machine'
|
|
});
|
|
|
|
// Ensure that the sample machine plugin is enabled
|
|
await setPluginState({
|
|
request,
|
|
plugin: 'sample-printer-machine-plugin',
|
|
state: true
|
|
});
|
|
|
|
await page.reload();
|
|
await page.waitForLoadState('networkidle');
|
|
await page.waitForTimeout(1000);
|
|
|
|
// Create machine config if it does not already exist
|
|
const exists: boolean = await page
|
|
.getByRole('cell', { name: 'my-dummy-machine' })
|
|
.isVisible({ timeout: 250 });
|
|
|
|
if (!exists) {
|
|
await page
|
|
.getByRole('button', { name: 'action-button-add-machine' })
|
|
.click();
|
|
await page
|
|
.getByRole('textbox', { name: 'text-field-name' })
|
|
.fill('my-dummy-machine');
|
|
await page
|
|
.getByRole('textbox', { name: 'choice-field-machine_type' })
|
|
.fill('label');
|
|
await page.getByRole('option', { name: 'Label Printer' }).click();
|
|
|
|
await page.getByRole('textbox', { name: 'choice-field-driver' }).click();
|
|
await page
|
|
.getByRole('option', { name: 'Sample Label Printer Driver' })
|
|
.click();
|
|
await page.getByRole('button', { name: 'Submit' }).click();
|
|
} else {
|
|
// Machine already exists - just click on it to open the "machine drawer"
|
|
await page.getByRole('cell', { name: 'my-dummy-machine' }).click();
|
|
}
|
|
|
|
// Creating the new machine opens the "machine drawer"
|
|
|
|
// Check for "machine type" settings
|
|
await page.getByText('Scope the printer to a specific location').waitFor();
|
|
|
|
// Check for "machine driver" settings
|
|
await page.getByText('Custom string for connecting').waitFor();
|
|
|
|
// Edit the available setting
|
|
await page.getByRole('button', { name: 'edit-setting-CONNECTION' }).click();
|
|
|
|
const setting_value = await page
|
|
.getByRole('textbox', { name: 'text-field-value' })
|
|
.inputValue();
|
|
|
|
await page
|
|
.getByRole('textbox', { name: 'text-field-value' })
|
|
.fill(`${setting_value}-2`);
|
|
await page.getByRole('button', { name: 'Submit' }).click();
|
|
await page.getByText('Setting CONNECTION updated successfully').waitFor();
|
|
|
|
// Close the drawer
|
|
await page.getByRole('banner').getByRole('button').first().click();
|
|
const cell = await page.getByRole('cell', { name: 'my-dummy-machine' });
|
|
|
|
// Let's restart the machine now
|
|
await clickOnRowMenu(cell);
|
|
await page.getByRole('menuitem', { name: 'Edit' }).waitFor();
|
|
await page.getByRole('menuitem', { name: 'Restart' }).click();
|
|
await page.getByText('Machine restarted').waitFor();
|
|
|
|
// Let's print something with the machine
|
|
await navigate(page, 'stock/location/1/stock-items');
|
|
|
|
await page.getByRole('checkbox', { name: 'Select all records' }).click();
|
|
await page
|
|
.getByRole('tabpanel', { name: 'Stock Items' })
|
|
.getByLabel('action-menu-printing-actions')
|
|
.click();
|
|
await page
|
|
.getByRole('menuitem', {
|
|
name: 'action-menu-printing-actions-print-labels'
|
|
})
|
|
.click();
|
|
|
|
await page.getByLabel('related-field-plugin').fill('machine');
|
|
await page.getByText('InvenTreeLabelMachine').click();
|
|
|
|
await page
|
|
.getByRole('textbox', { name: 'choice-field-machine' })
|
|
.fill('dummy');
|
|
await page.getByRole('option', { name: 'my-dummy-machine' }).click();
|
|
|
|
await page
|
|
.getByRole('button', { name: 'Print', exact: true })
|
|
.first()
|
|
.click();
|
|
await page.getByText('Process completed successfully').waitFor();
|
|
|
|
await navigate(page, 'settings/admin/machine/');
|
|
|
|
// Finally, delete the machine configuration
|
|
await clickOnRowMenu(cell);
|
|
await page.getByRole('menuitem', { name: 'Delete' }).click();
|
|
await page.getByRole('button', { name: 'Delete' }).click();
|
|
await page.getByText('Machine successfully deleted.').waitFor();
|
|
});
|