mirror of
https://github.com/inventree/InvenTree.git
synced 2025-09-15 07:01:31 +00:00
[CI] Playwright improvements (#9395)
* Allow port 4173 (vite preview) * Change 'base' attr based on vite command * Allow api_host to be specified separately * Harden API host functionality * Adjust server selections * Cleanup vite.config.ts * Adjust playwright configuration - Allow to run in "production" mode - Builds the code first - Runs only the backend web server - Not suitable for coverage * Tweak github actions * Tweak QC file * Reduce number of steps * Tweak CI file * Fix typo * Ensure translation before build * Fix hard-coded test * Test tweaks * uncomment * Revert some changes * Run with gunicorn, single worker * Reduce log output in DEBUG mode * Update deps * Add global-setup func * Fix for .gitignore file * Cached auth state * Tweak login func * Updated tests * Enable parallel workers again * Simplify config * Try with a single worker again * Single retry mode * Run auth setup first - Prevent issues with parallel test doing login * Improve test setup process * Tweaks * Bump to 3 workers * Tweak playwright settings * Revert change * Revert change
This commit is contained in:
144
src/frontend/tests/pui_modals.spec.ts
Normal file
144
src/frontend/tests/pui_modals.spec.ts
Normal file
@@ -0,0 +1,144 @@
|
||||
import { systemKey, test } from './baseFixtures.js';
|
||||
import { doCachedLogin } from './login.js';
|
||||
|
||||
test('Modals - Admin', async ({ browser }) => {
|
||||
const page = await doCachedLogin(browser, {
|
||||
username: 'admin',
|
||||
password: 'inventree'
|
||||
});
|
||||
|
||||
// use server info
|
||||
await page.getByLabel('open-spotlight').click();
|
||||
await page
|
||||
.getByRole('button', {
|
||||
name: 'Server Information About this InvenTree instance'
|
||||
})
|
||||
.click();
|
||||
await page.getByRole('cell', { name: 'Instance Name' }).waitFor();
|
||||
await page.getByRole('button', { name: 'Close' }).click();
|
||||
|
||||
// use license info
|
||||
await page.getByLabel('open-spotlight').click();
|
||||
await page
|
||||
.getByRole('button', {
|
||||
name: 'License Information Licenses for dependencies of the service'
|
||||
})
|
||||
.click();
|
||||
await page.getByText('License Information').first().waitFor();
|
||||
await page.getByRole('tab', { name: 'backend Packages' }).click();
|
||||
await page.getByRole('button', { name: 'Babel BSD License' }).click();
|
||||
await page
|
||||
.getByText('by the Babel Team, see AUTHORS for more information')
|
||||
.waitFor();
|
||||
|
||||
await page.getByRole('tab', { name: 'frontend Packages' }).click();
|
||||
await page.getByRole('button', { name: '@sentry/core MIT' }).click();
|
||||
await page
|
||||
.getByLabel('@sentry/coreMIT')
|
||||
.getByText('Copyright (c) 2019')
|
||||
.waitFor();
|
||||
|
||||
await page
|
||||
.getByLabel('License Information')
|
||||
.getByRole('button')
|
||||
.first()
|
||||
.click();
|
||||
|
||||
// use about
|
||||
await page.getByLabel('open-spotlight').click();
|
||||
await page
|
||||
.getByRole('button', { name: 'About InvenTree About the InvenTree org' })
|
||||
.click();
|
||||
await page.getByRole('cell', { name: 'InvenTree Version' }).click();
|
||||
});
|
||||
|
||||
test('Quick Command', async ({ browser }) => {
|
||||
const page = await doCachedLogin(browser);
|
||||
|
||||
await page.waitForLoadState('networkidle');
|
||||
|
||||
// Open Spotlight with Keyboard Shortcut and Search
|
||||
await page.locator('body').press(`${systemKey}+k`);
|
||||
await page.waitForTimeout(200);
|
||||
await page.getByPlaceholder('Search...').fill('Dashboard');
|
||||
await page.getByPlaceholder('Search...').press('Tab');
|
||||
await page.getByPlaceholder('Search...').press('Enter');
|
||||
});
|
||||
|
||||
test('Quick Command - No Keys', async ({ browser }) => {
|
||||
const page = await doCachedLogin(browser);
|
||||
|
||||
await page.waitForLoadState('networkidle');
|
||||
|
||||
// Open Spotlight with Button
|
||||
await page.getByLabel('open-spotlight').click();
|
||||
await page
|
||||
.getByRole('button', { name: 'Dashboard Go to the InvenTree' })
|
||||
.click();
|
||||
|
||||
await page.getByText('InvenTree Demo Server - ').waitFor();
|
||||
|
||||
// Use navigation menu
|
||||
await page.getByLabel('open-spotlight').click();
|
||||
|
||||
await page.waitForLoadState('networkidle');
|
||||
|
||||
await page.getByRole('button', { name: 'Open Navigation' }).click();
|
||||
|
||||
await page.waitForTimeout(250);
|
||||
|
||||
// assert the nav headers are visible
|
||||
await page.getByText('Navigation').waitFor();
|
||||
await page.getByText('Documentation').waitFor();
|
||||
await page.getByText('About').first().waitFor();
|
||||
await page
|
||||
.getByRole('button', { name: 'Notifications', exact: true })
|
||||
.waitFor();
|
||||
await page.getByRole('button', { name: 'Dashboard', exact: true }).waitFor();
|
||||
|
||||
// close the nav
|
||||
await page.keyboard.press('Escape');
|
||||
|
||||
// use server info
|
||||
await page.getByLabel('open-spotlight').click();
|
||||
await page
|
||||
.getByRole('button', {
|
||||
name: 'Server Information About this InvenTree instance'
|
||||
})
|
||||
.click();
|
||||
await page.getByRole('cell', { name: 'Instance Name' }).waitFor();
|
||||
await page.getByRole('button', { name: 'Close' }).click();
|
||||
|
||||
// use license info
|
||||
await page.getByLabel('open-spotlight').click();
|
||||
await page
|
||||
.getByRole('button', {
|
||||
name: 'License Information Licenses for dependencies of the service'
|
||||
})
|
||||
.click();
|
||||
await page.getByText('License Information').first().waitFor();
|
||||
await page.getByRole('tab', { name: 'backend Packages' }).waitFor();
|
||||
await page.getByRole('button', { name: 'Django BSD License' }).click();
|
||||
|
||||
await page.keyboard.press('Escape');
|
||||
|
||||
// use about
|
||||
await page.getByLabel('open-spotlight').click();
|
||||
await page
|
||||
.getByRole('button', { name: 'About InvenTree About the InvenTree org' })
|
||||
.click();
|
||||
await page.getByText('This information is only').waitFor();
|
||||
|
||||
await page.getByLabel('About InvenTree').getByRole('button').click();
|
||||
|
||||
// use documentation
|
||||
await page.getByLabel('open-spotlight').click();
|
||||
await page
|
||||
.getByRole('button', {
|
||||
name: 'Documentation Visit the documentation to learn more about InvenTree'
|
||||
})
|
||||
.click();
|
||||
await page.waitForURL('https://docs.inventree.org/**');
|
||||
|
||||
// TODO: Test addition of new actions
|
||||
});
|
Reference in New Issue
Block a user