Files
actual/packages/desktop-client/e2e/command-bar.test.ts
2026-02-10 13:33:20 +00:00

80 lines
2.4 KiB
TypeScript

import type { Page } from '@playwright/test';
import { expect, test } from './fixtures';
import { ConfigurationPage } from './page-models/configuration-page';
test.describe('Command bar', () => {
let page: Page;
let configurationPage: ConfigurationPage;
test.beforeEach(async ({ browser }) => {
page = await browser.newPage();
configurationPage = new ConfigurationPage(page);
await page.goto('/');
await configurationPage.createTestFile();
// Move mouse to corner of the screen;
// sometimes the mouse hovers on a budget element thus rendering an input box
// and this breaks screenshot tests
await page.mouse.move(0, 0);
// ensure page is loaded
await expect(page.getByTestId('budget-table')).toBeVisible();
await expect(page.getByRole('button', { name: 'Add group' })).toBeVisible({
timeout: 10000,
});
});
test.afterEach(async () => {
await page?.close();
});
test('Check the command bar visuals', async () => {
// Open the command bar
await page.keyboard.press('ControlOrMeta+k');
const commandBar = page.getByRole('combobox', {
name: 'Command Bar',
});
await expect(commandBar).toBeVisible();
await expect(page).toMatchThemeScreenshots();
// Close the command bar
await page.keyboard.press('Escape');
await expect(commandBar).not.toBeVisible();
});
test('Check the command bar search works correctly', async () => {
await page.keyboard.press('ControlOrMeta+k');
const commandBar = page.getByRole('combobox', {
name: 'Command Bar',
});
await expect(commandBar).toBeVisible();
await expect(commandBar).toHaveValue('');
// Search and navigate to reports
await commandBar.fill('reports');
await page.keyboard.press('Enter');
await expect(page.getByTestId('reports-page')).toBeVisible();
await expect(page.getByText('Loading reports...')).not.toBeVisible({
timeout: 10000, // Wait for 10 seconds max for reports to load
}); // wait for screen to load
// Navigate to schedule page
await page.keyboard.press('ControlOrMeta+k');
await page.keyboard.press('ArrowDown');
await page.keyboard.press('ArrowDown'); // Select second suggestion - Schedules
await expect(page).toMatchThemeScreenshots();
await page.keyboard.press('Enter');
await expect(
page.getByRole('button', {
name: 'Add new schedule',
}),
).toBeVisible();
});
});