Я пытаюсь проверить, что несколько типов пользователей (разделенных на роли) могут войти в систему и просмотреть страницу со списком и каждый применимый тип фильтра.Поскольку излишне писать это N
раз для каждого пользователя, объединенного с каждым фильтром, я использую следующее:
export const filters = {
typeOne: {
'Alerts': 'alerts',
'Open': 'open',
'Pending': 'pending',
'Finished': 'finished',
'Closed': 'closed'
},
/* ... */
}
export const roleTitles = {
typeOne: 'User Type One',
typeTwo: 'User Type Two',
/* ... */
}
const getSelectorMenuItem = (label) => Selector('.marketplace-side-nav.menu').find('.item').withText(label)
const selectorMap = Selector('.map-container')
const selectorMarketplaceList = Selector('.marketplace-list')
Object.keys(roles).map(async (role) => {
await Promise.all(Object.keys(filters[role]).map(async (filterTitle) => {
test(`${roleTitles[role]} Can open ${filterTitle} filter`, async t => {
const expectedPath = `marketplace/all/${filters[role][filterTitle]}`
await t.useRole(roles[role])
.click(getSelectorMenuItem(filterTitle))
.expect(getLocation()).contains(expectedPath, { timeout: 3000 })
.expect(selectorMap.exists).ok()
.expect(selectorMarketplaceList.exists).ok()
})
}))
})
Это работает, однако, это очень медленно.Мне не чужд тот факт, что тесты e2e занимают время, но кажется, что они зависают, когда достигают последнего элемента в любом из типов фильтров.