mirror of
https://github.com/inventree/InvenTree.git
synced 2025-08-10 22:00:56 +00:00
Merge branch 'master' into custom-states
This commit is contained in:
@@ -28,6 +28,10 @@ database:
|
|||||||
# Set debug to False to run in production mode, or use the environment variable INVENTREE_DEBUG
|
# Set debug to False to run in production mode, or use the environment variable INVENTREE_DEBUG
|
||||||
debug: True
|
debug: True
|
||||||
|
|
||||||
|
# Additional debug options
|
||||||
|
debug_querycount: False
|
||||||
|
debug_shell: False
|
||||||
|
|
||||||
# Set to False to disable the admin interface, or use the environment variable INVENTREE_ADMIN_ENABLED
|
# Set to False to disable the admin interface, or use the environment variable INVENTREE_ADMIN_ENABLED
|
||||||
#admin_enabled: True
|
#admin_enabled: True
|
||||||
|
|
||||||
@@ -114,10 +118,10 @@ use_x_forwarded_host: false
|
|||||||
# Override with the environment variable INVENTREE_USE_X_FORWARDED_PORT
|
# Override with the environment variable INVENTREE_USE_X_FORWARDED_PORT
|
||||||
use_x_forwarded_port: false
|
use_x_forwarded_port: false
|
||||||
|
|
||||||
# Cookie settings
|
# Cookie settings (nominally the default settings should be fine)
|
||||||
cookie:
|
#cookie:
|
||||||
secure: false
|
# secure: false
|
||||||
samesite: false
|
# samesite: false
|
||||||
|
|
||||||
# Cross Origin Resource Sharing (CORS) settings (see https://github.com/adamchainz/django-cors-headers)
|
# Cross Origin Resource Sharing (CORS) settings (see https://github.com/adamchainz/django-cors-headers)
|
||||||
cors:
|
cors:
|
||||||
|
@@ -1886,6 +1886,7 @@ class BomList(BomMixin, DataExportViewMixin, ListCreateDestroyAPIView):
|
|||||||
'inherited',
|
'inherited',
|
||||||
'optional',
|
'optional',
|
||||||
'consumable',
|
'consumable',
|
||||||
|
'reference',
|
||||||
'validated',
|
'validated',
|
||||||
'pricing_min',
|
'pricing_min',
|
||||||
'pricing_max',
|
'pricing_max',
|
||||||
|
@@ -20,6 +20,7 @@ import { apiUrl, useServerApiState } from '../../states/ApiState';
|
|||||||
import { useLocalState } from '../../states/LocalState';
|
import { useLocalState } from '../../states/LocalState';
|
||||||
import { useUserState } from '../../states/UserState';
|
import { useUserState } from '../../states/UserState';
|
||||||
import { CopyButton } from '../buttons/CopyButton';
|
import { CopyButton } from '../buttons/CopyButton';
|
||||||
|
import { StylishText } from '../items/StylishText';
|
||||||
|
|
||||||
type AboutLookupRef = {
|
type AboutLookupRef = {
|
||||||
ref: string;
|
ref: string;
|
||||||
@@ -56,9 +57,9 @@ export function AboutInvenTreeModal({
|
|||||||
alwaysLink: boolean = false
|
alwaysLink: boolean = false
|
||||||
) {
|
) {
|
||||||
return lookup.map((map: AboutLookupRef, idx) => (
|
return lookup.map((map: AboutLookupRef, idx) => (
|
||||||
<tr key={idx}>
|
<Table.Tr key={idx}>
|
||||||
<td>{map.title}</td>
|
<Table.Td>{map.title}</Table.Td>
|
||||||
<td>
|
<Table.Td>
|
||||||
<Group justify="space-between" gap="xs">
|
<Group justify="space-between" gap="xs">
|
||||||
{alwaysLink ? (
|
{alwaysLink ? (
|
||||||
<Anchor href={data[map.ref]} target="_blank">
|
<Anchor href={data[map.ref]} target="_blank">
|
||||||
@@ -73,8 +74,8 @@ export function AboutInvenTreeModal({
|
|||||||
)}
|
)}
|
||||||
{map.copy && <CopyButton value={data[map.ref]} />}
|
{map.copy && <CopyButton value={data[map.ref]} />}
|
||||||
</Group>
|
</Group>
|
||||||
</td>
|
</Table.Td>
|
||||||
</tr>
|
</Table.Tr>
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
/* renderer */
|
/* renderer */
|
||||||
@@ -95,13 +96,10 @@ export function AboutInvenTreeModal({
|
|||||||
return (
|
return (
|
||||||
<Stack>
|
<Stack>
|
||||||
<Divider />
|
<Divider />
|
||||||
<Title order={5}>
|
<Group justify="space-between" wrap="nowrap">
|
||||||
|
<StylishText size="lg">
|
||||||
<Trans>Version Information</Trans>
|
<Trans>Version Information</Trans>
|
||||||
</Title>
|
</StylishText>
|
||||||
<Group>
|
|
||||||
<Text>
|
|
||||||
<Trans>Your InvenTree version status is</Trans>
|
|
||||||
</Text>
|
|
||||||
{data.dev ? (
|
{data.dev ? (
|
||||||
<Badge color="blue">
|
<Badge color="blue">
|
||||||
<Trans>Development Version</Trans>
|
<Trans>Development Version</Trans>
|
||||||
@@ -116,8 +114,8 @@ export function AboutInvenTreeModal({
|
|||||||
</Badge>
|
</Badge>
|
||||||
)}
|
)}
|
||||||
</Group>
|
</Group>
|
||||||
<Table>
|
<Table striped>
|
||||||
<tbody>
|
<Table.Tbody>
|
||||||
{fillTable(
|
{fillTable(
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
@@ -144,9 +142,14 @@ export function AboutInvenTreeModal({
|
|||||||
{
|
{
|
||||||
ref: 'api',
|
ref: 'api',
|
||||||
title: <Trans>API Version</Trans>,
|
title: <Trans>API Version</Trans>,
|
||||||
link: `${host}api-doc/`
|
link: `${host}api-doc/`,
|
||||||
|
copy: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
ref: 'python',
|
||||||
|
title: <Trans>Python Version</Trans>,
|
||||||
|
copy: true
|
||||||
},
|
},
|
||||||
{ ref: 'python', title: <Trans>Python Version</Trans> },
|
|
||||||
{
|
{
|
||||||
ref: 'django',
|
ref: 'django',
|
||||||
title: <Trans>Django Version</Trans>,
|
title: <Trans>Django Version</Trans>,
|
||||||
@@ -156,17 +159,18 @@ export function AboutInvenTreeModal({
|
|||||||
],
|
],
|
||||||
data.version
|
data.version
|
||||||
)}
|
)}
|
||||||
</tbody>
|
</Table.Tbody>
|
||||||
</Table>
|
</Table>
|
||||||
<Title order={5}>
|
<Divider />
|
||||||
|
<StylishText size="lg">
|
||||||
<Trans>Links</Trans>
|
<Trans>Links</Trans>
|
||||||
</Title>
|
</StylishText>
|
||||||
<Table>
|
<Table striped>
|
||||||
<tbody>
|
<Table.Tbody>
|
||||||
{fillTable(
|
{fillTable(
|
||||||
[
|
[
|
||||||
{ ref: 'doc', title: <Trans>InvenTree Documentation</Trans> },
|
{ ref: 'doc', title: <Trans>Documentation</Trans> },
|
||||||
{ ref: 'code', title: <Trans>View Code on GitHub</Trans> },
|
{ ref: 'code', title: <Trans>Source Code</Trans> },
|
||||||
{ ref: 'credit', title: <Trans>Credits</Trans> },
|
{ ref: 'credit', title: <Trans>Credits</Trans> },
|
||||||
{ ref: 'app', title: <Trans>Mobile App</Trans> },
|
{ ref: 'app', title: <Trans>Mobile App</Trans> },
|
||||||
{ ref: 'bug', title: <Trans>Submit Bug Report</Trans> }
|
{ ref: 'bug', title: <Trans>Submit Bug Report</Trans> }
|
||||||
@@ -174,19 +178,18 @@ export function AboutInvenTreeModal({
|
|||||||
data.links,
|
data.links,
|
||||||
true
|
true
|
||||||
)}
|
)}
|
||||||
</tbody>
|
</Table.Tbody>
|
||||||
</Table>
|
</Table>
|
||||||
<Divider />
|
<Divider />
|
||||||
<Group justify="space-between">
|
<Group justify="space-between">
|
||||||
<CopyButton value={copyval} label={t`Copy version information`} />
|
<CopyButton value={copyval} label={t`Copy version information`} />
|
||||||
<Space />
|
<Space />
|
||||||
<Button
|
<Button
|
||||||
color="red"
|
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
context.closeModal(id);
|
context.closeModal(id);
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<Trans>Dismiss</Trans>
|
<Trans>Close</Trans>
|
||||||
</Button>
|
</Button>
|
||||||
</Group>
|
</Group>
|
||||||
</Stack>
|
</Stack>
|
||||||
|
@@ -11,6 +11,7 @@ import {
|
|||||||
Text
|
Text
|
||||||
} from '@mantine/core';
|
} from '@mantine/core';
|
||||||
import { useQuery } from '@tanstack/react-query';
|
import { useQuery } from '@tanstack/react-query';
|
||||||
|
import { useEffect, useMemo, useState } from 'react';
|
||||||
|
|
||||||
import { api } from '../../App';
|
import { api } from '../../App';
|
||||||
import { ApiEndpoints } from '../../enums/ApiEndpoints';
|
import { ApiEndpoints } from '../../enums/ApiEndpoints';
|
||||||
@@ -53,6 +54,7 @@ export function LicenceView(entries: any[]) {
|
|||||||
export function LicenseModal() {
|
export function LicenseModal() {
|
||||||
const { data, isFetching, isError } = useQuery({
|
const { data, isFetching, isError } = useQuery({
|
||||||
queryKey: ['license'],
|
queryKey: ['license'],
|
||||||
|
refetchOnMount: true,
|
||||||
queryFn: () =>
|
queryFn: () =>
|
||||||
api
|
api
|
||||||
.get(apiUrl(ApiEndpoints.license))
|
.get(apiUrl(ApiEndpoints.license))
|
||||||
@@ -60,7 +62,17 @@ export function LicenseModal() {
|
|||||||
.catch(() => {})
|
.catch(() => {})
|
||||||
});
|
});
|
||||||
|
|
||||||
const rspdata = !data ? [] : Object.keys(data ?? {});
|
const packageKeys = useMemo(() => {
|
||||||
|
return !!data ? Object.keys(data ?? {}) : [];
|
||||||
|
}, [data]);
|
||||||
|
|
||||||
|
const [selectedKey, setSelectedKey] = useState<string | null>('');
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (packageKeys.length > 0) {
|
||||||
|
setSelectedKey(packageKeys[0]);
|
||||||
|
}
|
||||||
|
}, [packageKeys]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Stack gap="xs">
|
<Stack gap="xs">
|
||||||
@@ -78,16 +90,20 @@ export function LicenseModal() {
|
|||||||
</Text>
|
</Text>
|
||||||
</Alert>
|
</Alert>
|
||||||
) : (
|
) : (
|
||||||
<Tabs defaultValue={rspdata[0] ?? ''}>
|
<Tabs
|
||||||
|
defaultValue={packageKeys[0] ?? ''}
|
||||||
|
value={selectedKey}
|
||||||
|
onChange={setSelectedKey}
|
||||||
|
>
|
||||||
<Tabs.List>
|
<Tabs.List>
|
||||||
{rspdata.map((key) => (
|
{packageKeys.map((key) => (
|
||||||
<Tabs.Tab key={key} value={key}>
|
<Tabs.Tab key={key} value={key}>
|
||||||
<Trans>{key} Packages</Trans>
|
<Trans>{key} Packages</Trans>
|
||||||
</Tabs.Tab>
|
</Tabs.Tab>
|
||||||
))}
|
))}
|
||||||
</Tabs.List>
|
</Tabs.List>
|
||||||
|
|
||||||
{rspdata.map((key) => (
|
{packageKeys.map((key) => (
|
||||||
<Tabs.Panel key={key} value={key}>
|
<Tabs.Panel key={key} value={key}>
|
||||||
{LicenceView(data[key] ?? [])}
|
{LicenceView(data[key] ?? [])}
|
||||||
</Tabs.Panel>
|
</Tabs.Panel>
|
||||||
|
@@ -12,6 +12,7 @@ import { ContextModalProps } from '@mantine/modals';
|
|||||||
|
|
||||||
import { useServerApiState } from '../../states/ApiState';
|
import { useServerApiState } from '../../states/ApiState';
|
||||||
import { OnlyStaff } from '../items/OnlyStaff';
|
import { OnlyStaff } from '../items/OnlyStaff';
|
||||||
|
import { StylishText } from '../items/StylishText';
|
||||||
|
|
||||||
export function ServerInfoModal({
|
export function ServerInfoModal({
|
||||||
context,
|
context,
|
||||||
@@ -22,10 +23,10 @@ export function ServerInfoModal({
|
|||||||
return (
|
return (
|
||||||
<Stack>
|
<Stack>
|
||||||
<Divider />
|
<Divider />
|
||||||
<Title order={5}>
|
<StylishText size="lg">
|
||||||
<Trans>Server</Trans>
|
<Trans>Server</Trans>
|
||||||
</Title>
|
</StylishText>
|
||||||
<Table>
|
<Table striped>
|
||||||
<Table.Tbody>
|
<Table.Tbody>
|
||||||
<Table.Tr>
|
<Table.Tr>
|
||||||
<Table.Td>
|
<Table.Td>
|
||||||
@@ -33,6 +34,18 @@ export function ServerInfoModal({
|
|||||||
</Table.Td>
|
</Table.Td>
|
||||||
<Table.Td>{server.instance}</Table.Td>
|
<Table.Td>{server.instance}</Table.Td>
|
||||||
</Table.Tr>
|
</Table.Tr>
|
||||||
|
<Table.Tr>
|
||||||
|
<Table.Td>
|
||||||
|
<Trans>Server Version</Trans>
|
||||||
|
</Table.Td>
|
||||||
|
<Table.Td>{server.version}</Table.Td>
|
||||||
|
</Table.Tr>
|
||||||
|
<Table.Tr>
|
||||||
|
<Table.Td>
|
||||||
|
<Trans>API Version</Trans>
|
||||||
|
</Table.Td>
|
||||||
|
<Table.Td>{server.apiVersion}</Table.Td>
|
||||||
|
</Table.Tr>
|
||||||
<Table.Tr>
|
<Table.Tr>
|
||||||
<Table.Td>
|
<Table.Td>
|
||||||
<Trans>Database</Trans>
|
<Trans>Database</Trans>
|
||||||
@@ -117,34 +130,14 @@ export function ServerInfoModal({
|
|||||||
)}
|
)}
|
||||||
</Table.Tbody>
|
</Table.Tbody>
|
||||||
</Table>
|
</Table>
|
||||||
<Title order={5}>
|
|
||||||
<Trans>Version</Trans>
|
|
||||||
</Title>
|
|
||||||
<Table>
|
|
||||||
<Table.Tbody>
|
|
||||||
<Table.Tr>
|
|
||||||
<Table.Td>
|
|
||||||
<Trans>Server Version</Trans>
|
|
||||||
</Table.Td>
|
|
||||||
<Table.Td>{server.version}</Table.Td>
|
|
||||||
</Table.Tr>
|
|
||||||
<Table.Tr>
|
|
||||||
<Table.Td>
|
|
||||||
<Trans>API Version</Trans>
|
|
||||||
</Table.Td>
|
|
||||||
<Table.Td>{server.apiVersion}</Table.Td>
|
|
||||||
</Table.Tr>
|
|
||||||
</Table.Tbody>
|
|
||||||
</Table>
|
|
||||||
<Divider />
|
<Divider />
|
||||||
<Group justify="right">
|
<Group justify="right">
|
||||||
<Button
|
<Button
|
||||||
color="red"
|
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
context.closeModal(id);
|
context.closeModal(id);
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<Trans>Dismiss</Trans>
|
<Trans>Close</Trans>
|
||||||
</Button>
|
</Button>
|
||||||
</Group>
|
</Group>
|
||||||
</Stack>
|
</Stack>
|
||||||
|
@@ -12,7 +12,7 @@ test('Modals as admin', async ({ page }) => {
|
|||||||
})
|
})
|
||||||
.click();
|
.click();
|
||||||
await page.getByRole('cell', { name: 'Instance Name' }).waitFor();
|
await page.getByRole('cell', { name: 'Instance Name' }).waitFor();
|
||||||
await page.getByRole('button', { name: 'Dismiss' }).click();
|
await page.getByRole('button', { name: 'Close' }).click();
|
||||||
|
|
||||||
await page.waitForURL('**/platform/home');
|
await page.waitForURL('**/platform/home');
|
||||||
|
|
||||||
|
@@ -24,7 +24,28 @@ async function defaultScanTest(page, search_text) {
|
|||||||
await page.getByRole('button', { name: 'Lookup part' }).click();
|
await page.getByRole('button', { name: 'Lookup part' }).click();
|
||||||
}
|
}
|
||||||
|
|
||||||
test('Pages - Index - Scan (Part)', async ({ page }) => {
|
test('Scanning', async ({ page }) => {
|
||||||
|
await doQuickLogin(page);
|
||||||
|
|
||||||
|
await page.getByLabel('navigation-menu').click();
|
||||||
|
await page.getByRole('button', { name: 'System Information' }).click();
|
||||||
|
await page.locator('button').filter({ hasText: 'Close' }).click();
|
||||||
|
|
||||||
|
await page.getByLabel('navigation-menu').click();
|
||||||
|
await page.getByRole('button', { name: 'Scan Barcode' }).click();
|
||||||
|
|
||||||
|
await page.getByPlaceholder('Select input method').click();
|
||||||
|
await page.getByRole('option', { name: 'Manual input' }).click();
|
||||||
|
await page.getByPlaceholder('Enter item serial or data').click();
|
||||||
|
await page.getByPlaceholder('Enter item serial or data').fill('123');
|
||||||
|
await page.getByPlaceholder('Enter item serial or data').press('Enter');
|
||||||
|
await page.getByRole('cell', { name: 'manually' }).click();
|
||||||
|
await page.getByRole('button', { name: 'Lookup part' }).click();
|
||||||
|
await page.getByPlaceholder('Select input method').click();
|
||||||
|
await page.getByRole('option', { name: 'Manual input' }).click();
|
||||||
|
});
|
||||||
|
|
||||||
|
test('Scanning (Part)', async ({ page }) => {
|
||||||
await defaultScanTest(page, '{"part": 1}');
|
await defaultScanTest(page, '{"part": 1}');
|
||||||
|
|
||||||
// part: 1
|
// part: 1
|
||||||
@@ -33,7 +54,7 @@ test('Pages - Index - Scan (Part)', async ({ page }) => {
|
|||||||
await page.getByRole('cell', { name: 'part' }).waitFor();
|
await page.getByRole('cell', { name: 'part' }).waitFor();
|
||||||
});
|
});
|
||||||
|
|
||||||
test('Pages - Index - Scan (Stockitem)', async ({ page }) => {
|
test('Scanning (Stockitem)', async ({ page }) => {
|
||||||
await defaultScanTest(page, '{"stockitem": 408}');
|
await defaultScanTest(page, '{"stockitem": 408}');
|
||||||
|
|
||||||
// stockitem: 408
|
// stockitem: 408
|
||||||
@@ -42,7 +63,7 @@ test('Pages - Index - Scan (Stockitem)', async ({ page }) => {
|
|||||||
await page.getByRole('cell', { name: 'Quantity: 100' }).waitFor();
|
await page.getByRole('cell', { name: 'Quantity: 100' }).waitFor();
|
||||||
});
|
});
|
||||||
|
|
||||||
test('Pages - Index - Scan (StockLocation)', async ({ page }) => {
|
test('Scanning (StockLocation)', async ({ page }) => {
|
||||||
await defaultScanTest(page, '{"stocklocation": 3}');
|
await defaultScanTest(page, '{"stocklocation": 3}');
|
||||||
|
|
||||||
// stocklocation: 3
|
// stocklocation: 3
|
||||||
@@ -51,7 +72,7 @@ test('Pages - Index - Scan (StockLocation)', async ({ page }) => {
|
|||||||
await page.getByRole('cell', { name: 'stocklocation' }).waitFor();
|
await page.getByRole('cell', { name: 'stocklocation' }).waitFor();
|
||||||
});
|
});
|
||||||
|
|
||||||
test('Pages - Index - Scan (SupplierPart)', async ({ page }) => {
|
test('Scanning (SupplierPart)', async ({ page }) => {
|
||||||
await defaultScanTest(page, '{"supplierpart": 204}');
|
await defaultScanTest(page, '{"supplierpart": 204}');
|
||||||
|
|
||||||
// supplierpart: 204
|
// supplierpart: 204
|
||||||
@@ -60,7 +81,7 @@ test('Pages - Index - Scan (SupplierPart)', async ({ page }) => {
|
|||||||
await page.getByRole('cell', { name: 'supplierpart' }).waitFor();
|
await page.getByRole('cell', { name: 'supplierpart' }).waitFor();
|
||||||
});
|
});
|
||||||
|
|
||||||
test('Pages - Index - Scan (PurchaseOrder)', async ({ page }) => {
|
test('Scanning (PurchaseOrder)', async ({ page }) => {
|
||||||
await defaultScanTest(page, '{"purchaseorder": 12}');
|
await defaultScanTest(page, '{"purchaseorder": 12}');
|
||||||
|
|
||||||
// purchaseorder: 12
|
// purchaseorder: 12
|
||||||
@@ -69,7 +90,7 @@ test('Pages - Index - Scan (PurchaseOrder)', async ({ page }) => {
|
|||||||
await page.getByRole('cell', { name: 'purchaseorder' }).waitFor();
|
await page.getByRole('cell', { name: 'purchaseorder' }).waitFor();
|
||||||
});
|
});
|
||||||
|
|
||||||
test('Pages - Index - Scan (SalesOrder)', async ({ page }) => {
|
test('Scanning (SalesOrder)', async ({ page }) => {
|
||||||
await defaultScanTest(page, '{"salesorder": 6}');
|
await defaultScanTest(page, '{"salesorder": 6}');
|
||||||
|
|
||||||
// salesorder: 6
|
// salesorder: 6
|
||||||
@@ -78,7 +99,7 @@ test('Pages - Index - Scan (SalesOrder)', async ({ page }) => {
|
|||||||
await page.getByRole('cell', { name: 'salesorder' }).waitFor();
|
await page.getByRole('cell', { name: 'salesorder' }).waitFor();
|
||||||
});
|
});
|
||||||
|
|
||||||
test('Pages - Index - Scan (Build)', async ({ page }) => {
|
test('Scanning (Build)', async ({ page }) => {
|
||||||
await defaultScanTest(page, '{"build": 8}');
|
await defaultScanTest(page, '{"build": 8}');
|
||||||
|
|
||||||
// build: 8
|
// build: 8
|
||||||
@@ -87,7 +108,7 @@ test('Pages - Index - Scan (Build)', async ({ page }) => {
|
|||||||
await page.getByRole('cell', { name: 'build', exact: true }).waitFor();
|
await page.getByRole('cell', { name: 'build', exact: true }).waitFor();
|
||||||
});
|
});
|
||||||
|
|
||||||
test('Pages - Index - Scan (General)', async ({ page }) => {
|
test('Scanning (General)', async ({ page }) => {
|
||||||
await defaultScanTest(page, '{"unknown": 312}');
|
await defaultScanTest(page, '{"unknown": 312}');
|
||||||
await page.getByText('"unknown": 312').waitFor();
|
await page.getByText('"unknown": 312').waitFor();
|
||||||
|
|
||||||
|
@@ -53,7 +53,7 @@ test('Quick Command - No Keys', async ({ page }) => {
|
|||||||
})
|
})
|
||||||
.click();
|
.click();
|
||||||
await page.getByRole('cell', { name: 'Instance Name' }).waitFor();
|
await page.getByRole('cell', { name: 'Instance Name' }).waitFor();
|
||||||
await page.getByRole('button', { name: 'Dismiss' }).click();
|
await page.getByRole('button', { name: 'Close' }).click();
|
||||||
|
|
||||||
await page.waitForURL('**/platform/home');
|
await page.waitForURL('**/platform/home');
|
||||||
|
|
||||||
@@ -66,8 +66,9 @@ test('Quick Command - No Keys', async ({ page }) => {
|
|||||||
.click();
|
.click();
|
||||||
await page.getByText('License Information').first().waitFor();
|
await page.getByText('License Information').first().waitFor();
|
||||||
await page.getByRole('tab', { name: 'backend Packages' }).waitFor();
|
await page.getByRole('tab', { name: 'backend Packages' }).waitFor();
|
||||||
|
await page.getByRole('button', { name: 'Django BSD License' }).click();
|
||||||
|
|
||||||
await page.getByLabel('License Information').getByRole('button').click();
|
await page.keyboard.press('Escape');
|
||||||
|
|
||||||
// use about
|
// use about
|
||||||
await page.getByLabel('open-spotlight').click();
|
await page.getByLabel('open-spotlight').click();
|
||||||
|
@@ -53,27 +53,6 @@ test('Sales', async ({ page }) => {
|
|||||||
await page.getByRole('tab', { name: 'Notes' }).click();
|
await page.getByRole('tab', { name: 'Notes' }).click();
|
||||||
});
|
});
|
||||||
|
|
||||||
test('Scanning', async ({ page }) => {
|
|
||||||
await doQuickLogin(page);
|
|
||||||
|
|
||||||
await page.getByLabel('navigation-menu').click();
|
|
||||||
await page.getByRole('button', { name: 'System Information' }).click();
|
|
||||||
await page.locator('button').filter({ hasText: 'Dismiss' }).click();
|
|
||||||
|
|
||||||
await page.getByLabel('navigation-menu').click();
|
|
||||||
await page.getByRole('button', { name: 'Scan Barcode' }).click();
|
|
||||||
|
|
||||||
await page.getByPlaceholder('Select input method').click();
|
|
||||||
await page.getByRole('option', { name: 'Manual input' }).click();
|
|
||||||
await page.getByPlaceholder('Enter item serial or data').click();
|
|
||||||
await page.getByPlaceholder('Enter item serial or data').fill('123');
|
|
||||||
await page.getByPlaceholder('Enter item serial or data').press('Enter');
|
|
||||||
await page.getByRole('cell', { name: 'manually' }).click();
|
|
||||||
await page.getByRole('button', { name: 'Lookup part' }).click();
|
|
||||||
await page.getByPlaceholder('Select input method').click();
|
|
||||||
await page.getByRole('option', { name: 'Manual input' }).click();
|
|
||||||
});
|
|
||||||
|
|
||||||
test('Company', async ({ page }) => {
|
test('Company', async ({ page }) => {
|
||||||
await doQuickLogin(page);
|
await doQuickLogin(page);
|
||||||
|
|
||||||
|
10
tasks.py
10
tasks.py
@@ -1443,14 +1443,14 @@ def docs_server(c, address='localhost:8080', compile_schema=False):
|
|||||||
def clear_generated(c):
|
def clear_generated(c):
|
||||||
"""Clear generated files from `invoke update`."""
|
"""Clear generated files from `invoke update`."""
|
||||||
# pyc/pyo files
|
# pyc/pyo files
|
||||||
run(c, 'find . -name "*.pyc" -exec rm -f {} +')
|
run(c, 'find src -name "*.pyc" -exec rm -f {} +')
|
||||||
run(c, 'find . -name "*.pyo" -exec rm -f {} +')
|
run(c, 'find src -name "*.pyo" -exec rm -f {} +')
|
||||||
# cache folders
|
# cache folders
|
||||||
run(c, 'find . -name "__pycache__" -exec rm -rf {} +')
|
run(c, 'find src -name "__pycache__" -exec rm -rf {} +')
|
||||||
|
|
||||||
# Generated translations
|
# Generated translations
|
||||||
run(c, 'find . -name "django.mo" -exec rm -f {} +')
|
run(c, 'find src -name "django.mo" -exec rm -f {} +')
|
||||||
run(c, 'find . -name "messages.mo" -exec rm -f {} +')
|
run(c, 'find src -name "messages.mo" -exec rm -f {} +')
|
||||||
|
|
||||||
|
|
||||||
# Collection sorting
|
# Collection sorting
|
||||||
|
Reference in New Issue
Block a user