mirror of
https://github.com/inventree/InvenTree.git
synced 2026-04-04 10:31:03 +00:00
refactor(frontend): use central user creds (#11520)
This commit is contained in:
@@ -2,7 +2,13 @@ import { type FullConfig, chromium, request } from '@playwright/test';
|
|||||||
|
|
||||||
import fs from 'node:fs';
|
import fs from 'node:fs';
|
||||||
import path from 'node:path';
|
import path from 'node:path';
|
||||||
import { apiUrl } from '../tests/defaults';
|
import {
|
||||||
|
adminuser,
|
||||||
|
allaccessuser,
|
||||||
|
apiUrl,
|
||||||
|
readeruser,
|
||||||
|
stevenuser
|
||||||
|
} from '../tests/defaults';
|
||||||
import { doCachedLogin } from '../tests/login';
|
import { doCachedLogin } from '../tests/login';
|
||||||
|
|
||||||
async function globalSetup(config: FullConfig) {
|
async function globalSetup(config: FullConfig) {
|
||||||
@@ -45,26 +51,22 @@ async function globalSetup(config: FullConfig) {
|
|||||||
|
|
||||||
// Perform login for each user (each in a separate browser instance)
|
// Perform login for each user (each in a separate browser instance)
|
||||||
await doCachedLogin(await chromium.launch(), {
|
await doCachedLogin(await chromium.launch(), {
|
||||||
username: 'admin',
|
user: adminuser,
|
||||||
password: 'inventree',
|
|
||||||
baseUrl: baseUrl
|
baseUrl: baseUrl
|
||||||
});
|
});
|
||||||
|
|
||||||
await doCachedLogin(await chromium.launch(), {
|
await doCachedLogin(await chromium.launch(), {
|
||||||
username: 'allaccess',
|
user: allaccessuser,
|
||||||
password: 'nolimits',
|
|
||||||
baseUrl: baseUrl
|
baseUrl: baseUrl
|
||||||
});
|
});
|
||||||
|
|
||||||
await doCachedLogin(await chromium.launch(), {
|
await doCachedLogin(await chromium.launch(), {
|
||||||
username: 'reader',
|
user: readeruser,
|
||||||
password: 'readonly',
|
|
||||||
baseUrl: baseUrl
|
baseUrl: baseUrl
|
||||||
});
|
});
|
||||||
|
|
||||||
await doCachedLogin(await chromium.launch(), {
|
await doCachedLogin(await chromium.launch(), {
|
||||||
username: 'steven',
|
user: stevenuser,
|
||||||
password: 'wizardstaff',
|
|
||||||
baseUrl: baseUrl
|
baseUrl: baseUrl
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,6 +11,6 @@ export const createApi = ({
|
|||||||
request.newContext({
|
request.newContext({
|
||||||
baseURL: apiUrl,
|
baseURL: apiUrl,
|
||||||
extraHTTPHeaders: {
|
extraHTTPHeaders: {
|
||||||
Authorization: `Basic ${btoa(`${username || adminuser.username}:${password || adminuser.password}`)}`
|
Authorization: `Basic ${btoa(`${username || adminuser.username}:${password || adminuser.testcred}`)}`
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import test, { expect } from '@playwright/test';
|
import test, { expect } from '@playwright/test';
|
||||||
|
import { noaccessuser } from '../defaults';
|
||||||
import { navigate } from '../helpers';
|
import { navigate } from '../helpers';
|
||||||
import { doLogin } from '../login';
|
import { doLogin } from '../login';
|
||||||
|
|
||||||
@@ -22,8 +23,7 @@ test('Customization - Splash', async ({ page }) => {
|
|||||||
|
|
||||||
test('Customization - Logo', async ({ page }) => {
|
test('Customization - Logo', async ({ page }) => {
|
||||||
await doLogin(page, {
|
await doLogin(page, {
|
||||||
username: 'noaccess',
|
user: noaccessuser
|
||||||
password: 'youshallnotpass'
|
|
||||||
});
|
});
|
||||||
|
|
||||||
await page.waitForLoadState('networkidle');
|
await page.waitForLoadState('networkidle');
|
||||||
|
|||||||
@@ -7,13 +7,34 @@ export const homeUrl = `${webUrl}/home`;
|
|||||||
export const loginUrl = `${webUrl}/login`;
|
export const loginUrl = `${webUrl}/login`;
|
||||||
export const logoutUrl = `${webUrl}/logout`;
|
export const logoutUrl = `${webUrl}/logout`;
|
||||||
|
|
||||||
export const user = {
|
export type UserType = {
|
||||||
name: 'Ally Access',
|
name?: string;
|
||||||
username: 'allaccess',
|
username: string;
|
||||||
password: 'nolimits'
|
testcred: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const adminuser = {
|
export const allaccessuser: UserType = {
|
||||||
username: 'admin',
|
name: 'Ally Access',
|
||||||
password: 'inventree'
|
username: 'allaccess',
|
||||||
|
testcred: 'nolimits'
|
||||||
|
};
|
||||||
|
|
||||||
|
export const adminuser: UserType = {
|
||||||
|
username: 'admin',
|
||||||
|
testcred: 'inventree'
|
||||||
|
};
|
||||||
|
|
||||||
|
export const stevenuser: UserType = {
|
||||||
|
username: 'steven',
|
||||||
|
testcred: 'wizardstaff'
|
||||||
|
};
|
||||||
|
|
||||||
|
export const readeruser: UserType = {
|
||||||
|
username: 'reader',
|
||||||
|
testcred: 'readonly'
|
||||||
|
};
|
||||||
|
|
||||||
|
export const noaccessuser: UserType = {
|
||||||
|
username: 'noaccess',
|
||||||
|
testcred: 'youshallnotpass'
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,5 +1,11 @@
|
|||||||
import type { Browser, Page } from '@playwright/test';
|
import type { Browser, Page } from '@playwright/test';
|
||||||
import { loginUrl, logoutUrl, user, webUrl } from './defaults';
|
import {
|
||||||
|
type UserType,
|
||||||
|
allaccessuser,
|
||||||
|
loginUrl,
|
||||||
|
logoutUrl,
|
||||||
|
webUrl
|
||||||
|
} from './defaults';
|
||||||
|
|
||||||
import fs from 'node:fs';
|
import fs from 'node:fs';
|
||||||
import path from 'node:path';
|
import path from 'node:path';
|
||||||
@@ -8,6 +14,7 @@ import { navigate } from './helpers.js';
|
|||||||
interface LoginOptions {
|
interface LoginOptions {
|
||||||
username?: string;
|
username?: string;
|
||||||
password?: string;
|
password?: string;
|
||||||
|
user?: UserType;
|
||||||
baseUrl?: string;
|
baseUrl?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -15,8 +22,10 @@ interface LoginOptions {
|
|||||||
* Perform form based login operation from the "login" URL
|
* Perform form based login operation from the "login" URL
|
||||||
*/
|
*/
|
||||||
export const doLogin = async (page: Page, options?: LoginOptions) => {
|
export const doLogin = async (page: Page, options?: LoginOptions) => {
|
||||||
const username: string = options?.username ?? user.username;
|
const username: string =
|
||||||
const password: string = options?.password ?? user.password;
|
options?.username ?? options?.user?.username ?? allaccessuser.username;
|
||||||
|
const password: string =
|
||||||
|
options?.password ?? options?.user?.testcred ?? allaccessuser.testcred;
|
||||||
|
|
||||||
console.log('- Logging in with username:', username);
|
console.log('- Logging in with username:', username);
|
||||||
|
|
||||||
@@ -44,8 +53,7 @@ export const doLogin = async (page: Page, options?: LoginOptions) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
export interface CachedLoginOptions {
|
export interface CachedLoginOptions {
|
||||||
username?: string;
|
user?: UserType;
|
||||||
password?: string;
|
|
||||||
url?: string;
|
url?: string;
|
||||||
baseUrl?: string;
|
baseUrl?: string;
|
||||||
}
|
}
|
||||||
@@ -61,8 +69,8 @@ export const doCachedLogin = async (
|
|||||||
browser: Browser,
|
browser: Browser,
|
||||||
options?: CachedLoginOptions
|
options?: CachedLoginOptions
|
||||||
): Promise<Page> => {
|
): Promise<Page> => {
|
||||||
const username = options?.username ?? user.username;
|
const username = options?.user?.username ?? allaccessuser.username;
|
||||||
const password = options?.password ?? user.password;
|
const password = options?.user?.testcred ?? allaccessuser.testcred;
|
||||||
const url = options?.url ?? '';
|
const url = options?.url ?? '';
|
||||||
|
|
||||||
// FAIL if an unsupported username is provided
|
// FAIL if an unsupported username is provided
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import { test } from '../baseFixtures.js';
|
import { test } from '../baseFixtures.js';
|
||||||
|
import { stevenuser } from '../defaults.js';
|
||||||
import {
|
import {
|
||||||
clearTableFilters,
|
clearTableFilters,
|
||||||
clickOnParamFilter,
|
clickOnParamFilter,
|
||||||
@@ -57,8 +58,7 @@ test('Company', async ({ browser }) => {
|
|||||||
|
|
||||||
test('Company - Parameters', async ({ browser }) => {
|
test('Company - Parameters', async ({ browser }) => {
|
||||||
const page = await doCachedLogin(browser, {
|
const page = await doCachedLogin(browser, {
|
||||||
username: 'steven',
|
user: stevenuser,
|
||||||
password: 'wizardstaff',
|
|
||||||
url: 'purchasing/index/suppliers'
|
url: 'purchasing/index/suppliers'
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -75,8 +75,7 @@ test('Company - Parameters', async ({ browser }) => {
|
|||||||
|
|
||||||
test('Company - Supplier Parts', async ({ browser }) => {
|
test('Company - Supplier Parts', async ({ browser }) => {
|
||||||
const page = await doCachedLogin(browser, {
|
const page = await doCachedLogin(browser, {
|
||||||
username: 'steven',
|
user: stevenuser,
|
||||||
password: 'wizardstaff',
|
|
||||||
url: 'purchasing/index/suppliers'
|
url: 'purchasing/index/suppliers'
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -417,6 +417,7 @@ test('Parts - Pricing (Supplier)', async ({ browser }) => {
|
|||||||
|
|
||||||
test('Parts - Pricing (Variant)', async ({ browser }) => {
|
test('Parts - Pricing (Variant)', async ({ browser }) => {
|
||||||
const page = await doCachedLogin(browser, { url: 'part/106/pricing' });
|
const page = await doCachedLogin(browser, { url: 'part/106/pricing' });
|
||||||
|
|
||||||
await page.getByText('A chair - available in multiple colors').waitFor();
|
await page.getByText('A chair - available in multiple colors').waitFor();
|
||||||
await loadTab(page, 'Part Pricing');
|
await loadTab(page, 'Part Pricing');
|
||||||
await page.getByLabel('Part Pricing').getByText('Part Pricing').waitFor();
|
await page.getByLabel('Part Pricing').getByText('Part Pricing').waitFor();
|
||||||
@@ -438,6 +439,7 @@ test('Parts - Pricing (Variant)', async ({ browser }) => {
|
|||||||
|
|
||||||
test('Parts - Pricing (Internal)', async ({ browser }) => {
|
test('Parts - Pricing (Internal)', async ({ browser }) => {
|
||||||
const page = await doCachedLogin(browser, { url: 'part/65/pricing' });
|
const page = await doCachedLogin(browser, { url: 'part/65/pricing' });
|
||||||
|
|
||||||
await page.getByText('Socket head cap screw, M2').waitFor();
|
await page.getByText('Socket head cap screw, M2').waitFor();
|
||||||
await loadTab(page, 'Part Pricing');
|
await loadTab(page, 'Part Pricing');
|
||||||
await page.getByLabel('Part Pricing').getByText('Part Pricing').waitFor();
|
await page.getByLabel('Part Pricing').getByText('Part Pricing').waitFor();
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import { expect } from '@playwright/test';
|
import { expect } from '@playwright/test';
|
||||||
import { test } from '../baseFixtures.ts';
|
import { test } from '../baseFixtures.ts';
|
||||||
|
import { readeruser } from '../defaults.ts';
|
||||||
import {
|
import {
|
||||||
activateCalendarView,
|
activateCalendarView,
|
||||||
activateTableView,
|
activateTableView,
|
||||||
@@ -259,8 +260,7 @@ test('Purchase Orders - Barcodes', async ({ browser }) => {
|
|||||||
|
|
||||||
test('Purchase Orders - Filters', async ({ browser }) => {
|
test('Purchase Orders - Filters', async ({ browser }) => {
|
||||||
const page = await doCachedLogin(browser, {
|
const page = await doCachedLogin(browser, {
|
||||||
username: 'reader',
|
user: readeruser
|
||||||
password: 'readonly'
|
|
||||||
});
|
});
|
||||||
|
|
||||||
await page.getByRole('tab', { name: 'Purchasing' }).click();
|
await page.getByRole('tab', { name: 'Purchasing' }).click();
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import type { Page } from '@playwright/test';
|
import type { Page } from '@playwright/test';
|
||||||
import { createApi } from '../api';
|
import { createApi } from '../api';
|
||||||
import { test } from '../baseFixtures';
|
import { test } from '../baseFixtures';
|
||||||
|
import { adminuser } from '../defaults';
|
||||||
import { doCachedLogin } from '../login';
|
import { doCachedLogin } from '../login';
|
||||||
|
|
||||||
const scan = async (page: Page, barcode: string) => {
|
const scan = async (page: Page, barcode: string) => {
|
||||||
@@ -65,6 +66,7 @@ test('Barcode Scanning - Part', async ({ browser }) => {
|
|||||||
|
|
||||||
test('Barcode Scanning - Stockitem', async ({ browser }) => {
|
test('Barcode Scanning - Stockitem', async ({ browser }) => {
|
||||||
const page = await doCachedLogin(browser, { url: 'scan/' });
|
const page = await doCachedLogin(browser, { url: 'scan/' });
|
||||||
|
|
||||||
await scan(page, '{"stockitem": 408}');
|
await scan(page, '{"stockitem": 408}');
|
||||||
|
|
||||||
await page.getByText('1551ABK').waitFor();
|
await page.getByText('1551ABK').waitFor();
|
||||||
@@ -87,6 +89,7 @@ test('Barcode Scanning - StockLocation', async ({ browser }) => {
|
|||||||
|
|
||||||
test('Barcode Scanning - SupplierPart', async ({ browser }) => {
|
test('Barcode Scanning - SupplierPart', async ({ browser }) => {
|
||||||
const page = await doCachedLogin(browser, { url: 'scan/' });
|
const page = await doCachedLogin(browser, { url: 'scan/' });
|
||||||
|
|
||||||
await scan(page, '{"supplierpart": 204}');
|
await scan(page, '{"supplierpart": 204}');
|
||||||
|
|
||||||
await page.waitForLoadState('networkidle');
|
await page.waitForLoadState('networkidle');
|
||||||
@@ -96,6 +99,7 @@ test('Barcode Scanning - SupplierPart', async ({ browser }) => {
|
|||||||
|
|
||||||
test('Barcode Scanning - PurchaseOrder', async ({ browser }) => {
|
test('Barcode Scanning - PurchaseOrder', async ({ browser }) => {
|
||||||
const page = await doCachedLogin(browser, { url: 'scan/' });
|
const page = await doCachedLogin(browser, { url: 'scan/' });
|
||||||
|
|
||||||
await scan(page, '{"purchaseorder": 12}');
|
await scan(page, '{"purchaseorder": 12}');
|
||||||
|
|
||||||
// purchaseorder: 12
|
// purchaseorder: 12
|
||||||
@@ -119,6 +123,7 @@ test('Barcode Scanning - SalesOrder', async ({ browser }) => {
|
|||||||
|
|
||||||
test('Barcode Scanning - Build', async ({ browser }) => {
|
test('Barcode Scanning - Build', async ({ browser }) => {
|
||||||
const page = await doCachedLogin(browser, { url: 'scan/' });
|
const page = await doCachedLogin(browser, { url: 'scan/' });
|
||||||
|
|
||||||
await scan(page, '{"build": 8}');
|
await scan(page, '{"build": 8}');
|
||||||
|
|
||||||
// build: 8
|
// build: 8
|
||||||
@@ -129,8 +134,7 @@ test('Barcode Scanning - Build', async ({ browser }) => {
|
|||||||
|
|
||||||
test('Barcode Scanning - Forms', async ({ browser }) => {
|
test('Barcode Scanning - Forms', async ({ browser }) => {
|
||||||
const page = await doCachedLogin(browser, {
|
const page = await doCachedLogin(browser, {
|
||||||
username: 'admin',
|
user: adminuser,
|
||||||
password: 'inventree',
|
|
||||||
url: '/stock/location/index/stock-items'
|
url: '/stock/location/index/stock-items'
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import { expect, test } from '../baseFixtures.js';
|
import { expect, test } from '../baseFixtures.js';
|
||||||
|
import { stevenuser } from '../defaults.js';
|
||||||
import {
|
import {
|
||||||
clearTableFilters,
|
clearTableFilters,
|
||||||
clickButtonIfVisible,
|
clickButtonIfVisible,
|
||||||
@@ -117,8 +118,7 @@ test('Stock - Location Delete', async ({ browser }) => {
|
|||||||
|
|
||||||
test('Stock - Filters', async ({ browser }) => {
|
test('Stock - Filters', async ({ browser }) => {
|
||||||
const page = await doCachedLogin(browser, {
|
const page = await doCachedLogin(browser, {
|
||||||
username: 'steven',
|
user: stevenuser,
|
||||||
password: 'wizardstaff',
|
|
||||||
url: '/stock/location/index/'
|
url: '/stock/location/index/'
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import test from '@playwright/test';
|
import test from '@playwright/test';
|
||||||
|
import { stevenuser } from './defaults';
|
||||||
import { globalSearch, loadTab, navigate } from './helpers';
|
import { globalSearch, loadTab, navigate } from './helpers';
|
||||||
import { doCachedLogin } from './login';
|
import { doCachedLogin } from './login';
|
||||||
|
|
||||||
@@ -13,8 +14,7 @@ const openExportDialog = async (page) => {
|
|||||||
// Test data export for various order types
|
// Test data export for various order types
|
||||||
test('Exporting - Orders', async ({ browser }) => {
|
test('Exporting - Orders', async ({ browser }) => {
|
||||||
const page = await doCachedLogin(browser, {
|
const page = await doCachedLogin(browser, {
|
||||||
username: 'steven',
|
user: stevenuser,
|
||||||
password: 'wizardstaff',
|
|
||||||
url: 'purchasing/index/purchase-orders'
|
url: 'purchasing/index/purchase-orders'
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -72,8 +72,7 @@ test('Exporting - Orders', async ({ browser }) => {
|
|||||||
// Test for custom BOM exporter
|
// Test for custom BOM exporter
|
||||||
test('Exporting - BOM', async ({ browser }) => {
|
test('Exporting - BOM', async ({ browser }) => {
|
||||||
const page = await doCachedLogin(browser, {
|
const page = await doCachedLogin(browser, {
|
||||||
username: 'steven',
|
user: stevenuser
|
||||||
password: 'wizardstaff'
|
|
||||||
});
|
});
|
||||||
|
|
||||||
await globalSearch(page, 'MAST');
|
await globalSearch(page, 'MAST');
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
/** Unit tests for form validation, rendering, etc */
|
/** Unit tests for form validation, rendering, etc */
|
||||||
import test from 'playwright/test';
|
import test from 'playwright/test';
|
||||||
|
import { stevenuser } from './defaults';
|
||||||
import { navigate } from './helpers';
|
import { navigate } from './helpers';
|
||||||
import { doCachedLogin } from './login';
|
import { doCachedLogin } from './login';
|
||||||
|
|
||||||
test('Forms - Stock Item Validation', async ({ browser }) => {
|
test('Forms - Stock Item Validation', async ({ browser }) => {
|
||||||
const page = await doCachedLogin(browser, {
|
const page = await doCachedLogin(browser, {
|
||||||
username: 'steven',
|
user: stevenuser,
|
||||||
password: 'wizardstaff',
|
|
||||||
url: 'stock/location/index/stock-items'
|
url: 'stock/location/index/stock-items'
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -82,8 +82,7 @@ test('Forms - Stock Item Validation', async ({ browser }) => {
|
|||||||
|
|
||||||
test('Forms - Supplier Validation', async ({ browser }) => {
|
test('Forms - Supplier Validation', async ({ browser }) => {
|
||||||
const page = await doCachedLogin(browser, {
|
const page = await doCachedLogin(browser, {
|
||||||
username: 'steven',
|
user: stevenuser,
|
||||||
password: 'wizardstaff',
|
|
||||||
url: 'purchasing/index/suppliers'
|
url: 'purchasing/index/suppliers'
|
||||||
});
|
});
|
||||||
await page.waitForURL('**/purchasing/index/**');
|
await page.waitForURL('**/purchasing/index/**');
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import { test } from './baseFixtures.js';
|
import { test } from './baseFixtures.js';
|
||||||
|
import { adminuser, stevenuser } from './defaults.js';
|
||||||
import { globalSearch } from './helpers.js';
|
import { globalSearch } from './helpers.js';
|
||||||
import { doCachedLogin } from './login.js';
|
import { doCachedLogin } from './login.js';
|
||||||
|
|
||||||
@@ -7,8 +8,7 @@ import { doCachedLogin } from './login.js';
|
|||||||
*/
|
*/
|
||||||
test('General - Admin Button', async ({ browser }) => {
|
test('General - Admin Button', async ({ browser }) => {
|
||||||
const page = await doCachedLogin(browser, {
|
const page = await doCachedLogin(browser, {
|
||||||
username: 'admin',
|
user: adminuser,
|
||||||
password: 'inventree',
|
|
||||||
url: 'company/1/details'
|
url: 'company/1/details'
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -23,8 +23,7 @@ test('General - Admin Button', async ({ browser }) => {
|
|||||||
// Tests for the global search functionality
|
// Tests for the global search functionality
|
||||||
test('General - Search', async ({ browser }) => {
|
test('General - Search', async ({ browser }) => {
|
||||||
const page = await doCachedLogin(browser, {
|
const page = await doCachedLogin(browser, {
|
||||||
username: 'steven',
|
user: stevenuser
|
||||||
password: 'wizardstaff'
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// Open the search drawer with a shortcut
|
// Open the search drawer with a shortcut
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
import test from '@playwright/test';
|
import test from '@playwright/test';
|
||||||
|
import { stevenuser } from './defaults';
|
||||||
import { doCachedLogin } from './login';
|
import { doCachedLogin } from './login';
|
||||||
|
|
||||||
test('Importing - Admin Center', async ({ browser }) => {
|
test('Importing - Admin Center', async ({ browser }) => {
|
||||||
const page = await doCachedLogin(browser, {
|
const page = await doCachedLogin(browser, {
|
||||||
username: 'steven',
|
user: stevenuser,
|
||||||
password: 'wizardstaff',
|
|
||||||
url: 'settings/admin/import'
|
url: 'settings/admin/import'
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -72,8 +72,7 @@ test('Importing - Admin Center', async ({ browser }) => {
|
|||||||
|
|
||||||
test('Importing - BOM', async ({ browser }) => {
|
test('Importing - BOM', async ({ browser }) => {
|
||||||
const page = await doCachedLogin(browser, {
|
const page = await doCachedLogin(browser, {
|
||||||
username: 'steven',
|
user: stevenuser,
|
||||||
password: 'wizardstaff',
|
|
||||||
url: 'part/109/bom'
|
url: 'part/109/bom'
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -153,8 +152,7 @@ test('Importing - BOM', async ({ browser }) => {
|
|||||||
|
|
||||||
test('Importing - Purchase Order', async ({ browser }) => {
|
test('Importing - Purchase Order', async ({ browser }) => {
|
||||||
const page = await doCachedLogin(browser, {
|
const page = await doCachedLogin(browser, {
|
||||||
username: 'steven',
|
user: stevenuser,
|
||||||
password: 'wizardstaff',
|
|
||||||
url: 'purchasing/purchase-order/15/line-items'
|
url: 'purchasing/purchase-order/15/line-items'
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -172,8 +170,7 @@ test('Importing - Purchase Order', async ({ browser }) => {
|
|||||||
|
|
||||||
test('Importing - Natural Keys', async ({ browser }) => {
|
test('Importing - Natural Keys', async ({ browser }) => {
|
||||||
const page = await doCachedLogin(browser, {
|
const page = await doCachedLogin(browser, {
|
||||||
username: 'steven',
|
user: stevenuser,
|
||||||
password: 'wizardstaff',
|
|
||||||
url: 'purchasing/purchase-order/15/line-items'
|
url: 'purchasing/purchase-order/15/line-items'
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { expect, test } from './baseFixtures.js';
|
import { expect, test } from './baseFixtures.js';
|
||||||
import { logoutUrl } from './defaults.js';
|
import { logoutUrl, noaccessuser } from './defaults.js';
|
||||||
import { navigate } from './helpers.js';
|
import { navigate } from './helpers.js';
|
||||||
import { doLogin } from './login.js';
|
import { doLogin } from './login.js';
|
||||||
|
|
||||||
@@ -48,8 +48,7 @@ test('Login - Failures', async ({ page }) => {
|
|||||||
|
|
||||||
test('Login - Change Password', async ({ page }) => {
|
test('Login - Change Password', async ({ page }) => {
|
||||||
await doLogin(page, {
|
await doLogin(page, {
|
||||||
username: 'noaccess',
|
user: noaccessuser
|
||||||
password: 'youshallnotpass'
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// Navigate to the 'change password' page
|
// Navigate to the 'change password' page
|
||||||
@@ -90,8 +89,7 @@ test('Login - Change Password', async ({ page }) => {
|
|||||||
// Tests for assigning MFA tokens to users
|
// Tests for assigning MFA tokens to users
|
||||||
test('Login - MFA - TOTP', async ({ page }) => {
|
test('Login - MFA - TOTP', async ({ page }) => {
|
||||||
await doLogin(page, {
|
await doLogin(page, {
|
||||||
username: 'noaccess',
|
user: noaccessuser
|
||||||
password: 'youshallnotpass'
|
|
||||||
});
|
});
|
||||||
|
|
||||||
await navigate(page, 'settings/user/security', { waitUntil: 'networkidle' });
|
await navigate(page, 'settings/user/security', { waitUntil: 'networkidle' });
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
import test from 'playwright/test';
|
import test from 'playwright/test';
|
||||||
|
import { adminuser } from './defaults';
|
||||||
import { clickOnRowMenu, navigate } from './helpers';
|
import { clickOnRowMenu, navigate } from './helpers';
|
||||||
import { doCachedLogin } from './login';
|
import { doCachedLogin } from './login';
|
||||||
import { setPluginState } from './settings';
|
import { setPluginState } from './settings';
|
||||||
|
|
||||||
test('Machines - Admin Panel', async ({ browser }) => {
|
test('Machines - Admin Panel', async ({ browser }) => {
|
||||||
const page = await doCachedLogin(browser, {
|
const page = await doCachedLogin(browser, {
|
||||||
username: 'admin',
|
user: adminuser,
|
||||||
password: 'inventree',
|
|
||||||
url: 'settings/admin/machine'
|
url: 'settings/admin/machine'
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -20,8 +20,7 @@ test('Machines - Admin Panel', async ({ browser }) => {
|
|||||||
|
|
||||||
test('Machines - Activation', async ({ browser }) => {
|
test('Machines - Activation', async ({ browser }) => {
|
||||||
const page = await doCachedLogin(browser, {
|
const page = await doCachedLogin(browser, {
|
||||||
username: 'admin',
|
user: adminuser,
|
||||||
password: 'inventree',
|
|
||||||
url: 'settings/admin/machine'
|
url: 'settings/admin/machine'
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
import { systemKey, test } from './baseFixtures.js';
|
import { systemKey, test } from './baseFixtures.js';
|
||||||
|
import { adminuser } from './defaults.js';
|
||||||
import { doCachedLogin } from './login.js';
|
import { doCachedLogin } from './login.js';
|
||||||
import { setPluginState } from './settings.js';
|
import { setPluginState } from './settings.js';
|
||||||
|
|
||||||
test('Modals - Admin', async ({ browser }) => {
|
test('Modals - Admin', async ({ browser }) => {
|
||||||
const page = await doCachedLogin(browser, {
|
const page = await doCachedLogin(browser, {
|
||||||
username: 'admin',
|
user: adminuser
|
||||||
password: 'inventree'
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// use server info
|
// use server info
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import test from '@playwright/test';
|
import test from '@playwright/test';
|
||||||
|
import { adminuser, readeruser } from './defaults';
|
||||||
import { clickOnRowMenu, loadTab } from './helpers';
|
import { clickOnRowMenu, loadTab } from './helpers';
|
||||||
import { doCachedLogin } from './login';
|
import { doCachedLogin } from './login';
|
||||||
|
|
||||||
@@ -13,8 +14,7 @@ import { doCachedLogin } from './login';
|
|||||||
test('Permissions - Admin', async ({ browser }) => {
|
test('Permissions - Admin', async ({ browser }) => {
|
||||||
// Login, and start on the "admin" page
|
// Login, and start on the "admin" page
|
||||||
const page = await doCachedLogin(browser, {
|
const page = await doCachedLogin(browser, {
|
||||||
username: 'admin',
|
user: adminuser,
|
||||||
password: 'inventree',
|
|
||||||
url: '/settings/admin/'
|
url: '/settings/admin/'
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -57,8 +57,7 @@ test('Permissions - Admin', async ({ browser }) => {
|
|||||||
test('Permissions - Reader', async ({ browser }) => {
|
test('Permissions - Reader', async ({ browser }) => {
|
||||||
// Login, and start on the "admin" page
|
// Login, and start on the "admin" page
|
||||||
const page = await doCachedLogin(browser, {
|
const page = await doCachedLogin(browser, {
|
||||||
username: 'reader',
|
user: readeruser,
|
||||||
password: 'readonly',
|
|
||||||
url: '/part/category/index/'
|
url: '/part/category/index/'
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import test from 'playwright/test';
|
import test from 'playwright/test';
|
||||||
|
|
||||||
|
import { adminuser } from './defaults.js';
|
||||||
import {
|
import {
|
||||||
clearTableFilters,
|
clearTableFilters,
|
||||||
clickOnRowMenu,
|
clickOnRowMenu,
|
||||||
@@ -13,8 +14,7 @@ import { setPluginState, setSettingState } from './settings.js';
|
|||||||
// Unit test for plugin settings
|
// Unit test for plugin settings
|
||||||
test('Plugins - Settings', async ({ browser }) => {
|
test('Plugins - Settings', async ({ browser }) => {
|
||||||
const page = await doCachedLogin(browser, {
|
const page = await doCachedLogin(browser, {
|
||||||
username: 'admin',
|
user: adminuser
|
||||||
password: 'inventree'
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// Ensure that the SampleIntegration plugin is enabled
|
// Ensure that the SampleIntegration plugin is enabled
|
||||||
@@ -106,8 +106,7 @@ test('Plugins - User Settings', async ({ browser }) => {
|
|||||||
test('Plugins - Functionality', async ({ browser }) => {
|
test('Plugins - Functionality', async ({ browser }) => {
|
||||||
// Navigate and select the plugin
|
// Navigate and select the plugin
|
||||||
const page = await doCachedLogin(browser, {
|
const page = await doCachedLogin(browser, {
|
||||||
username: 'admin',
|
user: adminuser,
|
||||||
password: 'inventree',
|
|
||||||
url: 'settings/admin/plugin/'
|
url: 'settings/admin/plugin/'
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -149,8 +148,7 @@ test('Plugins - Functionality', async ({ browser }) => {
|
|||||||
|
|
||||||
test('Plugins - Panels', async ({ browser }) => {
|
test('Plugins - Panels', async ({ browser }) => {
|
||||||
const page = await doCachedLogin(browser, {
|
const page = await doCachedLogin(browser, {
|
||||||
username: 'admin',
|
user: adminuser
|
||||||
password: 'inventree'
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// Ensure that UI plugins are enabled
|
// Ensure that UI plugins are enabled
|
||||||
@@ -198,8 +196,7 @@ test('Plugins - Panels', async ({ browser }) => {
|
|||||||
*/
|
*/
|
||||||
test('Plugins - Custom Admin', async ({ browser }) => {
|
test('Plugins - Custom Admin', async ({ browser }) => {
|
||||||
const page = await doCachedLogin(browser, {
|
const page = await doCachedLogin(browser, {
|
||||||
username: 'admin',
|
user: adminuser
|
||||||
password: 'inventree'
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// Ensure that the SampleUI plugin is enabled
|
// Ensure that the SampleUI plugin is enabled
|
||||||
@@ -231,8 +228,7 @@ test('Plugins - Custom Admin', async ({ browser }) => {
|
|||||||
|
|
||||||
test('Plugins - Locate Item', async ({ browser }) => {
|
test('Plugins - Locate Item', async ({ browser }) => {
|
||||||
const page = await doCachedLogin(browser, {
|
const page = await doCachedLogin(browser, {
|
||||||
username: 'admin',
|
user: adminuser
|
||||||
password: 'inventree'
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// Ensure that the sample location plugin is enabled
|
// Ensure that the sample location plugin is enabled
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import { expect, test } from './baseFixtures.js';
|
import { expect, test } from './baseFixtures.js';
|
||||||
|
import { adminuser } from './defaults.js';
|
||||||
import { activateTableView, loadTab } from './helpers.js';
|
import { activateTableView, loadTab } from './helpers.js';
|
||||||
import { doCachedLogin } from './login.js';
|
import { doCachedLogin } from './login.js';
|
||||||
import { setPluginState } from './settings.js';
|
import { setPluginState } from './settings.js';
|
||||||
@@ -79,8 +80,7 @@ test('Printing - Report Printing', async ({ browser }) => {
|
|||||||
|
|
||||||
test('Printing - Report Editing', async ({ browser }) => {
|
test('Printing - Report Editing', async ({ browser }) => {
|
||||||
const page = await doCachedLogin(browser, {
|
const page = await doCachedLogin(browser, {
|
||||||
username: 'admin',
|
user: adminuser
|
||||||
password: 'inventree'
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// activate the sample plugin for this test
|
// activate the sample plugin for this test
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import { createApi } from './api.js';
|
import { createApi } from './api.js';
|
||||||
import { expect, test } from './baseFixtures.js';
|
import { expect, test } from './baseFixtures.js';
|
||||||
|
import { adminuser, allaccessuser, stevenuser } from './defaults.js';
|
||||||
import { getRowFromCell, loadTab, navigate } from './helpers.js';
|
import { getRowFromCell, loadTab, navigate } from './helpers.js';
|
||||||
import { doCachedLogin } from './login.js';
|
import { doCachedLogin } from './login.js';
|
||||||
import { setPluginState, setSettingState } from './settings.js';
|
import { setPluginState, setSettingState } from './settings.js';
|
||||||
@@ -34,8 +35,7 @@ import { setPluginState, setSettingState } from './settings.js';
|
|||||||
|
|
||||||
test('Settings - User theme', async ({ browser }) => {
|
test('Settings - User theme', async ({ browser }) => {
|
||||||
const page = await doCachedLogin(browser, {
|
const page = await doCachedLogin(browser, {
|
||||||
username: 'allaccess',
|
user: allaccessuser
|
||||||
password: 'nolimits'
|
|
||||||
});
|
});
|
||||||
|
|
||||||
await page.waitForLoadState('networkidle');
|
await page.waitForLoadState('networkidle');
|
||||||
@@ -82,8 +82,7 @@ test('Settings - User theme', async ({ browser }) => {
|
|||||||
|
|
||||||
test('Settings - User', async ({ browser }) => {
|
test('Settings - User', async ({ browser }) => {
|
||||||
const page = await doCachedLogin(browser, {
|
const page = await doCachedLogin(browser, {
|
||||||
username: 'allaccess',
|
user: allaccessuser,
|
||||||
password: 'nolimits',
|
|
||||||
url: 'settings/user/'
|
url: 'settings/user/'
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -136,8 +135,7 @@ test('Settings - User', async ({ browser }) => {
|
|||||||
|
|
||||||
test('Settings - Global', async ({ browser }) => {
|
test('Settings - Global', async ({ browser }) => {
|
||||||
const page = await doCachedLogin(browser, {
|
const page = await doCachedLogin(browser, {
|
||||||
username: 'steven',
|
user: stevenuser,
|
||||||
password: 'wizardstaff',
|
|
||||||
url: 'settings/system/'
|
url: 'settings/system/'
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -214,8 +212,7 @@ test('Settings - Global', async ({ browser }) => {
|
|||||||
test('Settings - Admin', async ({ browser }) => {
|
test('Settings - Admin', async ({ browser }) => {
|
||||||
// Note here we login with admin access
|
// Note here we login with admin access
|
||||||
const page = await doCachedLogin(browser, {
|
const page = await doCachedLogin(browser, {
|
||||||
username: 'admin',
|
user: adminuser
|
||||||
password: 'inventree'
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// User settings
|
// User settings
|
||||||
@@ -320,8 +317,7 @@ test('Settings - Admin', async ({ browser }) => {
|
|||||||
test('Settings - Admin - Barcode History', async ({ browser }) => {
|
test('Settings - Admin - Barcode History', async ({ browser }) => {
|
||||||
// Login with admin credentials
|
// Login with admin credentials
|
||||||
const page = await doCachedLogin(browser, {
|
const page = await doCachedLogin(browser, {
|
||||||
username: 'admin',
|
user: adminuser
|
||||||
password: 'inventree'
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// Ensure that the "save scans" setting is enabled
|
// Ensure that the "save scans" setting is enabled
|
||||||
@@ -375,8 +371,7 @@ test('Settings - Admin - Barcode History', async ({ browser }) => {
|
|||||||
|
|
||||||
test('Settings - Admin - Parameter', async ({ browser }) => {
|
test('Settings - Admin - Parameter', async ({ browser }) => {
|
||||||
const page = await doCachedLogin(browser, {
|
const page = await doCachedLogin(browser, {
|
||||||
username: 'admin',
|
user: adminuser
|
||||||
password: 'inventree'
|
|
||||||
});
|
});
|
||||||
await page.getByRole('button', { name: 'admin' }).click();
|
await page.getByRole('button', { name: 'admin' }).click();
|
||||||
await page.getByRole('menuitem', { name: 'Admin Center' }).click();
|
await page.getByRole('menuitem', { name: 'Admin Center' }).click();
|
||||||
@@ -483,8 +478,7 @@ test('Settings - Admin - Parameter', async ({ browser }) => {
|
|||||||
test('Settings - Admin - Unauthorized', async ({ browser }) => {
|
test('Settings - Admin - Unauthorized', async ({ browser }) => {
|
||||||
// Try to access "admin" page with a non-staff user
|
// Try to access "admin" page with a non-staff user
|
||||||
const page = await doCachedLogin(browser, {
|
const page = await doCachedLogin(browser, {
|
||||||
username: 'allaccess',
|
user: allaccessuser,
|
||||||
password: 'nolimits',
|
|
||||||
url: 'settings/admin/'
|
url: 'settings/admin/'
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -516,8 +510,7 @@ test('Settings - Admin - Unauthorized', async ({ browser }) => {
|
|||||||
// Test for user auth configuration
|
// Test for user auth configuration
|
||||||
test('Settings - Auth - Email', async ({ browser }) => {
|
test('Settings - Auth - Email', async ({ browser }) => {
|
||||||
const page = await doCachedLogin(browser, {
|
const page = await doCachedLogin(browser, {
|
||||||
username: 'allaccess',
|
user: allaccessuser,
|
||||||
password: 'nolimits',
|
|
||||||
url: 'settings/user/'
|
url: 'settings/user/'
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import { test } from './baseFixtures.js';
|
import { test } from './baseFixtures.js';
|
||||||
|
import { stevenuser } from './defaults.js';
|
||||||
import {
|
import {
|
||||||
clearTableFilters,
|
clearTableFilters,
|
||||||
navigate,
|
navigate,
|
||||||
@@ -43,8 +44,7 @@ test('Tables - Filters', async ({ browser }) => {
|
|||||||
test('Tables - Pagination', async ({ browser }) => {
|
test('Tables - Pagination', async ({ browser }) => {
|
||||||
const page = await doCachedLogin(browser, {
|
const page = await doCachedLogin(browser, {
|
||||||
url: 'manufacturing/index/buildorders',
|
url: 'manufacturing/index/buildorders',
|
||||||
username: 'steven',
|
user: stevenuser
|
||||||
password: 'wizardstaff'
|
|
||||||
});
|
});
|
||||||
|
|
||||||
await clearTableFilters(page);
|
await clearTableFilters(page);
|
||||||
@@ -76,8 +76,7 @@ test('Tables - Columns', async ({ browser }) => {
|
|||||||
// Go to the "stock list" page
|
// Go to the "stock list" page
|
||||||
const page = await doCachedLogin(browser, {
|
const page = await doCachedLogin(browser, {
|
||||||
url: 'stock/location/index/stock-items',
|
url: 'stock/location/index/stock-items',
|
||||||
username: 'steven',
|
user: stevenuser
|
||||||
password: 'wizardstaff'
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// Open column selector
|
// Open column selector
|
||||||
@@ -104,8 +103,7 @@ test('Tables - Sorting', async ({ browser }) => {
|
|||||||
// Go to the "stock list" page
|
// Go to the "stock list" page
|
||||||
const page = await doCachedLogin(browser, {
|
const page = await doCachedLogin(browser, {
|
||||||
url: 'stock/location/index/stock-items',
|
url: 'stock/location/index/stock-items',
|
||||||
username: 'steven',
|
user: stevenuser
|
||||||
password: 'wizardstaff'
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// Stock table sorting
|
// Stock table sorting
|
||||||
|
|||||||
Reference in New Issue
Block a user