85 lines
2.9 KiB
TypeScript
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);
|
|
});
|