Проблема с неопределенностью функции с использованием jest кукловод и Node.js

#javascript #typescript #puppeteer #jest-puppeteer

Вопрос:

у меня тут чудак. Все еще пытаюсь разобраться во всем этом типовом сценарии. В основном у меня происходит то, что я пытаюсь вызвать функцию из файла утилит, который я создал, и я получаю — Ошибка оценки: Ошибка ссылки: testUtils_test_1 не определен. Проблема в том, что я пытаюсь вызвать функцию обхода, которую я создал. Вероятно, есть еще кое-что, что мне нужно исправить в самой функции, но я еще не совсем дошел до этого, так как функция даже не выполняется из моего теста. Я использую Jest кукловод и .ts

тест находится в файле .test.ts, а функция-в отдельном файле TestUtils.test.ts

  • Я выполнил правильную инструкцию по импорту

Вероятно, это простая ошибка, которую я совершаю, но я новичок. Объяснения были бы полезны! Заранее спасибо.

 test('testing', async () => {
      // click on location targeting (there is three elements that match this selector)
      await page.click('#root > div > div.euiPage.euiPage--paddingMedium.euiPage--grow.euiPage-- > main > div > div:nth-child(3) > div.euiFlexItem.euiFlexItem--flexGrowZero > div')
      await page.waitForTimeout(3000)
      console.log('far')
      await page.waitForSelector('#showBusinessTypeFlyout')
      await page.click('#showBusinessTypeFlyout')
      console.log('keep')
      await page.waitForSelector('ul[aria-label="Business type categories"]')

      await page.$eval('ul[aria-label="Business type categories"]', () => { // could also use page.evaluate here
        traverse('ul[aria-label="Business type categories"]')
      })
      expect(page).toContain('') // placeholder test

    }, 100000)
    
    
// NEXT SNIPPET ///////////////////////

export const traverse = async function(selector:string){
  // get children of selector as Elements

    const list: HTMLCollectionOf<Element> = await page.$eval(selector, uiElement => {
      return uiElement.getElementsByClassName('euiTreeView__node euiTreeView--compressed')
    })
    console.log(list.length)
    // loop through each element in selectors array
    for (let category of list) {
      let sel = 'li[class='   category.getAttribute('class')   ']'
      console.log(sel)
      await page.click('sel')

      if (category.childElementCount > 0) {
        await traverse(sel)
      }
      const list: HTMLCollectionOf<Element> = await page.$eval('ul[class=euiListGroup euiListGroup-flush euiListGroup-bordered', uiElement => {
        return uiElement.getElementsByClassName('li[class=euiListGroupItem--small euiListGroupItem-isClickable')
      })
      console.log(list.length)

      for (let businessType of list) {
        let sel = 'li[class='   businessType.getAttribute('class')   ']'
        await page.click(sel)
        await page.click('body > div:nth-child(21) > div:nth-child(3) > div > div.euiFlyoutFooter > div > div > button > span > span')
        await expect(null) // placeholder
        await page.click('#showBusinessTypeFlyout > span > span')

      }
    }
}