Files
kandev/apps/web/e2e/tests/workflow/workflow-steps.spec.ts
T

64 lines
2.1 KiB
TypeScript

import { test, expect } from "../../fixtures/test-base";
import { KanbanPage } from "../../pages/kanban-page";
test.describe("Workflow steps", () => {
test("task appears in correct column after API move", async ({
testPage,
apiClient,
seedData,
}) => {
// Seed a task (lands in the start step by default)
const task = await apiClient.createTask(seedData.workspaceId, "Workflow Move Task", {
workflow_id: seedData.workflowId,
workflow_step_id: seedData.startStepId,
});
// Find a non-start step to move to
const targetStep = seedData.steps.find((s) => !s.is_start_step);
if (!targetStep) {
test.skip(true, "No non-start step available to test move");
return;
}
// Move the task via API
await apiClient.moveTask(task.id, seedData.workflowId, targetStep.id);
// Navigate to kanban and verify the card is visible
const kanban = new KanbanPage(testPage);
await kanban.goto();
const card = kanban.taskCardByTitle("Workflow Move Task");
await expect(card).toBeVisible();
});
test("multiple tasks can be seeded into different steps", async ({
testPage,
apiClient,
seedData,
}) => {
const startStep = seedData.steps.find((s) => s.is_start_step) ?? seedData.steps[0];
const otherStep = seedData.steps.find((s) => s.id !== startStep.id);
if (!otherStep) {
test.skip(true, "Need at least 2 workflow steps");
return;
}
// Create tasks and move one
await apiClient.createTask(seedData.workspaceId, "Step A Task", {
workflow_id: seedData.workflowId,
workflow_step_id: seedData.startStepId,
});
const taskB = await apiClient.createTask(seedData.workspaceId, "Step B Task", {
workflow_id: seedData.workflowId,
workflow_step_id: seedData.startStepId,
});
await apiClient.moveTask(taskB.id, seedData.workflowId, otherStep.id);
const kanban = new KanbanPage(testPage);
await kanban.goto();
await expect(kanban.taskCardByTitle("Step A Task")).toBeVisible();
await expect(kanban.taskCardByTitle("Step B Task")).toBeVisible();
});
});