75 lines
2.7 KiB
Plaintext
75 lines
2.7 KiB
Plaintext
---
|
|
alwaysApply: true
|
|
---
|
|
# About This Project
|
|
|
|
This project is both USING and IMPLEMENTING the PlayWrong test language. It provides:
|
|
- A custom test language parser (`src/parser.js`)
|
|
- A test executor using Playwright (`src/executor.js`)
|
|
- A CLI interface (`src/cli.js`)
|
|
- Test files written in the custom syntax (`.test` files)
|
|
|
|
# PlayWrong Test Language - Cheat Sheet
|
|
|
|
## Dump Functionality
|
|
The `dump` command creates HTML snapshots in `test-results/Chrome/<dumpname>/` that can be searched for HTML elements to help develop test flows. These dumps are invaluable for:
|
|
- Inspecting page structure at specific test steps
|
|
- Finding correct element selectors
|
|
- Debugging test failures
|
|
- Understanding page state during test execution
|
|
|
|
## Commands
|
|
|
|
### Browser Control
|
|
- `use "Chrome"` - Select browser profile (Chrome, Mobile, MobileSmall, Firefox, Safari, Edge)
|
|
- `use "Chrome" ( "Mobile" , "MobileSmall")` - Multi-profile test
|
|
- `open "https://example.com"` - Navigate to URL
|
|
|
|
### Element Interaction
|
|
- `wait element=button childText="Login"` - Wait for element to appear
|
|
- `click element=button childText="Login"` - Click element
|
|
- `scroll element=div class="content"` - Scroll to element
|
|
- `fill element=input name="email" value="user@example.com"` - Fill input field
|
|
|
|
### Flow Control
|
|
- `sleep 1000` - Wait milliseconds
|
|
- `sleep 1000 "loading animation"` - Wait with description
|
|
- `break` - Pause execution (press any key to continue)
|
|
- `break "waiting for user input"` - Pause with message
|
|
- `dump "step_name"` - Take screenshot
|
|
|
|
### Element Selectors
|
|
- `element=tagname` - HTML tag (div, span, button, input, a, form, etc.)
|
|
- `name="fieldName"` - Name attribute
|
|
- `id="elementId"` - ID attribute
|
|
- `class="className"` - CSS class
|
|
- `href="/path"` - Link href
|
|
- `type="email"` - Input type
|
|
- `childText="Button Text"` - Element containing text
|
|
- `child=span(class="badge" childText="1")` - Nested element selector
|
|
|
|
### Variables & Comments
|
|
- `$VARIABLE` - Environment variable (e.g., `$PASSWORD`, `$PASSWORDMAIL`)
|
|
- `/* multi-line comment */` - Block comment
|
|
- `# single line comment` - Line comment
|
|
- `// alternative line comment` - Alternative line comment
|
|
|
|
### Example Complete Flow
|
|
```test
|
|
use "Chrome"
|
|
open "https://example.com"
|
|
wait element=input type="email"
|
|
fill element=input type="email" value="user@example.com"
|
|
wait element=input type="password"
|
|
fill element=input type="password" value="$PASSWORD"
|
|
click element=button childText="Login"
|
|
sleep 2000 "login processing"
|
|
dump "logged_in"
|
|
```
|
|
|
|
## Tips
|
|
- Use descriptive names in sleep messages for better debugging
|
|
- Always wait for elements before interacting with them
|
|
- Use environment variables for sensitive data like passwords
|
|
- Take screenshots (dump) at key steps for debugging
|
|
- Comments help document complex test flows |