public/dom/get-them-all_test.js

128 lines
3.2 KiB
JavaScript
Raw Normal View History

import { people } from './subjects/get-them-all/get-them-all.data.js'
2020-06-16 10:07:20 +00:00
const getIds = predicate =>
people
.filter(predicate)
.map(e => e.id)
.sort((a, b) => a.localeCompare(b))
const architects = getIds(p => p.tag === 'a')
const notArchitects = getIds(p => p.tag !== 'a')
const classical = getIds(p => p.classe === 'classical')
const notClassical = getIds(p => p.tag === 'a' && p.classe !== 'classical')
const active = getIds(p => p.classe === 'classical' && p.active)
const notActive = getIds(
p => p.tag === 'a' && p.classe === 'classical' && p.active === false,
)
const bonanno = people.find(p => p.id === 'BonannoPisano').id
const notBonanno = getIds(
p =>
p.tag === 'a' &&
p.classe === 'classical' &&
p.active &&
p.id !== 'BonannoPisano',
)
export const tests = []
tests.push(async ({ eq, page }) => {
// get architects
2020-06-15 21:33:28 +00:00
const btnArchitect = await page.$(`#btnArchitect`)
btnArchitect.click()
await page.waitForTimeout(150)
2020-06-15 21:33:28 +00:00
2020-06-16 10:07:20 +00:00
const selected = await page.$$eval('a', nodes =>
2020-06-15 21:33:28 +00:00
nodes
2020-06-16 10:07:20 +00:00
.filter(node => node.textContent === 'Architect')
.map(node => node.id)
2020-06-15 21:33:28 +00:00
.sort((a, b) => a.localeCompare(b)),
)
2020-06-16 10:07:20 +00:00
eq(selected, architects)
const eliminated = await page.$$eval('span', nodes =>
2020-06-15 21:33:28 +00:00
nodes
2020-06-16 10:07:20 +00:00
.filter(node => node.style.opacity === '0.2')
.map(node => node.id)
2020-06-15 21:33:28 +00:00
.sort((a, b) => a.localeCompare(b)),
)
2020-06-16 10:07:20 +00:00
eq(eliminated, notArchitects)
})
2020-06-15 21:33:28 +00:00
2020-06-16 10:07:20 +00:00
tests.push(async ({ page, eq }) => {
// get classical
2020-06-15 21:33:28 +00:00
const btnClassical = await page.$(`#btnClassical`)
btnClassical.click()
await page.waitForTimeout(150)
2020-06-15 21:33:28 +00:00
2020-06-16 10:07:20 +00:00
const selected = await page.$$eval('.classical', nodes =>
2020-06-15 21:33:28 +00:00
nodes
2020-06-16 10:07:20 +00:00
.filter(node => node.textContent === 'Classical')
.map(node => node.id)
2020-06-15 21:33:28 +00:00
.sort((a, b) => a.localeCompare(b)),
)
2020-06-16 10:07:20 +00:00
eq(selected, classical)
const eliminated = await page.$$eval('a:not(.classical)', nodes =>
2020-06-15 21:33:28 +00:00
nodes
2020-06-16 10:07:20 +00:00
.filter(node => node.style.opacity === '0.2')
.map(node => node.id)
2020-06-15 21:33:28 +00:00
.sort((a, b) => a.localeCompare(b)),
)
2020-06-16 10:07:20 +00:00
eq(eliminated, notClassical)
})
2020-06-15 21:33:28 +00:00
2020-06-16 10:07:20 +00:00
tests.push(async ({ page, eq }) => {
// check active
2020-06-15 21:33:28 +00:00
const btnActive = await page.$(`#btnActive`)
btnActive.click()
await page.waitForTimeout(150)
2020-06-15 21:33:28 +00:00
2020-06-16 10:07:20 +00:00
const selected = await page.$$eval('.classical.active', nodes =>
2020-06-15 21:33:28 +00:00
nodes
2020-06-16 10:07:20 +00:00
.filter(node => node.textContent === 'Active')
.map(node => node.id)
2020-06-15 21:33:28 +00:00
.sort((a, b) => a.localeCompare(b)),
)
2020-06-16 10:07:20 +00:00
eq(selected, active)
2020-06-15 21:33:28 +00:00
2020-06-16 10:07:20 +00:00
const eliminated = await page.$$eval('.classical:not(.active)', nodes =>
2020-06-15 21:33:28 +00:00
nodes
2020-06-16 10:07:20 +00:00
.filter(node => node.style.opacity === '0.2')
.map(node => node.id)
2020-06-15 21:33:28 +00:00
.sort((a, b) => a.localeCompare(b)),
)
2020-06-16 10:07:20 +00:00
eq(eliminated, notActive)
})
2020-06-15 21:33:28 +00:00
2020-06-16 10:07:20 +00:00
tests.push(async ({ page, eq }) => {
// get bonanno
2020-06-15 21:33:28 +00:00
const btnBonanno = await page.$(`#btnBonanno`)
btnBonanno.click()
await page.waitForTimeout(150)
2020-06-15 21:33:28 +00:00
2020-06-16 10:07:20 +00:00
const selected = await page.$eval('#BonannoPisano', node => {
2020-06-15 21:33:28 +00:00
if (node.textContent === 'Bonanno Pisano') return node.id
})
2020-06-16 10:07:20 +00:00
eq(`bonanno: ${selected}`, `bonanno: ${bonanno}`)
2020-06-15 21:33:28 +00:00
const eliminated = await page.$$eval(
'a.classical.active:not(#BonannoPisano)',
2020-06-16 10:07:20 +00:00
nodes =>
2020-06-15 21:33:28 +00:00
nodes
2020-06-16 10:07:20 +00:00
.filter(node => node.style.opacity === '0.2')
.map(node => node.id)
2020-06-15 21:33:28 +00:00
.sort((a, b) => a.localeCompare(b)),
)
2020-06-16 10:07:20 +00:00
eq(eliminated, notBonanno)
})