This is an automated email from the ASF dual-hosted git repository.

git-site-role pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/groovy-dev-site.git


The following commit(s) were added to refs/heads/asf-site by this push:
     new 2c99259  2025/12/31 21:24:07: Updated geb directory of dev website 
from geb@c9e10c0
2c99259 is described below

commit 2c99259783eb2a715c25ed34295b8285f3b2bfd3
Author: jenkins <[email protected]>
AuthorDate: Wed Dec 31 21:24:07 2025 +0000

    2025/12/31 21:24:07: Updated geb directory of dev website from geb@c9e10c0
---
 geb/index.html                                     | 10 +++----
 .../api/geb/driver/CachingDriverFactory.html       | 11 +++++--
 .../geb/navigator/AttributeAccessingMetaClass.html |  2 +-
 geb/manual/snapshot/api/geb/spock/GebSpec.html     |  2 +-
 ...icallyDispatchesToBrowserAstTransformation.html |  2 +-
 geb/manual/snapshot/api/index-all.html             |  4 ++-
 geb/manual/snapshot/index.html                     | 35 ++++++++++++++++++++++
 7 files changed, 55 insertions(+), 11 deletions(-)

diff --git a/geb/index.html b/geb/index.html
index b1f5113..e35b5c0 100644
--- a/geb/index.html
+++ b/geb/index.html
@@ -51,9 +51,9 @@
                     <div class="ui container">
                         <a href="./manual/current/api/" class="item">
                             <div class="ui green horizontal 
label">current</div>
-                            8.0.1
+                            8.0.0
                         </a>
-                        <a href="./manual/8.0.0/api/" class="item">8.0.0</a><a 
href="./manual/7.0/api/" class="item">7.0</a><a href="./manual/6.0/api/" 
class="item">6.0</a><a href="./manual/5.1/api/" class="item">5.1</a><a 
href="./manual/5.0/api/" class="item">5.0</a><a href="./manual/4.1/api/" 
class="item">4.1</a><a href="./manual/4.0/api/" class="item">4.0</a><a 
href="./manual/3.4.1/api/" class="item">3.4.1</a><a href="./manual/3.4/api/" 
class="item">3.4</a><a href="./manual/3.3/api/"  [...]
+                        <a href="./manual/7.0/api/" class="item">7.0</a><a 
href="./manual/6.0/api/" class="item">6.0</a><a href="./manual/5.1/api/" 
class="item">5.1</a><a href="./manual/5.0/api/" class="item">5.0</a><a 
href="./manual/4.1/api/" class="item">4.1</a><a href="./manual/4.0/api/" 
class="item">4.0</a><a href="./manual/3.4.1/api/" class="item">3.4.1</a><a 
href="./manual/3.4/api/" class="item">3.4</a><a href="./manual/3.3/api/" 
class="item">3.3</a><a href="./manual/3.2/api/" clas [...]
                         <a href="./manual/snapshot/api/" class="item"><div 
class="ui yellow horizontal label">snapshot</div>8.0.2-SNAPSHOT</a>
                     </div>
                 </div>
@@ -62,9 +62,9 @@
                     <div class="ui container">
                         <a href="./manual/current/" class="item">
                             <div class="ui green horizontal 
label">current</div>
-                            8.0.1
+                            8.0.0
                         </a>
-                        <a href="./manual/8.0.0/" class="item">8.0.0</a><a 
href="./manual/7.0/" class="item">7.0</a><a href="./manual/6.0/" 
class="item">6.0</a><a href="./manual/5.1/" class="item">5.1</a><a 
href="./manual/5.0/" class="item">5.0</a><a href="./manual/4.1/" 
class="item">4.1</a><a href="./manual/4.0/" class="item">4.0</a><a 
href="./manual/3.4.1/" class="item">3.4.1</a><a href="./manual/3.4/" 
class="item">3.4</a><a href="./manual/3.3/" class="item">3.3</a><a 
href="./manual/3. [...]
+                        <a href="./manual/7.0/" class="item">7.0</a><a 
href="./manual/6.0/" class="item">6.0</a><a href="./manual/5.1/" 
class="item">5.1</a><a href="./manual/5.0/" class="item">5.0</a><a 
href="./manual/4.1/" class="item">4.1</a><a href="./manual/4.0/" 
class="item">4.0</a><a href="./manual/3.4.1/" class="item">3.4.1</a><a 
href="./manual/3.4/" class="item">3.4</a><a href="./manual/3.3/" 
class="item">3.3</a><a href="./manual/3.2/" class="item">3.2</a><a 
href="./manual/3.1/"  [...]
                         <a href="./manual/snapshot/" class="item"><div 
class="ui yellow horizontal label">snapshot</div>8.0.2-SNAPSHOT</a>
                     </div>
                 </div>
@@ -93,7 +93,7 @@
                             <div class="ui four statistics inverted" 
data-github-stats="">
                                 <div class="static statistic">
                                     <div class="value">
-                                        8.0.1
+                                        8.0.0
                                     </div>
                                     <div class="label">
                                         Latest Release
diff --git a/geb/manual/snapshot/api/geb/driver/CachingDriverFactory.html 
b/geb/manual/snapshot/api/geb/driver/CachingDriverFactory.html
index f1d764b..c066833 100644
--- a/geb/manual/snapshot/api/geb/driver/CachingDriverFactory.html
+++ b/geb/manual/snapshot/api/geb/driver/CachingDriverFactory.html
@@ -157,7 +157,9 @@ implements <a 
href='../../geb/driver/DriverFactory.html'>DriverFactory</a></pre>
                         <tr class="rowColor">
                             <td class="colFirst"><code></code></td>
                             <td class="colLast"><code>static&nbsp;<a 
href='http://static.javadoc.io/org.seleniumhq.selenium/selenium-api/4.27.0/org/openqa/selenium/WebDriver.html'
 title='WebDriver'>WebDriver</a></code></td>
-                            <td class="colLast"><code><strong><a 
href="#clearCacheAndQuitDriver()">clearCacheAndQuitDriver</a></strong>()</code><br></td>
+                            <td class="colLast"><code><strong><a 
href="#clearCacheAndQuitDriver()">clearCacheAndQuitDriver</a></strong>()</code><br>Note:
 When using a perThread cache and executing multiple tests in parallel, it is 
possible to inadvertently
+ quit a driver in one thread that is being used by another, depending on how 
your test runner handles parallel
+ execution. </td>
                         </tr>
                         
                         <tr class="altColor">
@@ -246,7 +248,12 @@ implements <a 
href='../../geb/driver/DriverFactory.html'>DriverFactory</a></pre>
                         <ul class="blockListLast">
                             <li class="blockList">
                                 <h4>static&nbsp;<a 
href='http://static.javadoc.io/org.seleniumhq.selenium/selenium-api/4.27.0/org/openqa/selenium/WebDriver.html'
 title='WebDriver'>WebDriver</a> <strong>clearCacheAndQuitDriver</strong>()</h4>
-                                <p></p>
+                                <p> Note: When using a perThread cache and 
executing multiple tests in parallel, it is possible to inadvertently
+ quit a driver in one thread that is being used by another, depending on how 
your test runner handles parallel
+ execution. The only known case of this is in JUnit's `@BeforeAll` and 
`@AfterAll` lifecycle extension methods
+ on multiple classes annotated with `@Execution(CONCURRENT)`, but there may be 
others.
+
+ Implicit driver lifecycle management is your friend.</p>
                             </li>
                         </ul>
                     
diff --git 
a/geb/manual/snapshot/api/geb/navigator/AttributeAccessingMetaClass.html 
b/geb/manual/snapshot/api/geb/navigator/AttributeAccessingMetaClass.html
index 2c8b8e3..479015a 100644
--- a/geb/manual/snapshot/api/geb/navigator/AttributeAccessingMetaClass.html
+++ b/geb/manual/snapshot/api/geb/navigator/AttributeAccessingMetaClass.html
@@ -187,7 +187,7 @@ extends <a 
href='http://docs.groovy-lang.org/docs/groovy-4.0.26/html/api/groovy/
                         
                         <tr class="altColor">
                             <td class="colFirst"><code>class <a 
href='http://docs.groovy-lang.org/docs/groovy-4.0.26/html/api/groovy/lang/DelegatingMetaClass.html'
 title='DelegatingMetaClass'>DelegatingMetaClass</a></code></td>
-                            <td class="colLast"><code><a 
href='http://docs.groovy-lang.org/docs/groovy-4.0.26/html/api/groovy/lang/DelegatingMetaClass.html#isGroovyObject()'
 title='isGroovyObject'>isGroovyObject</a>, <a 
href='http://docs.groovy-lang.org/docs/groovy-4.0.26/html/api/groovy/lang/DelegatingMetaClass.html#isModified()'
 title='isModified'>isModified</a>, <a 
href='http://docs.groovy-lang.org/docs/groovy-4.0.26/html/api/groovy/lang/DelegatingMetaClass.html#addNewInstanceMethod(j
 [...]
+                            <td class="colLast"><code><a 
href='http://docs.groovy-lang.org/docs/groovy-4.0.26/html/api/groovy/lang/DelegatingMetaClass.html#isGroovyObject()'
 title='isGroovyObject'>isGroovyObject</a>, <a 
href='http://docs.groovy-lang.org/docs/groovy-4.0.26/html/api/groovy/lang/DelegatingMetaClass.html#isModified()'
 title='isModified'>isModified</a>, <a 
href='http://docs.groovy-lang.org/docs/groovy-4.0.26/html/api/groovy/lang/DelegatingMetaClass.html#addNewInstanceMethod(j
 [...]
                         </tr>
                     </table>
                    </ul>
diff --git a/geb/manual/snapshot/api/geb/spock/GebSpec.html 
b/geb/manual/snapshot/api/geb/spock/GebSpec.html
index 28eb013..bed19ff 100644
--- a/geb/manual/snapshot/api/geb/spock/GebSpec.html
+++ b/geb/manual/snapshot/api/geb/spock/GebSpec.html
@@ -212,7 +212,7 @@ implements <a 
href='../../geb/test/ManagedGebTest.html'>ManagedGebTest</a></pre>
                         
                         <tr class="altColor">
                             <td class="colFirst"><code>class <a 
href='http://static.javadoc.io/org.spockframework/spock-core/2.3-groovy-4.0/spock/lang/Specification.html'
 title='Specification'>Specification</a></code></td>
-                            <td class="colLast"><code><a 
href='http://static.javadoc.io/org.spockframework/spock-core/2.3-groovy-4.0/spock/lang/Specification.html#verifyAll(java.lang.Object,
 groovy.lang.Closure)' title='verifyAll'>verifyAll</a>, <a 
href='http://static.javadoc.io/org.spockframework/spock-core/2.3-groovy-4.0/spock/lang/Specification.html#verifyAll(java.lang.Object,
 java.lang.Class, groovy.lang.Closure)' title='verifyAll'>verifyAll</a>, <a 
href='http://static.javadoc.io/org [...]
+                            <td class="colLast"><code><a 
href='http://static.javadoc.io/org.spockframework/spock-core/2.3-groovy-4.0/spock/lang/Specification.html#verifyAll(java.lang.Object,
 groovy.lang.Closure)' title='verifyAll'>verifyAll</a>, <a 
href='http://static.javadoc.io/org.spockframework/spock-core/2.3-groovy-4.0/spock/lang/Specification.html#verifyAll(java.lang.Object,
 java.lang.Class, groovy.lang.Closure)' title='verifyAll'>verifyAll</a>, <a 
href='http://static.javadoc.io/org [...]
                         </tr>
                     </table>
                    </ul>
diff --git 
a/geb/manual/snapshot/api/geb/transform/DynamicallyDispatchesToBrowserAstTransformation.html
 
b/geb/manual/snapshot/api/geb/transform/DynamicallyDispatchesToBrowserAstTransformation.html
index d91c902..a75a1fb 100644
--- 
a/geb/manual/snapshot/api/geb/transform/DynamicallyDispatchesToBrowserAstTransformation.html
+++ 
b/geb/manual/snapshot/api/geb/transform/DynamicallyDispatchesToBrowserAstTransformation.html
@@ -234,7 +234,7 @@ extends 
org.codehaus.groovy.transform.AbstractASTTransformation</pre>
                         
                         <tr class="altColor">
                             <td class="colFirst"><code>class 
org.codehaus.groovy.transform.AbstractASTTransformation</code></td>
-                            <td 
class="colLast"><code>org.codehaus.groovy.transform.AbstractASTTransformation#shouldSkipOnDescriptorUndefinedAware(boolean,
 java.util.Map, org.codehaus.groovy.ast.MethodNode, java.util.List, 
java.util.List), 
org.codehaus.groovy.transform.AbstractASTTransformation#tokenize(java.lang.String),
 
org.codehaus.groovy.transform.AbstractASTTransformation#addError(java.lang.String,
 org.codehaus.groovy.ast.ASTNode), 
org.codehaus.groovy.transform.AbstractASTTransforma [...]
+                            <td 
class="colLast"><code>org.codehaus.groovy.transform.AbstractASTTransformation#tokenize(java.lang.String),
 
org.codehaus.groovy.transform.AbstractASTTransformation#addError(java.lang.String,
 org.codehaus.groovy.ast.ASTNode), 
org.codehaus.groovy.transform.AbstractASTTransformation#shouldSkipOnDescriptorUndefinedAware(boolean,
 java.util.Map, org.codehaus.groovy.ast.MethodNode, java.util.List, 
java.util.List), org.codehaus.groovy.transform.AbstractASTTransforma [...]
                         </tr>
                     </table>
                    </ul>
diff --git a/geb/manual/snapshot/api/index-all.html 
b/geb/manual/snapshot/api/index-all.html
index dc8cfc1..3978ede 100644
--- a/geb/manual/snapshot/api/index-all.html
+++ b/geb/manual/snapshot/api/index-all.html
@@ -414,7 +414,9 @@ if (location.href.indexOf('is-external=true') == -1) {
 <dt><span class="strong"><a 
href="geb/driver/CachingDriverFactory.html#clearCache()" title="Method in 
CachingDriverFactory">clearCache()</a></span> - Method in <a 
href="geb/driver/CachingDriverFactory.html">CachingDriverFactory</a>
 </dt><dd> <div class="block"></div></dd>
 <dt><span class="strong"><a 
href="geb/driver/CachingDriverFactory.html#clearCacheAndQuitDriver()" 
title="Method in CachingDriverFactory">clearCacheAndQuitDriver()</a></span> - 
Method in <a 
href="geb/driver/CachingDriverFactory.html">CachingDriverFactory</a>
-</dt><dd> <div class="block"></div></dd>
+</dt><dd> <div class="block">Note: When using a perThread cache and executing 
multiple tests in parallel, it is possible to inadvertently
+ quit a driver in one thread that is being used by another, depending on how 
your test runner handles parallel
+ execution. </div></dd>
 <dt><span class="strong"><a 
href="geb/driver/CachingDriverFactory.html#clearCacheCache()" title="Method in 
CachingDriverFactory">clearCacheCache()</a></span> - Method in <a 
href="geb/driver/CachingDriverFactory.html">CachingDriverFactory</a>
 </dt><dd> <div class="block"></div></dd>
 <dt><span class="strong"><a href="geb/Browser.html#clearCookies()" 
title="Method in Browser">clearCookies()</a></span> - Method in <a 
href="geb/Browser.html">Browser</a>
diff --git a/geb/manual/snapshot/index.html b/geb/manual/snapshot/index.html
index 7709587..064ea26 100644
--- a/geb/manual/snapshot/index.html
+++ b/geb/manual/snapshot/index.html
@@ -2122,6 +2122,41 @@ After calling any of these methods, the next request for 
a default driver will r
 <div class="paragraph">
 <p>This caching behavior is <a 
href="#driver-caching-configuration">configurable</a>.</p>
 </div>
+<div class="admonitionblock warning">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-warning" title="Warning"></i>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>Clearing the webdriver cache in this way is generally safe, though there is 
a known gotcha for JUnit 5 tests running in parallel.
+If you have multiple test classes running in parallel and call <code><a 
href="api/geb/driver/CachingDriverFactory.html#clearCache()">CachingDriverFactory.clearCache()</a></code>
 or <code><a 
href="api/geb/driver/CachingDriverFactory.html#clearCacheAndQuitDriver()">CachingDriverFactory.clearCacheAndQuitDriver()</a></code>
 in methods annotated with <a 
href="https://docs.junit.org/5.0.1/api/org/junit/jupiter/api/BeforeAll.html";>@BeforeAll</a>
 or <a href="https://docs.junit.org/5.0.1/api/org/ [...]
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p><code>org.openqa.selenium.NoSuchSessionException: Session is 
closed</code></p>
+</li>
+<li>
+<p><code>org.openqa.selenium.WebDriverException: 
org.openqa.selenium.NoSuchWindowException: Window is closed</code></p>
+</li>
+<li>
+<p><code>java.util.concurrent.RejectedExecutionException: Task 
org.openqa.selenium.htmlunit.HtmlUnitDriver$$Lambda$972/0x0000000100572c40@39b402c9
 rejected from java.util.concurrent.ThreadPoolExecutor@4fd3fc52[Terminated, 
pool size = 0, active threads = 0, queued tasks = 0, completed tasks = 
4]</code></p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>This is because the <code>cacheDriverPerThread</code> setting keeps the 
webdriver in a ThreadLocal. Since BeforeAll and AfterAll methods on different 
test classes annotated with <code>@Execution(CONCURRENT)</code> may execute on 
the same thread, it&#8217;s possible to inadvertently quit the driver being 
used by another test currently executing on the same thread, leading to errors 
like those above.</p>
+</div>
+<div class="paragraph">
+<p>If you&#8217;re relying on the implicit driver management to clean up the 
driver objects for you, you should be fine.
+Likewise, clearing the driver cache in methods annotated with <a 
href="https://docs.junit.org/5.0.1/api/org/junit/jupiter/api/BeforeEach.html";><code>@BeforeEach</code></a>
 and <a 
href="https://docs.junit.org/5.0.1/api/org/junit/jupiter/api/AfterEach.html";><code>@AfterEach</code></a>
 should be fine, since parallel test methods (and test-specific lifecycle 
methods) should be executed in the same thread. It&#8217;s only in the 
<code>@BeforeAll</code>/<code>@AfterAll</code> case that you nee [...]
+</div>
+</td>
+</tr>
+</table>
+</div>
 </div>
 <div class="sect2">
 <h3 id="driver-quirks"><a class="link" href="#driver-quirks">3.3. Driver 
quirks</a></h3>

Reply via email to