Skip to content

Commit 3e0de5d

Browse files
authored
test: refactor DatePickerIT to use TestBench API (#6966)
1 parent 8e7e32a commit 3e0de5d

File tree

1 file changed

+56
-69
lines changed
  • vaadin-date-picker-flow-parent/vaadin-date-picker-flow-integration-tests/src/test/java/com/vaadin/flow/component/datepicker

1 file changed

+56
-69
lines changed

vaadin-date-picker-flow-parent/vaadin-date-picker-flow-integration-tests/src/test/java/com/vaadin/flow/component/datepicker/DatePickerIT.java

Lines changed: 56 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,6 @@
1515
*/
1616
package com.vaadin.flow.component.datepicker;
1717

18-
import static org.junit.Assert.assertTrue;
19-
2018
import java.time.LocalDate;
2119
import java.time.Month;
2220

@@ -29,8 +27,6 @@
2927

3028
import com.vaadin.flow.component.datepicker.testbench.DatePickerElement;
3129
import com.vaadin.flow.testutil.TestPath;
32-
import com.vaadin.testbench.TestBenchElement;
33-
import com.vaadin.testbench.TestBenchTestCase;
3430
import com.vaadin.tests.AbstractComponentIT;
3531

3632
/**
@@ -40,13 +36,11 @@
4036
public class DatePickerIT extends AbstractComponentIT {
4137

4238
private static final String DATEPICKER_OVERLAY = "vaadin-date-picker-overlay";
43-
private TestBenchTestCase layout;
4439

4540
@Before
4641
public void init() {
4742
open();
4843
waitForElementPresent(By.tagName("vaadin-date-picker"));
49-
layout = this;
5044
}
5145

5246
@Test
@@ -57,93 +51,92 @@ public void openSimpleDatePickerFromServer_overlayVisible() {
5751

5852
@Test
5953
public void selectDateOnSimpleDatePicker() {
60-
WebElement picker = layout.findElement(By.id("simple-picker"));
61-
WebElement message = layout.findElement(By.id("simple-picker-message"));
54+
DatePickerElement picker = $(DatePickerElement.class)
55+
.id("simple-picker");
56+
WebElement message = findElement(By.id("simple-picker-message"));
6257

63-
executeScript("arguments[0].value = '1985-01-10'", picker);
58+
picker.setDate(LocalDate.of(1985, 1, 10));
6459

6560
waitUntil(driver -> message.getText()
6661
.contains("Day: 10\nMonth: 1\nYear: 1985"));
6762

68-
executeScript("arguments[0].value = ''", picker);
63+
picker.clear();
6964

7065
waitUntil(driver -> "No date is selected".equals(message.getText()));
7166
}
7267

7368
@Test
7469
public void selectDateOnMinMaxDatePicker() {
75-
WebElement picker = layout.findElement(By.id("min-and-max-picker"));
76-
WebElement message = layout
77-
.findElement(By.id("min-and-max-picker-message"));
70+
DatePickerElement picker = $(DatePickerElement.class)
71+
.id("min-and-max-picker");
72+
WebElement message = findElement(By.id("min-and-max-picker-message"));
7873

7974
LocalDate now = LocalDate.now();
80-
executeScript("arguments[0].value = arguments[1]", picker,
81-
now.toString());
75+
picker.setDate(now);
8276

83-
Assert.assertEquals("The selected date should be considered valid",
84-
false, executeScript("return arguments[0].invalid", picker));
77+
Assert.assertFalse("The selected date should be considered valid",
78+
picker.getPropertyBoolean("invalid"));
8579

8680
waitUntil(driver -> message.getText()
8781
.contains(("Day: " + now.getDayOfMonth() + "\nMonth: "
8882
+ now.getMonthValue() + "\nYear: " + now.getYear())));
8983

90-
executeScript("arguments[0].value = ''", picker);
84+
picker.clear();
9185

9286
waitUntil(driver -> "No date is selected".equals(message.getText()));
9387

94-
Assert.assertEquals("The empty date should be considered valid", false,
95-
executeScript("return arguments[0].invalid", picker));
88+
Assert.assertFalse("The empty date should be considered valid",
89+
picker.getPropertyBoolean("invalid"));
9690

9791
LocalDate invalid = now.minusYears(1);
9892

99-
executeScript("arguments[0].value = arguments[1]", picker,
100-
invalid.toString());
93+
picker.setDate(invalid);
10194

102-
Assert.assertEquals("The selected date should be considered invalid",
103-
true, executeScript("return arguments[0].invalid", picker));
95+
Assert.assertTrue("The selected date should be considered invalid",
96+
picker.getPropertyBoolean("invalid"));
10497
}
10598

10699
@Test
107100
public void selectDateOnFinnishDatePicker() {
108-
WebElement picker = layout.findElement(By.id("finnish-picker"));
109-
WebElement message = layout
110-
.findElement(By.id("finnish-picker-message"));
101+
DatePickerElement picker = $(DatePickerElement.class)
102+
.id("finnish-picker");
103+
WebElement message = findElement(By.id("finnish-picker-message"));
111104

112-
executeScript("arguments[0].value = '1985-01-10'", picker);
105+
picker.setDate(LocalDate.of(1985, 1, 10));
113106

114107
waitUntil(driver -> "Day of week: torstai\nMonth: tammiku"
115108
.equals(message.getText()));
116109

117-
executeScript("arguments[0].value = ''", picker);
110+
picker.clear();
118111

119112
waitUntil(driver -> "No date is selected".equals(message.getText()));
120113

121-
executeScript("arguments[0].setAttribute(\"opened\", true)", picker);
122-
waitForElementPresent(By.tagName(DATEPICKER_OVERLAY));
114+
picker.open();
123115

124-
TestBenchElement overlay = $(DATEPICKER_OVERLAY).first();
125-
WebElement todayButton = overlay.$("*")
126-
.attribute("slot", "today-button").first();
116+
WebElement overlay = $(DATEPICKER_OVERLAY).waitForFirst();
117+
WebElement todayButton = overlay
118+
.findElement(By.cssSelector("[slot=today-button]"));
127119

128120
waitUntil(driver -> "tänään".equals(todayButton.getText()));
129121
}
130122

131123
@Test
132124
public void selectDatesOnLinkedDatePickers() {
133-
WebElement startPicker = layout.findElement(By.id("start-picker"));
134-
WebElement endPicker = layout.findElement(By.id("end-picker"));
135-
WebElement message = layout.findElement(By.id("start-and-end-message"));
125+
DatePickerElement startPicker = $(DatePickerElement.class)
126+
.id("start-picker");
127+
DatePickerElement endPicker = $(DatePickerElement.class)
128+
.id("end-picker");
129+
WebElement message = findElement(By.id("start-and-end-message"));
136130

137-
executeScript("arguments[0].value = '1985-01-10'", startPicker);
131+
startPicker.setDate(LocalDate.of(1985, 1, 10));
138132

139133
waitUntil(driver -> "Select the ending date".equals(message.getText()));
140134

141135
Assert.assertEquals(
142136
"The min date at the end date picker should be 1985-01-11",
143-
true, executeScript("return arguments[0].min === '1985-01-11'",
144-
endPicker));
137+
"1985-01-11", endPicker.getProperty("min"));
145138

146-
executeScript("arguments[0].value = '1985-01-20'", endPicker);
139+
endPicker.setDate(LocalDate.of(1985, 1, 20));
147140

148141
waitUntil(driver -> "Selected period:\nFrom 1985-01-10 to 1985-01-20"
149142
.equals(message.getText()));
@@ -153,50 +146,47 @@ true, executeScript("return arguments[0].min === '1985-01-11'",
153146
true, executeScript("return arguments[0].max === '1985-01-19'",
154147
startPicker));
155148

156-
executeScript("arguments[0].value = ''", startPicker);
149+
startPicker.clear();
157150
waitUntil(
158151
driver -> "Select the starting date".equals(message.getText()));
159152
}
160153

161154
@Test
162155
public void selectDatesOnCustomLocaleDatePickers() {
163-
WebElement localePicker = layout
164-
.findElement(By.id("locale-change-picker"));
165-
WebElement message = layout
166-
.findElement(By.id("Customize-locale-picker-message"));
167-
WebElement displayText = localePicker.findElement(By.tagName("input"));
168-
executeScript("arguments[0].value = '2018-03-27'", localePicker);
156+
DatePickerElement localePicker = $(DatePickerElement.class)
157+
.id("locale-change-picker");
158+
WebElement message = findElement(
159+
By.id("Customize-locale-picker-message"));
160+
localePicker.setDate(LocalDate.of(2018, 3, 27));
169161

170162
waitUntil(driver -> message.getText()
171163
.contains("Day: 27\nMonth: 3\nYear: 2018\nLocale:"));
172164

173165
Assert.assertEquals(
174-
"The format of the displayed date should be MM/DD/YYYY.", true,
175-
executeScript("return arguments[0].value === '3/27/2018'",
176-
displayText));
166+
"The format of the displayed date should be MM/DD/YYYY",
167+
"3/27/2018", localePicker.getInputValue());
177168

178-
layout.findElement(By.id("Locale-UK")).click();
179-
executeScript("arguments[0].value = '2018-03-26'", localePicker);
169+
findElement(By.id("Locale-UK")).click();
170+
localePicker.setDate(LocalDate.of(2018, 3, 26));
180171
waitUntil(driver -> "Day: 26\nMonth: 3\nYear: 2018\nLocale: en_GB"
181172
.equals(message.getText()));
182173

183174
Assert.assertEquals(
184-
"The format of the displayed date should be DD/MM/YYYY.", true,
185-
executeScript("return arguments[0].value === '26/03/2018'",
186-
displayText));
175+
"The format of the displayed date should be DD/MM/YYYY",
176+
"26/03/2018", localePicker.getInputValue());
187177

188-
layout.findElement(By.id("Locale-US")).click();
189-
executeScript("arguments[0].value = '2018-03-25'", localePicker);
178+
findElement(By.id("Locale-US")).click();
179+
localePicker.setDate(LocalDate.of(2018, 3, 25));
190180
waitUntil(driver -> "Day: 25\nMonth: 3\nYear: 2018\nLocale: en_US"
191181
.equals(message.getText()));
192182
Assert.assertEquals(
193-
"The format of the displayed date should be MM/DD/YYYY.", true,
194-
executeScript("return arguments[0].value === '3/25/2018'",
195-
displayText));
183+
"The format of the displayed date should be MM/DD/YYYY",
184+
"3/25/2018", localePicker.getInputValue());
196185

197-
layout.findElement(By.id("Locale-UK")).click();
198-
assertTrue((Boolean) executeScript(
199-
"return arguments[0].value === '25/03/2018'", displayText));
186+
findElement(By.id("Locale-UK")).click();
187+
Assert.assertEquals(
188+
"The format of the displayed date should be DD/MM/YYYY",
189+
"25/03/2018", localePicker.getInputValue());
200190
}
201191

202192
private void setDateAndAssert(DatePickerElement datePicker, LocalDate date,
@@ -209,8 +199,6 @@ private void setDateAndAssert(DatePickerElement datePicker, LocalDate date,
209199
public void selectDatesBeforeYear1000() {
210200
DatePickerElement localePicker = $(DatePickerElement.class)
211201
.id("locale-change-picker");
212-
TestBenchElement message = $("div")
213-
.id("Customize-locale-picker-message");
214202

215203
setDateAndAssert(localePicker, LocalDate.of(900, Month.MARCH, 7),
216204
"3/7/0900");
@@ -269,8 +257,6 @@ private void setInputValueAndAssert(DatePickerElement datePicker,
269257
public void selectDatesBeforeYear1000SimulateUserInput() {
270258
DatePickerElement localePicker = $(DatePickerElement.class)
271259
.id("locale-change-picker");
272-
TestBenchElement message = $("div")
273-
.id("Customize-locale-picker-message");
274260

275261
setInputValueAndAssert(localePicker, "3/7/0900",
276262
LocalDate.of(900, Month.MARCH, 7));
@@ -345,7 +331,8 @@ public void datePicker_OpenedChangeListener() {
345331
WebElement message = findElement(
346332
By.id("picker-with-opened-change-message"));
347333

348-
WebElement picker = findElement(By.id("picker-with-opened-change"));
334+
DatePickerElement picker = $(DatePickerElement.class)
335+
.id("picker-with-opened-change");
349336

350337
picker.click();
351338
waitUntil(drive -> "date picker was opened".equals(message.getText()));

0 commit comments

Comments
 (0)