// @ts-nocheck
import { test as base } from '@playwright/test';
import { AppPage, FormHelper, AjaxHelper, startNetworkMonitor, NetworkError } from '../helpers/index';

type CustomFixtures = {
  appPage: AppPage;
  formHelper: FormHelper;
  ajaxHelper: AjaxHelper;
  /** Recolecta errores de red (status >= 400) durante el test. Llama a `getErrors()` cuando quieras inspeccionarlos. */
  networkMonitor: { getErrors: () => NetworkError[]; getAjaxErrors: () => NetworkError[] };
};

export const test = base.extend<CustomFixtures>({
  appPage: async ({ page }, use) => {
    const appPage = new AppPage(page);
    await use(appPage);
  },
  formHelper: async ({ page }, use) => {
    const formHelper = new FormHelper(page);
    await use(formHelper);
  },
  ajaxHelper: async ({ page }, use) => {
    const ajaxHelper = new AjaxHelper(page);
    await use(ajaxHelper);
  },
  networkMonitor: async ({ page }, use) => {
    const getErrors = await startNetworkMonitor(page);
    await use({
      getErrors,
      getAjaxErrors: () => getErrors().filter((e) => e.type === 'ajax'),
    });
  },
});

export { expect } from '@playwright/test';
