import { BaseUniDriver } from 'wix-ui-test-utils/base-driver';
import { puppeteerUniTestkitFactoryCreator } from 'wix-ui-test-utils/puppeteer';

export const navigateToStory = async (story: string) =>  {
  let _page;

  // @ts-expect-error
  const { page } = await sled.newPage();
  _page = page;

  // navigate to the page
  await _page.goto(process.env.BASE_URL + story);

  // We wait for iframe selector to appear
  await _page.waitForSelector('iframe[id="storybook-preview-iframe"]');

  // We grab it and go inside
  const iframe = await _page.$('iframe[id="storybook-preview-iframe"]');
  const iframeContent = await iframe?.contentFrame();

  // We should fail the test if we could not get the frame
  if(!iframeContent) {
    throw new Error(`Failed to open ${story}`)
  }

  return iframeContent;
};


export const createTestkit =  async <T extends BaseUniDriver>({ page, dataHook, driver }: { dataHook: string, driver: any, page: any }) => {
  await page.waitForSelector(`[data-hook="${dataHook}"]`);
  const testkit = await puppeteerUniTestkitFactoryCreator<T>(driver)({ page , dataHook })
  return { testkit }
}
