feat(frontend): streamline task creation and preview workflows

- remove prompt and preview generation from task creation

- create tasks as inactive and route directly to edit page

- add generated message history UX to edit task

- update entity/task views and related test coverage
This commit is contained in:
2026-03-27 02:23:56 -03:00
parent a83ea85857
commit f2a16b5cf6
10 changed files with 430 additions and 222 deletions

View File

@@ -186,6 +186,59 @@ describe('EditTaskPage', () => {
})
})
it('should_renderGeneratedMessagePanels_when_pageLoads', async () => {
renderPage()
await screen.findByRole('link', { name: /back to entity a/i })
expect(screen.getByText(/Final Prompt/i)).toBeInTheDocument()
expect(screen.getByText(/^Generated Message$/i)).toBeInTheDocument()
expect(screen.getByText(/^Generated Message History$/i)).toBeInTheDocument()
expect(screen.getByText(/Generate a message and it will appear here./i)).toBeInTheDocument()
expect(screen.getByRole('list', { name: /generated message history/i })).toBeInTheDocument()
expect(screen.getByText(/No generated messages yet./i)).toBeInTheDocument()
})
it('should_showAndManageGeneratedMessageHistory_when_multipleMessagesGenerated', async () => {
vi.mocked(tasksApi.generateTaskPreview)
.mockResolvedValueOnce('SUBJECT: First\nBODY:\nFirst output')
.mockResolvedValueOnce('SUBJECT: Second\nBODY:\nSecond output')
renderPage()
await screen.findByRole('link', { name: /back to entity a/i })
const generateButton = screen.getByRole('button', { name: /generate test message/i })
fireEvent.click(generateButton)
await screen.findByText(/First output/i)
fireEvent.click(generateButton)
await waitFor(() => {
expect(screen.getByText(/Second output/i)).toBeInTheDocument()
})
const history = screen.getByRole('list', { name: /generated message history/i })
expect(history).toBeInTheDocument()
const firstMessageHistoryItem = screen.getByRole('button', { name: /^message #1$/i })
const secondMessageHistoryItem = screen.getByRole('button', { name: /^message #2$/i })
fireEvent.click(firstMessageHistoryItem)
expect(screen.getByText(/First output/i)).toBeInTheDocument()
fireEvent.click(
screen.getByRole('button', {
name: /delete message #1/i,
})
)
await waitFor(() => {
expect(firstMessageHistoryItem).not.toBeInTheDocument()
expect(secondMessageHistoryItem).toBeInTheDocument()
})
})
it('should_renderActivateButton_when_taskIsInactive', async () => {
renderPage({ task: { ...mockTask, active: false } })