mirror of
https://github.com/jcreek/AutomatedAssessmentFeedbackAgent.git
synced 2026-07-12 18:43:49 +00:00
52 lines
1.3 KiB
TypeScript
52 lines
1.3 KiB
TypeScript
import { chromium } from 'playwright';
|
|
import type { Browser, Page } from 'playwright';
|
|
import { setDefaultTimeout, setWorldConstructor, World, Before, After, AfterAll } from '@cucumber/cucumber';
|
|
|
|
setDefaultTimeout(60000); // 60 seconds
|
|
|
|
let browser: Browser;
|
|
|
|
class CustomWorld extends World {
|
|
page!: Page;
|
|
|
|
async openPage() {
|
|
if (!browser) {
|
|
browser = await chromium.launch({ headless: true });
|
|
}
|
|
this.page = await browser.newPage();
|
|
}
|
|
|
|
async closePage() {
|
|
if (this.page) {
|
|
await this.page.close();
|
|
}
|
|
}
|
|
}
|
|
|
|
setWorldConstructor(CustomWorld);
|
|
|
|
Before(async function () {
|
|
await this.openPage();
|
|
});
|
|
|
|
// Always clear assessment history for destructive scenarios after page is available
|
|
Before({ tags: '@deleteAssessment or @clearAssessment' }, async function () {
|
|
if (!this.page) throw new Error('Playwright page not initialized!');
|
|
await this.page.goto('http://localhost:5173/results');
|
|
// Clear assessment history to guarantee a clean state
|
|
await this.page.evaluate(() => localStorage.removeItem('assessmentHistory'));
|
|
});
|
|
|
|
// Always clear assessment history after every scenario for isolation
|
|
After(async function () {
|
|
if (this.page) {
|
|
await this.page.evaluate(() => localStorage.removeItem('assessmentHistory'));
|
|
}
|
|
});
|
|
|
|
AfterAll(async function () {
|
|
if (browser) {
|
|
await browser.close();
|
|
}
|
|
});
|