lotr-sut/tests/api/steps/chat-api.steps.ts
Fellowship Scholar f6a5823439 init commit
2026-03-29 20:07:56 +00:00

85 lines
2.9 KiB
TypeScript

import { Given, When, Then } from '../support/fixtures';
import { storeResponse } from '../support/api-utils';
import { expect } from '@playwright/test';
Given(
'I have started a chat with character {string}',
async ({ request, apiState }, character: string) => {
const response = await request.post(`${apiState.baseUrl}/api/chat/start`, {
data: { character },
});
await storeResponse(response, apiState);
}
);
When(
'I start a chat with character {string}',
async ({ request, apiState }, character: string) => {
const response = await request.post(`${apiState.baseUrl}/api/chat/start`, {
data: { character },
});
await storeResponse(response, apiState);
}
);
When(
'I send a chat message {string} to character {string}',
async ({ request, apiState }, message: string, character: string) => {
const response = await request.post(`${apiState.baseUrl}/api/chat/message`, {
data: { character, message },
});
await storeResponse(response, apiState);
}
);
When(
'I GET the chat session for character {string}',
async ({ request, apiState }, character: string) => {
const response = await request.get(`${apiState.baseUrl}/api/chat/session`, {
params: { character },
});
await storeResponse(response, apiState);
}
);
When(
'I reset the chat session for character {string}',
async ({ request, apiState }, character: string) => {
const response = await request.post(`${apiState.baseUrl}/api/chat/reset`, {
data: { character },
});
await storeResponse(response, apiState);
}
);
// ── Assertions ────────────────────────────────────────────────────────────────
Then('the chat opener style should be valid', async ({ apiState }) => {
expect(['question', 'reflection', 'directive']).toContain(apiState.lastBody.opener_style);
});
Then('the reply should not be empty', async ({ apiState }) => {
const reply = apiState.lastBody.reply ?? apiState.lastBody.message;
expect(reply).toBeTruthy();
expect((reply as string).length).toBeGreaterThan(0);
});
Then('the chat reply should not be empty', async ({ apiState }) => {
const reply = apiState.lastBody.reply ?? apiState.lastBody.message;
expect(reply).toBeTruthy();
expect((reply as string).length).toBeGreaterThan(0);
});
Then('the response body messages should be an array', async ({ apiState }) => {
expect(Array.isArray(apiState.lastBody.messages)).toBeTruthy();
});
Then('the chat response character should be {string}', async ({ apiState }, character: string) => {
expect(apiState.lastBody.character).toBe(character);
});
Then('the opener should not be empty', async ({ apiState }) => {
expect(apiState.lastBody.opener).toBeTruthy();
expect((apiState.lastBody.opener as string).length).toBeGreaterThan(0);
});