+ * Showing or hiding the selection column makes the grid re-render the column tree, which
+ * invalidates the row and its slots. The lookup is retried while that happens, so that a stale
+ * element or a cell whose slot is not rendered yet is not reported as an absent child.
+ */
+ private TestBenchElement getSlottedCellChild(int rowIndex, String tagName) {
+ return new FluentWait<>(getDriver())
+ .withTimeout(Duration.ofSeconds(2))
+ .pollingEvery(Duration.ofMillis(50))
+ .ignoring(org.openqa.selenium.NoSuchElementException.class,
+ StaleElementReferenceException.class)
+ .until(driver -> {
+ TestBenchElement cell = getSlottedCell(getRow(rowIndex));
+ return cell.findElements(By.tagName(tagName)).stream().findFirst()
+ .map(TestBenchElement.class::cast);
+ })
+ .orElse(null);
+ }
private TestBenchElement getSlottedCell(WebElement e) {
String slot = e.findElement(By.tagName("slot")).getAttribute("name");
From b3ec001e03e62e90ce9762d2989757dc1c63ab23 Mon Sep 17 00:00:00 2001
From: Javier Godoy <11554739+javier-godoy@users.noreply.github.com>
Date: Thu, 27 Aug 2026 14:14:07 -0300
Subject: [PATCH 13/14] WIP: update copyright headers
squash-into the first in-branch commit that modifies each file
---
.../flowingcode/vaadin/addons/gridhelpers/AllFeaturesDemo.java | 2 +-
.../vaadin/addons/gridhelpers/ColumnToggleMenuDemo.java | 2 +-
.../com/flowingcode/vaadin/addons/gridhelpers/LombokDemo.java | 2 +-
.../vaadin/addons/gridhelpers/test/GridHelperTest.java | 2 +-
src/test/resources/META-INF/resources/gridhelpers/styles.css | 2 +-
5 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/src/test/java/com/flowingcode/vaadin/addons/gridhelpers/AllFeaturesDemo.java b/src/test/java/com/flowingcode/vaadin/addons/gridhelpers/AllFeaturesDemo.java
index 78f0096..04f11a6 100644
--- a/src/test/java/com/flowingcode/vaadin/addons/gridhelpers/AllFeaturesDemo.java
+++ b/src/test/java/com/flowingcode/vaadin/addons/gridhelpers/AllFeaturesDemo.java
@@ -2,7 +2,7 @@
* #%L
* Grid Helpers Add-on
* %%
- * Copyright (C) 2022 - 2025 Flowing Code
+ * Copyright (C) 2022 - 2026 Flowing Code
* %%
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/src/test/java/com/flowingcode/vaadin/addons/gridhelpers/ColumnToggleMenuDemo.java b/src/test/java/com/flowingcode/vaadin/addons/gridhelpers/ColumnToggleMenuDemo.java
index 7fc543b..4c4feed 100644
--- a/src/test/java/com/flowingcode/vaadin/addons/gridhelpers/ColumnToggleMenuDemo.java
+++ b/src/test/java/com/flowingcode/vaadin/addons/gridhelpers/ColumnToggleMenuDemo.java
@@ -2,7 +2,7 @@
* #%L
* Grid Helpers Add-on
* %%
- * Copyright (C) 2022 - 2024 Flowing Code
+ * Copyright (C) 2022 - 2026 Flowing Code
* %%
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/src/test/java/com/flowingcode/vaadin/addons/gridhelpers/LombokDemo.java b/src/test/java/com/flowingcode/vaadin/addons/gridhelpers/LombokDemo.java
index 38005af..589c245 100644
--- a/src/test/java/com/flowingcode/vaadin/addons/gridhelpers/LombokDemo.java
+++ b/src/test/java/com/flowingcode/vaadin/addons/gridhelpers/LombokDemo.java
@@ -2,7 +2,7 @@
* #%L
* Grid Helpers Add-on
* %%
- * Copyright (C) 2022 - 2024 Flowing Code
+ * Copyright (C) 2022 - 2026 Flowing Code
* %%
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/src/test/java/com/flowingcode/vaadin/addons/gridhelpers/test/GridHelperTest.java b/src/test/java/com/flowingcode/vaadin/addons/gridhelpers/test/GridHelperTest.java
index 3ac7e5b..5bf4819 100644
--- a/src/test/java/com/flowingcode/vaadin/addons/gridhelpers/test/GridHelperTest.java
+++ b/src/test/java/com/flowingcode/vaadin/addons/gridhelpers/test/GridHelperTest.java
@@ -2,7 +2,7 @@
* #%L
* Grid Helpers Add-on
* %%
- * Copyright (C) 2022 - 2024 Flowing Code
+ * Copyright (C) 2022 - 2026 Flowing Code
* %%
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/src/test/resources/META-INF/resources/gridhelpers/styles.css b/src/test/resources/META-INF/resources/gridhelpers/styles.css
index a5c7421..70860fd 100644
--- a/src/test/resources/META-INF/resources/gridhelpers/styles.css
+++ b/src/test/resources/META-INF/resources/gridhelpers/styles.css
@@ -2,7 +2,7 @@
* #%L
* Grid Helpers Add-on
* %%
- * Copyright (C) 2022 - 2024 Flowing Code
+ * Copyright (C) 2022 - 2026 Flowing Code
* %%
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
From 860f90e09119128afb93ccaf05347fa9e7c85b1d Mon Sep 17 00:00:00 2001
From: Javier Godoy <11554739+javier-godoy@users.noreply.github.com>
Date: Thu, 27 Aug 2026 14:15:41 -0300
Subject: [PATCH 14/14] WIP: return the slotted cell child from the wait
predicate
An empty Optional is a non-null value, so FluentWait treated the absent
child as success on the first poll and never retried. Return the element
or null from the predicate and map the timeout to null.
squash-into 1a7df15
Co-Authored-By: Claude Opus 5 (1M context)