import { test as base, BrowserContext } from '@playwright/test'; import { UserFactory } from '../factories/user.factory'; type TestFixtures = { userFactory: UserFactory; offlineControl: { goOffline: (context: BrowserContext) => Promise; goOnline: (context: BrowserContext) => Promise; }; }; export const test = base.extend({ userFactory: async ({ }, use) => { const factory = new UserFactory(); await use(factory); await factory.cleanup(); }, offlineControl: async ({ }, use) => { const offlineFixture = { goOffline: async (context: BrowserContext) => { await context.setOffline(true); for (const page of context.pages()) { // Dispatch event to simulate navigator.onLine behavior changes in app await page.evaluate(() => window.dispatchEvent(new Event('offline'))).catch(() => { }); } }, goOnline: async (context: BrowserContext) => { await context.setOffline(false); for (const page of context.pages()) { await page.evaluate(() => window.dispatchEvent(new Event('online'))).catch(() => { }); } }, }; await use(offlineFixture); }, }); export { expect } from '@playwright/test';