0
beforeAll 함수의 코드를 가져 오는 데 문제가있어서 storyLinks를 해결하는 약속을 기다립니다. 스 니펫 끝에있는 콘솔 로그는 undefined
을 반환하지만 내 이야기 책에있는 스토리의 HREF를 반환해야합니다. 테스트 파이프 라인이 막혔을 때 비동기 함수로이를 감쌀 수 없습니다.Jest 테스트에서 비동기 코드 관련 문제
const puppeteer = require('puppeteer');
const { toMatchImageSnapshot } = require('jest-image-snapshot');
expect.extend({ toMatchImageSnapshot });
const timeout = 5000;
describe('visual tests',() => {
let page, browser, storyLinks;
const selector = `a[href*="selectedStory="]`;
beforeAll(async() => {
browser = await puppeteer.connect({browserWSEndpoint});
page = await browser.newPage();
await page.goto('http://localhost:8080');
await page.evaluate(() => {
const components = Array.from(document.querySelectorAll('div[data-name]'));
for(let i = 1; i < components.length; i++) {
components[i].addEventListener('click',() => {});
components[i].click();
}
});
storyLinks = await page.evaluate((selector) => {
const stories = Array.from(document.querySelectorAll(selector));
const links = stories.map(story => {
let href = story.href;
let name = story.text.replace(/[^A-Z0-9]/ig, '-').replace(/-{2,}/,'-');
let component = href.match(/selectedKind=(.*?)\&/).pop();
return {href: href, name: component + '-' + name};
});
return links;
}, selector);
}, timeout);
afterAll(async() => {
await page.close();
await browser.disconnect();
})
console.log(storyLinks);
}, timeout);