-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathllms.txt
More file actions
132 lines (110 loc) · 5.41 KB
/
llms.txt
File metadata and controls
132 lines (110 loc) · 5.41 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
# DramaFinder
> Playwright element wrappers for Vaadin web components
DramaFinder provides typed Java wrappers around Vaadin web components for use with Playwright testing. Each wrapper exposes component-specific APIs for interaction and assertion, following accessibility-first lookup patterns using ARIA roles.
## Quick Start
```java
// Find elements by accessible label
TextFieldElement username = TextFieldElement.getByLabel(page, "Username");
ButtonElement submit = ButtonElement.getByText(page, "Submit");
// Interact and assert
username.setValue("john.doe");
username.assertValue("john.doe");
submit.click();
```
## Documentation
- [AGENTS.md](AGENTS.md) - Repository guidelines, coding conventions, pitfalls & patterns
- [TESTING.md](TESTING.md) - Testing guide and instructions
- [README.md](README.md) - Project overview and setup
## Element Specifications
Detailed API documentation for each element wrapper:
- [VaadinElement](docs/specifications/VaadinElement.md) - Base class for all elements
- [TextFieldElement](docs/specifications/TextFieldElement.md) - Text input
- [TextAreaElement](docs/specifications/TextAreaElement.md) - Multi-line text
- [EmailFieldElement](docs/specifications/EmailFieldElement.md) - Email input
- [PasswordFieldElement](docs/specifications/PasswordFieldElement.md) - Password input
- [NumberFieldElement](docs/specifications/NumberFieldElement.md) - Decimal numbers
- [IntegerFieldElement](docs/specifications/IntegerFieldElement.md) - Integer numbers
- [BigDecimalFieldElement](docs/specifications/BigDecimalFieldElement.md) - BigDecimal numbers
- [DatePickerElement](docs/specifications/DatePickerElement.md) - Date selection
- [TimePickerElement](docs/specifications/TimePickerElement.md) - Time selection
- [DateTimePickerElement](docs/specifications/DateTimePickerElement.md) - Date and time
- [CheckboxElement](docs/specifications/CheckboxElement.md) - Checkbox input
- [RadioButtonGroupElement](docs/specifications/RadioButtonGroupElement.md) - Radio group
- [SelectElement](docs/specifications/SelectElement.md) - Dropdown select
- [ListBoxElement](docs/specifications/ListBoxElement.md) - List selection
- [ButtonElement](docs/specifications/ButtonElement.md) - Buttons
- [DialogElement](docs/specifications/DialogElement.md) - Modal dialogs
- [NotificationElement](docs/specifications/NotificationElement.md) - Toast notifications
- [PopoverElement](docs/specifications/PopoverElement.md) - Popover overlays
- [AccordionElement](docs/specifications/AccordionElement.md) - Accordion container
- [AccordionPanelElement](docs/specifications/AccordionPanelElement.md) - Accordion panel
- [DetailsElement](docs/specifications/DetailsElement.md) - Collapsible details
- [TabSheetElement](docs/specifications/TabSheetElement.md) - Tab container
- [TabElement](docs/specifications/TabElement.md) - Individual tab
- [CardElement](docs/specifications/CardElement.md) - Card layout
- [MenuBarElement](docs/specifications/MenuBarElement.md) - Menu bar
- [MenuElement](docs/specifications/MenuElement.md) - Menu overlay
- [MenuItemElement](docs/specifications/MenuItemElement.md) - Menu item
- [ContextMenuElement](docs/specifications/ContextMenuElement.md) - Context menu
- [SideNavigationElement](docs/specifications/SideNavigationElement.md) - Side navigation
- [SideNavigationItemElement](docs/specifications/SideNavigationItemElement.md) - Navigation item
- [UploadElement](docs/specifications/UploadElement.md) - File upload
- [ProgressBarElement](docs/specifications/ProgressBarElement.md) - Progress indicator
- [AbstractNumberFieldElement](docs/specifications/AbstractNumberFieldElement.md) - Number field base
## Key Patterns
### Element Lookup
Elements are found using accessible names via ARIA roles:
```java
// By label (most common)
TextFieldElement.getByLabel(page, "Email")
ButtonElement.getByText(page, "Save")
SelectElement.getByLabel(page, "Country")
// Scoped lookup within container
TextFieldElement.getByLabel(formLocator, "Name")
```
### ARIA Roles by Component
- Text fields: `AriaRole.TEXTBOX`
- Number fields: `AriaRole.SPINBUTTON`
- Date/time pickers: `AriaRole.COMBOBOX`
- Buttons: `AriaRole.BUTTON`
- Checkboxes: `AriaRole.CHECKBOX`
- Radio buttons: `AriaRole.RADIO`
- Dialogs: `AriaRole.DIALOG`
- List boxes: `AriaRole.LISTBOX`
- Menus: `AriaRole.MENU`, `AriaRole.MENUITEM`
### Assertion Methods
Each element provides assertion methods that auto-retry:
```java
field.assertValue("expected");
field.assertEnabled();
field.assertDisabled();
field.assertRequired();
field.assertInvalid();
dialog.assertOpen();
dialog.assertClosed();
```
### Mixin Interfaces
Common behaviors are provided via interfaces:
- `HasInputFieldElement` - value get/set
- `HasValidationPropertiesElement` - required, invalid, error message
- `HasEnabledElement` - enabled/disabled state
- `FocusableElement` - focus/blur operations
- `HasThemeElement` - theme variant assertions
- `HasClearButtonElement` - clear button click
- `HasPlaceholderElement` - placeholder text
- `HasTooltipElement` - tooltip content
- `HasLabelElement` - label text
- `HasHelperElement` - helper text
## Build Commands
```bash
# Build with tests
./mvnw clean install
# Run integration tests
./mvnw -B verify --file pom.xml
# Run single IT test
./mvnw -Dit.test=MyViewIT -Pit verify
```
## Source Code
- Main elements: `src/main/java/org/vaadin/addons/dramafinder/element/`
- Shared mixins: `src/main/java/org/vaadin/addons/dramafinder/element/shared/`
- Integration tests: `src/test/java/**/*IT.java`