Initial commit

This commit is contained in:
Zhongwei Li
2025-11-30 08:28:25 +08:00
commit bc292955bb
23 changed files with 5385 additions and 0 deletions

View File

@@ -0,0 +1,81 @@
# Playwright Testing Best Practices Checklist
## Test Structure
- [ ] Tests follow AAA pattern (Arrange-Act-Assert)
- [ ] One assertion per test (or closely related assertions)
- [ ] Tests are independent and can run in any order
- [ ] Clear, descriptive test names using "should" format
- [ ] Proper use of test.describe for grouping related tests
## Locators
- [ ] **ONLY** data-testid locators used (no CSS/XPath)
- [ ] data-testid values are semantic and descriptive
- [ ] No brittle selectors (class names, IDs, XPath)
- [ ] Locators are unique on the page
- [ ] Use .first() or .nth() for intentional multiple elements
## Waiting & Timing
- [ ] Explicit waits before interactions
- [ ] NO hardcoded waits (page.waitForTimeout())
- [ ] Use waitForLoadState() after navigation
- [ ] Wait for network requests when needed
- [ ] Proper timeouts for slow operations
## Code Organization
- [ ] No code duplication - extract to utilities/Page Objects
- [ ] Use Page Object Model for complex pages
- [ ] Common setup in fixtures
- [ ] Utilities for repeated actions
- [ ] Clear file and folder structure
## TypeScript
- [ ] All functions have proper types
- [ ] No `any` types (use specific types)
- [ ] Interfaces for complex data structures
- [ ] Async/await used correctly
- [ ] Proper error handling
## Test Isolation
- [ ] Tests don't depend on each other
- [ ] Clean state before each test
- [ ] Proper cleanup in afterEach/afterAll
- [ ] No shared mutable state
- [ ] Each test creates its own data
## Assertions
- [ ] Use appropriate matchers (toBeVisible, toContainText, etc.)
- [ ] Assertions have proper error messages
- [ ] Wait for conditions before asserting
- [ ] Check both positive and negative cases
- [ ] Use expect() consistently
## Configuration
- [ ] Proper timeout settings
- [ ] Retries enabled for flaky tests
- [ ] Screenshot on failure
- [ ] Trace on first retry
- [ ] Parallel execution configured
## Documentation
- [ ] Complex test logic has comments
- [ ] Page Objects are documented
- [ ] Utilities have JSDoc comments
- [ ] README explains test structure
- [ ] Known issues documented
## Maintenance
- [ ] Regular review of flaky tests
- [ ] Remove obsolete tests
- [ ] Update tests when UI changes
- [ ] Refactor duplicate code
- [ ] Keep dependencies updated