tiny-vue_version0/examples/sites/demos/pc/app/select/disabled.spec.ts

89 lines
3.4 KiB
TypeScript

import { test, expect } from '@playwright/test'
test('下拉禁用', async ({ page }) => {
page.on('pageerror', (exception) => expect(exception).toBeNull())
await page.goto('select#disabled')
const wrap = page.locator('#disabled')
const input = wrap.locator('.tiny-input__inner').first()
const hasDisabled = await input.evaluate((input) => input.hasAttribute('disabled'))
await expect(hasDisabled).toBe(true)
})
test('多选某项禁用', async ({ page }) => {
page.on('pageerror', (exception) => expect(exception).toBeNull())
await page.goto('select#disabled')
const wrap = page.locator('#disabled')
const select = wrap.locator('.tiny-select').nth(1)
const dropdown = page.locator('body > .tiny-select-dropdown')
const tag = select.locator('.tiny-tag')
const option = dropdown.locator('.tiny-option')
await expect(tag).toHaveCount(1)
await select.click()
await expect(option.filter({ hasText: '上海' })).toHaveClass(/is-disabled/)
await option.filter({ hasText: '上海' }).click()
await expect(tag).toHaveCount(1)
await option.filter({ hasText: '北京' }).click()
await expect(tag).toHaveCount(2)
await expect(tag.filter({ hasText: '北京' })).toHaveCount(1)
})
test('单选某项禁用', async ({ page }) => {
page.on('pageerror', (exception) => expect(exception).toBeNull())
await page.goto('select#disabled')
const wrap = page.locator('#disabled')
const select = wrap.locator('.tiny-select').nth(2)
const input = select.locator('.tiny-input__inner')
const dropdown = page.locator('body > .tiny-select-dropdown')
const option = dropdown.locator('.tiny-option')
await select.click()
await expect(option.filter({ hasText: '全部' })).toHaveCount(0)
await expect(option.filter({ hasText: '上海' })).toHaveClass(/is-disabled/)
await option.filter({ hasText: '上海' }).click()
await expect(dropdown).toBeVisible()
await expect(input).toHaveValue('')
await option.filter({ hasText: '北京' }).click()
await expect(dropdown).toBeHidden()
await expect(input).toHaveValue('北京')
})
test('多选,禁用项默认选中', async ({ page }) => {
page.on('pageerror', (exception) => expect(exception).toBeNull())
await page.goto('select#disabled')
const wrap = page.locator('#disabled')
const select = wrap.locator('.tiny-select').nth(3)
const dropdown = page.locator('body > .tiny-select-dropdown')
const tag = select.locator('.tiny-tag')
const option = dropdown.locator('.tiny-option')
// 默认值显示tag数
await expect(tag).toHaveCount(2)
// 禁用项默认选中不显示关闭图标
await expect(tag.filter({ hasText: '上海' }).locator('svg')).toHaveCount(0)
// 非禁用项显示关闭图标
await expect(tag.filter({ hasText: '天津' }).locator('svg')).toHaveCount(1)
// 下拉禁用和默认选中的效果
await select.click()
await expect(option.filter({ hasText: '全部' })).toHaveCount(1)
await expect(option.filter({ hasText: '上海' })).toHaveClass(/is-disabled/)
await expect(option.filter({ hasText: '上海' })).toHaveClass(/selected/)
await expect(option.filter({ hasText: '天津' })).toHaveClass(/selected/)
// 点击禁用项不取消选中
await option.filter({ hasText: '上海' }).click()
await expect(dropdown).toBeVisible()
await expect(tag).toHaveCount(2)
// 选中其他项
await option.filter({ hasText: '北京' }).click()
await expect(dropdown).toBeVisible()
await expect(tag).toHaveCount(3)
})