38 lines
1.3 KiB
JavaScript
38 lines
1.3 KiB
JavaScript
|
import { createListAs, getListsAs } from '../serverActions'
|
||
|
import { loginAsFoobar } from '../roles'
|
||
|
import {
|
||
|
communityNavButton, getCommunityPinRadioButtonIds, getUrl
|
||
|
} from '../utils'
|
||
|
import { Selector as $ } from 'testcafe'
|
||
|
|
||
|
fixture`134-community.js`
|
||
|
.page`http://localhost:4002`
|
||
|
|
||
|
test('pinnable community items have proper IDs for accessible radio buttons', async t => {
|
||
|
const lists = (await getListsAs('foobar')).map(_ => _.title)
|
||
|
if (!lists.includes('Test list 1')) {
|
||
|
await createListAs('foobar', 'Test list 1')
|
||
|
}
|
||
|
if (!lists.includes('Test list 2')) {
|
||
|
await createListAs('foobar', 'Test list 2')
|
||
|
}
|
||
|
await loginAsFoobar(t)
|
||
|
await t
|
||
|
.click(communityNavButton)
|
||
|
.expect(getUrl()).contains('community')
|
||
|
.expect($('[aria-label=Lists] li:nth-child(1)').innerText).contains('Test list 1')
|
||
|
.expect($('[aria-label=Lists] li:nth-child(2)').innerText).contains('Test list 2')
|
||
|
|
||
|
const ids = await getCommunityPinRadioButtonIds()
|
||
|
await t
|
||
|
.expect(ids.length).gt(0)
|
||
|
|
||
|
const uniqueIds = [...new Set(ids)]
|
||
|
await t
|
||
|
.expect(ids.length).eql(
|
||
|
uniqueIds.length,
|
||
|
`Expect ${JSON.stringify(ids)} to have same length as ${JSON.stringify(uniqueIds)}`
|
||
|
)
|
||
|
.expect($('[role=radiogroup]').getAttribute('aria-owns')).eql(ids.join(' '))
|
||
|
})
|