Как я могу запустить файлы в массиве setupFiles, чтобы сначала завершить их до загрузки и выполнения тестов, и как я могу перебирать значения из кода setupFiles при тестировании.
Данные из кода setupFiles присваиваются глобальному объекту, и происходят две вещи.
1. Набор тестов запускается мгновенно с кодом setupFiles.
2. Значения недоступны в тестовом коде, потому что они не определены, но если я вложу их в другой блок описания, они станут доступными, но я все равно не смогу просмотреть их, чтобы выполнить тест.
Я попытался настроить значения через настройку и отключение beforeAll и добавленных таймеров.
index.js
(async () => {
const events = [
'dialog',
'request',
'response'
]
const browser = await puppeteer.launch({ headless: false })
const page = await browser.newPage()
events.forEach(event =>{
page.on(event, async(eventType) =>{
if(event === 'dialog') {
return eventType.accept()
}
else if(event === 'response') {
if(eventType.url().includes('trending')) {
let data = await eventType.json().then(res => res).catch(e => console.error(e.message))
global.data = data
}
}
else {
console.log('ಠ_ಠ ¯\_(ツ)_/¯ Nothing To See here ¯\_(ツ)_/¯ಠ_ಠ')
}
})
})
await page.setViewport({ width: 1280, height: 1307 })
await page.goto('https://www.giphy.com/')
await browser.close()
})()
workflow.test.js
describe('giphy', () =>{
beforeAll(async() =>{
console.log(global.data)
})
global.data.forEach(element =>{
it('wants to show up', async() =>{
await expect(element).toHaveProperty('title')
})
})
})
package.json
"jest": {
"verbose": true,
"setupFiles": ["<rootDir>/index.js"]
},
Я ожидаю, что файлы setupFiles будут работать асинхронно, и значения будут доступны для повторения.