mirror of
https://github.com/danny-avila/LibreChat.git
synced 2026-08-27 04:07:05 +00:00
* test: enforce agent generation finalization * test(e2e): correlate canonical persisted turns
41 lines
1.4 KiB
TypeScript
41 lines
1.4 KiB
TypeScript
import { expect, test } from '@playwright/test';
|
|
import {
|
|
MOCK_ENDPOINTS,
|
|
NEW_CHAT_PATH,
|
|
messagesView,
|
|
selectMockEndpoint,
|
|
sendMessageAndWaitForCompletion,
|
|
} from './helpers';
|
|
|
|
const ORDERED_PIECE_COUNT = 64;
|
|
|
|
const orderedPieces = () =>
|
|
Array.from(
|
|
{ length: ORDERED_PIECE_COUNT },
|
|
(_, index) => `piece-${String(index).padStart(3, '0')}`,
|
|
);
|
|
|
|
test.describe('stream transport fidelity', () => {
|
|
test('renders and persists every LLM chunk exactly once and in order', async ({ page }) => {
|
|
const label = `ordered-${Date.now()}`;
|
|
const expected = `E2E ordered reply ${label} ${orderedPieces().join(' ')}`;
|
|
|
|
await page.goto(NEW_CHAT_PATH, { timeout: 10000 });
|
|
await selectMockEndpoint(page, MOCK_ENDPOINTS[0]);
|
|
|
|
const response = await sendMessageAndWaitForCompletion(page, `E2E_ORDERED_REPLY:${label}`);
|
|
expect(response.ok()).toBeTruthy();
|
|
|
|
const assistantContent = messagesView(page)
|
|
.locator('.message-render')
|
|
.last()
|
|
.locator('.message-content');
|
|
await expect(assistantContent).toContainText('piece-010', { timeout: 30000 });
|
|
await expect(assistantContent).toHaveText(expected, { timeout: 30000 });
|
|
|
|
await page.reload({ timeout: 10000 });
|
|
await expect(
|
|
messagesView(page).locator('.message-render').last().locator('.message-content'),
|
|
).toHaveText(expected, { timeout: 30000 });
|
|
});
|
|
});
|