mirror of
https://github.com/podman-desktop/podman-desktop
synced 2026-04-21 17:47:22 +00:00
chore(test): new e2e tests for tasks page (#16797)
* chore(test): new e2e tests for tasks page
This commit is contained in:
parent
9bc7faa1bc
commit
275cdcf5fc
3 changed files with 62 additions and 7 deletions
|
|
@ -36,7 +36,7 @@ export class TasksPage extends BasePage {
|
|||
readonly inProgressTasksButton: Locator;
|
||||
readonly successTasksButton: Locator;
|
||||
readonly failureTasksButton: Locator;
|
||||
readonly cancelledTasksButton: Locator;
|
||||
readonly canceledTasksButton: Locator;
|
||||
readonly content: Locator;
|
||||
readonly noTasksPlaceholder: Locator;
|
||||
readonly taskListHeader: Locator;
|
||||
|
|
@ -56,11 +56,11 @@ export class TasksPage extends BasePage {
|
|||
this.tasksSearchBar = this.tasksManagerWindow.getByRole('region', { name: 'search' });
|
||||
this.tasksSearchInput = this.tasksSearchBar.getByLabel('search Tasks');
|
||||
this.tasksSearchClearButton = this.tasksSearchBar.getByRole('button', { name: 'clear' });
|
||||
this.allTasksButton = this.tasksManagerWindow.getByRole('button', { name: 'All' });
|
||||
this.allTasksButton = this.tasksManagerWindow.getByRole('button', { name: 'All', exact: true });
|
||||
this.inProgressTasksButton = this.tasksManagerWindow.getByRole('button', { name: 'In-Progress' });
|
||||
this.successTasksButton = this.tasksManagerWindow.getByRole('button', { name: 'Success' });
|
||||
this.failureTasksButton = this.tasksManagerWindow.getByRole('button', { name: 'Failure' });
|
||||
this.cancelledTasksButton = this.tasksManagerWindow.getByRole('button', { name: 'Cancelled' });
|
||||
this.canceledTasksButton = this.tasksManagerWindow.getByRole('button', { name: 'Canceled' });
|
||||
this.content = this.tasksManagerWindow.getByRole('region', { name: 'content' });
|
||||
this.noTasksPlaceholder = this.content.getByRole('table', { name: 'No active tasks' });
|
||||
this.taskListHeader = this.content.getByRole('rowgroup').nth(0);
|
||||
|
|
@ -123,6 +123,22 @@ export class TasksPage extends BasePage {
|
|||
await playExpect(taskRow).not.toBeVisible();
|
||||
}
|
||||
|
||||
async getTaskRowCount(): Promise<number> {
|
||||
return this.taskList.getByRole('row').count();
|
||||
}
|
||||
|
||||
async searchTasks(query: string): Promise<void> {
|
||||
await playExpect(this.tasksSearchInput).toBeVisible();
|
||||
await this.tasksSearchInput.fill(query);
|
||||
await playExpect(this.tasksSearchInput).toHaveValue(query);
|
||||
}
|
||||
|
||||
async clearSearch(): Promise<void> {
|
||||
await playExpect(this.tasksSearchClearButton).toBeVisible();
|
||||
await this.tasksSearchClearButton.click();
|
||||
await playExpect(this.tasksSearchInput).toHaveValue('');
|
||||
}
|
||||
|
||||
private getTaskRowByName(taskName: string): Locator {
|
||||
return this.taskList.getByRole('row', { name: taskName });
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,12 +20,12 @@ import { TaskState } from '/@/model/core/states';
|
|||
import { CommandPalette } from '/@/model/pages/command-palette';
|
||||
import { ExperimentalPage } from '/@/model/pages/experimental-page';
|
||||
import { TasksPage } from '/@/model/pages/tasks-page';
|
||||
import { StatusBar } from '/@/model/workbench/status-bar';
|
||||
import { expect as playExpect, test } from '/@/utility/fixtures';
|
||||
import { waitForPodmanMachineStartup } from '/@/utility/wait';
|
||||
|
||||
const longRunningTaskName = 'quay.io/fbenoit/long-task-example:v1.0';
|
||||
const taskName = 'Dummy Long Task';
|
||||
const taskDisplayName = 'Doing something';
|
||||
|
||||
test.beforeAll(async ({ runner, welcomePage, page }) => {
|
||||
runner.setVideoAndTraceName('cancelable-task-e2e');
|
||||
|
|
@ -54,11 +54,10 @@ test.describe
|
|||
await extensionsPage.installExtensionFromOCIImage(longRunningTaskName);
|
||||
});
|
||||
|
||||
test('Cancel long running task', async ({ page }) => {
|
||||
test('Cancel long running task', async ({ page, statusBar }) => {
|
||||
const commandPalettePage = new CommandPalette(page);
|
||||
await commandPalettePage.executeCommand(taskName);
|
||||
|
||||
const statusBar = new StatusBar(page);
|
||||
const tasksPage = await statusBar.openTasksPage();
|
||||
await playExpect(tasksPage.heading).toBeVisible();
|
||||
await tasksPage.cancelLatestTask();
|
||||
|
|
@ -78,6 +77,46 @@ test.describe
|
|||
.toContain(TaskState.Success);
|
||||
});
|
||||
|
||||
test('Filter tasks by status', async ({ page }) => {
|
||||
const tasksPage = new TasksPage(page);
|
||||
await playExpect(tasksPage.heading).toBeVisible();
|
||||
|
||||
await tasksPage.canceledTasksButton.click();
|
||||
await playExpect
|
||||
.poll(async () => await tasksPage.getTaskRowCount(), { timeout: 10_000 })
|
||||
.toBeGreaterThanOrEqual(1);
|
||||
await playExpect.poll(async () => await tasksPage.getStatusForLatestTask()).toContain(TaskState.Canceled);
|
||||
|
||||
await tasksPage.successTasksButton.click();
|
||||
await playExpect
|
||||
.poll(async () => await tasksPage.getTaskRowCount(), { timeout: 10_000 })
|
||||
.toBeGreaterThanOrEqual(1);
|
||||
await playExpect.poll(async () => await tasksPage.getStatusForLatestTask()).toContain(TaskState.Success);
|
||||
|
||||
await tasksPage.allTasksButton.click();
|
||||
await playExpect
|
||||
.poll(async () => await tasksPage.getTaskRowCount(), { timeout: 10_000 })
|
||||
.toBeGreaterThanOrEqual(2);
|
||||
});
|
||||
|
||||
test('Search tasks by name', async ({ page }) => {
|
||||
const tasksPage = new TasksPage(page);
|
||||
await playExpect(tasksPage.heading).toBeVisible();
|
||||
|
||||
await tasksPage.searchTasks(taskDisplayName);
|
||||
await playExpect
|
||||
.poll(async () => await tasksPage.getTaskRowCount(), { timeout: 10_000 })
|
||||
.toBeGreaterThanOrEqual(1);
|
||||
|
||||
await tasksPage.searchTasks('nonexistent-task-xyz');
|
||||
await playExpect.poll(async () => await tasksPage.getTaskRowCount(), { timeout: 10_000 }).toBe(0);
|
||||
|
||||
await tasksPage.clearSearch();
|
||||
await playExpect
|
||||
.poll(async () => await tasksPage.getTaskRowCount(), { timeout: 10_000 })
|
||||
.toBeGreaterThanOrEqual(2);
|
||||
});
|
||||
|
||||
test('Clear all tasks', async ({ page }) => {
|
||||
const tasksPage = new TasksPage(page);
|
||||
await playExpect(tasksPage.heading).toBeVisible();
|
||||
|
|
|
|||
|
|
@ -192,7 +192,7 @@ test.describe
|
|||
await playExpect(podDetails.heading).toContainText(podToRun);
|
||||
await podDetails.activateTab('Logs');
|
||||
|
||||
await podDetails.findInLogs('backend');
|
||||
await podDetails.findInLogs('redis');
|
||||
await playExpect
|
||||
.poll(async () => podDetails.getCountOfSearchResults(), { timeout: 10_000 })
|
||||
.toBeGreaterThanOrEqual(1);
|
||||
|
|
|
|||
Loading…
Reference in a new issue