Files
LocalAI/core/http/react-ui/e2e/agents.spec.js
T
localai-org-maint-botandlocalai-org-maint-bot 95653f221e fix(ui): keep agent import action visible (#11488)
* fix(ui): keep agent import action visible

The header hid its full import label after the agent list became non-empty. Hide only the nested file input so users can import more agents.

Assisted-by: Codex:gpt-5

* test(ui): match the agent import label

The Agents page renders the action as Import.

The test searched for Import Agent, so it failed before checking visibility.

Mock the observables request to remove backend timing from the fixture.

Assisted-by: Codex:gpt-5

---------

Co-authored-by: localai-org-maint-bot <306269227+localai-org-maint-bot@users.noreply.github.com>
2026-08-14 15:06:51 +02:00

42 lines
1.7 KiB
JavaScript

import { test, expect } from './coverage-fixtures.js'
// Agents feature page (src/pages/Agents.jsx).
test.describe('Agents page', () => {
test.beforeEach(async ({ page }) => {
await page.goto('/app/agents')
})
test('renders the agents list and empty state', async ({ page }) => {
await expect(page).toHaveURL(/\/app\/agents$/)
await expect(page.getByRole('heading', { name: 'Agents', exact: true })).toBeVisible()
await expect(page.getByText(/No agents configured/i)).toBeVisible()
await expect(page.getByRole('button', { name: 'Create Agent' }).first()).toBeVisible()
})
test('keeps Import Agent visible when agents exist', async ({ page }) => {
await page.route('**/api/agents', route => route.fulfill({
json: { agents: ['existing-agent'], statuses: { 'existing-agent': true } },
}))
await page.route('**/api/agents/existing-agent/observables', route => route.fulfill({
json: { History: [] },
}))
await page.reload()
await expect(page.locator('.header-actions label', { hasText: 'Import' })).toBeVisible()
})
test('Create Agent navigates to the agent creation form', async ({ page }) => {
const create = page.getByRole('button', { name: 'Create Agent' }).last()
await create.scrollIntoViewIfNeeded()
await Promise.all([
page.waitForURL(/\/app\/agents\/new$/),
create.click(),
])
// Wait for AgentCreate.jsx to actually render, not just for the URL to
// change. Ending the test the instant the route matched let the component
// mount race the coverage teardown — its ~400 lines were collected only
// when the render won, swinging total UI coverage ~1pp run-to-run.
await expect(page.getByRole('heading', { name: 'Create Agent' })).toBeVisible()
})
})