lotr-sut/tests/e2e/support/testContext.ts
Fellowship Scholar f6a5823439 init commit
2026-03-29 20:07:56 +00:00

80 lines
1.8 KiB
TypeScript

import { BrowserContext, Page } from '@playwright/test';
import { TestUser, Quest, ChatMessage, BargainingContext } from '../types';
/**
* Fixtures and context shared across all E2E tests.
* This serves as the "world" object in Cucumber terms.
*/
export class TestContext {
public page!: Page;
public context!: BrowserContext;
public baseUrl: string;
public currentUser?: TestUser;
public quests: Map<string, Quest> = new Map();
public chatMessages: ChatMessage[] = [];
public bargainingContext?: BargainingContext;
public notificationsData: Map<string, any> = new Map();
public suggestedAction?: any;
public lastApiResponse?: Response;
public goldAmount: number = 500;
constructor(baseUrl: string = process.env.SUT_URL || 'http://localhost') {
this.baseUrl = baseUrl;
}
/**
* Set the current page for interactions
*/
setPage(page: Page): void {
this.page = page;
}
/**
* Set the browser context for managing cookies/storage
*/
setContext(context: BrowserContext): void {
this.context = context;
}
/**
* Log in a test user
*/
setCurrentUser(user: TestUser): void {
this.currentUser = user;
}
/**
* Store a quest for reference
*/
addQuest(quest: Quest): void {
this.quests.set(quest.id || quest.title, quest);
}
/**
* Add a chat message to the transcript
*/
addChatMessage(message: ChatMessage): void {
this.chatMessages.push(message);
}
/**
* Clear chat transcript
*/
clearChatMessages(): void {
this.chatMessages = [];
}
/**
* Reset context for a new test
*/
reset(): void {
this.currentUser = undefined;
this.quests.clear();
this.chatMessages = [];
this.bargainingContext = undefined;
this.notificationsData.clear();
this.suggestedAction = undefined;
this.lastApiResponse = undefined;
}
}