mirror of
https://github.com/solidtime-io/solidtime.git
synced 2026-10-17 02:03:16 +01:00
fix e2e submit focus test behaviour
This commit is contained in:
@@ -1592,6 +1592,9 @@ test('test that ctrl+enter submits the create modal after selecting a project vi
|
|||||||
await page.getByRole('button', { name: 'Time entry actions' }).click();
|
await page.getByRole('button', { name: 'Time entry actions' }).click();
|
||||||
await page.getByRole('menuitem', { name: 'Manual time entry' }).click();
|
await page.getByRole('menuitem', { name: 'Manual time entry' }).click();
|
||||||
await expect(page.getByRole('dialog')).toBeVisible();
|
await expect(page.getByRole('dialog')).toBeVisible();
|
||||||
|
// The menu that opened the modal animates out and only then hands focus back to its
|
||||||
|
// own trigger.
|
||||||
|
await expect(page.locator('[role="menu"]')).toHaveCount(0);
|
||||||
|
|
||||||
// Fill the description, then move to the project dropdown and select a project purely via keyboard
|
// Fill the description, then move to the project dropdown and select a project purely via keyboard
|
||||||
const description = page.getByRole('dialog').getByRole('textbox', { name: 'Description' });
|
const description = page.getByRole('dialog').getByRole('textbox', { name: 'Description' });
|
||||||
@@ -1604,7 +1607,11 @@ test('test that ctrl+enter submits the create modal after selecting a project vi
|
|||||||
await page.getByTestId('client_dropdown_search').fill(projectName);
|
await page.getByTestId('client_dropdown_search').fill(projectName);
|
||||||
await expect(page.getByRole('option', { name: projectName })).toBeVisible();
|
await expect(page.getByRole('option', { name: projectName })).toBeVisible();
|
||||||
await page.keyboard.press('Enter');
|
await page.keyboard.press('Enter');
|
||||||
await expect(page.getByRole('dialog').getByRole('button', { name: projectName })).toBeVisible();
|
const projectTrigger = page.getByRole('dialog').getByRole('button', { name: projectName });
|
||||||
|
await expect(projectTrigger).toBeVisible();
|
||||||
|
// The trigger label updates on the next tick, but the dropdown keeps focus until its
|
||||||
|
// exit animation has finished and reka-ui hands focus back to the trigger.
|
||||||
|
await expect(projectTrigger).toBeFocused();
|
||||||
|
|
||||||
// Ctrl+Enter must submit even though focus is no longer on the description input
|
// Ctrl+Enter must submit even though focus is no longer on the description input
|
||||||
const [createResponse] = await Promise.all([
|
const [createResponse] = await Promise.all([
|
||||||
@@ -1617,7 +1624,10 @@ test('test that ctrl+enter submits the create modal after selecting a project vi
|
|||||||
expect(createBody.data.description).toBe('Keyboard submit test');
|
expect(createBody.data.description).toBe('Keyboard submit test');
|
||||||
expect(createBody.data.project_id).not.toBeNull();
|
expect(createBody.data.project_id).not.toBeNull();
|
||||||
await expect(page.getByRole('dialog')).toBeHidden();
|
await expect(page.getByRole('dialog')).toBeHidden();
|
||||||
await expect(page.getByText('Keyboard submit test')).toBeVisible();
|
const newTimeEntry = page.locator('[data-testid="time_entry_row"]').first();
|
||||||
|
await expect(newTimeEntry.getByTestId('time_entry_description').first()).toHaveValue(
|
||||||
|
'Keyboard submit test'
|
||||||
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('test that tag selection works in create modal', async ({ page }) => {
|
test('test that tag selection works in create modal', async ({ page }) => {
|
||||||
|
|||||||
Reference in New Issue
Block a user