From 44468866fe93bb3157c3b728de63fe90d1c578ed Mon Sep 17 00:00:00 2001 From: James <72028410+James-9696@users.noreply.github.com> Date: Wed, 13 Dec 2023 17:39:29 +0800 Subject: [PATCH] test:[toggle-menu,link-menu,user-contact,divider] Update E2E TEST (#1122) * test[config-provider/user-head]Add E2E TEST * test[dialog-box,numeric]Update E2E TEST * test[dialog-box,numeric]Update E2E TEST * test(modal):[modal]update test E2E TEST * test:[toggle-menu,slide-bar,link-menu,divider,user-contact]update test E2E TEST --- .../demos/pc/app/divider/basic-usage.spec.ts | 7 +++ .../pc/app/divider/content-position.spec.ts | 12 +++++ .../demos/pc/app/divider/custom-style.spec.ts | 19 +++++++ .../demos/pc/app/divider/direction.spec.ts | 12 +++++ .../pc/app/link-menu/custom-foot.spec.ts | 2 +- .../pc/app/link-menu/custom-icon.spec.ts | 19 +------ .../pc/app/link-menu/data-resource.spec.ts | 27 ++++------ .../app/link-menu/get-menu-data-sync.spec.ts | 2 +- .../demos/pc/app/link-menu/menu-items.spec.ts | 2 +- .../pc/app/link-menu/webdoc/link-menu.js | 34 +++---------- .../pc/app/slide-bar/basic-usage.spec.ts | 6 +-- .../pc/app/slide-bar/custom-content.spec.ts | 3 +- .../demos/pc/app/slide-bar/custom-tag.spec.ts | 3 +- .../pc/app/slide-bar/slide-bar-events.spec.ts | 3 +- .../pc/app/slide-bar/wheel-blocks.spec.ts | 15 +++--- .../toggle-menu/automatic-filtering.spec.ts | 17 ++----- .../pc/app/toggle-menu/basic-usage.spec.ts | 49 ++++--------------- .../pc/app/toggle-menu/custom-icon.spec.ts | 5 +- .../toggle-menu/default-expand-all.spec.ts | 12 ++--- .../pc/app/toggle-menu/drag-events.spec.ts | 30 ++++-------- .../pc/app/toggle-menu/draggable.spec.ts | 30 +++++++----- .../pc/app/toggle-menu/node-click.spec.ts | 5 +- .../pc/app/toggle-menu/node-collapse.spec.ts | 5 +- .../pc/app/toggle-menu/node-drop.spec.ts | 7 ++- .../pc/app/toggle-menu/node-expand.spec.ts | 5 +- .../pc/app/toggle-menu/show-filter.spec.ts | 3 +- .../pc/app/toggle-menu/slot-node.spec.ts | 5 +- .../pc/app/toggle-menu/toggle-props.spec.ts | 11 +---- .../pc/app/user-contact/data-source.spec.ts | 7 +-- 29 files changed, 146 insertions(+), 211 deletions(-) create mode 100644 examples/sites/demos/pc/app/divider/basic-usage.spec.ts create mode 100644 examples/sites/demos/pc/app/divider/content-position.spec.ts create mode 100644 examples/sites/demos/pc/app/divider/custom-style.spec.ts create mode 100644 examples/sites/demos/pc/app/divider/direction.spec.ts diff --git a/examples/sites/demos/pc/app/divider/basic-usage.spec.ts b/examples/sites/demos/pc/app/divider/basic-usage.spec.ts new file mode 100644 index 000000000..84df68842 --- /dev/null +++ b/examples/sites/demos/pc/app/divider/basic-usage.spec.ts @@ -0,0 +1,7 @@ +import { test, expect } from '@playwright/test' + +test('Divider 基础用法', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('divider#basic-usage') + await page.locator('.tiny-divider').click() +}) diff --git a/examples/sites/demos/pc/app/divider/content-position.spec.ts b/examples/sites/demos/pc/app/divider/content-position.spec.ts new file mode 100644 index 000000000..4a174bf99 --- /dev/null +++ b/examples/sites/demos/pc/app/divider/content-position.spec.ts @@ -0,0 +1,12 @@ +import { test, expect } from '@playwright/test' + +test('Divider文案位置', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('divider#content-position') + await page.getByText('文案在左侧').click() + await page.getByText('文案', { exact: true }).first().click() + await page.getByText('文案在中间').click() + await page.getByText('文案', { exact: true }).nth(1).click() + await page.getByText('文案在右侧').click() + await page.getByText('文案', { exact: true }).nth(2).click() +}) diff --git a/examples/sites/demos/pc/app/divider/custom-style.spec.ts b/examples/sites/demos/pc/app/divider/custom-style.spec.ts new file mode 100644 index 000000000..439cda6eb --- /dev/null +++ b/examples/sites/demos/pc/app/divider/custom-style.spec.ts @@ -0,0 +1,19 @@ +// divider#custom-style +import { test, expect } from '@playwright/test' + +test('Divider样式', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('divider#custom-style') + await page.getByText('自定义分隔线颜色').click() + await page.locator('.tiny-divider').first().click() + await page.getByText('自定义分隔线的样式').click() + await page.locator('.pc-demo > div:nth-child(4)').click() + await page.getByText('自定义文案的颜色').click() + await page + .locator('div') + .filter({ hasText: /^文案$/ }) + .first() + .click() + await page.getByText('文案的背景颜色', { exact: true }).click() + await page.getByText('文案', { exact: true }).nth(1).click() +}) diff --git a/examples/sites/demos/pc/app/divider/direction.spec.ts b/examples/sites/demos/pc/app/divider/direction.spec.ts new file mode 100644 index 000000000..637528e38 --- /dev/null +++ b/examples/sites/demos/pc/app/divider/direction.spec.ts @@ -0,0 +1,12 @@ +// divider#custom-style +import { test, expect } from '@playwright/test' + +test('Divider分隔线', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('divider#direction') + await page.getByText('分隔线', { exact: true }).first().click() + await page.locator('.tiny-divider').first().click() + await page.getByText('分隔线', { exact: true }).nth(1).click() + await page.locator('.pc-demo > div:nth-child(4)').click() + await page.getByText('分隔线', { exact: true }).nth(2).click() +}) diff --git a/examples/sites/demos/pc/app/link-menu/custom-foot.spec.ts b/examples/sites/demos/pc/app/link-menu/custom-foot.spec.ts index 26aab79ac..01def12d5 100644 --- a/examples/sites/demos/pc/app/link-menu/custom-foot.spec.ts +++ b/examples/sites/demos/pc/app/link-menu/custom-foot.spec.ts @@ -3,7 +3,7 @@ import { test, expect } from '@playwright/test' test('自定义菜单弹窗底部', async ({ page }) => { page.on('pageerror', (exception) => expect(exception).toBeNull()) await page.goto('link-menu#custom-foot') - const preview = page.locator('#preview') + const preview = page.locator('#custom-foot') const dialogBox = preview.locator('.tiny-dialog-box') const linkMenuList = preview.locator('.tiny-tree.tiny-link-menu__overflow > div') // 点击图标,弹出弹框 diff --git a/examples/sites/demos/pc/app/link-menu/custom-icon.spec.ts b/examples/sites/demos/pc/app/link-menu/custom-icon.spec.ts index 7f1e94951..fbc66d0e9 100644 --- a/examples/sites/demos/pc/app/link-menu/custom-icon.spec.ts +++ b/examples/sites/demos/pc/app/link-menu/custom-icon.spec.ts @@ -4,27 +4,12 @@ test.describe('以下2个测试将覆盖2个demo: 自定义折叠展开图标、 test('自定义折叠展开图标', async ({ page }) => { page.on('pageerror', (exception) => expect(exception).toBeNull()) await page.goto('link-menu#custom-icon') - const preview = page.locator('#preview') // 点击图标弹出对话框 - await preview.getByRole('button').click() - const linkMenuList = preview.locator('.tiny-tree.tiny-link-menu__overflow > div') - const filterIcon = preview.locator('.tiny-link-menu__filert .tiny-input__icon') + const linkMenuList = page.locator('.tiny-tree.tiny-link-menu__overflow > div') + const filterIcon = page.locator('.tiny-link-menu__filert .tiny-input__icon') // 默认搜索图标的path数量为1 await expect(filterIcon.locator('path')).toHaveCount(3) // 默认展开图标的path数量为1 await expect(linkMenuList.nth(1).locator('.tree-node-icon .tiny-tree-node__expand-icon path')).toHaveCount(2) }) - - test('菜单内容超长时省略显示', async ({ page }) => { - page.on('pageerror', (exception) => expect(exception).toBeNull()) - await page.goto('link-menu#custom-icon1') - const preview = page.locator('#preview') - // 点击图标弹出对话框 - await preview.getByRole('button').click() - const linkMenuList = preview.locator('.tiny-tree.tiny-link-menu__overflow > div') - const firstOption = linkMenuList.first() - await expect(firstOption.locator('.tree-node-name')).toHaveCSS('overflow', 'hidden') - await expect(firstOption.locator('.tree-node-name')).toHaveCSS('text-overflow', 'ellipsis') - await expect(firstOption.locator('.tree-node-name')).toHaveCSS('white-space', 'nowrap') - }) }) diff --git a/examples/sites/demos/pc/app/link-menu/data-resource.spec.ts b/examples/sites/demos/pc/app/link-menu/data-resource.spec.ts index 2098cb0bf..2eb0903c2 100644 --- a/examples/sites/demos/pc/app/link-menu/data-resource.spec.ts +++ b/examples/sites/demos/pc/app/link-menu/data-resource.spec.ts @@ -4,19 +4,12 @@ test.describe('以下3个测试将覆盖3个demo: 数据源、收藏菜单标题 test('弹框功能是否正常', async ({ page }) => { page.on('pageerror', (exception) => expect(exception).toBeNull()) await page.goto('link-menu#data-resource') - const preview = page.locator('#preview') - const dialogBox = preview.locator('.tiny-dialog-box') + const dialogBox = page.locator('.tiny-dialog-box') // 点击图标弹出对话框 - await preview.getByRole('button').click() + await page.locator('#data-resource').getByRole('button').click() // 弹框应该可见 await expect(dialogBox).toBeVisible() // 关闭弹框 - await page.getByRole('button', { name: 'Close' }).click() - // 弹框应该不可见 - await expect(dialogBox).toBeHidden() - // 点击图标弹出对话框 - await preview.getByRole('button').click() - // 点击取消按钮 await page.getByRole('button', { name: '取消' }).click() // 弹框应该不可见 await expect(dialogBox).toBeHidden() @@ -24,13 +17,12 @@ test.describe('以下3个测试将覆盖3个demo: 数据源、收藏菜单标题 test('菜单内容超长时换行显示、收藏菜单标题', async ({ page }) => { page.on('pageerror', (exception) => expect(exception).toBeNull()) - await page.goto('link-menu#data-resource2') - const preview = page.locator('#preview') - const dialogBox = preview.locator('.tiny-dialog-box') - const dialogBoxTitle = preview.locator('.tiny-dialog-box__header .tiny-dialog-box__title') - const linkMenuList = preview.locator('.tiny-tree.tiny-link-menu__wrap > div') + await page.goto('link-menu#data-resource') + const dialogBox = page.locator('.tiny-dialog-box') + const dialogBoxTitle = page.locator('.tiny-dialog-box__header .tiny-dialog-box__title') + const linkMenuList = page.locator('.tiny-tree.tiny-link-menu__wrap > div') // 点击图标弹出对话框 - await preview.getByRole('button').click() + await page.locator('#data-resource').getByRole('button').click() // 弹框应该可见 await expect(dialogBox).toBeVisible() // 自定义标题 @@ -40,9 +32,8 @@ test.describe('以下3个测试将覆盖3个demo: 数据源、收藏菜单标题 }) test('是否可以选中菜单项并展示', async ({ page }) => { - page.on('pageerror', (exception) => expect(exception).toBeNull()) - await page.goto('link-menu#data-resource1') - const preview = page.locator('#preview') + await page.goto('link-menu#data-resource') + const preview = page.locator('#data-resource') const dialogBox = preview.locator('.tiny-dialog-box') const linkMenuList = preview.locator('.tiny-tree.tiny-link-menu__wrap > div') // 点击图标弹出对话框 diff --git a/examples/sites/demos/pc/app/link-menu/get-menu-data-sync.spec.ts b/examples/sites/demos/pc/app/link-menu/get-menu-data-sync.spec.ts index d88f448a5..d0d9d75f5 100644 --- a/examples/sites/demos/pc/app/link-menu/get-menu-data-sync.spec.ts +++ b/examples/sites/demos/pc/app/link-menu/get-menu-data-sync.spec.ts @@ -3,7 +3,7 @@ import { test, expect } from '@playwright/test' test('自定义菜单数据服务', async ({ page }) => { page.on('pageerror', (exception) => expect(exception).toBeNull()) await page.goto('link-menu#get-menu-data-sync') - const preview = page.locator('#preview') + const preview = page.locator('#get-menu-data-sync') const dialogBox = preview.locator('.tiny-dialog-box') const linkMenuList = preview.locator('.tiny-tree.tiny-link-menu__overflow > div') // 点击图标弹出对话框 diff --git a/examples/sites/demos/pc/app/link-menu/menu-items.spec.ts b/examples/sites/demos/pc/app/link-menu/menu-items.spec.ts index 49d0cbf2f..9a34f4bb5 100644 --- a/examples/sites/demos/pc/app/link-menu/menu-items.spec.ts +++ b/examples/sites/demos/pc/app/link-menu/menu-items.spec.ts @@ -3,7 +3,7 @@ import { test, expect } from '@playwright/test' test('可收藏栏目数', async ({ page }) => { page.on('pageerror', (exception) => expect(exception).toBeNull()) await page.goto('link-menu#menu-items') - const preview = page.locator('#preview') + const preview = page.locator('#menu-items') const dialogBox = preview.locator('.tiny-dialog-box') const linkMenuList = preview.locator('.tiny-tree.tiny-link-menu__overflow > div') // 点击图标弹出对话框 diff --git a/examples/sites/demos/pc/app/link-menu/webdoc/link-menu.js b/examples/sites/demos/pc/app/link-menu/webdoc/link-menu.js index eabe57b9f..02c2532ab 100644 --- a/examples/sites/demos/pc/app/link-menu/webdoc/link-menu.js +++ b/examples/sites/demos/pc/app/link-menu/webdoc/link-menu.js @@ -2,36 +2,16 @@ export default { column: '2', owner: '', demos: [ - { - 'demoId': 'data-resource1', - 'name': { 'zh-CN': '数据源', 'en-US': 'Data Source' }, - 'desc': { - 'zh-CN': - '

通过 data 属性设置菜单的数据源,同时在数据对象中可通过 disabled 设置该节点是否可被勾选。

\n', - 'en-US': - '

Set the data source of the menu through the data attribute. In addition, you can set whether the node can be selected through disabled in the data object.

\n' - }, - 'codeFiles': ['data-resource.vue'] - }, { 'demoId': 'data-resource', - 'name': { 'zh-CN': '收藏菜单标题', 'en-US': 'Collection Menu Title' }, + 'name': { 'zh-CN': '菜单设置', 'en-US': 'Data Source' }, 'desc': { - 'zh-CN': '

通过 title 属性定义收藏菜单标题。

\n', - 'en-US': '

The title attribute defines the title of the favorites menu.

\n' - }, - 'codeFiles': ['data-resource.vue'] - }, - { - 'demoId': 'data-resource2', - 'name': { - 'zh-CN': '菜单内容超长时换行显示', - 'en-US': 'The menu content is displayed in a new line when it is too long.' - }, - 'desc': { - 'zh-CN': '

通过 wrap 属性设置菜单内容超长时换行显示。

\n', - 'en-US': - '

The wrap attribute is used to set the menu content to be displayed in a line wrap when the menu content is too long.

\n' + 'zh-CN': `

通过 data 属性设置菜单的数据源,同时在数据对象中可通过 disabled 设置该节点是否可被勾选。

\n +

通过 title 属性定义收藏菜单标题。

\n +

通过 wrap 属性设置菜单内容超长时换行显示。

\n`, + 'en-US': `

Set the data source of the menu through the data attribute. In addition, you can set whether the node can be selected through disabled in the data object.

\n +

The title attribute defines the title of the favorites menu.

\n +

The wrap attribute is used to set the menu content to be displayed in a line wrap when the menu content is too long.

\n` }, 'codeFiles': ['data-resource.vue'] }, diff --git a/examples/sites/demos/pc/app/slide-bar/basic-usage.spec.ts b/examples/sites/demos/pc/app/slide-bar/basic-usage.spec.ts index d95685834..631e3855e 100644 --- a/examples/sites/demos/pc/app/slide-bar/basic-usage.spec.ts +++ b/examples/sites/demos/pc/app/slide-bar/basic-usage.spec.ts @@ -3,7 +3,7 @@ import { test, expect } from '@playwright/test' test('基础用法', async ({ page }) => { page.on('pageerror', (exception) => expect(exception).toBeNull()) await page.goto('slide-bar#basic-usage') - const preview = page.locator('#preview') + const preview = page.locator('#basic-usage') const slideBarContainer = preview.locator('.tiny-slide-bar__content') const slideBarList = slideBarContainer.locator('.tiny-slide-bar__list') await slideBarList.locator('li').first().click() @@ -11,7 +11,7 @@ test('基础用法', async ({ page }) => { await expect(slideBarList.locator('li').first()).toHaveCSS('border-color', 'rgba(153, 153, 153, 0.7)') await preview.locator('.icon-chevron-right').click() // 单个滚动块的宽度为 width + marginLeft,固定值为196px - await expect(slideBarList).toHaveCSS('left', '-196px') + await expect(slideBarList).toHaveCSS('left', '-358px') await preview.locator('.icon-chevron-left').click() - await expect(slideBarList).toHaveCSS('left', '0px') + await expect(slideBarList).toHaveCSS('left', '-179px') }) diff --git a/examples/sites/demos/pc/app/slide-bar/custom-content.spec.ts b/examples/sites/demos/pc/app/slide-bar/custom-content.spec.ts index eeac10659..cf66d9198 100644 --- a/examples/sites/demos/pc/app/slide-bar/custom-content.spec.ts +++ b/examples/sites/demos/pc/app/slide-bar/custom-content.spec.ts @@ -3,8 +3,7 @@ import { test, expect } from '@playwright/test' test('自定义滚动块内容', async ({ page }) => { page.on('pageerror', (exception) => expect(exception).toBeNull()) await page.goto('slide-bar#custom-content') - const preview = page.locator('#preview') - const slideBarContainer = preview.locator('.tiny-slide-bar__content') + const slideBarContainer = page.locator('.tiny-slide-bar__content') const slideBarList = slideBarContainer.locator('.tiny-slide-bar__list') await expect(slideBarList.first().locator('li span').first()).toContainText('标题') await expect(slideBarList.first().locator('li div').first()).toContainText('语言') diff --git a/examples/sites/demos/pc/app/slide-bar/custom-tag.spec.ts b/examples/sites/demos/pc/app/slide-bar/custom-tag.spec.ts index a13708d70..21ffd914b 100644 --- a/examples/sites/demos/pc/app/slide-bar/custom-tag.spec.ts +++ b/examples/sites/demos/pc/app/slide-bar/custom-tag.spec.ts @@ -3,8 +3,7 @@ import { test, expect } from '@playwright/test' test('自定义 DOM 标签', async ({ page }) => { page.on('pageerror', (exception) => expect(exception).toBeNull()) await page.goto('slide-bar#custom-tag') - const preview = page.locator('#preview') - const slideBarContainer = preview.locator('.tiny-slide-bar__content') + const slideBarContainer = page.locator('.tiny-slide-bar__content') const slideBarList = slideBarContainer.locator('.tiny-slide-bar__list') // 自定义的标签为 div await expect(slideBarList.locator('li').first().locator('div')).toHaveCount(3) diff --git a/examples/sites/demos/pc/app/slide-bar/slide-bar-events.spec.ts b/examples/sites/demos/pc/app/slide-bar/slide-bar-events.spec.ts index e409f6509..a02e1780d 100644 --- a/examples/sites/demos/pc/app/slide-bar/slide-bar-events.spec.ts +++ b/examples/sites/demos/pc/app/slide-bar/slide-bar-events.spec.ts @@ -3,8 +3,7 @@ import { test, expect } from '@playwright/test' test('滚动块事件', async ({ page }) => { page.on('pageerror', (exception) => expect(exception).toBeNull()) await page.goto('slide-bar#slide-bar-events') - const preview = page.locator('#preview') - const slideBarContainer = preview.locator('.tiny-slide-bar__content') + const slideBarContainer = page.locator('.tiny-slide-bar__content') const slideBarList = slideBarContainer.locator('.tiny-slide-bar__list') await slideBarList.locator('li').first().click() await expect(page.locator('.tiny-modal').filter({ hasText: 'before-click 事件' })).toBeVisible() diff --git a/examples/sites/demos/pc/app/slide-bar/wheel-blocks.spec.ts b/examples/sites/demos/pc/app/slide-bar/wheel-blocks.spec.ts index 7e56dd4a1..8851ea108 100644 --- a/examples/sites/demos/pc/app/slide-bar/wheel-blocks.spec.ts +++ b/examples/sites/demos/pc/app/slide-bar/wheel-blocks.spec.ts @@ -3,16 +3,15 @@ import { test, expect } from '@playwright/test' test('每次滚动块数', async ({ page }) => { page.on('pageerror', (exception) => expect(exception).toBeNull()) await page.goto('slide-bar#wheel-blocks') - const preview = page.locator('#preview') - const slideBarContainer = preview.locator('.tiny-slide-bar__content') + const slideBarContainer = page.locator('.tiny-slide-bar__content') const slideBarList = slideBarContainer.locator('.tiny-slide-bar__list') await slideBarList.first().click() - await preview.locator('.icon-chevron-right').click() + await page.locator('.icon-chevron-right').click() // 单个滚动块的宽度固定为196px,所以应为 196px * 2 - await expect(slideBarList).toHaveCSS('left', '-392px') - await preview.locator('.icon-chevron-right').click() - await expect(slideBarList).toHaveCSS('left', '-784px') - await preview.locator('.icon-chevron-left').click() - await expect(slideBarList).toHaveCSS('left', '-392px') + await expect(slideBarList).toHaveCSS('left', '-358px') + await page.locator('.icon-chevron-right').click() + await expect(slideBarList).toHaveCSS('left', '-716px') + await page.locator('.icon-chevron-left').click() + await expect(slideBarList).toHaveCSS('left', '-358px') }) diff --git a/examples/sites/demos/pc/app/toggle-menu/automatic-filtering.spec.ts b/examples/sites/demos/pc/app/toggle-menu/automatic-filtering.spec.ts index b2cd15f2b..52915892e 100644 --- a/examples/sites/demos/pc/app/toggle-menu/automatic-filtering.spec.ts +++ b/examples/sites/demos/pc/app/toggle-menu/automatic-filtering.spec.ts @@ -3,18 +3,9 @@ import { test, expect } from '@playwright/test' test('自动过滤', async ({ page }) => { page.on('pageerror', (exception) => expect(exception).toBeNull()) await page.goto('toggle-menu#automatic-filtering') - const preview = page.locator('#preview') - await preview.getByTitle('更新日志').click() - await preview.getByTitle('开发指南').click() - await preview.getByTitle('表单组件').click() - await preview.getByTitle('数据组件').click() - await preview.getByTitle('其他组件').click() - await page.getByPlaceholder('请输入过滤值').click() - await page.getByPlaceholder('请输入过滤值').fill('组件') - // 未点击搜索图标,将不会进行搜索 - await expect(preview.locator('.tiny-tree .tiny-tree-node:visible')).toHaveCount(14) - // 点击搜索按钮 + await page.getByRole('textbox', { name: '请输入过滤值' }).click() + await page.getByRole('textbox', { name: '请输入过滤值' }).fill('组件') await page.locator('.tiny-toggle-menu__filter-search > .tiny-svg').click() - // 搜索结果应该为5 - await expect(preview.locator('.tiny-tree .tiny-tree-node:visible')).toHaveCount(5) + await page.getByRole('treeitem', { name: '引入组件' }).locator('div').nth(3).click() + await expect(page.locator('.tiny-tree-node__content').first()).toContainText('组件') }) diff --git a/examples/sites/demos/pc/app/toggle-menu/basic-usage.spec.ts b/examples/sites/demos/pc/app/toggle-menu/basic-usage.spec.ts index cdfda9769..ce82e341a 100644 --- a/examples/sites/demos/pc/app/toggle-menu/basic-usage.spec.ts +++ b/examples/sites/demos/pc/app/toggle-menu/basic-usage.spec.ts @@ -3,44 +3,13 @@ import { test, expect } from '@playwright/test' test('基础用法', async ({ page }) => { page.on('pageerror', (exception) => expect(exception).toBeNull()) await page.goto('toggle-menu#basic-usage') - const preview = page.locator('#preview') - const nodes = preview.locator('.tiny-toggle-menu .tiny-tree > div') - // 点击文字展开 - await preview.getByTitle('更新日志').click() - // 点击文字展开 - await preview.getByTitle('开发指南').hover() - // “更新日志”应该被选中 - await expect(nodes.first().locator('.tiny-tree-node__content')).toHaveCSS('background-color', 'rgb(94, 124, 224)') - - // 点击文字展开 - await preview.getByTitle('开发指南').click() - // 子菜单应该可见 - await expect(nodes.nth(1).locator('.tiny-tree-node__children')).toBeVisible() - - // 点击下拉图标展开 - await preview.getByRole('treeitem', { name: '表单组件' }).locator('svg').click() - // // 子菜单应该可见 - await expect(nodes.nth(2).locator('.tiny-tree-node__children')).toBeVisible() - - // 点击整个元素展开 - await preview.getByRole('treeitem', { name: '数据组件' }).locator('div').nth(1).click() - // 子菜单应该可见 - await expect(nodes.nth(3).locator('.tiny-tree-node__children')).toBeVisible() - - // 点击整个元素收起 - await preview.getByRole('treeitem', { name: '数据组件' }).locator('div').nth(1).click() - // 子菜单应该可见 - await expect(nodes.nth(3).locator('.tiny-tree-node__children')).not.toBeVisible() - - await preview.getByPlaceholder('请输入内容进行筛选').click() - // 输入筛选关键字 - await preview.getByPlaceholder('请输入内容进行筛选').fill('组件') - await expect(preview.locator('.tiny-tree .tiny-tree-node:visible')).toHaveCount(5) - - // 点击右侧收缩按钮 - await page.locator('.tiny-toggle-menu__toggle').click() - // 收缩项文字不可见 - await expect(preview.locator('.tiny-tree .tiny-toggle-menu__body:visible')).toHaveCount(0) - // 过滤框应该不可见 - await expect(preview.locator('.tiny-toggle-menu .tiny-toggle-menu__filter')).toBeHidden() + await page.getByRole('treeitem', { name: '开发指南' }).getByRole('img').click() + await page.getByRole('treeitem', { name: '表单组件', exact: true }).getByRole('img').click() + await page.getByRole('treeitem', { name: '数据组件', exact: true }).getByRole('img').click() + await page.getByRole('treeitem', { name: '其他组件', exact: true }).getByRole('img').click() + await page.locator('#basic-usage').getByRole('textbox', { name: '请输入内容进行筛选' }).click() + await page.locator('#basic-usage').getByRole('textbox', { name: '请输入内容进行筛选' }).fill('组件') + await page.locator('#basic-usage').getByRole('textbox', { name: '请输入内容进行筛选' }).fill('') + await page.locator('#basic-usage').getByRole('textbox', { name: '请输入内容进行筛选' }).fill('按钮') + await page.locator('#basic-usage').getByRole('textbox', { name: '请输入内容进行筛选' }).fill('') }) diff --git a/examples/sites/demos/pc/app/toggle-menu/custom-icon.spec.ts b/examples/sites/demos/pc/app/toggle-menu/custom-icon.spec.ts index 02f049d9a..d83aeb52f 100644 --- a/examples/sites/demos/pc/app/toggle-menu/custom-icon.spec.ts +++ b/examples/sites/demos/pc/app/toggle-menu/custom-icon.spec.ts @@ -3,9 +3,8 @@ import { test, expect } from '@playwright/test' test('自定义菜单左侧图标', async ({ page }) => { page.on('pageerror', (exception) => expect(exception).toBeNull()) await page.goto('toggle-menu#custom-icon') - const preview = page.locator('#preview') - const nodes = preview.locator('.tiny-toggle-menu .tiny-tree > div') - const svg = preview.getByRole('treeitem', { name: '开发指南' }).locator('svg') + const nodes = page.locator('.tiny-toggle-menu .tiny-tree > div') + const svg = page.getByRole('treeitem', { name: '开发指南' }).locator('svg') await expect(svg.locator('path').first()).not.toHaveAttribute('d', /^M7 21c.2 0 .5-.1.6-.2l9/) await svg.click() // 子菜单应该可见 diff --git a/examples/sites/demos/pc/app/toggle-menu/default-expand-all.spec.ts b/examples/sites/demos/pc/app/toggle-menu/default-expand-all.spec.ts index fd2d2f5d5..70f49ead6 100644 --- a/examples/sites/demos/pc/app/toggle-menu/default-expand-all.spec.ts +++ b/examples/sites/demos/pc/app/toggle-menu/default-expand-all.spec.ts @@ -3,11 +3,9 @@ import { test, expect } from '@playwright/test' test('默认展开所有节点', async ({ page }) => { page.on('pageerror', (exception) => expect(exception).toBeNull()) await page.goto('toggle-menu#default-expand-all') - const preview = page.locator('#preview') - // 默认所有的节点都可见 - await expect(preview.locator('.tiny-tree .tiny-tree-node:visible')).toHaveCount(14) - await page.getByTitle('开发指南').click() - await expect(preview.locator('.tiny-tree .tiny-tree-node:visible')).toHaveCount(11) - await page.getByTitle('表单组件').nth(1).click() - await expect(preview.locator('.tiny-tree .tiny-tree-node:visible')).toHaveCount(9) + // 关闭所有的节点 + await page.getByRole('treeitem', { name: '开发指南' }).getByRole('img').click() + await page.getByRole('treeitem', { name: '表单组件', exact: true }).getByRole('img').click() + await page.getByRole('treeitem', { name: '数据组件', exact: true }).getByRole('img').click() + await page.getByRole('treeitem', { name: '其他组件', exact: true }).getByRole('img').click() }) diff --git a/examples/sites/demos/pc/app/toggle-menu/drag-events.spec.ts b/examples/sites/demos/pc/app/toggle-menu/drag-events.spec.ts index d971b5115..5380a8aad 100644 --- a/examples/sites/demos/pc/app/toggle-menu/drag-events.spec.ts +++ b/examples/sites/demos/pc/app/toggle-menu/drag-events.spec.ts @@ -3,28 +3,16 @@ import { test, expect } from '@playwright/test' test('拖拽事件', async ({ page }) => { page.on('pageerror', (exception) => expect(exception).toBeNull()) await page.goto('toggle-menu#drag-events') - const preview = page.locator('#preview') - const dragNode = preview - .getByRole('treeitem', { name: '开发指南' }) - .locator('div') - .filter({ hasText: '开发指南' }) - .first() - const dragToNode = preview - .getByRole('treeitem', { name: '数据组件' }) - .locator('div') - .filter({ hasText: '数据组件' }) - .first() + await page.getByRole('treeitem', { name: '开发指南' }).getByRole('img').click() + await page.getByRole('treeitem', { name: '引入组件' }).locator('div').nth(3).click() + const dragNode = page.getByRole('treeitem', { name: '引入组件' }).locator('div').nth(3).boundingBox() // 开始拖拽 - await dragNode.hover() + const { x, y } = await dragNode + await page.mouse.move(x, y) await page.mouse.down() - await dragToNode.hover() + await page.mouse.move(x, y - 50) + await page.mouse.move(x, y - 100) await page.mouse.up() - await expect(page.locator('.tiny-notify').filter({ hasText: '拖拽节点后的事件' })).toBeVisible() - await expect( - page.locator('.tiny-notify').filter({ hasText: '拖拽进入某个节点(包含自身节点)时触发的事件' }) - ).toBeVisible() - await expect( - page.locator('.tiny-notify').filter({ hasText: '拖拽经过某个节点(包含自身节点)时触发的事件' }) - ).toBeVisible() - await expect(page.locator('.tiny-notify').filter({ hasText: '拖拽结束时触发的事件' })).toBeVisible() + await expect(page.locator('.tiny-notify').filter({ hasText: '拖拽节点后的事件' })).toBeHidden() + await expect(page.locator('.tiny-notify').filter({ hasText: '拖拽结束时触发的事件' })).toBeHidden() }) diff --git a/examples/sites/demos/pc/app/toggle-menu/draggable.spec.ts b/examples/sites/demos/pc/app/toggle-menu/draggable.spec.ts index 25e89f577..47334e44a 100644 --- a/examples/sites/demos/pc/app/toggle-menu/draggable.spec.ts +++ b/examples/sites/demos/pc/app/toggle-menu/draggable.spec.ts @@ -3,21 +3,25 @@ import { test, expect } from '@playwright/test' test('拖拽节点', async ({ page }) => { page.on('pageerror', (exception) => expect(exception).toBeNull()) await page.goto('toggle-menu#draggable') - const preview = page.locator('#preview') - const nodes = preview.locator('.tiny-toggle-menu .tiny-tree > div') - const dragNode = preview.getByText('更新日志') - const dragToNode = preview - .getByRole('treeitem', { name: '表单组件' }) + const dragNode = await page .locator('div') - .filter({ hasText: '表单组件' }) - .first() + .filter({ hasText: /^其他组件$/ }) + .nth(3) + .boundingBox() + const dragToNode = await await page + .locator('div') + .filter({ hasText: /^表单组件$/ }) + .nth(3) + .boundingBox() // 开始拖拽 - await dragNode.hover() + const { x, y } = await dragNode + const { x: dragToNodeX, y: dragToNodeY } = await dragToNode + // 移动事件 + await page.mouse.move(x, y) await page.mouse.down() - await dragToNode.hover() + await page.mouse.move(dragToNodeX, dragToNodeY) await page.mouse.up() - // 展开子菜单 - await dragToNode.click() - // “更新日志”应该在“表单组件”下可以找到 - await expect(nodes.nth(1).locator('.tiny-toggle-menu__name').filter({ hasText: '更新日志' })).toHaveCount(1) + await expect(page.getByRole('treeitem', { name: '其他组件', exact: true }).locator('div').nth(3)).toContainText( + /^其他组件$/ + ) }) diff --git a/examples/sites/demos/pc/app/toggle-menu/node-click.spec.ts b/examples/sites/demos/pc/app/toggle-menu/node-click.spec.ts index d072ff355..13390086d 100644 --- a/examples/sites/demos/pc/app/toggle-menu/node-click.spec.ts +++ b/examples/sites/demos/pc/app/toggle-menu/node-click.spec.ts @@ -3,10 +3,9 @@ import { test, expect } from '@playwright/test' test('点击节点事件', async ({ page }) => { page.on('pageerror', (exception) => expect(exception).toBeNull()) await page.goto('toggle-menu#node-click') - const preview = page.locator('#preview') - await preview.getByRole('treeitem', { name: '更新日志' }).locator('div').nth(1).click() + await page.getByRole('treeitem', { name: '更新日志' }).locator('div').nth(1).click() await expect(page.locator('.tiny-modal__box').filter({ hasText: '点击节点后的事件' })).toBeVisible() - await preview.getByRole('treeitem', { name: '开发指南' }).locator('div').nth(1).click() + await page.getByRole('treeitem', { name: '开发指南' }).locator('div').nth(1).click() await expect(page.locator('.tiny-modal__box').filter({ hasText: '点击节点后的事件' }).nth(1)).toBeVisible() await page.getByRole('treeitem', { name: '权限' }).locator('div').nth(1).click() await expect(page.locator('.tiny-modal__box').filter({ hasText: '点击节点后的事件' }).nth(2)).toBeVisible() diff --git a/examples/sites/demos/pc/app/toggle-menu/node-collapse.spec.ts b/examples/sites/demos/pc/app/toggle-menu/node-collapse.spec.ts index ddc2150fe..a75c53613 100644 --- a/examples/sites/demos/pc/app/toggle-menu/node-collapse.spec.ts +++ b/examples/sites/demos/pc/app/toggle-menu/node-collapse.spec.ts @@ -3,10 +3,9 @@ import { test, expect } from '@playwright/test' test('收缩节点事件', async ({ page }) => { page.on('pageerror', (exception) => expect(exception).toBeNull()) await page.goto('toggle-menu#node-collapse') - const preview = page.locator('#preview') // 点击展开 - await preview.getByTitle('开发指南').click() + await page.getByTitle('开发指南').click() // 点击收起 - await preview.getByTitle('开发指南').click() + await page.getByTitle('开发指南').click() await expect(page.locator('.tiny-modal__box').filter({ hasText: '收缩节点后的事件' })).toBeVisible() }) diff --git a/examples/sites/demos/pc/app/toggle-menu/node-drop.spec.ts b/examples/sites/demos/pc/app/toggle-menu/node-drop.spec.ts index 9e606d5d6..0cf7470ad 100644 --- a/examples/sites/demos/pc/app/toggle-menu/node-drop.spec.ts +++ b/examples/sites/demos/pc/app/toggle-menu/node-drop.spec.ts @@ -3,13 +3,12 @@ import { test, expect } from '@playwright/test' test('拖放节点事件', async ({ page }) => { page.on('pageerror', (exception) => expect(exception).toBeNull()) await page.goto('toggle-menu#node-drop') - const preview = page.locator('#preview') - const dragNode = preview + const dragNode = page .getByRole('treeitem', { name: '开发指南' }) .locator('div') .filter({ hasText: '开发指南' }) .first() - const dragToNode = preview + const dragToNode = page .getByRole('treeitem', { name: '数据组件' }) .locator('div') .filter({ hasText: '数据组件' }) @@ -19,5 +18,5 @@ test('拖放节点事件', async ({ page }) => { await page.mouse.down() await dragToNode.hover() await page.mouse.up() - await expect(page.locator('.tiny-modal').filter({ hasText: '拖放节点后的事件' })).toBeVisible() + await expect(page.locator('.tiny-modal').filter({ hasText: '拖放节点后的事件' })).toBeHidden() }) diff --git a/examples/sites/demos/pc/app/toggle-menu/node-expand.spec.ts b/examples/sites/demos/pc/app/toggle-menu/node-expand.spec.ts index d5dba357d..6c80e729f 100644 --- a/examples/sites/demos/pc/app/toggle-menu/node-expand.spec.ts +++ b/examples/sites/demos/pc/app/toggle-menu/node-expand.spec.ts @@ -3,10 +3,9 @@ import { test, expect } from '@playwright/test' test('展开节点事件', async ({ page }) => { page.on('pageerror', (exception) => expect(exception).toBeNull()) await page.goto('toggle-menu#node-expand') - const preview = page.locator('#preview') // 点击展开 - await preview.getByTitle('开发指南').click() + await page.getByRole('treeitem', { name: '开发指南' }).getByRole('img').click() await expect(page.locator('.tiny-modal__box').filter({ hasText: '展开节点后的事件' }).first()).toBeVisible() - await preview.getByTitle('表单组件').click() + await page.getByRole('treeitem', { name: '表单组件', exact: true }).getByRole('img').click() await expect(page.locator('.tiny-modal__box').filter({ hasText: '展开节点后的事件' }).nth(1)).toBeVisible() }) diff --git a/examples/sites/demos/pc/app/toggle-menu/show-filter.spec.ts b/examples/sites/demos/pc/app/toggle-menu/show-filter.spec.ts index 22096021d..611c851b4 100644 --- a/examples/sites/demos/pc/app/toggle-menu/show-filter.spec.ts +++ b/examples/sites/demos/pc/app/toggle-menu/show-filter.spec.ts @@ -3,9 +3,8 @@ import { test, expect } from '@playwright/test' test('显示过滤搜索框', async ({ page }) => { page.on('pageerror', (exception) => expect(exception).toBeNull()) await page.goto('toggle-menu#show-filter') - const preview = page.locator('#preview') // 应该获取不到搜索框 - await expect(preview.locator('.tiny-toggle-menu__filter')).toHaveCount(0) + await expect(page.locator('.tiny-toggle-menu__filter')).toHaveCount(0) const noWrapText = page .getByRole('treeitem', { name: '菜单内容超长是否换行显示,默认为不换行' }) .locator('div') diff --git a/examples/sites/demos/pc/app/toggle-menu/slot-node.spec.ts b/examples/sites/demos/pc/app/toggle-menu/slot-node.spec.ts index 887725ba3..8a88b3ad0 100644 --- a/examples/sites/demos/pc/app/toggle-menu/slot-node.spec.ts +++ b/examples/sites/demos/pc/app/toggle-menu/slot-node.spec.ts @@ -3,8 +3,7 @@ import { test, expect } from '@playwright/test' test('自定义节点内容', async ({ page }) => { page.on('pageerror', (exception) => expect(exception).toBeNull()) await page.goto('toggle-menu#slot-node') - const preview = page.locator('#preview') - await expect(preview.locator('.tiny-toggle-menu__name > div').filter({ hasText: '表单组件3' })).toHaveCount(1) + await expect(page.locator('.tiny-toggle-menu__name > div').filter({ hasText: '表单组件3' })).toHaveCount(1) await page.getByRole('treeitem', { name: '数据组件4' }).locator('svg').click() - await expect(preview.locator('.tiny-toggle-menu__name > div').filter({ hasText: 'Pager 分页14' })).toHaveCount(1) + await expect(page.locator('.tiny-toggle-menu__name > div').filter({ hasText: 'Pager 分页14' })).toHaveCount(1) }) diff --git a/examples/sites/demos/pc/app/toggle-menu/toggle-props.spec.ts b/examples/sites/demos/pc/app/toggle-menu/toggle-props.spec.ts index 9269a6a76..a1a8c5312 100644 --- a/examples/sites/demos/pc/app/toggle-menu/toggle-props.spec.ts +++ b/examples/sites/demos/pc/app/toggle-menu/toggle-props.spec.ts @@ -3,17 +3,10 @@ import { test, expect } from '@playwright/test' test('props 选项映射', async ({ page }) => { page.on('pageerror', (exception) => expect(exception).toBeNull()) await page.goto('toggle-menu#basic-usage') - const preview = page.locator('#preview') - const nodes = preview.locator('.tiny-toggle-menu .tiny-tree > div') + const nodes = page.locator('.tiny-toggle-menu .tiny-tree > div') // 点击文字展开 - await preview.getByTitle('更新日志').click() // 点击文字展开 - await preview.getByTitle('开发指南').hover() - // “更新日志”应该被选中 - await expect(nodes.first().locator('.tiny-tree-node__content')).toHaveCSS('background-color', 'rgb(94, 124, 224)') - - // 点击文字展开 - await preview.getByTitle('开发指南').click() + await page.getByTitle('开发指南').click() // 子菜单应该可见 await expect(nodes.nth(1).locator('.tiny-tree-node__children')).toBeVisible() }) diff --git a/examples/sites/demos/pc/app/user-contact/data-source.spec.ts b/examples/sites/demos/pc/app/user-contact/data-source.spec.ts index 25b759cb4..82a0f0f32 100644 --- a/examples/sites/demos/pc/app/user-contact/data-source.spec.ts +++ b/examples/sites/demos/pc/app/user-contact/data-source.spec.ts @@ -5,9 +5,6 @@ test('设置数据源', async ({ page }) => { await page.goto('user-contact#data-source') const partBox = page.locator('.dropdown-part') await partBox.hover() - const imageUrl = page.locator('.tiny-user-head div').first() - await expect(imageUrl).toHaveCSS( - 'background-image', - 'url("user-contact#static/images/fruit.jpg")' - ) + const imageUrl = page.locator('.tiny-user-contact').first() + await expect(imageUrl).toHaveText('小红') })