2
0
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:
Matthias Mair
2026-03-14 03:29:46 +01:00
committed by GitHub
parent fda3204e33
commit d7af345e20
22 changed files with 118 additions and 105 deletions

View File

@@ -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
}); });
} }

View File

@@ -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}`)}`
} }
}); });

View File

@@ -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');

View File

@@ -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'
}; };

View File

@@ -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

View File

@@ -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'
}); });

View File

@@ -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();

View File

@@ -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();

View File

@@ -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'
}); });

View File

@@ -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/'
}); });

View File

@@ -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');

View File

@@ -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/**');

View File

@@ -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

View File

@@ -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'
}); });

View File

@@ -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' });

View File

@@ -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'
}); });

View File

@@ -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

View File

@@ -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/'
}); });

View File

@@ -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

View File

@@ -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

View File

@@ -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/'
}); });

View File

@@ -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