-
Notifications
You must be signed in to change notification settings - Fork 17
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
test(e2e): add breadcrumb UI e2e test #71
Conversation
WalkthroughA new test suite has been added for the breadcrumb component, located in Changes
Possibly related PRs
Suggested labels
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
🧹 Outside diff range and nitpick comments (3)
tests/breadcrumb/xdesign.spec.ts (3)
1-3
: Consider using English for test suite names.The test suite name is currently in Chinese. For better consistency and easier collaboration, especially in international teams, consider using English for test suite names.
Suggested change:
-test.describe('breadcrumb组件xdesign规范', () => { +test.describe('Breadcrumb component xdesign specification', () => {
4-15
: Approve test case with minor improvement suggestion.The test case effectively covers the default UI state and hover interaction. The use of screenshots for UI testing and the implementation of error handling are good practices.
For improved readability, consider adding a brief comment explaining the purpose of each screenshot:
await expect(demo).toBeInViewport() +// Capture the default state of the breadcrumb await expect(demo).toHaveScreenshot('base.png') // 关闭按钮hover状态 await demo.getByText('产品').hover() await expect(demo).toBeInViewport() +// Capture the hover state of the '产品' (Product) button await expect(demo).toHaveScreenshot('hover.png')
17-23
: Approve test case with suggestions for improvement.The test case effectively covers the custom separator functionality. The structure is consistent with the first test case, and error handling is properly implemented.
Consider the following improvements:
- Add a hover interaction test, similar to the first test case, to ensure consistency in testing across different configurations.
- Verify the presence of the custom separator to ensure it's correctly applied.
Example implementation:
test('自定义分隔符--UI截图', async ({ page }) => { page.on('pageerror', (exception) => expect(exception).toBeNull()) await page.goto('breadcrumb#separator') const demo = page.locator('#separator .pc-demo') await expect(demo).toBeInViewport() // Verify the presence of the custom separator await expect(demo.locator('.custom-separator')).toBeVisible() // Capture the default state await expect(demo).toHaveScreenshot('separator-default.png') // Test hover state (assuming there's an interactive element) await demo.getByText('产品').hover() await expect(demo).toHaveScreenshot('separator-hover.png') }
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
⛔ Files ignored due to path filters (3)
tests/breadcrumb/xdesign.spec.ts-snapshots/base-chromium-win32.png
is excluded by!**/*.png
tests/breadcrumb/xdesign.spec.ts-snapshots/hover-chromium-win32.png
is excluded by!**/*.png
tests/breadcrumb/xdesign.spec.ts-snapshots/separator-chromium-win32.png
is excluded by!**/*.png
📒 Files selected for processing (1)
- tests/breadcrumb/xdesign.spec.ts (1 hunks)
import { expect, test } from '@playwright/test' | ||
|
||
test.describe('breadcrumb组件xdesign规范', () => { | ||
test('默认--UI截图', async ({ page }) => { | ||
page.on('pageerror', (exception) => expect(exception).toBeNull()) | ||
await page.goto('breadcrumb#base') | ||
const demo = page.locator('#base .pc-demo') | ||
await expect(demo).toBeInViewport() | ||
await expect(demo).toHaveScreenshot('base.png') | ||
|
||
// 关闭按钮hover状态 | ||
await demo.getByText('产品').hover() | ||
await expect(demo).toBeInViewport() | ||
await expect(demo).toHaveScreenshot('hover.png') | ||
}) | ||
|
||
test('自定义分隔符--UI截图', async ({ page }) => { | ||
page.on('pageerror', (exception) => expect(exception).toBeNull()) | ||
await page.goto('breadcrumb#separator') | ||
const demo = page.locator('#separator .pc-demo') | ||
await expect(demo).toBeInViewport() | ||
await expect(demo).toHaveScreenshot('separator.png') | ||
}) | ||
}) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
Consider expanding test coverage for comprehensive validation.
The current test file provides good coverage for basic functionality of the breadcrumb component. To further improve the robustness of the tests, consider adding the following test cases:
- Test for dynamic breadcrumb updates (if applicable).
- Verify correct linking/navigation when clicking on breadcrumb items.
- Test for proper truncation or wrapping of long breadcrumb paths.
- Verify accessibility features (e.g., proper ARIA attributes, keyboard navigation).
- Test responsiveness by checking appearance at different viewport sizes.
Example of an additional test case:
test('Breadcrumb navigation--UI and functionality', async ({ page }) => {
page.on('pageerror', (exception) => expect(exception).toBeNull())
await page.goto('breadcrumb#navigation')
const demo = page.locator('#navigation .pc-demo')
// Check initial state
await expect(demo).toBeInViewport()
await expect(demo).toHaveScreenshot('navigation-initial.png')
// Click on a breadcrumb item
await demo.getByText('Products').click()
// Verify URL change (adjust the expected URL as needed)
await expect(page).toHaveURL(/.*\/products/)
// Verify updated breadcrumb state
await expect(demo).toHaveScreenshot('navigation-after-click.png')
})
These additional tests will help ensure the breadcrumb component functions correctly across various scenarios and user interactions.
PR
PR Checklist
Please check if your PR fulfills the following requirements:
PR Type
What kind of change does this PR introduce?
What is the current behavior?
Issue Number: N/A
What is the new behavior?
Does this PR introduce a breaking change?
Other information
Summary by CodeRabbit